Aide - Recherche - Membres - Calendrier
Version complète : [contrib] gestion produits en rupture de stock
Forum osCommerce-fr > Vie du groupe > Archives
Gnidhal
OK pour sélectionner la maj de réappro de stock voici 3 modifs et 2 nouveaux fichiers à inclure dans l'admin :

fichier admin/products_low_stock.php
CODE


<?php

/*

 $Id: products_low_stock.php,v 1.1.1.1 2002/11/28 20:56:39 wilt Exp $



 osCommerce, Open Source E-Commerce Solutions

 http://www.oscommerce.com



 Copyright (c) 2002 osCommerce



 Released under the GNU General Public License

 Auteur : Gnidhal fx@geniehalles.com

*/



 require('includes/application_top.php');

 $quantity_query = tep_db_query(" select configuration_value from " . TABLE_CONFIGURATION . " where configuration_key = 'STOCK_REORDER_LEVEL'");

 $products_quantity = tep_db_fetch_array($quantity_query);

 $warning_stock = $products_quantity['configuration_value'];

?>

<!doctype html public "-//W3C//DTD HTML 4.01 Transitional//EN">

<html <?php echo HTML_PARAMS; ?>>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=<?php echo CHARSET; ?>">

<title><?php echo TITLE; ?></title>

<link rel="stylesheet" type="text/css" href="includes/stylesheet.css">

<script language="javascript" src="includes/general.js"></script>

</head>

<body marginwidth="0" marginheight="0" topmargin="0" bottommargin="0" leftmargin="0" rightmargin="0" bgcolor="#FFFFFF" onload="SetFocus();">

<!-- header //-->

<?php require(DIR_WS_INCLUDES . 'header.php'); ?>

<!-- header_eof //-->



<!-- body //-->

<table border="0" width="100%" cellspacing="2" cellpadding="2">

 <tr>

   <td width="<?php echo BOX_WIDTH; ?>" valign="top"><table border="0" width="<?php echo BOX_WIDTH; ?>" cellspacing="1" cellpadding="1" class="columnLeft">

<!-- left_navigation //-->

<?php require(DIR_WS_INCLUDES . 'column_left.php'); ?>

<!-- left_navigation_eof //-->

   </table></td>

<!-- body_text //-->

   <td width="100%" valign="top"><table border="0" width="100%" cellspacing="0" cellpadding="2">

     <tr>

       <td width="100%"><table border="0" width="100%" cellspacing="0" cellpadding="0">

         <tr>

           <td class="pageHeading"><?php echo HEADING_TITLE; ?></td>

           <td class="pageHeading" align="right"><?php echo tep_draw_separator('pixel_trans.gif', HEADING_IMAGE_WIDTH, HEADING_IMAGE_HEIGHT); ?></td>

         </tr>

       </table></td>

     </tr>

     <tr>

       <td><table border="0" width="100%" cellspacing="0" cellpadding="0">

         <tr>

           <td valign="top"><table border="0" width="100%" cellspacing="0" cellpadding="2">

             <tr class="dataTableHeadingRow">

               <td class="dataTableHeadingContent"><?php echo TABLE_HEADING_PRODUCTS; ?></td>

               <td class="dataTableHeadingContent" align="center"><?php echo TABLE_HEADING_LOW_STOCK; ?></td>

               <td class="dataTableHeadingContent" align="right"><?php echo TABLE_HEADING_ACTION; ?>& nbsp;</td>

             </tr>

<?php

 $products_query_raw = "select pd.products_id, pd.products_name, p.products_quantity from " . TABLE_PRODUCTS_DESCRIPTION . " pd, " . TABLE_PRODUCTS . " p where p.products_id = pd.products_id and p.products_quantity < '" . $warning_stock . "' and pd.language_id = '" . $languages_id . "' order by p.products_quantity ASC";

 $products_split = new splitPageResults($HTTP_GET_VARS['page'], MAX_DISPLAY_SEARCH_RESULTS, $products_query_raw, $products_query_numrows);

 $products_query = tep_db_query($products_query_raw);

 while ($products = tep_db_fetch_array($products_query)) {

   if (((!$HTTP_GET_VARS['pID']) || ($HTTP_GET_VARS['pID'] == $products['products_id'])) && (!$pInfo) ) {

     $pInfo = new objectInfo($products);

   }



   if ( (is_object($pInfo)) && ($products['products_id'] == $pInfo->products_id) ) {

     echo '                  <tr class="dataTableRowSelected" onmouseover="this.style.cursor='hand'" onclick="document.location.href='' . tep_href_link(FILENAME_CATEGORIES, 'pID=' . $products['products_id'] . '&action=new_product') . ''">' . "n";

   } else {

     echo '                  <tr class="dataTableRow" onmouseover="this.className='dataTableRowOver';this.style.cursor='hand'" onmouseout="this.className='dataTableRow'" onclick="document.location.href='' . tep_href_link(FILENAME_PRODUCTS_LOW_STOCK, 'page=' . $HTTP_GET_VARS['page'] . '&pID=' . $products['products_id']) . ''">' . "n";

   }

?>

               <td class="dataTableContent"><?php echo $products['products_name']; ?></td>

               <td class="dataTableContent" align="center"><?php echo $products['products_quantity']; ?></td>

               <td class="dataTableContent" align="right"><?php if ( (is_object($pInfo)) && ($products['products_id'] == $pInfo->products_id) ) { echo tep_image(DIR_WS_IMAGES . 'icon_arrow_right.gif'); } else { echo '<a href="' . tep_href_link(FILENAME_PRODUCTS_LOW_STOCK, 'page=' . $HTTP_GET_VARS['page'] . '&pID=' . $products['products_id']) . '">' . tep_image(DIR_WS_IMAGES . 'icon_info.gif', IMAGE_ICON_INFO) . '</a>'; } ?>& nbsp;</td>

             </tr>

<?php

 }

?>

             <tr>

               <td colspan="3"><table border="0" width="100%" cellspacing="0" cellpadding="2">

                 <tr>

                   <td class="smallText" valign="top"><?php echo $products_split->display_count($products_query_numrows, MAX_DISPLAY_SEARCH_RESULTS, $HTTP_GET_VARS['page'], TEXT_DISPLAY_NUMBER_OF_PRODUCTS_LOW_STOCK); ?></td>

                   <td class="smallText" align="right"><?php echo $products_split->display_links($products_query_numrows, MAX_DISPLAY_SEARCH_RESULTS, MAX_DISPLAY_PAGE_LINKS, $HTTP_GET_VARS['page']); ?></td>

                 </tr>

               </table></td>

             </tr>

           </table></td>

<?php

 $heading = array();

 $contents = array();

 if (is_object($pInfo)) {

   $heading[] = array('text' => '<b>' . $pInfo->products_name . '</b>');



   $contents[] = array('align' => 'center', 'text' => '<a href="' . tep_href_link(FILENAME_CATEGORIES, 'pID=' . $pInfo->products_id . '&action=new_product') . '">' . tep_image_button('button_edit.gif', IMAGE_EDIT) . '</a>');

   $contents[] = array('text' => '<br>' . TEXT_INFO_QUANTITY . ' ' . $pInfo->products_quantity);

 }



 if ( (tep_not_null($heading)) && (tep_not_null($contents)) ) {

   echo '            <td width="25%" valign="top">' . "n";



   $box = new box;

   echo $box->infoBox($heading, $contents);



   echo '            </td>' . "n";

 }

?>

         </tr>

       </table></td>

     </tr>

   </table></td>

<!-- body_text_eof //-->

 </tr>

</table>

<!-- body_eof //-->



<!-- footer //-->

<?php require(DIR_WS_INCLUDES . 'footer.php'); ?>

<!-- footer_eof //-->

<br>

</body>

</html>

<?php require(DIR_WS_INCLUDES . 'application_bottom.php'); ?>


modif dans admin/includes/boxes/catalog.php
QUOTE
 if ($selected_box == 'catalog') {
   $contents[] = array('text'  => '<a href=\"' . tep_href_link(FILENAME_CATEGORIES, '', 'NONSSL') . '\" class=\"menuBoxContentLink\">' . BOX_CATALOG_CATEGORIES_PRODUCTS . '</a><br>' .
                                  '<a href=\"' . tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, '', 'NONSSL') . '\" class=\"menuBoxContentLink\">' . BOX_CATALOG_CATEGORIES_PRODUCTS_ATTRIBUTES . '</a><br>' .
                                  '<a href=\"' . tep_href_link(FILENAME_MANUFACTURERS, '', 'NONSSL') . '\" class=\"menuBoxContentLink\">' . BOX_CATALOG_MANUFACTURERS . '</a><br>' .
                                  '<a href=\"' . tep_href_link(FILENAME_REVIEWS, '', 'NONSSL') . '\" class=\"menuBoxContentLink\">' . BOX_CATALOG_REVIEWS . '</a><br>' .
                                  '<a href=\"' . tep_href_link(FILENAME_SPECIALS, '', 'NONSSL') . '\" class=\"menuBoxContentLink\">' . BOX_CATALOG_SPECIALS . '</a><br>' .
                                  '<a href=\"' . tep_href_link(FILENAME_FEATURED, '', 'NONSSL') . '\" class=\"menuBoxContentLink\">' . BOX_CATALOG_FEATURED . '</a><br>' .
                                  '<a href=\"' . tep_href_link(FILENAME_PRODUCTS_LOW_STOCK, '', 'NONSSL') . '\" class=\"menuBoxContentLink\">' . BOX_CATALOG_PRODUCTS_LOW_STOCK . '</a><br>' .
                                  '<a href=\"' . tep_href_link(FILENAME_PRODUCTS_EXPECTED, '', 'NONSSL') . '\" class=\"menuBoxContentLink\">' . BOX_CATALOG_PRODUCTS_EXPECTED . '</a>');
 }


Fichier admin/includes/languages/french/products_low_stock.php
CODE
<?php

/*

 $Id: products_low_stock.php,v 1.7 2002/01/30 01:23:42 hpdl Exp $



 osCommerce, Open Source E-Commerce Solutions

 http://www.oscommerce.com



 Copyright (c) 2002 osCommerce



 Released under the GNU General Public License

*/



define('HEADING_TITLE', 'Produits à réapprovisionner');



define('TABLE_HEADING_PRODUCTS', 'Produits');

define('TABLE_HEADING_LOW_STOCK', 'Etat du stock');

define('TABLE_HEADING_ACTION', 'Action');



define('TEXT_INFO_QUANTITY', 'Quantité:');

?>

puis 2 define() à ajouter dans admin/includes/languages/french.php
CODE
//## Add Low_Stock Update

define('TEXT_DISPLAY_NUMBER_OF_PRODUCTS_LOW_STOCK', 'Affiche <b>%d</b> & nbsp;<b>%d</b> (sur <b>%d</b> produits à réapprovisionner)');

define('BOX_CATALOG_PRODUCTS_LOW_STOCK', 'Stock bas Produits');


et enfin 1 define() dans admin/includes/application_top.php
CODE
//## Add Low_Stock Update

 define('FILENAME_PRODUCTS_LOW_STOCK', 'products_low_stock.php');



Si l'un de vous pouvait valider tout cela ça serait cool avant de faire un package wink.gif
Chez moi ça marche (MS1 Creload 5)
(les accentués au format html ne passant pas ici j'ai remis des é et à dans les define())
Merciiii cool.gif
Gnidhal
Boaaaaffff ' confused.gif
ça peut s'améliorer en mettant la modif de la qauntité uniquement dans le fichier products_low_stock.php car pour l'instant ça renvoie à la fiche produits de la portion catalogue de l'admin et après maj on ne revient pas dans products_low_stock.php mais dans catalogue => Catégories/Produits.
Y'a kelkun qui le sent de l'améliorer ?
Kool
Tu causes tout seul mon beau Gnidhal ? laugh.gif
Gunt
Non on l'écoute attentivement dans sa prose de php wink.gif

Bon boulot.

Existe t'il un module qui affiche via une image le contenu de stock comme sur le site LDLC.fr.

Je pense que sa doit éxister mais je préfère demander wink.gif
pericles
Pour faire suite (et un petit resume) aux nombreuses discussions sur ce sujet si epineux qu'est l'affichage des stocks: il apparait qu'il existe des contributions pour gerer les stocks mais qu'elles ne sont pas satisfaisantes.
Alors, Gnidhal a pris son courage a 3 mains (merci bien) et propose un debut pour une meilleure gestion des stocks.
Gunt
On tout cas c'est du bon boulot. Ce serait bien d'avoir un visuel de cette fonction (imprime écran du résultat).

Nota : il a pas trois mains mais 21 doigts, sa en fait beaucoup pour taper sur un clavier. biggrin.gif
Kool
Gnidhal je te taquinais, toutes mes félicitations pour cette contribution. J'en aurai pas besoin mais je te félicite quand même ! wink.gif
Gnidhal
Takool le Quin ! laugh.gif laugh.gif laugh.gif
Non t'as raison, je vois un truc qui me chatouille dans mon bouzin, je cherche si ya déjà des klempins qui ont rencontré le pb et je résouds comme je peux en essayant de respecter la structure osc.
ça veut dire aussi que pendant une grosse heure il peut bien pleuvoir des grenouilles ou des sydoniens, tant que ya de la lumière dans mon écran je vois rien d'autre... laugh.gif

boaaarf' si ça peut faire avancer le schmOsc... wink.gif
cochien
j'ai installé la contrib "quantity_display_allowed" qui permets de gérer l'affichage des stocks sur le site.
Je l'ai un peu bidouillée pour afficher une image en fonction du stock (sur commande,pas dispo, qté limité, dispo). Et ça marche plutôt pas mal, je gére ça depuis l'admin avec 4 boutons d'état, et une variable qui donne la limite du stock minimum.
jettez un coup d'oeil si ça vous tente :

http://www.unlockgsm.com/dload-osc/pafiledb.php

http://forums.oscommerce.com/viewtopic.php?t=27041
user posted image
Gnidhal
Humpfff ! blush.gif c'est vrai que c'est bien plus abouti que ma bricole, mais peut-être un peu plus lourd à mettre en place...

Mon bouzin, ça donne ça, tt simplement :
user posted image

Nettement plus light wink.gif

Seuls les produits dont le stock est inférieur au niveau de stock déclaré mini dans l'admin se retrouvent listés là.

That's all folks!
ciju
beaucoup plus efficace ton mod pere gnindhal !
au moins en section dédiée avec vue directe!
enfin me concernant je prefere tres largement
Gnidhal
blush.gif merciiiiii ! biggrin.gif rolleyes.gif wink.gif
cochien
cry.gif bon ben je vais marcher tout droit ... et avec un peu de chance je tomberais sur la station ou je m'écraserai contre un rocher....
pericles
Rassures-toi cochien, ta contribution est bonne aussi et elle m'a donné des idées pour améliorer ma gestion de stock.
Alors merci wink.gif
Gallagan
Super cette contrib, par contre je viens de l'installer et j'ai un petit problème : j'ai des & qui se mettent à la fin des lignes et quand je clique sur un produit j'arrive sur une fiche produit (la bonne) mais pas la bonne categorie (nouveau produit dans "top") alors que top n'est pas une de mes catégories resultat les modifs ne sont pas prises en compte


Produits Etat du stock Action&
Série Allemagne 0 &
2 FRANCS Jean Moulin 0 &
Série Allemagne 0 &
FDC 1975 0 &
Affiche 1 & 4 (sur 4 produits à réapprovisionner) Nombre de pages de résultats :
Gallagan
dans admin/products_low_stock.php

tu as : <script language="javascript" src="includes/general.js"></script>

or je n'ai pas ce fichier ...
Gallagan
ah si dans l'include du catalog
Il faut en faire une copie dans l'include de l'admin


putain ils vont me prendre pour un fou, je parle tout seul ...

www.e-monnaies.com
Gnidhal
pour les & ce sont des caractères & nbsp; qui ont été filtrés dans l'affichage ici.
Pfff un bug habituel ici. quand on glisse du code html dans les pages de codes affichés c'est filtré !
j'ai remis les bon codes html, mais avec un espace entre le & et le nbsp; (sinon ça passe pas ici) donc à corriger à l'arrivée (recherche/remplace) & nbsp; =>
Pour ce qui est du lien vers la fiche je vais voir le truc, je n'ai rien constaté pour moi... il faut peut-être récupérer la catégorie en plus de l'id produit...
a suivre...
Gallagan
le lien avec ton fichier est :

http://www.e-monnaies.com/boutique/admin/categories.php?pID=44&action=new_product

alors que lorsque je le modifie directement : j'ai :
http://www.e-monnaies.com/boutique/admin/categories.php?cPath=32_39&pID=172

donc la categorie et pas : action=new_product

Merci pour la piste : j'essaie de résoudre et je te passe ma "modique" contribution
Gnidhal
QUOTE (Gallagan)
le lien avec ton fichier est :  

http://www.e-monnaies.com/boutique/admin/categories.php?pID=44&action=new_product

alors que lorsque je le modifie directement : j'ai :
http://www.e-monnaies.com/boutique/admin/categories.php?cPath=32_39&pID=172

donc la categorie et pas : action=new_product

Merci pour la piste : j'essaie de résoudre et je te passe ma \"modique\" contribution

Non tu as raison de faire la remarque, mais il y a un soucis dans ce que tu dis car les ID products ne correspondent pas dans tes descriptions de liens donc c'est pas le même produit ! (pID = 44 != pID =172) shock.gif

Bon l'affichage de "nouveau produit dans TOP" est difficile à contourner et c'est simplement l'affichage qui est erronné. Cela ne devrait afficher "edition fiche produit" en cas d'absence d'affichage de la catégorie plutôt que dans "Top" .
de toutes manière l'affichage des actégorie lors de l'édition des fiches est un peu curieux parfois confused.gif
L'accès à la fiche est bon et sa modification ne déplace pas ton produit de catégorie.
Le pb avec les catégories, c'est que tu peux avoir le même produit dans plusieurs catégories (alias de fiche) et donc en pareil cas, quelle catégorie vas-tu afficher ? il n'y a pas de "catégorie de base" juste l'id_products est liée à plusieurs id_categories.
Si tu rajoutes le nom de la catégorie dans l'affichage, tu vas te retrouver avec apparemment plusieurs fiches produit alors qu'il n'y en a qu'une !
(un problème que j'ai rencontré sur le quick_update qu'on a aménagé avec Xaglo)
C'est un problème de structure OSC avec ce seul et unique fichier categories.php à tout faire, catégories, produits, déplacement de produit dans une categorie, assignation de produit à categorie... déclaration de catégorie... et aussi une catégorie qui n'est pas assigné dans la fiche produit (comme catégorie maîtresse du produit) mais une table products_to_categories qui lie les deux tables avec des liens multiples.

Enfin "action=new_product" est le nom de l'action HTTP_VARS qui est envoyé à categories.php pour déclencher toute édition de fiche produit ou catégorie, que le produit existe ou pas.

Si tu as une solution simple, elle est bienvenue. smile.gif
Gallagan
les id differentes c'est normal, j'avais pas pris le même produit !!!
effectivement, il faut l'action newproduct (j'avais pas cliqué)
Chez moi les modifs n'étaient pas apportées quand j'avais dans "top"
J'ai donc modifié le code avec recuperation de la categorie dans la requete et modif des liens (les deux : le lien hypertexte et le bouton editer)
Seul mini bug, les produits dupliques dans differents categories se retrouvent plusieurs fois mais sont selectionnés ensemble donc pas si mal)
si qqn veut ameliorer ...





CODE
<?php

/*

 $Id: products_low_stock.php,v 1.1.1.1 2002/11/28 20:56:39 wilt Exp $



 osCommerce, Open Source E-Commerce Solutions

 http://www.oscommerce.com



 Copyright (c) 2002 osCommerce



 Released under the GNU General Public License

 Auteur : Gnidhal fx@geniehalles.com

*/



 require('includes/application_top.php');

 $quantity_query = tep_db_query(" select configuration_value from " . TABLE_CONFIGURATION . " where configuration_key = 'STOCK_REORDER_LEVEL'");

 $products_quantity = tep_db_fetch_array($quantity_query);

 $warning_stock = $products_quantity['configuration_value'];

?>

<!doctype html public "-//W3C//DTD HTML 4.01 Transitional//EN">

<html <?php echo HTML_PARAMS; ?>>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=<?php echo CHARSET; ?>">

<title><?php echo TITLE; ?></title>

<link rel="stylesheet" type="text/css" href="includes/stylesheet.css">

<script language="javascript" src="includes/general.js"></script>

</head>

<body marginwidth="0" marginheight="0" topmargin="0" bottommargin="0" leftmargin="0" rightmargin="0" bgcolor="#FFFFFF" onload="SetFocus();">

<!-- header //-->

<?php require(DIR_WS_INCLUDES . 'header.php'); ?>

<!-- header_eof //-->



<!-- body //-->

<table border="0" width="100%" cellspacing="2" cellpadding="2">

 <tr>

   <td width="<?php echo BOX_WIDTH; ?>" valign="top"><table border="0" width="<?php echo BOX_WIDTH; ?>" cellspacing="1" cellpadding="1" class="columnLeft">

<!-- left_navigation //-->

<?php require(DIR_WS_INCLUDES . 'column_left.php'); ?>

<!-- left_navigation_eof //-->

   </table></td>

<!-- body_text //-->

   <td width="100%" valign="top"><table border="0" width="100%" cellspacing="0" cellpadding="2">

     <tr>

       <td width="100%"><table border="0" width="100%" cellspacing="0" cellpadding="0">

         <tr>

           <td class="pageHeading"><?php echo HEADING_TITLE; ?></td>

           <td class="pageHeading" align="right"><?php echo tep_draw_separator('pixel_trans.gif', HEADING_IMAGE_WIDTH, HEADING_IMAGE_HEIGHT); ?></td>

         </tr>

       </table></td>

     </tr>

     <tr>

       <td><table border="0" width="100%" cellspacing="0" cellpadding="0">

         <tr>

           <td valign="top"><table border="0" width="100%" cellspacing="0" cellpadding="2">

             <tr class="dataTableHeadingRow">

               <td class="dataTableHeadingContent"><?php echo TABLE_HEADING_PRODUCTS; ?></td>

               <td class="dataTableHeadingContent" align="center"><?php echo TABLE_HEADING_LOW_STOCK; ?></td>

               <td class="dataTableHeadingContent" align="right"><?php echo TABLE_HEADING_ACTION; ?></td>

             </tr>

<?php

 $products_query_raw = "select pd.products_id, pd.products_name, p.products_quantity, pc.categories_id from " . TABLE_PRODUCTS_DESCRIPTION . " pd," . TABLE_PRODUCTS_TO_CATEGORIES . " pc, " . TABLE_PRODUCTS . " p where p.products_id = pd.products_id and p.products_id = pc.products_id and p.products_quantity < '" . $warning_stock . "' and pd.language_id = '" . $languages_id . "' order by p.products_quantity ASC";

 $products_split = new splitPageResults($HTTP_GET_VARS['page'], MAX_DISPLAY_SEARCH_RESULTS, $products_query_raw, $products_query_numrows);

 $products_query = tep_db_query($products_query_raw);

 while ($products = tep_db_fetch_array($products_query)) {

   if (((!$HTTP_GET_VARS['pID']) || ($HTTP_GET_VARS['pID'] == $products['products_id'])) && (!$pInfo) ) {

     $pInfo = new objectInfo($products);

   }



   if ( (is_object($pInfo)) && ($products['products_id'] == $pInfo->products_id) ) {

     echo '                  <tr class="dataTableRowSelected" onmouseover="this.style.cursor='hand'" onclick="document.location.href='' . tep_href_link(FILENAME_CATEGORIES, 'cPath=' . $products['categories_id'] .'&pID=' . $products['products_id'] . '&action=new_product') . ''">' . "n";

   } else {

     echo '                  <tr class="dataTableRow" onmouseover="this.className='dataTableRowOver';this.style.cursor='hand'" onmouseout="this.className='dataTableRow'" onclick="document.location.href='' . tep_href_link(FILENAME_PRODUCTS_LOW_STOCK, 'page=' . $HTTP_GET_VARS['page'] . '&pID=' . $products['products_id']) . ''">' . "n";

   }

?>

               <td class="dataTableContent"><?php echo $products['products_name']; ?></td>

               <td class="dataTableContent" align="center"><?php echo $products['products_quantity']; ?></td>

               <td class="dataTableContent" align="right"><?php if ( (is_object($pInfo)) && ($products['products_id'] == $pInfo->products_id) ) { echo tep_image(DIR_WS_IMAGES . 'icon_arrow_right.gif'); } else { echo '<a href="' . tep_href_link(FILENAME_PRODUCTS_LOW_STOCK, 'page=' . $HTTP_GET_VARS['page'] . '&pID=' . $products['products_id']) . '">' . tep_image(DIR_WS_IMAGES . 'icon_info.gif', IMAGE_ICON_INFO) . '</a>'; } ?></td>

             </tr>

<?php

 }

?>

             <tr>

               <td colspan="3"><table border="0" width="100%" cellspacing="0" cellpadding="2">

                 <tr>

                   <td class="smallText" valign="top"><?php echo $products_split->display_count($products_query_numrows, MAX_DISPLAY_SEARCH_RESULTS, $HTTP_GET_VARS['page'], TEXT_DISPLAY_NUMBER_OF_PRODUCTS_LOW_STOCK); ?></td>

                   <td class="smallText" align="right"><?php echo $products_split->display_links($products_query_numrows, MAX_DISPLAY_SEARCH_RESULTS, MAX_DISPLAY_PAGE_LINKS, $HTTP_GET_VARS['page']); ?></td>

                 </tr>

               </table></td>

             </tr>

           </table></td>

<?php

 $heading = array();

 $contents = array();

 if (is_object($pInfo)) {

   $heading[] = array('text' => '<b>' . $pInfo->products_name . '</b>');



   $contents[] = array('align' => 'center', 'text' => '<a href="' . tep_href_link(FILENAME_CATEGORIES, 'cPath=' . $pInfo->categories_id . '&pID=' . $pInfo->products_id . '&action=new_product') . '">' . tep_image_button('button_edit.gif', IMAGE_EDIT) . '</a>');

   $contents[] = array('text' => '<br>' . TEXT_INFO_QUANTITY . ' ' . $pInfo->products_quantity);

 }



 if ( (tep_not_null($heading)) && (tep_not_null($contents)) ) {

   echo '            <td width="25%" valign="top">' . "n";



   $box = new box;

   echo $box->infoBox($heading, $contents);



   echo '            </td>' . "n";

 }

?>

         </tr>

       </table></td>

     </tr>

   </table></td>

<!-- body_text_eof //-->

 </tr>

</table>

<!-- body_eof //-->



<!-- footer //-->

<?php require(DIR_WS_INCLUDES . 'footer.php'); ?>

<!-- footer_eof //-->

<br>

</body>

</html>

<?php require(DIR_WS_INCLUDES . 'application_bottom.php'); ?>
Gyakutsuki
Est il posible pour cette contrib d'ajouter quelques lignes permettant d'envoyer automatiquement un mail au commerçant quand le stock d'un produit est inférieur à la quantité minimum ?
Cela éviterait beaucoup de consultation inutile.
J'ai essayé de m'y atteler mais bon j'ai calé.
Gnidhal
ça doit être possible puisque le niveau de stock est testé à chaque commande.
Mais c'est dans la partie catalog qu'il faut intervenir et à chaque fois qu'un produit passe en dessous de la limite il faudrait déclencher une action qui envoit un mail.
Il faut donc ajouter une appli dans catalog avec un appel depuis le application_top.php.
Donc cela n'aurait rien à voir avec cette contrib qui est là pour lister rapidement depuis l'admin les produits en dessous de la limite.
Cette contrib n'a d'ailleurs que peu d'intérêt depuis les dernières maj de quick_update wink.gif biggrin.gif
azer
wow j'essaie de suivre ... bon je viens d installer le code coller par galligan ..

1.Pourquoi au lieu de changer directement le nombre de produit, vous mettez un lien vers la fiche du produit ? surout que ca fait peur quand on voit
QUOTE
Nouveau produit dans
on sait ps trop si ca ajoute un nouveau produit ou is ca le met a jour

2. pour le fichier languages/french.php j'ai legerement modifié , faut encore mettre les code html pour les accents ... je sais pas si cest un gros probleme mais je met les éèà directement ...

CODE
define('TEXT_DISPLAY_NUMBER_OF_PRODUCTS_LOW_STOCK', 'Affichage des produits <b>%d</b>& nbsp;à& nbsp;<b>%d</b> (sur <b>%d</b> en dessous du seuil d'alerte)');
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'informations, la mise en page et les images, veuillez cliquer ici.
Invision Power Board © 2001-2014 Invision Power Services, Inc.