diff --git a/modules/interventi/actions.php b/modules/interventi/actions.php index 2a6e1d05a..8749634bb 100644 --- a/modules/interventi/actions.php +++ b/modules/interventi/actions.php @@ -948,6 +948,22 @@ switch (post('op')) { break; + case 'update_inline_sessione': + $id_sessione = post('id_sessione'); + $sessione = Sessione::find($id_sessione); + + $sessione->orario_inizio = post('data_inizio'); + $sessione->orario_fine = post('data_fine'); + + $sessione->km = post('km'); + + $sessione->sconto_unitario = post('sconto_unitario'); + $sessione->tipo_sconto = post('tipo_sconto'); + $sessione->scontokm_unitario = post('scontokm_unitario'); + $sessione->tipo_scontokm = post('tipo_sconto_km'); + $sessione->save(); + break; + // Duplica intervento case 'copy': $id_stato = post('id_stato'); diff --git a/modules/interventi/ajax_tecnici.php b/modules/interventi/ajax_tecnici.php index 88f2f7f8c..623883a9a 100755 --- a/modules/interventi/ajax_tecnici.php +++ b/modules/interventi/ajax_tecnici.php @@ -80,7 +80,7 @@ if (!empty($sessioni)) { } echo ' - '.$sessione['ragione_sociale'].' '.(($sessione['anagrafica_deleted_at']) ? '('.tr('Eliminato').')' : '').' + '.$sessione['ragione_sociale'].' '.(($sessione['anagrafica_deleted_at']) ? '('.tr('Eliminato').')' : '').' '.tr('Orario inizio').' '.tr('Orario fine').' '.tr('Ore').' @@ -131,18 +131,20 @@ if (!empty($sessioni)) { // Orario di inizio echo ' - '.Translator::timestampToLocale($sessione['orario_inizio']).' + {[ "type": "timestamp", "name": "data_inizio_'.$sessione['id'].'", "required": 1, "value": "'.$sessione['orario_inizio'].'", "disabled": "'.$block_edit.'" ]} '; // Orario di fine echo ' - '.Translator::timestampToLocale($sessione['orario_fine']).' + {[ "type": "timestamp", "name": "data_fine_'.$sessione['id'].'", "required": 1, "value": "'.$sessione['orario_fine'].'", "disabled": "'.$block_edit.'" ]} '; // ORE echo ' - '.($ore <= 0 ? '' : '').' '.numberFormat($ore, 'qta').' + '.($ore <= 0 ? '' : '').' + {[ "type": "number", "name": "ore_'.$sessione['id'].'", "required": 1, "value": "'.numberFormat($ore, 'qta').'", "disabled": "1" ]} +
@@ -171,7 +173,7 @@ if (!empty($sessioni)) { // KM echo '
- '.numberFormat($km, 'qta').' + {[ "type": "number", "name": "sessione_km_'.$sessione['id'].'", "required": 1, "value": "'.numberFormat($sessione['km'], 'qta').'", "onchange": "aggiornaSessioneInline($(this).closest(\'tr\').data(\'id\'))", "disabled": "'.$block_edit.'" ]}
@@ -203,12 +205,10 @@ if (!empty($sessioni)) { // Sconto ore if ($show_costi) { + $tipo_sconto = (setting('Tipo di sconto predefinito') == '%' ? 'PRC' : 'UNT'); echo ' '; } @@ -216,10 +216,7 @@ if (!empty($sessioni)) { if ($show_costi) { echo ' '; } @@ -423,4 +420,59 @@ async function copySessione(button) { openModal("'.tr('Copia sessione').'", "'.$module->fileurl('modals/copy_sessione.php').'?id_module=" + globals.id_module + "&id_record=" + globals.id_record + "&id_sessione=" + id); } +$("#tecnici .tipo_icon_after").on("change", function() { + aggiornaSessioneInline($(this).closest("tr").data("id")); +}); + +$("[id^=data_inizio_], [id^=data_fine_]").on("dp.hide", function (e) { + aggiornaSessioneInline($(this).closest("tr").data("id")); +}); + +function caricaTecnici() { + let container = $("#tecnici"); + + localLoading(container, true); + $.get("'.$structure->fileurl('ajax_tecnici.php').'?id_module='.$id_module.'&id_record='.$id_record.'", function(data) { + container.html(data); + localLoading(container, false); + }); +} + +function aggiornaSessioneInline(id) { + var id_sessione = id; + var data_inizio = $("#data_inizio_" + id_sessione).val(); + var data_fine = $("#data_fine_" + id_sessione).val(); + var km = $("#sessione_km_" + id_sessione).val(); + var sconto_unitario = $("#sconto_unitario_" + id_sessione).val(); + var tipo_sconto = $("[id^=tipo_sconto_unitario_" + id_sessione + "]").val() + var scontokm_unitario = $("#scontokm_unitario_" + id_sessione).val(); + var tipo_sconto_km =$("[id^=tipo_scontokm_unitario_" + id_sessione + "]").val() + + $.ajax({ + url: globals.rootdir + "/actions.php", + type: "POST", + data: { + id_module: globals.id_module, + id_record: globals.id_record, + op: "update_inline_sessione", + id_sessione: id_sessione, + data_inizio: data_inizio, + data_fine: data_fine, + km: km, + sconto_unitario: sconto_unitario, + tipo_sconto: tipo_sconto, + scontokm_unitario: scontokm_unitario, + tipo_sconto_km: tipo_sconto_km, + }, + success: function(response) { + caricaTecnici(); + caricaCosti(); + renderMessages(); + }, + error: function(xhr, status, error) { + caricaCosti(); + renderMessages(); + } + }); +} '; diff --git a/modules/interventi/row-list.php b/modules/interventi/row-list.php index 47464ae9d..f046e0be2 100755 --- a/modules/interventi/row-list.php +++ b/modules/interventi/row-list.php @@ -335,6 +335,7 @@ function aggiornaRighe(id) { success: function (response) { renderMessages(); caricaRighe(null); + caricaCosti(); }, error: function() { renderMessages(); @@ -363,12 +364,14 @@ function rimuoviRiga(id) { righe: id, }, success: function (response) { - renderMessages(); caricaRighe(null); + caricaCosti(); + renderMessages(); }, error: function() { - renderMessages(); caricaRighe(null); + caricaCosti(); + renderMessages(); } }); }).catch(swal.noop); @@ -395,6 +398,7 @@ function duplicaRiga(id) { success: function (response) { renderMessages(); caricaRighe(null); + caricaCosti(); }, error: function() { renderMessages(); @@ -470,7 +474,7 @@ $("#check_all").click(function(){ } }); -$(".tipo_icon_after").on("change", function() { +$("#righe .tipo_icon_after").on("change", function() { aggiornaInline($(this).closest("tr").data("id")); }); @@ -498,6 +502,7 @@ function aggiornaInline(id) { }, success: function (response) { caricaRighe(id); + caricaCosti(); renderMessages(); }, error: function() {
- '.tr('_TOT_ _TYPE_', [ - '_TOT_' => Translator::numberToLocale($sessione['sconto_unitario']), - '_TYPE_' => ($sessione['tipo_sconto'] == 'PRC' ? '%' : currency()), - ]).' + {[ "type": "number", "name": "sconto_unitario_'.$sessione['id'].'", "value": "'.Translator::numberToLocale($sessione['sconto_unitario']).'", "onchange": "aggiornaSessioneInline($(this).closest(\'tr\').data(\'id\'))", "icon-after": "choice|untprc|'.($sessione['tipo_sconto'] ? $sessione['tipo_sconto'] : $tipo_sconto).'", "disabled": "'.$block_edit.'" ]} - '.tr('_TOT_ _TYPE_', [ - '_TOT_' => Translator::numberToLocale($sessione['scontokm_unitario']), - '_TYPE_' => ($sessione['tipo_sconto_km'] == 'PRC' ? '%' : currency()), - ]).' + {[ "type": "number", "name": "scontokm_unitario_'.$sessione['id'].'", "value": "'.Translator::numberToLocale($sessione['scontokm_unitario']).'", "onchange": "aggiornaSessioneInline($(this).closest(\'tr\').data(\'id\'))", "icon-after": "choice|untprc|'.($sessione['tipo_sconto_km'] ? $sessione['tipo_sconto_km'] : $tipo_sconto).'", "disabled": "'.$block_edit.'" ]}