Author Topic: (FIXED)After UPGRADE to 3.4.2 Product Quantity Plugin No Longer Changing Price  (Read 111 times)

PRO

  • Global Moderator
  • Super Hero
  • *
  • Posts: 10291
  • VirtueMart Version: 3+
updated, fixed solution at the bottom
Trying to get my last product plugin working on 3.4.2
It modifies the product weight, and also the product price.
In 3.4.2 The weight is still modified by the plugin, but the new price is not.

Tried it on a few different configurations.
J 3.8.3  V 3.4.2, php 7.2.10
and PHP 7.0.32   J3.8.3    V3.4.2
and J 3.8.3 , PHP 7.0.32 V3.4.2
also tried with vmbeez :)

Is there a new method that needs to be used?

//Prepare Cart
   public function plgVmPrepareCartProduct(&$product, &$customfield,$selected,&$modificatorSum = 0){
      if ($customfield->custom_element !==$this->_name) return;
   if (!empty($customfield->under_disc)){
   if ($product->quantity <= $customfield->under_disc){$product->product_weight=$customfield->under_discmod;}
   }
   if (!empty($customfield->modifier)){
   if ($product->quantity>=$customfield->modifier){$product->product_weight=0;}
   }
   if (!empty($customfield->disc)){
   if ($product->quantity >=$customfield->disc && $product->quantity <$customfield->modifier){$product->product_weight=$customfield->discmod;}
   }
   // return prices
   $product->allPrices[$product->selectedPrice]["product_price"]= $this->applyDiscount($customfield->qdisc1,$customfield->qdisc2,$customfield->qdisc3,$product->quantity,$product->allPrices[$product->selectedPrice]["product_price"]);
       return true;
      //vmdebug('plgVmPrepareCartProduct we can modify the product here');

   }


fixed by returning $modificatorSum  instead of changing price via $product->allPrices[$product->selectedPrice]["product_price"]

   //Prepare Cart
   public function plgVmPrepareCartProduct(&$product, &$customfield,$selected,&$modificatorSum = 0){
      if ($customfield->custom_element !==$this->_name) return;
   if (!empty($customfield->under_disc)){
   if ($product->quantity <= $customfield->under_disc){$product->product_weight=$customfield->under_discmod;}
   }
   if (!empty($customfield->modifier)){
   if ($product->quantity>=$customfield->modifier){$product->product_weight=0;}
   }
   if (!empty($customfield->disc)){
   if ($product->quantity >=$customfield->disc && $product->quantity <$customfield->modifier){$product->product_weight=$customfield->discmod;}
   }
   // return prices

   $modificatorSum = $this->applyDiscount($customfield->qdisc1,$customfield->qdisc2,$customfield->qdisc3,$product->quantity,$product->allPrices[$product->selectedPrice]["product_price"])-$product->allPrices[$product->selectedPrice]["product_price"];
   
       return ;
      //vmdebug('plgVmPrepareCartProduct we can modify the product here');

   }
I do NOT do development work for hire.