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/6] 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/6] 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/6] 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) From d9aa83e69913e782968decd3d14c278cea24cd92 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 23 Oct 2020 03:41:26 +0200 Subject: [PATCH 4/6] Fix phpcs --- htdocs/compta/facture/card.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/htdocs/compta/facture/card.php b/htdocs/compta/facture/card.php index e521ac89a91..aba3d62aaf1 100644 --- a/htdocs/compta/facture/card.php +++ b/htdocs/compta/facture/card.php @@ -357,7 +357,7 @@ if (empty($reshook)) $object->cond_reglement_id = 0; // To clean property $error = 0; - + $db->begin(); if (! $error) { @@ -367,7 +367,7 @@ if (empty($reshook)) setEventMessages($object->error, $object->errors, 'errors'); } } - + if (! $error) { $old_date_lim_reglement = $object->date_lim_reglement; $new_date_lim_reglement = $object->calculate_date_lim_reglement(); @@ -379,9 +379,9 @@ if (empty($reshook)) setEventMessages($object->error, $object->errors, 'errors'); } } - + if ($error) { - $db->rollback(); + $db->rollback(); } else { $db->commit(); } From e0e4da481afe7fff8a9a8a4d21e5246f0f86dc2e Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 23 Oct 2020 03:42:54 +0200 Subject: [PATCH 5/6] Fix phpcs --- .../triggers/interface_20_modWorkflow_WorkflowManager.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/triggers/interface_20_modWorkflow_WorkflowManager.class.php b/htdocs/core/triggers/interface_20_modWorkflow_WorkflowManager.class.php index 5a3081e0e8c..6f066cd487b 100644 --- a/htdocs/core/triggers/interface_20_modWorkflow_WorkflowManager.class.php +++ b/htdocs/core/triggers/interface_20_modWorkflow_WorkflowManager.class.php @@ -299,7 +299,7 @@ class InterfaceWorkflowManager extends DolibarrTriggers //Build array of quantity ordered by product if (is_array($order->lines) && count($order->lines)>0) { foreach($order->lines as $orderline) { - if (empty($conf->global->STOCK_SUPPORTS_SERVICES) && $orderline->product_type > 0) continue; + if (empty($conf->global->STOCK_SUPPORTS_SERVICES) && $orderline->product_type > 0) continue; $qtyordred[$orderline->fk_product]+=$orderline->qty; } } From c9a73cc380d30cedeeff7dc1bd89c7bdf6852f08 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 23 Oct 2020 03:55:18 +0200 Subject: [PATCH 6/6] Fix phpcs --- .../compta/prelevement/class/bonprelevement.class.php | 4 ++-- .../prelevement/class/rejetprelevement.class.php | 11 +++++------ htdocs/compta/prelevement/line.php | 8 ++++---- htdocs/expensereport/class/expensereport.class.php | 2 -- 4 files changed, 11 insertions(+), 14 deletions(-) diff --git a/htdocs/compta/prelevement/class/bonprelevement.class.php b/htdocs/compta/prelevement/class/bonprelevement.class.php index 483df326566..591b8e45bef 100755 --- a/htdocs/compta/prelevement/class/bonprelevement.class.php +++ b/htdocs/compta/prelevement/class/bonprelevement.class.php @@ -469,7 +469,7 @@ class BonPrelevement extends CommonObject $message = $langs->trans("InfoCreditMessage", $this->ref, dol_print_date($date, 'dayhour')); //Add payment of withdrawal into bank - $bankaccount = ($this->type == 'bank-transfer' ? $conf->global->PAYMENTBYBANKTRANSFER_ID_BANKACCOUNT : $conf->global->PRELEVEMENT_ID_BANKACCOUNT); + $bankaccount = ($this->type == 'bank-transfer' ? $conf->global->PAYMENTBYBANKTRANSFER_ID_BANKACCOUNT : $conf->global->PRELEVEMENT_ID_BANKACCOUNT); $facs = array(); $amounts = array(); $amountsperthirdparty = array(); @@ -2186,7 +2186,7 @@ class BonPrelevement extends CommonObject // Get data of bank account //$id = $configuration->global->PRELEVEMENT_ID_BANKACCOUNT; - $id = ($type == 'bank-transfer' ? $conf->global->PAYMENTBYBANKTRANSFER_ID_BANKACCOUNT : $conf->global->PRELEVEMENT_ID_BANKACCOUNT); + $id = ($type == 'bank-transfer' ? $conf->global->PAYMENTBYBANKTRANSFER_ID_BANKACCOUNT : $conf->global->PRELEVEMENT_ID_BANKACCOUNT); $account = new Account($this->db); if ($account->fetch($id) > 0) { diff --git a/htdocs/compta/prelevement/class/rejetprelevement.class.php b/htdocs/compta/prelevement/class/rejetprelevement.class.php index c831d4f3e0f..e80a2f28dff 100755 --- a/htdocs/compta/prelevement/class/rejetprelevement.class.php +++ b/htdocs/compta/prelevement/class/rejetprelevement.class.php @@ -15,7 +15,6 @@ * * You should have received a copy of the GNU General Public License * along with this program. If not, see . - * */ /** @@ -39,7 +38,7 @@ class RejetPrelevement * @var DoliDB Database handler. */ public $db; - + public $type; //prelevement or bank transfer @@ -95,7 +94,7 @@ class RejetPrelevement $now = dol_now(); dol_syslog("RejetPrelevement::Create id $id"); - $bankaccount = ($this->type == 'bank-transfer' ? $conf->global->PAYMENTBYBANKTRANSFER_ID_BANKACCOUNT : $conf->global->PRELEVEMENT_ID_BANKACCOUNT); + $bankaccount = ($this->type == 'bank-transfer' ? $conf->global->PAYMENTBYBANKTRANSFER_ID_BANKACCOUNT : $conf->global->PRELEVEMENT_ID_BANKACCOUNT); $facs = $this->getListInvoices(1); $this->db->begin(); @@ -141,14 +140,14 @@ class RejetPrelevement for ($i = 0; $i < $num; $i++) { if($this->type == 'bank-transfer'){ - $fac = new FactureFournisseur($this->db); + $fac = new FactureFournisseur($this->db); $pai = new PaiementFourn($this->db); } else{ $fac = new Facture($this->db); $pai = new Paiement($this->db); } - + $fac->fetch($facs[$i][0]); // Make a negative payment @@ -307,7 +306,7 @@ class RejetPrelevement //$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."facture as f ON (pf.fk_facture = f.rowid)"; if ($this->type == 'bank-transfer') $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."facture_fourn as f ON (pf.fk_facture_fourn = f.rowid)"; else $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."facture as f ON (pf.fk_facture = f.rowid)"; - + $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."prelevement_lignes as pl ON (pf.fk_prelevement_lignes = pl.rowid)"; $sql .= " WHERE pf.fk_prelevement_lignes = ".$this->id; $sql .= " AND f.entity IN (".getEntity('invoice').")"; diff --git a/htdocs/compta/prelevement/line.php b/htdocs/compta/prelevement/line.php index 78a0723aef2..07a79e5eda8 100755 --- a/htdocs/compta/prelevement/line.php +++ b/htdocs/compta/prelevement/line.php @@ -97,11 +97,11 @@ if ($action == 'confirm_rejet') if ($lipre->fetch($id) == 0) { - $rej = new RejetPrelevement($db, $user,$type); + $rej = new RejetPrelevement($db, $user, $type); $rej->create($user, $id, GETPOST('motif', 'alpha'), $daterej, $lipre->bon_rowid, GETPOST('facturer', 'int')); - header("Location: line.php?id=".$id.'&type='.$type); + header("Location: line.php?id=".urlencode($id).'&type='.urlencode($type)); exit; } } @@ -112,7 +112,7 @@ if ($action == 'confirm_rejet') } else { - header("Location: line.php?id=".$id.'&type='.$type); + header("Location: line.php?id=".urlencode($id).'&type='.urlencode($type)); exit; } } @@ -208,7 +208,7 @@ if ($id) print '
'; print ''; print ''; - print ''; + print ''; print ''; print ''; diff --git a/htdocs/expensereport/class/expensereport.class.php b/htdocs/expensereport/class/expensereport.class.php index 730cb01c82b..ee41343dfc2 100644 --- a/htdocs/expensereport/class/expensereport.class.php +++ b/htdocs/expensereport/class/expensereport.class.php @@ -2264,7 +2264,6 @@ class ExpenseReport extends CommonObject $langs->load("trips"); if (!dol_strlen($modele)) { - if ($this->modelpdf) { $modele = $this->modelpdf; } elseif (!empty($conf->global->EXPENSEREPORT_ADDON_PDF)) { @@ -2278,7 +2277,6 @@ class ExpenseReport extends CommonObject } else { return 0; } - } /**