Jump to content

mohamed

Members
  • Content count

    5
  • Joined

  • Last visited

About mohamed

  • Rank
    PrestaShop Newbie

Profile Information

  • Location
    casablanca
  1. bonjour ou et comment je peux modifier la requette sql de la page produit pour me rendre seulement la quantite d'un seul entrepot selon id_client afin d'ajouter cette quantite au panier sans perdre id_warehouse de ce choix de produit ?
  2. 1) comment je peux faire une restriction d'ajout au panier lorsque la quantite de produit est epuise dans l'entrepot du ville de client? 2) comment je peux faire un restriction de transporteur pour une commande a partir de l'entrepot specifique X?
  3. bonjour, Apres selection du region et ville du client dans la table adresse et la selection d'entrepot du fournisseur du produit a partir d'un requete sql simple que j'ai creer deja je veux que le client de la region (par exemple : X de la ville paris) ne commande seulement qu'aupres des entrepot de sa region et sa ville sachant que l'entrepot du fournisseur du produit n'utulise qu'un seul transporteur SDTM alors les autres entrepot du region x ou bien de la ville paris aura le chois d'utiliser 2 transporteur (retrait magzin ou Tijarati) ma question ou dois je modife le code prestashop pour avoir un menu de choix pour chaque produit ou chaque packagelist et comment ajouter une option list a la page product.tpl pour choisir l'entrepot de commande merci de me donner ou se calcule les frais de livraison au moment d'ajout d'un nouveu produit au panier
  4. classes/Cart.php around line 1619 prestashop 1.5.1 (overided) Hello, After change method select package list (restriction of other warehouse order) i need know where i add code the declaration for 3 variable $warehouseregion, $warehousecity, $warehousesupplier it's cartcontroller.php ? when i add menu the choise betwen variable $warehouseregion, $warehousecity, $warehousesupplier page.tpl for choise public function getPackageList($flush = false) { static $cache = false; if ($cache !== false && !$flush) return $cache; $product_list = $this->getProducts(); // Step 1 : Get product informations (warehouse_list and carrier_list), count warehouse // Determine the best warehouse to determine the packages // For that we count the number of time we can use a warehouse for a specific delivery address $warehouse_count_by_address = array(); $warehouse_carrier_list = array(); $stock_management_active = Configuration::get('PS_ADVANCED_STOCK_MANAGEMENT'); foreach ($product_list as &$product) { if ((int)$product['id_address_delivery'] == 0) $product['id_address_delivery'] = (int)$this->id_address_delivery; if (!isset($warehouse_count_by_address[$product['id_address_delivery']])) $warehouse_count_by_address[$product['id_address_delivery']] = array(); $product['warehouse_list'] = array(); if ($stock_management_active && ((int)$product['advanced_stock_management'] == 1 || Pack::usesAdvancedStockManagement((int)$product['id_product']))) { $warehouse_list = Warehouse::getProductWarehouseList($product['id_product'], $product['id_product_attribute'], $this->id_shop); if (count($warehouse_list) == 0) $warehouse_list = Warehouse::getProductWarehouseList($product['id_product'], $product['id_product_attribute']); // Does the product is in stock ? // If yes, get only warehouse where the product is in stock $warehouse_in_stock = array(); $manager = StockManagerFactory::getManager(); foreach ($warehouse_list as $key => $warehouse) { $product_real_quantities = $manager->getProductRealQuantities( $product['id_product'], $product['id_product_attribute'], array($warehouse['id_warehouse']), true ); Part where i modife class cart.php // Select Only id_warehouse where (product_real_qte>0 AND (customer_codepostal = codepostal_warehouse_region OR city = warehouse_city OR frs = warehouse_frs )) if ($product_real_quantities > 0 || Pack::isPack((int)$product['id_product']) AND $warehouse['id_warehouse'] = '.$varregion.' OR $warehouse['id_warehouse'] = '.$varcity.' OR $warehouse['id_warehouse'] = '.$varsupplier.') $warehouse_in_stock[] = $warehouse; } if (!empty($warehouse_in_stock)) { $warehouse_list = $warehouse_in_stock; $product['in_stock'] = true; } else $product['in_stock'] = false; } else { //simulate default warehouse $warehouse_list = array(0); $product['in_stock'] = StockAvailable::getQuantityAvailableByProduct($product['id_product'], $product['id_product_attribute']) > 0; }
  5. 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,
×