From 1795ec6a9dc3ffa16792598ac97cf51de3781a5b Mon Sep 17 00:00:00 2001 From: Marc de Lima Lucio <68746600+marc-dll@users.noreply.github.com> Date: Thu, 22 Oct 2020 16:11:12 +0200 Subject: [PATCH 1/3] FIX: supplier invoice: autoatically calculate payment term when modifying payment condition --- htdocs/fourn/facture/card.php | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/htdocs/fourn/facture/card.php b/htdocs/fourn/facture/card.php index 15df715664d..43b4757729c 100644 --- a/htdocs/fourn/facture/card.php +++ b/htdocs/fourn/facture/card.php @@ -325,7 +325,18 @@ if (empty($reshook)) // payments conditions if ($action == 'setconditions' && $user->rights->fournisseur->facture->creer) { - $result=$object->setPaymentTerms(GETPOST('cond_reglement_id', 'int')); + $object->fetch($id); + $object->cond_reglement_code = 0; // To clean property + $object->cond_reglement_id = 0; // To clean property + $result = $object->setPaymentTerms(GETPOST('cond_reglement_id', 'int')); + if ($result < 0) dol_print_error($db, $object->error); + + $old_date_echeance = $object->date_echeance; + $new_date_echeance = $object->calculate_date_lim_reglement(); + if ($new_date_echeance > $old_date_echeance) $object->date_echeance = $new_date_echeance; + if ($object->date_echeance < $object->date) $object->date_echeance = $object->date; + $result = $object->update($user); + if ($result < 0) dol_print_error($db, $object->error); } // Set incoterm From 594d9e321e8c7753932ca8ee98491036a3b51ec9 Mon Sep 17 00:00:00 2001 From: Marc de Lima Lucio <68746600+marc-dll@users.noreply.github.com> Date: Thu, 22 Oct 2020 18:28:27 +0200 Subject: [PATCH 2/3] FIX: invoice payment terms edition: error management --- htdocs/compta/facture/card.php | 17 +++++++++++++++-- htdocs/fourn/facture/card.php | 17 +++++++++++++++-- 2 files changed, 30 insertions(+), 4 deletions(-) diff --git a/htdocs/compta/facture/card.php b/htdocs/compta/facture/card.php index 49f92826259..e1d414539d1 100644 --- a/htdocs/compta/facture/card.php +++ b/htdocs/compta/facture/card.php @@ -355,15 +355,28 @@ if (empty($reshook)) $object->fetch($id); $object->cond_reglement_code = 0; // To clean property $object->cond_reglement_id = 0; // To clean property + + $db->begin(); + $result = $object->setPaymentTerms(GETPOST('cond_reglement_id', 'int')); - if ($result < 0) dol_print_error($db, $object->error); + if ($result < 0) { + $db->rollback(); + dol_print_error($db, $object->error); + exit; + } $old_date_lim_reglement = $object->date_lim_reglement; $new_date_lim_reglement = $object->calculate_date_lim_reglement(); if ($new_date_lim_reglement > $old_date_lim_reglement) $object->date_lim_reglement = $new_date_lim_reglement; if ($object->date_lim_reglement < $object->date) $object->date_lim_reglement = $object->date; $result = $object->update($user); - if ($result < 0) dol_print_error($db, $object->error); + if ($result < 0) { + $db->rollback(); + dol_print_error($db, $object->error); + exit; + } + + $db->commit(); } elseif ($action == 'setpaymentterm' && $usercancreate) diff --git a/htdocs/fourn/facture/card.php b/htdocs/fourn/facture/card.php index 43b4757729c..4d8ead1ca94 100644 --- a/htdocs/fourn/facture/card.php +++ b/htdocs/fourn/facture/card.php @@ -328,15 +328,28 @@ if (empty($reshook)) $object->fetch($id); $object->cond_reglement_code = 0; // To clean property $object->cond_reglement_id = 0; // To clean property + + $db->begin(); + $result = $object->setPaymentTerms(GETPOST('cond_reglement_id', 'int')); - if ($result < 0) dol_print_error($db, $object->error); + if ($result < 0) { + $db->rollback(); + dol_print_error($db, $object->error); + exit; + } $old_date_echeance = $object->date_echeance; $new_date_echeance = $object->calculate_date_lim_reglement(); if ($new_date_echeance > $old_date_echeance) $object->date_echeance = $new_date_echeance; if ($object->date_echeance < $object->date) $object->date_echeance = $object->date; $result = $object->update($user); - if ($result < 0) dol_print_error($db, $object->error); + if ($result < 0) { + $db->rollback(); + dol_print_error($db, $object->error); + exit; + } + + $db->commit(); } // Set incoterm From b4581b6af87b3b47307d74afa55ff542a834f548 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 22 Oct 2020 18:39:45 +0200 Subject: [PATCH 3/3] Better error management --- htdocs/compta/facture/card.php | 42 ++++++++++++++++++++-------------- 1 file changed, 25 insertions(+), 17 deletions(-) diff --git a/htdocs/compta/facture/card.php b/htdocs/compta/facture/card.php index e1d414539d1..e521ac89a91 100644 --- a/htdocs/compta/facture/card.php +++ b/htdocs/compta/facture/card.php @@ -356,27 +356,35 @@ if (empty($reshook)) $object->cond_reglement_code = 0; // To clean property $object->cond_reglement_id = 0; // To clean property + $error = 0; + $db->begin(); - $result = $object->setPaymentTerms(GETPOST('cond_reglement_id', 'int')); - if ($result < 0) { - $db->rollback(); - dol_print_error($db, $object->error); - exit; + if (! $error) { + $result = $object->setPaymentTerms(GETPOST('cond_reglement_id', 'int')); + if ($result < 0) { + $error++; + setEventMessages($object->error, $object->errors, 'errors'); + } } - - $old_date_lim_reglement = $object->date_lim_reglement; - $new_date_lim_reglement = $object->calculate_date_lim_reglement(); - if ($new_date_lim_reglement > $old_date_lim_reglement) $object->date_lim_reglement = $new_date_lim_reglement; - if ($object->date_lim_reglement < $object->date) $object->date_lim_reglement = $object->date; - $result = $object->update($user); - if ($result < 0) { - $db->rollback(); - dol_print_error($db, $object->error); - exit; + + if (! $error) { + $old_date_lim_reglement = $object->date_lim_reglement; + $new_date_lim_reglement = $object->calculate_date_lim_reglement(); + if ($new_date_lim_reglement > $old_date_lim_reglement) $object->date_lim_reglement = $new_date_lim_reglement; + if ($object->date_lim_reglement < $object->date) $object->date_lim_reglement = $object->date; + $result = $object->update($user); + if ($result < 0) { + $error++; + setEventMessages($object->error, $object->errors, 'errors'); + } + } + + if ($error) { + $db->rollback(); + } else { + $db->commit(); } - - $db->commit(); } elseif ($action == 'setpaymentterm' && $usercancreate)