From 6a66fcbff85bea8058a2609a7a4d13f990afaf71 Mon Sep 17 00:00:00 2001 From: Marc de Lima Lucio <68746600+marc-dll@users.noreply.github.com> Date: Thu, 30 Sep 2021 16:51:31 +0200 Subject: [PATCH 1/2] NEW: expense report: show link to already existing overlapping expense report --- htdocs/expensereport/card.php | 12 ++++++++---- htdocs/expensereport/class/expensereport.class.php | 13 ++++--------- 2 files changed, 12 insertions(+), 13 deletions(-) diff --git a/htdocs/expensereport/card.php b/htdocs/expensereport/card.php index f982b046793..7f41245b4d8 100644 --- a/htdocs/expensereport/card.php +++ b/htdocs/expensereport/card.php @@ -266,10 +266,14 @@ if (empty($reshook)) { } } - if (!$error && empty($conf->global->EXPENSEREPORT_ALLOW_OVERLAPPING_PERIODS) && $object->periode_existe($fuser, $object->date_debut, $object->date_fin)) { - $error++; - setEventMessages($langs->trans("ErrorDoubleDeclaration"), null, 'errors'); - $action = 'create'; + if (!$error && empty($conf->global->EXPENSEREPORT_ALLOW_OVERLAPPING_PERIODS)) { + $overlappingExpenseReportID = $object->periode_existe($fuser, $object->date_debut, $object->date_fin, true); + + if ($overlappingExpenseReportID > 0) { + $error++; + setEventMessages($langs->trans("ErrorDoubleDeclaration").' '. $langs->trans('ShowTrip').'', null, 'errors'); + $action = 'create'; + } } if (!$error) { diff --git a/htdocs/expensereport/class/expensereport.class.php b/htdocs/expensereport/class/expensereport.class.php index 63303554c51..8df8b356090 100644 --- a/htdocs/expensereport/class/expensereport.class.php +++ b/htdocs/expensereport/class/expensereport.class.php @@ -2195,9 +2195,10 @@ class ExpenseReport extends CommonObject * @param User $fuser User * @param integer $date_debut Start date * @param integer $date_fin End date + * @param bool $return_id True to return ID of existing expense report * @return int <0 if KO, >0 if OK */ - public function periode_existe($fuser, $date_debut, $date_fin) + public function periode_existe($fuser, $date_debut, $date_fin, $return_id = false) { // phpcs:enable $sql = "SELECT rowid, date_debut, date_fin"; @@ -2213,8 +2214,6 @@ class ExpenseReport extends CommonObject $date_d_form = $date_debut; $date_f_form = $date_fin; - $existe = false; - while ($i < $num_rows) { $objp = $this->db->fetch_object($result); @@ -2222,17 +2221,13 @@ class ExpenseReport extends CommonObject $date_f_req = $this->db->jdate($objp->date_fin); // 4 if (!($date_f_form < $date_d_req || $date_d_form > $date_f_req)) { - $existe = true; + return $return_id ? $objp->rowid : 1; } $i++; } - if ($existe) { - return 1; - } else { - return 0; - } + return 0; } else { return 0; } From 704bae46a6672aa7a50260e6a6c0ca4df1ff745a Mon Sep 17 00:00:00 2001 From: Marc de Lima Lucio <68746600+marc-dll@users.noreply.github.com> Date: Mon, 4 Oct 2021 08:51:31 +0200 Subject: [PATCH 2/2] FIX: expense report: show link to already existing overlapping expense report without adding new parameter --- htdocs/expensereport/class/expensereport.class.php | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/htdocs/expensereport/class/expensereport.class.php b/htdocs/expensereport/class/expensereport.class.php index 8df8b356090..64034c10a3f 100644 --- a/htdocs/expensereport/class/expensereport.class.php +++ b/htdocs/expensereport/class/expensereport.class.php @@ -2195,10 +2195,9 @@ class ExpenseReport extends CommonObject * @param User $fuser User * @param integer $date_debut Start date * @param integer $date_fin End date - * @param bool $return_id True to return ID of existing expense report * @return int <0 if KO, >0 if OK */ - public function periode_existe($fuser, $date_debut, $date_fin, $return_id = false) + public function periode_existe($fuser, $date_debut, $date_fin) { // phpcs:enable $sql = "SELECT rowid, date_debut, date_fin"; @@ -2221,7 +2220,7 @@ class ExpenseReport extends CommonObject $date_f_req = $this->db->jdate($objp->date_fin); // 4 if (!($date_f_form < $date_d_req || $date_d_form > $date_f_req)) { - return $return_id ? $objp->rowid : 1; + return $objp->rowid; } $i++;