Jump to content

Champ emplacement entrepôt quel est son utilité?


Recommended Posts

Bonjour,
je vois que l'utilité de ce champ n'amène à rien.

Prestashop ne dispose pas d'une visualisation de stock, il n'a pas de bon de préparation sur lequel il pourrait apparaitre, ou sur le bon de livraison.
C'est dommage, car la partie logistique n'est pas à négliger, même lors de son lancement, rien que voir afficher ce champ sur le bl serait très pratique.

Si quelqu'un connait des modules qui prennent en compte ce champ, n'hésitez pas à le faire savoir.
Merci

Link to comment
Share on other sites

Bonjour, cela je l'ai très bien compris, ma demande est simple existe il un module utilisant ce champ, car à l'heure actuel j'ai l'impression qu'il n'est pas exploité.

Un ex : Si l'adresse d'emplacement notifier ressortait sur le Bon de livraison, cela permettrait un gain de temps non négligeable sur la préparation de commande, car là on tourne sur du va chercher lycos...

Link to comment
Share on other sites

  • 2 weeks later...
  • 2 months later...

Bonjour,

oui on peu l'afficher sur le bon de livraison, il faut modifier deux fichiers du coeur de prestashop (sauvegarde du fichier conseillé avant modif).

Il s'agit de order.php et pdf.php dans "prestashop\classes"

 

il faut trouver ce code dans order.php :

public function getProductsDetail()
{
 return Db::getInstance()->ExecuteS('
 SELECT *
 FROM `'._DB_PREFIX_.'order_detail` od
 WHERE od.`id_order` = '.intval($this->id));
}

 

Et le remplacer par

 

public function getProductsDetail()
{
 return Db::getInstance()->ExecuteS('
	 SELECT od.*, p.`location` AS location, m.`name` AS name
	 FROM `'._DB_PREFIX_.'order_detail` od
	 LEFT JOIN `'._DB_PREFIX_.'product` p ON p.`id_product` = od.`product_id`
	 LEFT JOIN `'._DB_PREFIX_.'manufacturer` m ON (m.`id_manufacturer` = p.`id_manufacturer`)
	 WHERE od.`id_order` = '.intval($this->id));
}

 

Ensuite ouvrir le fichier pdf.php

Trouver ceci vers la ligne 700

 else
 {
  $header = array(
array(self::l('Description'), 'L'),
array(self::l('Reference'), 'L'),
array(self::l('Qty'), 'C'),
  );
  $w = array(120, 30, 10);
 }

 

et ajouter la ligne suivante parmis les autres là ou vous le souhaitez par rapport à l'ordre d'affichage dans le pdf (perso je l'ai mis avant le champ qte)

array(self::l('Location'), 'L'), // Add Location

 

Après là ou il y est inscrit 120, 30, 10, il faut rajouter une valeur par ex : 120, 30, 30, 10. Cela correspond à la taille du champ pour la mise en page, faites des tests avec une commande fictive pour bien positionner le champ sans décalage*.

Même modif ici, ajouter une valeur ici (ligne 730) :

* Product table with price, quantities...
*/
public function ProdTab($delivery = false)
{
 if (!$delivery)
  $w = array(100, 15, 30, 15, 30);
 else
  $w = array(120, 30, 10);

la ligne qui contient les cinq valeurs ne correspond pas au bl mais à la facture, donc on ne touche pas.

 

Ensuite dernière modif, cherchez cette ligne plus bas dans le fichier pdf.php

$this->Cell($w[++$i], $lineSize, ($product['product_reference'] ? $product['product_reference'] : '--'), 'B');

 

Ajoutez le code suivant sous la ligne précédement indiqué :

if ($delivery) // Add location (do not forget to change the code in order.php)
 $this->Cell($w[++$i], $lineSize, $product['location'], 'B'); //  Add location

 

Voilà normalement cela doit fonctionner.

 

*Attention toute commande passé avant la mise en place de ce code, ne contiendra pas de valeur dans le champ location sur le bon de livraison.

Si vous inscrivez un emplacement sur un produit après que celui soit commandé, il n'apparaitra pas.

Si vous remplissez le champ avant une commande, l'emplacement s'affichera, la commande sauvegardera le champ emplacement.

 

Voilà c'est quelques peu fastidieux, il aurait pu être plus simple de ma part de mettre le fichier pdf.php en téléchargement, je ne l'ai pas fait, car je trouve qu'il est important de connaître les modifications que l'on fait, surtout sur des fichiers du coeur de prestashop...

 

Edit : modification effectué sur prestashop 1.4+, je ne sais pas si cela fonctionne sur la 1.3.

  • Like 1
Link to comment
Share on other sites

Bonjur,

Je viens de tester à l'instant avec le code que j'ai inscrit dans ce sujet, pas d'erreur, cela fonctionne.

Votre erreur avec le order.php viens surement d'un mauvais remplacement de code ou de la suppression d'une balise pendant la modif.

L'erreur du pdf n'est pas une erreur à mon avis, vous avez surement mal paramétré les valeurs créant un décalage, essayez là ou il y est inscrit à la base 120, 30, 10 par 90, 30, 30, 10 (modif à faire sur deux lignes 700 & 730).

Cdlt

Link to comment
Share on other sites

  • 9 months later...

En ce qui me concerne, la personne que j'ai aidé à installer sa boutique prestahop (1.4.8) ne souhaitait pas que l'emplacement apparaisse dans les .pdf qu'elle édite.

 

Elle le voulait dans directement dans Admin > Commande

Dans le tableau récapitulatif des produits achetés.

 

Pour y arriver, voilà ce qu'il a fallu faire :

dans admin/tabs/AdminOrders.php

 

1/ Ajout du titre et de la colonne "Emplacement" dans le tableau.

Vers la ligne 726, après :

   <th>'.$this->l('Product').'</th>

 

Nous avons ajouté :

   <th>Emplacement</th>

 

 

2/ On va chercher la variable concernant l'emplacement dans la base de données

Quelques parts aux alentours de la ligne 770, juste au dessus du commentaire

 

   // Customization display

 

Nous avons ajouté :

 

   $emplacement = Db::getInstance()->getRow('
   SELECT location
   FROM '._DB_PREFIX_.'product
   WHERE id_product = '.(int)($product['product_id']));

 

3/ On injecte la variable dans le tableau

Puis au dessus de :

	 <td align="center">'.Tools::displayPrice($product_price, $currency, false).'</td>

 

Nous avons ajouté :

	 <td align="center">'.$emplacement['location'].'</td>

Edited by Kahuna_ben (see edit history)
  • Like 1
Link to comment
Share on other sites

  • 1 month later...

Bonjour

 

Je viens de faire la modification de Nérim et ça fonctionne parfaitement pour les emplacements des fiches produits, mais pas pour les déclinaisons, la zone emplacement du PDF reste vide.

 

J'ai bien trouvé un module qui affiche les emplacements sur le bon de commande et qui prend en charge les déclinaisons, mais je trouve dommage d'enlever les modifications et d’investir dans un autre module alors que je suis si près du but.

 

Quelqu'un aurait il une solution?

 

Merci

Link to comment
Share on other sites

Je viens de modifier le code de nérim pour le fichier order.php et maintenant l'emplacement des déclinaisons est bien affiché sur le bon de préparation, mais l'emplacement des produits sans déclinaison ne s'affiche plus.

 

public function getProductsDetail()
{
 return Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS('
 SELECT od.*, p.`location` AS location, n.`location` AS location, m.`name` AS name
			 FROM `'._DB_PREFIX_.'order_detail` od
			 LEFT JOIN `'._DB_PREFIX_.'product` p ON p.`id_product` = od.`product_id`
			 LEFT JOIN `'._DB_PREFIX_.'product_attribute` n ON n.`id_product_attribute` = od.`product_attribute_id`
			 LEFT JOIN `'._DB_PREFIX_.'manufacturer` m ON (m.`id_manufacturer` = p.`id_manufacturer`)
			 WHERE od.`id_order` = '.intval($this->id));

 

Je suis déjà surpris du résultat car je modifie le code sans vraiment tous comprendre.

Pour le reste, je sèche, alors si quelqu’un peut m'aider sa serai vraiment sympa.

 

Merci

Link to comment
Share on other sites

  • 4 months later...
  • 1 month later...
  • 1 month later...
  • 4 months later...

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...