From 8370973a9ddf2f8c3991c756608d0ec6c289df13 Mon Sep 17 00:00:00 2001 From: Vincent Dieltiens Date: Tue, 12 Oct 2021 15:15:09 +0200 Subject: [PATCH 1/6] Add an option to forbird changing the project of a supplier order if validated or if in draft but already has a reference (not ) --- htdocs/admin/supplier_order.php | 10 ++++++++++ htdocs/fourn/commande/card.php | 9 +++++++-- htdocs/langs/en_US/admin.lang | 1 + htdocs/langs/fr_FR/admin.lang | 1 + 4 files changed, 19 insertions(+), 2 deletions(-) diff --git a/htdocs/admin/supplier_order.php b/htdocs/admin/supplier_order.php index 808528cdc0a..5eb48b627d4 100644 --- a/htdocs/admin/supplier_order.php +++ b/htdocs/admin/supplier_order.php @@ -149,6 +149,7 @@ if ($action == 'updateMask') { $res1 = dolibarr_set_const($db, "SUPPLIER_ORDER_FREE_TEXT", $freetext, 'chaine', 0, '', $conf->entity); $res2 = dolibarr_set_const($db, "SUPPLIER_ORDER_3_STEPS_TO_BE_APPROVED", $doubleapproval, 'chaine', 0, '', $conf->entity); + $res3 = dolibarr_set_const($db, "FORBID_EDIT_PROJECT_ON_SUPPLIER_ORDER", GETPOST('FORBID_EDIT_PROJECT_ON_SUPPLIER_ORDER', 'int'), 'chaine', 0, '', $conf->entity); // TODO We add/delete permission here until permission can have a condition on a global var include_once DOL_DOCUMENT_ROOT.'/core/modules/modFournisseur.class.php'; @@ -532,6 +533,15 @@ if ($conf->reception->enabled) { print "\n"; print "\n"; +// Option +print ''; +print ''.$langs->trans("SupplierOrderForbidProjectChange").''; +print ''.$form->selectyesno('FORBID_EDIT_PROJECT_ON_SUPPLIER_ORDER', $conf->global->FORBID_EDIT_PROJECT_ON_SUPPLIER_ORDER, 1).''; +print ''; +print ''; +print ''; +print ''; + print '
'; print ''; diff --git a/htdocs/fourn/commande/card.php b/htdocs/fourn/commande/card.php index 4c8bed6bfe6..cea11eda9bc 100644 --- a/htdocs/fourn/commande/card.php +++ b/htdocs/fourn/commande/card.php @@ -144,6 +144,11 @@ $permissiondellink = $usercancreate; // Used by the include of actions_dellink.i $permissiontoedit = $usercancreate; // Used by the include of actions_lineupdown.inc.php $permissiontoadd = $usercancreate; // Used by the include of actions_addupdatedelete.inc.php +// Project permission +if (!empty($conf->projet->enabled)) { + $caneditproject = empty($conf->global->FORBID_EDIT_PROJECT_ON_SUPPLIER_ORDER) || ($object->statut == CommandeFournisseur::STATUS_DRAFT && preg_match('/^[\(]?PROV/i', $object->ref)); +} + /* * Actions @@ -239,7 +244,7 @@ if (empty($reshook)) { } // Set project - if ($action == 'classin' && $usercancreate) { + if ($action == 'classin' && $usercancreate && $caneditproject) { $result = $object->setProject($projectid); if ($result < 0) { setEventMessages($object->error, $object->errors, 'errors'); @@ -1988,7 +1993,7 @@ if ($action == 'create') { $langs->load("projects"); $morehtmlref .= '
'.$langs->trans('Project').' '; if ($usercancreate) { - if ($action != 'classify') { + if ($action != 'classify' && $caneditproject) { $morehtmlref .= ''.img_edit($langs->transnoentitiesnoconv('SetProject')).' : '; } if ($action == 'classify') { diff --git a/htdocs/langs/en_US/admin.lang b/htdocs/langs/en_US/admin.lang index def603e653e..6620b3c73ff 100644 --- a/htdocs/langs/en_US/admin.lang +++ b/htdocs/langs/en_US/admin.lang @@ -1436,6 +1436,7 @@ OrdersNumberingModules=Orders numbering models OrdersModelModule=Order documents models FreeLegalTextOnOrders=Free text on orders WatermarkOnDraftOrders=Watermark on draft orders (none if empty) +SupplierOrderForbidProjectChange=Forbid changing the project of a supplier order or a draft which already has a reference ShippableOrderIconInList=Add an icon in Orders list which indicate if order is shippable BANK_ASK_PAYMENT_BANK_DURING_ORDER=Ask for bank account destination of order ##### Interventions ##### diff --git a/htdocs/langs/fr_FR/admin.lang b/htdocs/langs/fr_FR/admin.lang index 9579e51920d..16279587795 100644 --- a/htdocs/langs/fr_FR/admin.lang +++ b/htdocs/langs/fr_FR/admin.lang @@ -1428,6 +1428,7 @@ OrdersNumberingModules=Modèles de numérotation des commandes OrdersModelModule=Modèles de document des commandes FreeLegalTextOnOrders=Mention complémentaire sur les commandes WatermarkOnDraftOrders=Filigrane sur les brouillons de commandes (aucun si vide) +SupplierOrderForbidProjectChange=Interdire de modifier le projet d'une commande validée (ou en brouillon mais ayant déjà une référence) ShippableOrderIconInList=Ajouter une icône dans la liste des commandes qui indique si la commande est expédiable. BANK_ASK_PAYMENT_BANK_DURING_ORDER=Demander le compte bancaire cible durant la commande ##### Interventions ##### From 7f07d82d3f66786ff7f08d1b5079ba41175d03fa Mon Sep 17 00:00:00 2001 From: Vincent Dieltiens Date: Tue, 12 Oct 2021 23:33:07 +0200 Subject: [PATCH 2/6] Rename FORBID_EDIT_PROJECT_ON_SUPPLIER_ORDER into SUPPLIER_ORDER_FORBID_EDIT_PROJECT --- htdocs/admin/supplier_order.php | 4 ++-- htdocs/fourn/commande/card.php | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/htdocs/admin/supplier_order.php b/htdocs/admin/supplier_order.php index 5eb48b627d4..a918c14db83 100644 --- a/htdocs/admin/supplier_order.php +++ b/htdocs/admin/supplier_order.php @@ -149,7 +149,7 @@ if ($action == 'updateMask') { $res1 = dolibarr_set_const($db, "SUPPLIER_ORDER_FREE_TEXT", $freetext, 'chaine', 0, '', $conf->entity); $res2 = dolibarr_set_const($db, "SUPPLIER_ORDER_3_STEPS_TO_BE_APPROVED", $doubleapproval, 'chaine', 0, '', $conf->entity); - $res3 = dolibarr_set_const($db, "FORBID_EDIT_PROJECT_ON_SUPPLIER_ORDER", GETPOST('FORBID_EDIT_PROJECT_ON_SUPPLIER_ORDER', 'int'), 'chaine', 0, '', $conf->entity); + $res3 = dolibarr_set_const($db, "SUPPLIER_ORDER_FORBID_EDIT_PROJECT", GETPOST('SUPPLIER_ORDER_FORBID_EDIT_PROJECT', 'int'), 'chaine', 0, '', $conf->entity); // TODO We add/delete permission here until permission can have a condition on a global var include_once DOL_DOCUMENT_ROOT.'/core/modules/modFournisseur.class.php'; @@ -536,7 +536,7 @@ print "\n"; // Option print ''; print ''.$langs->trans("SupplierOrderForbidProjectChange").''; -print ''.$form->selectyesno('FORBID_EDIT_PROJECT_ON_SUPPLIER_ORDER', $conf->global->FORBID_EDIT_PROJECT_ON_SUPPLIER_ORDER, 1).''; +print ''.$form->selectyesno('SUPPLIER_ORDER_FORBID_EDIT_PROJECT', $conf->global->SUPPLIER_ORDER_FORBID_EDIT_PROJECT, 1).''; print ''; print ''; print ''; diff --git a/htdocs/fourn/commande/card.php b/htdocs/fourn/commande/card.php index cea11eda9bc..6a5430d1f33 100644 --- a/htdocs/fourn/commande/card.php +++ b/htdocs/fourn/commande/card.php @@ -146,7 +146,7 @@ $permissiontoadd = $usercancreate; // Used by the include of actions_addupdatede // Project permission if (!empty($conf->projet->enabled)) { - $caneditproject = empty($conf->global->FORBID_EDIT_PROJECT_ON_SUPPLIER_ORDER) || ($object->statut == CommandeFournisseur::STATUS_DRAFT && preg_match('/^[\(]?PROV/i', $object->ref)); + $caneditproject = empty($conf->global->SUPPLIER_ORDER_FORBID_EDIT_PROJECT) || ($object->statut == CommandeFournisseur::STATUS_DRAFT && preg_match('/^[\(]?PROV/i', $object->ref)); } From 93eff144e5bf5073f55516210d8fd412b6e2c24c Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 13 Oct 2021 01:52:38 +0200 Subject: [PATCH 3/6] Update admin.lang --- htdocs/langs/fr_FR/admin.lang | 1 - 1 file changed, 1 deletion(-) diff --git a/htdocs/langs/fr_FR/admin.lang b/htdocs/langs/fr_FR/admin.lang index 16279587795..9579e51920d 100644 --- a/htdocs/langs/fr_FR/admin.lang +++ b/htdocs/langs/fr_FR/admin.lang @@ -1428,7 +1428,6 @@ OrdersNumberingModules=Modèles de numérotation des commandes OrdersModelModule=Modèles de document des commandes FreeLegalTextOnOrders=Mention complémentaire sur les commandes WatermarkOnDraftOrders=Filigrane sur les brouillons de commandes (aucun si vide) -SupplierOrderForbidProjectChange=Interdire de modifier le projet d'une commande validée (ou en brouillon mais ayant déjà une référence) ShippableOrderIconInList=Ajouter une icône dans la liste des commandes qui indique si la commande est expédiable. BANK_ASK_PAYMENT_BANK_DURING_ORDER=Demander le compte bancaire cible durant la commande ##### Interventions ##### From 0ecf9ebc41fa12c5bd37123db1ba40e282c808df Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 13 Oct 2021 01:52:53 +0200 Subject: [PATCH 4/6] Update admin.lang --- htdocs/langs/en_US/admin.lang | 1 - 1 file changed, 1 deletion(-) diff --git a/htdocs/langs/en_US/admin.lang b/htdocs/langs/en_US/admin.lang index 6620b3c73ff..def603e653e 100644 --- a/htdocs/langs/en_US/admin.lang +++ b/htdocs/langs/en_US/admin.lang @@ -1436,7 +1436,6 @@ OrdersNumberingModules=Orders numbering models OrdersModelModule=Order documents models FreeLegalTextOnOrders=Free text on orders WatermarkOnDraftOrders=Watermark on draft orders (none if empty) -SupplierOrderForbidProjectChange=Forbid changing the project of a supplier order or a draft which already has a reference ShippableOrderIconInList=Add an icon in Orders list which indicate if order is shippable BANK_ASK_PAYMENT_BANK_DURING_ORDER=Ask for bank account destination of order ##### Interventions ##### From 4d48be415caaeae47fb84962d6c47e1a3ef876d7 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 13 Oct 2021 01:53:44 +0200 Subject: [PATCH 5/6] Fight against inflation of minor options --- htdocs/admin/supplier_order.php | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/htdocs/admin/supplier_order.php b/htdocs/admin/supplier_order.php index a918c14db83..fabcbbc75c9 100644 --- a/htdocs/admin/supplier_order.php +++ b/htdocs/admin/supplier_order.php @@ -149,8 +149,7 @@ if ($action == 'updateMask') { $res1 = dolibarr_set_const($db, "SUPPLIER_ORDER_FREE_TEXT", $freetext, 'chaine', 0, '', $conf->entity); $res2 = dolibarr_set_const($db, "SUPPLIER_ORDER_3_STEPS_TO_BE_APPROVED", $doubleapproval, 'chaine', 0, '', $conf->entity); - $res3 = dolibarr_set_const($db, "SUPPLIER_ORDER_FORBID_EDIT_PROJECT", GETPOST('SUPPLIER_ORDER_FORBID_EDIT_PROJECT', 'int'), 'chaine', 0, '', $conf->entity); - + // TODO We add/delete permission here until permission can have a condition on a global var include_once DOL_DOCUMENT_ROOT.'/core/modules/modFournisseur.class.php'; $newmodule = new modFournisseur($db); @@ -533,15 +532,6 @@ if ($conf->reception->enabled) { print "\n"; print "\n"; -// Option -print ''; -print ''.$langs->trans("SupplierOrderForbidProjectChange").''; -print ''.$form->selectyesno('SUPPLIER_ORDER_FORBID_EDIT_PROJECT', $conf->global->SUPPLIER_ORDER_FORBID_EDIT_PROJECT, 1).''; -print ''; -print ''; -print ''; -print ''; - print '
'; print ''; From 365d5d4588f941718ea7d36652bf0b2b8674962d Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 13 Oct 2021 01:55:24 +0200 Subject: [PATCH 6/6] Update card.php --- htdocs/fourn/commande/card.php | 1 + 1 file changed, 1 insertion(+) diff --git a/htdocs/fourn/commande/card.php b/htdocs/fourn/commande/card.php index 6a5430d1f33..32150131314 100644 --- a/htdocs/fourn/commande/card.php +++ b/htdocs/fourn/commande/card.php @@ -145,6 +145,7 @@ $permissiontoedit = $usercancreate; // Used by the include of actions_lineupdown $permissiontoadd = $usercancreate; // Used by the include of actions_addupdatedelete.inc.php // Project permission +$caneditproject = false; if (!empty($conf->projet->enabled)) { $caneditproject = empty($conf->global->SUPPLIER_ORDER_FORBID_EDIT_PROJECT) || ($object->statut == CommandeFournisseur::STATUS_DRAFT && preg_match('/^[\(]?PROV/i', $object->ref)); }