From a61fa2b049c59a6c7f45f52c367375136bfd1e9a Mon Sep 17 00:00:00 2001 From: Christophe Battarel Date: Thu, 25 Feb 2021 15:15:00 +0100 Subject: [PATCH 1/4] differentiate serial numbers from lot management --- htdocs/langs/en_US/productbatch.lang | 6 ++++-- htdocs/langs/fr_FR/productbatch.lang | 6 ++++-- htdocs/product/card.php | 20 +++++++++++++++++--- htdocs/product/class/product.class.php | 14 +++++++++----- htdocs/product/list.php | 26 ++++++++++++++++++++++++-- 5 files changed, 58 insertions(+), 14 deletions(-) diff --git a/htdocs/langs/en_US/productbatch.lang b/htdocs/langs/en_US/productbatch.lang index 54270c4a23b..b4f3408ecf0 100644 --- a/htdocs/langs/en_US/productbatch.lang +++ b/htdocs/langs/en_US/productbatch.lang @@ -1,8 +1,10 @@ # ProductBATCH language file - en_US - ProductBATCH ManageLotSerial=Use lot/serial number -ProductStatusOnBatch=Yes (lot/serial required) +ProductStatusOnBatch=Lot (required) +ProductStatusOnSerial=Serial number (required) ProductStatusNotOnBatch=No (lot/serial not used) -ProductStatusOnBatchShort=Yes +ProductStatusOnBatchShort=Lot +ProductStatusOnSerialShort=Serial ProductStatusNotOnBatchShort=No Batch=Lot/Serial atleast1batchfield=Eat-by date or Sell-by date or Lot/Serial number diff --git a/htdocs/langs/fr_FR/productbatch.lang b/htdocs/langs/fr_FR/productbatch.lang index 162af66827c..b4b5a56c5cd 100644 --- a/htdocs/langs/fr_FR/productbatch.lang +++ b/htdocs/langs/fr_FR/productbatch.lang @@ -1,8 +1,10 @@ # ProductBATCH language file - en_US - ProductBATCH ManageLotSerial=Utiliser les numéros de lots/série -ProductStatusOnBatch=Oui (Lot/Série requis) +ProductStatusOnBatch=Lot (requis) +ProductStatusOnSerial=Numéro de série (requis) ProductStatusNotOnBatch=Non (Lot/Série non utilisé) -ProductStatusOnBatchShort=Oui +ProductStatusOnBatchShort=Lot +ProductStatusOnSerialShort=N°série ProductStatusNotOnBatchShort=Non Batch=Lot/Série atleast1batchfield=Date limite utilisation optimale, de consommation ou numéro de lot/série diff --git a/htdocs/product/card.php b/htdocs/product/card.php index 55c29aa1381..7532ce68661 100644 --- a/htdocs/product/card.php +++ b/htdocs/product/card.php @@ -1029,7 +1029,14 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) if (!empty($conf->productbatch->enabled)) { print ''.$langs->trans("ManageLotSerial").''; - $statutarray = array('0' => $langs->trans("ProductStatusNotOnBatch"), '1' => $langs->trans("ProductStatusOnBatch")); + if ( empty($conf->global ->MAIN_ADVANCE_NUMLOT) ) + { + $statutarray = array('0' => $langs->trans("ProductStatusNotOnBatch"), '1' => $langs->trans("ProductStatusOnBatch")); + } + else + { + $statutarray = array('0' => $langs->trans("ProductStatusNotOnBatch"), '1' => $langs->trans("ProductStatusOnBatch"), '2' => $langs->trans("ProductStatusOnSerial")); + } print $form->selectarray('status_batch', $statutarray, GETPOST('status_batch')); print ''; } @@ -1488,7 +1495,14 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) if ($object->isProduct() || !empty($conf->global->STOCK_SUPPORTS_SERVICES)) { print ''.$langs->trans("ManageLotSerial").''; - $statutarray = array('0' => $langs->trans("ProductStatusNotOnBatch"), '1' => $langs->trans("ProductStatusOnBatch")); + if ( empty($conf->global ->MAIN_ADVANCE_NUMLOT) ) + { + $statutarray = array('0' => $langs->trans("ProductStatusNotOnBatch"), '1' => $langs->trans("ProductStatusOnBatch")); + } + else + { + $statutarray = array('0' => $langs->trans("ProductStatusNotOnBatch"), '1' => $langs->trans("ProductStatusOnBatch"), '2' => $langs->trans("ProductStatusOnSerial")); + } print $form->selectarray('status_batch', $statutarray, $object->status_batch); print ''; } @@ -1996,7 +2010,7 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) if ($object->isProduct() || !empty($conf->global->STOCK_SUPPORTS_SERVICES)) { print ''.$langs->trans("ManageLotSerial").''; - if (!empty($conf->use_javascript_ajax) && $usercancreate && !empty($conf->global->MAIN_DIRECT_STATUS_UPDATE)) { + if (!empty($conf->use_javascript_ajax) && $usercancreate && !empty($conf->global->MAIN_DIRECT_STATUS_UPDATE) && empty($conf->global->MAIN_ADVANCE_NUMLOT)) { print ajax_object_onoff($object, 'status_batch', 'tobatch', 'ProductStatusOnBatch', 'ProductStatusNotOnBatch'); } else { print $object->getLibStatut(0, 2); diff --git a/htdocs/product/class/product.class.php b/htdocs/product/class/product.class.php index 9a71faa5665..e46128750da 100644 --- a/htdocs/product/class/product.class.php +++ b/htdocs/product/class/product.class.php @@ -4688,10 +4688,10 @@ class Product extends CommonObject switch ($mode) { case 0: - $label = ($status == 0 ? $langs->trans('ProductStatusNotOnBatch') : $langs->trans('ProductStatusOnBatch')); + $label = ($status == 0 ? $langs->trans('ProductStatusNotOnBatch') : ($status == 1 || empty($conf->global->MAIN_ADVANCE_NUMLOT) ? $langs->trans('ProductStatusOnBatch') : $langs->trans('ProductStatusOnSerial'))); return dolGetStatus($label); case 1: - $label = ($status == 0 ? $langs->trans('ProductStatusNotOnBatchShort') : $langs->trans('ProductStatusOnBatchShort')); + $label = ($status == 0 ? $langs->trans('ProductStatusNotOnBatchShort') : ($status == 1 || empty($conf->global->MAIN_ADVANCE_NUMLOT) ? $langs->trans('ProductStatusOnBatchShort') : $langs->trans('ProductStatusOnSerialShort'))); return dolGetStatus($label); case 2: return $this->LibStatut($status, 3, 2).' '.$this->LibStatut($status, 1, 2); @@ -4729,11 +4729,15 @@ class Product extends CommonObject $labelStatus = $langs->trans('ProductStatusOnBuyShort'); $labelStatusShort = $langs->trans('ProductStatusOnBuy'); } elseif ($type == 2) { - $labelStatus = $langs->trans('ProductStatusOnBatch'); - $labelStatusShort = $langs->trans('ProductStatusOnBatchShort'); + $labelStatus = ($status == 1 || empty($conf->global->MAIN_ADVANCE_NUMLOT) ? $langs->trans('ProductStatusOnBatch') : $langs->trans('ProductStatusOnSerial')); + $labelStatusShort = ($status == 1 || empty($conf->global->MAIN_ADVANCE_NUMLOT) ? $langs->trans('ProductStatusOnBatchShort') : $langs->trans('ProductStatusOnSerialShort')); } } - + elseif ( ! empty($conf->global->MAIN_ADVANCE_NUMLOT) && $type == 2 && $status == 2) + { + $labelStatus = $langs->trans('ProductStatusOnSerial'); + $labelStatusShort = $langs->trans('ProductStatusOnSerialShort'); + } if ($mode > 6) { return dolGetStatus($langs->trans('Unknown'), '', '', 'status0', 0); diff --git a/htdocs/product/list.php b/htdocs/product/list.php index f7999860185..00590ed3c95 100644 --- a/htdocs/product/list.php +++ b/htdocs/product/list.php @@ -833,7 +833,22 @@ if ($resql) // Stock if (!empty($arrayfields['stock_virtual']['checked'])) print ' '; // To batch - if (!empty($arrayfields['p.tobatch']['checked'])) print ''.$form->selectyesno('search_tobatch', $search_tobatch, 1, false, 1).''; + if (!empty($arrayfields['p.tobatch']['checked'])) + { + print ''; + + if ( empty($conf->global ->MAIN_ADVANCE_NUMLOT) ) + { + print $form->selectyesno('search_tobatch', $search_tobatch, 1, false, 1); + } + else + { + $statutarray = array('-1' => '', '0' => $langs->trans("ProductStatusNotOnBatchShort"), '1' => $langs->trans("ProductStatusOnBatchShort"), '2' => $langs->trans("ProductStatusOnSerialShort")); + print $form->selectarray('search_tobatch', $statutarray, $search_tobatch); + } + + ''; + } // Country if (!empty($arrayfields['p.fk_country']['checked'])) print ''.$form->select_country($search_country, 'search_country', '', 0).''; // State @@ -1463,7 +1478,14 @@ if ($resql) if (!empty($arrayfields['p.tobatch']['checked'])) { print ''; - print yn($obj->tobatch); + if ( empty($conf->global->MAIN_ADVANCE_NUMLOT) ) + { + print yn($obj->tobatch); + } + else + { + print $product_static->getLibStatut(1, 2); + } print ''; if (!$i) $totalarray['nbfield']++; } From a3a8e7c4e4e6841b00fecfdc250cf9c6972c568b Mon Sep 17 00:00:00 2001 From: Christophe Battarel Date: Thu, 25 Feb 2021 15:35:45 +0100 Subject: [PATCH 2/4] change hasBatch function --- htdocs/product/class/product.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/product/class/product.class.php b/htdocs/product/class/product.class.php index e46128750da..436613f2777 100644 --- a/htdocs/product/class/product.class.php +++ b/htdocs/product/class/product.class.php @@ -5460,7 +5460,7 @@ class Product extends CommonObject */ public function hasbatch() { - return ($this->status_batch == 1 ? true : false); + return ($this->status_batch > 0 ? true : false); } From 75298b4ac6864441e9ef968820d417de1b13538b Mon Sep 17 00:00:00 2001 From: Christophe Battarel Date: Thu, 25 Feb 2021 16:00:42 +0100 Subject: [PATCH 3/4] fix for stickler --- htdocs/product/card.php | 6 ++---- htdocs/product/list.php | 6 ++---- 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/htdocs/product/card.php b/htdocs/product/card.php index 7532ce68661..7c951ad1596 100644 --- a/htdocs/product/card.php +++ b/htdocs/product/card.php @@ -1033,8 +1033,7 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) { $statutarray = array('0' => $langs->trans("ProductStatusNotOnBatch"), '1' => $langs->trans("ProductStatusOnBatch")); } - else - { + else { $statutarray = array('0' => $langs->trans("ProductStatusNotOnBatch"), '1' => $langs->trans("ProductStatusOnBatch"), '2' => $langs->trans("ProductStatusOnSerial")); } print $form->selectarray('status_batch', $statutarray, GETPOST('status_batch')); @@ -1499,8 +1498,7 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) { $statutarray = array('0' => $langs->trans("ProductStatusNotOnBatch"), '1' => $langs->trans("ProductStatusOnBatch")); } - else - { + else { $statutarray = array('0' => $langs->trans("ProductStatusNotOnBatch"), '1' => $langs->trans("ProductStatusOnBatch"), '2' => $langs->trans("ProductStatusOnSerial")); } print $form->selectarray('status_batch', $statutarray, $object->status_batch); diff --git a/htdocs/product/list.php b/htdocs/product/list.php index 00590ed3c95..19c6ca1de00 100644 --- a/htdocs/product/list.php +++ b/htdocs/product/list.php @@ -840,8 +840,7 @@ if ($resql) if ( empty($conf->global ->MAIN_ADVANCE_NUMLOT) ) { print $form->selectyesno('search_tobatch', $search_tobatch, 1, false, 1); - } - else + } else { $statutarray = array('-1' => '', '0' => $langs->trans("ProductStatusNotOnBatchShort"), '1' => $langs->trans("ProductStatusOnBatchShort"), '2' => $langs->trans("ProductStatusOnSerialShort")); print $form->selectarray('search_tobatch', $statutarray, $search_tobatch); @@ -1482,8 +1481,7 @@ if ($resql) { print yn($obj->tobatch); } - else - { + else { print $product_static->getLibStatut(1, 2); } print ''; From 4aaf9e133aeab56df2eb812205634b16e86063c9 Mon Sep 17 00:00:00 2001 From: Christophe Battarel Date: Fri, 26 Feb 2021 11:51:23 +0100 Subject: [PATCH 4/4] change translation --- htdocs/langs/en_US/productbatch.lang | 2 +- htdocs/langs/fr_FR/productbatch.lang | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/langs/en_US/productbatch.lang b/htdocs/langs/en_US/productbatch.lang index b4f3408ecf0..a05a6190fc4 100644 --- a/htdocs/langs/en_US/productbatch.lang +++ b/htdocs/langs/en_US/productbatch.lang @@ -1,7 +1,7 @@ # ProductBATCH language file - en_US - ProductBATCH ManageLotSerial=Use lot/serial number ProductStatusOnBatch=Lot (required) -ProductStatusOnSerial=Serial number (required) +ProductStatusOnSerial=Serial number (must be unique for each equipment) ProductStatusNotOnBatch=No (lot/serial not used) ProductStatusOnBatchShort=Lot ProductStatusOnSerialShort=Serial diff --git a/htdocs/langs/fr_FR/productbatch.lang b/htdocs/langs/fr_FR/productbatch.lang index b4b5a56c5cd..76cba909e2c 100644 --- a/htdocs/langs/fr_FR/productbatch.lang +++ b/htdocs/langs/fr_FR/productbatch.lang @@ -1,7 +1,7 @@ # ProductBATCH language file - en_US - ProductBATCH ManageLotSerial=Utiliser les numéros de lots/série ProductStatusOnBatch=Lot (requis) -ProductStatusOnSerial=Numéro de série (requis) +ProductStatusOnSerial=Numéro de série (doit être unique pour chaque équipement) ProductStatusNotOnBatch=Non (Lot/Série non utilisé) ProductStatusOnBatchShort=Lot ProductStatusOnSerialShort=N°série