Plugin Directory

Changeset 3445465


Ignore:
Timestamp:
01/23/2026 09:36:15 AM (2 months ago)
Author:
algol.plus
Message:

dev update

Location:
advanced-dynamic-pricing-for-woocommerce/trunk
Files:
11 edited

Legend:

Unmodified
Added
Removed
  • advanced-dynamic-pricing-for-woocommerce/trunk/BaseVersion/Includes/CartProcessor/CartCouponsProcessorMerge.php

    r3297317 r3445465  
    224224    }
    225225
    226     protected function processCouponAdjustments(Cart $cart, WC_Cart $wcCart)
     226    public function processCouponAdjustments(Cart $cart, WC_Cart $wcCart)
    227227    {
    228228        $this->cartContext = $cart->getContext();
     
    532532
    533533        if (in_array($wcCoupon->get_code(), $this->disabledWcCoupons, true)) {
     534            WC()->cart->remove_coupon($wcCoupon->get_code());
     535            $this->replaceDisabledCouponNotices();
    534536            throw new \Exception(
    535537                esc_html__('Sorry, this coupon is not applicable to cart.', 'advanced-dynamic-pricing-for-woocommerce')
     
    577579        );
    578580    }
     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    }
    579606}
  • advanced-dynamic-pricing-for-woocommerce/trunk/BaseVersion/Includes/CartProcessor/CartProcessor.php

    r3443187 r3445465  
    725725            $this->addCommonItems($cart, $wcCart);
    726726            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            }
    727733            $wcNoFilterWorker->calculateTotals($wcCart, ...$flags);
    728 
     734           
    729735            $this->normalizeCart($wcCart);
    730736
  • advanced-dynamic-pricing-for-woocommerce/trunk/BaseVersion/Includes/Compatibility/AeliaSwitcherCmp.php

    r3297317 r3445465  
    6262                10
    6363            );
     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
    6477        }
    6578    }
  • advanced-dynamic-pricing-for-woocommerce/trunk/BaseVersion/Includes/Compatibility/Container/WpcBundleCmp.php

    r3443187 r3445465  
    2626    protected $context;
    2727
     28    protected $settings;
     29
    2830    public function __construct(Context $context)
    2931    {
    3032        $this->context = $context;
     33        $this->settings = (array) get_option( 'woosb_settings', [] );
    3134    }
    3235
     
    8790        $property = $reflection->getProperty('data');
    8891        $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        }
    9098
    9199        return floatval($basePrice);
     
    102110
    103111        if (isset($thirdPartyData['woosb_price'])) {
    104             return -floatval($thirdPartyData['woosb_price']);
     112            return floatval($thirdPartyData['woosb_price']);
    105113        }
    106114
     
    117125        $thirdPartyData = $facade->getThirdPartyData();
    118126        $parentProduct = $facade->getProduct();
    119         if (!empty($thirdPartyData['woosb_discount']) && empty($thirdPartyData['woosb_price'])) {
     127        if (!empty($thirdPartyData['woosb_discount'])) {
    120128            $_price = floatval(CartProcessor::getProductPriceDependsOnPriceMode($parentProduct));
    121129            $_price   *=  (float) $thirdPartyData['woosb_discount']  / 100;
  • advanced-dynamic-pricing-for-woocommerce/trunk/BaseVersion/Includes/Core/Rule/CartCondition/Impl/Time.php

    r2661390 r3445465  
    3434
    3535        $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
    3642        $comparisonMethod = $this->comparisonMethod;
    3743
  • advanced-dynamic-pricing-for-woocommerce/trunk/BaseVersion/Includes/Core/RuleProcessor/SingleItemRuleProcessor.php

    r3384329 r3445465  
    2020use Exception;
    2121use WC_Product;
     22use ADP\BaseVersion\Includes\Core\Cart\DisableWcCouponsCart;
    2223
    2324defined('ABSPATH') or exit;
     
    214215
    215216        if ( ! $this->isRuleMatchedCart($cart)) {
     217            if ($this->rule->getActivationCouponCode()) {
     218                $cart->addCouponsAdjustments(new DisableWcCouponsCart($this->rule->getActivationCouponCode(), $this->rule->getId()));
     219            }
    216220            return;
    217221        }
  • advanced-dynamic-pricing-for-woocommerce/trunk/BaseVersion/Includes/Database/Repository/PersistentRuleRepository.php

    r3443187 r3445465  
    521521        //update lookup table too
    522522        // 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()] );
    524524
    525525        if($product instanceof \WC_Product_Variation) {
     
    535535            update_post_meta($last_parent_id, '_sale_price_adp', $last_parent_min_price);
    536536            // 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] );
    538538        }
    539539    }
     
    547547            global $wpdb;
    548548
    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            }
    555561        } , 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);
    556604    }
    557605}
  • advanced-dynamic-pricing-for-woocommerce/trunk/BaseVersion/Includes/VolumePricingTable/RangeDiscountTable.php

    r3384329 r3445465  
    1818use ADP\BaseVersion\Includes\Core\RuleProcessor\PersistentRuleProcessor;
    1919use ADP\BaseVersion\Includes\Core\RuleProcessor\SingleItemRuleProcessor;
    20 use ADP\BaseVersion\Includes\CustomizerExtensions\CategoryBulkTableThemeProperties;
    2120use ADP\BaseVersion\Includes\CustomizerExtensions\CustomizerExtensions;
    2221use ADP\BaseVersion\Includes\CustomizerExtensions\ProductBulkTableThemeProperties;
     
    8281
    8382    /**
    84      * @var CategoryBulkTableThemeProperties
     83     * @var CategoryVolumePricingTableProperties
    8584     */
    8685    protected $categoryContextOptions;
     
    101100
    102101        $this->productContextOptions  = new ProductVolumePricingTableProperties();
    103         $this->categoryContextOptions = new CategoryBulkTableThemeProperties();
     102        $this->categoryContextOptions = new CategoryVolumePricingTableProperties();
    104103    }
    105104
     
    10721071                }
    10731072            }
    1074 
    10751073            if ( ! $termId) {
    10761074                return null;
  • advanced-dynamic-pricing-for-woocommerce/trunk/advanced-dynamic-pricing-for-woocommerce.php

    r3443206 r3445465  
    88 * Author URI: https://algolplus.com/
    99 * WC requires at least: 3.6
    10  * WC tested up to: 10.3
     10 * WC tested up to: 10.4
    1111 *
    1212 * Text Domain: advanced-dynamic-pricing-for-woocommerce
  • advanced-dynamic-pricing-for-woocommerce/trunk/languages/advanced-dynamic-pricing-for-woocommerce.pot

    r3443187 r3445465  
    55"WooCommerce\n"
    66"Report-Msgid-Bugs-To: \n"
    7 "POT-Creation-Date: 2026-01-20 11:13+0000\n"
     7"POT-Creation-Date: 2026-01-23 09:33+0000\n"
    88"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
    99"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
     
    24432443msgstr ""
    24442444
    2445 #: BaseVersion/Includes/CartProcessor/CartProcessor.php:1109
     2445#: BaseVersion/Includes/CartProcessor/CartProcessor.php:1115
    24462446msgid "Removed {{qty}} free {{product_name}}"
    24472447msgstr ""
     
    28782878msgstr ""
    28792879
    2880 #: BaseVersion/Includes/CartProcessor/CartCouponsProcessorMerge.php:573
     2880#: BaseVersion/Includes/CartProcessor/CartCouponsProcessorMerge.php:575
    28812881#: BaseVersion/Includes/CartProcessor/CartCouponsProcessor.php:691
    28822882#: BaseVersion/Includes/CartProcessor/CartCouponsProcessor.php:853
     
    28852885
    28862886#: 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
    28882890#: BaseVersion/Includes/CartProcessor/CartCouponsProcessor.php:529
    28892891#: BaseVersion/Includes/CartProcessor/CartCouponsProcessor.php:535
     
    30603062msgstr ""
    30613063
    3062 #: BaseVersion/Includes/Core/Rule/CartCondition/Impl/Time.php:48
     3064#: BaseVersion/Includes/Core/Rule/CartCondition/Impl/Time.php:54
    30633065msgid "Time"
    30643066msgstr ""
  • advanced-dynamic-pricing-for-woocommerce/trunk/readme.txt

    r3443187 r3445465  
    184184== Changelog ==
    185185
    186 = 4.11.0 - 2026-01-21 =
     186= 4.11.0 - 2026-01-26 =
    187187* This release dedicated to speed
    188188* Added option "Don't recalculate  cart if cart items don't have changed"  (>Settings>Calculation, default ON)
     
    191191* 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/)
    192192* 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
    193195* Updated compatibility with "WPC Product Bundles for WooCommerce"
    194196* Updated compatibility with "WooCommerce Product Bundles"
    195197* Updated compatibility with "YITH WooCommerce Product Bundles"
    196 * Updated compatibility with WOOCS
    197198* 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"
    198202* Updated compatibility with "Yoast SEO: WooCommerce"
    199 * Updated compatibility with "TM Extra product options"
    200203* DEV - new helper function [getOnSaleProducts](https://docs.algolplus.com/algol_pricing/developers-algol_pricing/helpers/)
    201204* DEV - added hooks "adp_rule_added", "adp_rule_updated", "adp_rule_deleted"
Note: See TracChangeset for help on using the changeset viewer.