Discount Rules for WooCommerce - Version 2.3.2

Version Description

  • 05/11/20 =
  • Fix - Displaying discount table if user role based condition is false.
  • Fix - Discount fee doesn't works when Combine all discounts option enabled.
  • Fix - BOGO Cheapest doesn't works with WPML translation management.
  • Fix - BOGO Cheapest individual option not works when apply all matched rule is enabled.
  • Improvement - Added nonce for dynamic strikeout ajax method.
  • Improvement - Custom Coupon not added in some cases.
  • Improvement - Added country field in state condition.
  • Improvement - JQuery DragTable updated.
  • Improvement - BOGO Cheapest individual option improved.
  • Improvement - Optimized the purchase history based first order query.
Download this release

Release Info

Developer flycart
Plugin Icon 128x128 Discount Rules for WooCommerce
Version 2.3.2
Comparing to
See all releases

Code changes from version 2.3.1 to 2.3.2

i18n/languages/woo-discount-rules.pot CHANGED
@@ -13,8 +13,8 @@ msgstr ""
13
  "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;"
14
 
15
  #: common.php:9 v2/App/Controllers/Admin/Tabs/Statistics.php:118
16
- #: v2/App/Controllers/Admin/WDRAjax.php:54
17
- #: v2/App/Controllers/Admin/WDRAjax.php:57
18
  msgid "Authentication required"
19
  msgstr ""
20
 
@@ -192,11 +192,11 @@ msgstr ""
192
  #: v2/App/Views/Admin/Rules/Manage.php:154
193
  #: v2/App/Views/Admin/Tabs/settings.php:24
194
  #: v2/App/Views/Admin/Tabs/settings.php:64
195
- #: v2/App/Views/Admin/Tabs/settings.php:121
196
- #: v2/App/Views/Admin/Tabs/settings.php:168
197
- #: v2/App/Views/Admin/Tabs/settings.php:239
198
- #: v2/App/Views/Admin/Tabs/settings.php:362
199
- #: v2/App/Views/Admin/Tabs/settings.php:443
200
  msgid "Read Docs"
201
  msgstr ""
202
 
@@ -316,7 +316,7 @@ msgstr ""
316
  #: v1/view/settings_promotion.php:22 v1/view/settings_promotion.php:62
317
  #: v1/view/settings_promotion.php:97 v1/view/settings_promotion.php:132
318
  #: v2/App/Views/Admin/Tabs/DiscountRule.php:252
319
- #: v2/App/Views/Admin/Tabs/settings.php:366
320
  msgid "Disabled"
321
  msgstr ""
322
 
@@ -778,7 +778,7 @@ msgstr ""
778
  #: v1/includes/discount-base.php:1173 v1/view/settings_price_rules.php:208
779
  #: v1/view/settings_price_rules.php:226 v1/view/settings_price_rules.php:244
780
  #: v1/view/settings_price_rules.php:262
781
- #: v2/App/Views/Admin/Tabs/settings.php:546
782
  msgid "Show"
783
  msgstr ""
784
 
@@ -1017,7 +1017,7 @@ msgid ""
1017
  msgstr ""
1018
 
1019
  #: v1/includes/discount-base.php:1302
1020
- #: v2/App/Controllers/ManageDiscount.php:1141
1021
  #, php-format
1022
  msgid ""
1023
  "Sorry, it is not possible to apply coupon <b>\"%s\"</b> as you already have "
@@ -1495,7 +1495,7 @@ msgstr ""
1495
  msgid "Performance"
1496
  msgstr ""
1497
 
1498
- #: v1/view/settings.php:42 v2/App/Views/Admin/Tabs/settings.php:322
1499
  msgid "Promotion"
1500
  msgstr ""
1501
 
@@ -1617,12 +1617,12 @@ msgstr ""
1617
  #: v2/App/Views/Admin/Rules/DiscountBatch/Main.php:43
1618
  #: v2/App/Views/Admin/Tabs/settings.php:55
1619
  #: v2/App/Views/Admin/Tabs/settings.php:86
1620
- #: v2/App/Views/Admin/Tabs/settings.php:101
1621
- #: v2/App/Views/Admin/Tabs/settings.php:173
1622
- #: v2/App/Views/Admin/Tabs/settings.php:268
1623
- #: v2/App/Views/Admin/Tabs/settings.php:297
1624
- #: v2/App/Views/Admin/Tabs/settings.php:335
1625
- #: v2/App/Views/Admin/Tabs/settings.php:393
1626
  msgid "Yes"
1627
  msgstr ""
1628
 
@@ -1633,12 +1633,12 @@ msgstr ""
1633
  #: v2/App/Views/Admin/Rules/DiscountBatch/Main.php:48
1634
  #: v2/App/Views/Admin/Tabs/settings.php:59
1635
  #: v2/App/Views/Admin/Tabs/settings.php:90
1636
- #: v2/App/Views/Admin/Tabs/settings.php:105
1637
- #: v2/App/Views/Admin/Tabs/settings.php:176
1638
- #: v2/App/Views/Admin/Tabs/settings.php:272
1639
- #: v2/App/Views/Admin/Tabs/settings.php:303
1640
- #: v2/App/Views/Admin/Tabs/settings.php:341
1641
- #: v2/App/Views/Admin/Tabs/settings.php:398
1642
  msgid "No"
1643
  msgstr ""
1644
 
@@ -1750,24 +1750,24 @@ msgid "Show Price discount on product pages :"
1750
  msgstr ""
1751
 
1752
  #: v1/view/settings_price_rules.php:128
1753
- #: v2/App/Views/Admin/Tabs/settings.php:243
1754
  msgid "Show when a rule condition is matched"
1755
  msgstr ""
1756
 
1757
  #: v1/view/settings_price_rules.php:131
1758
- #: v2/App/Views/Admin/Tabs/settings.php:244
1759
  msgid "Show after a rule condition is matched"
1760
  msgstr ""
1761
 
1762
  #: v1/view/settings_price_rules.php:134
1763
- #: v2/App/Views/Admin/Tabs/settings.php:245
1764
  msgid "Shown on quantity update (dynamic)"
1765
  msgstr ""
1766
 
1767
  #: v1/view/settings_price_rules.php:137 v1/view/settings_price_rules.php:211
1768
  #: v1/view/settings_price_rules.php:229 v1/view/settings_price_rules.php:247
1769
  #: v1/view/settings_price_rules.php:265
1770
- #: v2/App/Views/Admin/Tabs/settings.php:549
1771
  msgid "Don't Show"
1772
  msgstr ""
1773
 
@@ -1822,12 +1822,12 @@ msgid "Show a Sale badge on product pages :"
1822
  msgstr ""
1823
 
1824
  #: v1/view/settings_price_rules.php:284
1825
- #: v2/App/Views/Admin/Tabs/settings.php:130
1826
  msgid "Do not show"
1827
  msgstr ""
1828
 
1829
  #: v1/view/settings_price_rules.php:287
1830
- #: v2/App/Views/Admin/Tabs/settings.php:128
1831
  msgid "Show only after a rule condition is matched exactly"
1832
  msgstr ""
1833
 
@@ -1838,17 +1838,17 @@ msgid ""
1838
  msgstr ""
1839
 
1840
  #: v1/view/settings_price_rules.php:301
1841
- #: v2/App/Views/Admin/Tabs/settings.php:136
1842
  msgid "Do you want to customize the sale badge?"
1843
  msgstr ""
1844
 
1845
  #: v1/view/settings_price_rules.php:308
1846
- #: v2/App/Views/Admin/Tabs/settings.php:146
1847
  msgid "Yes, I would like to customize the sale badge"
1848
  msgstr ""
1849
 
1850
  #: v1/view/settings_price_rules.php:310
1851
- #: v2/App/Views/Admin/Tabs/settings.php:150
1852
  msgid ""
1853
  "Force override the label for sale badge (useful when your theme has override "
1854
  "for sale badge)."
@@ -1876,19 +1876,19 @@ msgstr ""
1876
  msgid "Display savings text (for price rules)"
1877
  msgstr ""
1878
 
1879
- #: v1/view/settings_promotion.php:25 v2/App/Views/Admin/Tabs/settings.php:367
1880
  msgid "On each line item"
1881
  msgstr ""
1882
 
1883
- #: v1/view/settings_promotion.php:28 v2/App/Views/Admin/Tabs/settings.php:368
1884
  msgid "On after total"
1885
  msgstr ""
1886
 
1887
- #: v1/view/settings_promotion.php:31 v2/App/Views/Admin/Tabs/settings.php:369
1888
  msgid "Both in line item and after total"
1889
  msgstr ""
1890
 
1891
- #: v1/view/settings_promotion.php:39 v2/App/Views/Admin/Tabs/settings.php:376
1892
  msgid "Savings text to show"
1893
  msgstr ""
1894
 
@@ -1924,19 +1924,19 @@ msgid ""
1924
  "discounts)"
1925
  msgstr ""
1926
 
1927
- #: v1/view/settings_promotion.php:134 v2/App/Views/Admin/Tabs/settings.php:352
1928
  msgid "Shop page"
1929
  msgstr ""
1930
 
1931
- #: v1/view/settings_promotion.php:137 v2/App/Views/Admin/Tabs/settings.php:353
1932
  msgid "Product page"
1933
  msgstr ""
1934
 
1935
- #: v1/view/settings_promotion.php:140 v2/App/Views/Admin/Tabs/settings.php:354
1936
  msgid "Cart page"
1937
  msgstr ""
1938
 
1939
- #: v1/view/settings_promotion.php:143 v2/App/Views/Admin/Tabs/settings.php:355
1940
  msgid "Checkout page"
1941
  msgstr ""
1942
 
@@ -2372,7 +2372,7 @@ msgid "Do not use"
2372
  msgstr ""
2373
 
2374
  #: v1/view/view-pricing-rules.php:394 v2/App/Helpers/Helper.php:168
2375
- #: v2/App/Views/Admin/Tabs/settings.php:283
2376
  msgid "Coupon"
2377
  msgstr ""
2378
 
@@ -2588,7 +2588,7 @@ msgstr ""
2588
  #: v2/App/Conditions/CartLineItemsCount.php:16
2589
  #: v2/App/Conditions/CartSubTotal.php:18 v2/App/Helpers/ProOptions.php:80
2590
  #: v2/App/Helpers/ProOptions.php:136 v2/App/Helpers/ProOptions.php:144
2591
- #: v2/App/Helpers/ProOptions.php:152 v2/App/Views/Admin/Tabs/settings.php:256
2592
  msgid "Cart"
2593
  msgstr ""
2594
 
@@ -2668,7 +2668,7 @@ msgid "Copied!"
2668
  msgstr ""
2669
 
2670
  #: v2/App/Controllers/Admin/Settings.php:433
2671
- #: v2/App/Views/Admin/Tabs/settings.php:508
2672
  msgid "Copy ShortCode"
2673
  msgstr ""
2674
 
@@ -2949,6 +2949,10 @@ msgstr ""
2949
  msgid "<b>This rule is not running currently:</b> Validity expired"
2950
  msgstr ""
2951
 
 
 
 
 
2952
  #: v2/App/Controllers/Admin/Tabs/Compatible.php:23
2953
  msgid "Compatibility"
2954
  msgstr ""
@@ -3001,7 +3005,7 @@ msgstr ""
3001
  #: v2/App/Controllers/Base.php:43 v2/App/Controllers/Base.php:48
3002
  #: v2/App/Helpers/ProOptions.php:34 v2/App/Helpers/ProOptions.php:40
3003
  #: v2/App/Helpers/ProOptions.php:46 v2/App/Helpers/ProOptions.php:52
3004
- #: v2/App/Helpers/ProOptions.php:58 v2/App/Views/Admin/Tabs/settings.php:114
3005
  msgid "Product"
3006
  msgstr ""
3007
 
@@ -3024,23 +3028,27 @@ msgstr ""
3024
  msgid "Bulk Discount"
3025
  msgstr ""
3026
 
3027
- #: v2/App/Controllers/ManageDiscount.php:694
3028
- #: v2/App/Controllers/ManageDiscount.php:897
3029
- #: v2/App/Controllers/ManageDiscount.php:900 v2/App/Helpers/Helper.php:268
 
 
 
 
3030
  #: v2/App/Helpers/Helper.php:269
3031
  msgid "Cart discount"
3032
  msgstr ""
3033
 
3034
- #: v2/App/Controllers/ManageDiscount.php:1155
3035
  msgid "Coupon code applied successfully."
3036
  msgstr ""
3037
 
3038
- #: v2/App/Controllers/ManageDiscount.php:1570
3039
- #: v2/App/Views/Admin/Tabs/settings.php:409
3040
  msgid "Discount <strong>{{title}}</strong> has been applied to your cart."
3041
  msgstr ""
3042
 
3043
- #: v2/App/Controllers/ManageDiscount.php:1695
3044
  msgid "You saved {{total_discount}}"
3045
  msgstr ""
3046
 
@@ -3293,17 +3301,17 @@ msgstr ""
3293
  msgid "Bundle (Set) Discount - PRO -"
3294
  msgstr ""
3295
 
3296
- #: v2/App/Helpers/Rule.php:1201 v2/App/Helpers/Rule.php:1212
3297
  msgid "discount"
3298
  msgstr ""
3299
 
3300
- #: v2/App/Helpers/Rule.php:1272 v2/App/Helpers/Rule.php:1372
3301
  #: v2/App/Views/Admin/Tabs/ImportExport.php:99
3302
  msgid "Untitled Rule"
3303
  msgstr ""
3304
 
3305
  #: v2/App/Helpers/Validation.php:146 v2/App/Helpers/Validation.php:151
3306
- #: v2/App/Helpers/Validation.php:317
3307
  msgid "Invalid characters"
3308
  msgstr ""
3309
 
@@ -3390,23 +3398,23 @@ msgid ""
3390
  "Woocommerce after main content(Archive / Shop / Cat Pages / single product)"
3391
  msgstr ""
3392
 
3393
- #: v2/App/Helpers/Woocommerce.php:952 v2/App/Views/Admin/Tabs/settings.php:194
3394
- #: v2/App/Views/Admin/Tabs/settings.php:212
3395
  msgid "Woocommerce before single product"
3396
  msgstr ""
3397
 
3398
- #: v2/App/Helpers/Woocommerce.php:953 v2/App/Views/Admin/Tabs/settings.php:196
3399
- #: v2/App/Views/Admin/Tabs/settings.php:214
3400
  msgid "Woocommerce before single product summary"
3401
  msgstr ""
3402
 
3403
- #: v2/App/Helpers/Woocommerce.php:954 v2/App/Views/Admin/Tabs/settings.php:195
3404
- #: v2/App/Views/Admin/Tabs/settings.php:213
3405
  msgid "Woocommerce after single product summary"
3406
  msgstr ""
3407
 
3408
- #: v2/App/Helpers/Woocommerce.php:955 v2/App/Views/Admin/Tabs/settings.php:193
3409
- #: v2/App/Views/Admin/Tabs/settings.php:211
3410
  msgid "Woocommerce after single product"
3411
  msgstr ""
3412
 
@@ -3618,7 +3626,7 @@ msgid "Preview"
3618
  msgstr ""
3619
 
3620
  #: v2/App/Views/Admin/Rules/DiscountBatch/Main.php:22
3621
- #: v2/App/Views/Admin/Tabs/settings.php:530
3622
  msgid "Note:"
3623
  msgstr ""
3624
 
@@ -3739,7 +3747,7 @@ msgid "Discount Type"
3739
  msgstr ""
3740
 
3741
  #: v2/App/Views/Admin/Rules/Discounts/Bulk.php:63
3742
- #: v2/App/Views/Admin/Tabs/settings.php:596
3743
  msgid "Discount Value"
3744
  msgstr ""
3745
 
@@ -4288,220 +4296,224 @@ msgstr ""
4288
 
4289
  #: v2/App/Views/Admin/Tabs/settings.php:96
4290
  msgid ""
4291
- "suppress third party plugins from modifying the prices. other discount "
4292
  "plugins may not works!"
4293
  msgstr ""
4294
 
4295
- #: v2/App/Views/Admin/Tabs/settings.php:120
4296
- msgid "On-sale badge"
4297
  msgstr ""
4298
 
4299
  #: v2/App/Views/Admin/Tabs/settings.php:121
 
 
 
 
4300
  msgid "show on-sale badge"
4301
  msgstr ""
4302
 
4303
- #: v2/App/Views/Admin/Tabs/settings.php:129
4304
  msgid "Show on products that are covered under any discount rule in the plugin"
4305
  msgstr ""
4306
 
4307
- #: v2/App/Views/Admin/Tabs/settings.php:137
4308
  msgid "Customize the sale badge"
4309
  msgstr ""
4310
 
4311
- #: v2/App/Views/Admin/Tabs/settings.php:155
4312
  msgid "Sale badge content"
4313
  msgstr ""
4314
 
4315
- #: v2/App/Views/Admin/Tabs/settings.php:156
4316
  msgid ""
4317
  "You can use HTML inside. <br><b>IMPORTANT NOTE:</b> This customized sale "
4318
  "badge will be applicable only for products that are part of the discount "
4319
  "rules configured in this plugin <b>Eg:</b><span class=\"onsale\">Sale!</span>"
4320
  msgstr ""
4321
 
4322
- #: v2/App/Views/Admin/Tabs/settings.php:167
4323
  msgid "Show discount table "
4324
  msgstr ""
4325
 
4326
- #: v2/App/Views/Admin/Tabs/settings.php:168
4327
  msgid "Show discount table on product page"
4328
  msgstr ""
4329
 
4330
- #: v2/App/Views/Admin/Tabs/settings.php:177
4331
- #: v2/App/Views/Admin/Tabs/settings.php:525
4332
  msgid "Customize Discount Table"
4333
  msgstr ""
4334
 
4335
- #: v2/App/Views/Admin/Tabs/settings.php:184
4336
  msgid "Position to show discount table"
4337
  msgstr ""
4338
 
4339
- #: v2/App/Views/Admin/Tabs/settings.php:185
4340
  msgid "Position to show discount table on product page"
4341
  msgstr ""
4342
 
4343
- #: v2/App/Views/Admin/Tabs/settings.php:189
4344
- #: v2/App/Views/Admin/Tabs/settings.php:207
4345
- msgid "Woocommerce before add to cart form"
4346
- msgstr ""
4347
-
4348
  #: v2/App/Views/Admin/Tabs/settings.php:190
4349
  #: v2/App/Views/Admin/Tabs/settings.php:208
4350
- msgid "Woocommerce product meta end"
4351
  msgstr ""
4352
 
4353
  #: v2/App/Views/Admin/Tabs/settings.php:191
4354
  #: v2/App/Views/Admin/Tabs/settings.php:209
4355
- msgid "Woocommerce product meta start"
4356
  msgstr ""
4357
 
4358
  #: v2/App/Views/Admin/Tabs/settings.php:192
4359
  #: v2/App/Views/Admin/Tabs/settings.php:210
 
 
 
 
 
4360
  msgid "Woocommerce after add to cart form"
4361
  msgstr ""
4362
 
4363
- #: v2/App/Views/Admin/Tabs/settings.php:202
4364
  msgid "Position to show discount bar"
4365
  msgstr ""
4366
 
4367
- #: v2/App/Views/Admin/Tabs/settings.php:203
4368
  msgid "Position to show discount bar on product page"
4369
  msgstr ""
4370
 
4371
- #: v2/App/Views/Admin/Tabs/settings.php:220
4372
  msgid "Show strikeout price"
4373
  msgstr ""
4374
 
4375
- #: v2/App/Views/Admin/Tabs/settings.php:221
4376
  msgid "Show product strikeout price on"
4377
  msgstr ""
4378
 
4379
- #: v2/App/Views/Admin/Tabs/settings.php:226
4380
  msgid "On shop page?"
4381
  msgstr ""
4382
 
4383
- #: v2/App/Views/Admin/Tabs/settings.php:229
4384
  msgid "On product page?"
4385
  msgstr ""
4386
 
4387
- #: v2/App/Views/Admin/Tabs/settings.php:232
4388
  msgid "On category page?"
4389
  msgstr ""
4390
 
4391
- #: v2/App/Views/Admin/Tabs/settings.php:238
4392
  msgid "Show Strikeout when"
4393
  msgstr ""
4394
 
4395
- #: v2/App/Views/Admin/Tabs/settings.php:239
4396
  msgid "Show Strikeout when this option is matched"
4397
  msgstr ""
4398
 
4399
- #: v2/App/Views/Admin/Tabs/settings.php:262
4400
  msgid "Show strikeout on cart"
4401
  msgstr ""
4402
 
4403
- #: v2/App/Views/Admin/Tabs/settings.php:263
4404
  msgid "Show price strikeout on cart"
4405
  msgstr ""
4406
 
4407
- #: v2/App/Views/Admin/Tabs/settings.php:277
4408
  msgid "Apply cart discount as"
4409
  msgstr ""
4410
 
4411
- #: v2/App/Views/Admin/Tabs/settings.php:278
4412
  msgid "Apply cart discount as fee/coupon"
4413
  msgstr ""
4414
 
4415
- #: v2/App/Views/Admin/Tabs/settings.php:282
4416
  msgid "Fee"
4417
  msgstr ""
4418
 
4419
- #: v2/App/Views/Admin/Tabs/settings.php:289
4420
  msgid "Combine all cart discounts"
4421
  msgstr ""
4422
 
4423
- #: v2/App/Views/Admin/Tabs/settings.php:290
4424
  msgid "Combine all cart discounts in single discount label"
4425
  msgstr ""
4426
 
4427
- #: v2/App/Views/Admin/Tabs/settings.php:309
4428
  #: v2/App/Views/Admin/Tabs/settings.php:310
 
4429
  msgid "Discount label for combined discounts"
4430
  msgstr ""
4431
 
4432
- #: v2/App/Views/Admin/Tabs/settings.php:327
4433
  msgid "Subtotal based promotion"
4434
  msgstr ""
4435
 
4436
- #: v2/App/Views/Admin/Tabs/settings.php:328
4437
  msgid ""
4438
  "Display subtotal based promotion messages in cart/product/shop pages<br>If "
4439
  "enabled an option to add promotion message will displays on each rule(when "
4440
  "subtotal condition is added)"
4441
  msgstr ""
4442
 
4443
- #: v2/App/Views/Admin/Tabs/settings.php:346
4444
  msgid "Subtotal based promo text"
4445
  msgstr ""
4446
 
4447
- #: v2/App/Views/Admin/Tabs/settings.php:347
4448
  msgid ""
4449
  "Subtotal based promo text (available only for subtotal based discounts) "
4450
  msgstr ""
4451
 
4452
- #: v2/App/Views/Admin/Tabs/settings.php:351
4453
  msgid "Select the page to display promotion message"
4454
  msgstr ""
4455
 
4456
- #: v2/App/Views/Admin/Tabs/settings.php:361
4457
  msgid "Display you saved text"
4458
  msgstr ""
4459
 
4460
- #: v2/App/Views/Admin/Tabs/settings.php:362
4461
  msgid "Display you saved text when rule applied"
4462
  msgstr ""
4463
 
4464
- #: v2/App/Views/Admin/Tabs/settings.php:377
4465
  msgid "You save text to show when rule applied"
4466
  msgstr ""
4467
 
4468
- #: v2/App/Views/Admin/Tabs/settings.php:386
4469
  msgid "Show a discount applied message on cart?"
4470
  msgstr ""
4471
 
4472
- #: v2/App/Views/Admin/Tabs/settings.php:387
4473
  msgid "Show message in cart page on rule applied"
4474
  msgstr ""
4475
 
4476
- #: v2/App/Views/Admin/Tabs/settings.php:403
4477
  msgid "Applied rule message text on cart"
4478
  msgstr ""
4479
 
4480
- #: v2/App/Views/Admin/Tabs/settings.php:404
4481
  msgid "Text to show when rule applied"
4482
  msgstr ""
4483
 
4484
- #: v2/App/Views/Admin/Tabs/settings.php:443
4485
  msgid "On-Sale page"
4486
  msgstr ""
4487
 
4488
- #: v2/App/Views/Admin/Tabs/settings.php:449
4489
  msgid "Select rules for the On Sale Page"
4490
  msgstr ""
4491
 
4492
- #: v2/App/Views/Admin/Tabs/settings.php:463
4493
  msgid "Type the name of the rule to select it"
4494
  msgstr ""
4495
 
4496
- #: v2/App/Views/Admin/Tabs/settings.php:471
4497
  msgid "All active rules"
4498
  msgstr ""
4499
 
4500
- #: v2/App/Views/Admin/Tabs/settings.php:495
4501
  msgid "Save and Build Index"
4502
  msgstr ""
4503
 
4504
- #: v2/App/Views/Admin/Tabs/settings.php:497
4505
  msgid ""
4506
  "Unlock this feature by <a href='https://www.flycart.org/products/wordpress/"
4507
  "woocommerce-discount-rules?utm_source=woo-discount-rules-"
@@ -4509,141 +4521,141 @@ msgid ""
4509
  "target='_blank'>Upgrading to Pro</a>"
4510
  msgstr ""
4511
 
4512
- #: v2/App/Views/Admin/Tabs/settings.php:505
4513
  msgid ""
4514
  "ShortCode to load all products which has discount through Woo Discount Rules"
4515
  msgstr ""
4516
 
4517
- #: v2/App/Views/Admin/Tabs/settings.php:528
4518
  msgid "Settings Saved"
4519
  msgstr ""
4520
 
4521
- #: v2/App/Views/Admin/Tabs/settings.php:529
4522
  msgid "Oops! Something went wrong."
4523
  msgstr ""
4524
 
4525
- #: v2/App/Views/Admin/Tabs/settings.php:530
4526
  msgid " This table contains sample content for design purpose."
4527
  msgstr ""
4528
 
4529
- #: v2/App/Views/Admin/Tabs/settings.php:540
4530
  msgid "Table Header"
4531
  msgstr ""
4532
 
4533
- #: v2/App/Views/Admin/Tabs/settings.php:541
4534
  msgid "Show/Hide table header column names"
4535
  msgstr ""
4536
 
4537
- #: v2/App/Views/Admin/Tabs/settings.php:554
4538
  msgid "Title column Name on table"
4539
  msgstr ""
4540
 
4541
- #: v2/App/Views/Admin/Tabs/settings.php:555
4542
  msgid "Give name for rule title column"
4543
  msgstr ""
4544
 
4545
- #: v2/App/Views/Admin/Tabs/settings.php:566
4546
  msgid "Discount column Name on table"
4547
  msgstr ""
4548
 
4549
- #: v2/App/Views/Admin/Tabs/settings.php:567
4550
  msgid "Give name for discount column"
4551
  msgstr ""
4552
 
4553
- #: v2/App/Views/Admin/Tabs/settings.php:578
4554
  msgid "Range column Name on table"
4555
  msgstr ""
4556
 
4557
- #: v2/App/Views/Admin/Tabs/settings.php:579
4558
  msgid "Give name for range column"
4559
  msgstr ""
4560
 
4561
- #: v2/App/Views/Admin/Tabs/settings.php:590
4562
  msgid "Discount column value on table"
4563
  msgstr ""
4564
 
4565
- #: v2/App/Views/Admin/Tabs/settings.php:591
4566
  msgid "Show Discount value/price in table"
4567
  msgstr ""
4568
 
4569
- #: v2/App/Views/Admin/Tabs/settings.php:599
4570
  msgid "Discounted Price"
4571
  msgstr ""
4572
 
4573
- #: v2/App/Views/Admin/Tabs/settings.php:674
4574
- #: v2/App/Views/Admin/Tabs/settings.php:697
4575
  msgid "Bulk Rule"
4576
  msgstr ""
4577
 
4578
- #: v2/App/Views/Admin/Tabs/settings.php:682
4579
- #: v2/App/Views/Admin/Tabs/settings.php:728
4580
- #: v2/App/Views/Admin/Tabs/settings.php:795
4581
  #: v2/App/Views/Templates/discount_table.php:118
4582
  msgid " flat"
4583
  msgstr ""
4584
 
4585
- #: v2/App/Views/Admin/Tabs/settings.php:688
4586
  msgid "1 - 5"
4587
  msgstr ""
4588
 
4589
- #: v2/App/Views/Admin/Tabs/settings.php:711
4590
  msgid "11 - 15"
4591
  msgstr ""
4592
 
4593
- #: v2/App/Views/Admin/Tabs/settings.php:720
4594
  msgid "Bulk Flat discount"
4595
  msgstr ""
4596
 
4597
- #: v2/App/Views/Admin/Tabs/settings.php:734
4598
  msgid "50 - 60"
4599
  msgstr ""
4600
 
4601
- #: v2/App/Views/Admin/Tabs/settings.php:743
4602
  msgid "Bulk percentage discount"
4603
  msgstr ""
4604
 
4605
- #: v2/App/Views/Admin/Tabs/settings.php:756
4606
  msgid "70 - 80"
4607
  msgstr ""
4608
 
4609
- #: v2/App/Views/Admin/Tabs/settings.php:765
4610
  #, php-format
4611
  msgid "Bulk % discount"
4612
  msgstr ""
4613
 
4614
- #: v2/App/Views/Admin/Tabs/settings.php:778
4615
  msgid "450 - 500"
4616
  msgstr ""
4617
 
4618
- #: v2/App/Views/Admin/Tabs/settings.php:787
4619
  msgid "Bulk flat"
4620
  msgstr ""
4621
 
4622
- #: v2/App/Views/Admin/Tabs/settings.php:801
4623
  msgid "600 - 700"
4624
  msgstr ""
4625
 
4626
- #: v2/App/Views/Admin/Tabs/settings.php:810
4627
  msgid "set percentage discount"
4628
  msgstr ""
4629
 
4630
- #: v2/App/Views/Admin/Tabs/settings.php:823
4631
  msgid "5"
4632
  msgstr ""
4633
 
4634
- #: v2/App/Views/Admin/Tabs/settings.php:832
4635
  msgid "Fixed discount for set"
4636
  msgstr ""
4637
 
4638
- #: v2/App/Views/Admin/Tabs/settings.php:845
4639
  msgid "10"
4640
  msgstr ""
4641
 
4642
- #: v2/App/Views/Admin/Tabs/settings.php:854
4643
  msgid "set flat discount"
4644
  msgstr ""
4645
 
4646
- #: v2/App/Views/Admin/Tabs/settings.php:867
4647
  msgid "15"
4648
  msgstr ""
4649
 
13
  "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;"
14
 
15
  #: common.php:9 v2/App/Controllers/Admin/Tabs/Statistics.php:118
16
+ #: v2/App/Controllers/Admin/WDRAjax.php:55
17
+ #: v2/App/Controllers/Admin/WDRAjax.php:58
18
  msgid "Authentication required"
19
  msgstr ""
20
 
192
  #: v2/App/Views/Admin/Rules/Manage.php:154
193
  #: v2/App/Views/Admin/Tabs/settings.php:24
194
  #: v2/App/Views/Admin/Tabs/settings.php:64
195
+ #: v2/App/Views/Admin/Tabs/settings.php:122
196
+ #: v2/App/Views/Admin/Tabs/settings.php:169
197
+ #: v2/App/Views/Admin/Tabs/settings.php:240
198
+ #: v2/App/Views/Admin/Tabs/settings.php:363
199
+ #: v2/App/Views/Admin/Tabs/settings.php:444
200
  msgid "Read Docs"
201
  msgstr ""
202
 
316
  #: v1/view/settings_promotion.php:22 v1/view/settings_promotion.php:62
317
  #: v1/view/settings_promotion.php:97 v1/view/settings_promotion.php:132
318
  #: v2/App/Views/Admin/Tabs/DiscountRule.php:252
319
+ #: v2/App/Views/Admin/Tabs/settings.php:367
320
  msgid "Disabled"
321
  msgstr ""
322
 
778
  #: v1/includes/discount-base.php:1173 v1/view/settings_price_rules.php:208
779
  #: v1/view/settings_price_rules.php:226 v1/view/settings_price_rules.php:244
780
  #: v1/view/settings_price_rules.php:262
781
+ #: v2/App/Views/Admin/Tabs/settings.php:547
782
  msgid "Show"
783
  msgstr ""
784
 
1017
  msgstr ""
1018
 
1019
  #: v1/includes/discount-base.php:1302
1020
+ #: v2/App/Controllers/ManageDiscount.php:1144
1021
  #, php-format
1022
  msgid ""
1023
  "Sorry, it is not possible to apply coupon <b>\"%s\"</b> as you already have "
1495
  msgid "Performance"
1496
  msgstr ""
1497
 
1498
+ #: v1/view/settings.php:42 v2/App/Views/Admin/Tabs/settings.php:323
1499
  msgid "Promotion"
1500
  msgstr ""
1501
 
1617
  #: v2/App/Views/Admin/Rules/DiscountBatch/Main.php:43
1618
  #: v2/App/Views/Admin/Tabs/settings.php:55
1619
  #: v2/App/Views/Admin/Tabs/settings.php:86
1620
+ #: v2/App/Views/Admin/Tabs/settings.php:102
1621
+ #: v2/App/Views/Admin/Tabs/settings.php:174
1622
+ #: v2/App/Views/Admin/Tabs/settings.php:269
1623
+ #: v2/App/Views/Admin/Tabs/settings.php:298
1624
+ #: v2/App/Views/Admin/Tabs/settings.php:336
1625
+ #: v2/App/Views/Admin/Tabs/settings.php:394
1626
  msgid "Yes"
1627
  msgstr ""
1628
 
1633
  #: v2/App/Views/Admin/Rules/DiscountBatch/Main.php:48
1634
  #: v2/App/Views/Admin/Tabs/settings.php:59
1635
  #: v2/App/Views/Admin/Tabs/settings.php:90
1636
+ #: v2/App/Views/Admin/Tabs/settings.php:106
1637
+ #: v2/App/Views/Admin/Tabs/settings.php:177
1638
+ #: v2/App/Views/Admin/Tabs/settings.php:273
1639
+ #: v2/App/Views/Admin/Tabs/settings.php:304
1640
+ #: v2/App/Views/Admin/Tabs/settings.php:342
1641
+ #: v2/App/Views/Admin/Tabs/settings.php:399
1642
  msgid "No"
1643
  msgstr ""
1644
 
1750
  msgstr ""
1751
 
1752
  #: v1/view/settings_price_rules.php:128
1753
+ #: v2/App/Views/Admin/Tabs/settings.php:244
1754
  msgid "Show when a rule condition is matched"
1755
  msgstr ""
1756
 
1757
  #: v1/view/settings_price_rules.php:131
1758
+ #: v2/App/Views/Admin/Tabs/settings.php:245
1759
  msgid "Show after a rule condition is matched"
1760
  msgstr ""
1761
 
1762
  #: v1/view/settings_price_rules.php:134
1763
+ #: v2/App/Views/Admin/Tabs/settings.php:246
1764
  msgid "Shown on quantity update (dynamic)"
1765
  msgstr ""
1766
 
1767
  #: v1/view/settings_price_rules.php:137 v1/view/settings_price_rules.php:211
1768
  #: v1/view/settings_price_rules.php:229 v1/view/settings_price_rules.php:247
1769
  #: v1/view/settings_price_rules.php:265
1770
+ #: v2/App/Views/Admin/Tabs/settings.php:550
1771
  msgid "Don't Show"
1772
  msgstr ""
1773
 
1822
  msgstr ""
1823
 
1824
  #: v1/view/settings_price_rules.php:284
1825
+ #: v2/App/Views/Admin/Tabs/settings.php:131
1826
  msgid "Do not show"
1827
  msgstr ""
1828
 
1829
  #: v1/view/settings_price_rules.php:287
1830
+ #: v2/App/Views/Admin/Tabs/settings.php:129
1831
  msgid "Show only after a rule condition is matched exactly"
1832
  msgstr ""
1833
 
1838
  msgstr ""
1839
 
1840
  #: v1/view/settings_price_rules.php:301
1841
+ #: v2/App/Views/Admin/Tabs/settings.php:137
1842
  msgid "Do you want to customize the sale badge?"
1843
  msgstr ""
1844
 
1845
  #: v1/view/settings_price_rules.php:308
1846
+ #: v2/App/Views/Admin/Tabs/settings.php:147
1847
  msgid "Yes, I would like to customize the sale badge"
1848
  msgstr ""
1849
 
1850
  #: v1/view/settings_price_rules.php:310
1851
+ #: v2/App/Views/Admin/Tabs/settings.php:151
1852
  msgid ""
1853
  "Force override the label for sale badge (useful when your theme has override "
1854
  "for sale badge)."
1876
  msgid "Display savings text (for price rules)"
1877
  msgstr ""
1878
 
1879
+ #: v1/view/settings_promotion.php:25 v2/App/Views/Admin/Tabs/settings.php:368
1880
  msgid "On each line item"
1881
  msgstr ""
1882
 
1883
+ #: v1/view/settings_promotion.php:28 v2/App/Views/Admin/Tabs/settings.php:369
1884
  msgid "On after total"
1885
  msgstr ""
1886
 
1887
+ #: v1/view/settings_promotion.php:31 v2/App/Views/Admin/Tabs/settings.php:370
1888
  msgid "Both in line item and after total"
1889
  msgstr ""
1890
 
1891
+ #: v1/view/settings_promotion.php:39 v2/App/Views/Admin/Tabs/settings.php:377
1892
  msgid "Savings text to show"
1893
  msgstr ""
1894
 
1924
  "discounts)"
1925
  msgstr ""
1926
 
1927
+ #: v1/view/settings_promotion.php:134 v2/App/Views/Admin/Tabs/settings.php:353
1928
  msgid "Shop page"
1929
  msgstr ""
1930
 
1931
+ #: v1/view/settings_promotion.php:137 v2/App/Views/Admin/Tabs/settings.php:354
1932
  msgid "Product page"
1933
  msgstr ""
1934
 
1935
+ #: v1/view/settings_promotion.php:140 v2/App/Views/Admin/Tabs/settings.php:355
1936
  msgid "Cart page"
1937
  msgstr ""
1938
 
1939
+ #: v1/view/settings_promotion.php:143 v2/App/Views/Admin/Tabs/settings.php:356
1940
  msgid "Checkout page"
1941
  msgstr ""
1942
 
2372
  msgstr ""
2373
 
2374
  #: v1/view/view-pricing-rules.php:394 v2/App/Helpers/Helper.php:168
2375
+ #: v2/App/Views/Admin/Tabs/settings.php:284
2376
  msgid "Coupon"
2377
  msgstr ""
2378
 
2588
  #: v2/App/Conditions/CartLineItemsCount.php:16
2589
  #: v2/App/Conditions/CartSubTotal.php:18 v2/App/Helpers/ProOptions.php:80
2590
  #: v2/App/Helpers/ProOptions.php:136 v2/App/Helpers/ProOptions.php:144
2591
+ #: v2/App/Helpers/ProOptions.php:152 v2/App/Views/Admin/Tabs/settings.php:257
2592
  msgid "Cart"
2593
  msgstr ""
2594
 
2668
  msgstr ""
2669
 
2670
  #: v2/App/Controllers/Admin/Settings.php:433
2671
+ #: v2/App/Views/Admin/Tabs/settings.php:509
2672
  msgid "Copy ShortCode"
2673
  msgstr ""
2674
 
2949
  msgid "<b>This rule is not running currently:</b> Validity expired"
2950
  msgstr ""
2951
 
2952
+ #: v2/App/Controllers/Admin/Settings.php:500
2953
+ msgid "Select State"
2954
+ msgstr ""
2955
+
2956
  #: v2/App/Controllers/Admin/Tabs/Compatible.php:23
2957
  msgid "Compatibility"
2958
  msgstr ""
3005
  #: v2/App/Controllers/Base.php:43 v2/App/Controllers/Base.php:48
3006
  #: v2/App/Helpers/ProOptions.php:34 v2/App/Helpers/ProOptions.php:40
3007
  #: v2/App/Helpers/ProOptions.php:46 v2/App/Helpers/ProOptions.php:52
3008
+ #: v2/App/Helpers/ProOptions.php:58 v2/App/Views/Admin/Tabs/settings.php:115
3009
  msgid "Product"
3010
  msgstr ""
3011
 
3028
  msgid "Bulk Discount"
3029
  msgstr ""
3030
 
3031
+ #: v2/App/Controllers/ManageDiscount.php:133
3032
+ msgid "<span class=\"onsale\">Sale!</span>"
3033
+ msgstr ""
3034
+
3035
+ #: v2/App/Controllers/ManageDiscount.php:697
3036
+ #: v2/App/Controllers/ManageDiscount.php:900
3037
+ #: v2/App/Controllers/ManageDiscount.php:903 v2/App/Helpers/Helper.php:268
3038
  #: v2/App/Helpers/Helper.php:269
3039
  msgid "Cart discount"
3040
  msgstr ""
3041
 
3042
+ #: v2/App/Controllers/ManageDiscount.php:1158
3043
  msgid "Coupon code applied successfully."
3044
  msgstr ""
3045
 
3046
+ #: v2/App/Controllers/ManageDiscount.php:1573
3047
+ #: v2/App/Views/Admin/Tabs/settings.php:410
3048
  msgid "Discount <strong>{{title}}</strong> has been applied to your cart."
3049
  msgstr ""
3050
 
3051
+ #: v2/App/Controllers/ManageDiscount.php:1698
3052
  msgid "You saved {{total_discount}}"
3053
  msgstr ""
3054
 
3301
  msgid "Bundle (Set) Discount - PRO -"
3302
  msgstr ""
3303
 
3304
+ #: v2/App/Helpers/Rule.php:1218 v2/App/Helpers/Rule.php:1229
3305
  msgid "discount"
3306
  msgstr ""
3307
 
3308
+ #: v2/App/Helpers/Rule.php:1289 v2/App/Helpers/Rule.php:1389
3309
  #: v2/App/Views/Admin/Tabs/ImportExport.php:99
3310
  msgid "Untitled Rule"
3311
  msgstr ""
3312
 
3313
  #: v2/App/Helpers/Validation.php:146 v2/App/Helpers/Validation.php:151
3314
+ #: v2/App/Helpers/Validation.php:317 v2/App/Helpers/Validation.php:469
3315
  msgid "Invalid characters"
3316
  msgstr ""
3317
 
3398
  "Woocommerce after main content(Archive / Shop / Cat Pages / single product)"
3399
  msgstr ""
3400
 
3401
+ #: v2/App/Helpers/Woocommerce.php:952 v2/App/Views/Admin/Tabs/settings.php:195
3402
+ #: v2/App/Views/Admin/Tabs/settings.php:213
3403
  msgid "Woocommerce before single product"
3404
  msgstr ""
3405
 
3406
+ #: v2/App/Helpers/Woocommerce.php:953 v2/App/Views/Admin/Tabs/settings.php:197
3407
+ #: v2/App/Views/Admin/Tabs/settings.php:215
3408
  msgid "Woocommerce before single product summary"
3409
  msgstr ""
3410
 
3411
+ #: v2/App/Helpers/Woocommerce.php:954 v2/App/Views/Admin/Tabs/settings.php:196
3412
+ #: v2/App/Views/Admin/Tabs/settings.php:214
3413
  msgid "Woocommerce after single product summary"
3414
  msgstr ""
3415
 
3416
+ #: v2/App/Helpers/Woocommerce.php:955 v2/App/Views/Admin/Tabs/settings.php:194
3417
+ #: v2/App/Views/Admin/Tabs/settings.php:212
3418
  msgid "Woocommerce after single product"
3419
  msgstr ""
3420
 
3626
  msgstr ""
3627
 
3628
  #: v2/App/Views/Admin/Rules/DiscountBatch/Main.php:22
3629
+ #: v2/App/Views/Admin/Tabs/settings.php:531
3630
  msgid "Note:"
3631
  msgstr ""
3632
 
3747
  msgstr ""
3748
 
3749
  #: v2/App/Views/Admin/Rules/Discounts/Bulk.php:63
3750
+ #: v2/App/Views/Admin/Tabs/settings.php:597
3751
  msgid "Discount Value"
3752
  msgstr ""
3753
 
4296
 
4297
  #: v2/App/Views/Admin/Tabs/settings.php:96
4298
  msgid ""
4299
+ "Suppress third party plugins from modifying the prices. other discount "
4300
  "plugins may not works!"
4301
  msgstr ""
4302
 
4303
+ #: v2/App/Views/Admin/Tabs/settings.php:97
4304
+ msgid "Change this option only if recommended."
4305
  msgstr ""
4306
 
4307
  #: v2/App/Views/Admin/Tabs/settings.php:121
4308
+ msgid "On-sale badge"
4309
+ msgstr ""
4310
+
4311
+ #: v2/App/Views/Admin/Tabs/settings.php:122
4312
  msgid "show on-sale badge"
4313
  msgstr ""
4314
 
4315
+ #: v2/App/Views/Admin/Tabs/settings.php:130
4316
  msgid "Show on products that are covered under any discount rule in the plugin"
4317
  msgstr ""
4318
 
4319
+ #: v2/App/Views/Admin/Tabs/settings.php:138
4320
  msgid "Customize the sale badge"
4321
  msgstr ""
4322
 
4323
+ #: v2/App/Views/Admin/Tabs/settings.php:156
4324
  msgid "Sale badge content"
4325
  msgstr ""
4326
 
4327
+ #: v2/App/Views/Admin/Tabs/settings.php:157
4328
  msgid ""
4329
  "You can use HTML inside. <br><b>IMPORTANT NOTE:</b> This customized sale "
4330
  "badge will be applicable only for products that are part of the discount "
4331
  "rules configured in this plugin <b>Eg:</b><span class=\"onsale\">Sale!</span>"
4332
  msgstr ""
4333
 
4334
+ #: v2/App/Views/Admin/Tabs/settings.php:168
4335
  msgid "Show discount table "
4336
  msgstr ""
4337
 
4338
+ #: v2/App/Views/Admin/Tabs/settings.php:169
4339
  msgid "Show discount table on product page"
4340
  msgstr ""
4341
 
4342
+ #: v2/App/Views/Admin/Tabs/settings.php:178
4343
+ #: v2/App/Views/Admin/Tabs/settings.php:526
4344
  msgid "Customize Discount Table"
4345
  msgstr ""
4346
 
4347
+ #: v2/App/Views/Admin/Tabs/settings.php:185
4348
  msgid "Position to show discount table"
4349
  msgstr ""
4350
 
4351
+ #: v2/App/Views/Admin/Tabs/settings.php:186
4352
  msgid "Position to show discount table on product page"
4353
  msgstr ""
4354
 
 
 
 
 
 
4355
  #: v2/App/Views/Admin/Tabs/settings.php:190
4356
  #: v2/App/Views/Admin/Tabs/settings.php:208
4357
+ msgid "Woocommerce before add to cart form"
4358
  msgstr ""
4359
 
4360
  #: v2/App/Views/Admin/Tabs/settings.php:191
4361
  #: v2/App/Views/Admin/Tabs/settings.php:209
4362
+ msgid "Woocommerce product meta end"
4363
  msgstr ""
4364
 
4365
  #: v2/App/Views/Admin/Tabs/settings.php:192
4366
  #: v2/App/Views/Admin/Tabs/settings.php:210
4367
+ msgid "Woocommerce product meta start"
4368
+ msgstr ""
4369
+
4370
+ #: v2/App/Views/Admin/Tabs/settings.php:193
4371
+ #: v2/App/Views/Admin/Tabs/settings.php:211
4372
  msgid "Woocommerce after add to cart form"
4373
  msgstr ""
4374
 
4375
+ #: v2/App/Views/Admin/Tabs/settings.php:203
4376
  msgid "Position to show discount bar"
4377
  msgstr ""
4378
 
4379
+ #: v2/App/Views/Admin/Tabs/settings.php:204
4380
  msgid "Position to show discount bar on product page"
4381
  msgstr ""
4382
 
4383
+ #: v2/App/Views/Admin/Tabs/settings.php:221
4384
  msgid "Show strikeout price"
4385
  msgstr ""
4386
 
4387
+ #: v2/App/Views/Admin/Tabs/settings.php:222
4388
  msgid "Show product strikeout price on"
4389
  msgstr ""
4390
 
4391
+ #: v2/App/Views/Admin/Tabs/settings.php:227
4392
  msgid "On shop page?"
4393
  msgstr ""
4394
 
4395
+ #: v2/App/Views/Admin/Tabs/settings.php:230
4396
  msgid "On product page?"
4397
  msgstr ""
4398
 
4399
+ #: v2/App/Views/Admin/Tabs/settings.php:233
4400
  msgid "On category page?"
4401
  msgstr ""
4402
 
4403
+ #: v2/App/Views/Admin/Tabs/settings.php:239
4404
  msgid "Show Strikeout when"
4405
  msgstr ""
4406
 
4407
+ #: v2/App/Views/Admin/Tabs/settings.php:240
4408
  msgid "Show Strikeout when this option is matched"
4409
  msgstr ""
4410
 
4411
+ #: v2/App/Views/Admin/Tabs/settings.php:263
4412
  msgid "Show strikeout on cart"
4413
  msgstr ""
4414
 
4415
+ #: v2/App/Views/Admin/Tabs/settings.php:264
4416
  msgid "Show price strikeout on cart"
4417
  msgstr ""
4418
 
4419
+ #: v2/App/Views/Admin/Tabs/settings.php:278
4420
  msgid "Apply cart discount as"
4421
  msgstr ""
4422
 
4423
+ #: v2/App/Views/Admin/Tabs/settings.php:279
4424
  msgid "Apply cart discount as fee/coupon"
4425
  msgstr ""
4426
 
4427
+ #: v2/App/Views/Admin/Tabs/settings.php:283
4428
  msgid "Fee"
4429
  msgstr ""
4430
 
4431
+ #: v2/App/Views/Admin/Tabs/settings.php:290
4432
  msgid "Combine all cart discounts"
4433
  msgstr ""
4434
 
4435
+ #: v2/App/Views/Admin/Tabs/settings.php:291
4436
  msgid "Combine all cart discounts in single discount label"
4437
  msgstr ""
4438
 
 
4439
  #: v2/App/Views/Admin/Tabs/settings.php:310
4440
+ #: v2/App/Views/Admin/Tabs/settings.php:311
4441
  msgid "Discount label for combined discounts"
4442
  msgstr ""
4443
 
4444
+ #: v2/App/Views/Admin/Tabs/settings.php:328
4445
  msgid "Subtotal based promotion"
4446
  msgstr ""
4447
 
4448
+ #: v2/App/Views/Admin/Tabs/settings.php:329
4449
  msgid ""
4450
  "Display subtotal based promotion messages in cart/product/shop pages<br>If "
4451
  "enabled an option to add promotion message will displays on each rule(when "
4452
  "subtotal condition is added)"
4453
  msgstr ""
4454
 
4455
+ #: v2/App/Views/Admin/Tabs/settings.php:347
4456
  msgid "Subtotal based promo text"
4457
  msgstr ""
4458
 
4459
+ #: v2/App/Views/Admin/Tabs/settings.php:348
4460
  msgid ""
4461
  "Subtotal based promo text (available only for subtotal based discounts) "
4462
  msgstr ""
4463
 
4464
+ #: v2/App/Views/Admin/Tabs/settings.php:352
4465
  msgid "Select the page to display promotion message"
4466
  msgstr ""
4467
 
4468
+ #: v2/App/Views/Admin/Tabs/settings.php:362
4469
  msgid "Display you saved text"
4470
  msgstr ""
4471
 
4472
+ #: v2/App/Views/Admin/Tabs/settings.php:363
4473
  msgid "Display you saved text when rule applied"
4474
  msgstr ""
4475
 
4476
+ #: v2/App/Views/Admin/Tabs/settings.php:378
4477
  msgid "You save text to show when rule applied"
4478
  msgstr ""
4479
 
4480
+ #: v2/App/Views/Admin/Tabs/settings.php:387
4481
  msgid "Show a discount applied message on cart?"
4482
  msgstr ""
4483
 
4484
+ #: v2/App/Views/Admin/Tabs/settings.php:388
4485
  msgid "Show message in cart page on rule applied"
4486
  msgstr ""
4487
 
4488
+ #: v2/App/Views/Admin/Tabs/settings.php:404
4489
  msgid "Applied rule message text on cart"
4490
  msgstr ""
4491
 
4492
+ #: v2/App/Views/Admin/Tabs/settings.php:405
4493
  msgid "Text to show when rule applied"
4494
  msgstr ""
4495
 
4496
+ #: v2/App/Views/Admin/Tabs/settings.php:444
4497
  msgid "On-Sale page"
4498
  msgstr ""
4499
 
4500
+ #: v2/App/Views/Admin/Tabs/settings.php:450
4501
  msgid "Select rules for the On Sale Page"
4502
  msgstr ""
4503
 
4504
+ #: v2/App/Views/Admin/Tabs/settings.php:464
4505
  msgid "Type the name of the rule to select it"
4506
  msgstr ""
4507
 
4508
+ #: v2/App/Views/Admin/Tabs/settings.php:472
4509
  msgid "All active rules"
4510
  msgstr ""
4511
 
4512
+ #: v2/App/Views/Admin/Tabs/settings.php:496
4513
  msgid "Save and Build Index"
4514
  msgstr ""
4515
 
4516
+ #: v2/App/Views/Admin/Tabs/settings.php:498
4517
  msgid ""
4518
  "Unlock this feature by <a href='https://www.flycart.org/products/wordpress/"
4519
  "woocommerce-discount-rules?utm_source=woo-discount-rules-"
4521
  "target='_blank'>Upgrading to Pro</a>"
4522
  msgstr ""
4523
 
4524
+ #: v2/App/Views/Admin/Tabs/settings.php:506
4525
  msgid ""
4526
  "ShortCode to load all products which has discount through Woo Discount Rules"
4527
  msgstr ""
4528
 
4529
+ #: v2/App/Views/Admin/Tabs/settings.php:529
4530
  msgid "Settings Saved"
4531
  msgstr ""
4532
 
4533
+ #: v2/App/Views/Admin/Tabs/settings.php:530
4534
  msgid "Oops! Something went wrong."
4535
  msgstr ""
4536
 
4537
+ #: v2/App/Views/Admin/Tabs/settings.php:531
4538
  msgid " This table contains sample content for design purpose."
4539
  msgstr ""
4540
 
4541
+ #: v2/App/Views/Admin/Tabs/settings.php:541
4542
  msgid "Table Header"
4543
  msgstr ""
4544
 
4545
+ #: v2/App/Views/Admin/Tabs/settings.php:542
4546
  msgid "Show/Hide table header column names"
4547
  msgstr ""
4548
 
4549
+ #: v2/App/Views/Admin/Tabs/settings.php:555
4550
  msgid "Title column Name on table"
4551
  msgstr ""
4552
 
4553
+ #: v2/App/Views/Admin/Tabs/settings.php:556
4554
  msgid "Give name for rule title column"
4555
  msgstr ""
4556
 
4557
+ #: v2/App/Views/Admin/Tabs/settings.php:567
4558
  msgid "Discount column Name on table"
4559
  msgstr ""
4560
 
4561
+ #: v2/App/Views/Admin/Tabs/settings.php:568
4562
  msgid "Give name for discount column"
4563
  msgstr ""
4564
 
4565
+ #: v2/App/Views/Admin/Tabs/settings.php:579
4566
  msgid "Range column Name on table"
4567
  msgstr ""
4568
 
4569
+ #: v2/App/Views/Admin/Tabs/settings.php:580
4570
  msgid "Give name for range column"
4571
  msgstr ""
4572
 
4573
+ #: v2/App/Views/Admin/Tabs/settings.php:591
4574
  msgid "Discount column value on table"
4575
  msgstr ""
4576
 
4577
+ #: v2/App/Views/Admin/Tabs/settings.php:592
4578
  msgid "Show Discount value/price in table"
4579
  msgstr ""
4580
 
4581
+ #: v2/App/Views/Admin/Tabs/settings.php:600
4582
  msgid "Discounted Price"
4583
  msgstr ""
4584
 
4585
+ #: v2/App/Views/Admin/Tabs/settings.php:675
4586
+ #: v2/App/Views/Admin/Tabs/settings.php:698
4587
  msgid "Bulk Rule"
4588
  msgstr ""
4589
 
4590
+ #: v2/App/Views/Admin/Tabs/settings.php:683
4591
+ #: v2/App/Views/Admin/Tabs/settings.php:729
4592
+ #: v2/App/Views/Admin/Tabs/settings.php:796
4593
  #: v2/App/Views/Templates/discount_table.php:118
4594
  msgid " flat"
4595
  msgstr ""
4596
 
4597
+ #: v2/App/Views/Admin/Tabs/settings.php:689
4598
  msgid "1 - 5"
4599
  msgstr ""
4600
 
4601
+ #: v2/App/Views/Admin/Tabs/settings.php:712
4602
  msgid "11 - 15"
4603
  msgstr ""
4604
 
4605
+ #: v2/App/Views/Admin/Tabs/settings.php:721
4606
  msgid "Bulk Flat discount"
4607
  msgstr ""
4608
 
4609
+ #: v2/App/Views/Admin/Tabs/settings.php:735
4610
  msgid "50 - 60"
4611
  msgstr ""
4612
 
4613
+ #: v2/App/Views/Admin/Tabs/settings.php:744
4614
  msgid "Bulk percentage discount"
4615
  msgstr ""
4616
 
4617
+ #: v2/App/Views/Admin/Tabs/settings.php:757
4618
  msgid "70 - 80"
4619
  msgstr ""
4620
 
4621
+ #: v2/App/Views/Admin/Tabs/settings.php:766
4622
  #, php-format
4623
  msgid "Bulk % discount"
4624
  msgstr ""
4625
 
4626
+ #: v2/App/Views/Admin/Tabs/settings.php:779
4627
  msgid "450 - 500"
4628
  msgstr ""
4629
 
4630
+ #: v2/App/Views/Admin/Tabs/settings.php:788
4631
  msgid "Bulk flat"
4632
  msgstr ""
4633
 
4634
+ #: v2/App/Views/Admin/Tabs/settings.php:802
4635
  msgid "600 - 700"
4636
  msgstr ""
4637
 
4638
+ #: v2/App/Views/Admin/Tabs/settings.php:811
4639
  msgid "set percentage discount"
4640
  msgstr ""
4641
 
4642
+ #: v2/App/Views/Admin/Tabs/settings.php:824
4643
  msgid "5"
4644
  msgstr ""
4645
 
4646
+ #: v2/App/Views/Admin/Tabs/settings.php:833
4647
  msgid "Fixed discount for set"
4648
  msgstr ""
4649
 
4650
+ #: v2/App/Views/Admin/Tabs/settings.php:846
4651
  msgid "10"
4652
  msgstr ""
4653
 
4654
+ #: v2/App/Views/Admin/Tabs/settings.php:855
4655
  msgid "set flat discount"
4656
  msgstr ""
4657
 
4658
+ #: v2/App/Views/Admin/Tabs/settings.php:868
4659
  msgid "15"
4660
  msgstr ""
4661
 
readme.txt CHANGED
@@ -4,7 +4,7 @@ Donate link: https://flycart.org/
4
  Tags: woocommerce, coupons, discounts, dynamic pricing, Buy One Get One Free, pricing deals, bulk discount, discount
5
  Requires at least: 4.4.1
6
  Tested up to: 5.5
7
- Stable tag: 2.3.1
8
  License: GPLv3 or later
9
  License URI: http://www.gnu.org/licenses/gpl-3.0.html
10
 
@@ -301,7 +301,7 @@ In that case, the rule with the higher priority will be applied.
301
 
302
  = Are there any limit for the number of rules ? =
303
 
304
- While free version allows you up to 3 rules in each discount type, the PRO version helps you setup unlimited discount rules in your store.
305
 
306
  = What happens after my PRO license expires ? =
307
 
@@ -317,10 +317,9 @@ Yes. It is possible to set discount rule based on the Customer city. Eg:Customer
317
 
318
  = How to setup BOGO (Buy ONE get ONE) deals ? =
319
 
320
- Under WooDiscount Rules,
321
- General - Price Discount Rule -> Add new rule -> Enter Priority, Rule Name -> Next
322
- Condition - Apply to -> Select the Product -> Select Customers -> Next
323
- Discount - Enter minimum & Maximum quantity -> Adjustment Type -> Product Discount -> Value (Free products to be added) -> Save Rule
324
 
325
  == Screenshots ==
326
 
@@ -338,6 +337,18 @@ Discount - Enter minimum & Maximum quantity -> Adjustment Type -> Product Discou
338
 
339
  == Changelog ==
340
 
 
 
 
 
 
 
 
 
 
 
 
 
341
  = 2.3.1 - 16/10/20 =
342
  * Fix - JS error
343
  * Improvement - Discount table improvement.
4
  Tags: woocommerce, coupons, discounts, dynamic pricing, Buy One Get One Free, pricing deals, bulk discount, discount
5
  Requires at least: 4.4.1
6
  Tested up to: 5.5
7
+ Stable tag: 2.3.2
8
  License: GPLv3 or later
9
  License URI: http://www.gnu.org/licenses/gpl-3.0.html
10
 
301
 
302
  = Are there any limit for the number of rules ? =
303
 
304
+ With free version and the PRO version, there is absolutely no limits. You can create unlimited discount rules for your store.
305
 
306
  = What happens after my PRO license expires ? =
307
 
317
 
318
  = How to setup BOGO (Buy ONE get ONE) deals ? =
319
 
320
+ Navigate to WooCommerce -> Woo Discount Rules -> Add New Rule.
321
+ Choose the discount type as Buy X get X. Then choose the filter and quantity ranges.
322
+ Note : Enable recursive checkbox if the discounts should be applied in sequential ranges.
 
323
 
324
  == Screenshots ==
325
 
337
 
338
  == Changelog ==
339
 
340
+ = 2.3.2 - 05/11/20 =
341
+ * Fix - Displaying discount table if user role based condition is false.
342
+ * Fix - Discount fee doesn't works when Combine all discounts option enabled.
343
+ * Fix - BOGO Cheapest doesn't works with WPML translation management.
344
+ * Fix - BOGO Cheapest individual option not works when apply all matched rule is enabled.
345
+ * Improvement - Added nonce for dynamic strikeout ajax method.
346
+ * Improvement - Custom Coupon not added in some cases.
347
+ * Improvement - Added country field in state condition.
348
+ * Improvement - JQuery DragTable updated.
349
+ * Improvement - BOGO Cheapest individual option improved.
350
+ * Improvement - Optimized the purchase history based first order query.
351
+
352
  = 2.3.1 - 16/10/20 =
353
  * Fix - JS error
354
  * Improvement - Discount table improvement.
v2/App/Controllers/Admin/Settings.php CHANGED
@@ -497,6 +497,7 @@ If a customer buys 2 of Product A - Small, 4 of Product A - Medium, 6 of Prod
497
  'invalid_rule_limit' => __("<b>This rule is not running currently:</b> Rule reached maximum usage limit", WDR_TEXT_DOMAIN),
498
  'invalid_rule_limit_with_date_future' => __("<b>This rule is not running currently:</b> Start date and time is set in the future date", WDR_TEXT_DOMAIN),
499
  'invalid_rule_limit_with_date_expire' => __("<b>This rule is not running currently:</b> Validity expired", WDR_TEXT_DOMAIN),
 
500
  );
501
  }
502
  }
497
  'invalid_rule_limit' => __("<b>This rule is not running currently:</b> Rule reached maximum usage limit", WDR_TEXT_DOMAIN),
498
  'invalid_rule_limit_with_date_future' => __("<b>This rule is not running currently:</b> Start date and time is set in the future date", WDR_TEXT_DOMAIN),
499
  'invalid_rule_limit_with_date_expire' => __("<b>This rule is not running currently:</b> Validity expired", WDR_TEXT_DOMAIN),
500
+ 'select_state' => __("Select State", WDR_TEXT_DOMAIN),
501
  );
502
  }
503
  }
v2/App/Controllers/Admin/WDRAjax.php CHANGED
@@ -91,6 +91,7 @@ class WDRAjax extends Base
91
  * Get discount price for a product
92
  * */
93
  public function awdr_get_discount_of_a_product(){
 
94
  $product_id = $this->input->post('product_id', '');
95
  $product_id = intval($product_id);
96
  $result = false;
@@ -363,7 +364,7 @@ class WDRAjax extends Base
363
  $rule_id = $rule_helper->save($post);
364
  if (isset($rule_id['coupon_exists'])) {
365
  $coupon_message = $rule_id['coupon_exists'];
366
- wp_send_json(array('coupon_message' => $coupon_message));
367
  die;
368
  }
369
  $redirect_url = false;
@@ -599,6 +600,7 @@ class WDRAjax extends Base
599
  */
600
  public function wdr_ajax_get_price_html()
601
  {
 
602
  $product = $this->input->post('product_id', '');
603
  $product = intval($product);
604
  $product_qty = $this->input->post('qty', '');
@@ -633,4 +635,43 @@ class WDRAjax extends Base
633
  }
634
 
635
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
636
  }
91
  * Get discount price for a product
92
  * */
93
  public function awdr_get_discount_of_a_product(){
94
+ Helper::validateRequest('awdr_ajax_front_end');
95
  $product_id = $this->input->post('product_id', '');
96
  $product_id = intval($product_id);
97
  $result = false;
364
  $rule_id = $rule_helper->save($post);
365
  if (isset($rule_id['coupon_exists'])) {
366
  $coupon_message = $rule_id['coupon_exists'];
367
+ wp_send_json_error(array('coupon_message' => $coupon_message));
368
  die;
369
  }
370
  $redirect_url = false;
600
  */
601
  public function wdr_ajax_get_price_html()
602
  {
603
+ Helper::validateRequest('awdr_ajax_front_end');
604
  $product = $this->input->post('product_id', '');
605
  $product = intval($product);
606
  $product_qty = $this->input->post('qty', '');
635
  }
636
 
637
  }
638
+
639
+ /**
640
+ * @return get state select box
641
+ */
642
+ public function wdr_ajax_get_state_details(){
643
+ Helper::validateRequest('wdr_ajax_select2');
644
+ $validation_result = Validation::validateStateCountryCondition($_POST);
645
+ if (!$validation_result) {
646
+ wp_send_json_error();
647
+ }
648
+ $state_options = '';
649
+ $selected_countries = $this->input->post('selected_country', '');
650
+ $selected_state = $this->input->post('selected_state', '');
651
+ $selected_index = $this->input->post('selected_index', '');
652
+ $getStatesList = self::$woocommerce_helper->getStatesList();
653
+ $state_options .= '<select multiple
654
+ class="get_awdr_shipping_state append-preloaded-values edit-preloaded-values"
655
+ data-list="states"
656
+ data-field="preloaded"
657
+ data-placeholder="Search State"
658
+ name="conditions['.$selected_index.'][options][value][]">';
659
+ if(!empty($selected_countries)){
660
+ foreach ($selected_countries as $country) {
661
+ if(isset($getStatesList[$country])){
662
+ $states = $getStatesList[$country];
663
+ foreach ($states as $id => $text) {
664
+ if( is_array($selected_state) && !empty($selected_state) && in_array($id, $selected_state)){
665
+ $state_options .= "<option value={$id} selected>{$text}</option>";
666
+ }else{
667
+ $state_options .= "<option value={$id}>{$text}</option>";
668
+ }
669
+
670
+ }
671
+ }
672
+ }
673
+ }
674
+ $state_options .= "</select>";
675
+ return $state_options;
676
+ }
677
  }
v2/App/Controllers/DiscountCalculator.php CHANGED
@@ -106,7 +106,7 @@ class DiscountCalculator extends Base
106
  if( $calculate_discount_from != 'sale_price' && Woocommerce::productTypeIs($product, array('variable')) && $discount_type == 'flat'){
107
  $discount_price = $this->mayHaveTax($product, $discount_price);
108
  }
109
- $discounted_price = $product_price - $discount_price;
110
  if ($discounted_price < 0) {
111
  $discounted_price = 0;
112
  }
106
  if( $calculate_discount_from != 'sale_price' && Woocommerce::productTypeIs($product, array('variable')) && $discount_type == 'flat'){
107
  $discount_price = $this->mayHaveTax($product, $discount_price);
108
  }
109
+ $discounted_price = floatval($product_price) - floatval($discount_price);
110
  if ($discounted_price < 0) {
111
  $discounted_price = 0;
112
  }
v2/App/Controllers/ManageDiscount.php CHANGED
@@ -58,6 +58,8 @@ class ManageDiscount extends Base
58
  'awdr_opacity_to_bulk_table' => apply_filters('advanced_woo_discount_rules_opacity_to_bulk_table', ""),
59
  'awdr_dynamic_bulk_table_status' => $bulk_table_on_off,
60
  'awdr_dynamic_bulk_table_off' => apply_filters('advanced_woo_discount_rules_disable_load_dynamic_bulk_table', "on"),
 
 
61
  );
62
  wp_enqueue_script('awdr-dynamic-price', WDR_PLUGIN_URL . 'Assets/Js/awdr-dynamic-price.js', array('jquery'), WDR_VERSION);
63
  wp_localize_script('awdr-main', 'awdr_params', $awdr_front_end_script);
@@ -128,6 +130,7 @@ class ManageDiscount extends Base
128
  $product_id = Woocommerce::getProductId($_product);
129
  if(self::isProductOnSale($product_id) || $use_sale_badge_customize){
130
  $on_sale_badge_html = self::$config->getConfig('on_sale_badge_html', '<span class="onsale">Sale!</span>');
 
131
  $on_sale_badge_html = Helper::getCleanHtml($on_sale_badge_html);
132
  $html = __($on_sale_badge_html, WDR_TEXT_DOMAIN);
133
  $html = apply_filters('advanced_woo_discount_rules_on_sale_badge_html', $html, $post, $_product);
@@ -899,7 +902,7 @@ class ManageDiscount extends Base
899
  if(empty($label)){
900
  $label = __('Cart discount', WDR_TEXT_DOMAIN);
901
  }
902
- self::setCartCouponValues($label, $discount_value, $combined_discounts_cart_items);
903
  $this->applyFakeCouponsForCartRules($label);
904
  }
905
  add_action('woocommerce_after_calculate_totals', array($this, 'applyVirtualCouponForCartRules'), 10);
@@ -1567,7 +1570,7 @@ class ManageDiscount extends Base
1567
  */
1568
  function showAppliedRulesMessages()
1569
  {
1570
- $message = self::$config->getConfig('applied_rule_message', __('Discount <strong>{{title}}</strong> has been applied to your cart.', WDR_TEXT_DOMAIN));
1571
  $message = Helper::getCleanHtml($message);
1572
  $message = __($message, WDR_TEXT_DOMAIN);
1573
  $calc = self::$calculator;
@@ -1692,7 +1695,7 @@ class ManageDiscount extends Base
1692
  function getYouSavedText($discount)
1693
  {
1694
  if (!empty($discount)) {
1695
- $text = self::$config->getConfig('you_saved_text', __("You saved {{total_discount}}", WDR_TEXT_DOMAIN));
1696
  $text = __($text, WDR_TEXT_DOMAIN);
1697
  $text = Helper::getCleanHtml($text);
1698
  $message = str_replace('{{total_discount}}', $discount, $text);
58
  'awdr_opacity_to_bulk_table' => apply_filters('advanced_woo_discount_rules_opacity_to_bulk_table', ""),
59
  'awdr_dynamic_bulk_table_status' => $bulk_table_on_off,
60
  'awdr_dynamic_bulk_table_off' => apply_filters('advanced_woo_discount_rules_disable_load_dynamic_bulk_table', "on"),
61
+ 'custom_simple_product_id_selector' => apply_filters('advanced_woo_discount_rules_custom_simple_product_id_selector', ""),
62
+ 'custom_variable_product_id_selector' => apply_filters('advanced_woo_discount_rules_custom_variable_product_id_selector', ""),
63
  );
64
  wp_enqueue_script('awdr-dynamic-price', WDR_PLUGIN_URL . 'Assets/Js/awdr-dynamic-price.js', array('jquery'), WDR_VERSION);
65
  wp_localize_script('awdr-main', 'awdr_params', $awdr_front_end_script);
130
  $product_id = Woocommerce::getProductId($_product);
131
  if(self::isProductOnSale($product_id) || $use_sale_badge_customize){
132
  $on_sale_badge_html = self::$config->getConfig('on_sale_badge_html', '<span class="onsale">Sale!</span>');
133
+ $translate = __('<span class="onsale">Sale!</span>', 'woo-discount-rules');
134
  $on_sale_badge_html = Helper::getCleanHtml($on_sale_badge_html);
135
  $html = __($on_sale_badge_html, WDR_TEXT_DOMAIN);
136
  $html = apply_filters('advanced_woo_discount_rules_on_sale_badge_html', $html, $post, $_product);
902
  if(empty($label)){
903
  $label = __('Cart discount', WDR_TEXT_DOMAIN);
904
  }
905
+ self::setCartCouponValues($label, $total_combined_discounts, $combined_discounts_cart_items);
906
  $this->applyFakeCouponsForCartRules($label);
907
  }
908
  add_action('woocommerce_after_calculate_totals', array($this, 'applyVirtualCouponForCartRules'), 10);
1570
  */
1571
  function showAppliedRulesMessages()
1572
  {
1573
+ $message = self::$config->getConfig('applied_rule_message', __('Discount <strong>{{title}}</strong> has been applied to your cart.', 'woo-discount-rules'));
1574
  $message = Helper::getCleanHtml($message);
1575
  $message = __($message, WDR_TEXT_DOMAIN);
1576
  $calc = self::$calculator;
1695
  function getYouSavedText($discount)
1696
  {
1697
  if (!empty($discount)) {
1698
+ $text = self::$config->getConfig('you_saved_text', __("You saved {{total_discount}}", 'woo-discount-rules'));
1699
  $text = __($text, WDR_TEXT_DOMAIN);
1700
  $text = Helper::getCleanHtml($text);
1701
  $message = str_replace('{{total_discount}}', $discount, $text);
v2/App/Helpers/Helper.php CHANGED
@@ -156,10 +156,10 @@ class Helper
156
  <span style='width: 100%; display: flex;'>
157
  <span style='width: 45%; padding-right: 5px;'>
158
  <ul class='awdr-bullet-style'>
159
- <li ><a href=' https://docs.flycart.org/en/articles/3977542-subtotal-based-free-product-2-0?utm_source=woo-discount-rules-v2&utm_campaign=doc&utm_medium=text-click&utm_content=subtotal_documentation' target='_blank'>" . __('Subtotal', WDR_TEXT_DOMAIN) . "</a></li>
160
- <li ><a href=' https://docs.flycart.org/en/articles/4203313-user-role-based-discount-rules-discount-rules-2-0?utm_source=woo-discount-rules-v2&utm_campaign=doc&utm_medium=text-click&utm_content=user_role_documentation' target='_blank'>" . __('User role', WDR_TEXT_DOMAIN) . "</a></li>
161
  <li >" . __('Days & Time', WDR_TEXT_DOMAIN) . "</li>
162
- <li >" . __('Purchase History', WDR_TEXT_DOMAIN) . "</li>
163
  <li >" . __('Payment Method', WDR_TEXT_DOMAIN) . "</li>
164
  </ul>
165
  </span>
@@ -167,9 +167,9 @@ class Helper
167
  <ul class='awdr-bullet-style'>
168
  <li ><a href='https://docs.flycart.org/en/articles/4268595-activate-discount-rule-using-a-coupon-code-in-woocommerce-2-0?utm_source=woo-discount-rules-v2&utm_campaign=doc&utm_medium=text-click&utm_content=coupon_documentation' target='_blank'>" . __('Coupon', WDR_TEXT_DOMAIN) . "</a></li>
169
  <li ><a href='https://docs.flycart.org/en/articles/4214869-customer-shipping-address-based-discount-2-0?utm_source=woo-discount-rules-v2&utm_campaign=doc&utm_medium=text-click&utm_content=shipping_address_documentation' target='_blank'>" . __('Shipping Address', WDR_TEXT_DOMAIN) . "</a></li>
170
- <li>" . __('Category Combination', WDR_TEXT_DOMAIN) . "</li>
171
  <li><a href='https://docs.flycart.org/en/articles/4164153-buy-product-a-b-and-get-discount-in-product-c-discount-rules-2-0?utm_source=woo-discount-rules-v2&utm_campaign=doc&utm_medium=text-click&utm_content=product_combination' target='_blank'>" . __('Product Combination', WDR_TEXT_DOMAIN) . "</a></li>
172
- <li >" . __('Quantities/Line items', WDR_TEXT_DOMAIN) . "</li>
173
 
174
 
175
  </ul>
@@ -329,9 +329,9 @@ class Helper
329
 
330
  public static function displayCompatibleCheckMessages()
331
  {
332
- if (version_compare(WDR_VERSION, '2.3.1', '>=')) {
333
  if (defined('WDR_PRO_VERSION')) {
334
- if (version_compare(WDR_PRO_VERSION, '2.3.1', '<')) {
335
  $url = admin_url() . "plugins.php";
336
  $plugin_page = '<a target="_blank" href="' . $url . '">' . __('Update now', WDR_TEXT_DOMAIN) . '</a>';
337
  ?>
156
  <span style='width: 100%; display: flex;'>
157
  <span style='width: 45%; padding-right: 5px;'>
158
  <ul class='awdr-bullet-style'>
159
+ <li ><a href='https://docs.flycart.org/en/articles/3977542-subtotal-based-free-product-2-0?utm_source=woo-discount-rules-v2&utm_campaign=doc&utm_medium=text-click&utm_content=subtotal_documentation' target='_blank'>" . __('Subtotal', WDR_TEXT_DOMAIN) . "</a></li>
160
+ <li ><a href='https://docs.flycart.org/en/articles/4203313-user-role-based-discount-rules-discount-rules-2-0?utm_source=woo-discount-rules-v2&utm_campaign=doc&utm_medium=text-click&utm_content=user_role_documentation' target='_blank'>" . __('User role', WDR_TEXT_DOMAIN) . "</a></li>
161
  <li >" . __('Days & Time', WDR_TEXT_DOMAIN) . "</li>
162
+ <li ><a href='https://docs.flycart.org/en/articles/4206683-how-to-provide-first-order-discount-2-0?utm_source=woo-discount-rules-v2&utm_campaign=doc&utm_medium=text-click&utm_content=purchase_history' target='_blank'>" . __('Purchase History', WDR_TEXT_DOMAIN) . "</a></li>
163
  <li >" . __('Payment Method', WDR_TEXT_DOMAIN) . "</li>
164
  </ul>
165
  </span>
167
  <ul class='awdr-bullet-style'>
168
  <li ><a href='https://docs.flycart.org/en/articles/4268595-activate-discount-rule-using-a-coupon-code-in-woocommerce-2-0?utm_source=woo-discount-rules-v2&utm_campaign=doc&utm_medium=text-click&utm_content=coupon_documentation' target='_blank'>" . __('Coupon', WDR_TEXT_DOMAIN) . "</a></li>
169
  <li ><a href='https://docs.flycart.org/en/articles/4214869-customer-shipping-address-based-discount-2-0?utm_source=woo-discount-rules-v2&utm_campaign=doc&utm_medium=text-click&utm_content=shipping_address_documentation' target='_blank'>" . __('Shipping Address', WDR_TEXT_DOMAIN) . "</a></li>
170
+ <li><a href='https://docs.flycart.org/en/articles/4279899-category-combination-get-discount-only-when-category-a-b-c-are-in-the-cart-2-0?utm_source=woo-discount-rules-v2&utm_campaign=doc&utm_medium=text-click&utm_content=category_combination' target='_blank'>" . __('Category Combination', WDR_TEXT_DOMAIN) . "</a></li>
171
  <li><a href='https://docs.flycart.org/en/articles/4164153-buy-product-a-b-and-get-discount-in-product-c-discount-rules-2-0?utm_source=woo-discount-rules-v2&utm_campaign=doc&utm_medium=text-click&utm_content=product_combination' target='_blank'>" . __('Product Combination', WDR_TEXT_DOMAIN) . "</a></li>
172
+ <li ><a href='https://docs.flycart.org/en/articles/4280177-discounts-based-on-cart-line-items?utm_source=woo-discount-rules-v2&utm_campaign=doc&utm_medium=text-click&utm_content=quantity_or_line_items' target='_blank'>" . __('Quantities/Line items', WDR_TEXT_DOMAIN) . "</a></li>
173
 
174
 
175
  </ul>
329
 
330
  public static function displayCompatibleCheckMessages()
331
  {
332
+ if (version_compare(WDR_VERSION, '2.3.2', '>=')) {
333
  if (defined('WDR_PRO_VERSION')) {
334
+ if (version_compare(WDR_PRO_VERSION, '2.3.2', '<')) {
335
  $url = admin_url() . "plugins.php";
336
  $plugin_page = '<a target="_blank" href="' . $url . '">' . __('Update now', WDR_TEXT_DOMAIN) . '</a>';
337
  ?>
v2/App/Helpers/Rule.php CHANGED
@@ -389,7 +389,7 @@ class Rule
389
  $filter_helper = new Filter();
390
  $filter_passed = $filter_helper->matchFilters($product, $filters, $sale_badge, $product_table);
391
  $conditions = $this->getConditions();
392
- $filter_passed_user_role = $filter_passed_user_list = $user_role_passed = $user_list_passed = $has_other_conditions = false;
393
  $condition_relationship = $this->getRelationship('condition', 'and');
394
  if($filter_passed){
395
  if(!empty($conditions)){
@@ -397,31 +397,47 @@ class Rule
397
  $cart = array();
398
  $options = isset($condition->options) ? $condition->options : array();
399
  $condition_type = isset($condition->type) ? $condition->type : array();
400
- if( !empty($condition_type) && $condition_type == 'user_role' ){
401
- $user_role_passed = true;
402
- if (!empty($options) && isset($this->available_conditions[$condition_type]['object'])) {
403
  $this->available_conditions[$condition_type]['object']->rule = $this;
404
- if(method_exists($this->available_conditions[$condition_type]['object'], 'check')){
 
405
  $filter_passed_user_role = $this->available_conditions[$condition_type]['object']->check($cart, $options);
406
  }
407
- }
408
- }
409
- if( !empty($condition_type) && $condition_type == 'user_list'){
410
- $user_list_passed = true;
411
- if (!empty($options) && isset($this->available_conditions[$condition_type]['object'])) {
412
- $this->available_conditions[$condition_type]['object']->rule = $this;
413
- if(method_exists($this->available_conditions[$condition_type]['object'], 'check')){
414
  $filter_passed_user_list = $this->available_conditions[$condition_type]['object']->check($cart, $options);
415
  }
 
 
 
 
416
  }
417
  }
418
- if( !empty($condition_type) && !in_array($condition_type, array('user_role', 'user_list'))){
 
419
  $has_other_conditions = true;
420
  }
421
  }
422
  }
423
- if($user_role_passed || $user_list_passed){
424
- if($filter_passed_user_role || $filter_passed_user_list){
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
425
  } else {
426
  if($condition_relationship == 'or'){
427
  if($has_other_conditions){
@@ -433,6 +449,7 @@ class Rule
433
  }
434
  }
435
  }
 
436
  }
437
  } else {
438
  $filter_passed = false;
389
  $filter_helper = new Filter();
390
  $filter_passed = $filter_helper->matchFilters($product, $filters, $sale_badge, $product_table);
391
  $conditions = $this->getConditions();
392
+ $filter_passed_user_logged_in = $user_logged_in_passed = $filter_passed_user_role = $filter_passed_user_list = $user_role_passed = $user_list_passed = $has_other_conditions = false;
393
  $condition_relationship = $this->getRelationship('condition', 'and');
394
  if($filter_passed){
395
  if(!empty($conditions)){
397
  $cart = array();
398
  $options = isset($condition->options) ? $condition->options : array();
399
  $condition_type = isset($condition->type) ? $condition->type : array();
400
+ if( !empty($condition_type) ){
401
+ if (!empty($options) && isset($this->available_conditions[$condition_type]['object']) && is_object($this->available_conditions[$condition_type]['object']) && method_exists($this->available_conditions[$condition_type]['object'], 'check')) {
 
402
  $this->available_conditions[$condition_type]['object']->rule = $this;
403
+ if( $condition_type == 'user_role'){
404
+ $user_role_passed = true;
405
  $filter_passed_user_role = $this->available_conditions[$condition_type]['object']->check($cart, $options);
406
  }
407
+ if( $condition_type == 'user_list'){
408
+ $user_list_passed = true;
 
 
 
 
 
409
  $filter_passed_user_list = $this->available_conditions[$condition_type]['object']->check($cart, $options);
410
  }
411
+ if( $condition_type == 'user_logged_in'){
412
+ $user_logged_in_passed = true;
413
+ $filter_passed_user_logged_in = $this->available_conditions[$condition_type]['object']->check($cart, $options);
414
+ }
415
  }
416
  }
417
+
418
+ if( !empty($condition_type) && !in_array($condition_type, array('user_role', 'user_list', 'user_logged_in'))){
419
  $has_other_conditions = true;
420
  }
421
  }
422
  }
423
+ if($user_role_passed || $user_list_passed || $user_logged_in_passed){
424
+ if($filter_passed_user_role || $filter_passed_user_list || $filter_passed_user_logged_in){
425
+ if($condition_relationship == 'and'){
426
+ if($user_role_passed && $user_logged_in_passed){
427
+ if($filter_passed_user_role && $filter_passed_user_logged_in){
428
+ }else{
429
+ $filter_passed = false;
430
+ }
431
+ }
432
+ if($user_list_passed && $user_logged_in_passed){
433
+ if($filter_passed_user_list && $filter_passed_user_logged_in){
434
+ }else{
435
+ $filter_passed = false;
436
+ }
437
+ }
438
+ //$this -> rule
439
+ $filter_passed = apply_filters('advanced_woo_discount_rules_customer_condition_filter_passed', $filter_passed, $this, $product, $sale_badge, $product_table, $conditions);
440
+ }
441
  } else {
442
  if($condition_relationship == 'or'){
443
  if($has_other_conditions){
449
  }
450
  }
451
  }
452
+
453
  }
454
  } else {
455
  $filter_passed = false;
v2/App/Helpers/Validation.php CHANGED
@@ -456,4 +456,29 @@ class Validation
456
  return false;
457
  }
458
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
459
  }
456
  return false;
457
  }
458
  }
459
+
460
+ /**
461
+ * validate state country condition
462
+ *
463
+ * @param $post_values
464
+ * @return bool
465
+ */
466
+ static function validateStateCountryCondition($post_values)
467
+ {
468
+ $state_country_validator = new Validator($post_values);
469
+ Validator::addRule('conditionValues', array(__CLASS__, 'validateConditionFields'), __('Invalid characters', WDR_TEXT_DOMAIN));
470
+ //Validation condition values
471
+ $state_country_validator->rule('conditionValues',
472
+ array(
473
+ 'selected_country',
474
+ 'selected_index',
475
+ 'selected_state',
476
+ )
477
+ );
478
+ if ($state_country_validator->validate()) {
479
+ return true;
480
+ } else {
481
+ return false;
482
+ }
483
+ }
484
  }
v2/App/Models/DBTable.php CHANGED
@@ -124,7 +124,7 @@ class DBTable
124
  if(Woocommerce::is_ajax()){
125
  $is_front_end_request = true;
126
  if(isset($_REQUEST['action']) && $_REQUEST['action'] == 'wdr_ajax'){
127
- $wdr_ajax_methods = array('get_price_html');
128
  $wdr_ajax_methods = apply_filters('advanced_woo_discount_rules_wdr_ajax_methods_for_frontend', $wdr_ajax_methods);
129
  if(isset($_REQUEST['method']) && is_array($wdr_ajax_methods) && !empty($wdr_ajax_methods)){
130
  if(!in_array($_REQUEST['method'], $wdr_ajax_methods)){
124
  if(Woocommerce::is_ajax()){
125
  $is_front_end_request = true;
126
  if(isset($_REQUEST['action']) && $_REQUEST['action'] == 'wdr_ajax'){
127
+ $wdr_ajax_methods = array('get_price_html', 'get_variable_product_bulk_table');
128
  $wdr_ajax_methods = apply_filters('advanced_woo_discount_rules_wdr_ajax_methods_for_frontend', $wdr_ajax_methods);
129
  if(isset($_REQUEST['method']) && is_array($wdr_ajax_methods) && !empty($wdr_ajax_methods)){
130
  if(!in_array($_REQUEST['method'], $wdr_ajax_methods)){
v2/App/Views/Admin/Rules/Conditions/Cart/LineItemCount.php CHANGED
@@ -2,7 +2,7 @@
2
  if (!defined('ABSPATH')) {
3
  exit; // Exit if accessed directly
4
  }
5
- $operator = isset($options->operator) ? $options->operator : 'less_than';
6
  $calculate_from = isset($options->calculate_from) ? $options->calculate_from : 'from_cart';
7
  echo ($render_saved_condition == true) ? '' : '<div class="cart_line_items_count">';
8
  ?>
2
  if (!defined('ABSPATH')) {
3
  exit; // Exit if accessed directly
4
  }
5
+ $operator = isset($options->operator) ? $options->operator : 'greater_than_or_equal';
6
  $calculate_from = isset($options->calculate_from) ? $options->calculate_from : 'from_cart';
7
  echo ($render_saved_condition == true) ? '' : '<div class="cart_line_items_count">';
8
  ?>
v2/App/Views/Admin/Rules/Conditions/Cart/Subtotal.php CHANGED
@@ -2,7 +2,7 @@
2
  if (!defined('ABSPATH')) {
3
  exit; // Exit if accessed directly
4
  }
5
- $operator = isset($options->operator) ? $options->operator : 'less_than';
6
  $calculate_from = isset($options->calculate_from) ? $options->calculate_from : 'from_cart';
7
  echo ($render_saved_condition == true) ? '' : '<div class="cart_subtotal">';
8
  ?>
2
  if (!defined('ABSPATH')) {
3
  exit; // Exit if accessed directly
4
  }
5
+ $operator = isset($options->operator) ? $options->operator : 'greater_than_or_equal';
6
  $calculate_from = isset($options->calculate_from) ? $options->calculate_from : 'from_cart';
7
  echo ($render_saved_condition == true) ? '' : '<div class="cart_subtotal">';
8
  ?>
v2/App/Views/Admin/Rules/Conditions/Main.php CHANGED
@@ -91,7 +91,7 @@ if (!defined('ABSPATH')) {
91
  $subtotal_promo = $config->getConfig("show_subtotal_promotion", '');
92
  $type_promotion = isset($condition->type) ? $condition->type : NULL;
93
  if($type_promotion == 'cart_subtotal' && $subtotal_promo == 1){
94
- $operator = isset($options->operator) ? $options->operator : 'less_than';?>
95
  <div class="wdr-grid wdr-conditions-container wdr-condition-group <?php echo 'promo_show_hide_'.$i; ?>" data-index="<?php echo $i; ?>" style="<?php echo ($operator == 'greater_than_or_equal' || $operator == 'greater_than') ? '': 'display: none'; ?>">
96
  <?php include(WDR_PLUGIN_PATH . 'App/Views/Admin/Rules/Others/SubtotalPromotion.php'); ?>
97
  </div>
91
  $subtotal_promo = $config->getConfig("show_subtotal_promotion", '');
92
  $type_promotion = isset($condition->type) ? $condition->type : NULL;
93
  if($type_promotion == 'cart_subtotal' && $subtotal_promo == 1){
94
+ $operator = isset($options->operator) ? $options->operator : 'greater_than_or_equal';?>
95
  <div class="wdr-grid wdr-conditions-container wdr-condition-group <?php echo 'promo_show_hide_'.$i; ?>" data-index="<?php echo $i; ?>" style="<?php echo ($operator == 'greater_than_or_equal' || $operator == 'greater_than') ? '': 'display: none'; ?>">
96
  <?php include(WDR_PLUGIN_PATH . 'App/Views/Admin/Rules/Others/SubtotalPromotion.php'); ?>
97
  </div>
v2/App/Views/Admin/Tabs/settings.php CHANGED
@@ -93,7 +93,8 @@
93
  <tr>
94
  <td scope="row">
95
  <label class="awdr-left-align"><?php _e('Suppress third party discount plugins', WDR_TEXT_DOMAIN) ?></label>
96
- <span class="wdr_settings_desc_text awdr-clear-both"><?php esc_attr_e('suppress third party plugins from modifying the prices. other discount plugins may not works!', WDR_TEXT_DOMAIN); ?></span>
 
97
  </td>
98
  <td>
99
  <input type="radio" name="suppress_other_discount_plugins" id="suppress_other_discount_plugins"
93
  <tr>
94
  <td scope="row">
95
  <label class="awdr-left-align"><?php _e('Suppress third party discount plugins', WDR_TEXT_DOMAIN) ?></label>
96
+ <span class="wdr_settings_desc_text awdr-clear-both"><?php esc_attr_e('Suppress third party plugins from modifying the prices. other discount plugins may not works!', WDR_TEXT_DOMAIN); ?></span>
97
+ <span class="wdr_settings_desc_text awdr-clear-both text-warning"><?php esc_attr_e('Change this option only if recommended.', WDR_TEXT_DOMAIN); ?></span>
98
  </td>
99
  <td>
100
  <input type="radio" name="suppress_other_discount_plugins" id="suppress_other_discount_plugins"
v2/Assets/Css/admin_style.css CHANGED
@@ -1427,5 +1427,7 @@ div.wdr {
1427
  .awdr_normal_enable_check_box, .awdr_normal_exclusive_check_box{
1428
  padding: 10px;
1429
  }
1430
-
 
 
1431
 
1427
  .awdr_normal_enable_check_box, .awdr_normal_exclusive_check_box{
1428
  padding: 10px;
1429
  }
1430
+ .wdr_settings_desc_text.text-warning{
1431
+ color: #f0ad4e;
1432
+ }
1433
 
v2/Assets/Js/admin_script.js CHANGED
@@ -94,6 +94,7 @@ jQuery(document).ready(function ($) {
94
  hideBlockId: ".wdr-filter-block, .wdr-discount-template, .wdr-advanced-layout-block",
95
  thisObject: this,
96
  });
 
97
  });
98
 
99
  /*Add Discount section*/
@@ -117,6 +118,7 @@ jQuery(document).ready(function ($) {
117
  newIndex: last_index
118
  });
119
  }
 
120
  });
121
 
122
  $(document).on('change', '.subtotal_operator', function () {
@@ -181,6 +183,7 @@ jQuery(document).ready(function ($) {
181
  newIndex: last_index
182
  });
183
  }
 
184
  }
185
 
186
  //$('.wdr-condition-date').datetimepicker();
@@ -650,6 +653,7 @@ jQuery(document).ready(function ($) {
650
  /**
651
  * ajax edit pre_loaded search function in document ready
652
  */
 
653
  $('.edit-preloaded-values').each(function (index, el) {
654
  var $el = $(el);
655
  var data = wdr_data.lists[$el.data('list')];
@@ -672,6 +676,10 @@ jQuery(document).ready(function ($) {
672
  $el.parent().find('.select2-search__field').css('width', '100%');
673
  });
674
 
 
 
 
 
675
  /**
676
  * ajax edit pre_loaded search function in document ready
677
  */
@@ -801,20 +809,22 @@ jQuery(document).ready(function ($) {
801
  if (data.redirect) {
802
  window.location.href = data.redirect;
803
  notify(wdr_data.localization_data.save_rule, 'success', alert_counter);
804
- } else if (data.coupon_message) {
805
- $(".coupon_name_msg").css("border", "1px solid #FF0000").focus();
806
- notify(wdr_data.localization_data.coupon_exists, 'error', alert_counter);
807
  } else {
808
  $('.wdr_desc_text.coupon_error_msg').hide();
809
  $(".coupon_name_msg").css("border", "");
810
  notify(wdr_data.localization_data.save_rule, 'success', alert_counter);
811
  }
812
  } else {
813
- for (const [key, value] of Object.entries(data)) {
814
- if (data.hasOwnProperty(key)) {
815
- value.forEach(function(message){
816
- notify(message, 'error',alert_counter);
817
- });
 
 
 
 
 
818
  }
819
  }
820
  }
@@ -1585,6 +1595,7 @@ jQuery(document).ready(function ($) {
1585
  break;
1586
  case 'shipping_state':
1587
  let shipping_state = $(element).find('.get_awdr_shipping_state').val();
 
1588
  if (!shipping_state) {
1589
  condition_array.push("fails");
1590
  $(element).find('.select2-selection').css("border", "1px solid red");
@@ -1592,6 +1603,14 @@ jQuery(document).ready(function ($) {
1592
  } else {
1593
  $(element).find('.select2-selection').css("border", "1px solid #7e8993");
1594
  }
 
 
 
 
 
 
 
 
1595
  break;
1596
  case 'shipping_zipcode':
1597
  let shipping_zipcode = $(element).find('.awdr-validation').val();
@@ -2405,7 +2424,6 @@ jQuery(document).ready(function ($) {
2405
  }
2406
  awdrRemoveOnSaleCondition();
2407
  //$('.awdr_mode_of_operator').trigger('change');
2408
- console.log('yes');
2409
  $('.awdr-discount-heading').html(wdr_data.localization_data.two_column_bxgy_discount_heading);
2410
  make_wdr_select2_search($('.' + data_placement).find('[data-list="product_category"]'));
2411
  $('.adv-msg-min-qty, .adv-msg-max-qty, .adv-msg-discount, .adv-msg-discount-price').hide();
@@ -2593,4 +2611,46 @@ jQuery(document).ready(function ($) {
2593
  }
2594
  return true;
2595
  });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2596
  });
94
  hideBlockId: ".wdr-filter-block, .wdr-discount-template, .wdr-advanced-layout-block",
95
  thisObject: this,
96
  });
97
+
98
  });
99
 
100
  /*Add Discount section*/
118
  newIndex: last_index
119
  });
120
  }
121
+ $('.subtotal_operator').trigger('change');
122
  });
123
 
124
  $(document).on('change', '.subtotal_operator', function () {
183
  newIndex: last_index
184
  });
185
  }
186
+ $('.subtotal_operator').trigger('change');
187
  }
188
 
189
  //$('.wdr-condition-date').datetimepicker();
653
  /**
654
  * ajax edit pre_loaded search function in document ready
655
  */
656
+
657
  $('.edit-preloaded-values').each(function (index, el) {
658
  var $el = $(el);
659
  var data = wdr_data.lists[$el.data('list')];
676
  $el.parent().find('.select2-search__field').css('width', '100%');
677
  });
678
 
679
+ function run_preload_values(){
680
+ $('.append-preloaded-values').selectWoo();
681
+ // $('.append-preloaded-values').parent().find('.select2-search__field').css('width', '100%');
682
+ }
683
  /**
684
  * ajax edit pre_loaded search function in document ready
685
  */
809
  if (data.redirect) {
810
  window.location.href = data.redirect;
811
  notify(wdr_data.localization_data.save_rule, 'success', alert_counter);
 
 
 
812
  } else {
813
  $('.wdr_desc_text.coupon_error_msg').hide();
814
  $(".coupon_name_msg").css("border", "");
815
  notify(wdr_data.localization_data.save_rule, 'success', alert_counter);
816
  }
817
  } else {
818
+ if (data.coupon_message) {
819
+ $(".coupon_name_msg").css("border", "1px solid #FF0000").focus();
820
+ notify(wdr_data.localization_data.coupon_exists, 'error', alert_counter);
821
+ }else{
822
+ for (const [key, value] of Object.entries(data)) {
823
+ if (data.hasOwnProperty(key)) {
824
+ value.forEach(function(message){
825
+ notify(message, 'error',alert_counter);
826
+ });
827
+ }
828
  }
829
  }
830
  }
1595
  break;
1596
  case 'shipping_state':
1597
  let shipping_state = $(element).find('.get_awdr_shipping_state').val();
1598
+ let shipping_state_based_country = $(element).find('.get_awdr_state_based_country').val();
1599
  if (!shipping_state) {
1600
  condition_array.push("fails");
1601
  $(element).find('.select2-selection').css("border", "1px solid red");
1603
  } else {
1604
  $(element).find('.select2-selection').css("border", "1px solid #7e8993");
1605
  }
1606
+
1607
+ if (!shipping_state_based_country) {
1608
+ condition_array.push("fails");
1609
+ $(element).find('.select2-selection').css("border", "1px solid red");
1610
+ $(element).find('.select2-selection').focus();
1611
+ } else {
1612
+ $(element).find('.select2-selection').css("border", "1px solid #7e8993");
1613
+ }
1614
  break;
1615
  case 'shipping_zipcode':
1616
  let shipping_zipcode = $(element).find('.awdr-validation').val();
2424
  }
2425
  awdrRemoveOnSaleCondition();
2426
  //$('.awdr_mode_of_operator').trigger('change');
 
2427
  $('.awdr-discount-heading').html(wdr_data.localization_data.two_column_bxgy_discount_heading);
2428
  make_wdr_select2_search($('.' + data_placement).find('[data-list="product_category"]'));
2429
  $('.adv-msg-min-qty, .adv-msg-max-qty, .adv-msg-discount, .adv-msg-discount-price').hide();
2611
  }
2612
  return true;
2613
  });
2614
+
2615
+ $(document).on('change', '.get_awdr_state_based_country', function (){
2616
+ let selected_country = $(this).val();
2617
+ if(!selected_country){
2618
+ return false;
2619
+ }
2620
+ let selected_index = $(this).parents('.wdr-conditions-container').attr('data-index');
2621
+ let append_data = $(this).parents('.wdr_shipping_state_group');
2622
+ let remove_data = $(this).parent().siblings('.wdr-shipping-state-value');
2623
+ let loader = $('.woo_discount_loader');
2624
+ let selected_state = $(this).parent().siblings('.wdr-shipping-state-value').find('.get_awdr_shipping_state').val();
2625
+ var data = {
2626
+ action: 'wdr_ajax',
2627
+ method: 'get_state_details',
2628
+ selected_country: selected_country,
2629
+ selected_state: selected_state,
2630
+ selected_index: selected_index,
2631
+ awdr_nonce: $('input[name=wdr_ajax_select2]').val() || '',
2632
+ };
2633
+ $.ajax({
2634
+ url: ajaxurl,
2635
+ data: data,
2636
+ type: 'POST',
2637
+ beforeSend: function () {
2638
+ loader.show();
2639
+ },
2640
+ complete: function () {
2641
+ loader.hide();
2642
+ },
2643
+ success: function (response) {
2644
+ remove_data.remove();
2645
+ append_data.append("<div class='wdr-shipping-state-value wdr-select-filed-hight wdr-search-box' style='width: min-content;'>"+
2646
+ response.data +"<span class='wdr_select2_desc_text'>"+wdr_data.localization_data.select_state+"</span> </div>");
2647
+ run_preload_values();
2648
+
2649
+ },
2650
+ error: function (response) {
2651
+ console.log('error');
2652
+ }
2653
+ });
2654
+ });
2655
+ $('.get_awdr_state_based_country').trigger('change');
2656
  });
v2/Assets/Js/awdr-dynamic-price.js CHANGED
@@ -32,6 +32,7 @@
32
  action: 'awdr_get_product_discount',
33
  product_id: this.product_id,
34
  qty: this.quantity,
 
35
  };
36
  if (typeof this.options.custom_price !== 'undefined') {
37
  data.custom_price = this.options.custom_price;
32
  action: 'awdr_get_product_discount',
33
  product_id: this.product_id,
34
  qty: this.quantity,
35
+ awdr_nonce: awdr_params.nonce,
36
  };
37
  if (typeof this.options.custom_price !== 'undefined') {
38
  data.custom_price = this.options.custom_price;
v2/Assets/Js/jquery.dragtable.js CHANGED
@@ -1,7 +1,7 @@
1
  /*!
2
  * dragtable
3
  *
4
- * @Version 2.0.14
5
  *
6
  * Copyright (c) 2010-2013, Andres akottr@gmail.com
7
  * Dual licensed under the MIT (MIT-LICENSE.txt)
@@ -108,7 +108,7 @@
108
  */
109
  _restoreState: function(persistObj) {
110
  for (var n in persistObj) {
111
- this.originalTable.startIndex = $('#' + n).closest('th').prevAll().size() + 1;
112
  this.originalTable.endIndex = parseInt(persistObj[n], 10) + 1;
113
  this._bubbleCols();
114
  }
@@ -128,9 +128,9 @@
128
  if (from < to) {
129
  for (i = from; i < to; i++) {
130
  col1 = thtb.find('> tr > td:nth-child(' + i + ')')
131
- .add(thtb.find('> tr > th:nth-child(' + i + ')'));
132
  col2 = thtb.find('> tr > td:nth-child(' + (i + 1) + ')')
133
- .add(thtb.find('> tr > th:nth-child(' + (i + 1) + ')'));
134
  for (j = 0; j < col1.length; j++) {
135
  swapNodes(col1[j], col2[j]);
136
  }
@@ -138,9 +138,9 @@
138
  } else {
139
  for (i = from; i > to; i--) {
140
  col1 = thtb.find('> tr > td:nth-child(' + i + ')')
141
- .add(thtb.find('> tr > th:nth-child(' + i + ')'));
142
  col2 = thtb.find('> tr > td:nth-child(' + (i - 1) + ')')
143
- .add(thtb.find('> tr > th:nth-child(' + (i - 1) + ')'));
144
  for (j = 0; j < col1.length; j++) {
145
  swapNodes(col1[j], col2[j]);
146
  }
@@ -171,7 +171,7 @@
171
  _this.options.beforeReorganize(_this.originalTable, _this.sortableTable);
172
  // do reorganisation asynchronous
173
  // for chrome a little bit more than 1 ms because we want to force a rerender
174
- _this.originalTable.endIndex = _this.sortableTable.movingRow.prevAll().size() + 1;
175
  setTimeout(_this._rearrangeTableBackroundProcessing(), 50);
176
  };
177
  },
@@ -221,13 +221,13 @@
221
  thtb = thtb.not('tfoot');
222
  }
223
  thtb.find('> tr > th').each(function(i, v) {
224
- var w = $(this).outerWidth();
225
  widthArr.push(w);
226
  totalWidth += w;
227
  });
228
  if(_this.options.exact) {
229
- var difference = totalWidth - _this.originalTable.el.outerWidth();
230
- widthArr[0] -= difference;
231
  }
232
  // one extra px on right and left side
233
  totalWidth += 2
@@ -235,7 +235,7 @@
235
  var sortableHtml = '<ul class="dragtable-sortable" style="position:absolute; width:' + totalWidth + 'px;">';
236
  // assemble the needed html
237
  thtb.find('> tr > th').each(function(i, v) {
238
- var width_li = $(this).outerWidth();
239
  sortableHtml += '<li style="width:' + width_li + 'px;">';
240
  sortableHtml += '<table ' + attrsString + '>';
241
  var row = thtb.find('> tr > th:nth-child(' + (i + 1) + ')');
@@ -279,7 +279,7 @@
279
  });
280
 
281
  // assign start index
282
- this.originalTable.startIndex = $(e.target).closest('th').prevAll().size() + 1;
283
 
284
  this.options.beforeMoving(this.originalTable, this.sortableTable);
285
  // Start moving by delegating the original event to the new sortable table
@@ -322,7 +322,7 @@
322
  this.bindTo = this.bindTo.filter(this.options.dragaccept);
323
  }
324
  // bind draggable to handle if exists
325
- if (this.bindTo.find(this.options.dragHandle).size() > 0) {
326
  this.bindTo = this.bindTo.find(this.options.dragHandle);
327
  }
328
  // restore state if necessary
@@ -360,7 +360,7 @@
360
  /** closure-scoped "private" functions **/
361
 
362
  var body_onselectstart_save = $(document.body).attr('onselectstart'),
363
- body_unselectable_save = $(document.body).attr('unselectable');
364
 
365
  // css properties to disable user-select on the body tag by appending a <style> tag to the <head>
366
  // remove any current document selections
1
  /*!
2
  * dragtable
3
  *
4
+ * @Version 2.0.15
5
  *
6
  * Copyright (c) 2010-2013, Andres akottr@gmail.com
7
  * Dual licensed under the MIT (MIT-LICENSE.txt)
108
  */
109
  _restoreState: function(persistObj) {
110
  for (var n in persistObj) {
111
+ this.originalTable.startIndex = $('#' + n).closest('th').prevAll().length + 1;
112
  this.originalTable.endIndex = parseInt(persistObj[n], 10) + 1;
113
  this._bubbleCols();
114
  }
128
  if (from < to) {
129
  for (i = from; i < to; i++) {
130
  col1 = thtb.find('> tr > td:nth-child(' + i + ')')
131
+ .add(thtb.find('> tr > th:nth-child(' + i + ')'));
132
  col2 = thtb.find('> tr > td:nth-child(' + (i + 1) + ')')
133
+ .add(thtb.find('> tr > th:nth-child(' + (i + 1) + ')'));
134
  for (j = 0; j < col1.length; j++) {
135
  swapNodes(col1[j], col2[j]);
136
  }
138
  } else {
139
  for (i = from; i > to; i--) {
140
  col1 = thtb.find('> tr > td:nth-child(' + i + ')')
141
+ .add(thtb.find('> tr > th:nth-child(' + i + ')'));
142
  col2 = thtb.find('> tr > td:nth-child(' + (i - 1) + ')')
143
+ .add(thtb.find('> tr > th:nth-child(' + (i - 1) + ')'));
144
  for (j = 0; j < col1.length; j++) {
145
  swapNodes(col1[j], col2[j]);
146
  }
171
  _this.options.beforeReorganize(_this.originalTable, _this.sortableTable);
172
  // do reorganisation asynchronous
173
  // for chrome a little bit more than 1 ms because we want to force a rerender
174
+ _this.originalTable.endIndex = _this.sortableTable.movingRow.prevAll().length + 1;
175
  setTimeout(_this._rearrangeTableBackroundProcessing(), 50);
176
  };
177
  },
221
  thtb = thtb.not('tfoot');
222
  }
223
  thtb.find('> tr > th').each(function(i, v) {
224
+ var w = $(this).is(':visible') ? $(this).outerWidth() : 0;
225
  widthArr.push(w);
226
  totalWidth += w;
227
  });
228
  if(_this.options.exact) {
229
+ var difference = totalWidth - _this.originalTable.el.outerWidth();
230
+ widthArr[0] -= difference;
231
  }
232
  // one extra px on right and left side
233
  totalWidth += 2
235
  var sortableHtml = '<ul class="dragtable-sortable" style="position:absolute; width:' + totalWidth + 'px;">';
236
  // assemble the needed html
237
  thtb.find('> tr > th').each(function(i, v) {
238
+ var width_li = $(this).is(':visible') ? $(this).outerWidth() : 0;
239
  sortableHtml += '<li style="width:' + width_li + 'px;">';
240
  sortableHtml += '<table ' + attrsString + '>';
241
  var row = thtb.find('> tr > th:nth-child(' + (i + 1) + ')');
279
  });
280
 
281
  // assign start index
282
+ this.originalTable.startIndex = $(e.target).closest('th').prevAll().length + 1;
283
 
284
  this.options.beforeMoving(this.originalTable, this.sortableTable);
285
  // Start moving by delegating the original event to the new sortable table
322
  this.bindTo = this.bindTo.filter(this.options.dragaccept);
323
  }
324
  // bind draggable to handle if exists
325
+ if (this.bindTo.find(this.options.dragHandle).length > 0) {
326
  this.bindTo = this.bindTo.find(this.options.dragHandle);
327
  }
328
  // restore state if necessary
360
  /** closure-scoped "private" functions **/
361
 
362
  var body_onselectstart_save = $(document.body).attr('onselectstart'),
363
+ body_unselectable_save = $(document.body).attr('unselectable');
364
 
365
  // css properties to disable user-select on the body tag by appending a <style> tag to the <head>
366
  // remove any current document selections
v2/Assets/Js/site_main.js CHANGED
@@ -53,6 +53,39 @@
53
 
54
  $price_place = $(target+' .price')
55
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
56
  if (!$product_id || !$price_place || $product_id == 0) {
57
  return;
58
  }
@@ -62,6 +95,7 @@
62
  method: 'get_price_html',
63
  product_id: $product_id,
64
  qty: $qty,
 
65
  };
66
  $.ajax({
67
  url: awdr_params.ajaxurl,
53
 
54
  $price_place = $(target+' .price')
55
  }
56
+ if(!$product_id || $product_id == 0){
57
+ if(awdr_params.custom_simple_product_id_selector != undefined){
58
+ if(awdr_params.custom_simple_product_id_selector != ""){
59
+ let simple_product_id_selector = awdr_params.custom_simple_product_id_selector;
60
+ $product_id = $(simple_product_id_selector).val();
61
+ let target = 'div.product p.price';
62
+ if(awdr_params.custom_target_simple_product != undefined){
63
+ if(awdr_params.custom_target_simple_product != ""){
64
+ target = awdr_params.custom_target_simple_product;
65
+ }
66
+ }
67
+ $price_place = $(target).first();
68
+ }
69
+ }
70
+
71
+ if(awdr_params.custom_variable_product_id_selector != undefined){
72
+ if(awdr_params.custom_variable_product_id_selector != ""){
73
+ let variable_product_id_selector = awdr_params.custom_variable_product_id_selector;
74
+ $product_id = $(variable_product_id_selector).val();
75
+ let target = 'div.product .woocommerce-variation-price';
76
+ if(awdr_params.custom_target_variable_product != undefined){
77
+ if(awdr_params.custom_target_variable_product != ""){
78
+ target = awdr_params.custom_target_variable_product;
79
+ }
80
+ }
81
+ if (!$(target+' .price').length) {
82
+ $price_place.html("<div class='price'></div>");
83
+ }
84
+ $price_place = $(target+' .price')
85
+ }
86
+ }
87
+ }
88
+
89
  if (!$product_id || !$price_place || $product_id == 0) {
90
  return;
91
  }
95
  method: 'get_price_html',
96
  product_id: $product_id,
97
  qty: $qty,
98
+ awdr_nonce: awdr_params.nonce,
99
  };
100
  $.ajax({
101
  url: awdr_params.ajaxurl,
woo-discount-rules.php CHANGED
@@ -5,7 +5,7 @@
5
  * Description: Simple to complex discount rules for your WooCommerce store. Core package.
6
  * Author: Flycart Technologies LLP
7
  * Author URI: https://www.flycart.org
8
- * Version: 2.3.1
9
  * Slug: woo-discount-rules
10
  * Text Domain: woo-discount-rules
11
  * Domain Path: /i18n/languages/
@@ -21,7 +21,7 @@ if (!defined('ABSPATH')) {
21
  * Current version of our app
22
  */
23
  if (!defined('WDR_VERSION')) {
24
- define('WDR_VERSION', '2.3.1');
25
  }
26
 
27
  global $awdr_load_version;
5
  * Description: Simple to complex discount rules for your WooCommerce store. Core package.
6
  * Author: Flycart Technologies LLP
7
  * Author URI: https://www.flycart.org
8
+ * Version: 2.3.2
9
  * Slug: woo-discount-rules
10
  * Text Domain: woo-discount-rules
11
  * Domain Path: /i18n/languages/
21
  * Current version of our app
22
  */
23
  if (!defined('WDR_VERSION')) {
24
+ define('WDR_VERSION', '2.3.2');
25
  }
26
 
27
  global $awdr_load_version;