Changeset 3445465
- Timestamp:
- 01/23/2026 09:36:15 AM (2 months ago)
- Location:
- advanced-dynamic-pricing-for-woocommerce/trunk
- Files:
-
- 11 edited
-
BaseVersion/Includes/CartProcessor/CartCouponsProcessorMerge.php (modified) (3 diffs)
-
BaseVersion/Includes/CartProcessor/CartProcessor.php (modified) (1 diff)
-
BaseVersion/Includes/Compatibility/AeliaSwitcherCmp.php (modified) (1 diff)
-
BaseVersion/Includes/Compatibility/Container/WpcBundleCmp.php (modified) (4 diffs)
-
BaseVersion/Includes/Core/Rule/CartCondition/Impl/Time.php (modified) (1 diff)
-
BaseVersion/Includes/Core/RuleProcessor/SingleItemRuleProcessor.php (modified) (2 diffs)
-
BaseVersion/Includes/Database/Repository/PersistentRuleRepository.php (modified) (3 diffs)
-
BaseVersion/Includes/VolumePricingTable/RangeDiscountTable.php (modified) (4 diffs)
-
advanced-dynamic-pricing-for-woocommerce.php (modified) (1 diff)
-
languages/advanced-dynamic-pricing-for-woocommerce.pot (modified) (5 diffs)
-
readme.txt (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
advanced-dynamic-pricing-for-woocommerce/trunk/BaseVersion/Includes/CartProcessor/CartCouponsProcessorMerge.php
r3297317 r3445465 224 224 } 225 225 226 p rotectedfunction processCouponAdjustments(Cart $cart, WC_Cart $wcCart)226 public function processCouponAdjustments(Cart $cart, WC_Cart $wcCart) 227 227 { 228 228 $this->cartContext = $cart->getContext(); … … 532 532 533 533 if (in_array($wcCoupon->get_code(), $this->disabledWcCoupons, true)) { 534 WC()->cart->remove_coupon($wcCoupon->get_code()); 535 $this->replaceDisabledCouponNotices(); 534 536 throw new \Exception( 535 537 esc_html__('Sorry, this coupon is not applicable to cart.', 'advanced-dynamic-pricing-for-woocommerce') … … 577 579 ); 578 580 } 581 582 protected function replaceDisabledCouponNotices() 583 { 584 WcUtils::replaceWcNotice( 585 array( 586 //phpcs:ignore WordPress.WP.I18n.TextDomainMismatch 587 'text' => __('Coupon code applied successfully.', 'woocommerce'), 588 'type' => 'success', 589 ), 590 array( 591 'text' => __('Sorry, this coupon is not applicable to cart.', 592 'advanced-dynamic-pricing-for-woocommerce'), 593 'type' => 'error', 594 ) 595 ); 596 } 597 598 public function checkDisabledCoupons(Cart $cart, WC_Cart $wcCart) 599 { 600 if(count($this->disabledWcCoupons)) { 601 throw new \Exception( 602 esc_html__('Sorry, this coupon is not applicable to cart.', 'advanced-dynamic-pricing-for-woocommerce') 603 ); 604 } 605 } 579 606 } -
advanced-dynamic-pricing-for-woocommerce/trunk/BaseVersion/Includes/CartProcessor/CartProcessor.php
r3443187 r3445465 725 725 $this->addCommonItems($cart, $wcCart); 726 726 do_action('adp_after_add_common_items'); 727 728 $this->cartCouponsProcessor->processCouponAdjustments($cart, $wcCart); 729 if($this->context->isWCStoreAPIRequest()) 730 { 731 $this->cartCouponsProcessor->checkDisabledCoupons($cart, $wcCart); 732 } 727 733 $wcNoFilterWorker->calculateTotals($wcCart, ...$flags); 728 734 729 735 $this->normalizeCart($wcCart); 730 736 -
advanced-dynamic-pricing-for-woocommerce/trunk/BaseVersion/Includes/Compatibility/AeliaSwitcherCmp.php
r3297317 r3445465 62 62 10 63 63 ); 64 65 add_filter('wc_aelia_cs_converted_amount', function($converted_amount, $original_amount, $from_currency, $to_currency, $decimals) { 66 return $original_amount; 67 }, 100, 5); 68 69 if ($this->context->getOption('suppress_other_pricing_plugins')) { 70 remove_filter( 71 'woocommerce_product_get_price', 72 [\Aelia\WC\CurrencySwitcher\WC27\WC_Aelia_CurrencyPrices_Manager::instance(), 'woocommerce_product_get_price'], 73 5 74 ); 75 } 76 64 77 } 65 78 } -
advanced-dynamic-pricing-for-woocommerce/trunk/BaseVersion/Includes/Compatibility/Container/WpcBundleCmp.php
r3443187 r3445465 26 26 protected $context; 27 27 28 protected $settings; 29 28 30 public function __construct(Context $context) 29 31 { 30 32 $this->context = $context; 33 $this->settings = (array) get_option( 'woosb_settings', [] ); 31 34 } 32 35 … … 87 90 $property = $reflection->getProperty('data'); 88 91 $property->setAccessible(true); 89 $basePrice = (float)$property->getValue($product)['price']; 92 93 if(isset($this->settings['bundled_price_from']) && $this->settings['bundled_price_from'] === 'regular_price') { 94 $basePrice = (float)$property->getValue($product)['regular_price']; 95 } else { 96 $basePrice = (float)$property->getValue($product)['price']; 97 } 90 98 91 99 return floatval($basePrice); … … 102 110 103 111 if (isset($thirdPartyData['woosb_price'])) { 104 return -floatval($thirdPartyData['woosb_price']);112 return floatval($thirdPartyData['woosb_price']); 105 113 } 106 114 … … 117 125 $thirdPartyData = $facade->getThirdPartyData(); 118 126 $parentProduct = $facade->getProduct(); 119 if (!empty($thirdPartyData['woosb_discount']) && empty($thirdPartyData['woosb_price'])) {127 if (!empty($thirdPartyData['woosb_discount'])) { 120 128 $_price = floatval(CartProcessor::getProductPriceDependsOnPriceMode($parentProduct)); 121 129 $_price *= (float) $thirdPartyData['woosb_discount'] / 100; -
advanced-dynamic-pricing-for-woocommerce/trunk/BaseVersion/Includes/Core/Rule/CartCondition/Impl/Time.php
r2661390 r3445465 34 34 35 35 $comparisonTime = \DateTime::createFromFormat("H:i", $this->comparisonTime, new \DateTimeZone("UTC")); 36 $comparisonTime->setDate( 37 (int)$time->format('Y'), 38 (int)$time->format('m'), 39 (int)$time->format('d') 40 ); 41 36 42 $comparisonMethod = $this->comparisonMethod; 37 43 -
advanced-dynamic-pricing-for-woocommerce/trunk/BaseVersion/Includes/Core/RuleProcessor/SingleItemRuleProcessor.php
r3384329 r3445465 20 20 use Exception; 21 21 use WC_Product; 22 use ADP\BaseVersion\Includes\Core\Cart\DisableWcCouponsCart; 22 23 23 24 defined('ABSPATH') or exit; … … 214 215 215 216 if ( ! $this->isRuleMatchedCart($cart)) { 217 if ($this->rule->getActivationCouponCode()) { 218 $cart->addCouponsAdjustments(new DisableWcCouponsCart($this->rule->getActivationCouponCode(), $this->rule->getId())); 219 } 216 220 return; 217 221 } -
advanced-dynamic-pricing-for-woocommerce/trunk/BaseVersion/Includes/Database/Repository/PersistentRuleRepository.php
r3443187 r3445465 521 521 //update lookup table too 522 522 // phpcs:ignore WordPress.DB 523 $wpdb->update( $wpdb->wc_product_meta_lookup, ['min_price' => $price ], ['product_id' => $product->get_id()] );523 $wpdb->update( $wpdb->wc_product_meta_lookup, ['min_price' => $price, 'onsale'=>1], ['product_id' => $product->get_id()] ); 524 524 525 525 if($product instanceof \WC_Product_Variation) { … … 535 535 update_post_meta($last_parent_id, '_sale_price_adp', $last_parent_min_price); 536 536 // phpcs:ignore WordPress.DB 537 $wpdb->update( $wpdb->wc_product_meta_lookup, ['min_price' => $last_parent_min_price ], ['product_id' => $last_parent_id] );537 $wpdb->update( $wpdb->wc_product_meta_lookup, ['min_price' => $last_parent_min_price, 'onsale'=>1], ['product_id' => $last_parent_id] ); 538 538 } 539 539 } … … 547 547 global $wpdb; 548 548 549 if($column !== 'min_max_price') return; 550 551 // phpcs:ignore WordPress.DB 552 $sql = "UPDATE {$wpdb->wc_product_meta_lookup} lookup_table INNER JOIN {$wpdb->postmeta} meta ON lookup_table.product_id = meta.post_id AND meta.meta_key = '_sale_price_adp' SET lookup_table.min_price = meta.meta_value"; 553 // phpcs:ignore WordPress.DB 554 $wpdb->query($sql); 549 if($column == 'min_max_price') { 550 // phpcs:ignore WordPress.DB 551 $sql = "UPDATE {$wpdb->wc_product_meta_lookup} lookup_table INNER JOIN {$wpdb->postmeta} meta ON lookup_table.product_id = meta.post_id AND meta.meta_key = '_sale_price_adp' SET lookup_table.min_price = meta.meta_value"; 552 // phpcs:ignore WordPress.DB 553 $wpdb->query($sql); 554 } 555 if($column == 'onsale') { 556 // phpcs:ignore WordPress.DB 557 $sql = "UPDATE {$wpdb->wc_product_meta_lookup} lookup_table INNER JOIN {$wpdb->postmeta} meta ON lookup_table.product_id = meta.post_id AND meta.meta_key = '_sale_price_adp' SET lookup_table.onsale = 1"; 558 // phpcs:ignore WordPress.DB 559 $wpdb->query($sql); 560 } 555 561 } , 100 ); 562 563 add_filter( 'woocommerce_get_catalog_ordering_args', function ($sort_args) { 564 $orderby_value = null; 565 566 if ( isset( $_GET['orderby'] ) ) { 567 $orderby_value = wc_clean( $_GET['orderby'] ); 568 } 569 570 if (!empty($orderby_value) && $orderby_value === 'on_sale_first') { 571 add_filter( 572 'woocommerce_product_query_meta_query', 573 function ($meta_query) { 574 575 $meta_query = [ 576 'relation' => 'OR', 577 [ 578 'key' => '_sale_price_adp', 579 'compare' => 'NOT EXISTS', 580 ], 581 [ 582 'relation' => 'OR', 583 [ 584 'key' => '_sale_price_adp', 585 'value' => 0, 586 'compare' => '>=', 587 'type' => 'NUMERIC', 588 ], 589 [ 590 'key' => '_sale_price_adp', 591 'value' => '', 592 'compare' => '=', 593 ], 594 ], 595 ]; 596 597 return $meta_query; 598 }, 599 100 600 ); 601 } 602 return $sort_args; 603 }, 100); 556 604 } 557 605 } -
advanced-dynamic-pricing-for-woocommerce/trunk/BaseVersion/Includes/VolumePricingTable/RangeDiscountTable.php
r3384329 r3445465 18 18 use ADP\BaseVersion\Includes\Core\RuleProcessor\PersistentRuleProcessor; 19 19 use ADP\BaseVersion\Includes\Core\RuleProcessor\SingleItemRuleProcessor; 20 use ADP\BaseVersion\Includes\CustomizerExtensions\CategoryBulkTableThemeProperties;21 20 use ADP\BaseVersion\Includes\CustomizerExtensions\CustomizerExtensions; 22 21 use ADP\BaseVersion\Includes\CustomizerExtensions\ProductBulkTableThemeProperties; … … 82 81 83 82 /** 84 * @var Category BulkTableThemeProperties83 * @var CategoryVolumePricingTableProperties 85 84 */ 86 85 protected $categoryContextOptions; … … 101 100 102 101 $this->productContextOptions = new ProductVolumePricingTableProperties(); 103 $this->categoryContextOptions = new Category BulkTableThemeProperties();102 $this->categoryContextOptions = new CategoryVolumePricingTableProperties(); 104 103 } 105 104 … … 1072 1071 } 1073 1072 } 1074 1075 1073 if ( ! $termId) { 1076 1074 return null; -
advanced-dynamic-pricing-for-woocommerce/trunk/advanced-dynamic-pricing-for-woocommerce.php
r3443206 r3445465 8 8 * Author URI: https://algolplus.com/ 9 9 * WC requires at least: 3.6 10 * WC tested up to: 10. 310 * WC tested up to: 10.4 11 11 * 12 12 * Text Domain: advanced-dynamic-pricing-for-woocommerce -
advanced-dynamic-pricing-for-woocommerce/trunk/languages/advanced-dynamic-pricing-for-woocommerce.pot
r3443187 r3445465 5 5 "WooCommerce\n" 6 6 "Report-Msgid-Bugs-To: \n" 7 "POT-Creation-Date: 2026-01-2 0 11:13+0000\n"7 "POT-Creation-Date: 2026-01-23 09:33+0000\n" 8 8 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" 9 9 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" … … 2443 2443 msgstr "" 2444 2444 2445 #: BaseVersion/Includes/CartProcessor/CartProcessor.php:11 092445 #: BaseVersion/Includes/CartProcessor/CartProcessor.php:1115 2446 2446 msgid "Removed {{qty}} free {{product_name}}" 2447 2447 msgstr "" … … 2878 2878 msgstr "" 2879 2879 2880 #: BaseVersion/Includes/CartProcessor/CartCouponsProcessorMerge.php:57 32880 #: BaseVersion/Includes/CartProcessor/CartCouponsProcessorMerge.php:575 2881 2881 #: BaseVersion/Includes/CartProcessor/CartCouponsProcessor.php:691 2882 2882 #: BaseVersion/Includes/CartProcessor/CartCouponsProcessor.php:853 … … 2885 2885 2886 2886 #: BaseVersion/Includes/CartProcessor/CartCouponsProcessorMerge.php:528 2887 #: BaseVersion/Includes/CartProcessor/CartCouponsProcessorMerge.php:535 2887 #: BaseVersion/Includes/CartProcessor/CartCouponsProcessorMerge.php:537 2888 #: BaseVersion/Includes/CartProcessor/CartCouponsProcessorMerge.php:591 2889 #: BaseVersion/Includes/CartProcessor/CartCouponsProcessorMerge.php:602 2888 2890 #: BaseVersion/Includes/CartProcessor/CartCouponsProcessor.php:529 2889 2891 #: BaseVersion/Includes/CartProcessor/CartCouponsProcessor.php:535 … … 3060 3062 msgstr "" 3061 3063 3062 #: BaseVersion/Includes/Core/Rule/CartCondition/Impl/Time.php: 483064 #: BaseVersion/Includes/Core/Rule/CartCondition/Impl/Time.php:54 3063 3065 msgid "Time" 3064 3066 msgstr "" -
advanced-dynamic-pricing-for-woocommerce/trunk/readme.txt
r3443187 r3445465 184 184 == Changelog == 185 185 186 = 4.11.0 - 2026-01-2 1=186 = 4.11.0 - 2026-01-26 = 187 187 * This release dedicated to speed 188 188 * Added option "Don't recalculate cart if cart items don't have changed" (>Settings>Calculation, default ON) … … 191 191 * WooCommerce [products on_sale] shortcode displays products modified by our plugin, but you must enable shortcode [adp_products_on_sale](https://docs.algolplus.com/algol_pricing/settings-algol_pricing/rules/) 192 192 * If you want sort products by price at shop page - please use [Product Only](https://docs.algolplus.com/algol_pricing/rules/product-only-rule-type/) rules 193 * If you want sort products by "On Sale first" at shop page - please install [Extra Product Sorting Options for WooCommerce 194 ](https://wordpress.org/plugins/woocommerce-extra-product-sorting-options/) and use [Product Only](https://docs.algolplus.com/algol_pricing/rules/product-only-rule-type/) rules 193 195 * Updated compatibility with "WPC Product Bundles for WooCommerce" 194 196 * Updated compatibility with "WooCommerce Product Bundles" 195 197 * Updated compatibility with "YITH WooCommerce Product Bundles" 196 * Updated compatibility with WOOCS197 198 * Updated compatibility with "WooCommerce Product Addons" 199 * Updated compatibility with "FOX - Currency Switcher Professional" 200 * Updated compatibility with "Aelia Currency Switcher" 201 * Updated compatibility with "TM Extra product options" 198 202 * Updated compatibility with "Yoast SEO: WooCommerce" 199 * Updated compatibility with "TM Extra product options"200 203 * DEV - new helper function [getOnSaleProducts](https://docs.algolplus.com/algol_pricing/developers-algol_pricing/helpers/) 201 204 * DEV - added hooks "adp_rule_added", "adp_rule_updated", "adp_rule_deleted"
Note: See TracChangeset
for help on using the changeset viewer.