Jump to content

début de modification de la fonction 'générateur de déclinaisons'


Recommended Posts

Suite à plusieurs demandes, le générateur de déclinaisons demande à être revu.
En effet à il serait primordial qu'il puisse accepter des multiplications afin d'appliquer un coeficient ou un pourcentage à un attribut.
Cela se passe ici:
prestashop/adminz/tabs/AdminAttributeGenerator.php


Je viens de passer pas mal de temps avec Moon, un pote balaise en php et on a essayé plein de chose.
on a testé la regex dans tous les sens et elle est bonne. Mais malheureusement les cases du générateur dans lesquelles on va mettre un *1.5 par exemple resteront désespérément à zéro
Voici la fonction où nous en sommes.

Ce serait sympa que le dev qui a bossé sur le générateur vienne faire un tour par ici...

Ou bien si vous connaissez un module qui permettrait de le faire? je suis preneur!

class AdminAttributeGenerator extends AdminTab
{
   private $combinations = array();
   private $product;

private function addAttribute($arr, $price = 0, $weight = 0)
   {
       foreach ($arr AS $attr)        { 
               preg_match('%([+/*-]?)([0-9]+\.?[0-9]+)%',$_POST['price_impact'][intval($attr)],$found);
               if ($found){
               var_dump($found);
                   switch($found[1]){
                       case '+' :
                       $price += floatval($found[2]);break;
                       case '-' :
                       $price -= floatval($found[2]);break;
                       case '/' :
                       $price /= floatval($found[2]);break;
                       case '*' :
                       //$price =floatval($price)* floatval($found[2]);break;
                       echo sprintf("avant : %s : f",$price,$price);$price =floatval($price)* floatval($found[2]);echo sprintf("apres :  %s : f",$price,$price);break;

                       default:
                       $price += floatval($found[2]);break;
                   }
               }else{var_dump($_POST['price_impact'][intval($attr)]);
                   var_dump($found);}
                   $weight += floatval($_POST['weight_impact'][intval($attr)]);

                       }

           //$price += $_POST['price_impact'][intval($attr)];
           //$weight += floatval($_POST['weight_impact'][intval($attr)]);
       //}
       if ($this->product->id)
       {
           return (array(
                   'id_product' => intval($this->product->id),
                   'price' => floatval($price),
                   'weight' => floatval($weight),
                   'ecotax' => 0,
                   'quantity' => intval($_POST['quantity']),
                   'reference' => pSQL($_POST['reference']),
                   'default_on' => 0));
       }
       return array();
   }

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...