From 900c287de452712035034c90e39fe14f40701cc8 Mon Sep 17 00:00:00 2001 From: Gauthier Date: Tue, 21 Jul 2015 12:29:09 +0200 Subject: [PATCH 1/2] NEW : conf to use next product/service ref when we clone a product/service Conflicts: htdocs/langs/en_US/admin.lang htdocs/langs/fr_FR/admin.lang htdocs/product/admin/product.php --- htdocs/langs/en_US/admin.lang | 1 + htdocs/langs/fr_FR/admin.lang | 1 + htdocs/product/admin/product.php | 20 ++++++++++++++++++++ htdocs/product/card.php | 16 +++++++++++++++- 4 files changed, 37 insertions(+), 1 deletion(-) diff --git a/htdocs/langs/en_US/admin.lang b/htdocs/langs/en_US/admin.lang index 59b495d8a12..558d80be14a 100755 --- a/htdocs/langs/en_US/admin.lang +++ b/htdocs/langs/en_US/admin.lang @@ -1392,6 +1392,7 @@ ModifyProductDescAbility=Personalization of product descriptions in forms ViewProductDescInFormAbility=Visualization of product descriptions in the forms (otherwise as popup tooltip) MergePropalProductCard=Activate in product/service Attached Files tab an option to merge product PDF document to proposal PDF azur if product/service is in the proposal ViewProductDescInThirdpartyLanguageAbility=Visualization of products descriptions in the thirdparty language +UseMaskOnClone=Use product next ref when we clone a product%s (available if mask configured) UseSearchToSelectProductTooltip=Also if you have a large number of product (> 100 000), you can increase speed by setting constant PRODUCT_DONOTSEARCH_ANYWHERE to 1 in Setup->Other. Search will then be limited to start of string. UseSearchToSelectProduct=Use a search form to choose a product (rather than a drop-down list). UseEcoTaxeAbility=Support Eco-Taxe (WEEE) diff --git a/htdocs/langs/fr_FR/admin.lang b/htdocs/langs/fr_FR/admin.lang index 51379c4caf2..ec8133df8bd 100644 --- a/htdocs/langs/fr_FR/admin.lang +++ b/htdocs/langs/fr_FR/admin.lang @@ -1392,6 +1392,7 @@ ModifyProductDescAbility=Personnalisation des descriptions produits dans les for ViewProductDescInFormAbility=Visualisation des descriptions produits dans les formulaires (sinon en tant que bulle d'aide) MergePropalProductCard=Ajoute dans l'onglet Fichiers joints des produits/services, une option pour fusionner le document PDF du produit au PDF des propositions Azur si le produit/services est inclut dans la proposition. ViewProductDescInThirdpartyLanguageAbility=Visualisation des descriptions produits dans la langue du tiers +UseMaskOnClone=Utiliser la prochaine référence lors du clonage d'un produit%s (disponible si le masque est configuré ci-dessus) UseSearchToSelectProductTooltip=Si vous avez un nombre important de produits (>100 000), vous pourrez améliorer les performances en positionnant la constante PRODUCT_DONOTSEARCH_ANYWHERE à 1 dans Configuration->Divers. La recherche sera alors limité au début des chaines. UseSearchToSelectProduct=Utilisez un champ avec auto-complétion pour choisir les produits (plutôt qu'une liste déroulante). UseEcoTaxeAbility=Prise en charge des éco-taxes (DEEE) diff --git a/htdocs/product/admin/product.php b/htdocs/product/admin/product.php index c8105c8b61a..e19f3001883 100644 --- a/htdocs/product/admin/product.php +++ b/htdocs/product/admin/product.php @@ -169,6 +169,11 @@ else if ($action == 'usesearchtoselectproduct') $usesearch = GETPOST('activate_usesearchtoselectproduct','alpha'); $res = dolibarr_set_const($db, "PRODUIT_USE_SEARCH_TO_SELECT", $usesearch,'chaine',0,'',$conf->entity); } +else if ($action == 'useMaskOnClone') +{ + $usemask = GETPOST('activate_useMaskOnClone','alpha'); + $res = dolibarr_set_const($db, "PRODUIT_USE_MASK_ON_CLONE", $usemask,'chaine',0,'',$conf->entity); +} else if ($action == 'set') { $const = "PRODUCT_SPECIAL_".strtoupper(GETPOST('spe','alpha')); @@ -439,6 +444,21 @@ print ''; print ''; print ''; +// Pouvoir utiliser la numérotation configurée dans le masque produit lors du clonage d'un produit +$var=!$var; +print '
'; +print ''; +print ''; +print ''; +print ''.$langs->trans("UseMaskOnClone", $conf->service->enabled ? '/service' : '').''; +print ''; +print $form->selectyesno("activate_useMaskOnClone",$conf->global->PRODUIT_USE_MASK_ON_CLONE,1); +print ''; +print ''; +print ''; +print ''; +print '
'; + // Activate propal merge produt card /* disabled. PRODUIT_PDF_MERGE_PROPAL can be added manually. Still did not understand how this feature works. $var=!$var; diff --git a/htdocs/product/card.php b/htdocs/product/card.php index 704a0db9442..36d79dc6d39 100644 --- a/htdocs/product/card.php +++ b/htdocs/product/card.php @@ -1601,11 +1601,25 @@ else } } +// Load object modCodeProduct +$module=(! empty($conf->global->PRODUCT_CODEPRODUCT_ADDON)?$conf->global->PRODUCT_CODEPRODUCT_ADDON:'mod_codeproduct_leopard'); +if (substr($module, 0, 16) == 'mod_codeproduct_' && substr($module, -3) == 'php') +{ + $module = substr($module, 0, dol_strlen($module)-4); +} +$result=dol_include_once('/core/modules/product/'.$module.'.php'); +if ($result > 0) +{ + $modCodeProduct = new $module(); +} + +$tmpcode=''; +if (! empty($modCodeProduct->code_auto) && $conf->global->PRODUIT_USE_MASK_ON_CLONE) $tmpcode=$modCodeProduct->getNextValue($object,$object->type); // Define confirmation messages $formquestionclone=array( 'text' => $langs->trans("ConfirmClone"), - array('type' => 'text', 'name' => 'clone_ref','label' => $langs->trans("NewRefForClone"), 'value' => $langs->trans("CopyOf").' '.$object->ref, 'size'=>24), + array('type' => 'text', 'name' => 'clone_ref','label' => $langs->trans("NewRefForClone"), 'value' => empty($tmpcode) ? $langs->trans("CopyOf").' '.$object->ref : $tmpcode, 'size'=>24), array('type' => 'checkbox', 'name' => 'clone_content','label' => $langs->trans("CloneContentProduct"), 'value' => 1), array('type' => 'checkbox', 'name' => 'clone_prices', 'label' => $langs->trans("ClonePricesProduct").' ('.$langs->trans("FeatureNotYetAvailable").')', 'value' => 0, 'disabled' => true), array('type' => 'checkbox', 'name' => 'clone_composition', 'label' => $langs->trans('CloneCompositionProduct'), 'value' => 1) From dd2f6997309893659563dca165fcce701cd9f8d0 Mon Sep 17 00:00:00 2001 From: Gauthier Date: Thu, 13 Aug 2015 09:28:25 +0200 Subject: [PATCH 2/2] NEW : next ref on clone doesn't need conf, it's used if mask exists --- htdocs/product/admin/product.php | 20 -------------------- htdocs/product/card.php | 2 +- 2 files changed, 1 insertion(+), 21 deletions(-) diff --git a/htdocs/product/admin/product.php b/htdocs/product/admin/product.php index e19f3001883..c8105c8b61a 100644 --- a/htdocs/product/admin/product.php +++ b/htdocs/product/admin/product.php @@ -169,11 +169,6 @@ else if ($action == 'usesearchtoselectproduct') $usesearch = GETPOST('activate_usesearchtoselectproduct','alpha'); $res = dolibarr_set_const($db, "PRODUIT_USE_SEARCH_TO_SELECT", $usesearch,'chaine',0,'',$conf->entity); } -else if ($action == 'useMaskOnClone') -{ - $usemask = GETPOST('activate_useMaskOnClone','alpha'); - $res = dolibarr_set_const($db, "PRODUIT_USE_MASK_ON_CLONE", $usemask,'chaine',0,'',$conf->entity); -} else if ($action == 'set') { $const = "PRODUCT_SPECIAL_".strtoupper(GETPOST('spe','alpha')); @@ -444,21 +439,6 @@ print ''; print ''; print ''; -// Pouvoir utiliser la numérotation configurée dans le masque produit lors du clonage d'un produit -$var=!$var; -print '
'; -print ''; -print ''; -print ''; -print ''.$langs->trans("UseMaskOnClone", $conf->service->enabled ? '/service' : '').''; -print ''; -print $form->selectyesno("activate_useMaskOnClone",$conf->global->PRODUIT_USE_MASK_ON_CLONE,1); -print ''; -print ''; -print ''; -print ''; -print '
'; - // Activate propal merge produt card /* disabled. PRODUIT_PDF_MERGE_PROPAL can be added manually. Still did not understand how this feature works. $var=!$var; diff --git a/htdocs/product/card.php b/htdocs/product/card.php index 36d79dc6d39..5fdba5958f2 100644 --- a/htdocs/product/card.php +++ b/htdocs/product/card.php @@ -1614,7 +1614,7 @@ if ($result > 0) } $tmpcode=''; -if (! empty($modCodeProduct->code_auto) && $conf->global->PRODUIT_USE_MASK_ON_CLONE) $tmpcode=$modCodeProduct->getNextValue($object,$object->type); +if (! empty($modCodeProduct->code_auto)) $tmpcode=$modCodeProduct->getNextValue($object,$object->type); // Define confirmation messages $formquestionclone=array(