Skip to content

Commit b776d79

Browse files
committed
feat: modifica tecnico nelle sessioni
1 parent 9436357 commit b776d79

2 files changed

Lines changed: 54 additions & 33 deletions

File tree

modules/interventi/actions.php

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1265,6 +1265,18 @@
12651265
$sessione->tipo_sconto = post('tipo_sconto');
12661266
$sessione->scontokm_unitario = post('scontokm_unitario');
12671267
$sessione->tipo_scontokm = post('tipo_sconto_km');
1268+
1269+
// Gestione cambio tecnico
1270+
$id_tecnico = post('id_tecnico');
1271+
if (!empty($id_tecnico) && $id_tecnico != $sessione->idtecnico) {
1272+
$anagrafica = Anagrafica::find($id_tecnico);
1273+
$sessione->anagrafica()->associate($anagrafica);
1274+
1275+
// Aggiorna i prezzi in base al nuovo tecnico
1276+
$id_tipo = $sessione->idtipointervento;
1277+
$sessione->setTipo($id_tipo, true);
1278+
}
1279+
12681280
$sessione->save();
12691281

12701282
// Trigger aggiornamento intervento

modules/interventi/ajax_tecnici.php

Lines changed: 42 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020

2121
include_once __DIR__.'/../../core.php';
2222
use Models\Module;
23-
use Models\User;
2423

2524
$show_costi = true;
2625
// Limitazione delle azioni dei tecnici
@@ -69,21 +68,10 @@
6968
echo '
7069
<div class="table-responsive">
7170
<table class="table table-striped table-hover table-sm">
72-
<tr><th>';
73-
74-
if ($sessione['id_user']) {
75-
$user = User::where('idanagrafica', $sessione['idtecnico'])->orderByRaw('CASE WHEN idgruppo = 2 THEN -1 ELSE idgruppo END')->first();
76-
echo '
77-
<img class="attachment-img tip" src="'.$user->photo.'" title="'.$user->nome_completo.'">';
78-
} else {
79-
echo '
80-
<i class="fa fa-user-circle-o attachment-img tip" title="'.$sessione['ragione_sociale'].'"></i>';
81-
}
82-
83-
echo '
84-
'.$sessione['ragione_sociale'].' '.(($sessione['anagrafica_deleted_at']) ? '<small class="text-danger"><em>('.tr('Eliminato').')</em></small>' : '').'</th>
85-
<th width="15%">'.tr('Orario inizio').'</th>
86-
<th width="15%">'.tr('Orario fine').'</th>
71+
<tr><th width="16%">'.tr('Tecnico').'</th>
72+
<th width="12%">'.tr('Tipologia').'</th>
73+
<th width="12%">'.tr('Orario inizio').'</th>
74+
<th width="12%">'.tr('Orario fine').'</th>
8775
<th width="2%"> </th>
8876
<th width="8%">'.tr('Ore').'</th>
8977
<th width="8%">'.tr('Km').'</th>';
@@ -96,7 +84,7 @@
9684

9785
if (!$is_bloccato) {
9886
echo '
99-
<th width="100" class="text-center">&nbsp;</th>';
87+
<th width="10%" class="text-center">&nbsp;</th>';
10088
}
10189

10290
echo '
@@ -123,9 +111,12 @@
123111
$ore = $sessione['ore'];
124112
$km = $sessione['km'];
125113

126-
// Tipologia
114+
// Tecnico e Tipologia
127115
echo '
128-
<tr data-id="'.$sessione['id'].'">
116+
<tr data-id="'.$sessione['id'].'" data-idtecnico="'.$sessione['idtecnico'].'" data-idtipointervento="'.$sessione['idtipointervento'].'">
117+
<td>
118+
{[ "type": "select", "name": "tecnico_'.$sessione['id'].'", "value": "'.$sessione['idtecnico'].'", "ajax-source": "tecnici", "class": "tecnico-sessione", "disabled": "'.$block_edit.'" ]}
119+
</td>
129120
<td>
130121
'.$sessione['descrizione_tipo'].' '.(($sessione['tipo_deleted_at']) ? '<small class="text-danger"><em>('.tr('Eliminato').')</em></small>' : '');
131122

@@ -355,6 +346,17 @@ function calcolaConflittiTecnici() {
355346
data_inizio.data("DateTimePicker").date(e.date);
356347
}
357348
});
349+
350+
// Event handler per il cambio tecnico
351+
$(document).on("change", ".tecnico-sessione", function() {
352+
let riga = $(this).closest("tr");
353+
let id_sessione = riga.data("id");
354+
let id_tecnico = $(this).val();
355+
let id_tipo_intervento = riga.data("idtipointervento");
356+
357+
// Salva automaticamente con il nuovo tecnico
358+
aggiornaSessioneInline(id_sessione, id_tecnico);
359+
});
358360
});
359361
360362
/*
@@ -460,7 +462,7 @@ function caricaTecnici() {
460462
});
461463
}
462464
463-
function aggiornaSessioneInline(id) {
465+
function aggiornaSessioneInline(id, id_tecnico) {
464466
var id_sessione = id;
465467
var data_inizio = $("#data_inizio_" + id_sessione).val();
466468
var data_fine = $("#data_fine_" + id_sessione).val();
@@ -470,22 +472,29 @@ function aggiornaSessioneInline(id) {
470472
var scontokm_unitario = $("#scontokm_unitario_" + id_sessione).val();
471473
var tipo_sconto_km =$("[id^=tipo_scontokm_unitario_" + id_sessione + "]").val()
472474
475+
var data = {
476+
id_module: globals.id_module,
477+
id_record: globals.id_record,
478+
op: "update_inline_sessione",
479+
id_sessione: id_sessione,
480+
data_inizio: data_inizio,
481+
data_fine: data_fine,
482+
km: km,
483+
sconto_unitario: sconto_unitario,
484+
tipo_sconto: tipo_sconto,
485+
scontokm_unitario: scontokm_unitario,
486+
tipo_sconto_km: tipo_sconto_km,
487+
};
488+
489+
// Aggiungi id_tecnico se fornito
490+
if (id_tecnico !== undefined) {
491+
data.id_tecnico = id_tecnico;
492+
}
493+
473494
$.ajax({
474495
url: globals.rootdir + "/actions.php",
475496
type: "POST",
476-
data: {
477-
id_module: globals.id_module,
478-
id_record: globals.id_record,
479-
op: "update_inline_sessione",
480-
id_sessione: id_sessione,
481-
data_inizio: data_inizio,
482-
data_fine: data_fine,
483-
km: km,
484-
sconto_unitario: sconto_unitario,
485-
tipo_sconto: tipo_sconto,
486-
scontokm_unitario: scontokm_unitario,
487-
tipo_sconto_km: tipo_sconto_km,
488-
},
497+
data: data,
489498
success: function(response) {
490499
caricaTecnici();
491500
caricaCosti();

0 commit comments

Comments
 (0)