From 864315d018fc63c27f81b6ffb4f9b4f0a4f1a9c4 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 9 Oct 2013 21:07:00 +0200 Subject: [PATCH] Fix: debug replanishment feature --- htdocs/compta/bank/search.php | 16 ++++----- htdocs/langs/en_US/stocks.lang | 2 +- htdocs/langs/fr_FR/stocks.lang | 2 +- htdocs/product/stock/replenish.php | 57 ++++++++++++++++-------------- 4 files changed, 40 insertions(+), 37 deletions(-) diff --git a/htdocs/compta/bank/search.php b/htdocs/compta/bank/search.php index cc3f0cd548d..650733dbb9c 100644 --- a/htdocs/compta/bank/search.php +++ b/htdocs/compta/bank/search.php @@ -42,7 +42,7 @@ $debit=GETPOST("debit"); $credit=GETPOST("credit"); $type=GETPOST("type"); $account=GETPOST("account"); -$bid=GETPOST("bid"); +$bid=GETPOST("bid","int"); $param=''; if ($description) $param.='&description='.$description; @@ -83,7 +83,7 @@ $sql.= " b.fk_account, b.fk_type,"; $sql.= " ba.rowid as bankid, ba.ref as bankref,"; $sql.= " bu.label as labelurl, bu.url_id"; $sql.= " FROM "; -if (! empty($_REQUEST["bid"])) $sql.= MAIN_DB_PREFIX."bank_class as l,"; +if ($bid) $sql.= MAIN_DB_PREFIX."bank_class as l,"; $sql.= " ".MAIN_DB_PREFIX."bank_account as ba,"; $sql.= " ".MAIN_DB_PREFIX."bank as b"; $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."bank_url as bu ON bu.fk_bank = b.rowid AND type = 'company'"; @@ -92,21 +92,21 @@ $sql.= " WHERE b.fk_account = ba.rowid"; $sql.= " AND ba.entity = ".$conf->entity; if (GETPOST("req_nb")) { - $sql.= " AND b.num_chq like '%".$db->escape(GETPOST("req_nb"))."%'"; + $sql.= " AND b.num_chq LIKE '%".$db->escape(GETPOST("req_nb"))."%'"; $param.='&req_nb='.urlencode(GETPOST("req_nb")); } if (GETPOST("thirdparty")) { - $sql.=" AND (COALESCE(s.nom,'') LIKE '%".$db->escape(GETPOST("thirdparty"))."%')"; + $sql.=" AND s.nom LIKE '%".$db->escape(GETPOST("thirdparty"))."%'"; $param.='&thirdparty='.urlencode(GETPOST("thirdparty")); } -if (! empty($_REQUEST["bid"])) +if ($bid) { - $sql.= " AND b.rowid=l.lineid AND l.fk_categ=".$_REQUEST["bid"]; + $sql.= " AND b.rowid=l.lineid AND l.fk_categ=".$bid; } -if(! empty($type)) +if (! empty($type)) { - $sql .= " AND b.fk_type = '" . $type ."' "; + $sql.= " AND b.fk_type = '".$db->escape($type)."' "; } // Search criteria amount $si=0; diff --git a/htdocs/langs/en_US/stocks.lang b/htdocs/langs/en_US/stocks.lang index b26970e110d..9ce96801636 100644 --- a/htdocs/langs/en_US/stocks.lang +++ b/htdocs/langs/en_US/stocks.lang @@ -100,5 +100,5 @@ AlertOnly= Alerts only WarehouseForStockDecrease=The warehouse %s will be used for stock decrease WarehouseForStockIncrease=The warehouse %s will be used for stock increase ForThisWarehouse=For this warehouse -ReplenishmentStatusDesc=This is list of all product with a physical stock lower than desired stock and suggest you to create supplier orders to fill the difference. +ReplenishmentStatusDesc=This is list of all product with a physical stock lower than desired stock (or alert value if checkbox "alert only" is checked) and suggest you to create supplier orders to fill the difference. ReplenishmentOrdersDesc=This is list of all opened supplier orders \ No newline at end of file diff --git a/htdocs/langs/fr_FR/stocks.lang b/htdocs/langs/fr_FR/stocks.lang index d1ce8931a1a..9cf0ac703a7 100644 --- a/htdocs/langs/fr_FR/stocks.lang +++ b/htdocs/langs/fr_FR/stocks.lang @@ -100,5 +100,5 @@ AlertOnly = Alertes seulement WarehouseForStockDecrease=L'entrepôt %s sera utilisé pour la décrémentation du stock WarehouseForStockIncrease=L'entrepôt %s sera utilisé pour l'incrémentation du stock ForThisWarehouse=Pour cet entrepôt -ReplenishmentStatusDesc=Cet écran permet de voir les produits avec un stock physique inférieure à la quantité minimale désirée et propose de créer des commandes fournisseurs pour compléter la différence +ReplenishmentStatusDesc=Cet écran permet de voir les produits avec un stock physique inférieure à la quantité minimale désirée (ou à la quantité du seuil d'alerte si la case "alerte seulement" est cochée) et propose de créer des commandes fournisseurs pour compléter la différence ReplenishmentOrdersDesc=Voici la liste des commandes fournisseurs en cours \ No newline at end of file diff --git a/htdocs/product/stock/replenish.php b/htdocs/product/stock/replenish.php index 650891bb6bd..25f5a1a112a 100644 --- a/htdocs/product/stock/replenish.php +++ b/htdocs/product/stock/replenish.php @@ -1,6 +1,6 @@ +/* Copyright (C) 2013 Cédric Salvador + * Copyright (C) 2013 Laurent Destaileur * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -173,14 +173,14 @@ if ($action == 'order' && isset($_POST['valid'])) $title = $langs->trans('Status'); -$sql = 'SELECT p.rowid, p.ref, p.label, p.price'; -$sql .= ', p.price_ttc, p.price_base_type,p.fk_product_type'; -$sql .= ', p.tms as datem, p.duration, p.tobuy, p.seuil_stock_alerte,'; -$sql .= ' SUM(COALESCE(s.reel, 0)) as stock_physique'; -$sql .= ', p.desiredstock'; -$sql .= ' FROM ' . MAIN_DB_PREFIX . 'product as p'; -$sql .= ' LEFT JOIN ' . MAIN_DB_PREFIX . 'product_stock as s'; -$sql .= ' ON p.rowid = s.fk_product'; +$sql = 'SELECT p.rowid, p.ref, p.label, p.price,'; +$sql.= ' p.price_ttc, p.price_base_type,p.fk_product_type,'; +$sql.= ' p.tms as datem, p.duration, p.tobuy, p.seuil_stock_alerte,'; +$sql.= ' p.desiredstock,'; +$sql.= ' SUM('.$db->ifsql("s.reel IS NULL", "s.reel", "0").') as stock_physique'; +$sql.= ' FROM ' . MAIN_DB_PREFIX . 'product as p'; +$sql.= ' LEFT JOIN ' . MAIN_DB_PREFIX . 'product_stock as s'; +$sql.= ' ON p.rowid = s.fk_product'; $sql.= ' WHERE p.entity IN (' . getEntity("product", 1) . ')'; if ($sall) { $sql .= ' AND (p.ref LIKE "%'.$db->escape($sall).'%" '; @@ -193,7 +193,7 @@ if (dol_strlen($type)) { if ($type == 1) { $sql .= ' AND p.fk_product_type = 1'; } else { - $sql .= ' AND p.fk_product_type != 1'; + $sql .= ' AND p.fk_product_type <> 1'; } } if ($sref) { @@ -210,21 +210,23 @@ if ($snom) { $sql .= ' AND p.label LIKE "%' . $db->escape($crit) . '%"'; } } -$sql .= ' AND p.tobuy = 1'; +$sql.= ' AND p.tobuy = 1'; if (!empty($canvas)) $sql .= ' AND p.canvas = "' . $db->escape($canvas) . '"'; -$sql .= ' GROUP BY p.rowid, p.ref, p.label, p.price'; -$sql .= ', p.price_ttc, p.price_base_type,p.fk_product_type, p.tms'; -$sql .= ', p.duration, p.tobuy, p.seuil_stock_alerte'; -$sql .= ', p.desiredstock, s.fk_product'; -$sql .= ' HAVING p.desiredstock > SUM(COALESCE(s.reel, 0))'; -$sql .= ' AND p.desiredstock > 0'; -if ($salert == 'on') +$sql.= ' GROUP BY p.rowid, p.ref, p.label, p.price'; +$sql.= ', p.price_ttc, p.price_base_type,p.fk_product_type, p.tms'; +$sql.= ', p.duration, p.tobuy, p.seuil_stock_alerte'; +$sql.= ', p.desiredstock, s.fk_product'; +$sql.= ' HAVING p.desiredstock > SUM('.$db->ifsql("s.reel IS NULL", "s.reel", "0").')'; +$sql.= ' AND p.desiredstock > 0'; +if ($salert == 'on') // Option to see when stock is lower than alert { - $sql .= ' AND SUM(COALESCE(s.reel, 0)) < p.seuil_stock_alerte AND p.seuil_stock_alerte is not NULL'; + $sql .= ' AND SUM('.$db->ifsql("s.reel IS NULL", "s.reel", "0").') < p.seuil_stock_alerte AND p.seuil_stock_alerte is not NULL'; $alertchecked = 'checked="checked"'; } -$sql .= $db->order($sortfield,$sortorder); -$sql .= $db->plimit($limit + 1, $offset); +$sql.= $db->order($sortfield,$sortorder); +$sql.= $db->plimit($limit + 1, $offset); + +dol_syslog('Execute request sql='.$sql); $resql = $db->query($sql); if (empty($resql)) { @@ -397,10 +399,10 @@ print ''; print ''. ' '. ''. -''. +''. ''. ''. -''. +''. ''; if (!empty($conf->service->enabled) && $type == 1) { @@ -491,11 +493,12 @@ while ($i < min($num, $limit)) } else { $picto = img_picto('', './img/no', '', 1); } - print ''; + + print ''; // Select field //print ''; - print ''; + print ''; print ''. $prod->getNomUrl(1, '', 16). @@ -529,7 +532,7 @@ while ($i < min($num, $limit)) // To order //print ''; - print ''; + print ''; // Supplier print ''. $form->select_product_fourn_price($prod->id, 'fourn'.$i, 1).'';