WooCommerce Extended Coupon Features - Version 2.3.3

Version Description

  • FIX: limit_usage_to_x_items: Removed call to get_discount_amount from coupon_has_a_value; it is redundant and caused limit_usage_to_x_items to change
  • (PRO) FEATURE: Filters wjecf_free_product_amount_for_coupon, wjecf_bogo_product_amount_for_coupon and wjecf_set_free_product_amount_in_cart
  • (PRO) FEATURE: Keep track of by-url-coupons (?apply_coupon=) and apply when they validate
  • (PRO) FIX: Experimental feature 'Allow discount on cart with excluded items' didn't work since 2.2.3
  • (PRO) FIX: Invalid free product quantity applied when using both BOGO and FREE products in a single coupon.
  • (PRO) FIX: limit_usage_to_x_items: Possible wrong discount on combination of limit_usage_to_x_items and wjecf_apply_discountto
Download this release

Release Info

Developer josk79
Plugin Icon 128x128 WooCommerce Extended Coupon Features
Version 2.3.3
Comparing to
See all releases

Code changes from version 2.3.2 to 2.3.3

docs/assets/images/image_2.png CHANGED
Binary file
docs/assets/images/image_3.png CHANGED
Binary file
docs/assets/images/image_4.png CHANGED
Binary file
docs/assets/images/image_5.png CHANGED
Binary file
docs/assets/images/image_6.png CHANGED
Binary file
docs/assets/images/image_7.png ADDED
Binary file
docs/index.html CHANGED
@@ -13,10 +13,12 @@
13
  <meta name="author" content="Soft79">
14
  <meta name="copyright" content="Soft79">
15
  <meta name="generator" content="Documenter v2.0 http://rxa.li/documenter">
16
- <meta name="date" content="2015-11-23T00:00:00+01:00">
17
 
18
  <link rel="stylesheet" href="assets/css/documenter_style.css" media="all">
19
-
 
 
20
 
21
 
22
  <script src="assets/js/jquery.js"></script>
@@ -77,9 +79,11 @@
77
  <li><a href="#free_products" title="Free products">Free products</a></li>
78
  <li><a href="#checkout" title="Checkout">Checkout</a></li>
79
  <li><a href="#auto_coupon" title="Auto coupon">Auto coupon</a></li>
 
 
80
 
81
  </ul>
82
- <div id="documenter_copyright">Copyright Soft79 2015<br>
83
  made with the <a href="http://rxa.li/documenter">Documenter v2.0</a>
84
  </div>
85
  </div>
@@ -93,7 +97,7 @@
93
  <hr>
94
  <ul>
95
  <li>created: 07/05/2014</li>
96
- <li>latest update: 11/23/2015</li>
97
  <li>by: Soft79</li>
98
  <li><a href=""></a></li>
99
 
@@ -110,6 +114,8 @@
110
  <p>
111
  What can be achieved with this plugin?</p>
112
  <ul>
 
 
113
  <li>
114
  Extended coupon restrictions
115
  <ul>
@@ -126,18 +132,20 @@
126
  </ul>
127
  </li>
128
  <li>
129
- Give away free products</li>
 
 
130
  <li>
131
- Create discounts that will automatically be applied to the customer&rsquo;s cart when certain conditions are met.</li>
132
  <li>
133
- Apply coupon using an url</li>
134
  </ul>
135
  <p>
136
  &nbsp;</p>
137
  <p>
138
  The extended features can be found in the WooCommerce Coupons Admin page.</p>
139
  <p>
140
- <img alt="Screenshot: Extended features tabs" src="assets/images/image_3.png" style="width: 959px; height: 522px;"></p>
141
  <p>
142
  &nbsp;</p>
143
  </section>
@@ -146,7 +154,7 @@
146
  <p>
147
  <strong>WooCommerce Extended Coupon Features</strong>&nbsp;adds a &#39;<em>Products</em>&#39;-tab to the coupon edit page. On this tab extra rules can be configured that work in combination with the <em>Products</em>, <em>Exclude products</em>, <em>Product categories</em>&nbsp;and <em>Exclude categories</em> rules that are on the &#39;<em>Usage Restriction</em>&#39;-tab.&nbsp;</p>
148
  <p>
149
- <img alt="Screenshot: Products tab" src="assets/images/image_4.png" style="width: 761px; height: 704px;"></p>
150
  <p>
151
  &nbsp;</p>
152
  <h4 id="product_restrictions_and_products_not_or_">AND Products (not OR)</h4>
@@ -163,77 +171,100 @@
163
  The coupon will only validate if the total value of the products matching the product or category restrictions (on the &#39;<em>Usage Restriction</em>&#39;-tab in the cart is within this range.&nbsp;If no product or category restriction is entered, the total value of all of the products in the cart will be used.</p>
164
  <p>
165
  <strong>Please note</strong>: The difference between this option and the &#39;minimum/maximum spend&#39; on the &#39;General&#39;-tab is that on the general tab the subtotal of <em>all</em> of the items in the cart is compared.</p>
166
- <h3>
167
- Discount on cart with excluded products</h3>
 
168
  <p>
169
  By default, When the coupon is setup as a &#39;Cart Discount&#39; it will never validate a coupon when an excluded product is in the cart (this is how WooCommerce Coupons work). By checking this box the coupon will still validate when an excluded product is in the cart. Useful for cart discounts based on a subtotal of matching products, but having some products or categories excluded.</p>
170
  <p>
171
- <img alt="Screenshot: Excluded products" src="assets/images/image_2.png" style="width: 761px; height: 181px;"></p>
172
  </section>
173
  <section id="free_products">
174
  <div class="page-header"><h3>Free products</h3><hr class="notop"></div>
 
 
175
  <p>
176
  In the &#39;<em>Free products</em>&#39;-field on the &#39;<em>Products</em>&#39;-tab you can enter one or more products that will automatically be added to the cart when the coupon is applied. The product will automatically be removed when the coupon is no longer valid.</p>
177
  <p>
178
- <strong>TIP!</strong> In combination with the &#39;Auto Coupon&#39;-option it is easy to create a BOGO (Buy One Get One) rule!</p>
 
 
 
 
 
 
 
 
179
  <h4 id="free_products_multiplication_of_free_products">Multiplication of free products</h4>
180
  <p>
181
  When the box &#39;Allow multiplication of the free products&#39; is checked the amount of free products will be multiplied every time the minimum spend, subtotal or quantity is reached.&nbsp;For example if the minimum spend is $ 50 and the user has $ 160 worth of products in the cart, the free products will be added 3 times to the cart.</p>
182
  <p>
183
  &nbsp;</p>
184
  <p>
185
- <img alt="Screenshot: Free product in cart" src="assets/images/image_6.png" style="width: 738px; height: 632px;"></p>
186
  </section>
187
  <section id="checkout">
188
  <div class="page-header"><h3>Checkout</h3><hr class="notop"></div>
189
- <p>
190
- On the checkout-tab restrictions can be entered that will normally only be active when the customer initiates checkout.</p>
191
- <p>
192
- <img alt="Screenshot: Checkout tab" src="assets/images/image_1.png" style="width: 761px; height: 410px;"></p>
193
  <h4 id="checkout_shipping_methods">Shipping methods</h4>
194
- <p>
195
- The coupon will only validate if the customer selects one of these shipping methods.</p>
196
  <h4 id="checkout_payment_methods">Payment methods</h4>
197
- <p>
198
- The coupon will only validate if the customer selects one of these payment methods.</p>
199
  <h3>
200
  Customer restrictions</h3>
201
  <h4 id="checkout_allowed_customer">Allowed customer</h4>
202
- <p>
203
- When you enter one or more customers here, the coupon will only validate if the customer is logged in and is in this list.</p>
204
  <h4 id="checkout_allowed_user_roles">Allowed user roles</h4>
205
- <p>
206
- When you enter one or more user roles here, the coupon will only validate if the customer has one of these user roles (e.g. Wholesale buyer or Guest).</p>
207
  <h4 id="checkout_disallowed_user_roles">Disallowed user roles</h4>
208
- <p>
209
- The coupon will only validate if the customer does not have any of these user roles (e.g. Wholesale buyer or Guest).</p>
210
- <p>
211
- &nbsp;</p>
212
  <div>
213
  &nbsp;</div>
214
- <p>
215
- &nbsp;</p>
216
  </section>
217
  <section id="auto_coupon">
218
  <div class="page-header"><h3>Auto coupon</h3><hr class="notop"></div>
219
- <p>
220
- You can convert a coupon into a discount rule simply by ticking the &quot;Auto coupon&quot; checkbox on the &#39;<em>miscellaneous</em>&#39;-tab. When using this option it is <u>important to enter a description for the coupon</u>, as this will be presented to the customer.</p>
221
- <p>
222
- When this option is activated, the discount will automatically be applied to the cart when it&#39;s conditions are met&nbsp;and the description will be presented to the customer and on the cart page. Once the conditions are no longer met, for example when the customer removes an item from the cart, the discount will be removed from the cart.</p>
223
  <h4 id="auto_coupon_apply_silently">Apply silently</h4>
224
- <p>
225
- When this box is checked, no &#39;Discount applied&#39; notice will be presented when the coupon is applied.</p>
226
- <p>
227
- &nbsp;</p>
228
- <p>
229
- <img alt="Screenshot - Configuring an 'auto coupon'" src="assets/images/image_5.png" ></p>
230
- <p>
231
- &nbsp;</p>
232
- <p>
233
- &nbsp;</p>
234
- <p>
235
- &nbsp;</p>
 
 
 
 
236
  </section>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
237
 
238
  </div>
239
  </body>
13
  <meta name="author" content="Soft79">
14
  <meta name="copyright" content="Soft79">
15
  <meta name="generator" content="Documenter v2.0 http://rxa.li/documenter">
16
+ <meta name="date" content="2016-05-14T00:00:00+02:00">
17
 
18
  <link rel="stylesheet" href="assets/css/documenter_style.css" media="all">
19
+ <link rel="stylesheet" href="assets/js/google-code-prettify/prettify.css" media="screen">
20
+ <script src="assets/js/google-code-prettify/prettify.js"></script>
21
+
22
 
23
 
24
  <script src="assets/js/jquery.js"></script>
79
  <li><a href="#free_products" title="Free products">Free products</a></li>
80
  <li><a href="#checkout" title="Checkout">Checkout</a></li>
81
  <li><a href="#auto_coupon" title="Auto coupon">Auto coupon</a></li>
82
+ <li><a href="#coupon_by_url" title="Coupon by URL">Coupon by URL</a></li>
83
+ <li><a href="#where_to_buy" title="Where to buy">Where to buy</a></li>
84
 
85
  </ul>
86
+ <div id="documenter_copyright">Copyright Soft79 2016<br>
87
  made with the <a href="http://rxa.li/documenter">Documenter v2.0</a>
88
  </div>
89
  </div>
97
  <hr>
98
  <ul>
99
  <li>created: 07/05/2014</li>
100
+ <li>latest update: 05/14/2016</li>
101
  <li>by: Soft79</li>
102
  <li><a href=""></a></li>
103
 
114
  <p>
115
  What can be achieved with this plugin?</p>
116
  <ul>
117
+ <li>
118
+ Create discounts that will automatically be applied to the customer&rsquo;s cart when certain conditions are met.</li>
119
  <li>
120
  Extended coupon restrictions
121
  <ul>
132
  </ul>
133
  </li>
134
  <li>
135
+ Apply coupon using an url</li>
136
+ <li>
137
+ (PRO) Give away free products</li>
138
  <li>
139
+ (PRO) BOGO (Buy One Get One)</li>
140
  <li>
141
+ (PRO) Limit product discount to: One per order line, cheapest product or cheapest order line</li>
142
  </ul>
143
  <p>
144
  &nbsp;</p>
145
  <p>
146
  The extended features can be found in the WooCommerce Coupons Admin page.</p>
147
  <p>
148
+ <img alt="Screenshot: Extended features tabs" src="assets/images/image_4.png" style="width: 959px; height: 522px;"></p>
149
  <p>
150
  &nbsp;</p>
151
  </section>
154
  <p>
155
  <strong>WooCommerce Extended Coupon Features</strong>&nbsp;adds a &#39;<em>Products</em>&#39;-tab to the coupon edit page. On this tab extra rules can be configured that work in combination with the <em>Products</em>, <em>Exclude products</em>, <em>Product categories</em>&nbsp;and <em>Exclude categories</em> rules that are on the &#39;<em>Usage Restriction</em>&#39;-tab.&nbsp;</p>
156
  <p>
157
+ <img alt="Screenshot: Products tab" src="assets/images/image_5.png" style="width: 761px; height: 704px;"></p>
158
  <p>
159
  &nbsp;</p>
160
  <h4 id="product_restrictions_and_products_not_or_">AND Products (not OR)</h4>
171
  The coupon will only validate if the total value of the products matching the product or category restrictions (on the &#39;<em>Usage Restriction</em>&#39;-tab in the cart is within this range.&nbsp;If no product or category restriction is entered, the total value of all of the products in the cart will be used.</p>
172
  <p>
173
  <strong>Please note</strong>: The difference between this option and the &#39;minimum/maximum spend&#39; on the &#39;General&#39;-tab is that on the general tab the subtotal of <em>all</em> of the items in the cart is compared.</p>
174
+ <h4 id="product_restrictions_discount_on_cart_with_excluded_products_pro_version_only_">Discount on cart with excluded products (PRO Version Only)</h4>
175
+ <p>
176
+ This option is only visible if the discount type is <em>Cart Discount</em> or <em>Cart % Discount</em>.</p>
177
  <p>
178
  By default, When the coupon is setup as a &#39;Cart Discount&#39; it will never validate a coupon when an excluded product is in the cart (this is how WooCommerce Coupons work). By checking this box the coupon will still validate when an excluded product is in the cart. Useful for cart discounts based on a subtotal of matching products, but having some products or categories excluded.</p>
179
  <p>
180
+ <img alt="Screenshot: Excluded products" src="assets/images/image_3.png" style="width: 761px; height: 181px;"></p>
181
  </section>
182
  <section id="free_products">
183
  <div class="page-header"><h3>Free products</h3><hr class="notop"></div>
184
+ <p>
185
+ <strong>(PRO Version Only)</strong></p>
186
  <p>
187
  In the &#39;<em>Free products</em>&#39;-field on the &#39;<em>Products</em>&#39;-tab you can enter one or more products that will automatically be added to the cart when the coupon is applied. The product will automatically be removed when the coupon is no longer valid.</p>
188
  <p>
189
+ If more than one free product is entered, you can tick the &#39;select one&#39;-checkbox, making the customer choose one of the selected products on the cart or checkout page. You can also edit the message that is displayed.</p>
190
+ <p>
191
+ <img alt="Choose a free gift" src="assets/images/image_2.png" style="width: 765px; height: 572px;"></p>
192
+ <p>
193
+ If you wish to change the look-and-feel of the product selection you must create a subdirectory&nbsp;<strong>woocommerce-auto-added-coupons-pro</strong>&nbsp;in your themes directory &nbsp;and copy and edit the files&nbsp;<strong>templates/cart/select-free-product.php</strong> and&nbsp;<strong>templates/checkout/select-free-product.php</strong> in here.</p>
194
+ <p>
195
+ <iframe allowfullscreen="" frameborder="0" height="480" src="https://www.youtube.com/embed/Sas8-sObea4?rel=0" width="640"></iframe></p>
196
+ <p>
197
+ &nbsp;</p>
198
  <h4 id="free_products_multiplication_of_free_products">Multiplication of free products</h4>
199
  <p>
200
  When the box &#39;Allow multiplication of the free products&#39; is checked the amount of free products will be multiplied every time the minimum spend, subtotal or quantity is reached.&nbsp;For example if the minimum spend is $ 50 and the user has $ 160 worth of products in the cart, the free products will be added 3 times to the cart.</p>
201
  <p>
202
  &nbsp;</p>
203
  <p>
204
+ <img alt="Screenshot: Free product in cart" src="assets/images/image_7.png" style="width: 738px; height: 632px;"></p>
205
  </section>
206
  <section id="checkout">
207
  <div class="page-header"><h3>Checkout</h3><hr class="notop"></div>
208
+ <p> On the checkout-tab restrictions can be entered that will normally only be active when the customer initiates checkout.</p>
209
+ <p> <img alt="Screenshot: Checkout tab" src="assets/images/image_1.png" style="width: 761px; height: 410px;"></p>
 
 
210
  <h4 id="checkout_shipping_methods">Shipping methods</h4>
211
+ <p> The coupon will only validate if the customer selects one of these shipping methods.</p>
 
212
  <h4 id="checkout_payment_methods">Payment methods</h4>
213
+ <p> The coupon will only validate if the customer selects one of these payment methods.</p>
 
214
  <h3>
215
  Customer restrictions</h3>
216
  <h4 id="checkout_allowed_customer">Allowed customer</h4>
217
+ <p> When you enter one or more customers here, the coupon will only validate if the customer is logged in and is in this list.</p>
 
218
  <h4 id="checkout_allowed_user_roles">Allowed user roles</h4>
219
+ <p> When you enter one or more user roles here, the coupon will only validate if the customer has one of these user roles (e.g. Wholesale buyer or Guest).</p>
 
220
  <h4 id="checkout_disallowed_user_roles">Disallowed user roles</h4>
221
+ <p> The coupon will only validate if the customer does not have any of these user roles (e.g. Wholesale buyer or Guest).</p>
222
+ <p> &nbsp;</p>
 
 
223
  <div>
224
  &nbsp;</div>
225
+ <p> &nbsp;</p>
 
226
  </section>
227
  <section id="auto_coupon">
228
  <div class="page-header"><h3>Auto coupon</h3><hr class="notop"></div>
229
+ <p> You can convert a coupon into a discount rule simply by ticking the &quot;Auto coupon&quot; checkbox on the &#39;<em>miscellaneous</em>&#39;-tab. When using this option it is <u>important to enter a description for the coupon</u>, as this will be presented to the customer.</p>
230
+ <p> When this option is activated, the discount will automatically be applied to the cart when it&#39;s conditions are met&nbsp;and the description will be presented to the customer and on the cart page. Once the conditions are no longer met, for example when the customer removes an item from the cart, the discount will be removed from the cart.</p>
 
 
231
  <h4 id="auto_coupon_apply_silently">Apply silently</h4>
232
+ <p> When this box is checked, no &#39;Discount applied&#39; notice will be presented when the coupon is applied.</p>
233
+ <p> &nbsp;</p>
234
+ <p> <img alt="Screenshot - Configuring an 'auto coupon'" src="assets/images/image_6.png" style="width: 778px; height: 641px;"></p>
235
+ <p> &nbsp;</p>
236
+ <p> &nbsp;</p>
237
+ <p> &nbsp;</p>
238
+ </section>
239
+ <section id="coupon_by_url">
240
+ <div class="page-header"><h3>Coupon by URL</h3><hr class="notop"></div>
241
+ <p> Now you can easily create a link that will automatically apply a coupon to the user&#39;s cart, optionally in combination with a product.</p>
242
+ <p> Simply append <em>?apply_coupon=coupon_code</em> to the url. If you also want to add products to the cart with the same url, you can use <em>add-to-cart=product_id</em> and optionally a quantity.&nbsp;You can find the id of a product on the WooCommerce Edit-page of the product.</p>
243
+ <p> Example:</p>
244
+ <pre class="prettyprint lang-plain linenums">
245
+ http://www.your-store.nl/cart/?add-to-cart=4321&amp;quantity=3&amp;apply_coupon=my_coupon</pre>
246
+ <p> &nbsp;</p>
247
+ <p> If the customer opens the url when the conditions of the coupon are not yet met or the cart is empty the coupon won&#39;t be applied yet, instead the following message will be displayed:&nbsp;<em>Coupon will be applied once it&#39;s conditions are met</em>. Once the conditions of the coupon are met it will be applied automatically.</p>
248
  </section>
249
+ <section id="where_to_buy">
250
+ <div class="page-header"><h3>Where to buy</h3><hr class="notop"></div>
251
+ <p> Want to increase your conversion? Then purchase this plugin and start offering special deals to your customers right away!</p>
252
+ <p> &nbsp;</p>
253
+ <p> <a class="btn btn-primary btn-large" href="http://www.soft79.nl/cart/?fill_cart=12" target="_blank">Purchase WooCommerce Extended Coupon Features</a></p>
254
+ <p> &nbsp;</p>
255
+ <p> <a href="http://www.soft79.nl/cart/?fill_cart=12" target="_blank"><img alt="Raising conversion" src="http://www.soft79.nl/temp123/raising.svg" ></a></p>
256
+ <!-- Piwik --><script type="text/javascript">
257
+ var _paq = _paq || [];
258
+ _paq.push(['trackPageView']);
259
+ _paq.push(['enableLinkTracking']);
260
+ (function() {
261
+ var u="//stats.que-rico.nl/";
262
+ _paq.push(['setTrackerUrl', u+'piwik.php']);
263
+ _paq.push(['setSiteId', 3]);
264
+ var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
265
+ g.type='text/javascript'; g.async=true; g.defer=true; g.src=u+'piwik.js'; s.parentNode.insertBefore(g,s);
266
+ })();
267
+ </script><noscript><p><img src="//stats.que-rico.nl/piwik.php?idsite=3" style="border:0;" alt="" /></p></noscript><!-- End Piwik Code --></section>
268
 
269
  </div>
270
  </body>
includes/admin/wjecf-admin-auto-upgrade.php ADDED
@@ -0,0 +1,66 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class WJECF_Admin_Auto_Upgrade extends Abstract_WJECF_Plugin {
4
+
5
+ public function __construct() {
6
+ add_action( 'admin_init', array( $this, 'auto_upgrade' ) );
7
+ }
8
+
9
+ //Upgrade options on version change
10
+ public function auto_upgrade() {
11
+ //WJECF()->options['db_version'] = 1;update_option( 'wjecf_options' , WJECF()->options, false ); // Will force all upgrades
12
+ global $wpdb;
13
+ $prev_version = WJECF()->options['db_version'];
14
+
15
+ //DB_VERSION 1: Since 2.1.0-b5
16
+ if ( WJECF()->options['db_version'] < 1 ) {
17
+ //RENAME meta_key _wjecf_matching_product_qty TO _wjecf_min_matching_product_qty
18
+ $where = array("meta_key" => "_wjecf_matching_product_qty");
19
+ $set = array('meta_key' => "_wjecf_min_matching_product_qty");
20
+ $wpdb->update( _get_meta_table('post'), $set, $where );
21
+
22
+ //RENAME meta_key woocommerce-jos-autocoupon TO _wjecf_is_auto_coupon
23
+ $where = array("meta_key" => "woocommerce-jos-autocoupon");
24
+ $set = array('meta_key' => "_wjecf_is_auto_coupon");
25
+ $wpdb->update( _get_meta_table('post'), $set, $where );
26
+ //Now we're version 1
27
+ WJECF()->options['db_version'] = 1;
28
+ } //DB VERSION 1
29
+
30
+ //DB_VERSION 2: Since 2.3.3-b3 No changes; but used to omit message if 2.3.3-b3 has been installed before
31
+ if ( WJECF()->options['db_version'] < 2 ) {
32
+ WJECF()->options['db_version'] = 2;
33
+ }
34
+
35
+ if ( WJECF()->options['db_version'] > 2 ) {
36
+ WJECF_ADMIN()->enqueue_notice( '<p>' . __( '<strong>WooCommerce Extended Coupon Features:</strong> Please note, you\'re using an older version of this plugin, while the data was upgraded to a newer version.' , 'woocommerce-jos-autocoupon' ) . '</p>', 'notice-warning');
37
+ }
38
+
39
+ //An upgrade took place?
40
+ if ( WJECF()->options['db_version'] != $prev_version ) {
41
+ // Set version and write options to database
42
+ update_option( 'wjecf_options' , WJECF()->options, false );
43
+
44
+ WJECF_ADMIN()->enqueue_notice( '<p>' . __( '<strong>WooCommerce Extended Coupon Features:</strong> Data succesfully upgraded to the newest version.', 'woocommerce-jos-autocoupon' ) . '</p>', 'notice-success');
45
+ }
46
+ }
47
+
48
+ // function admin_notice_allow_cart_excluded() {
49
+
50
+ // if( ! empty( $this->admin_notice_allow_cart_excluded_couponcodes ) )
51
+ // {
52
+ // $html = '<div class="notice notice-warning">';
53
+ // $html .= '<p>';
54
+ // $html .= __( '<strong>WooCommerce Extended Coupon Features:</strong> The following coupons use the deprecated option \'Allow discount on cart with excluded items\'. Please review and save them.', 'woocommerce-jos-autocoupon' );
55
+ // $html .= '<ul>';
56
+ // foreach( $this->admin_notice_allow_cart_excluded_couponcodes as $post_id => $coupon_code ) {
57
+ // $html .= '<li><a class="post-edit-link" href="' . esc_url( get_edit_post_link( $post_id ) ) . '">' . $coupon_code . '</a></li>';
58
+ // }
59
+ // $html .= '</ul>';
60
+ // $html .= '</p>';
61
+ // $html .= '</div>';
62
+ // echo $html;
63
+ // }
64
+ // }
65
+ }
66
+ ?>
includes/admin/wjecf-admin.php CHANGED
@@ -12,41 +12,16 @@ class WJECF_Admin extends Abstract_WJECF_Plugin {
12
  add_action( 'admin_init', array( $this, 'admin_init' ) );
13
  }
14
 
15
- //Upgrade options on version change
16
- public function auto_upgrade_options() {
17
- $current_db_version = 1;
18
- //Check version
19
- if ( WJECF()->options['db_version'] < $current_db_version ) {
20
- global $wpdb;
21
-
22
- //DB_VERSION 1: Since 2.1.0-b5
23
- if (WJECF()->options['db_version'] < 1) {
24
- //RENAME meta_key _wjecf_matching_product_qty TO _wjecf_min_matching_product_qty
25
- $where = array("meta_key" => "_wjecf_matching_product_qty");
26
- $set = array('meta_key' => "_wjecf_min_matching_product_qty");
27
- $wpdb->update( _get_meta_table('post'), $set, $where );
28
-
29
- //RENAME meta_key woocommerce-jos-autocoupon TO _wjecf_is_auto_coupon
30
- $where = array("meta_key" => "woocommerce-jos-autocoupon");
31
- $set = array('meta_key' => "_wjecf_is_auto_coupon");
32
- $wpdb->update( _get_meta_table('post'), $set, $where );
33
- //Now we're version 1
34
- WJECF()->options['db_version'] = 1;
35
- }
36
-
37
- // Write options to database
38
- update_option( 'wjecf_options' , WJECF()->options, false );
39
- }
40
- }
41
-
42
-
43
-
44
  /* ADMIN HOOKS */
45
  public function admin_init() {
46
- //Upgrade options on version change
47
- $this->auto_upgrade_options();
48
-
 
 
49
  //Admin hooks
 
 
50
  add_filter( 'woocommerce_coupon_data_tabs', array( $this, 'admin_coupon_options_tabs' ), 10, 1);
51
  add_action( 'woocommerce_coupon_data_panels', array( $this, 'admin_coupon_options_panels' ), 10, 0 );
52
  add_action( 'woocommerce_process_shop_coupon_meta', array( $this, 'process_shop_coupon_meta' ), 10, 2 );
@@ -57,6 +32,59 @@ class WJECF_Admin extends Abstract_WJECF_Plugin {
57
  add_action( 'wjecf_coupon_metabox_misc', array( $this, 'admin_coupon_metabox_misc' ), 10, 2 );
58
  }
59
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
60
  //Add panels to the coupon option page
61
  public function admin_coupon_options_panels() {
62
  global $thepostid, $post;
@@ -86,7 +114,8 @@ class WJECF_Admin extends Abstract_WJECF_Plugin {
86
  </div>
87
  <?php
88
  }
89
- private function admin_coupon_data_footer() {
 
90
  $documentation_url = plugins_url( 'docs/index.html', dirname( __FILE__ ) );
91
  if ( ! WJECF()->is_pro() ) {
92
  $documentation_url = 'http://www.soft79.nl/documentation/wjecf';
@@ -109,30 +138,6 @@ class WJECF_Admin extends Abstract_WJECF_Plugin {
109
  __( 'WooCommerce Extended Coupon Features Documentation', 'woocommerce-jos-autocoupon' ) . '</a></p>';
110
 
111
  }
112
-
113
- //Add tabs to the coupon option page
114
- public function admin_coupon_options_tabs( $tabs ) {
115
-
116
- $tabs['extended_features_products'] = array(
117
- 'label' => __( 'Products', 'woocommerce-jos-autocoupon' ),
118
- 'target' => 'wjecf_coupondata_products',
119
- 'class' => 'wjecf_coupondata_products',
120
- );
121
-
122
- $tabs['extended_features_checkout'] = array(
123
- 'label' => __( 'Checkout', 'woocommerce-jos-autocoupon' ),
124
- 'target' => 'wjecf_coupondata_checkout',
125
- 'class' => 'wjecf_coupondata_checkout',
126
- );
127
-
128
- $tabs['extended_features_misc'] = array(
129
- 'label' => __( 'Miscellaneous', 'woocommerce-jos-autocoupon' ),
130
- 'target' => 'wjecf_coupondata_misc',
131
- 'class' => 'wjecf_coupondata_misc',
132
- );
133
-
134
- return $tabs;
135
- }
136
 
137
  //Tab 'extended features'
138
  public function admin_coupon_metabox_products( $thepostid, $post ) {
@@ -389,8 +394,66 @@ class WJECF_Admin extends Abstract_WJECF_Plugin {
389
 
390
  }
391
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
392
  public static function get_donate_url() {
393
  return "https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=5T9XQBCS2QHRY&lc=NL&item_name=Jos%20Koenis&item_number=wordpress%2dplugin&currency_code=EUR&bn=PP%2dDonationsBF%3abtn_donateCC_LG%2egif%3aNonHosted";
394
  }
395
-
396
  }
12
  add_action( 'admin_init', array( $this, 'admin_init' ) );
13
  }
14
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
15
  /* ADMIN HOOKS */
16
  public function admin_init() {
17
+ if ( ! WJECF()->check_woocommerce_version('2.3.0') ) {
18
+ $this->enqueue_notice( '<p>' .
19
+ __( '<strong>WooCommerce Extended Coupon Features:</strong> You are using a WooCommerce version prior to 2.3.0. Updating of WooCommerce is recommended as using an outdated version might cause unexpected behaviour in combination with modern plugins.' )
20
+ . '</p>', 'notice-warning' );
21
+ }
22
  //Admin hooks
23
+ add_action( 'admin_notices', array( $this, 'admin_notices'));
24
+
25
  add_filter( 'woocommerce_coupon_data_tabs', array( $this, 'admin_coupon_options_tabs' ), 10, 1);
26
  add_action( 'woocommerce_coupon_data_panels', array( $this, 'admin_coupon_options_panels' ), 10, 0 );
27
  add_action( 'woocommerce_process_shop_coupon_meta', array( $this, 'process_shop_coupon_meta' ), 10, 2 );
32
  add_action( 'wjecf_coupon_metabox_misc', array( $this, 'admin_coupon_metabox_misc' ), 10, 2 );
33
  }
34
 
35
+ // ===========================================================================
36
+ // START - ADMIN NOTICES
37
+ // Allows notices to be displayed on the admin pages
38
+ // ===========================================================================
39
+
40
+ private $notices = array();
41
+
42
+ /**
43
+ * Enqueue a notice to display on the admin page
44
+ * @param stirng $html Please embed in <p> tags
45
+ * @param string $class
46
+ */
47
+ public function enqueue_notice( $html, $class = 'notice-info' ) {
48
+ $this->notices[] = array( 'class' => $class, 'html' => $html );
49
+ }
50
+
51
+ public function admin_notices() {
52
+ foreach( $this->notices as $notice ) {
53
+ echo '<div class="notice ' . $notice['class'] . '">';
54
+ echo $notice['html'];
55
+ echo '</div>';
56
+ }
57
+ }
58
+
59
+ // ===========================================================================
60
+ // END - ADMIN NOTICES
61
+ // ===========================================================================
62
+
63
+
64
+ //Add tabs to the coupon option page
65
+ public function admin_coupon_options_tabs( $tabs ) {
66
+
67
+ $tabs['extended_features_products'] = array(
68
+ 'label' => __( 'Products', 'woocommerce-jos-autocoupon' ),
69
+ 'target' => 'wjecf_coupondata_products',
70
+ 'class' => 'wjecf_coupondata_products',
71
+ );
72
+
73
+ $tabs['extended_features_checkout'] = array(
74
+ 'label' => __( 'Checkout', 'woocommerce-jos-autocoupon' ),
75
+ 'target' => 'wjecf_coupondata_checkout',
76
+ 'class' => 'wjecf_coupondata_checkout',
77
+ );
78
+
79
+ $tabs['extended_features_misc'] = array(
80
+ 'label' => __( 'Miscellaneous', 'woocommerce-jos-autocoupon' ),
81
+ 'target' => 'wjecf_coupondata_misc',
82
+ 'class' => 'wjecf_coupondata_misc',
83
+ );
84
+
85
+ return $tabs;
86
+ }
87
+
88
  //Add panels to the coupon option page
89
  public function admin_coupon_options_panels() {
90
  global $thepostid, $post;
114
  </div>
115
  <?php
116
  }
117
+
118
+ public function admin_coupon_data_footer() {
119
  $documentation_url = plugins_url( 'docs/index.html', dirname( __FILE__ ) );
120
  if ( ! WJECF()->is_pro() ) {
121
  $documentation_url = 'http://www.soft79.nl/documentation/wjecf';
138
  __( 'WooCommerce Extended Coupon Features Documentation', 'woocommerce-jos-autocoupon' ) . '</a></p>';
139
 
140
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
141
 
142
  //Tab 'extended features'
143
  public function admin_coupon_metabox_products( $thepostid, $post ) {
394
 
395
  }
396
 
397
+ public function render_admin_cat_selector( $dom_id, $field_name, $selected_ids, $placeholder = null ) {
398
+ if ( $placeholder === null ) $placeholder = __( 'Search for a product…', 'woocommerce' );
399
+
400
+ // Categories
401
+ ?>
402
+ <select id="<?php esc_attr_e( $dom_id ) ?>" name="<?php esc_attr_e( $field_name ) ?>[]" style="width: 50%;" class="wc-enhanced-select" multiple="multiple" data-placeholder="<?php esc_attr_e( $placeholder ); ?>">
403
+ <?php
404
+ $categories = get_terms( 'product_cat', 'orderby=name&hide_empty=0' );
405
+
406
+ if ( $categories ) foreach ( $categories as $cat ) {
407
+ echo '<option value="' . esc_attr( $cat->term_id ) . '"' . selected( in_array( $cat->term_id, $selected_ids ), true, false ) . '>' . esc_html( $cat->name ) . '</option>';
408
+ }
409
+ ?>
410
+ </select>
411
+ <?php
412
+ }
413
+
414
+ public function render_admin_product_selector( $dom_id, $field_name, $selected_ids, $placeholder = null ) {
415
+ $product_key_values = array();
416
+ foreach ( $selected_ids as $product_id ) {
417
+ $product = wc_get_product( $product_id );
418
+ if ( is_object( $product ) ) {
419
+ $product_key_values[ esc_attr( $product_id ) ] = wp_kses_post( $product->get_formatted_name() );
420
+ }
421
+ }
422
+
423
+ if ( $placeholder === null ) $placeholder = __( 'Search for a product…', 'woocommerce' );
424
+
425
+ //In WooCommerce version 2.3.0 chosen was replaced by select2
426
+ $use_select2 = WJECF()->check_woocommerce_version('2.3.0');
427
+ if ($use_select2) {
428
+ $this->render_admin_select2_product_selector( $dom_id, $field_name, $product_key_values, $placeholder );
429
+ } else {
430
+ $this->render_admin_chosen_product_selector( $dom_id, $field_name, $product_key_values, $placeholder );
431
+ }
432
+
433
+ }
434
+
435
+ private function render_admin_chosen_product_selector( $dom_id, $field_name, $selected_keys_and_values, $placeholder ) {
436
+ // $selected_keys_and_values must be an array of [ id => name ]
437
+
438
+ echo '<select id="' . esc_attr( $dom_id ) . '" name="' . esc_attr( $field_name ) . '" class="ajax_chosen_select_products_and_variations" multiple="multiple" data-placeholder="' . esc_attr( $placeholder ) . '">';
439
+ foreach ( $selected_keys_and_values as $product_id => $product_name ) {
440
+ echo '<option value="' . $product_id . '" selected="selected">' . $product_name . '</option>';
441
+ }
442
+ echo '</select>';
443
+ }
444
+
445
+ private function render_admin_select2_product_selector( $dom_id, $field_name, $selected_keys_and_values, $placeholder ) {
446
+ // $selected_keys_and_values must be an array of [ id => name ]
447
+
448
+ $json_encoded = esc_attr( json_encode( $selected_keys_and_values ) );
449
+ echo '<input type="hidden" class="wc-product-search" data-multiple="true" style="width: 50%;" name="'
450
+ . esc_attr( $field_name ) . '" data-placeholder="'
451
+ . esc_attr( $placeholder ) . '" data-action="woocommerce_json_search_products_and_variations" data-selected="'
452
+ . $json_encoded . '" value="' . implode( ',', array_keys( $selected_keys_and_values ) ) . '" />';
453
+
454
+ }
455
+
456
  public static function get_donate_url() {
457
  return "https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=5T9XQBCS2QHRY&lc=NL&item_name=Jos%20Koenis&item_number=wordpress%2dplugin&currency_code=EUR&bn=PP%2dDonationsBF%3abtn_donateCC_LG%2egif%3aNonHosted";
458
  }
 
459
  }
includes/wjecf-autocoupon.php CHANGED
@@ -10,7 +10,7 @@ class WJECF_AutoCoupon extends Abstract_WJECF_Plugin {
10
 
11
  protected $_executed_coupon_by_url = false;
12
 
13
- public function __construct() {
14
  add_action('init', array( &$this, 'controller_init' ));
15
  }
16
 
@@ -20,14 +20,14 @@ class WJECF_AutoCoupon extends Abstract_WJECF_Plugin {
20
  }
21
 
22
  //Admin hooks
23
- add_action( 'admin_init', array( &$this, 'admin_init' ) );
24
-
25
  //Frontend hooks - logic
26
  if ( WJECF()->check_woocommerce_version('2.3.0')) {
27
  add_action( 'woocommerce_after_calculate_totals', array( &$this, 'update_matched_autocoupons' ) );
28
  } else {
29
  //WC Versions prior to 2.3.0 don't have after_calculate_totals hook, this is a fallback
30
- add_action( 'woocommerce_cart_updated', array( &$this, 'update_matched_autocoupons' ) );
31
  }
32
  add_action( 'woocommerce_check_cart_items', array( &$this, 'remove_unmatched_autocoupons' ) , 0, 0 ); //Remove coupon before WC does it and shows a message
33
  //Last check for coupons with restricted_emails
@@ -41,11 +41,11 @@ class WJECF_AutoCoupon extends Abstract_WJECF_Plugin {
41
  add_filter('option_woocommerce_cart_redirect_after_add', array ( &$this, 'option_woocommerce_cart_redirect_after_add') );
42
 
43
  if ( ! is_ajax() ) {
44
- add_action( 'wp_loaded', array( &$this, 'coupon_by_url' ), 23); //Coupon through url
45
  }
46
 
47
  }
48
-
49
  /* ADMIN HOOKS */
50
  public function admin_init() {
51
  add_action( 'wjecf_woocommerce_coupon_options_extended_features', array( $this, 'admin_coupon_options_extended_features' ), 20, 2 );
@@ -96,9 +96,9 @@ class WJECF_AutoCoupon extends Abstract_WJECF_Plugin {
96
  public function admin_views_edit_coupon( $views ) {
97
  global $post_type, $wp_query;
98
 
99
- $class = ( isset( $wp_query->query['meta_key'] ) && $wp_query->query['meta_key'] == '_wjecf_is_auto_coupon' ) ? 'current' : '';
100
- $query_string = remove_query_arg(array( 'wjecf_is_auto_coupon' ));
101
- $query_string = add_query_arg( 'wjecf_is_auto_coupon', '1', $query_string );
102
  $views['wjecf_is_auto_coupon'] = '<a href="' . esc_url( $query_string ) . '" class="' . esc_attr( $class ) . '">' . __( 'Auto coupons', 'woocommerce' ) . '</a>';
103
 
104
  return $views;
@@ -133,8 +133,8 @@ class WJECF_AutoCoupon extends Abstract_WJECF_Plugin {
133
  //=============================
134
  // Auto coupon checkbox
135
  woocommerce_wp_checkbox( array(
136
- 'id' => '_wjecf_is_auto_coupon',
137
- 'label' => __( 'Auto coupon', 'woocommerce-jos-autocoupon' ),
138
  'description' => __( "Automatically add the coupon to the cart if the restrictions are met. Please enter a description when you check this box, the description will be shown in the customer's cart if the coupon is applied.", 'woocommerce-jos-autocoupon' )
139
  ) );
140
 
@@ -154,8 +154,8 @@ class WJECF_AutoCoupon extends Abstract_WJECF_Plugin {
154
  //=============================
155
  // Apply without notice
156
  woocommerce_wp_checkbox( array(
157
- 'id' => '_wjecf_apply_silently',
158
- 'label' => __( 'Apply silently', 'woocommerce-jos-autocoupon' ),
159
  'description' => __( "Don't display a message when this coupon is automatically applied.", 'woocommerce-jos-autocoupon' ),
160
  ) );
161
  echo '</div>';
@@ -185,7 +185,7 @@ class WJECF_AutoCoupon extends Abstract_WJECF_Plugin {
185
 
186
  update_post_meta( $post_id, '_wjecf_is_auto_coupon', $autocoupon ? 'yes' : 'no' );
187
  update_post_meta( $post_id, '_wjecf_apply_silently', isset( $_POST['_wjecf_apply_silently'] ) ? 'yes' : 'no' );
188
- if ( WJECF()->is_pro() ) {
189
  update_post_meta( $post_id, '_wjecf_coupon_priority', intval( $_POST['_wjecf_coupon_priority'] ) );
190
  }
191
  }
@@ -206,26 +206,66 @@ class WJECF_AutoCoupon extends Abstract_WJECF_Plugin {
206
  * Add coupon through url
207
  */
208
  public function coupon_by_url() {
209
- if ( ! $this->_executed_coupon_by_url && isset( $_GET['apply_coupon'] ) ) {
210
- $this->_executed_coupon_by_url = true;
211
- $split = explode( ",", $_GET['apply_coupon'] );
212
- //2.2.2 Make sure a session cookie is set
213
- if( ! WC()->session->has_session() )
214
- {
215
- WC()->session->set_customer_session_cookie( true );
216
- }
217
-
218
- $cart = WC()->cart;
219
- foreach ( $split as $coupon_code ) {
220
- $cart->add_discount( $coupon_code );
221
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
222
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
223
  $requested_url = is_ssl() ? 'https://' : 'http://';
224
- $requested_url .= $_SERVER['HTTP_HOST'];
225
  $requested_url .= $_SERVER['REQUEST_URI'];
226
  wp_safe_redirect( remove_query_arg( array( 'apply_coupon', 'add-to-cart' ), ( $requested_url ) ) );
227
  exit;
228
- }
229
  }
230
 
231
  /**
@@ -276,7 +316,7 @@ class WJECF_AutoCoupon extends Abstract_WJECF_Plugin {
276
  function remove_unmatched_autocoupons( $valid_coupon_codes = null ) {
277
  if ( $valid_coupon_codes === null ) {
278
  //Get the coupons that should be in the cart
279
- $valid_coupons = $this->valid_auto_coupons();
280
  $valid_coupons = $this->individual_use_filter( $valid_coupons );
281
  $valid_coupon_codes = array();
282
  foreach ( $valid_coupons as $coupon ) {
@@ -309,26 +349,40 @@ class WJECF_AutoCoupon extends Abstract_WJECF_Plugin {
309
  $this->update_matched_autocoupons_executed = true;
310
  $this->log( "()" );
311
 
 
 
 
312
  //Get the coupons that should be in the cart
313
- $valid_coupons = $this->valid_auto_coupons();
314
  $valid_coupons = $this->individual_use_filter( $valid_coupons );
 
315
  $valid_coupon_codes = array();
316
  foreach ( $valid_coupons as $coupon ) {
317
  $valid_coupon_codes[] = $coupon->code;
318
  }
319
 
320
- //$this->log( sprintf( "Coupons that should be in cart: %s", implode( ', ', $valid_coupon_codes ) ) );
321
 
322
  $calc_needed = $this->remove_unmatched_autocoupons( $valid_coupon_codes );
323
 
324
  //Add valids
325
  foreach( $valid_coupons as $coupon ) {
326
  if ( ! WC()->cart->has_discount( $coupon->code ) ) {
327
- $this->log( sprintf( "Applying %s", $coupon->code ) );
328
  WC()->cart->add_discount( $coupon->code ); //Causes calculation and will remove other coupons if it's a individual coupon
329
  $calc_needed = false; //Already done by adding the discount
 
330
  $apply_silently = get_post_meta( $coupon->id, '_wjecf_apply_silently', true ) == 'yes';
331
- $this->overwrite_success_message( $coupon, $apply_silently );
 
 
 
 
 
 
 
 
 
332
  }
333
  }
334
 
@@ -340,7 +394,58 @@ class WJECF_AutoCoupon extends Abstract_WJECF_Plugin {
340
 
341
  }
342
 
343
- private function valid_auto_coupons( ) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
344
  $valid_coupons = array();
345
  foreach ( $this->get_all_auto_coupons() as $coupon ) {
346
  if ( $this->coupon_can_be_applied( $coupon ) && $this->coupon_has_a_value( $coupon ) ) {
@@ -393,10 +498,8 @@ class WJECF_AutoCoupon extends Abstract_WJECF_Plugin {
393
  global $woocommerce;
394
  foreach ( $woocommerce->cart->get_cart() as $cart_item) {
395
  if ( $coupon->is_valid_for_cart() || $coupon->is_valid_for_product( $cart_item['data'], $cart_item ) ) {
396
- if ( $coupon->get_discount_amount( $cart_item['data']->price, $cart_item ) > 0 ) {
397
- $has_a_value = true;
398
- break;
399
- }
400
  }
401
  }
402
  }
@@ -409,19 +512,14 @@ class WJECF_AutoCoupon extends Abstract_WJECF_Plugin {
409
  /**
410
  * Overwrite the default "Coupon added" notice with a more descriptive message.
411
  * @param WC_Coupon $coupon The coupon data
412
- * @param bool $remove_message_only If true the notice will be removed, and no notice will be shown.
413
  * @return void
414
  */
415
- private function overwrite_success_message( $coupon, $remove_message_only = false ) {
416
  $succss_msg = $coupon->get_coupon_message( WC_Coupon::WC_COUPON_SUCCESS );
417
 
418
  //If ajax, remove only
419
- $remove_message_only |= defined('DOING_AJAX') && DOING_AJAX;
420
-
421
- $new_succss_msg = sprintf(
422
- __("Discount applied: %s", 'woocommerce-jos-autocoupon'),
423
- __($this->coupon_excerpt($coupon), 'woocommerce-jos-autocoupon')
424
- );
425
 
426
  //Compatibility woocommerce-2-1-notice-api
427
  if ( function_exists('wc_get_notices') ) {
@@ -443,7 +541,6 @@ class WJECF_AutoCoupon extends Abstract_WJECF_Plugin {
443
  } else {
444
  $all_notices['success'][$y] = $new_succss_msg;
445
  }
446
-
447
  WC()->session->set( 'wc_notices', $all_notices );
448
  } else {
449
  if ( $remove_message_only ) {
@@ -504,7 +601,7 @@ class WJECF_AutoCoupon extends Abstract_WJECF_Plugin {
504
  if ( isset( $_POST['billing_email'] ) )
505
  $this->_user_emails[] = $_POST['billing_email'];
506
  }
507
- //$this->log( "User emails: " . join( ",", $this->_user_emails ) );
508
  return $this->_user_emails;
509
  }
510
 
@@ -519,7 +616,7 @@ class WJECF_AutoCoupon extends Abstract_WJECF_Plugin {
519
  $append_emails = array( $append_emails );
520
  }
521
  $this->_user_emails = array_unique( array_merge( $this->get_user_emails(), $append_emails ) );
522
- //$this->log('Append emails: ' . join( ',', $append_emails ) );
523
  }
524
 
525
  public function fetch_billing_email( $post_data ) {
@@ -581,7 +678,7 @@ class WJECF_AutoCoupon extends Abstract_WJECF_Plugin {
581
  ),
582
  )
583
  );
584
-
585
  $query = new WP_Query($query_args);
586
  foreach ($query->posts as $post) {
587
  $coupon = new WC_Coupon($post->post_title);
10
 
11
  protected $_executed_coupon_by_url = false;
12
 
13
+ public function __construct() {
14
  add_action('init', array( &$this, 'controller_init' ));
15
  }
16
 
20
  }
21
 
22
  //Admin hooks
23
+ add_action( 'admin_init', array( &$this, 'admin_init' ) );
24
+
25
  //Frontend hooks - logic
26
  if ( WJECF()->check_woocommerce_version('2.3.0')) {
27
  add_action( 'woocommerce_after_calculate_totals', array( &$this, 'update_matched_autocoupons' ) );
28
  } else {
29
  //WC Versions prior to 2.3.0 don't have after_calculate_totals hook, this is a fallback
30
+ add_action( 'woocommerce_cart_updated', array( &$this, 'update_matched_autocoupons' ) );
31
  }
32
  add_action( 'woocommerce_check_cart_items', array( &$this, 'remove_unmatched_autocoupons' ) , 0, 0 ); //Remove coupon before WC does it and shows a message
33
  //Last check for coupons with restricted_emails
41
  add_filter('option_woocommerce_cart_redirect_after_add', array ( &$this, 'option_woocommerce_cart_redirect_after_add') );
42
 
43
  if ( ! is_ajax() ) {
44
+ add_action( 'init', array( &$this, 'coupon_by_url' ), 23); //Coupon through url
45
  }
46
 
47
  }
48
+
49
  /* ADMIN HOOKS */
50
  public function admin_init() {
51
  add_action( 'wjecf_woocommerce_coupon_options_extended_features', array( $this, 'admin_coupon_options_extended_features' ), 20, 2 );
96
  public function admin_views_edit_coupon( $views ) {
97
  global $post_type, $wp_query;
98
 
99
+ $class = ( isset( $wp_query->query['meta_key'] ) && $wp_query->query['meta_key'] == '_wjecf_is_auto_coupon' ) ? 'current' : '';
100
+ $query_string = remove_query_arg(array( 'wjecf_is_auto_coupon' ));
101
+ $query_string = add_query_arg( 'wjecf_is_auto_coupon', '1', $query_string );
102
  $views['wjecf_is_auto_coupon'] = '<a href="' . esc_url( $query_string ) . '" class="' . esc_attr( $class ) . '">' . __( 'Auto coupons', 'woocommerce' ) . '</a>';
103
 
104
  return $views;
133
  //=============================
134
  // Auto coupon checkbox
135
  woocommerce_wp_checkbox( array(
136
+ 'id' => '_wjecf_is_auto_coupon',
137
+ 'label' => __( 'Auto coupon', 'woocommerce-jos-autocoupon' ),
138
  'description' => __( "Automatically add the coupon to the cart if the restrictions are met. Please enter a description when you check this box, the description will be shown in the customer's cart if the coupon is applied.", 'woocommerce-jos-autocoupon' )
139
  ) );
140
 
154
  //=============================
155
  // Apply without notice
156
  woocommerce_wp_checkbox( array(
157
+ 'id' => '_wjecf_apply_silently',
158
+ 'label' => __( 'Apply silently', 'woocommerce-jos-autocoupon' ),
159
  'description' => __( "Don't display a message when this coupon is automatically applied.", 'woocommerce-jos-autocoupon' ),
160
  ) );
161
  echo '</div>';
185
 
186
  update_post_meta( $post_id, '_wjecf_is_auto_coupon', $autocoupon ? 'yes' : 'no' );
187
  update_post_meta( $post_id, '_wjecf_apply_silently', isset( $_POST['_wjecf_apply_silently'] ) ? 'yes' : 'no' );
188
+ if ( WJECF()->is_pro() ) {
189
  update_post_meta( $post_id, '_wjecf_coupon_priority', intval( $_POST['_wjecf_coupon_priority'] ) );
190
  }
191
  }
206
  * Add coupon through url
207
  */
208
  public function coupon_by_url() {
209
+ $must_redirect = false;
210
+
211
+ //Apply coupon by url
212
+ if ( isset( $_GET['apply_coupon'] ) ) {
213
+ $this->_executed_coupon_by_url = true;
214
+ $split = explode( ",", wc_clean( $_GET['apply_coupon'] ) );
215
+ //2.2.2 Make sure a session cookie is set
216
+ if( ! WC()->session->has_session() )
217
+ {
218
+ WC()->session->set_customer_session_cookie( true );
219
+ }
220
+
221
+ $cart = WC()->cart;
222
+ foreach ( $split as $coupon_code ) {
223
+ $coupon = WJECF()->get_coupon( $coupon_code );
224
+ if ( ! $coupon->exists ) {
225
+ wc_add_notice( $coupon->get_coupon_error( WC_Coupon::E_WC_COUPON_NOT_EXIST ), 'error' );
226
+ } else {
227
+ $valid = $coupon->is_valid();
228
+ if ( $valid ) {
229
+ $cart->add_discount( $coupon_code );
230
+ }
231
+
232
+ //2.3.3 Keep track of apply_coupon coupons and apply when they validate
233
+ if ( WJECF()->is_pro() ) {
234
+ $by_url_coupon_codes = $this->get_by_url_coupon_codes();
235
+ if ( ! in_array( $coupon_code, $by_url_coupon_codes ) ) {
236
+ $by_url_coupon_codes[] = $coupon_code;
237
+ $this->set_by_url_coupon_codes( $by_url_coupon_codes );
238
+ }
239
+ if ( ! $valid ) {
240
+ wc_add_notice( sprintf( __( 'Coupon \'%s\' will be applied when it\'s conditions are met.', 'woocommerce-jos-autocoupon' ), $coupon_code ) );
241
+ $must_redirect = true;
242
+ }
243
+ }
244
+ }
245
+ }
246
+ }
247
 
248
+ //2.3.3 Keep track of apply_coupon coupons and apply when they validate
249
+ if ( WJECF()->is_pro() ) {
250
+ //Remove auto coupon codes from session
251
+ if ( isset( $_GET['remove_coupon'] ) ) {
252
+ $coupon_code = wc_clean( $_GET['remove_coupon'] );
253
+ $by_url_coupon_codes = $this->get_by_url_coupon_codes();
254
+ if( ( $key = array_search( $coupon_code, $by_url_coupon_codes ) ) !== false ) {
255
+ unset( $by_url_coupon_codes[$key] );
256
+ $this->set_by_url_coupon_codes( $by_url_coupon_codes );
257
+ }
258
+ }
259
+ }
260
+
261
+ //Redirect to page without autocoupon query args
262
+ if ( $must_redirect ) {
263
  $requested_url = is_ssl() ? 'https://' : 'http://';
264
+ $requested_url .= $_SERVER['HTTP_HOST'];
265
  $requested_url .= $_SERVER['REQUEST_URI'];
266
  wp_safe_redirect( remove_query_arg( array( 'apply_coupon', 'add-to-cart' ), ( $requested_url ) ) );
267
  exit;
268
+ }
269
  }
270
 
271
  /**
316
  function remove_unmatched_autocoupons( $valid_coupon_codes = null ) {
317
  if ( $valid_coupon_codes === null ) {
318
  //Get the coupons that should be in the cart
319
+ $valid_coupons = $this->get_valid_auto_coupons();
320
  $valid_coupons = $this->individual_use_filter( $valid_coupons );
321
  $valid_coupon_codes = array();
322
  foreach ( $valid_coupons as $coupon ) {
349
  $this->update_matched_autocoupons_executed = true;
350
  $this->log( "()" );
351
 
352
+ //2.3.3 Keep track of apply_coupon coupons and apply when they validate
353
+ $this->apply_valid_by_url_coupons();
354
+
355
  //Get the coupons that should be in the cart
356
+ $valid_coupons = $this->get_valid_auto_coupons();
357
  $valid_coupons = $this->individual_use_filter( $valid_coupons );
358
+
359
  $valid_coupon_codes = array();
360
  foreach ( $valid_coupons as $coupon ) {
361
  $valid_coupon_codes[] = $coupon->code;
362
  }
363
 
364
+ //$this->log( sprintf( "Auto coupons that should be in cart: %s", implode( ', ', $valid_coupon_codes ) ) );
365
 
366
  $calc_needed = $this->remove_unmatched_autocoupons( $valid_coupon_codes );
367
 
368
  //Add valids
369
  foreach( $valid_coupons as $coupon ) {
370
  if ( ! WC()->cart->has_discount( $coupon->code ) ) {
371
+ $this->log( sprintf( "Applying auto coupon %s", $coupon->code ) );
372
  WC()->cart->add_discount( $coupon->code ); //Causes calculation and will remove other coupons if it's a individual coupon
373
  $calc_needed = false; //Already done by adding the discount
374
+
375
  $apply_silently = get_post_meta( $coupon->id, '_wjecf_apply_silently', true ) == 'yes';
376
+ if ( $apply_silently ) {
377
+ $new_succss_msg = false; // no message
378
+ } else {
379
+ $coupon_excerpt = $this->coupon_excerpt($coupon);
380
+ $new_succss_msg = sprintf(
381
+ __("Discount applied: %s", 'woocommerce-jos-autocoupon'),
382
+ __( empty( $coupon_excerpt ) ? $coupon->code : $coupon_excerpt, 'woocommerce-jos-autocoupon')
383
+ );
384
+ }
385
+ $this->overwrite_success_message( $coupon, $new_succss_msg );
386
  }
387
  }
388
 
394
 
395
  }
396
 
397
+ /**
398
+ * Apply the valid by_url coupons
399
+ * @return void
400
+ */
401
+ private function apply_valid_by_url_coupons( ) {
402
+ //2.3.3 Keep track of apply_coupon coupons and apply when they validate
403
+ if ( WJECF()->is_pro() ) {
404
+ $this->log( "()" );
405
+ $by_url_coupon_codes = $this->get_by_url_coupon_codes();
406
+ $this->log( "By_url coupons: " . implode( ' ', $by_url_coupon_codes ) );
407
+ foreach( $by_url_coupon_codes as $coupon_code ) {
408
+ if ( ! WC()->cart->has_discount( $coupon_code ) ) {
409
+ $coupon = new WC_Coupon( $coupon_code );
410
+ if ( $coupon->is_valid() ) {
411
+ $this->log( sprintf( "Applying by_url coupon %s", $coupon->code ) );
412
+ WC()->cart->add_discount( $coupon->code ); //Causes calculation and will remove other coupons if it's a individual coupon
413
+ //$calc_needed = false; //Already done by adding the discount
414
+ $new_succss_msg = sprintf(
415
+ __("Discount applied: %s", 'woocommerce-jos-autocoupon'),
416
+ __($coupon->code, 'woocommerce-jos-autocoupon')
417
+ );
418
+ $this->overwrite_success_message( $coupon, $new_succss_msg );
419
+ } elseif ( ! $coupon->exists ) {
420
+ //Remove non-existent
421
+ if( ( $key = array_search($coupon_code, $by_url_coupon_codes ) ) !== false ) {
422
+ unset( $by_url_coupon_codes[$key] );
423
+ $this->set_by_url_coupon_codes( $by_url_coupon_codes );
424
+ }
425
+ //wc_add_notice( $coupon->get_coupon_error( WC_Coupon::E_WC_COUPON_NOT_EXIST ), 'error' );
426
+ }
427
+ }
428
+ }
429
+ }
430
+ }
431
+
432
+ /**
433
+ * Get the by_url coupon codes from the session
434
+ * @return array The coupon codes
435
+ */
436
+ public function get_by_url_coupon_codes() {
437
+ return WC()->session->get( 'wjecf_by_url_coupons' , array() );
438
+ }
439
+ /**
440
+ * Save the by_url coupon codes in the session
441
+ * @param array $coupon_codes
442
+ * @return void
443
+ */
444
+ public function set_by_url_coupon_codes( $coupon_codes ) {
445
+ WC()->session->set( 'wjecf_by_url_coupons' , array_unique( $coupon_codes ) );
446
+ }
447
+
448
+ private function get_valid_auto_coupons( ) {
449
  $valid_coupons = array();
450
  foreach ( $this->get_all_auto_coupons() as $coupon ) {
451
  if ( $this->coupon_can_be_applied( $coupon ) && $this->coupon_has_a_value( $coupon ) ) {
498
  global $woocommerce;
499
  foreach ( $woocommerce->cart->get_cart() as $cart_item) {
500
  if ( $coupon->is_valid_for_cart() || $coupon->is_valid_for_product( $cart_item['data'], $cart_item ) ) {
501
+ $has_a_value = true;
502
+ break;
 
 
503
  }
504
  }
505
  }
512
  /**
513
  * Overwrite the default "Coupon added" notice with a more descriptive message.
514
  * @param WC_Coupon $coupon The coupon data
515
+ * @param string|bool $new_succss_msg The message to display. If false (or empty string), no message will be shown
516
  * @return void
517
  */
518
+ private function overwrite_success_message( $coupon, $new_succss_msg = false ) {
519
  $succss_msg = $coupon->get_coupon_message( WC_Coupon::WC_COUPON_SUCCESS );
520
 
521
  //If ajax, remove only
522
+ $remove_message_only = empty( $new_succss_msg ) || ( defined('DOING_AJAX') && DOING_AJAX );
 
 
 
 
 
523
 
524
  //Compatibility woocommerce-2-1-notice-api
525
  if ( function_exists('wc_get_notices') ) {
541
  } else {
542
  $all_notices['success'][$y] = $new_succss_msg;
543
  }
 
544
  WC()->session->set( 'wc_notices', $all_notices );
545
  } else {
546
  if ( $remove_message_only ) {
601
  if ( isset( $_POST['billing_email'] ) )
602
  $this->_user_emails[] = $_POST['billing_email'];
603
  }
604
+ //$this->log( "User emails: " . implode( ",", $this->_user_emails ) );
605
  return $this->_user_emails;
606
  }
607
 
616
  $append_emails = array( $append_emails );
617
  }
618
  $this->_user_emails = array_unique( array_merge( $this->get_user_emails(), $append_emails ) );
619
+ //$this->log('Append emails: ' . implode( ',', $append_emails ) );
620
  }
621
 
622
  public function fetch_billing_email( $post_data ) {
678
  ),
679
  )
680
  );
681
+
682
  $query = new WP_Query($query_args);
683
  foreach ($query->posts as $post) {
684
  $coupon = new WC_Coupon($post->post_title);
includes/wjecf-controller.php CHANGED
@@ -44,15 +44,22 @@ class WJECF_Controller {
44
  if ( ! class_exists('WC_Coupon') ) {
45
  return;
46
  }
47
- $this->debug_mode = false; //defined( 'WP_DEBUG' ) && WP_DEBUG;
48
  $this->log( "INIT " . ( is_ajax() ? "AJAX" : is_admin() ? "ADMIN" : "FRONTEND" ) . " " . $_SERVER['REQUEST_URI'] );
49
 
50
  $this->init_options();
51
 
52
  //Frontend hooks
53
- add_filter('woocommerce_coupon_is_valid', array( &$this, 'assert_coupon_is_valid' ), 10, 2 );
 
 
 
 
 
 
 
54
  add_filter('woocommerce_coupon_error', array( &$this, 'woocommerce_coupon_error' ), 10, 3 );
55
- add_action('woocommerce_coupon_loaded', array( $this, 'woocommerce_coupon_loaded' ), 10, 1);
56
  add_filter('woocommerce_coupon_get_discount_amount', array( $this, 'woocommerce_coupon_get_discount_amount' ), 10, 5);
57
  add_action( 'wp_footer', array( &$this, 'render_log' ) ); //Log
58
  }
@@ -222,7 +229,8 @@ class WJECF_Controller {
222
  if ( $products_and && sizeof( $coupon->product_ids ) > 1 ) { // We use > 1, because if size == 1, 'AND' makes no difference
223
  //Get array of all cart product and variation ids
224
  $cart_item_ids = array();
225
- foreach( WC()->cart->get_cart() as $cart_item_key => $cart_item ) {
 
226
  $cart_item_ids[] = $cart_item['product_id'];
227
  $cart_item_ids[] = $cart_item['variation_id'];
228
  }
@@ -243,7 +251,8 @@ class WJECF_Controller {
243
  if ( $categories_and && sizeof( $coupon->product_categories ) > 1 ) { // We use > 1, because if size == 1, 'AND' makes no difference
244
  //Get array of all cart product and variation ids
245
  $cart_product_cats = array();
246
- foreach( WC()->cart->get_cart() as $cart_item_key => $cart_item ) {
 
247
  $cart_product_cats = array_merge ( $cart_product_cats, wp_get_post_terms( $cart_item['product_id'], 'product_cat', array( "fields" => "ids" ) ) );
248
  }
249
  //Filter used by WJECF_WPML hook
@@ -395,7 +404,7 @@ class WJECF_Controller {
395
 
396
  $qty = 0;
397
  foreach( WC()->cart->get_cart() as $cart_item_key => $cart_item ) {
398
- $_product = $cart_item['data'];
399
  if ($this->coupon_is_valid_for_product( $coupon, $_product, $cart_item ) ) {
400
  $qty += $cart_item['quantity'];
401
  }
@@ -432,14 +441,23 @@ class WJECF_Controller {
432
  return false;
433
  }
434
 
435
- //Ugly hack: $coupon->is_valid_for_product only works for these types
436
- $original_discount_type = $coupon->discount_type;
 
 
 
437
  if ( ! $this->coupon_is_type( $coupon, array( 'fixed_product', 'percent_product' ) ) ) {
438
- $coupon->discount_type = 'fixed_product';
 
439
  }
 
440
  $valid = $coupon->is_valid_for_product( $product, $values );
441
- $coupon->discount_type = $original_discount_type;
442
-
 
 
 
 
443
  return $valid;
444
  }
445
 
@@ -492,6 +510,25 @@ class WJECF_Controller {
492
  }
493
  }
494
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
495
  /**
496
  * Get array of the selected shipping methods ids.
497
  * @param int $coupon_id The coupon id
@@ -569,6 +606,74 @@ class WJECF_Controller {
569
  return $this instanceof WJECF_Pro_Controller;
570
  }
571
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
572
 
573
  private $_session_data = null;
574
  /**
44
  if ( ! class_exists('WC_Coupon') ) {
45
  return;
46
  }
47
+ $this->debug_mode = false; // defined( 'WP_DEBUG' ) && WP_DEBUG;
48
  $this->log( "INIT " . ( is_ajax() ? "AJAX" : is_admin() ? "ADMIN" : "FRONTEND" ) . " " . $_SERVER['REQUEST_URI'] );
49
 
50
  $this->init_options();
51
 
52
  //Frontend hooks
53
+
54
+ //assert_coupon_is_valid (which raises exception on invalid coupon) can only be used on WC 2.3.0 and up
55
+ if ( self::check_woocommerce_version('2.3.0') ) {
56
+ add_filter('woocommerce_coupon_is_valid', array( &$this, 'assert_coupon_is_valid' ), 10, 2 );
57
+ } else {
58
+ add_filter('woocommerce_coupon_is_valid', array( &$this, 'coupon_is_valid' ), 10, 2 );
59
+ }
60
+
61
  add_filter('woocommerce_coupon_error', array( &$this, 'woocommerce_coupon_error' ), 10, 3 );
62
+ add_action('woocommerce_coupon_loaded', array( &$this, 'woocommerce_coupon_loaded' ), 10, 1);
63
  add_filter('woocommerce_coupon_get_discount_amount', array( $this, 'woocommerce_coupon_get_discount_amount' ), 10, 5);
64
  add_action( 'wp_footer', array( &$this, 'render_log' ) ); //Log
65
  }
229
  if ( $products_and && sizeof( $coupon->product_ids ) > 1 ) { // We use > 1, because if size == 1, 'AND' makes no difference
230
  //Get array of all cart product and variation ids
231
  $cart_item_ids = array();
232
+ $cart = WC()->cart->get_cart();
233
+ foreach( $cart as $cart_item_key => $cart_item ) {
234
  $cart_item_ids[] = $cart_item['product_id'];
235
  $cart_item_ids[] = $cart_item['variation_id'];
236
  }
251
  if ( $categories_and && sizeof( $coupon->product_categories ) > 1 ) { // We use > 1, because if size == 1, 'AND' makes no difference
252
  //Get array of all cart product and variation ids
253
  $cart_product_cats = array();
254
+ $cart = WC()->cart->get_cart();
255
+ foreach( $cart as $cart_item_key => $cart_item ) {
256
  $cart_product_cats = array_merge ( $cart_product_cats, wp_get_post_terms( $cart_item['product_id'], 'product_cat', array( "fields" => "ids" ) ) );
257
  }
258
  //Filter used by WJECF_WPML hook
404
 
405
  $qty = 0;
406
  foreach( WC()->cart->get_cart() as $cart_item_key => $cart_item ) {
407
+ $_product = $cart_item['data'];
408
  if ($this->coupon_is_valid_for_product( $coupon, $_product, $cart_item ) ) {
409
  $qty += $cart_item['quantity'];
410
  }
441
  return false;
442
  }
443
 
444
+ //Save coupon fields that will be temporary overwritten
445
+ $overwritten_values = $this->restore_values( $coupon );
446
+ $overwritten_values['discount_type'] = $coupon->discount_type;
447
+
448
+ //$coupon->is_valid_for_product only works for these types
449
  if ( ! $this->coupon_is_type( $coupon, array( 'fixed_product', 'percent_product' ) ) ) {
450
+ $overwritten_values['discount_type'] = $overwritten_values['type'] = $coupon->discount_type;
451
+ $coupon->discount_type = $coupon->type = 'fixed_product';
452
  }
453
+
454
  $valid = $coupon->is_valid_for_product( $product, $values );
455
+
456
+ //Restore fields
457
+ foreach( $overwritten_values as $key => $value ) {
458
+ $coupon->$key = $value;
459
+ }
460
+
461
  return $valid;
462
  }
463
 
510
  }
511
  }
512
 
513
+ /**
514
+ * Get categories of a product (and anchestors)
515
+ * @param int $product_id
516
+ * @return array product_cat_ids
517
+ */
518
+ function get_product_cat_ids( $product_id ) {
519
+ //Backwards compatibility WC versions older than 2.5
520
+ if ( function_exists( 'wc_get_product_cat_ids' ) ) {
521
+ return wc_get_product_cat_ids( $product_id );
522
+ } else {
523
+ $product_cats = wp_get_post_terms( $product_id, 'product_cat', array( "fields" => "ids" ) );
524
+
525
+ foreach ( $product_cats as $product_cat ) {
526
+ $product_cats = array_merge( $product_cats, get_ancestors( $product_cat, 'product_cat' ) );
527
+ }
528
+ return $product_cats;
529
+ }
530
+ }
531
+
532
  /**
533
  * Get array of the selected shipping methods ids.
534
  * @param int $coupon_id The coupon id
606
  return $this instanceof WJECF_Pro_Controller;
607
  }
608
 
609
+ // ===========================================================================
610
+ // START - OVERWRITE COUPON DATA
611
+ // Allows for non-persistent overwriting of fields during a single PHP call.
612
+ // ===========================================================================
613
+
614
+ protected $original_coupon_data = array();
615
+ /**
616
+ * Overwrite a coupon field. Remembers a copy of original value
617
+ * @param WC_Coupon $coupon
618
+ * @param string $key
619
+ * @param mixed $value
620
+ */
621
+ public function overwrite_value( $coupon, $key, $value ) {
622
+ if ( ! isset( $this->original_coupon_data[ $coupon->code ][ $key ] ) ) { //never overwrite original
623
+ $this->original_coupon_data[ $coupon->code ][ $key ] = $coupon->$key;
624
+ }
625
+ $coupon->$key = $value;
626
+ }
627
+
628
+ /**
629
+ * Retrieve original coupon field value (in the case it is overwritten using overwrite)
630
+ * @param WC_Coupon $coupon
631
+ * @param string $key
632
+ * @return mixed The original value
633
+ */
634
+ public function original_value( $coupon, $key ) {
635
+ if ( isset( $this->original_coupon_data[ $coupon->code ][ $key ] ) ) {
636
+ return $this->original_coupon_data[ $coupon->code ][ $key ];
637
+ } else {
638
+ return $coupon->$key;
639
+ }
640
+ }
641
+
642
+
643
+ /**
644
+ * Restore original values to the coupon fields
645
+ * @param WC_Coupon $coupon
646
+ * @param array $keys The fields to restore; will restore all if omitted
647
+ * @return array Array with the keys and values of the fields that were overwritten
648
+ */
649
+ public function restore_values( $coupon, $keys = null ) {
650
+ $overwritten_values = array();
651
+ if ( isset( $this->original_coupon_data[ $coupon->code ] ) ) {
652
+ foreach( $this->original_coupon_data[ $coupon->code ] as $key => $value ) {
653
+ if ( $keys === null || in_array( $key, $keys ) ) {
654
+ $overwritten_values[ $key ] = $coupon->$key;
655
+ $coupon->$key = $value;
656
+ }
657
+ }
658
+ }
659
+ return $overwritten_values;
660
+ }
661
+
662
+ /**
663
+ * Restore original value to the coupon field
664
+ * @param WC_Coupon $coupon
665
+ * @param string $key
666
+ */
667
+ public function restore_value( $coupon, $key ) {
668
+ $coupon->$key = $this->original_value( $coupon, $key );
669
+ unset( $this->original_coupon_data[ $coupon->code ][ $key ] );
670
+ }
671
+
672
+ // ===========================================================================
673
+ // END - OVERWRITE COUPON DATA
674
+ // ===========================================================================
675
+
676
+
677
 
678
  private $_session_data = null;
679
  /**
languages/woocommerce-jos-autocoupon-es_ES.mo CHANGED
Binary file
languages/woocommerce-jos-autocoupon-es_ES.po CHANGED
@@ -5,8 +5,8 @@ msgstr ""
5
  "Project-Id-Version: WooCommerce auto added coupons 1.1.3.1\n"
6
  "Report-Msgid-Bugs-To: http://wordpress.org/support/plugin/woocommerce-auto-"
7
  "added-coupons\n"
8
- "POT-Creation-Date: 2016-03-28 21:24+0200\n"
9
- "PO-Revision-Date: 2016-03-28 21:28+0200\n"
10
  "Last-Translator: \n"
11
  "Language-Team: \n"
12
  "Language: es_ES\n"
@@ -18,47 +18,68 @@ msgstr ""
18
  "X-Poedit-Basepath: C:/lamp/www/qrvm_woo/wp-content/plugins\n"
19
  "X-Poedit-SearchPath-0: woocommerce-auto-added-coupons\n"
20
 
21
- #: includes/admin/wjecf-admin.php:94
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
22
  msgid "Do you find WooCommerce Extended Coupon Features useful?"
23
  msgstr "Le gusta WooCommerce Extended Coupon Features?"
24
 
25
- #: includes/admin/wjecf-admin.php:96
26
  msgid "Express your gratitude"
27
  msgstr "Exprese su gratitud"
28
 
29
- #: includes/admin/wjecf-admin.php:100
30
  msgid "Donate to the developer"
31
  msgstr "Hacer una donación"
32
 
33
- #: includes/admin/wjecf-admin.php:107
34
  msgid "Documentation"
35
  msgstr "Documentación"
36
 
37
- #: includes/admin/wjecf-admin.php:109
38
  msgid "WooCommerce Extended Coupon Features Documentation"
39
  msgstr "Documentación de WooCommerce Extended Coupon Features"
40
 
41
- #: includes/admin/wjecf-admin.php:117
42
- msgid "Products"
43
- msgstr "Productos"
44
-
45
- #: includes/admin/wjecf-admin.php:123 includes/admin/wjecf-admin.php:230
46
- msgid "Checkout"
47
- msgstr "Tramitar"
48
-
49
- #: includes/admin/wjecf-admin.php:129 includes/admin/wjecf-admin.php:340
50
- msgid "Miscellaneous"
51
- msgstr "Diversos"
52
-
53
- #: includes/admin/wjecf-admin.php:141
54
  msgid "Matching products"
55
  msgstr "Productos conformes"
56
 
57
- #: includes/admin/wjecf-admin.php:146
58
  msgid "AND Products (not OR)"
59
  msgstr "TODOS los productos"
60
 
61
- #: includes/admin/wjecf-admin.php:147
62
  msgid ""
63
  "Check this box if ALL of the products (see tab 'usage restriction') must be "
64
  "in the cart to use this coupon (instead of only one of the products)."
@@ -66,11 +87,11 @@ msgstr ""
66
  "Marque esta casilla si TODOS los productos (vea 'Restricción de uso') "
67
  "necesitan estar en el carrito de compras (en lugar de uno de los productos)."
68
 
69
- #: includes/admin/wjecf-admin.php:154
70
  msgid "AND Categories (not OR)"
71
  msgstr "TODAS las categorias"
72
 
73
- #: includes/admin/wjecf-admin.php:155
74
  msgid ""
75
  "Check this box if products from ALL of the categories (see tab 'usage "
76
  "restriction') must be in the cart to use this coupon (instead of only one "
@@ -80,88 +101,88 @@ msgstr ""
80
  "de uso') necesitan estar en el carrito de compras (en lugar de un producto "
81
  "de uno de los productos)."
82
 
83
- #: includes/admin/wjecf-admin.php:160
84
  msgid "(AND)"
85
  msgstr "(TODOS)"
86
 
87
- #: includes/admin/wjecf-admin.php:161
88
  msgid "(OR)"
89
  msgstr "(UNO)"
90
 
91
- #: includes/admin/wjecf-admin.php:190
92
  msgid "Minimum quantity of matching products"
93
  msgstr "Cantidad mínima de productos conformes."
94
 
95
- #: includes/admin/wjecf-admin.php:191 includes/admin/wjecf-admin.php:211
96
  msgid "No minimum"
97
  msgstr "Sin mínimo"
98
 
99
- #: includes/admin/wjecf-admin.php:192
100
  msgid ""
101
  "Minimum quantity of the products that match the given product or category "
102
  "restrictions (see tab 'usage restriction'). If no product or category "
103
  "restrictions are specified, the total number of products is used."
104
  msgstr "Cantidad mínima de productos conformes (vea 'Restricción de uso')."
105
 
106
- #: includes/admin/wjecf-admin.php:200
107
  msgid "Maximum quantity of matching products"
108
  msgstr "Cantidad máxima de productos conformes."
109
 
110
- #: includes/admin/wjecf-admin.php:201 includes/admin/wjecf-admin.php:221
111
  msgid "No maximum"
112
  msgstr "Sin máximo"
113
 
114
- #: includes/admin/wjecf-admin.php:202
115
  msgid ""
116
  "Maximum quantity of the products that match the given product or category "
117
  "restrictions (see tab 'usage restriction'). If no product or category "
118
  "restrictions are specified, the total number of products is used."
119
  msgstr "Cantidad máxima de productos conformes (vea 'Restricción de uso')."
120
 
121
- #: includes/admin/wjecf-admin.php:210
122
  msgid "Minimum subtotal of matching products"
123
  msgstr "Subtotal mínimo de productos conformes."
124
 
125
- #: includes/admin/wjecf-admin.php:212
126
  msgid ""
127
  "Minimum price subtotal of the products that match the given product or "
128
  "category restrictions (see tab 'usage restriction')."
129
  msgstr "Subtotal mínimo de productos conformes (vea 'Restricción de uso')."
130
 
131
- #: includes/admin/wjecf-admin.php:220
132
  msgid "Maximum subtotal of matching products"
133
  msgstr "Subtotal máximo de productos conformes."
134
 
135
- #: includes/admin/wjecf-admin.php:222
136
  msgid ""
137
  "Maximum price subtotal of the products that match the given product or "
138
  "category restrictions (see tab 'usage restriction')."
139
  msgstr "Subtotal máximo de productos conformes (vea 'Restricción de uso')."
140
 
141
- #: includes/admin/wjecf-admin.php:235
142
  msgid "Shipping methods"
143
  msgstr "Métodos de envío"
144
 
145
- #: includes/admin/wjecf-admin.php:236
146
  msgid "Any shipping method"
147
  msgstr "Métodos de envío"
148
 
149
- #: includes/admin/wjecf-admin.php:245
150
  msgid ""
151
  "One of these shipping methods must be selected in order for this coupon to "
152
  "be valid."
153
  msgstr ""
154
  "Uno de estos métodos de pago tiene que ser seleccionado para usar este cupón."
155
 
156
- #: includes/admin/wjecf-admin.php:251
157
  msgid "Payment methods"
158
  msgstr "Métodos de pago"
159
 
160
- #: includes/admin/wjecf-admin.php:252
161
  msgid "Any payment method"
162
  msgstr "Métodos de pago"
163
 
164
- #: includes/admin/wjecf-admin.php:263
165
  msgid ""
166
  "One of these payment methods must be selected in order for this coupon to be "
167
  "valid."
@@ -169,11 +190,11 @@ msgstr ""
169
  "Uno de estos métodos de envío tiene que ser seleccionado para usar este "
170
  "cupón."
171
 
172
- #: includes/admin/wjecf-admin.php:271
173
  msgid "Customer restrictions"
174
  msgstr "Restricción de clientes"
175
 
176
- #: includes/admin/wjecf-admin.php:272
177
  msgid ""
178
  "If both a customer and a role restriction are supplied, matching either one "
179
  "of them will suffice."
@@ -181,55 +202,58 @@ msgstr ""
181
  "Si se ha introducido tanto una restricción de cliente como una restricción "
182
  "de perfil, sí coincide uno de ellos será suficiente."
183
 
184
- #: includes/admin/wjecf-admin.php:277
185
  msgid "Allowed Customers"
186
  msgstr "Clientes"
187
 
188
- #: includes/admin/wjecf-admin.php:278
189
  msgid "Any customer"
190
  msgstr "Clientes"
191
 
192
- #: includes/admin/wjecf-admin.php:291
193
  msgid "Only these customers may use this coupon."
194
  msgstr "Solo estos clientes pueden usar este cupón."
195
 
196
- #: includes/admin/wjecf-admin.php:298
197
  msgid "Allowed User Roles"
198
  msgstr "Perfiles del cliente"
199
 
200
- #: includes/admin/wjecf-admin.php:299 includes/admin/wjecf-admin.php:321
201
  msgid "Any role"
202
  msgstr "Perfiles del cliente"
203
 
204
- #: includes/admin/wjecf-admin.php:313
205
  msgid "Only these User Roles may use this coupon."
206
  msgstr "Solo clientes con este perfil pueden usar este cupón."
207
 
208
- #: includes/admin/wjecf-admin.php:320
209
  msgid "Disallowed User Roles"
210
  msgstr "Perfiles del cliente excluidos"
211
 
212
- #: includes/admin/wjecf-admin.php:334
213
  msgid "These User Roles will be specifically excluded from using this coupon."
214
  msgstr "Clientes con este perfil no pueden usar este cupón."
215
 
216
- #: includes/admin/wjecf-admin.php:345
217
  msgid "Allow when minimum spend not reached"
218
  msgstr ""
219
 
220
- #: includes/admin/wjecf-admin.php:346 includes/wjecf-pro-controller.php:74
221
- #: includes/wjecf-pro-free-products.php:474
222
- #: includes/wjecf-pro-free-products.php:482
223
  msgid "EXPERIMENTAL: "
224
  msgstr "EXPERIMENTAL:"
225
 
226
- #: includes/admin/wjecf-admin.php:346
227
  msgid ""
228
  "Check this box to allow the coupon to be in the cart even when minimum spend "
229
  "(see tab 'usage restriction') is not reached. Value of the discount will be "
230
  "0 until minimum spend is reached."
231
  msgstr ""
232
 
 
 
 
 
233
  #: includes/wjecf-autocoupon.php:58 includes/wjecf-autocoupon.php:130
234
  #: includes/wjecf-autocoupon.php:137
235
  msgid "Auto coupon"
@@ -285,138 +309,237 @@ msgstr "Aplicar sin mensaje"
285
  msgid "Don't display a message when this coupon is automatically applied."
286
  msgstr "No mostrar mensaje cuando el cupon esté aplicado automaticamente."
287
 
288
- #: includes/wjecf-autocoupon.php:266
 
 
 
 
 
 
289
  msgid "Free shipping coupon"
290
  msgstr "Cupón para envío gratis"
291
 
292
- #: includes/wjecf-autocoupon.php:422
293
  #, php-format
294
  msgid "Discount applied: %s"
295
  msgstr "Descuento aplicado: %s"
296
 
297
- #: includes/wjecf-controller.php:162
298
  #, php-format
299
  msgid "The minimum subtotal of the matching products for this coupon is %s."
300
  msgstr "El subtotal mínimo de los productos conformes para este cupón es %s."
301
 
302
- #: includes/wjecf-controller.php:166
303
  #, php-format
304
  msgid "The maximum subtotal of the matching products for this coupon is %s."
305
  msgstr "El subtotal máximo de los productos conformes para este cupón es %s."
306
 
307
- #: includes/wjecf-controller.php:170
308
  #, php-format
309
  msgid "The minimum quantity of matching products for this coupon is %s."
310
  msgstr "La cantidad mínima de productos conformes para este cupón es %s."
311
 
312
- #: includes/wjecf-controller.php:174
313
  #, php-format
314
  msgid "The maximum quantity of matching products for this coupon is %s."
315
  msgstr "La cantidad máxima de productos conformes para este cupón es %s."
316
 
317
- #: includes/wjecf-controller.php:177
318
  msgid "The coupon is not valid for the currently selected shipping method."
319
  msgstr "El cupón no es válido para este método de envío."
320
 
321
- #: includes/wjecf-controller.php:180
322
  msgid "The coupon is not valid for the currently selected payment method."
323
  msgstr "El cupón no es válido para este método de pago."
324
 
325
- #: includes/wjecf-controller.php:183
326
  #, php-format
327
  msgid "Sorry, it seems the coupon \"%s\" is not yours."
328
  msgstr "Lo sentimos, parece que el cupón \"%s\" no es tuyo."
329
 
330
- #: includes/wjecf-pro-controller.php:50 includes/wjecf-pro-controller.php:55
 
 
 
 
 
 
 
 
 
 
 
 
 
 
331
  msgid "Limit discount to"
332
  msgstr "Limitar descuento a"
333
 
334
- #: includes/wjecf-pro-controller.php:61
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
335
  msgid ""
336
  "Please note that when the discount type is 'Product discount' (see 'General'-"
337
  "tab), the discount will only be applied to <em>matching</em> products."
338
  msgstr ""
339
 
340
- #: includes/wjecf-pro-controller.php:67
341
- msgid "Discount on cart with excluded products"
342
  msgstr ""
343
 
344
- #: includes/wjecf-pro-controller.php:73
345
- msgid "Allow discount on cart with excluded items"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
346
  msgstr ""
347
 
348
- #: includes/wjecf-pro-controller.php:75
 
 
 
 
349
  msgid ""
350
- "Check this box to allow a 'Cart Discount' coupon to be applied even when "
351
- "excluded items are in the cart (see tab 'usage restriction')."
352
  msgstr ""
353
 
354
  #: includes/wjecf-pro-free-products.php:80
355
  msgid "Please select your free gift."
356
  msgstr "Elije tu regalo."
357
 
358
- #: includes/wjecf-pro-free-products.php:337
359
- #: includes/wjecf-pro-free-products.php:347
360
  msgid "Free!"
361
  msgstr "Gratis!"
362
 
363
- #: includes/wjecf-pro-free-products.php:412
364
- #: includes/wjecf-pro-free-products.php:435
365
- #: includes/wjecf-pro-free-products.php:441
366
  msgid "Free products"
367
  msgstr "Productos gratis"
368
 
369
- #: includes/wjecf-pro-free-products.php:446
370
  msgid ""
371
  "Free products that will be added to the cart when this coupon is applied."
372
- msgstr ""
373
 
374
- #: includes/wjecf-pro-free-products.php:453
375
  msgid "Select one"
376
  msgstr "Elejir uno"
377
 
378
- #: includes/wjecf-pro-free-products.php:454
379
  msgid "Check this box if the customer must choose from the free products."
380
  msgstr ""
 
 
381
 
382
- #: includes/wjecf-pro-free-products.php:462
383
  msgid "'Select your gift'-message"
384
  msgstr "Mensaje 'Elije tu regalo'"
385
 
386
- #: includes/wjecf-pro-free-products.php:463
387
  msgid "Please choose your free gift:"
388
  msgstr "Elije tu regalo:"
389
 
390
- #: includes/wjecf-pro-free-products.php:464
391
  msgid "This message is displayed when the customer must choose a free product."
392
  msgstr ""
393
 
394
- #: includes/wjecf-pro-free-products.php:473
395
  msgid "Allow multiplication of the free products"
396
- msgstr ""
397
 
398
- #: includes/wjecf-pro-free-products.php:474
399
  msgid ""
400
  "The amount of free products is multiplied every time the minimum spend, "
401
  "subtotal or quantity is reached."
402
  msgstr ""
403
 
404
- #: includes/wjecf-pro-free-products.php:481
405
  msgid "BOGO matching products"
406
  msgstr "1+1 gratis para los productos conformes"
407
 
408
- #: includes/wjecf-pro-free-products.php:483
409
  msgid ""
410
  "Buy one or more of any of the matching products (see 'Usage Restriction'-"
411
  "tab) and get one free. Check 'Allow multiplication' to get one free item for "
412
  "every matching item in the cart."
413
  msgstr ""
 
 
 
414
 
415
- #: includes/wjecf-pro-free-products.php:497
416
- msgid "Search for a product…"
417
- msgstr "Buscar producto..."
418
-
419
- #: woocommerce-jos-autocoupon-pro.php:33
420
  msgid ""
421
  "WooCommerce Extended Coupon Features is disabled because WooCommerce could "
422
  "not be detected."
5
  "Project-Id-Version: WooCommerce auto added coupons 1.1.3.1\n"
6
  "Report-Msgid-Bugs-To: http://wordpress.org/support/plugin/woocommerce-auto-"
7
  "added-coupons\n"
8
+ "POT-Creation-Date: 2016-05-14 13:07+0200\n"
9
+ "PO-Revision-Date: 2016-05-14 13:15+0200\n"
10
  "Last-Translator: \n"
11
  "Language-Team: \n"
12
  "Language: es_ES\n"
18
  "X-Poedit-Basepath: C:/lamp/www/qrvm_woo/wp-content/plugins\n"
19
  "X-Poedit-SearchPath-0: woocommerce-auto-added-coupons\n"
20
 
21
+ #: includes/admin/wjecf-admin-auto-upgrade.php:36
22
+ msgid ""
23
+ "<strong>WooCommerce Extended Coupon Features:</strong> Please note, you're "
24
+ "using an older version of this plugin, while the data was upgraded to a "
25
+ "newer version."
26
+ msgstr ""
27
+
28
+ #: includes/admin/wjecf-admin-auto-upgrade.php:44
29
+ msgid ""
30
+ "<strong>WooCommerce Extended Coupon Features:</strong> Data succesfully "
31
+ "upgraded to the newest version."
32
+ msgstr ""
33
+
34
+ #: includes/admin/wjecf-admin.php:19
35
+ msgid ""
36
+ "<strong>WooCommerce Extended Coupon Features:</strong> You are using a "
37
+ "WooCommerce version prior to 2.3.0. Updating of WooCommerce is recommended "
38
+ "as using an outdated version might cause unexpected behaviour in combination "
39
+ "with modern plugins."
40
+ msgstr ""
41
+
42
+ #: includes/admin/wjecf-admin.php:68
43
+ msgid "Products"
44
+ msgstr "Productos"
45
+
46
+ #: includes/admin/wjecf-admin.php:74 includes/admin/wjecf-admin.php:235
47
+ msgid "Checkout"
48
+ msgstr "Tramitar"
49
+
50
+ #: includes/admin/wjecf-admin.php:80 includes/admin/wjecf-admin.php:345
51
+ msgid "Miscellaneous"
52
+ msgstr "Diversos"
53
+
54
+ #: includes/admin/wjecf-admin.php:123
55
  msgid "Do you find WooCommerce Extended Coupon Features useful?"
56
  msgstr "Le gusta WooCommerce Extended Coupon Features?"
57
 
58
+ #: includes/admin/wjecf-admin.php:125
59
  msgid "Express your gratitude"
60
  msgstr "Exprese su gratitud"
61
 
62
+ #: includes/admin/wjecf-admin.php:129
63
  msgid "Donate to the developer"
64
  msgstr "Hacer una donación"
65
 
66
+ #: includes/admin/wjecf-admin.php:136
67
  msgid "Documentation"
68
  msgstr "Documentación"
69
 
70
+ #: includes/admin/wjecf-admin.php:138
71
  msgid "WooCommerce Extended Coupon Features Documentation"
72
  msgstr "Documentación de WooCommerce Extended Coupon Features"
73
 
74
+ #: includes/admin/wjecf-admin.php:146
 
 
 
 
 
 
 
 
 
 
 
 
75
  msgid "Matching products"
76
  msgstr "Productos conformes"
77
 
78
+ #: includes/admin/wjecf-admin.php:151
79
  msgid "AND Products (not OR)"
80
  msgstr "TODOS los productos"
81
 
82
+ #: includes/admin/wjecf-admin.php:152
83
  msgid ""
84
  "Check this box if ALL of the products (see tab 'usage restriction') must be "
85
  "in the cart to use this coupon (instead of only one of the products)."
87
  "Marque esta casilla si TODOS los productos (vea 'Restricción de uso') "
88
  "necesitan estar en el carrito de compras (en lugar de uno de los productos)."
89
 
90
+ #: includes/admin/wjecf-admin.php:159
91
  msgid "AND Categories (not OR)"
92
  msgstr "TODAS las categorias"
93
 
94
+ #: includes/admin/wjecf-admin.php:160
95
  msgid ""
96
  "Check this box if products from ALL of the categories (see tab 'usage "
97
  "restriction') must be in the cart to use this coupon (instead of only one "
101
  "de uso') necesitan estar en el carrito de compras (en lugar de un producto "
102
  "de uno de los productos)."
103
 
104
+ #: includes/admin/wjecf-admin.php:165
105
  msgid "(AND)"
106
  msgstr "(TODOS)"
107
 
108
+ #: includes/admin/wjecf-admin.php:166
109
  msgid "(OR)"
110
  msgstr "(UNO)"
111
 
112
+ #: includes/admin/wjecf-admin.php:195
113
  msgid "Minimum quantity of matching products"
114
  msgstr "Cantidad mínima de productos conformes."
115
 
116
+ #: includes/admin/wjecf-admin.php:196 includes/admin/wjecf-admin.php:216
117
  msgid "No minimum"
118
  msgstr "Sin mínimo"
119
 
120
+ #: includes/admin/wjecf-admin.php:197
121
  msgid ""
122
  "Minimum quantity of the products that match the given product or category "
123
  "restrictions (see tab 'usage restriction'). If no product or category "
124
  "restrictions are specified, the total number of products is used."
125
  msgstr "Cantidad mínima de productos conformes (vea 'Restricción de uso')."
126
 
127
+ #: includes/admin/wjecf-admin.php:205
128
  msgid "Maximum quantity of matching products"
129
  msgstr "Cantidad máxima de productos conformes."
130
 
131
+ #: includes/admin/wjecf-admin.php:206 includes/admin/wjecf-admin.php:226
132
  msgid "No maximum"
133
  msgstr "Sin máximo"
134
 
135
+ #: includes/admin/wjecf-admin.php:207
136
  msgid ""
137
  "Maximum quantity of the products that match the given product or category "
138
  "restrictions (see tab 'usage restriction'). If no product or category "
139
  "restrictions are specified, the total number of products is used."
140
  msgstr "Cantidad máxima de productos conformes (vea 'Restricción de uso')."
141
 
142
+ #: includes/admin/wjecf-admin.php:215
143
  msgid "Minimum subtotal of matching products"
144
  msgstr "Subtotal mínimo de productos conformes."
145
 
146
+ #: includes/admin/wjecf-admin.php:217
147
  msgid ""
148
  "Minimum price subtotal of the products that match the given product or "
149
  "category restrictions (see tab 'usage restriction')."
150
  msgstr "Subtotal mínimo de productos conformes (vea 'Restricción de uso')."
151
 
152
+ #: includes/admin/wjecf-admin.php:225
153
  msgid "Maximum subtotal of matching products"
154
  msgstr "Subtotal máximo de productos conformes."
155
 
156
+ #: includes/admin/wjecf-admin.php:227
157
  msgid ""
158
  "Maximum price subtotal of the products that match the given product or "
159
  "category restrictions (see tab 'usage restriction')."
160
  msgstr "Subtotal máximo de productos conformes (vea 'Restricción de uso')."
161
 
162
+ #: includes/admin/wjecf-admin.php:240
163
  msgid "Shipping methods"
164
  msgstr "Métodos de envío"
165
 
166
+ #: includes/admin/wjecf-admin.php:241
167
  msgid "Any shipping method"
168
  msgstr "Métodos de envío"
169
 
170
+ #: includes/admin/wjecf-admin.php:250
171
  msgid ""
172
  "One of these shipping methods must be selected in order for this coupon to "
173
  "be valid."
174
  msgstr ""
175
  "Uno de estos métodos de pago tiene que ser seleccionado para usar este cupón."
176
 
177
+ #: includes/admin/wjecf-admin.php:256
178
  msgid "Payment methods"
179
  msgstr "Métodos de pago"
180
 
181
+ #: includes/admin/wjecf-admin.php:257
182
  msgid "Any payment method"
183
  msgstr "Métodos de pago"
184
 
185
+ #: includes/admin/wjecf-admin.php:268
186
  msgid ""
187
  "One of these payment methods must be selected in order for this coupon to be "
188
  "valid."
190
  "Uno de estos métodos de envío tiene que ser seleccionado para usar este "
191
  "cupón."
192
 
193
+ #: includes/admin/wjecf-admin.php:276
194
  msgid "Customer restrictions"
195
  msgstr "Restricción de clientes"
196
 
197
+ #: includes/admin/wjecf-admin.php:277
198
  msgid ""
199
  "If both a customer and a role restriction are supplied, matching either one "
200
  "of them will suffice."
202
  "Si se ha introducido tanto una restricción de cliente como una restricción "
203
  "de perfil, sí coincide uno de ellos será suficiente."
204
 
205
+ #: includes/admin/wjecf-admin.php:282
206
  msgid "Allowed Customers"
207
  msgstr "Clientes"
208
 
209
+ #: includes/admin/wjecf-admin.php:283
210
  msgid "Any customer"
211
  msgstr "Clientes"
212
 
213
+ #: includes/admin/wjecf-admin.php:296
214
  msgid "Only these customers may use this coupon."
215
  msgstr "Solo estos clientes pueden usar este cupón."
216
 
217
+ #: includes/admin/wjecf-admin.php:303
218
  msgid "Allowed User Roles"
219
  msgstr "Perfiles del cliente"
220
 
221
+ #: includes/admin/wjecf-admin.php:304 includes/admin/wjecf-admin.php:326
222
  msgid "Any role"
223
  msgstr "Perfiles del cliente"
224
 
225
+ #: includes/admin/wjecf-admin.php:318
226
  msgid "Only these User Roles may use this coupon."
227
  msgstr "Solo clientes con este perfil pueden usar este cupón."
228
 
229
+ #: includes/admin/wjecf-admin.php:325
230
  msgid "Disallowed User Roles"
231
  msgstr "Perfiles del cliente excluidos"
232
 
233
+ #: includes/admin/wjecf-admin.php:339
234
  msgid "These User Roles will be specifically excluded from using this coupon."
235
  msgstr "Clientes con este perfil no pueden usar este cupón."
236
 
237
+ #: includes/admin/wjecf-admin.php:350
238
  msgid "Allow when minimum spend not reached"
239
  msgstr ""
240
 
241
+ #: includes/admin/wjecf-admin.php:351 includes/wjecf-pro-free-products.php:481
242
+ #: includes/wjecf-pro-free-products.php:489
 
243
  msgid "EXPERIMENTAL: "
244
  msgstr "EXPERIMENTAL:"
245
 
246
+ #: includes/admin/wjecf-admin.php:351
247
  msgid ""
248
  "Check this box to allow the coupon to be in the cart even when minimum spend "
249
  "(see tab 'usage restriction') is not reached. Value of the discount will be "
250
  "0 until minimum spend is reached."
251
  msgstr ""
252
 
253
+ #: includes/admin/wjecf-admin.php:398 includes/admin/wjecf-admin.php:423
254
+ msgid "Search for a product…"
255
+ msgstr "Buscar producto..."
256
+
257
  #: includes/wjecf-autocoupon.php:58 includes/wjecf-autocoupon.php:130
258
  #: includes/wjecf-autocoupon.php:137
259
  msgid "Auto coupon"
309
  msgid "Don't display a message when this coupon is automatically applied."
310
  msgstr "No mostrar mensaje cuando el cupon esté aplicado automaticamente."
311
 
312
+ #: includes/wjecf-autocoupon.php:240
313
+ #, php-format
314
+ msgid "Coupon '%s' will be applied when it's conditions are met."
315
+ msgstr ""
316
+ "Cupón '%s' se aplicará automaticamente cuando cumpla con los requisitos."
317
+
318
+ #: includes/wjecf-autocoupon.php:306
319
  msgid "Free shipping coupon"
320
  msgstr "Cupón para envío gratis"
321
 
322
+ #: includes/wjecf-autocoupon.php:381 includes/wjecf-autocoupon.php:415
323
  #, php-format
324
  msgid "Discount applied: %s"
325
  msgstr "Descuento aplicado: %s"
326
 
327
+ #: includes/wjecf-controller.php:169
328
  #, php-format
329
  msgid "The minimum subtotal of the matching products for this coupon is %s."
330
  msgstr "El subtotal mínimo de los productos conformes para este cupón es %s."
331
 
332
+ #: includes/wjecf-controller.php:173
333
  #, php-format
334
  msgid "The maximum subtotal of the matching products for this coupon is %s."
335
  msgstr "El subtotal máximo de los productos conformes para este cupón es %s."
336
 
337
+ #: includes/wjecf-controller.php:177
338
  #, php-format
339
  msgid "The minimum quantity of matching products for this coupon is %s."
340
  msgstr "La cantidad mínima de productos conformes para este cupón es %s."
341
 
342
+ #: includes/wjecf-controller.php:181
343
  #, php-format
344
  msgid "The maximum quantity of matching products for this coupon is %s."
345
  msgstr "La cantidad máxima de productos conformes para este cupón es %s."
346
 
347
+ #: includes/wjecf-controller.php:184
348
  msgid "The coupon is not valid for the currently selected shipping method."
349
  msgstr "El cupón no es válido para este método de envío."
350
 
351
+ #: includes/wjecf-controller.php:187
352
  msgid "The coupon is not valid for the currently selected payment method."
353
  msgstr "El cupón no es válido para este método de pago."
354
 
355
+ #: includes/wjecf-controller.php:190
356
  #, php-format
357
  msgid "Sorry, it seems the coupon \"%s\" is not yours."
358
  msgstr "Lo sentimos, parece que el cupón \"%s\" no es tuyo."
359
 
360
+ #: includes/wjecf-pro-controller.php:59
361
+ msgid "Discount on cart with excluded products"
362
+ msgstr ""
363
+
364
+ #: includes/wjecf-pro-controller.php:65
365
+ msgid "Allow discount on cart with excluded items"
366
+ msgstr ""
367
+
368
+ #: includes/wjecf-pro-controller.php:66
369
+ msgid ""
370
+ "Check this box to allow a 'Cart Discount' coupon to be applied even when "
371
+ "excluded items are in the cart (see tab 'usage restriction')."
372
+ msgstr ""
373
+
374
+ #: includes/wjecf-pro-controller.php:77 includes/wjecf-pro-controller.php:83
375
  msgid "Limit discount to"
376
  msgstr "Limitar descuento a"
377
 
378
+ #: includes/wjecf-pro-controller.php:78
379
+ msgid ""
380
+ "Here you can exclude certain products from being discounted (Only applies to "
381
+ "Cart % Discount, Product Discount, Product % Discount)"
382
+ msgstr ""
383
+
384
+ #: includes/wjecf-pro-controller.php:85
385
+ msgid "(default)"
386
+ msgstr ""
387
+
388
+ #: includes/wjecf-pro-controller.php:86
389
+ msgid "One item per order line"
390
+ msgstr ""
391
+
392
+ #: includes/wjecf-pro-controller.php:87
393
+ msgid "Lowest priced product (single item)"
394
+ msgstr ""
395
+
396
+ #: includes/wjecf-pro-controller.php:88
397
+ msgid "Lowest priced order line (all items)"
398
+ msgstr ""
399
+
400
+ #: includes/wjecf-pro-controller.php:90
401
  msgid ""
402
  "Please note that when the discount type is 'Product discount' (see 'General'-"
403
  "tab), the discount will only be applied to <em>matching</em> products."
404
  msgstr ""
405
 
406
+ #: includes/wjecf-pro-evalmath.php:735
407
+ msgid "an unexpected error occured"
408
  msgstr ""
409
 
410
+ #: includes/wjecf-pro-evalmath.php:736
411
+ msgid "cannot assign to constant '{$a}'"
412
+ msgstr ""
413
+
414
+ #: includes/wjecf-pro-evalmath.php:737
415
+ msgid "cannot assign to readonly '{$a}'"
416
+ msgstr ""
417
+
418
+ #: includes/wjecf-pro-evalmath.php:738
419
+ msgid "cannot redefine built-in function '{$a}()'"
420
+ msgstr ""
421
+
422
+ #: includes/wjecf-pro-evalmath.php:739
423
+ msgid "division by zero"
424
+ msgstr ""
425
+
426
+ #: includes/wjecf-pro-evalmath.php:740
427
+ msgid "expecting a closing bracket"
428
+ msgstr ""
429
+
430
+ #: includes/wjecf-pro-evalmath.php:741
431
+ msgid "illegal character '{$a}'"
432
+ msgstr ""
433
+
434
+ #: includes/wjecf-pro-evalmath.php:742
435
+ msgid "illegal character '_'"
436
+ msgstr ""
437
+
438
+ #: includes/wjecf-pro-evalmath.php:743
439
+ msgid "expecting operator, implicit multiplication not allowed."
440
+ msgstr ""
441
+
442
+ #: includes/wjecf-pro-evalmath.php:744
443
+ msgid "internal error"
444
+ msgstr ""
445
+
446
+ #: includes/wjecf-pro-evalmath.php:745
447
+ msgid "operator '{$a}' lacks operand"
448
+ msgstr ""
449
+
450
+ #: includes/wjecf-pro-evalmath.php:746
451
+ msgid "undefined variable '{$a}'"
452
+ msgstr ""
453
+
454
+ #: includes/wjecf-pro-evalmath.php:747
455
+ msgid "undefined variable '{$a}' in function definition"
456
+ msgstr ""
457
+
458
+ #: includes/wjecf-pro-evalmath.php:748
459
+ msgid "unexpected closing bracket"
460
+ msgstr ""
461
+
462
+ #: includes/wjecf-pro-evalmath.php:749
463
+ msgid "unexpected comma"
464
  msgstr ""
465
 
466
+ #: includes/wjecf-pro-evalmath.php:750
467
+ msgid "unexpected operator '{$a}'"
468
+ msgstr ""
469
+
470
+ #: includes/wjecf-pro-evalmath.php:751
471
  msgid ""
472
+ "wrong number of arguments for function '{$a->function}()' ({$a->given} "
473
+ "given, {$a->expected} expected)"
474
  msgstr ""
475
 
476
  #: includes/wjecf-pro-free-products.php:80
477
  msgid "Please select your free gift."
478
  msgstr "Elije tu regalo."
479
 
480
+ #: includes/wjecf-pro-free-products.php:344
481
+ #: includes/wjecf-pro-free-products.php:354
482
  msgid "Free!"
483
  msgstr "Gratis!"
484
 
485
+ #: includes/wjecf-pro-free-products.php:419
486
+ #: includes/wjecf-pro-free-products.php:442
487
+ #: includes/wjecf-pro-free-products.php:448
488
  msgid "Free products"
489
  msgstr "Productos gratis"
490
 
491
+ #: includes/wjecf-pro-free-products.php:453
492
  msgid ""
493
  "Free products that will be added to the cart when this coupon is applied."
494
+ msgstr "Productos gratuitos que serán aumentado al carrito."
495
 
496
+ #: includes/wjecf-pro-free-products.php:460
497
  msgid "Select one"
498
  msgstr "Elejir uno"
499
 
500
+ #: includes/wjecf-pro-free-products.php:461
501
  msgid "Check this box if the customer must choose from the free products."
502
  msgstr ""
503
+ "Marque esta casilla si el cliente tiene que escojer uno de los productos "
504
+ "gratuitos."
505
 
506
+ #: includes/wjecf-pro-free-products.php:469
507
  msgid "'Select your gift'-message"
508
  msgstr "Mensaje 'Elije tu regalo'"
509
 
510
+ #: includes/wjecf-pro-free-products.php:470
511
  msgid "Please choose your free gift:"
512
  msgstr "Elije tu regalo:"
513
 
514
+ #: includes/wjecf-pro-free-products.php:471
515
  msgid "This message is displayed when the customer must choose a free product."
516
  msgstr ""
517
 
518
+ #: includes/wjecf-pro-free-products.php:480
519
  msgid "Allow multiplication of the free products"
520
+ msgstr "Multiplicar los productos gratuitos"
521
 
522
+ #: includes/wjecf-pro-free-products.php:481
523
  msgid ""
524
  "The amount of free products is multiplied every time the minimum spend, "
525
  "subtotal or quantity is reached."
526
  msgstr ""
527
 
528
+ #: includes/wjecf-pro-free-products.php:488
529
  msgid "BOGO matching products"
530
  msgstr "1+1 gratis para los productos conformes"
531
 
532
+ #: includes/wjecf-pro-free-products.php:490
533
  msgid ""
534
  "Buy one or more of any of the matching products (see 'Usage Restriction'-"
535
  "tab) and get one free. Check 'Allow multiplication' to get one free item for "
536
  "every matching item in the cart."
537
  msgstr ""
538
+ "Cuando el cliente compra uno o más de los productos conformes, recibirá uno "
539
+ "gratis. Marque la casilla 'multiplicar los productos gratuitos' para "
540
+ "multiplicar con la cantidad de productos conformes en el carritos de compras."
541
 
542
+ #: woocommerce-jos-autocoupon-pro.php:34
 
 
 
 
543
  msgid ""
544
  "WooCommerce Extended Coupon Features is disabled because WooCommerce could "
545
  "not be detected."
languages/woocommerce-jos-autocoupon-nl_NL.mo CHANGED
Binary file
languages/woocommerce-jos-autocoupon-nl_NL.po CHANGED
@@ -5,8 +5,8 @@ msgstr ""
5
  "Project-Id-Version: WooCommerce auto added coupons 1.1.3.1\n"
6
  "Report-Msgid-Bugs-To: http://wordpress.org/support/plugin/woocommerce-auto-"
7
  "added-coupons\n"
8
- "POT-Creation-Date: 2016-03-28 21:28+0200\n"
9
- "PO-Revision-Date: 2016-03-28 21:30+0200\n"
10
  "Last-Translator: \n"
11
  "Language-Team: \n"
12
  "Language: nl_NL\n"
@@ -18,47 +18,75 @@ msgstr ""
18
  "X-Poedit-Basepath: ..\n"
19
  "X-Poedit-SearchPath-0: .\n"
20
 
21
- #: includes/admin/wjecf-admin.php:94
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
22
  msgid "Do you find WooCommerce Extended Coupon Features useful?"
23
  msgstr "Vindt u WooCommerce Extended Coupon Features handig?"
24
 
25
- #: includes/admin/wjecf-admin.php:96
26
  msgid "Express your gratitude"
27
  msgstr "Toon uw waardering"
28
 
29
- #: includes/admin/wjecf-admin.php:100
30
  msgid "Donate to the developer"
31
  msgstr "Doneer aan de ontwikkelaar"
32
 
33
- #: includes/admin/wjecf-admin.php:107
34
  msgid "Documentation"
35
  msgstr "Documentatie"
36
 
37
- #: includes/admin/wjecf-admin.php:109
38
  msgid "WooCommerce Extended Coupon Features Documentation"
39
  msgstr "WooCommerce Extended Coupon Features Documentatie"
40
 
41
- #: includes/admin/wjecf-admin.php:117
42
- msgid "Products"
43
- msgstr "Producten"
44
-
45
- #: includes/admin/wjecf-admin.php:123 includes/admin/wjecf-admin.php:230
46
- msgid "Checkout"
47
- msgstr "Afrekenen"
48
-
49
- #: includes/admin/wjecf-admin.php:129 includes/admin/wjecf-admin.php:340
50
- msgid "Miscellaneous"
51
- msgstr "Diversen"
52
-
53
- #: includes/admin/wjecf-admin.php:141
54
  msgid "Matching products"
55
  msgstr "Overeenkomende producten"
56
 
57
- #: includes/admin/wjecf-admin.php:146
58
  msgid "AND Products (not OR)"
59
  msgstr "ALLE Producten (niet OF)"
60
 
61
- #: includes/admin/wjecf-admin.php:147
62
  msgid ""
63
  "Check this box if ALL of the products (see tab 'usage restriction') must be "
64
  "in the cart to use this coupon (instead of only one of the products)."
@@ -67,11 +95,11 @@ msgstr ""
67
  "winkelwagen moeten zitten om deze kortingsbon te kunnen gebruiken (in plaats "
68
  "van één van de producten)."
69
 
70
- #: includes/admin/wjecf-admin.php:154
71
  msgid "AND Categories (not OR)"
72
  msgstr "ALLE Categorieën (niet OF)"
73
 
74
- #: includes/admin/wjecf-admin.php:155
75
  msgid ""
76
  "Check this box if products from ALL of the categories (see tab 'usage "
77
  "restriction') must be in the cart to use this coupon (instead of only one "
@@ -81,23 +109,23 @@ msgstr ""
81
  "in de winkelwagen moeten zitten om deze kortingsbon te kunnen gebruiken (in "
82
  "plaats van een product van één van de categorieën)."
83
 
84
- #: includes/admin/wjecf-admin.php:160
85
  msgid "(AND)"
86
  msgstr "(ALLE)"
87
 
88
- #: includes/admin/wjecf-admin.php:161
89
  msgid "(OR)"
90
  msgstr "(OF)"
91
 
92
- #: includes/admin/wjecf-admin.php:190
93
  msgid "Minimum quantity of matching products"
94
  msgstr "Minimum aantal overeengekomen producten"
95
 
96
- #: includes/admin/wjecf-admin.php:191 includes/admin/wjecf-admin.php:211
97
  msgid "No minimum"
98
  msgstr "Geen minimum"
99
 
100
- #: includes/admin/wjecf-admin.php:192
101
  msgid ""
102
  "Minimum quantity of the products that match the given product or category "
103
  "restrictions (see tab 'usage restriction'). If no product or category "
@@ -107,15 +135,15 @@ msgstr ""
107
  "(zie tab 'gebruiksbeperkingen'). Als geen product- of categorierestrictie is "
108
  "opgegeven worden alle producten in de winkelwagen geteld."
109
 
110
- #: includes/admin/wjecf-admin.php:200
111
  msgid "Maximum quantity of matching products"
112
  msgstr "Maximum aantal overeengekomen producten"
113
 
114
- #: includes/admin/wjecf-admin.php:201 includes/admin/wjecf-admin.php:221
115
  msgid "No maximum"
116
  msgstr "Geen maximum"
117
 
118
- #: includes/admin/wjecf-admin.php:202
119
  msgid ""
120
  "Maximum quantity of the products that match the given product or category "
121
  "restrictions (see tab 'usage restriction'). If no product or category "
@@ -125,11 +153,11 @@ msgstr ""
125
  "(zie tab 'gebruiksbeperkingen'). Als geen product- of categorierestrictie is "
126
  "opgegeven worden alle producten in de winkelwagen geteld."
127
 
128
- #: includes/admin/wjecf-admin.php:210
129
  msgid "Minimum subtotal of matching products"
130
  msgstr "Minimum subtotaal overeengekomen producten"
131
 
132
- #: includes/admin/wjecf-admin.php:212
133
  msgid ""
134
  "Minimum price subtotal of the products that match the given product or "
135
  "category restrictions (see tab 'usage restriction')."
@@ -139,11 +167,11 @@ msgstr ""
139
  "product- of categorierestrictie is opgegeven wordt het subtotaal van alle "
140
  "producten in de winkelwagen opgeteld."
141
 
142
- #: includes/admin/wjecf-admin.php:220
143
  msgid "Maximum subtotal of matching products"
144
  msgstr "Maximum subtotaal overeengekomen producten"
145
 
146
- #: includes/admin/wjecf-admin.php:222
147
  msgid ""
148
  "Maximum price subtotal of the products that match the given product or "
149
  "category restrictions (see tab 'usage restriction')."
@@ -153,15 +181,15 @@ msgstr ""
153
  "product- of categorierestrictie is opgegeven wordt het subtotaal van alle "
154
  "producten in de winkelwagen opgeteld."
155
 
156
- #: includes/admin/wjecf-admin.php:235
157
  msgid "Shipping methods"
158
  msgstr "Verzendmethoden"
159
 
160
- #: includes/admin/wjecf-admin.php:236
161
  msgid "Any shipping method"
162
  msgstr "Verzendmethoden"
163
 
164
- #: includes/admin/wjecf-admin.php:245
165
  msgid ""
166
  "One of these shipping methods must be selected in order for this coupon to "
167
  "be valid."
@@ -169,15 +197,15 @@ msgstr ""
169
  "Een van deze verzendmethoden moet gekozen zijn om deze kortingsbon te kunnen "
170
  "gebruiken."
171
 
172
- #: includes/admin/wjecf-admin.php:251
173
  msgid "Payment methods"
174
  msgstr "Betaalmethoden"
175
 
176
- #: includes/admin/wjecf-admin.php:252
177
  msgid "Any payment method"
178
  msgstr "Betaalmethoden"
179
 
180
- #: includes/admin/wjecf-admin.php:263
181
  msgid ""
182
  "One of these payment methods must be selected in order for this coupon to be "
183
  "valid."
@@ -185,11 +213,11 @@ msgstr ""
185
  "Een van deze betaalmethoden moet gekozen zijn om deze kortingsbon te kunnen "
186
  "gebruiken."
187
 
188
- #: includes/admin/wjecf-admin.php:271
189
  msgid "Customer restrictions"
190
  msgstr "Klantbeperkingen"
191
 
192
- #: includes/admin/wjecf-admin.php:272
193
  msgid ""
194
  "If both a customer and a role restriction are supplied, matching either one "
195
  "of them will suffice."
@@ -197,49 +225,48 @@ msgstr ""
197
  "Als zowel een klant- als klantrolrestrictie is opgegeven hoeft slechts aan "
198
  "één van de restricties worden voldaan."
199
 
200
- #: includes/admin/wjecf-admin.php:277
201
  msgid "Allowed Customers"
202
  msgstr "Toegestane klanten"
203
 
204
- #: includes/admin/wjecf-admin.php:278
205
  msgid "Any customer"
206
  msgstr "Klanten"
207
 
208
- #: includes/admin/wjecf-admin.php:291
209
  msgid "Only these customers may use this coupon."
210
  msgstr "Alleen deze klanten kunnen deze kortingsbon gebruiken."
211
 
212
- #: includes/admin/wjecf-admin.php:298
213
  msgid "Allowed User Roles"
214
  msgstr "Toegestane klantrollen"
215
 
216
- #: includes/admin/wjecf-admin.php:299 includes/admin/wjecf-admin.php:321
217
  msgid "Any role"
218
  msgstr "Klantrollen"
219
 
220
- #: includes/admin/wjecf-admin.php:313
221
  msgid "Only these User Roles may use this coupon."
222
  msgstr "Alleen deze klantrollen kunnen deze kortingsbon gebruiken."
223
 
224
- #: includes/admin/wjecf-admin.php:320
225
  msgid "Disallowed User Roles"
226
  msgstr "Uitgesloten klantrollen"
227
 
228
- #: includes/admin/wjecf-admin.php:334
229
  msgid "These User Roles will be specifically excluded from using this coupon."
230
  msgstr "Deze klantrollen zijn uitgesloten om deze kortingsbon te gebruiken."
231
 
232
- #: includes/admin/wjecf-admin.php:345
233
  msgid "Allow when minimum spend not reached"
234
  msgstr "Toestaan wanneer minimale besteding nog niet is behaald."
235
 
236
- #: includes/admin/wjecf-admin.php:346 includes/wjecf-pro-controller.php:74
237
- #: includes/wjecf-pro-free-products.php:474
238
- #: includes/wjecf-pro-free-products.php:482
239
  msgid "EXPERIMENTAL: "
240
  msgstr "EXPERIMENTEEL:"
241
 
242
- #: includes/admin/wjecf-admin.php:346
243
  msgid ""
244
  "Check this box to allow the coupon to be in the cart even when minimum spend "
245
  "(see tab 'usage restriction') is not reached. Value of the discount will be "
@@ -249,6 +276,10 @@ msgstr ""
249
  "besteding nog niet is gehaald. De coupon zal een waarde van 0 hebben tot de "
250
  "minimale besteding is bereikt."
251
 
 
 
 
 
252
  #: includes/wjecf-autocoupon.php:58 includes/wjecf-autocoupon.php:130
253
  #: includes/wjecf-autocoupon.php:137
254
  msgid "Auto coupon"
@@ -306,59 +337,107 @@ msgid "Don't display a message when this coupon is automatically applied."
306
  msgstr ""
307
  "Geen melding weergeven wanneer deze kortingsbon automatisch wordt toegepast."
308
 
309
- #: includes/wjecf-autocoupon.php:266
 
 
 
 
 
 
 
310
  msgid "Free shipping coupon"
311
  msgstr "Gratis verzending kortingsbon"
312
 
313
- #: includes/wjecf-autocoupon.php:422
314
  #, php-format
315
  msgid "Discount applied: %s"
316
  msgstr "Korting toegepast: %s"
317
 
318
- #: includes/wjecf-controller.php:162
319
  #, php-format
320
  msgid "The minimum subtotal of the matching products for this coupon is %s."
321
  msgstr ""
322
  "Het minimale subtotaal van overeengekomen producten voor deze kortingsbon is "
323
  "%s."
324
 
325
- #: includes/wjecf-controller.php:166
326
  #, php-format
327
  msgid "The maximum subtotal of the matching products for this coupon is %s."
328
  msgstr ""
329
  "Het maximale subtotaal van overeengekomen producten voor deze kortingsbon is "
330
  "%s."
331
 
332
- #: includes/wjecf-controller.php:170
333
  #, php-format
334
  msgid "The minimum quantity of matching products for this coupon is %s."
335
  msgstr ""
336
  "Het minimale aantal overeengekomen producten voor deze kortingsbon is %s."
337
 
338
- #: includes/wjecf-controller.php:174
339
  #, php-format
340
  msgid "The maximum quantity of matching products for this coupon is %s."
341
  msgstr ""
342
  "Het maximale aantal overeengekomen producten voor deze kortingsbon is %s."
343
 
344
- #: includes/wjecf-controller.php:177
345
  msgid "The coupon is not valid for the currently selected shipping method."
346
  msgstr "De kortingsbon is niet geldig voor de gekozen verzendmethode."
347
 
348
- #: includes/wjecf-controller.php:180
349
  msgid "The coupon is not valid for the currently selected payment method."
350
  msgstr "De kortingsbon is niet geldig voor de gekozen betaalmethode."
351
 
352
- #: includes/wjecf-controller.php:183
353
  #, php-format
354
  msgid "Sorry, it seems the coupon \"%s\" is not yours."
355
  msgstr "Sorry, het lijkt erop dat kortingsbon \"%s\" niet van u is."
356
 
357
- #: includes/wjecf-pro-controller.php:50 includes/wjecf-pro-controller.php:55
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
358
  msgid "Limit discount to"
359
- msgstr "Limiteer korting tot"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
360
 
361
- #: includes/wjecf-pro-controller.php:61
 
 
 
 
362
  msgid ""
363
  "Please note that when the discount type is 'Product discount' (see 'General'-"
364
  "tab), the discount will only be applied to <em>matching</em> products."
@@ -367,71 +446,124 @@ msgstr ""
367
  "is gekozen, de korting alleen zal worden toegepast op overeengekomen "
368
  "producten."
369
 
370
- #: includes/wjecf-pro-controller.php:67
371
- msgid "Discount on cart with excluded products"
372
- msgstr "Korting op winkelwagen met uitgesloten producten"
373
 
374
- #: includes/wjecf-pro-controller.php:73
375
- msgid "Allow discount on cart with excluded items"
376
- msgstr "Korting toestaan op winkelwagen met uitgesloten producten"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
377
 
378
- #: includes/wjecf-pro-controller.php:75
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
379
  msgid ""
380
- "Check this box to allow a 'Cart Discount' coupon to be applied even when "
381
- "excluded items are in the cart (see tab 'usage restriction')."
382
  msgstr ""
383
- "Aanvinken om een 'Winkelwagen korting'-coupon ook te accepteren als er "
384
- "uitgesloten producten in de winkelwagen aanwezig zijn (zie tab "
385
- "'gebruiksbeperking')."
386
 
387
  #: includes/wjecf-pro-free-products.php:80
388
  msgid "Please select your free gift."
389
  msgstr "Kies een gratis artikel."
390
 
391
- #: includes/wjecf-pro-free-products.php:337
392
- #: includes/wjecf-pro-free-products.php:347
393
  msgid "Free!"
394
  msgstr "Gratis!"
395
 
396
- #: includes/wjecf-pro-free-products.php:412
397
- #: includes/wjecf-pro-free-products.php:435
398
- #: includes/wjecf-pro-free-products.php:441
399
  msgid "Free products"
400
  msgstr "Gratis producten"
401
 
402
- #: includes/wjecf-pro-free-products.php:446
403
  msgid ""
404
  "Free products that will be added to the cart when this coupon is applied."
405
  msgstr ""
406
  "Gratis producten welke aan de winkelwagen worden toegevoegd als de coupon is "
407
  "toegepast."
408
 
409
- #: includes/wjecf-pro-free-products.php:453
410
  msgid "Select one"
411
  msgstr "Kies één"
412
 
413
- #: includes/wjecf-pro-free-products.php:454
414
  msgid "Check this box if the customer must choose from the free products."
415
  msgstr "Aanvinken als de klant één van de gratis producten moet kiezen."
416
 
417
- #: includes/wjecf-pro-free-products.php:462
418
  msgid "'Select your gift'-message"
419
  msgstr "'Kies uw gratis product'-boodschap"
420
 
421
- #: includes/wjecf-pro-free-products.php:463
422
  msgid "Please choose your free gift:"
423
  msgstr "Kies uw gratis product:"
424
 
425
- #: includes/wjecf-pro-free-products.php:464
426
  msgid "This message is displayed when the customer must choose a free product."
427
  msgstr ""
428
  "Deze melding wordt getoond wanneer de klant een gratis product moet kiezen."
429
 
430
- #: includes/wjecf-pro-free-products.php:473
431
  msgid "Allow multiplication of the free products"
432
  msgstr "Vermenigvuldigen gratis producten toestaan"
433
 
434
- #: includes/wjecf-pro-free-products.php:474
435
  msgid ""
436
  "The amount of free products is multiplied every time the minimum spend, "
437
  "subtotal or quantity is reached."
@@ -439,11 +571,11 @@ msgstr ""
439
  "Het aantal van de gratis producten wordt vermenigvuldigd met het totale "
440
  "aantal keer dat minimale besteding, subtotaal of aantal is bereikt."
441
 
442
- #: includes/wjecf-pro-free-products.php:481
443
  msgid "BOGO matching products"
444
  msgstr "1+1 gratis voor overeengekomen producten"
445
 
446
- #: includes/wjecf-pro-free-products.php:483
447
  msgid ""
448
  "Buy one or more of any of the matching products (see 'Usage Restriction'-"
449
  "tab) and get one free. Check 'Allow multiplication' to get one free item for "
@@ -453,11 +585,7 @@ msgstr ""
453
  "Gebruik 'vermenigvuldigen toestaan' om een gratis artikel voor elk "
454
  "overeenkomend artikel te krijgen."
455
 
456
- #: includes/wjecf-pro-free-products.php:497
457
- msgid "Search for a product…"
458
- msgstr "Zoek een product..."
459
-
460
- #: woocommerce-jos-autocoupon-pro.php:33
461
  msgid ""
462
  "WooCommerce Extended Coupon Features is disabled because WooCommerce could "
463
  "not be detected."
5
  "Project-Id-Version: WooCommerce auto added coupons 1.1.3.1\n"
6
  "Report-Msgid-Bugs-To: http://wordpress.org/support/plugin/woocommerce-auto-"
7
  "added-coupons\n"
8
+ "POT-Creation-Date: 2016-05-14 13:02+0200\n"
9
+ "PO-Revision-Date: 2016-05-14 13:07+0200\n"
10
  "Last-Translator: \n"
11
  "Language-Team: \n"
12
  "Language: nl_NL\n"
18
  "X-Poedit-Basepath: ..\n"
19
  "X-Poedit-SearchPath-0: .\n"
20
 
21
+ #: includes/admin/wjecf-admin-auto-upgrade.php:36
22
+ msgid ""
23
+ "<strong>WooCommerce Extended Coupon Features:</strong> Please note, you're "
24
+ "using an older version of this plugin, while the data was upgraded to a "
25
+ "newer version."
26
+ msgstr ""
27
+ "<strong>WooCommerce Extended Coupon Features:</strong> Je gebruikt een "
28
+ "oudere versie van deze plugin, terwijl de data is opgewaardeerd naar een "
29
+ "nieuwere versie."
30
+
31
+ #: includes/admin/wjecf-admin-auto-upgrade.php:44
32
+ msgid ""
33
+ "<strong>WooCommerce Extended Coupon Features:</strong> Data succesfully "
34
+ "upgraded to the newest version."
35
+ msgstr ""
36
+ "<strong>WooCommerce Extended Coupon Features:</strong> Gegevens "
37
+ "opgewaardeerd naar de nieuwste versie."
38
+
39
+ #: includes/admin/wjecf-admin.php:19
40
+ msgid ""
41
+ "<strong>WooCommerce Extended Coupon Features:</strong> You are using a "
42
+ "WooCommerce version prior to 2.3.0. Updating of WooCommerce is recommended "
43
+ "as using an outdated version might cause unexpected behaviour in combination "
44
+ "with modern plugins."
45
+ msgstr ""
46
+ "<strong>WooCommerce Extended Coupon Features:</strong> Je gebruikt een "
47
+ "WooCommerce versie ouder dan 2.3.0. Updaten van WooCommerce wordt aangeraden."
48
+
49
+ #: includes/admin/wjecf-admin.php:68
50
+ msgid "Products"
51
+ msgstr "Producten"
52
+
53
+ #: includes/admin/wjecf-admin.php:74 includes/admin/wjecf-admin.php:235
54
+ msgid "Checkout"
55
+ msgstr "Afrekenen"
56
+
57
+ #: includes/admin/wjecf-admin.php:80 includes/admin/wjecf-admin.php:345
58
+ msgid "Miscellaneous"
59
+ msgstr "Diversen"
60
+
61
+ #: includes/admin/wjecf-admin.php:123
62
  msgid "Do you find WooCommerce Extended Coupon Features useful?"
63
  msgstr "Vindt u WooCommerce Extended Coupon Features handig?"
64
 
65
+ #: includes/admin/wjecf-admin.php:125
66
  msgid "Express your gratitude"
67
  msgstr "Toon uw waardering"
68
 
69
+ #: includes/admin/wjecf-admin.php:129
70
  msgid "Donate to the developer"
71
  msgstr "Doneer aan de ontwikkelaar"
72
 
73
+ #: includes/admin/wjecf-admin.php:136
74
  msgid "Documentation"
75
  msgstr "Documentatie"
76
 
77
+ #: includes/admin/wjecf-admin.php:138
78
  msgid "WooCommerce Extended Coupon Features Documentation"
79
  msgstr "WooCommerce Extended Coupon Features Documentatie"
80
 
81
+ #: includes/admin/wjecf-admin.php:146
 
 
 
 
 
 
 
 
 
 
 
 
82
  msgid "Matching products"
83
  msgstr "Overeenkomende producten"
84
 
85
+ #: includes/admin/wjecf-admin.php:151
86
  msgid "AND Products (not OR)"
87
  msgstr "ALLE Producten (niet OF)"
88
 
89
+ #: includes/admin/wjecf-admin.php:152
90
  msgid ""
91
  "Check this box if ALL of the products (see tab 'usage restriction') must be "
92
  "in the cart to use this coupon (instead of only one of the products)."
95
  "winkelwagen moeten zitten om deze kortingsbon te kunnen gebruiken (in plaats "
96
  "van één van de producten)."
97
 
98
+ #: includes/admin/wjecf-admin.php:159
99
  msgid "AND Categories (not OR)"
100
  msgstr "ALLE Categorieën (niet OF)"
101
 
102
+ #: includes/admin/wjecf-admin.php:160
103
  msgid ""
104
  "Check this box if products from ALL of the categories (see tab 'usage "
105
  "restriction') must be in the cart to use this coupon (instead of only one "
109
  "in de winkelwagen moeten zitten om deze kortingsbon te kunnen gebruiken (in "
110
  "plaats van een product van één van de categorieën)."
111
 
112
+ #: includes/admin/wjecf-admin.php:165
113
  msgid "(AND)"
114
  msgstr "(ALLE)"
115
 
116
+ #: includes/admin/wjecf-admin.php:166
117
  msgid "(OR)"
118
  msgstr "(OF)"
119
 
120
+ #: includes/admin/wjecf-admin.php:195
121
  msgid "Minimum quantity of matching products"
122
  msgstr "Minimum aantal overeengekomen producten"
123
 
124
+ #: includes/admin/wjecf-admin.php:196 includes/admin/wjecf-admin.php:216
125
  msgid "No minimum"
126
  msgstr "Geen minimum"
127
 
128
+ #: includes/admin/wjecf-admin.php:197
129
  msgid ""
130
  "Minimum quantity of the products that match the given product or category "
131
  "restrictions (see tab 'usage restriction'). If no product or category "
135
  "(zie tab 'gebruiksbeperkingen'). Als geen product- of categorierestrictie is "
136
  "opgegeven worden alle producten in de winkelwagen geteld."
137
 
138
+ #: includes/admin/wjecf-admin.php:205
139
  msgid "Maximum quantity of matching products"
140
  msgstr "Maximum aantal overeengekomen producten"
141
 
142
+ #: includes/admin/wjecf-admin.php:206 includes/admin/wjecf-admin.php:226
143
  msgid "No maximum"
144
  msgstr "Geen maximum"
145
 
146
+ #: includes/admin/wjecf-admin.php:207
147
  msgid ""
148
  "Maximum quantity of the products that match the given product or category "
149
  "restrictions (see tab 'usage restriction'). If no product or category "
153
  "(zie tab 'gebruiksbeperkingen'). Als geen product- of categorierestrictie is "
154
  "opgegeven worden alle producten in de winkelwagen geteld."
155
 
156
+ #: includes/admin/wjecf-admin.php:215
157
  msgid "Minimum subtotal of matching products"
158
  msgstr "Minimum subtotaal overeengekomen producten"
159
 
160
+ #: includes/admin/wjecf-admin.php:217
161
  msgid ""
162
  "Minimum price subtotal of the products that match the given product or "
163
  "category restrictions (see tab 'usage restriction')."
167
  "product- of categorierestrictie is opgegeven wordt het subtotaal van alle "
168
  "producten in de winkelwagen opgeteld."
169
 
170
+ #: includes/admin/wjecf-admin.php:225
171
  msgid "Maximum subtotal of matching products"
172
  msgstr "Maximum subtotaal overeengekomen producten"
173
 
174
+ #: includes/admin/wjecf-admin.php:227
175
  msgid ""
176
  "Maximum price subtotal of the products that match the given product or "
177
  "category restrictions (see tab 'usage restriction')."
181
  "product- of categorierestrictie is opgegeven wordt het subtotaal van alle "
182
  "producten in de winkelwagen opgeteld."
183
 
184
+ #: includes/admin/wjecf-admin.php:240
185
  msgid "Shipping methods"
186
  msgstr "Verzendmethoden"
187
 
188
+ #: includes/admin/wjecf-admin.php:241
189
  msgid "Any shipping method"
190
  msgstr "Verzendmethoden"
191
 
192
+ #: includes/admin/wjecf-admin.php:250
193
  msgid ""
194
  "One of these shipping methods must be selected in order for this coupon to "
195
  "be valid."
197
  "Een van deze verzendmethoden moet gekozen zijn om deze kortingsbon te kunnen "
198
  "gebruiken."
199
 
200
+ #: includes/admin/wjecf-admin.php:256
201
  msgid "Payment methods"
202
  msgstr "Betaalmethoden"
203
 
204
+ #: includes/admin/wjecf-admin.php:257
205
  msgid "Any payment method"
206
  msgstr "Betaalmethoden"
207
 
208
+ #: includes/admin/wjecf-admin.php:268
209
  msgid ""
210
  "One of these payment methods must be selected in order for this coupon to be "
211
  "valid."
213
  "Een van deze betaalmethoden moet gekozen zijn om deze kortingsbon te kunnen "
214
  "gebruiken."
215
 
216
+ #: includes/admin/wjecf-admin.php:276
217
  msgid "Customer restrictions"
218
  msgstr "Klantbeperkingen"
219
 
220
+ #: includes/admin/wjecf-admin.php:277
221
  msgid ""
222
  "If both a customer and a role restriction are supplied, matching either one "
223
  "of them will suffice."
225
  "Als zowel een klant- als klantrolrestrictie is opgegeven hoeft slechts aan "
226
  "één van de restricties worden voldaan."
227
 
228
+ #: includes/admin/wjecf-admin.php:282
229
  msgid "Allowed Customers"
230
  msgstr "Toegestane klanten"
231
 
232
+ #: includes/admin/wjecf-admin.php:283
233
  msgid "Any customer"
234
  msgstr "Klanten"
235
 
236
+ #: includes/admin/wjecf-admin.php:296
237
  msgid "Only these customers may use this coupon."
238
  msgstr "Alleen deze klanten kunnen deze kortingsbon gebruiken."
239
 
240
+ #: includes/admin/wjecf-admin.php:303
241
  msgid "Allowed User Roles"
242
  msgstr "Toegestane klantrollen"
243
 
244
+ #: includes/admin/wjecf-admin.php:304 includes/admin/wjecf-admin.php:326
245
  msgid "Any role"
246
  msgstr "Klantrollen"
247
 
248
+ #: includes/admin/wjecf-admin.php:318
249
  msgid "Only these User Roles may use this coupon."
250
  msgstr "Alleen deze klantrollen kunnen deze kortingsbon gebruiken."
251
 
252
+ #: includes/admin/wjecf-admin.php:325
253
  msgid "Disallowed User Roles"
254
  msgstr "Uitgesloten klantrollen"
255
 
256
+ #: includes/admin/wjecf-admin.php:339
257
  msgid "These User Roles will be specifically excluded from using this coupon."
258
  msgstr "Deze klantrollen zijn uitgesloten om deze kortingsbon te gebruiken."
259
 
260
+ #: includes/admin/wjecf-admin.php:350
261
  msgid "Allow when minimum spend not reached"
262
  msgstr "Toestaan wanneer minimale besteding nog niet is behaald."
263
 
264
+ #: includes/admin/wjecf-admin.php:351 includes/wjecf-pro-free-products.php:481
265
+ #: includes/wjecf-pro-free-products.php:489
 
266
  msgid "EXPERIMENTAL: "
267
  msgstr "EXPERIMENTEEL:"
268
 
269
+ #: includes/admin/wjecf-admin.php:351
270
  msgid ""
271
  "Check this box to allow the coupon to be in the cart even when minimum spend "
272
  "(see tab 'usage restriction') is not reached. Value of the discount will be "
276
  "besteding nog niet is gehaald. De coupon zal een waarde van 0 hebben tot de "
277
  "minimale besteding is bereikt."
278
 
279
+ #: includes/admin/wjecf-admin.php:398 includes/admin/wjecf-admin.php:423
280
+ msgid "Search for a product…"
281
+ msgstr "Zoek een product..."
282
+
283
  #: includes/wjecf-autocoupon.php:58 includes/wjecf-autocoupon.php:130
284
  #: includes/wjecf-autocoupon.php:137
285
  msgid "Auto coupon"
337
  msgstr ""
338
  "Geen melding weergeven wanneer deze kortingsbon automatisch wordt toegepast."
339
 
340
+ #: includes/wjecf-autocoupon.php:240
341
+ #, php-format
342
+ msgid "Coupon '%s' will be applied when it's conditions are met."
343
+ msgstr ""
344
+ "Coupon '%s' zal automatisch worden toegepast wanneer aan de voorwaarden "
345
+ "wordt voldaan."
346
+
347
+ #: includes/wjecf-autocoupon.php:306
348
  msgid "Free shipping coupon"
349
  msgstr "Gratis verzending kortingsbon"
350
 
351
+ #: includes/wjecf-autocoupon.php:381 includes/wjecf-autocoupon.php:415
352
  #, php-format
353
  msgid "Discount applied: %s"
354
  msgstr "Korting toegepast: %s"
355
 
356
+ #: includes/wjecf-controller.php:169
357
  #, php-format
358
  msgid "The minimum subtotal of the matching products for this coupon is %s."
359
  msgstr ""
360
  "Het minimale subtotaal van overeengekomen producten voor deze kortingsbon is "
361
  "%s."
362
 
363
+ #: includes/wjecf-controller.php:173
364
  #, php-format
365
  msgid "The maximum subtotal of the matching products for this coupon is %s."
366
  msgstr ""
367
  "Het maximale subtotaal van overeengekomen producten voor deze kortingsbon is "
368
  "%s."
369
 
370
+ #: includes/wjecf-controller.php:177
371
  #, php-format
372
  msgid "The minimum quantity of matching products for this coupon is %s."
373
  msgstr ""
374
  "Het minimale aantal overeengekomen producten voor deze kortingsbon is %s."
375
 
376
+ #: includes/wjecf-controller.php:181
377
  #, php-format
378
  msgid "The maximum quantity of matching products for this coupon is %s."
379
  msgstr ""
380
  "Het maximale aantal overeengekomen producten voor deze kortingsbon is %s."
381
 
382
+ #: includes/wjecf-controller.php:184
383
  msgid "The coupon is not valid for the currently selected shipping method."
384
  msgstr "De kortingsbon is niet geldig voor de gekozen verzendmethode."
385
 
386
+ #: includes/wjecf-controller.php:187
387
  msgid "The coupon is not valid for the currently selected payment method."
388
  msgstr "De kortingsbon is niet geldig voor de gekozen betaalmethode."
389
 
390
+ #: includes/wjecf-controller.php:190
391
  #, php-format
392
  msgid "Sorry, it seems the coupon \"%s\" is not yours."
393
  msgstr "Sorry, het lijkt erop dat kortingsbon \"%s\" niet van u is."
394
 
395
+ #: includes/wjecf-pro-controller.php:59
396
+ msgid "Discount on cart with excluded products"
397
+ msgstr "Korting op winkelwagen met uitgesloten producten"
398
+
399
+ #: includes/wjecf-pro-controller.php:65
400
+ msgid "Allow discount on cart with excluded items"
401
+ msgstr "Korting toestaan op winkelwagen met uitgesloten producten"
402
+
403
+ #: includes/wjecf-pro-controller.php:66
404
+ msgid ""
405
+ "Check this box to allow a 'Cart Discount' coupon to be applied even when "
406
+ "excluded items are in the cart (see tab 'usage restriction')."
407
+ msgstr ""
408
+ "Aanvinken om een 'Winkelwagen korting'-coupon ook te accepteren als er "
409
+ "uitgesloten producten in de winkelwagen aanwezig zijn (zie tab "
410
+ "'gebruiksbeperking')."
411
+
412
+ #: includes/wjecf-pro-controller.php:77 includes/wjecf-pro-controller.php:83
413
  msgid "Limit discount to"
414
+ msgstr "Beperk korting tot"
415
+
416
+ #: includes/wjecf-pro-controller.php:78
417
+ msgid ""
418
+ "Here you can exclude certain products from being discounted (Only applies to "
419
+ "Cart % Discount, Product Discount, Product % Discount)"
420
+ msgstr ""
421
+ "Hier kun je producten uitsluiten van korting (Geldt alleen voor Winkelwagen "
422
+ "% korting, Product korting, Product % korting)"
423
+
424
+ #: includes/wjecf-pro-controller.php:85
425
+ msgid "(default)"
426
+ msgstr "(standaard)"
427
+
428
+ #: includes/wjecf-pro-controller.php:86
429
+ msgid "One item per order line"
430
+ msgstr "Eén item per orderregel"
431
+
432
+ #: includes/wjecf-pro-controller.php:87
433
+ msgid "Lowest priced product (single item)"
434
+ msgstr "Laagst geprijsde product (één item)"
435
 
436
+ #: includes/wjecf-pro-controller.php:88
437
+ msgid "Lowest priced order line (all items)"
438
+ msgstr "Laagst geprijsde orderregel (alle items)"
439
+
440
+ #: includes/wjecf-pro-controller.php:90
441
  msgid ""
442
  "Please note that when the discount type is 'Product discount' (see 'General'-"
443
  "tab), the discount will only be applied to <em>matching</em> products."
446
  "is gekozen, de korting alleen zal worden toegepast op overeengekomen "
447
  "producten."
448
 
449
+ #: includes/wjecf-pro-evalmath.php:735
450
+ msgid "an unexpected error occured"
451
+ msgstr ""
452
 
453
+ #: includes/wjecf-pro-evalmath.php:736
454
+ msgid "cannot assign to constant '{$a}'"
455
+ msgstr ""
456
+
457
+ #: includes/wjecf-pro-evalmath.php:737
458
+ msgid "cannot assign to readonly '{$a}'"
459
+ msgstr ""
460
+
461
+ #: includes/wjecf-pro-evalmath.php:738
462
+ msgid "cannot redefine built-in function '{$a}()'"
463
+ msgstr ""
464
+
465
+ #: includes/wjecf-pro-evalmath.php:739
466
+ msgid "division by zero"
467
+ msgstr ""
468
+
469
+ #: includes/wjecf-pro-evalmath.php:740
470
+ msgid "expecting a closing bracket"
471
+ msgstr ""
472
+
473
+ #: includes/wjecf-pro-evalmath.php:741
474
+ msgid "illegal character '{$a}'"
475
+ msgstr ""
476
+
477
+ #: includes/wjecf-pro-evalmath.php:742
478
+ msgid "illegal character '_'"
479
+ msgstr ""
480
+
481
+ #: includes/wjecf-pro-evalmath.php:743
482
+ msgid "expecting operator, implicit multiplication not allowed."
483
+ msgstr ""
484
+
485
+ #: includes/wjecf-pro-evalmath.php:744
486
+ msgid "internal error"
487
+ msgstr ""
488
+
489
+ #: includes/wjecf-pro-evalmath.php:745
490
+ msgid "operator '{$a}' lacks operand"
491
+ msgstr ""
492
+
493
+ #: includes/wjecf-pro-evalmath.php:746
494
+ msgid "undefined variable '{$a}'"
495
+ msgstr ""
496
 
497
+ #: includes/wjecf-pro-evalmath.php:747
498
+ msgid "undefined variable '{$a}' in function definition"
499
+ msgstr ""
500
+
501
+ #: includes/wjecf-pro-evalmath.php:748
502
+ msgid "unexpected closing bracket"
503
+ msgstr ""
504
+
505
+ #: includes/wjecf-pro-evalmath.php:749
506
+ msgid "unexpected comma"
507
+ msgstr ""
508
+
509
+ #: includes/wjecf-pro-evalmath.php:750
510
+ msgid "unexpected operator '{$a}'"
511
+ msgstr ""
512
+
513
+ #: includes/wjecf-pro-evalmath.php:751
514
  msgid ""
515
+ "wrong number of arguments for function '{$a->function}()' ({$a->given} "
516
+ "given, {$a->expected} expected)"
517
  msgstr ""
 
 
 
518
 
519
  #: includes/wjecf-pro-free-products.php:80
520
  msgid "Please select your free gift."
521
  msgstr "Kies een gratis artikel."
522
 
523
+ #: includes/wjecf-pro-free-products.php:344
524
+ #: includes/wjecf-pro-free-products.php:354
525
  msgid "Free!"
526
  msgstr "Gratis!"
527
 
528
+ #: includes/wjecf-pro-free-products.php:419
529
+ #: includes/wjecf-pro-free-products.php:442
530
+ #: includes/wjecf-pro-free-products.php:448
531
  msgid "Free products"
532
  msgstr "Gratis producten"
533
 
534
+ #: includes/wjecf-pro-free-products.php:453
535
  msgid ""
536
  "Free products that will be added to the cart when this coupon is applied."
537
  msgstr ""
538
  "Gratis producten welke aan de winkelwagen worden toegevoegd als de coupon is "
539
  "toegepast."
540
 
541
+ #: includes/wjecf-pro-free-products.php:460
542
  msgid "Select one"
543
  msgstr "Kies één"
544
 
545
+ #: includes/wjecf-pro-free-products.php:461
546
  msgid "Check this box if the customer must choose from the free products."
547
  msgstr "Aanvinken als de klant één van de gratis producten moet kiezen."
548
 
549
+ #: includes/wjecf-pro-free-products.php:469
550
  msgid "'Select your gift'-message"
551
  msgstr "'Kies uw gratis product'-boodschap"
552
 
553
+ #: includes/wjecf-pro-free-products.php:470
554
  msgid "Please choose your free gift:"
555
  msgstr "Kies uw gratis product:"
556
 
557
+ #: includes/wjecf-pro-free-products.php:471
558
  msgid "This message is displayed when the customer must choose a free product."
559
  msgstr ""
560
  "Deze melding wordt getoond wanneer de klant een gratis product moet kiezen."
561
 
562
+ #: includes/wjecf-pro-free-products.php:480
563
  msgid "Allow multiplication of the free products"
564
  msgstr "Vermenigvuldigen gratis producten toestaan"
565
 
566
+ #: includes/wjecf-pro-free-products.php:481
567
  msgid ""
568
  "The amount of free products is multiplied every time the minimum spend, "
569
  "subtotal or quantity is reached."
571
  "Het aantal van de gratis producten wordt vermenigvuldigd met het totale "
572
  "aantal keer dat minimale besteding, subtotaal of aantal is bereikt."
573
 
574
+ #: includes/wjecf-pro-free-products.php:488
575
  msgid "BOGO matching products"
576
  msgstr "1+1 gratis voor overeengekomen producten"
577
 
578
+ #: includes/wjecf-pro-free-products.php:490
579
  msgid ""
580
  "Buy one or more of any of the matching products (see 'Usage Restriction'-"
581
  "tab) and get one free. Check 'Allow multiplication' to get one free item for "
585
  "Gebruik 'vermenigvuldigen toestaan' om een gratis artikel voor elk "
586
  "overeenkomend artikel te krijgen."
587
 
588
+ #: woocommerce-jos-autocoupon-pro.php:34
 
 
 
 
589
  msgid ""
590
  "WooCommerce Extended Coupon Features is disabled because WooCommerce could "
591
  "not be detected."
languages/woocommerce-jos-autocoupon.pot CHANGED
@@ -2,7 +2,7 @@
2
  msgid ""
3
  msgstr ""
4
  "Project-Id-Version: WooCommerce Extended Coupon Features 2.00\n"
5
- "POT-Creation-Date: 2016-03-28 21:23+0200\n"
6
  "PO-Revision-Date: 2015-05-09 18:12+0100\n"
7
  "Last-Translator: \n"
8
  "Language-Team: Jos Koenis\n"
@@ -16,208 +16,232 @@ msgstr ""
16
  "X-Poedit-SourceCharset: UTF-8\n"
17
  "X-Poedit-SearchPath-0: .\n"
18
 
19
- #: includes/admin/wjecf-admin.php:94
20
- msgid "Do you find WooCommerce Extended Coupon Features useful?"
 
 
 
21
  msgstr ""
22
 
23
- #: includes/admin/wjecf-admin.php:96
24
- msgid "Express your gratitude"
 
 
25
  msgstr ""
26
 
27
- #: includes/admin/wjecf-admin.php:100
28
- msgid "Donate to the developer"
 
 
 
 
29
  msgstr ""
30
 
31
- #: includes/admin/wjecf-admin.php:107
32
- msgid "Documentation"
33
  msgstr ""
34
 
35
- #: includes/admin/wjecf-admin.php:109
36
- msgid "WooCommerce Extended Coupon Features Documentation"
37
  msgstr ""
38
 
39
- #: includes/admin/wjecf-admin.php:117
40
- msgid "Products"
41
  msgstr ""
42
 
43
- #: includes/admin/wjecf-admin.php:123 includes/admin/wjecf-admin.php:230
44
- msgid "Checkout"
45
  msgstr ""
46
 
47
- #: includes/admin/wjecf-admin.php:129 includes/admin/wjecf-admin.php:340
48
- msgid "Miscellaneous"
49
  msgstr ""
50
 
51
- #: includes/admin/wjecf-admin.php:141
52
- msgid "Matching products"
 
 
 
 
 
 
 
 
53
  msgstr ""
54
 
55
  #: includes/admin/wjecf-admin.php:146
 
 
 
 
56
  msgid "AND Products (not OR)"
57
  msgstr ""
58
 
59
- #: includes/admin/wjecf-admin.php:147
60
  msgid ""
61
  "Check this box if ALL of the products (see tab 'usage restriction') must be "
62
  "in the cart to use this coupon (instead of only one of the products)."
63
  msgstr ""
64
 
65
- #: includes/admin/wjecf-admin.php:154
66
  msgid "AND Categories (not OR)"
67
  msgstr ""
68
 
69
- #: includes/admin/wjecf-admin.php:155
70
  msgid ""
71
  "Check this box if products from ALL of the categories (see tab 'usage "
72
  "restriction') must be in the cart to use this coupon (instead of only one "
73
  "from one of the categories)."
74
  msgstr ""
75
 
76
- #: includes/admin/wjecf-admin.php:160
77
  msgid "(AND)"
78
  msgstr ""
79
 
80
- #: includes/admin/wjecf-admin.php:161
81
  msgid "(OR)"
82
  msgstr ""
83
 
84
- #: includes/admin/wjecf-admin.php:190
85
  msgid "Minimum quantity of matching products"
86
  msgstr ""
87
 
88
- #: includes/admin/wjecf-admin.php:191 includes/admin/wjecf-admin.php:211
89
  msgid "No minimum"
90
  msgstr ""
91
 
92
- #: includes/admin/wjecf-admin.php:192
93
  msgid ""
94
  "Minimum quantity of the products that match the given product or category "
95
  "restrictions (see tab 'usage restriction'). If no product or category "
96
  "restrictions are specified, the total number of products is used."
97
  msgstr ""
98
 
99
- #: includes/admin/wjecf-admin.php:200
100
  msgid "Maximum quantity of matching products"
101
  msgstr ""
102
 
103
- #: includes/admin/wjecf-admin.php:201 includes/admin/wjecf-admin.php:221
104
  msgid "No maximum"
105
  msgstr ""
106
 
107
- #: includes/admin/wjecf-admin.php:202
108
  msgid ""
109
  "Maximum quantity of the products that match the given product or category "
110
  "restrictions (see tab 'usage restriction'). If no product or category "
111
  "restrictions are specified, the total number of products is used."
112
  msgstr ""
113
 
114
- #: includes/admin/wjecf-admin.php:210
115
  msgid "Minimum subtotal of matching products"
116
  msgstr ""
117
 
118
- #: includes/admin/wjecf-admin.php:212
119
  msgid ""
120
  "Minimum price subtotal of the products that match the given product or "
121
  "category restrictions (see tab 'usage restriction')."
122
  msgstr ""
123
 
124
- #: includes/admin/wjecf-admin.php:220
125
  msgid "Maximum subtotal of matching products"
126
  msgstr ""
127
 
128
- #: includes/admin/wjecf-admin.php:222
129
  msgid ""
130
  "Maximum price subtotal of the products that match the given product or "
131
  "category restrictions (see tab 'usage restriction')."
132
  msgstr ""
133
 
134
- #: includes/admin/wjecf-admin.php:235
135
  msgid "Shipping methods"
136
  msgstr ""
137
 
138
- #: includes/admin/wjecf-admin.php:236
139
  msgid "Any shipping method"
140
  msgstr ""
141
 
142
- #: includes/admin/wjecf-admin.php:245
143
  msgid ""
144
  "One of these shipping methods must be selected in order for this coupon to "
145
  "be valid."
146
  msgstr ""
147
 
148
- #: includes/admin/wjecf-admin.php:251
149
  msgid "Payment methods"
150
  msgstr ""
151
 
152
- #: includes/admin/wjecf-admin.php:252
153
  msgid "Any payment method"
154
  msgstr ""
155
 
156
- #: includes/admin/wjecf-admin.php:263
157
  msgid ""
158
  "One of these payment methods must be selected in order for this coupon to be "
159
  "valid."
160
  msgstr ""
161
 
162
- #: includes/admin/wjecf-admin.php:271
163
  msgid "Customer restrictions"
164
  msgstr ""
165
 
166
- #: includes/admin/wjecf-admin.php:272
167
  msgid ""
168
  "If both a customer and a role restriction are supplied, matching either one "
169
  "of them will suffice."
170
  msgstr ""
171
 
172
- #: includes/admin/wjecf-admin.php:277
173
  msgid "Allowed Customers"
174
  msgstr ""
175
 
176
- #: includes/admin/wjecf-admin.php:278
177
  msgid "Any customer"
178
  msgstr ""
179
 
180
- #: includes/admin/wjecf-admin.php:291
181
  msgid "Only these customers may use this coupon."
182
  msgstr ""
183
 
184
- #: includes/admin/wjecf-admin.php:298
185
  msgid "Allowed User Roles"
186
  msgstr ""
187
 
188
- #: includes/admin/wjecf-admin.php:299 includes/admin/wjecf-admin.php:321
189
  msgid "Any role"
190
  msgstr ""
191
 
192
- #: includes/admin/wjecf-admin.php:313
193
  msgid "Only these User Roles may use this coupon."
194
  msgstr ""
195
 
196
- #: includes/admin/wjecf-admin.php:320
197
  msgid "Disallowed User Roles"
198
  msgstr ""
199
 
200
- #: includes/admin/wjecf-admin.php:334
201
  msgid "These User Roles will be specifically excluded from using this coupon."
202
  msgstr ""
203
 
204
- #: includes/admin/wjecf-admin.php:345
205
  msgid "Allow when minimum spend not reached"
206
  msgstr ""
207
 
208
- #: includes/admin/wjecf-admin.php:346 includes/wjecf-pro-controller.php:74
209
- #: includes/wjecf-pro-free-products.php:474
210
- #: includes/wjecf-pro-free-products.php:482
211
  msgid "EXPERIMENTAL: "
212
  msgstr ""
213
 
214
- #: includes/admin/wjecf-admin.php:346
215
  msgid ""
216
  "Check this box to allow the coupon to be in the cart even when minimum spend "
217
  "(see tab 'usage restriction') is not reached. Value of the discount will be "
218
  "0 until minimum spend is reached."
219
  msgstr ""
220
 
 
 
 
 
221
  #: includes/wjecf-autocoupon.php:58 includes/wjecf-autocoupon.php:130
222
  #: includes/wjecf-autocoupon.php:137
223
  msgid "Auto coupon"
@@ -268,138 +292,231 @@ msgstr ""
268
  msgid "Don't display a message when this coupon is automatically applied."
269
  msgstr ""
270
 
271
- #: includes/wjecf-autocoupon.php:266
 
 
 
 
 
272
  msgid "Free shipping coupon"
273
  msgstr ""
274
 
275
- #: includes/wjecf-autocoupon.php:422
276
  #, php-format
277
  msgid "Discount applied: %s"
278
  msgstr ""
279
 
280
- #: includes/wjecf-controller.php:162
281
  #, php-format
282
  msgid "The minimum subtotal of the matching products for this coupon is %s."
283
  msgstr ""
284
 
285
- #: includes/wjecf-controller.php:166
286
  #, php-format
287
  msgid "The maximum subtotal of the matching products for this coupon is %s."
288
  msgstr ""
289
 
290
- #: includes/wjecf-controller.php:170
291
  #, php-format
292
  msgid "The minimum quantity of matching products for this coupon is %s."
293
  msgstr ""
294
 
295
- #: includes/wjecf-controller.php:174
296
  #, php-format
297
  msgid "The maximum quantity of matching products for this coupon is %s."
298
  msgstr ""
299
 
300
- #: includes/wjecf-controller.php:177
301
  msgid "The coupon is not valid for the currently selected shipping method."
302
  msgstr ""
303
 
304
- #: includes/wjecf-controller.php:180
305
  msgid "The coupon is not valid for the currently selected payment method."
306
  msgstr ""
307
 
308
- #: includes/wjecf-controller.php:183
309
  #, php-format
310
  msgid "Sorry, it seems the coupon \"%s\" is not yours."
311
  msgstr ""
312
 
313
- #: includes/wjecf-pro-controller.php:50 includes/wjecf-pro-controller.php:55
 
 
 
 
 
 
 
 
 
 
 
 
 
 
314
  msgid "Limit discount to"
315
  msgstr ""
316
 
317
- #: includes/wjecf-pro-controller.php:61
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
318
  msgid ""
319
  "Please note that when the discount type is 'Product discount' (see 'General'-"
320
  "tab), the discount will only be applied to <em>matching</em> products."
321
  msgstr ""
322
 
323
- #: includes/wjecf-pro-controller.php:67
324
- msgid "Discount on cart with excluded products"
325
  msgstr ""
326
 
327
- #: includes/wjecf-pro-controller.php:73
328
- msgid "Allow discount on cart with excluded items"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
329
  msgstr ""
330
 
331
- #: includes/wjecf-pro-controller.php:75
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
332
  msgid ""
333
- "Check this box to allow a 'Cart Discount' coupon to be applied even when "
334
- "excluded items are in the cart (see tab 'usage restriction')."
335
  msgstr ""
336
 
337
  #: includes/wjecf-pro-free-products.php:80
338
  msgid "Please select your free gift."
339
  msgstr ""
340
 
341
- #: includes/wjecf-pro-free-products.php:337
342
- #: includes/wjecf-pro-free-products.php:347
343
  msgid "Free!"
344
  msgstr ""
345
 
346
- #: includes/wjecf-pro-free-products.php:412
347
- #: includes/wjecf-pro-free-products.php:435
348
- #: includes/wjecf-pro-free-products.php:441
349
  msgid "Free products"
350
  msgstr ""
351
 
352
- #: includes/wjecf-pro-free-products.php:446
353
  msgid ""
354
  "Free products that will be added to the cart when this coupon is applied."
355
  msgstr ""
356
 
357
- #: includes/wjecf-pro-free-products.php:453
358
  msgid "Select one"
359
  msgstr ""
360
 
361
- #: includes/wjecf-pro-free-products.php:454
362
  msgid "Check this box if the customer must choose from the free products."
363
  msgstr ""
364
 
365
- #: includes/wjecf-pro-free-products.php:462
366
  msgid "'Select your gift'-message"
367
  msgstr ""
368
 
369
- #: includes/wjecf-pro-free-products.php:463
370
  msgid "Please choose your free gift:"
371
  msgstr ""
372
 
373
- #: includes/wjecf-pro-free-products.php:464
374
  msgid "This message is displayed when the customer must choose a free product."
375
  msgstr ""
376
 
377
- #: includes/wjecf-pro-free-products.php:473
378
  msgid "Allow multiplication of the free products"
379
  msgstr ""
380
 
381
- #: includes/wjecf-pro-free-products.php:474
382
  msgid ""
383
  "The amount of free products is multiplied every time the minimum spend, "
384
  "subtotal or quantity is reached."
385
  msgstr ""
386
 
387
- #: includes/wjecf-pro-free-products.php:481
388
  msgid "BOGO matching products"
389
  msgstr ""
390
 
391
- #: includes/wjecf-pro-free-products.php:483
392
  msgid ""
393
  "Buy one or more of any of the matching products (see 'Usage Restriction'-"
394
  "tab) and get one free. Check 'Allow multiplication' to get one free item for "
395
  "every matching item in the cart."
396
  msgstr ""
397
 
398
- #: includes/wjecf-pro-free-products.php:497
399
- msgid "Search for a product…"
400
- msgstr ""
401
-
402
- #: woocommerce-jos-autocoupon-pro.php:33
403
  msgid ""
404
  "WooCommerce Extended Coupon Features is disabled because WooCommerce could "
405
  "not be detected."
2
  msgid ""
3
  msgstr ""
4
  "Project-Id-Version: WooCommerce Extended Coupon Features 2.00\n"
5
+ "POT-Creation-Date: 2016-05-14 13:02+0200\n"
6
  "PO-Revision-Date: 2015-05-09 18:12+0100\n"
7
  "Last-Translator: \n"
8
  "Language-Team: Jos Koenis\n"
16
  "X-Poedit-SourceCharset: UTF-8\n"
17
  "X-Poedit-SearchPath-0: .\n"
18
 
19
+ #: includes/admin/wjecf-admin-auto-upgrade.php:36
20
+ msgid ""
21
+ "<strong>WooCommerce Extended Coupon Features:</strong> Please note, you're "
22
+ "using an older version of this plugin, while the data was upgraded to a "
23
+ "newer version."
24
  msgstr ""
25
 
26
+ #: includes/admin/wjecf-admin-auto-upgrade.php:44
27
+ msgid ""
28
+ "<strong>WooCommerce Extended Coupon Features:</strong> Data succesfully "
29
+ "upgraded to the newest version."
30
  msgstr ""
31
 
32
+ #: includes/admin/wjecf-admin.php:19
33
+ msgid ""
34
+ "<strong>WooCommerce Extended Coupon Features:</strong> You are using a "
35
+ "WooCommerce version prior to 2.3.0. Updating of WooCommerce is recommended "
36
+ "as using an outdated version might cause unexpected behaviour in combination "
37
+ "with modern plugins."
38
  msgstr ""
39
 
40
+ #: includes/admin/wjecf-admin.php:68
41
+ msgid "Products"
42
  msgstr ""
43
 
44
+ #: includes/admin/wjecf-admin.php:74 includes/admin/wjecf-admin.php:235
45
+ msgid "Checkout"
46
  msgstr ""
47
 
48
+ #: includes/admin/wjecf-admin.php:80 includes/admin/wjecf-admin.php:345
49
+ msgid "Miscellaneous"
50
  msgstr ""
51
 
52
+ #: includes/admin/wjecf-admin.php:123
53
+ msgid "Do you find WooCommerce Extended Coupon Features useful?"
54
  msgstr ""
55
 
56
+ #: includes/admin/wjecf-admin.php:125
57
+ msgid "Express your gratitude"
58
  msgstr ""
59
 
60
+ #: includes/admin/wjecf-admin.php:129
61
+ msgid "Donate to the developer"
62
+ msgstr ""
63
+
64
+ #: includes/admin/wjecf-admin.php:136
65
+ msgid "Documentation"
66
+ msgstr ""
67
+
68
+ #: includes/admin/wjecf-admin.php:138
69
+ msgid "WooCommerce Extended Coupon Features Documentation"
70
  msgstr ""
71
 
72
  #: includes/admin/wjecf-admin.php:146
73
+ msgid "Matching products"
74
+ msgstr ""
75
+
76
+ #: includes/admin/wjecf-admin.php:151
77
  msgid "AND Products (not OR)"
78
  msgstr ""
79
 
80
+ #: includes/admin/wjecf-admin.php:152
81
  msgid ""
82
  "Check this box if ALL of the products (see tab 'usage restriction') must be "
83
  "in the cart to use this coupon (instead of only one of the products)."
84
  msgstr ""
85
 
86
+ #: includes/admin/wjecf-admin.php:159
87
  msgid "AND Categories (not OR)"
88
  msgstr ""
89
 
90
+ #: includes/admin/wjecf-admin.php:160
91
  msgid ""
92
  "Check this box if products from ALL of the categories (see tab 'usage "
93
  "restriction') must be in the cart to use this coupon (instead of only one "
94
  "from one of the categories)."
95
  msgstr ""
96
 
97
+ #: includes/admin/wjecf-admin.php:165
98
  msgid "(AND)"
99
  msgstr ""
100
 
101
+ #: includes/admin/wjecf-admin.php:166
102
  msgid "(OR)"
103
  msgstr ""
104
 
105
+ #: includes/admin/wjecf-admin.php:195
106
  msgid "Minimum quantity of matching products"
107
  msgstr ""
108
 
109
+ #: includes/admin/wjecf-admin.php:196 includes/admin/wjecf-admin.php:216
110
  msgid "No minimum"
111
  msgstr ""
112
 
113
+ #: includes/admin/wjecf-admin.php:197
114
  msgid ""
115
  "Minimum quantity of the products that match the given product or category "
116
  "restrictions (see tab 'usage restriction'). If no product or category "
117
  "restrictions are specified, the total number of products is used."
118
  msgstr ""
119
 
120
+ #: includes/admin/wjecf-admin.php:205
121
  msgid "Maximum quantity of matching products"
122
  msgstr ""
123
 
124
+ #: includes/admin/wjecf-admin.php:206 includes/admin/wjecf-admin.php:226
125
  msgid "No maximum"
126
  msgstr ""
127
 
128
+ #: includes/admin/wjecf-admin.php:207
129
  msgid ""
130
  "Maximum quantity of the products that match the given product or category "
131
  "restrictions (see tab 'usage restriction'). If no product or category "
132
  "restrictions are specified, the total number of products is used."
133
  msgstr ""
134
 
135
+ #: includes/admin/wjecf-admin.php:215
136
  msgid "Minimum subtotal of matching products"
137
  msgstr ""
138
 
139
+ #: includes/admin/wjecf-admin.php:217
140
  msgid ""
141
  "Minimum price subtotal of the products that match the given product or "
142
  "category restrictions (see tab 'usage restriction')."
143
  msgstr ""
144
 
145
+ #: includes/admin/wjecf-admin.php:225
146
  msgid "Maximum subtotal of matching products"
147
  msgstr ""
148
 
149
+ #: includes/admin/wjecf-admin.php:227
150
  msgid ""
151
  "Maximum price subtotal of the products that match the given product or "
152
  "category restrictions (see tab 'usage restriction')."
153
  msgstr ""
154
 
155
+ #: includes/admin/wjecf-admin.php:240
156
  msgid "Shipping methods"
157
  msgstr ""
158
 
159
+ #: includes/admin/wjecf-admin.php:241
160
  msgid "Any shipping method"
161
  msgstr ""
162
 
163
+ #: includes/admin/wjecf-admin.php:250
164
  msgid ""
165
  "One of these shipping methods must be selected in order for this coupon to "
166
  "be valid."
167
  msgstr ""
168
 
169
+ #: includes/admin/wjecf-admin.php:256
170
  msgid "Payment methods"
171
  msgstr ""
172
 
173
+ #: includes/admin/wjecf-admin.php:257
174
  msgid "Any payment method"
175
  msgstr ""
176
 
177
+ #: includes/admin/wjecf-admin.php:268
178
  msgid ""
179
  "One of these payment methods must be selected in order for this coupon to be "
180
  "valid."
181
  msgstr ""
182
 
183
+ #: includes/admin/wjecf-admin.php:276
184
  msgid "Customer restrictions"
185
  msgstr ""
186
 
187
+ #: includes/admin/wjecf-admin.php:277
188
  msgid ""
189
  "If both a customer and a role restriction are supplied, matching either one "
190
  "of them will suffice."
191
  msgstr ""
192
 
193
+ #: includes/admin/wjecf-admin.php:282
194
  msgid "Allowed Customers"
195
  msgstr ""
196
 
197
+ #: includes/admin/wjecf-admin.php:283
198
  msgid "Any customer"
199
  msgstr ""
200
 
201
+ #: includes/admin/wjecf-admin.php:296
202
  msgid "Only these customers may use this coupon."
203
  msgstr ""
204
 
205
+ #: includes/admin/wjecf-admin.php:303
206
  msgid "Allowed User Roles"
207
  msgstr ""
208
 
209
+ #: includes/admin/wjecf-admin.php:304 includes/admin/wjecf-admin.php:326
210
  msgid "Any role"
211
  msgstr ""
212
 
213
+ #: includes/admin/wjecf-admin.php:318
214
  msgid "Only these User Roles may use this coupon."
215
  msgstr ""
216
 
217
+ #: includes/admin/wjecf-admin.php:325
218
  msgid "Disallowed User Roles"
219
  msgstr ""
220
 
221
+ #: includes/admin/wjecf-admin.php:339
222
  msgid "These User Roles will be specifically excluded from using this coupon."
223
  msgstr ""
224
 
225
+ #: includes/admin/wjecf-admin.php:350
226
  msgid "Allow when minimum spend not reached"
227
  msgstr ""
228
 
229
+ #: includes/admin/wjecf-admin.php:351 includes/wjecf-pro-free-products.php:481
230
+ #: includes/wjecf-pro-free-products.php:489
 
231
  msgid "EXPERIMENTAL: "
232
  msgstr ""
233
 
234
+ #: includes/admin/wjecf-admin.php:351
235
  msgid ""
236
  "Check this box to allow the coupon to be in the cart even when minimum spend "
237
  "(see tab 'usage restriction') is not reached. Value of the discount will be "
238
  "0 until minimum spend is reached."
239
  msgstr ""
240
 
241
+ #: includes/admin/wjecf-admin.php:398 includes/admin/wjecf-admin.php:423
242
+ msgid "Search for a product…"
243
+ msgstr ""
244
+
245
  #: includes/wjecf-autocoupon.php:58 includes/wjecf-autocoupon.php:130
246
  #: includes/wjecf-autocoupon.php:137
247
  msgid "Auto coupon"
292
  msgid "Don't display a message when this coupon is automatically applied."
293
  msgstr ""
294
 
295
+ #: includes/wjecf-autocoupon.php:240
296
+ #, php-format
297
+ msgid "Coupon '%s' will be applied when it's conditions are met."
298
+ msgstr ""
299
+
300
+ #: includes/wjecf-autocoupon.php:306
301
  msgid "Free shipping coupon"
302
  msgstr ""
303
 
304
+ #: includes/wjecf-autocoupon.php:381 includes/wjecf-autocoupon.php:415
305
  #, php-format
306
  msgid "Discount applied: %s"
307
  msgstr ""
308
 
309
+ #: includes/wjecf-controller.php:169
310
  #, php-format
311
  msgid "The minimum subtotal of the matching products for this coupon is %s."
312
  msgstr ""
313
 
314
+ #: includes/wjecf-controller.php:173
315
  #, php-format
316
  msgid "The maximum subtotal of the matching products for this coupon is %s."
317
  msgstr ""
318
 
319
+ #: includes/wjecf-controller.php:177
320
  #, php-format
321
  msgid "The minimum quantity of matching products for this coupon is %s."
322
  msgstr ""
323
 
324
+ #: includes/wjecf-controller.php:181
325
  #, php-format
326
  msgid "The maximum quantity of matching products for this coupon is %s."
327
  msgstr ""
328
 
329
+ #: includes/wjecf-controller.php:184
330
  msgid "The coupon is not valid for the currently selected shipping method."
331
  msgstr ""
332
 
333
+ #: includes/wjecf-controller.php:187
334
  msgid "The coupon is not valid for the currently selected payment method."
335
  msgstr ""
336
 
337
+ #: includes/wjecf-controller.php:190
338
  #, php-format
339
  msgid "Sorry, it seems the coupon \"%s\" is not yours."
340
  msgstr ""
341
 
342
+ #: includes/wjecf-pro-controller.php:59
343
+ msgid "Discount on cart with excluded products"
344
+ msgstr ""
345
+
346
+ #: includes/wjecf-pro-controller.php:65
347
+ msgid "Allow discount on cart with excluded items"
348
+ msgstr ""
349
+
350
+ #: includes/wjecf-pro-controller.php:66
351
+ msgid ""
352
+ "Check this box to allow a 'Cart Discount' coupon to be applied even when "
353
+ "excluded items are in the cart (see tab 'usage restriction')."
354
+ msgstr ""
355
+
356
+ #: includes/wjecf-pro-controller.php:77 includes/wjecf-pro-controller.php:83
357
  msgid "Limit discount to"
358
  msgstr ""
359
 
360
+ #: includes/wjecf-pro-controller.php:78
361
+ msgid ""
362
+ "Here you can exclude certain products from being discounted (Only applies to "
363
+ "Cart % Discount, Product Discount, Product % Discount)"
364
+ msgstr ""
365
+
366
+ #: includes/wjecf-pro-controller.php:85
367
+ msgid "(default)"
368
+ msgstr ""
369
+
370
+ #: includes/wjecf-pro-controller.php:86
371
+ msgid "One item per order line"
372
+ msgstr ""
373
+
374
+ #: includes/wjecf-pro-controller.php:87
375
+ msgid "Lowest priced product (single item)"
376
+ msgstr ""
377
+
378
+ #: includes/wjecf-pro-controller.php:88
379
+ msgid "Lowest priced order line (all items)"
380
+ msgstr ""
381
+
382
+ #: includes/wjecf-pro-controller.php:90
383
  msgid ""
384
  "Please note that when the discount type is 'Product discount' (see 'General'-"
385
  "tab), the discount will only be applied to <em>matching</em> products."
386
  msgstr ""
387
 
388
+ #: includes/wjecf-pro-evalmath.php:735
389
+ msgid "an unexpected error occured"
390
  msgstr ""
391
 
392
+ #: includes/wjecf-pro-evalmath.php:736
393
+ msgid "cannot assign to constant '{$a}'"
394
+ msgstr ""
395
+
396
+ #: includes/wjecf-pro-evalmath.php:737
397
+ msgid "cannot assign to readonly '{$a}'"
398
+ msgstr ""
399
+
400
+ #: includes/wjecf-pro-evalmath.php:738
401
+ msgid "cannot redefine built-in function '{$a}()'"
402
+ msgstr ""
403
+
404
+ #: includes/wjecf-pro-evalmath.php:739
405
+ msgid "division by zero"
406
+ msgstr ""
407
+
408
+ #: includes/wjecf-pro-evalmath.php:740
409
+ msgid "expecting a closing bracket"
410
+ msgstr ""
411
+
412
+ #: includes/wjecf-pro-evalmath.php:741
413
+ msgid "illegal character '{$a}'"
414
+ msgstr ""
415
+
416
+ #: includes/wjecf-pro-evalmath.php:742
417
+ msgid "illegal character '_'"
418
  msgstr ""
419
 
420
+ #: includes/wjecf-pro-evalmath.php:743
421
+ msgid "expecting operator, implicit multiplication not allowed."
422
+ msgstr ""
423
+
424
+ #: includes/wjecf-pro-evalmath.php:744
425
+ msgid "internal error"
426
+ msgstr ""
427
+
428
+ #: includes/wjecf-pro-evalmath.php:745
429
+ msgid "operator '{$a}' lacks operand"
430
+ msgstr ""
431
+
432
+ #: includes/wjecf-pro-evalmath.php:746
433
+ msgid "undefined variable '{$a}'"
434
+ msgstr ""
435
+
436
+ #: includes/wjecf-pro-evalmath.php:747
437
+ msgid "undefined variable '{$a}' in function definition"
438
+ msgstr ""
439
+
440
+ #: includes/wjecf-pro-evalmath.php:748
441
+ msgid "unexpected closing bracket"
442
+ msgstr ""
443
+
444
+ #: includes/wjecf-pro-evalmath.php:749
445
+ msgid "unexpected comma"
446
+ msgstr ""
447
+
448
+ #: includes/wjecf-pro-evalmath.php:750
449
+ msgid "unexpected operator '{$a}'"
450
+ msgstr ""
451
+
452
+ #: includes/wjecf-pro-evalmath.php:751
453
  msgid ""
454
+ "wrong number of arguments for function '{$a->function}()' ({$a->given} "
455
+ "given, {$a->expected} expected)"
456
  msgstr ""
457
 
458
  #: includes/wjecf-pro-free-products.php:80
459
  msgid "Please select your free gift."
460
  msgstr ""
461
 
462
+ #: includes/wjecf-pro-free-products.php:344
463
+ #: includes/wjecf-pro-free-products.php:354
464
  msgid "Free!"
465
  msgstr ""
466
 
467
+ #: includes/wjecf-pro-free-products.php:419
468
+ #: includes/wjecf-pro-free-products.php:442
469
+ #: includes/wjecf-pro-free-products.php:448
470
  msgid "Free products"
471
  msgstr ""
472
 
473
+ #: includes/wjecf-pro-free-products.php:453
474
  msgid ""
475
  "Free products that will be added to the cart when this coupon is applied."
476
  msgstr ""
477
 
478
+ #: includes/wjecf-pro-free-products.php:460
479
  msgid "Select one"
480
  msgstr ""
481
 
482
+ #: includes/wjecf-pro-free-products.php:461
483
  msgid "Check this box if the customer must choose from the free products."
484
  msgstr ""
485
 
486
+ #: includes/wjecf-pro-free-products.php:469
487
  msgid "'Select your gift'-message"
488
  msgstr ""
489
 
490
+ #: includes/wjecf-pro-free-products.php:470
491
  msgid "Please choose your free gift:"
492
  msgstr ""
493
 
494
+ #: includes/wjecf-pro-free-products.php:471
495
  msgid "This message is displayed when the customer must choose a free product."
496
  msgstr ""
497
 
498
+ #: includes/wjecf-pro-free-products.php:480
499
  msgid "Allow multiplication of the free products"
500
  msgstr ""
501
 
502
+ #: includes/wjecf-pro-free-products.php:481
503
  msgid ""
504
  "The amount of free products is multiplied every time the minimum spend, "
505
  "subtotal or quantity is reached."
506
  msgstr ""
507
 
508
+ #: includes/wjecf-pro-free-products.php:488
509
  msgid "BOGO matching products"
510
  msgstr ""
511
 
512
+ #: includes/wjecf-pro-free-products.php:490
513
  msgid ""
514
  "Buy one or more of any of the matching products (see 'Usage Restriction'-"
515
  "tab) and get one free. Check 'Allow multiplication' to get one free item for "
516
  "every matching item in the cart."
517
  msgstr ""
518
 
519
+ #: woocommerce-jos-autocoupon-pro.php:34
 
 
 
 
520
  msgid ""
521
  "WooCommerce Extended Coupon Features is disabled because WooCommerce could "
522
  "not be detected."
readme.txt CHANGED
@@ -3,8 +3,8 @@ Contributors: josk79
3
  Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=5T9XQBCS2QHRY&lc=NL&item_name=Jos%20Koenis&item_number=wordpress%2dplugin&currency_code=EUR&bn=PP%2dDonationsBF%3abtn_donateCC_LG%2egif%3aNonHosted
4
  Tags: woocommerce, coupons, discount
5
  Requires at least: 4.0.0
6
- Tested up to: 4.4.1
7
- Stable tag: 2.3.2
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
@@ -15,7 +15,7 @@ Additional functionality for WooCommerce Coupons: Allow discounts to be automati
15
  "WooCommerce Extended Coupon Features" adds functionality to the WooCommerce coupons and allows for automatic discount rules.
16
  Very easy to use, the functionality is conveniently integrated to the WooCommerce Edit Coupon panel.
17
 
18
- Compatible with WooCommerce 2.5.0. Backwards compatible with older WooCommerce versions (2.2.8 confirmed).
19
 
20
  Full documentation is available at [www.soft79.nl](http://www.soft79.nl/documentation/wjecf).
21
 
@@ -24,6 +24,7 @@ Full documentation is available at [www.soft79.nl](http://www.soft79.nl/document
24
  * Restrict coupon by shipping method,
25
  * Restrict coupon by payment method,
26
  * Restrict coupon by a combination of products
 
27
  * (PRO) Add *free products* to the customer's cart based on coupon rules
28
  * (PRO) Allow a cart discount to be applied based on quantity / subtotal of matching products
29
  * (PRO) Set Auto Coupon priorities (Useful for 'Individual Use Only'-coupons)
@@ -63,7 +64,7 @@ This plugin has been tested in combination with WPML and qTranslate-X.
63
 
64
  1. Create a coupon through the 'Coupons' menu in WooCommerce. TIP: Name it auto_'whatever' so it will be easy to recognize the auto coupons
65
  2. Setup the coupon as you'd normally would. Make sure you enter a description for the coupon and set usage restrictions
66
- 3. In the "Usage Restriction" tab, check the box *Auto coupon*
67
  4. Voila! That's it
68
 
69
  == Frequently Asked Questions ==
@@ -105,6 +106,14 @@ Sure! [This](https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=5T9XQ
105
 
106
  == Changelog ==
107
 
 
 
 
 
 
 
 
 
108
  = 2.3.2 =
109
  * FEATURE: Display custom error message when coupon is invalidated by this plugin
110
  * FIX: apply_coupon redirected to wrong url when home_url contained a subdirectory
@@ -222,11 +231,3 @@ Sure! [This](https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=5T9XQ
222
 
223
  = 1.0 =
224
  * First version ever!
225
- == Upgrade Notice ==
226
-
227
- = 2.0.0 =
228
- New name, extended functionality!
229
- Additional features are added to the coupon:
230
- Restrict by shipping method, restrict by payment method, restrict by a combination of products.
231
-
232
-
3
  Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=5T9XQBCS2QHRY&lc=NL&item_name=Jos%20Koenis&item_number=wordpress%2dplugin&currency_code=EUR&bn=PP%2dDonationsBF%3abtn_donateCC_LG%2egif%3aNonHosted
4
  Tags: woocommerce, coupons, discount
5
  Requires at least: 4.0.0
6
+ Tested up to: 4.5.2
7
+ Stable tag: 2.3.3
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
15
  "WooCommerce Extended Coupon Features" adds functionality to the WooCommerce coupons and allows for automatic discount rules.
16
  Very easy to use, the functionality is conveniently integrated to the WooCommerce Edit Coupon panel.
17
 
18
+ Compatible with WooCommerce 2.5.5. Backwards compatible with older WooCommerce versions (2.2.8 confirmed).
19
 
20
  Full documentation is available at [www.soft79.nl](http://www.soft79.nl/documentation/wjecf).
21
 
24
  * Restrict coupon by shipping method,
25
  * Restrict coupon by payment method,
26
  * Restrict coupon by a combination of products
27
+ * Restrict coupon to certain customer roles
28
  * (PRO) Add *free products* to the customer's cart based on coupon rules
29
  * (PRO) Allow a cart discount to be applied based on quantity / subtotal of matching products
30
  * (PRO) Set Auto Coupon priorities (Useful for 'Individual Use Only'-coupons)
64
 
65
  1. Create a coupon through the 'Coupons' menu in WooCommerce. TIP: Name it auto_'whatever' so it will be easy to recognize the auto coupons
66
  2. Setup the coupon as you'd normally would. Make sure you enter a description for the coupon and set usage restrictions
67
+ 3. In the "Miscellaneous" tab, check the box *Auto coupon*
68
  4. Voila! That's it
69
 
70
  == Frequently Asked Questions ==
106
 
107
  == Changelog ==
108
 
109
+ = 2.3.3 =
110
+ * FIX: limit_usage_to_x_items: Removed call to get_discount_amount from coupon_has_a_value; it is redundant and caused limit_usage_to_x_items to change
111
+ * (PRO) FEATURE: Filters wjecf_free_product_amount_for_coupon, wjecf_bogo_product_amount_for_coupon and wjecf_set_free_product_amount_in_cart
112
+ * (PRO) FEATURE: Keep track of by-url-coupons (?apply_coupon=) and apply when they validate
113
+ * (PRO) FIX: Experimental feature 'Allow discount on cart with excluded items' didn't work since 2.2.3
114
+ * (PRO) FIX: Invalid free product quantity applied when using both BOGO and FREE products in a single coupon.
115
+ * (PRO) FIX: limit_usage_to_x_items: Possible wrong discount on combination of limit_usage_to_x_items and _wjecf_apply_discount_to
116
+
117
  = 2.3.2 =
118
  * FEATURE: Display custom error message when coupon is invalidated by this plugin
119
  * FIX: apply_coupon redirected to wrong url when home_url contained a subdirectory
231
 
232
  = 1.0 =
233
  * First version ever!
 
 
 
 
 
 
 
 
woocommerce-jos-autocoupon.php CHANGED
@@ -3,7 +3,7 @@
3
  * Plugin Name: WooCommerce Extended Coupon Features
4
  * Plugin URI: http://www.soft79.nl
5
  * Description: Additional functionality for WooCommerce Coupons: Apply certain coupons automatically, allow applying coupons via an url, etc...
6
- * Version: 2.3.2
7
  * Author: Jos Koenis
8
  * License: GPL2
9
  */
@@ -18,6 +18,7 @@ if ( ! function_exists( 'wjecf_load_plugin_textdomain' ) ) {
18
  require_once( 'includes/wjecf-controller.php' );
19
  require_once( 'includes/abstract-wjecf-plugin.php' );
20
  require_once( 'includes/admin/wjecf-admin.php' );
 
21
  //Optional
22
  @include_once( 'includes/wjecf-autocoupon.php' );
23
  @include_once( 'includes/wjecf-wpml.php' );
@@ -50,9 +51,16 @@ if ( ! function_exists( 'wjecf_load_plugin_textdomain' ) ) {
50
  }
51
  }
52
 
 
 
 
 
 
 
53
 
54
  $wjecf_extended_coupon_features = WJECF();
55
  WJECF()->add_plugin('WJECF_Admin');
 
56
  WJECF()->add_plugin('WJECF_AutoCoupon');
57
  WJECF()->add_plugin('WJECF_WPML');
58
  WJECF()->add_plugin('WJECF_Pro_Free_Products');
3
  * Plugin Name: WooCommerce Extended Coupon Features
4
  * Plugin URI: http://www.soft79.nl
5
  * Description: Additional functionality for WooCommerce Coupons: Apply certain coupons automatically, allow applying coupons via an url, etc...
6
+ * Version: 2.3.3
7
  * Author: Jos Koenis
8
  * License: GPL2
9
  */
18
  require_once( 'includes/wjecf-controller.php' );
19
  require_once( 'includes/abstract-wjecf-plugin.php' );
20
  require_once( 'includes/admin/wjecf-admin.php' );
21
+ require_once( 'includes/admin/wjecf-admin-auto-upgrade.php' );
22
  //Optional
23
  @include_once( 'includes/wjecf-autocoupon.php' );
24
  @include_once( 'includes/wjecf-wpml.php' );
51
  }
52
  }
53
 
54
+ /**
55
+ * Get the instance if the WJECF_Admin plugin
56
+ */
57
+ function WJECF_ADMIN() {
58
+ return WJECF()->get_plugin('WJECF_Admin');
59
+ }
60
 
61
  $wjecf_extended_coupon_features = WJECF();
62
  WJECF()->add_plugin('WJECF_Admin');
63
+ WJECF()->add_plugin('WJECF_Admin_Auto_Upgrade');
64
  WJECF()->add_plugin('WJECF_AutoCoupon');
65
  WJECF()->add_plugin('WJECF_WPML');
66
  WJECF()->add_plugin('WJECF_Pro_Free_Products');