From 7c0d3d4d142b9aedcf7e177a08041622257ee6fb Mon Sep 17 00:00:00 2001 From: altairis-noe Date: Thu, 8 Apr 2021 18:03:46 +0200 Subject: [PATCH 1/9] create custom masks in product cards --- htdocs/product/card.php | 23 +++++++++++++++++++++-- htdocs/product/class/product.class.php | 13 ++++++++++++- 2 files changed, 33 insertions(+), 3 deletions(-) diff --git a/htdocs/product/card.php b/htdocs/product/card.php index 094ce8670a9..26ee8c5c186 100644 --- a/htdocs/product/card.php +++ b/htdocs/product/card.php @@ -307,6 +307,8 @@ if (empty($reshook)) { $object->status = GETPOST('statut'); $object->status_buy = GETPOST('statut_buy'); $object->status_batch = GETPOST('status_batch'); + $object->batch_mask = GETPOST('batch_mask', 'alpha'); + $object->barcode_type = GETPOST('fk_barcode_type'); $object->barcode = GETPOST('barcode'); @@ -475,6 +477,7 @@ if (empty($reshook)) { $object->status = GETPOST('statut', 'int'); $object->status_buy = GETPOST('statut_buy', 'int'); $object->status_batch = GETPOST('status_batch', 'aZ09'); + $object->batch_mask = GETPOST('batch_mask', 'alpha'); $object->fk_default_warehouse = GETPOST('fk_default_warehouse'); // removed from update view so GETPOST always empty /* @@ -1545,10 +1548,26 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) { // Batch number managment if ($conf->productbatch->enabled) { if ($object->isProduct() || !empty($conf->global->STOCK_SUPPORTS_SERVICES)) { - print ''.$langs->trans("ManageLotSerial").''; + print ''.$langs->trans("ManageLotSerial").''; $statutarray = array('0' => $langs->trans("ProductStatusNotOnBatch"), '1' => $langs->trans("ProductStatusOnBatch"), '2' => $langs->trans("ProductStatusOnSerial")); print $form->selectarray('status_batch', $statutarray, $object->status_batch); - print ''; + print ''; + if ($object->status_batch !== '0' + && (($object->status_batch == '1' && $conf->global->PRODUCTBATCH_LOT_USE_PRODUCT_MASKS && $conf->global->PRODUCTBATCH_LOT_ADDON == 'mod_lot_advanced') + || ($object->status_batch == '2' && $conf->global->PRODUCTBATCH_SN_ADDON == 'mod_sn_advanced' && $conf->global->PRODUCTBATCH_SN_USE_PRODUCT_MASKS))) { + $inherited_mask = $object->status_batch == '1' ? $conf->global->LOT_ADVANCED_MASK : $conf->global->SN_ADVANCED_MASK; + print ''.$langs->trans("ManageLotMask").''; + $mask = !is_empty($object->batch_mask) ? $object->batch_mask : $inherited_mask; + $tooltip = $langs->trans("GenericMaskCodes", $langs->transnoentities("Batch"), $langs->transnoentities("Batch")); + $tooltip .= $langs->trans("GenericMaskCodes2"); + $tooltip .= $langs->trans("GenericMaskCodes3"); + $tooltip .= $langs->trans("GenericMaskCodes4a", $langs->transnoentities("Batch"), $langs->transnoentities("Batch")); + $tooltip .= $langs->trans("GenericMaskCodes5"); + print ''; + print $form->textwithpicto('', $tooltip, 1, 1); + print ''; + } + print ''; } } diff --git a/htdocs/product/class/product.class.php b/htdocs/product/class/product.class.php index 16bbc508ac9..bcfaee9c0dc 100644 --- a/htdocs/product/class/product.class.php +++ b/htdocs/product/class/product.class.php @@ -264,6 +264,13 @@ class Product extends CommonObject */ public $status_batch = 0; + /** + * If allowed, we can edit batch or serial number mask for each product + * + * @var string + */ + public $batch_mask = ''; + /** * Customs code * @@ -698,6 +705,7 @@ class Product extends CommonObject $sql .= ", '".$this->db->escape($this->canvas)."'"; $sql .= ", ".((!isset($this->finished) || $this->finished < 0 || $this->finished == '') ? 'null' : (int) $this->finished); $sql .= ", ".((empty($this->status_batch) || $this->status_batch < 0) ? '0' : $this->status_batch); + $sql .= ", '".$this->db->escape($this->batch_mask)."'"; $sql .= ", ".(!$this->fk_unit ? 'NULL' : $this->fk_unit); $sql .= ")"; @@ -1059,6 +1067,8 @@ class Product extends CommonObject $sql .= ", tosell = ".(int) $this->status; $sql .= ", tobuy = ".(int) $this->status_buy; $sql .= ", tobatch = ".((empty($this->status_batch) || $this->status_batch < 0) ? '0' : (int) $this->status_batch); + $sql .= ", batch_mask = '".$this->db->escape($this->batch_mask)."'"; + $sql .= ", finished = ".((!isset($this->finished) || $this->finished < 0 || $this->finished == '') ? "null" : (int) $this->finished); $sql .= ", net_measure = ".($this->net_measure != '' ? "'".$this->db->escape($this->net_measure)."'" : 'null'); $sql .= ", net_measure_units = ".($this->net_measure_units != '' ? "'".$this->db->escape($this->net_measure_units)."'" : 'null'); @@ -2170,7 +2180,7 @@ class Product extends CommonObject } else { $sql .= " pa.accountancy_code_buy, pa.accountancy_code_buy_intra, pa.accountancy_code_buy_export, pa.accountancy_code_sell, pa.accountancy_code_sell_intra, pa.accountancy_code_sell_export,"; } - $sql .= " p.stock,p.pmp, p.datec, p.tms, p.import_key, p.entity, p.desiredstock, p.tobatch, p.fk_unit,"; + $sql .= " p.stock,p.pmp, p.datec, p.tms, p.import_key, p.entity, p.desiredstock, p.tobatch, p.batch_mask, p.fk_unit,"; $sql .= " p.fk_price_expression, p.price_autogen, p.model_pdf"; $sql .= " FROM ".MAIN_DB_PREFIX."product as p"; if (!empty($conf->global->MAIN_PRODUCT_PERENTITY_SHARED)) { @@ -2210,6 +2220,7 @@ class Product extends CommonObject $this->status = $obj->tosell; $this->status_buy = $obj->tobuy; $this->status_batch = $obj->tobatch; + $this->batch_mask = $obj->batch_mask; $this->customcode = $obj->customcode; $this->country_id = $obj->fk_country; From 000342c2d8fb6677260a2761515419fe9eca69e6 Mon Sep 17 00:00:00 2001 From: altairis-noe Date: Fri, 9 Apr 2021 13:40:37 +0200 Subject: [PATCH 2/9] custom masks : create, edit and display --- htdocs/langs/en_US/productbatch.lang | 3 ++- htdocs/langs/fr_FR/productbatch.lang | 3 ++- htdocs/product/card.php | 29 ++++++++++++++++++++++++-- htdocs/product/class/product.class.php | 1 + 4 files changed, 32 insertions(+), 4 deletions(-) diff --git a/htdocs/langs/en_US/productbatch.lang b/htdocs/langs/en_US/productbatch.lang index a63442d4b74..26dc9650308 100644 --- a/htdocs/langs/en_US/productbatch.lang +++ b/htdocs/langs/en_US/productbatch.lang @@ -27,4 +27,5 @@ StockDetailPerBatch=Stock detail per lot SerialNumberAlreadyInUse=Serial number %s is already used for product %s TooManyQtyForSerialNumber=You can only have one product %s for serial number %s BatchLotNumberingModules=Options for automatic generation of batch products managed by lots -BatchSerialNumberingModules=Options for automatic generation of batch products managed by serial numbers \ No newline at end of file +BatchSerialNumberingModules=Options for automatic generation of batch products managed by serial numbers +ManageLotMask=Custom mask \ No newline at end of file diff --git a/htdocs/langs/fr_FR/productbatch.lang b/htdocs/langs/fr_FR/productbatch.lang index eed5a063318..81551a38dca 100644 --- a/htdocs/langs/fr_FR/productbatch.lang +++ b/htdocs/langs/fr_FR/productbatch.lang @@ -27,4 +27,5 @@ StockDetailPerBatch=Stock détaillé par lot SerialNumberAlreadyInUse=Le numéro de série %s est déjà utilisé pour le produit %s TooManyQtyForSerialNumber=Vous ne pouvez avoir qu'un produit %s avec le numéro de série %s BatchLotNumberingModules=Modèle de génération et contrôle des numéros de lot -BatchSerialNumberingModules=Modèle de génération et contrôle des numéros de série \ No newline at end of file +BatchSerialNumberingModules=Modèle de génération et contrôle des numéros de série +ManageLotMask=Masque personnalisé \ No newline at end of file diff --git a/htdocs/product/card.php b/htdocs/product/card.php index 26ee8c5c186..7754a84926b 100644 --- a/htdocs/product/card.php +++ b/htdocs/product/card.php @@ -1086,10 +1086,28 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) { // Batch number management if (!empty($conf->productbatch->enabled)) { - print ''.$langs->trans("ManageLotSerial").''; + print ''.$langs->trans("ManageLotSerial").''; $statutarray = array('0' => $langs->trans("ProductStatusNotOnBatch"), '1' => $langs->trans("ProductStatusOnBatch"), '2' => $langs->trans("ProductStatusOnSerial")); print $form->selectarray('status_batch', $statutarray, GETPOST('status_batch')); - print ''; + print ''; + // Product specific batch number management + $status_batch = GETPOST('status_batch'); + if ($status_batch !== '0' + && (($status_batch == '1' && $conf->global->PRODUCTBATCH_LOT_USE_PRODUCT_MASKS && $conf->global->PRODUCTBATCH_LOT_ADDON == 'mod_lot_advanced') + || ($status_batch == '2' && $conf->global->PRODUCTBATCH_SN_ADDON == 'mod_sn_advanced' && $conf->global->PRODUCTBATCH_SN_USE_PRODUCT_MASKS))) { + $inherited_mask = $object->status_batch == '1' ? $conf->global->LOT_ADVANCED_MASK : $conf->global->SN_ADVANCED_MASK; + print ''.$langs->trans("ManageLotMask").''; + $tooltip = $langs->trans("GenericMaskCodes", $langs->transnoentities("Batch"), $langs->transnoentities("Batch")); + $tooltip .= $langs->trans("GenericMaskCodes2"); + $tooltip .= $langs->trans("GenericMaskCodes3"); + $tooltip .= $langs->trans("GenericMaskCodes4a", $langs->transnoentities("Batch"), $langs->transnoentities("Batch")); + $tooltip .= $langs->trans("GenericMaskCodes5"); + print ''; + print $form->textwithpicto('', $tooltip, 1, 1); + print ''; + } + print ''; + } $showbarcode = empty($conf->barcode->enabled) ? 0 : 1; @@ -2055,6 +2073,13 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) { print ''.$langs->trans("ManageLotSerial").''; print $object->getLibStatut(0, 2); print ''; + if ((($object->status_batch == '1' && $conf->global->PRODUCTBATCH_LOT_USE_PRODUCT_MASKS && $conf->global->PRODUCTBATCH_LOT_ADDON == 'mod_lot_advanced') + || ($object->status_batch == '2' && $conf->global->PRODUCTBATCH_SN_ADDON == 'mod_sn_advanced' && $conf->global->PRODUCTBATCH_SN_USE_PRODUCT_MASKS))) { + print ''.$langs->trans("ManageLotMask").''; + print $object->batch_mask; + print ''; + + } } } diff --git a/htdocs/product/class/product.class.php b/htdocs/product/class/product.class.php index bcfaee9c0dc..4fc6f378d11 100644 --- a/htdocs/product/class/product.class.php +++ b/htdocs/product/class/product.class.php @@ -678,6 +678,7 @@ class Product extends CommonObject $sql .= ", canvas"; $sql .= ", finished"; $sql .= ", tobatch"; + $sql .= ", batch_mask"; $sql .= ", fk_unit"; $sql .= ") VALUES ("; $sql .= "'".$this->db->idate($now)."'"; From 0965f28bf74fc02948a4b9332a947cf0d0f2ebd6 Mon Sep 17 00:00:00 2001 From: altairis-noe Date: Mon, 12 Apr 2021 17:56:57 +0200 Subject: [PATCH 3/9] a pinch of jquery to display only what we need when we need it --- htdocs/product/card.php | 90 ++++++++++++++++++++++++++++++++--------- 1 file changed, 71 insertions(+), 19 deletions(-) diff --git a/htdocs/product/card.php b/htdocs/product/card.php index 7754a84926b..e6b3adb7439 100644 --- a/htdocs/product/card.php +++ b/htdocs/product/card.php @@ -307,8 +307,10 @@ if (empty($reshook)) { $object->status = GETPOST('statut'); $object->status_buy = GETPOST('statut_buy'); $object->status_batch = GETPOST('status_batch'); - $object->batch_mask = GETPOST('batch_mask', 'alpha'); - + if ($object->status_batch !== 0) { + $object->batch_mask = GETPOST('batch_mask'); + } + else $object->batch_mask = ''; $object->barcode_type = GETPOST('fk_barcode_type'); $object->barcode = GETPOST('barcode'); @@ -477,7 +479,10 @@ if (empty($reshook)) { $object->status = GETPOST('statut', 'int'); $object->status_buy = GETPOST('statut_buy', 'int'); $object->status_batch = GETPOST('status_batch', 'aZ09'); - $object->batch_mask = GETPOST('batch_mask', 'alpha'); + if ($object->status_batch !== 0) { + $object->batch_mask = GETPOST('batch_mask', 'alpha'); + } + else $object->batch_mask = ''; $object->fk_default_warehouse = GETPOST('fk_default_warehouse'); // removed from update view so GETPOST always empty /* @@ -1092,20 +1097,40 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) { print ''; // Product specific batch number management $status_batch = GETPOST('status_batch'); - if ($status_batch !== '0' - && (($status_batch == '1' && $conf->global->PRODUCTBATCH_LOT_USE_PRODUCT_MASKS && $conf->global->PRODUCTBATCH_LOT_ADDON == 'mod_lot_advanced') - || ($status_batch == '2' && $conf->global->PRODUCTBATCH_SN_ADDON == 'mod_sn_advanced' && $conf->global->PRODUCTBATCH_SN_USE_PRODUCT_MASKS))) { - $inherited_mask = $object->status_batch == '1' ? $conf->global->LOT_ADVANCED_MASK : $conf->global->SN_ADVANCED_MASK; - print ''.$langs->trans("ManageLotMask").''; + if ($status_batch !== '0') { $tooltip = $langs->trans("GenericMaskCodes", $langs->transnoentities("Batch"), $langs->transnoentities("Batch")); $tooltip .= $langs->trans("GenericMaskCodes2"); $tooltip .= $langs->trans("GenericMaskCodes3"); $tooltip .= $langs->trans("GenericMaskCodes4a", $langs->transnoentities("Batch"), $langs->transnoentities("Batch")); $tooltip .= $langs->trans("GenericMaskCodes5"); - print ''; - print $form->textwithpicto('', $tooltip, 1, 1); - print ''; + print ''.$langs->trans("ManageLotMask").''; + if (($conf->global->PRODUCTBATCH_LOT_USE_PRODUCT_MASKS && $conf->global->PRODUCTBATCH_LOT_ADDON == 'mod_lot_advanced') || ($conf->global->PRODUCTBATCH_SN_USE_PRODUCT_MASKS && $conf->global->PRODUCTBATCH_SN_ADDON == 'mod_sn_advanced')) { + $inherited_mask_lot = $conf->global->LOT_ADVANCED_MASK; + $inherited_mask_sn = $conf->global->SN_ADVANCED_MASK; + print ''; + print $form->textwithpicto('', $tooltip, 1, 1); + print ''; + } + print ''; } + print ''; } @@ -1570,20 +1595,47 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) { $statutarray = array('0' => $langs->trans("ProductStatusNotOnBatch"), '1' => $langs->trans("ProductStatusOnBatch"), '2' => $langs->trans("ProductStatusOnSerial")); print $form->selectarray('status_batch', $statutarray, $object->status_batch); print ''; - if ($object->status_batch !== '0' - && (($object->status_batch == '1' && $conf->global->PRODUCTBATCH_LOT_USE_PRODUCT_MASKS && $conf->global->PRODUCTBATCH_LOT_ADDON == 'mod_lot_advanced') - || ($object->status_batch == '2' && $conf->global->PRODUCTBATCH_SN_ADDON == 'mod_sn_advanced' && $conf->global->PRODUCTBATCH_SN_USE_PRODUCT_MASKS))) { - $inherited_mask = $object->status_batch == '1' ? $conf->global->LOT_ADVANCED_MASK : $conf->global->SN_ADVANCED_MASK; - print ''.$langs->trans("ManageLotMask").''; - $mask = !is_empty($object->batch_mask) ? $object->batch_mask : $inherited_mask; + if ($object->status_batch !== '0') { $tooltip = $langs->trans("GenericMaskCodes", $langs->transnoentities("Batch"), $langs->transnoentities("Batch")); $tooltip .= $langs->trans("GenericMaskCodes2"); $tooltip .= $langs->trans("GenericMaskCodes3"); $tooltip .= $langs->trans("GenericMaskCodes4a", $langs->transnoentities("Batch"), $langs->transnoentities("Batch")); $tooltip .= $langs->trans("GenericMaskCodes5"); - print ''; - print $form->textwithpicto('', $tooltip, 1, 1); + print ''.$langs->trans("ManageLotMask").''; + if ($object->status_batch == '1' && $conf->global->PRODUCTBATCH_LOT_USE_PRODUCT_MASKS && $conf->global->PRODUCTBATCH_LOT_ADDON == 'mod_lot_advanced') { + $mask = !is_empty($object->batch_mask) ? $object->batch_mask : $conf->global->LOT_ADVANCED_MASK; + } + if ($object->status_batch == '2' && $conf->global->PRODUCTBATCH_SN_USE_PRODUCT_MASKS && $conf->global->PRODUCTBATCH_SN_ADDON == 'mod_sn_advanced') { + $mask = !is_empty($object->batch_mask) ? $object->batch_mask : $conf->global->SN_ADVANCED_MASK; + } + $inherited_mask_lot = $conf->global->LOT_ADVANCED_MASK; + $inherited_mask_sn = $conf->global->SN_ADVANCED_MASK; + print ''; + print $form->textwithpicto('', $tooltip, 1, 1); print ''; + + print ''; } print ''; } From 0d136d68068b1f2b4028c895ad50c73b07634aff Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 9 Apr 2021 12:08:56 +0200 Subject: [PATCH 4/9] Enhance barcode scanner tool --- htdocs/langs/en_US/productbatch.lang | 3 +- htdocs/product/inventory/inventory.php | 40 ++++++++++++-------------- 2 files changed, 21 insertions(+), 22 deletions(-) diff --git a/htdocs/langs/en_US/productbatch.lang b/htdocs/langs/en_US/productbatch.lang index 26dc9650308..879368e624b 100644 --- a/htdocs/langs/en_US/productbatch.lang +++ b/htdocs/langs/en_US/productbatch.lang @@ -28,4 +28,5 @@ SerialNumberAlreadyInUse=Serial number %s is already used for product %s TooManyQtyForSerialNumber=You can only have one product %s for serial number %s BatchLotNumberingModules=Options for automatic generation of batch products managed by lots BatchSerialNumberingModules=Options for automatic generation of batch products managed by serial numbers -ManageLotMask=Custom mask \ No newline at end of file +QtyToAddAfterBarcodeScan=Qty to add for each barcode/lot/serial scanned +ManageLotMask=Custom mask diff --git a/htdocs/product/inventory/inventory.php b/htdocs/product/inventory/inventory.php index 8d3378fb779..8efc5b75bb6 100644 --- a/htdocs/product/inventory/inventory.php +++ b/htdocs/product/inventory/inventory.php @@ -265,22 +265,9 @@ if (empty($reshook)) { $form = new Form($db); $formproduct = new FormProduct($db); -llxHeader('', $langs->trans('Inventory'), ''); +$help_url = ''; -// Example : Adding jquery code -print ''; +llxHeader('', $langs->trans('Inventory'), $help_url); // Part to show record @@ -335,7 +322,7 @@ if ($object->id > 0) { // Object card // ------------------------------------------------------------ - $linkback = ''.$langs->trans("BackToList").''; + $linkback = ''.$langs->trans("BackToList").''; $morehtmlref = '
'; /* @@ -472,26 +459,37 @@ if ($object->id > 0) { } + // Popup for mass barcode scanning if ($action == 'updatebyscaning') { + print '
'; + print ''."\n"; print '
'; print '
Barcode scanner tool...

'; - print 'Scan a product barcode
'; - print '     Qty
'; + print ' Autodetect if we scan a product barcode or a lot/serial barcode
'; + print ' Scan a product barcode
'; + print ' Scan a product lot or serial number
'; - print '
'.$langs->trans("or").'
'; + print $langs->trans("QtyToAddAfterBarcodeScan").'
'; + print ''; + + /*print '
'.$langs->trans("or").'
'; print '
'; - print 'Scan a product lot or serial number
'; print '     Qty
'; - + */ print '
'; + print '
'; + print '
'; + print ''.$langs->trans("FeatureNotYetAvailable").''; // TODO Add javascript so each scan will add qty into the inventory page + an ajax save. + print '
'; print '
'; + print '
'; } From f69ccbbab85af033f24f4c297c49b5f116150e71 Mon Sep 17 00:00:00 2001 From: altairis-noe Date: Tue, 13 Apr 2021 10:31:24 +0200 Subject: [PATCH 5/9] remove empty line --- htdocs/langs/en_US/productbatch.lang | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/langs/en_US/productbatch.lang b/htdocs/langs/en_US/productbatch.lang index 879368e624b..b51fed15820 100644 --- a/htdocs/langs/en_US/productbatch.lang +++ b/htdocs/langs/en_US/productbatch.lang @@ -29,4 +29,4 @@ TooManyQtyForSerialNumber=You can only have one product %s for serial number %s BatchLotNumberingModules=Options for automatic generation of batch products managed by lots BatchSerialNumberingModules=Options for automatic generation of batch products managed by serial numbers QtyToAddAfterBarcodeScan=Qty to add for each barcode/lot/serial scanned -ManageLotMask=Custom mask +ManageLotMask=Custom mask \ No newline at end of file From a95911e096979641785314229ca0e0c2e09ed91f Mon Sep 17 00:00:00 2001 From: altairis-noe Date: Tue, 13 Apr 2021 11:21:41 +0200 Subject: [PATCH 6/9] stickler corrections --- htdocs/product/card.php | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/htdocs/product/card.php b/htdocs/product/card.php index e6b3adb7439..79857364158 100644 --- a/htdocs/product/card.php +++ b/htdocs/product/card.php @@ -309,8 +309,7 @@ if (empty($reshook)) { $object->status_batch = GETPOST('status_batch'); if ($object->status_batch !== 0) { $object->batch_mask = GETPOST('batch_mask'); - } - else $object->batch_mask = ''; + } else $object->batch_mask = ''; $object->barcode_type = GETPOST('fk_barcode_type'); $object->barcode = GETPOST('barcode'); @@ -481,8 +480,7 @@ if (empty($reshook)) { $object->status_batch = GETPOST('status_batch', 'aZ09'); if ($object->status_batch !== 0) { $object->batch_mask = GETPOST('batch_mask', 'alpha'); - } - else $object->batch_mask = ''; + } else $object->batch_mask = ''; $object->fk_default_warehouse = GETPOST('fk_default_warehouse'); // removed from update view so GETPOST always empty /* @@ -1132,7 +1130,6 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) { } print ''; - } $showbarcode = empty($conf->barcode->enabled) ? 0 : 1; @@ -1609,11 +1606,11 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) { $mask = !is_empty($object->batch_mask) ? $object->batch_mask : $conf->global->SN_ADVANCED_MASK; } $inherited_mask_lot = $conf->global->LOT_ADVANCED_MASK; - $inherited_mask_sn = $conf->global->SN_ADVANCED_MASK; + $inherited_mask_sn = $conf->global->SN_ADVANCED_MASK; print ''; print $form->textwithpicto('', $tooltip, 1, 1); print ''; - + print ''; + '; + } else { + print ''; + } } print ''; @@ -1633,6 +1631,8 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) { }) }) '; + } else { + print ''; } print ''; } From 2e297b575350483a00457af2ed36d5c532ec49aa Mon Sep 17 00:00:00 2001 From: altairis-noe Date: Tue, 13 Apr 2021 17:02:58 +0200 Subject: [PATCH 9/9] one more print --- htdocs/product/card.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/htdocs/product/card.php b/htdocs/product/card.php index 93bb3c65d0e..64e5b844cb0 100644 --- a/htdocs/product/card.php +++ b/htdocs/product/card.php @@ -1123,10 +1123,11 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) { }) '; } else { - print ''; + print ''; } + } else { + print ''; } - print ''; }