OSC-60: Export des articles à commander auprès des fournisseurs * * modifié pour supporter l'export des commandes qui ont atteint ou dépassé le seuil du stock d'alerte. * Le stock d'alerte est créé côté admin pour chaque fiche produit, et est défini par le client. * Ce stock d'alerte n'apparaît pas sur la fiche produit côté boutique. * // <- OSC-60: Export des articles à commander auprès des fournisseurs Contribution Export universel http://www.vaisonet.com Copyright © 2007 Vaisonet Released under the GNU General Public License */ ////////////////////////// /// Configuration /// /// see lisezmoi.html /// ////////////////////////// // -> OSC-60: Export des articles à commander auprès des fournisseurs // Pour cet export, on a décidé qu'un mot de passe ne sera pas demandé. // Le mot de passe pour ce mode est aussi court-circuité dans le fichier: export.php // Le fichier export.php est le fichier maître qui fera la redirection vers ce fichier. // Donc on court-circuite ce qui est relatif au mot de passe. // Pour cela, on précise directement le bon mot de passe. $verif = false; // au lieu de true = Skip Password // <- OSC-60: Export des articles à commander auprès des fournisseurs $pass = 'racing'; define ('DISPLAY_PRICE_WITH_TAX', false); $ean = false; $ecotax = false; // temps d'exécution infini // ne fonctionne pas sur tous les serveurs, dans ce cas il y aura des timeouts // et les fichiers seront incomplets. Mieux vaut alors opter pour un hébergement plus performant. set_time_limit(0); require('includes/application_top.php'); $output = ''; // sécurisation des variables et vérification //La ligne ci-après permet de passer des frais de port fixe dans l'url //$port = (isset($HTTP_GET_VARS['port']) && tep_not_null($HTTP_GET_VARS['port'])) ? tep_db_prepare_input($HTTP_GET_VARS['port']) : "-1"; $language_code = (isset($HTTP_GET_VARS['language']) && tep_not_null($HTTP_GET_VARS['language'])) ? tep_db_prepare_input($HTTP_GET_VARS['language']) : DEFAULT_LANGUAGE; $p = tep_db_prepare_input($HTTP_GET_VARS['p']); $format = basename(tep_db_prepare_input($HTTP_GET_VARS['format'])); $cache = tep_db_prepare_input($HTTP_GET_VARS['cache']); $fichier = tep_db_prepare_input($HTTP_GET_VARS['fichier']); $manufacturer = tep_db_prepare_input($HTTP_GET_VARS['manufacturer']); $category = tep_db_prepare_input($HTTP_GET_VARS['cat']); $month = tep_db_prepare_input($HTTP_GET_VARS['month']); $year = tep_db_prepare_input($HTTP_GET_VARS['year']); $libre = tep_db_prepare_input($HTTP_GET_VARS['libre']); if ($HTTP_GET_VARS['rep'] == "1") $rep = 'export/secure/'; else $rep = 'export/'; //On vérifie le code avant de lancer les requêtes if( ($verif == true and $p==$pass) OR $verif == false ) { $included_categories_query = tep_db_query("SELECT c.categories_id, c.parent_id, cd.categories_name FROM " . TABLE_CATEGORIES . " c, " . TABLE_CATEGORIES_DESCRIPTION . " cd WHERE c.categories_id = cd.categories_id AND cd.language_id = FLOOR($languages_id)"); $inc_cat = array(); // Identification du nom de la catégorie, et l'id de la catégorie parent while ($included_categories = tep_db_fetch_array($included_categories_query)) { $inc_cat[] = array ( 'id' => $included_categories['categories_id'], 'parent' => $included_categories['parent_id'], 'name' => $included_categories['categories_name']); } $cat_info = array(); for ($i=0; $i $inc_cat[$i]['parent'], 'name' => $inc_cat[$i]['name'], 'path' => $inc_cat[$i]['id'], 'link' => '' ); for ($i=0; $i' . $cat_info[$link_array[$j]]['name'] . ' » '; } } // -> PEF : Product Extra fields $extra_fields_array = array(); $extra_fields_query = tep_db_query("select * from " . TABLE_PRODUCTS_EXTRA_FIELDS); while ($extra_fields = tep_db_fetch_array($extra_fields_query)) { $extra_fields_array[$extra_fields['products_extra_fields_name']] = $extra_fields; } // <- PEF // -> OSC-60: Export des articles à commander auprès des fournisseurs // Effectue la recherche sql. Sera basée sur le Stock d'alerte. // C'est à dire: La quantité actuelle (products_quantity) sera vérifiée SI elle coincide ou qu'elle est inférieure au stock d'alerte spécifié par le gérant du site (products_stock_alert). // On exclue les produits que le Gérant du site aura au préalable désactivé de son interface administrative, cela évite ainsi d'inclure les produits qui sont en fin de série. // Inférieur signifie alors Seuil d'Alerte dépassé, car inférieur au nombre de produits minimum à avoir en stock pour le produit donné! $sql = "SELECT p.*, p.products_image, p.products_model, pd.products_name, pd.products_description, pc.categories_id, pr.date_added as review_date, pr.customers_name, pr.reviews_rating, pt.reviews_text, pt.languages_id as lngr FROM (" . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_DESCRIPTION . " pd, " . TABLE_PRODUCTS_TO_CATEGORIES . " pc) LEFT JOIN reviews as pr ON (p.products_id = pr.products_id) LEFT JOIN reviews_description as pt ON (pr.reviews_id = pt.reviews_id) WHERE p.products_id = pd.products_id AND p.products_status = '1' AND p.products_id = pc.products_id AND p.products_quantity <= p.products_stock_alert AND pd.language_id = FLOOR($languages_id)"; // <- OSC-60: Export des articles à commander auprès des fournisseurs if ( $manufacturer != "ALL" ) $sql .= " AND p.manufacturers_id = " . $manufacturer; if ( $category != "ALL" ) $sql .= " AND pc.categories_id = " . $category; $sql .= " ORDER BY pc.categories_id, pd.products_name"; $products_query = tep_db_query($sql); $product_num = 0; $products_processed=array(); // -> 0000018: export catalogue : doublons et produits finis while($products = tep_db_fetch_array($products_query)) { if ( $products_processed[$products['products_id']] == 1 ) { continue; } $products_processed[$products['products_id']] = 1; // <- 0000018 if (intval($products['manufacturers_id']) > 0) { $manufacturers_query = tep_db_query("SELECT manufacturers_name FROM " . TABLE_MANUFACTURERS . " WHERE manufacturers_id = " . $products['manufacturers_id']); $manufacturers_result = tep_db_fetch_array($manufacturers_query); $products['manufacturers_name'] = $manufacturers_result['manufacturers_name']; } // -> QPBPP135 $price_breaks_array = array(); $price_breaks_query = tep_db_query("select products_price, products_qty from " . TABLE_PRODUCTS_PRICE_BREAK . " where products_id = '" . $products['products_id'] . "' order by products_qty"); while ($price_break = tep_db_fetch_array($price_breaks_query)) { $price_breaks_array[] = $price_break; } // <- QPBPP135 // -> PEF : Product Extra fields $products_extra_fields_array = array(); $products_extra_fields_query = tep_db_query("select * FROM " . TABLE_PRODUCTS_TO_PRODUCTS_EXTRA_FIELDS . " where products_id = '" . $products['products_id'] . "'"); while ($products_extra_fields = tep_db_fetch_array($products_extra_fields_query)) { $products_extra_fields_array[$products_extra_fields['products_extra_fields_id']] = $products_extra_fields; } // <- PEF $special_query = tep_db_query("SELECT specials_new_products_price , expires_date , specials_date_added FROM " . TABLE_SPECIALS . " WHERE products_id = " . $products['products_id'] . " AND status = '1' limit 1"); $special_result = tep_db_fetch_array($special_query); if ($special_result['specials_new_products_price'] > 0) $products['products_price'] = $special_result['specials_new_products_price']; $product_num++; //calcul des prix // la varaible $reduc permet de tester s'il y a une promo $price = tep_add_tax($products['products_price'], tep_get_tax_rate($products['products_tax_class_id'])); if($special_result['specials_new_products_price'] == '' ) { $discount_price = '' ; $regular_price = $price; $reduc = false; } else { $discount_price = $special_result['specials_new_products_price']; $regular_price = $price; $reduc = true; } // Test barcod mod if (!$ean) $products['products_barcode'] == ""; // Test ecotax if ($ecotax) $ecotax_montant = tep_get_ecotax_price_value($products['ecotax_rates_id']); else $ecotax_montant = 0; require_once("includes/modules/ExU/monthly_sales.php"); $date = new \DateTime('now -1 year'); $date = $date->format('Y-m-d H:i:s'); $annual_sales = get_product_purchased_from($products['products_id'],$date); $monthly_sales = round($annual_sales/12); require_once(DIR_WS_CLASSES . 'suppliers_orders.php'); $suppliers_orders = new SuppliersOrders(); $suppliers_orders->retrieveOrderedProducts(); $ordered = $suppliers_orders->getLastArchivedOrderedProducts($products['products_id'], 1); $last_supply = date("Y/m/d", strtotime($ordered[0]['date_received'])); if ($last_supply =="1970/01/01") { $last_supply =""; } // On appelle le "plugin" définissant le format du fichier include(DIR_WS_MODULES . 'ExU/' . $format); } $content = $head . $output. $foot; //Soit on met en cache, soit on affiche le résulat if ($cache != "true") { Header( $header ); if ($header2) Header( $header2 ); echo $content; } else { $fp= fopen(DIR_FS_CATALOG . $rep . $fichier,"w"); fputs($fp,"$content"); fclose($fp); } } require(DIR_WS_INCLUDES . 'application_bottom.php'); ?>