From 23cd63963a4d49a22904a91c9cd88db6ce176db3 Mon Sep 17 00:00:00 2001 From: jpb Date: Tue, 24 May 2022 08:15:28 +0200 Subject: [PATCH] add the annual accumulation of mileage costs for the selection of the coefficient --- htdocs/expensereport/ajax/ajaxik.php | 27 ++++++++---------- htdocs/expensereport/card.php | 7 ++--- .../class/expensereport.class.php | 28 ++++++++++++++++--- 3 files changed, 37 insertions(+), 25 deletions(-) diff --git a/htdocs/expensereport/ajax/ajaxik.php b/htdocs/expensereport/ajax/ajaxik.php index 397245af94e..a4b6b3216eb 100644 --- a/htdocs/expensereport/ajax/ajaxik.php +++ b/htdocs/expensereport/ajax/ajaxik.php @@ -89,24 +89,19 @@ if (empty($fk_expense) || $fk_expense < 0) { $rep->response_status = 'error'; } else { $expense = new ExpenseReport($db); - $result = $expense->computeTotalKm($fk_c_exp_tax_cat, $qty, $vatrate); - if ($result < 0) { - $rep->error = $result; - $rep->errorMessage = $langs->trans('errorComputeTtcOnMileageExpense'); - $rep->response_status = 'error'; - } else { - $rep->data = $result; - $rep->response_status = 'success'; + $result = $expense->fetch($fk_expense); + if ($result){ + $result = $expense->computeTotalKm($fk_c_exp_tax_cat, $qty, $vatrate); + if ($result < 0) { + $rep->error = $result; + $rep->errorMessage = $langs->trans('errorComputeTtcOnMileageExpense'); + $rep->response_status = 'error'; + } else { + $rep->data = $result; + $rep->response_status = 'success'; + } } - /*if (empty($range)) { - $rep->errorMessage = json_encode(array('error' => $langs->transnoentitiesnoconv('ErrorRecordNotFound'), 'range' => $range)); - $rep->response_status = 'error'; - } else { - $ikoffset = price($range->ikoffset, 0, $langs, 1, -1, -1, $conf->currency); - $rep->errorMessage = json_encode(array('up' => $range->coef, 'ikoffset' => $range->ikoffset, 'title' => $langs->transnoentitiesnoconv('ExpenseRangeOffset', $ikoffset), 'comment' => 'offset should be applied on addline or updateline')); - $rep->response_status = 'error'; - }*/ } } } diff --git a/htdocs/expensereport/card.php b/htdocs/expensereport/card.php index 7c32fefc61e..cd8d1365561 100644 --- a/htdocs/expensereport/card.php +++ b/htdocs/expensereport/card.php @@ -2604,7 +2604,7 @@ if ($action == 'create') { let tax_cat = jQuery("#select_fk_c_exp_tax_cat").find(":selected").val(); let tva = jQuery("#vatrate").find(":selected").val(); let qty = jQuery("#input_qty").val(); - console.log(qty); + let path = "'.dol_buildpath("/expensereport/ajax/ajaxik.php", 1) .'"; @@ -2621,12 +2621,9 @@ if ($action == 'create') { ,dataType:"json" ,success:function(response) { if (response.response_status == "success"){ - jQuery("#value_unit_ht").val(response.data); - }else{ - /* console.log(response.errorMessage) */ + jQuery("#value_unit").val(""); } - }, }); diff --git a/htdocs/expensereport/class/expensereport.class.php b/htdocs/expensereport/class/expensereport.class.php index e6e07f7f304..56b2414c04d 100644 --- a/htdocs/expensereport/class/expensereport.class.php +++ b/htdocs/expensereport/class/expensereport.class.php @@ -2572,10 +2572,10 @@ class ExpenseReport extends CommonObject global $langs,$user,$db,$conf; - $total_ttc = 0; + $cumulYearQty = 0; $ranges = array(); $coef = 0; - $offset = 0; + if ($fk_cat < 0) { $this->error = $langs->trans('ErrorBadParameterCat'); @@ -2604,6 +2604,26 @@ class ExpenseReport extends CommonObject $result = $this->db->query($sql); if ($result) { + + if ($conf->global->EXPENSEREPORT_CALCULATE_MILEAGE_EXPENSE_COEFFICIENT_ON_CURRENT_YEAR){ + + $arrayDate = dol_getdate(dol_now()); + $sql = " SELECT count(n.qty) as cumul FROM ".MAIN_DB_PREFIX."expensereport_det n"; + $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."expensereport e ON e.rowid = n.fk_expensereport"; + $sql.= " WHERE e.fk_user_author = ".(int) $this->fk_user_author; + $sql.= " AND YEAR(n.date) = ".(int) $arrayDate['year'] ; + $sql.= " AND n.fk_c_type_fees = 4"; + $sql.= " AND e.fk_statut = ".(int) ExpenseReport::STATUS_VALIDATED; + $resql = $this->db->query($sql); + + if ($resql){ + $obj = $this->db->fetch_object($resql); + $cumulYearQty = $obj->cumul; + } + $qty = $cumulYearQty + $qty; + + } + $num = $this->db->num_rows($result); if ($num) { @@ -2617,12 +2637,12 @@ class ExpenseReport extends CommonObject for ($i = 0; $i < $num; $i++) { if ($i < ($num - 1)) { - if ($qty > $ranges[$i]->range && $qty < $ranges[$i+1]->range) { + if ($qty > $ranges[$i]->range_ik && $qty < $ranges[$i+1]->range_ik) { $coef = $ranges[$i]->coef; $offset = $ranges[$i]->offset; } } else { - if ($qty > $ranges[$i]->range) { + if ($qty > $ranges[$i]->range_ik) { $coef = $ranges[$i]->coef; $offset = $ranges[$i]->offset; }