From 337531f832cc933812ad8c0a8712b8dd63182bb6 Mon Sep 17 00:00:00 2001
From: Marc de Lima Lucio <68746600+marc-dll@users.noreply.github.com>
Date: Tue, 5 Oct 2021 10:54:22 +0200
Subject: [PATCH] FIX: deposit payment terms: correctly restrict them to objet
other than invoices and template invoices
---
htdocs/comm/card.php | 4 ++--
htdocs/comm/propal/card.php | 8 ++++----
htdocs/comm/propal/list.php | 2 +-
htdocs/commande/card.php | 10 +++++-----
htdocs/commande/list.php | 2 +-
htdocs/core/class/html.form.class.php | 9 +++++----
htdocs/fourn/card.php | 2 +-
htdocs/fourn/facture/list.php | 2 +-
8 files changed, 20 insertions(+), 19 deletions(-)
diff --git a/htdocs/comm/card.php b/htdocs/comm/card.php
index b511d932f52..ff630b6b4da 100644
--- a/htdocs/comm/card.php
+++ b/htdocs/comm/card.php
@@ -411,9 +411,9 @@ if ($object->id > 0) {
print '';
print '
';
if ($action == 'editconditions') {
- $form->form_conditions_reglement($_SERVER['PHP_SELF'].'?socid='.$object->id, $object->cond_reglement_id, 'cond_reglement_id', 1, $object->deposit_percent);
+ $form->form_conditions_reglement($_SERVER['PHP_SELF'].'?socid='.$object->id, $object->cond_reglement_id, 'cond_reglement_id', 1, 1, $object->deposit_percent);
} else {
- $form->form_conditions_reglement($_SERVER['PHP_SELF'].'?socid='.$object->id, $object->cond_reglement_id, 'none', 0, $object->deposit_percent);
+ $form->form_conditions_reglement($_SERVER['PHP_SELF'].'?socid='.$object->id, $object->cond_reglement_id, 'none', 0, 1, $object->deposit_percent);
}
print " | ";
print '';
diff --git a/htdocs/comm/propal/card.php b/htdocs/comm/propal/card.php
index ef74b2b6480..c0c3e79e0a9 100644
--- a/htdocs/comm/propal/card.php
+++ b/htdocs/comm/propal/card.php
@@ -1696,7 +1696,7 @@ if ($action == 'create') {
// Terms of payment
print '| '.$langs->trans('PaymentConditionsShort').' | ';
print img_picto('', 'paiment');
- $form->select_conditions_paiements((GETPOSTISSET('cond_reglement_id') ? GETPOST('cond_reglement_id', 'int') : $soc->cond_reglement_id), 'cond_reglement_id', -1, 1, 0, '', (GETPOSTISSET('cond_reglement_id_deposit_percent') ? GETPOST('cond_reglement_id_deposit_percent', 'int') : $soc->deposit_percent));
+ $form->select_conditions_paiements((GETPOSTISSET('cond_reglement_id') ? GETPOST('cond_reglement_id', 'int') : $soc->cond_reglement_id), 'cond_reglement_id', 1, 1, 0, '', (GETPOSTISSET('cond_reglement_id_deposit_percent') ? GETPOST('cond_reglement_id_deposit_percent', 'int') : $soc->deposit_percent));
print ' |
';
// Mode of payment
@@ -2042,7 +2042,7 @@ if ($action == 'create') {
}
ob_start();
- $form->select_conditions_paiements(0, 'cond_reglement_id', 1, 0, 0, 'minwidth200'); // TODO param 3
+ $form->select_conditions_paiements(0, 'cond_reglement_id', -1, 0, 0, 'minwidth200');
$paymentTermsSelect = ob_get_clean();
$formquestion[] = array(
@@ -2325,9 +2325,9 @@ if ($action == 'create') {
print '';
print '';
if ($object->statut == Propal::STATUS_DRAFT && $action == 'editconditions' && $usercancreate) {
- $form->form_conditions_reglement($_SERVER['PHP_SELF'].'?id='.$object->id, $object->cond_reglement_id, 'cond_reglement_id', 0, $object->deposit_percent);
+ $form->form_conditions_reglement($_SERVER['PHP_SELF'].'?id='.$object->id, $object->cond_reglement_id, 'cond_reglement_id', 0, 1, $object->deposit_percent);
} else {
- $form->form_conditions_reglement($_SERVER['PHP_SELF'].'?id='.$object->id, $object->cond_reglement_id, 'none', 0, $object->deposit_percent);
+ $form->form_conditions_reglement($_SERVER['PHP_SELF'].'?id='.$object->id, $object->cond_reglement_id, 'none', 0, 1, $object->deposit_percent);
}
print ' | ';
print '';
diff --git a/htdocs/comm/propal/list.php b/htdocs/comm/propal/list.php
index 269cf9cfd91..58936a327d6 100644
--- a/htdocs/comm/propal/list.php
+++ b/htdocs/comm/propal/list.php
@@ -1149,7 +1149,7 @@ if ($resql) {
// Payment term
if (!empty($arrayfields['p.fk_cond_reglement']['checked'])) {
print '';
- $form->select_conditions_paiements($search_fk_cond_reglement, 'search_fk_cond_reglement', -1, 1, 1);
+ $form->select_conditions_paiements($search_fk_cond_reglement, 'search_fk_cond_reglement', 1, 1, 1);
print ' | ';
}
// Payment mode
diff --git a/htdocs/commande/card.php b/htdocs/commande/card.php
index 3c739a1f303..57469c08c00 100644
--- a/htdocs/commande/card.php
+++ b/htdocs/commande/card.php
@@ -1207,7 +1207,7 @@ if (empty($reshook)) {
$object->generateDocument($model, $outputlangs, $hidedetails, $hidedesc, $hideref);
if ($deposit) {
- $deposit->fetch($deposit->id);
+ $deposit->fetch($deposit->id); // Reload to get new records
$deposit->generateDocument($deposit->model_pdf, $outputlangs, $hidedetails, $hidedesc, $hideref);
}
}
@@ -1702,7 +1702,7 @@ if ($action == 'create' && $usercancreate) {
// Terms of the settlement
print '| '.$langs->trans('PaymentConditionsShort').' | ';
print img_picto('', 'paiment');
- $form->select_conditions_paiements($cond_reglement_id, 'cond_reglement_id', - 1, 1, 0, '', $deposit_percent);
+ $form->select_conditions_paiements($cond_reglement_id, 'cond_reglement_id', 1, 1, 0, '', $deposit_percent);
print ' |
';
// Mode de reglement
@@ -2052,7 +2052,7 @@ if ($action == 'create' && $usercancreate) {
}
ob_start();
- $form->select_conditions_paiements(0, 'cond_reglement_id', 1, 0, 0, 'minwidth200'); // TODO param 3
+ $form->select_conditions_paiements(0, 'cond_reglement_id', -1, 0, 0, 'minwidth200');
$paymentTermsSelect = ob_get_clean();
$formquestion[] = array(
@@ -2370,9 +2370,9 @@ if ($action == 'create' && $usercancreate) {
print $form->editfieldkey("PaymentConditionsShort", 'conditions', '', $object, $editenable);
print '';
if ($action == 'editconditions') {
- $form->form_conditions_reglement($_SERVER['PHP_SELF'].'?id='.$object->id, $object->cond_reglement_id, 'cond_reglement_id', 1, $object->deposit_percent);
+ $form->form_conditions_reglement($_SERVER['PHP_SELF'].'?id='.$object->id, $object->cond_reglement_id, 'cond_reglement_id', 1, 1, $object->deposit_percent);
} else {
- $form->form_conditions_reglement($_SERVER['PHP_SELF'].'?id='.$object->id, $object->cond_reglement_id, 'none', 1, $object->deposit_percent);
+ $form->form_conditions_reglement($_SERVER['PHP_SELF'].'?id='.$object->id, $object->cond_reglement_id, 'none', 1, 1, $object->deposit_percent);
}
print ' | ';
diff --git a/htdocs/commande/list.php b/htdocs/commande/list.php
index 4e8a18821ff..854eb91bbde 100644
--- a/htdocs/commande/list.php
+++ b/htdocs/commande/list.php
@@ -1111,7 +1111,7 @@ if ($resql) {
// Payment term
if (!empty($arrayfields['c.fk_cond_reglement']['checked'])) {
print '';
- $form->select_conditions_paiements($search_fk_cond_reglement, 'search_fk_cond_reglement', -1, 1, 1);
+ $form->select_conditions_paiements($search_fk_cond_reglement, 'search_fk_cond_reglement', 1, 1, 1);
print ' | ';
}
// Payment mode
diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php
index f1d66377181..140ce5f06ee 100644
--- a/htdocs/core/class/html.form.class.php
+++ b/htdocs/core/class/html.form.class.php
@@ -3877,7 +3877,7 @@ class Form
*
* @param int $selected Id of payment term to preselect by default
* @param string $htmlname Nom de la zone select
- * @param int $filtertype If > 0, don't include payment terms with deposit percentage (for invoices)
+ * @param int $filtertype If > 0, include payment terms with deposit percentage (for objects other than invoices and invoice templates)
* @param int $addempty Add an empty entry
* @param int $noinfoadmin 0=Add admin info, 1=Disable admin info
* @param string $morecss Add more CSS on select tag
@@ -3905,7 +3905,7 @@ class Form
$selectedDepositPercent = null;
foreach ($this->cache_conditions_paiements as $id => $arrayconditions) {
- if ($filtertype > 0 && ! empty($arrayconditions['deposit_percent'])) {
+ if ($filtertype <= 0 && ! empty($arrayconditions['deposit_percent'])) {
continue;
}
@@ -5140,10 +5140,11 @@ class Form
* @param string $selected Id condition pre-selectionne
* @param string $htmlname Name of select html field
* @param int $addempty Add empty entry
+ * @param int $filtertype If > 0, include payment terms with deposit percentage (for objects other than invoices and invoice templates)
* @param float $deposit_percent % of deposit if needed by payment conditions
* @return void
*/
- public function form_conditions_reglement($page, $selected = '', $htmlname = 'cond_reglement_id', $addempty = 0, $deposit_percent = null)
+ public function form_conditions_reglement($page, $selected = '', $htmlname = 'cond_reglement_id', $addempty = 0, $filtertype = -1, $deposit_percent = null)
{
// phpcs:enable
global $langs;
@@ -5151,7 +5152,7 @@ class Form
print '';
} else {
diff --git a/htdocs/fourn/card.php b/htdocs/fourn/card.php
index 9cfb2fe475f..09a0326c6b5 100644
--- a/htdocs/fourn/card.php
+++ b/htdocs/fourn/card.php
@@ -266,7 +266,7 @@ if ($object->id > 0) {
print '';
print '';
if ($action == 'editconditions') {
- $form->form_conditions_reglement($_SERVER['PHP_SELF'].'?socid='.$object->id, $object->cond_reglement_supplier_id, 'cond_reglement_supplier_id', -1, 1);
+ $form->form_conditions_reglement($_SERVER['PHP_SELF'].'?socid='.$object->id, $object->cond_reglement_supplier_id, 'cond_reglement_supplier_id', 1);
} else {
$form->form_conditions_reglement($_SERVER['PHP_SELF'].'?socid='.$object->id, $object->cond_reglement_supplier_id, 'none');
}
diff --git a/htdocs/fourn/facture/list.php b/htdocs/fourn/facture/list.php
index 56f98139052..bce01d741ed 100644
--- a/htdocs/fourn/facture/list.php
+++ b/htdocs/fourn/facture/list.php
@@ -1513,7 +1513,7 @@ if ($resql) {
// Payment condition
if (!empty($arrayfields['f.fk_cond_reglement']['checked'])) {
print ' | ';
- $form->form_conditions_reglement($_SERVER['PHP_SELF'], $obj->fk_cond_reglement, 'none', '', -1);
+ $form->form_conditions_reglement($_SERVER['PHP_SELF'], $obj->fk_cond_reglement, 'none', 1);
print ' | ';
if (!$i) {
$totalarray['nbfield']++;