PluginProbe
Tiered Pricing Table for WooCommerce / 7.1.5
Tiered Pricing Table for WooCommerce v7.1.5
8.0.2 7.1.7 7.1.5 7.1.4 7.1.1 6.5.0 6.4.0 6.1.0 trunk 1.0 1.1 2.0 2.0.1 2.0.2 2.1 2.1.1 2.1.2 2.2.0 2.2.1 2.2.2 2.2.3 2.3.0 2.3.1 2.3.2 2.3.3 All 91 releases
tier-pricing-table / src / Addons / UserBasedPricing / PricingService.php

PricingService.php in Tiered Pricing Table for WooCommerce 7.1.5, at src/Addons/UserBasedPricing/PricingService.php

67 lines 2.1 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php namespace TierPricingTable\Addons\UserBasedPricing;
2
3 use TierPricingTable\PricingRule;
4
5 class PricingService {
6
7 public function __construct() {
8 /**
9 * Main function to filter the tiered pricing rules
10 *
11 * @priority 25 (Runs after RoleBasedPricing which is 20)
12 */
13 add_filter( 'tiered_pricing_table/price/pricing_rule', array(
14 $this,
15 'addPricing',
16 ), 25, 2 );
17 }
18
19 /**
20 * Main function to filter pricing rules with user-based pricing rule data
21 *
22 * @param PricingRule $pricingRule
23 * @param $productId
24 *
25 * @return PricingRule
26 */
27 public function addPricing( PricingRule $pricingRule, $productId ): PricingRule {
28
29 $product = wc_get_product( $productId );
30
31 if ( ! $product ) {
32 return $pricingRule;
33 }
34
35 $userBasedRule = UserBasedPricingRulesRepository::getInstance()->getCurrentUserRule( $product );
36
37 if ( ! $userBasedRule ) {
38 return $pricingRule;
39 }
40
41 $pricingRule->setType( $userBasedRule->getTieredPricingType() );
42 $pricingRule->setRules( $userBasedRule->getTieredPricingRules() );
43 $pricingRule->setMinimum( $userBasedRule->getMinimumOrderQuantity() );
44
45 $pricingRule->pricingData['pricing_type'] = $userBasedRule->getPricingType();
46
47 $pricingRule->pricingData['regular_price'] = $userBasedRule->getRegularPrice();
48 $pricingRule->pricingData['sale_price'] = $userBasedRule->getSalePrice();
49
50 $pricingRule->pricingData['discount'] = $userBasedRule->getDiscount();
51 $pricingRule->pricingData['discount_type'] = $userBasedRule->getDiscountType();
52
53 $pricingRule->pricingData['tax_status'] = $userBasedRule->getTaxStatus();
54 $pricingRule->pricingData['tax_class'] = $userBasedRule->getTaxClass();
55
56 $pricingRule->provider = 'user-based';
57 $pricingRule->providerData['user'] = $userBasedRule->getUserId();
58
59 $pricingRule->logPricingModification( '[user-based]: Pricing rule is overridden by the rule for user ID: ' . $userBasedRule->getUserId() );
60
61 do_action( 'tiered_pricing_table/user_based_pricing/after_adjusting_pricing_rule', $pricingRule, $userBasedRule,
62 $productId );
63
64 return $pricingRule;
65 }
66 }
67