mohamed Posted November 6, 2017 Share Posted November 6, 2017 Bonsoir, les benevoles excuse moi d'abord de ma mauvaise langue je veux ajouter un menu deroulant codepostal a la page product.tpl et du code php a la page controllers/front/productcontrol.php afin de traiter le choix du magazin(entrepot - warehouse) que le client a choisi du menu. 1 - chaque ville il a 3 entrepot (table ps_address) magazin (entrepot) regional => champ address2 = 0 (choix par default) magazin (entrepot) centrale => champ address2 = 1 magazin (entrepot) fournisseur=>champ address2 = 2 2 - apres la connexion du client le choix du magazin (entrepot) par default (regional) est determiner selon son codepostal pour afficher la qte des 3 magazin de sa ville pour le produit X apres le choix on affecte dans la page cart.php une valeur au variable id_warehouse et on l'insere a la table ps_cart la valeur cocher a traver le menu (une colone id_warehouse doit etre ajoute a la table ps_cart de notre base donnee) on compare les qte sur chaque magazin_warehouse si il y a un manque de stock "regional" on passe au "centrale" sinon on passe au magazin "frs" (on utilise le retrait au magazin comme transporteur1 par default ou bien la livraison a domicille par nos propre livreur (transporteur2) par contre le magazin frs utilise une societe tiers(transporteur3)). 3 - on modifier le code du class des pages classe/order.php et classe/payementmodule.php ma version de boutique ps 1.5.1 a - ma premiere question comment je peux inserer l id_warehouse "y" dans la table ps_order_detail et deminuer le stock de ce warehouse "y" sans toucher un autre stock du warehouse "x"? b - ma deuxieme question comment diviser la commande (3produit A + 5produit du client "C" de la ville "V" sur plusieurs warehouse de la meme ville "V" lorsque un produit A existe sur "wh 1" et n'existe pas sur "wh 2" et un produit B existe sur "wh 2" et n'existe pas sur "wh 1"? 4 - voici la 1er modif dans le fichier "productcontroller.php" ou j'ai ajoute une petite modif apres if (!$this->errors) (environ la ligne 150) dans la fonction initcontent : ----------------------------------------- if (!$this->errors) 150 { debut modif $id_product = (int)Tools::getValue('id_product'); $warehouses = WarehouseCore::getWarehousesByProductId($id_product); foreach($warehouses as $qty) $warehouse_qte[]=ProductCore::getRealQuantity($id_product,'',$qty['id_warehouse']); $sql1 = 'SELECT `city`, `postcode` FROM `'._DB_PREFIX_.'address` a WHERE `id_customer` = '.(int)$this->context->customer->id; $result1 = Db::getInstance()->Execute($sql1); $city = $result1['ville']; $cpregion = $result1['postcode']; $sql2 = 'SELECT `city`, `postcode` FROM `'._DB_PREFIX_.'address` WHERE `adresse2` = "1" AND `ville` = '.(int)$city; $result2 = Db::getInstance()->Execute($sql2); $cpville = $result2['postcode']; $sqlsup = 'SELECT `id_supplier` FROM `'._DB_PREFIX_.'product` WHERE `id_product` ='.(int)$this->product->id; $resultsup = Db::getInstance()->getvalue($sqlsup); $id_supplier = $resultsup['id_supplier']; $sql3 = 'SELECT `postcode` FROM `'._DB_PREFIX_.'address` WHERE `id_supplier` ='.(int)$id_supplier; $result3 = Db::getInstance()->getvalue($sql3); $cpvillesup = $result3['postcode']; $sqlidwhregion = 'SELECT `id_warehouse` FROM `'._DB_PREFIX_.'address` WHERE `lastname` = "warehouse" AND `postcode` ='.(int)$cpregion; $resultidwhregion = Db::getInstance()->getvalue($sqlidwhregion); $idwhregion = $resultidwhregion['id_warehouse']; $sqlidwhville = 'SELECT `id_warehouse` FROM `'._DB_PREFIX_.'address` WHERE `lastname` = "warehouse" AND `postcode` ='.(int)$cpville; $resultidwhville = Db::getInstance()->getvalue($sqlidwhville); $idwhville = $resultidwhville['id_warehouse']; $sqlidwhsup= 'SELECT `id_warehouse` FROM `'._DB_PREFIX_.'address` WHERE `lastname` = "warehouse" AND `adresse2` = "2" AND `postcode` ='.(int)$cpvillesup; $resultidwhsup = Db::getInstance()->getvalue($sqlidwhsup); $idwhsup = $resultidwhsup['id_warehouse']; $sqlqteproduct= 'SELECT `id_warehouse`, `usable_quantity` FROM `'._DB_PREFIX_.'stock` WHERE `id_product` = '.(int)$id_product.' AND `id_warehouse` = '.(int)$idwhregion.' OR `id_warehouse` = '.(int)$idwhville.' OR `id_warehouse` ='.(int)$idwhsup.''; //la requette dans le cas ou nous voulons recupere la quantite d'un seul entrepot (par defaut du client) // $sqlqteproduct= 'SELECT `id_warehouse`, `usable_quantity` FROM `'._DB_PREFIX_.'stock` // WHERE `id_product` = '.(int)$id_product.' AND `id_warehouse` = '.(int)$idwhregion.''; $resultqteproduct = Db::getInstance()->ExecuteS($sqlqteproduct); //$id_warehouse[] = $resultqteproduct['id_warehouse']; //$qteproduct[] = $resultqteproduct['usable_quantity']; foreach ($resultqteproduct as $Key => $qteproduct) { $id_entrepot[] = $qteproduct['id_warehouse']; $qte_entrepot[] = $qteproduct['usable_quantity']; $wq[]= $row; $array_wq[] = array('wq'=>$wq['id_warehouse'], 'wq_qte'=>$wq['usable_quantity']); } $this->context->smarty->assign(array( 'warehousecp' => $id_entrepot, 'warehouseqte' => $qte_entrepot )); //fin de modif je veux modifier la fonction getPackageList() pour avoir le resultat de mes deux question le code qui doit etre inserer dans les autres page pour l'inserer a la table order_detail //Product::getQuantity($id_product, $id_product_attribute = null, $cache_is_pack = null); // This will consider a specific warehouse //Product::getRealQuantity($id_product, $id_product_attribute = 0, $id_warehouse = 0, $id_shop = null) //They both return the product’s quantity, but the latter is to be preferred with advanced stock management in mind. // Gets the quantity in stock for the specific warehouse ID //$quantity = Product::getRealQuantity(3, 0, $choixwh); //$quantity = Product::getRealQuantity(3, 0, 1); // foreach ($warehouses as $w) // $entrepot = $w['name']; // $choixwh = 1; // menu deroulant de choix warehouse un grand merci au developpeur qui va m'aider a creuser dans ce piste (j'ai du gros probleme avec le corp du ps) Coordialement, Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now