add the annual accumulation of mileage costs for the selection of the coefficient

This commit is contained in:
jpb 2022-05-24 08:15:28 +02:00
parent 6f0047cc77
commit 23cd63963a
3 changed files with 37 additions and 25 deletions

View File

@ -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';
}*/
}
}
}

View File

@ -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("");
}
},
});

View File

@ -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;
}