diff --git a/modules/interventi/actions.php b/modules/interventi/actions.php index 9c1e7fc97..32948e3b1 100644 --- a/modules/interventi/actions.php +++ b/modules/interventi/actions.php @@ -19,6 +19,7 @@ include_once __DIR__.'/../../core.php'; +use Carbon\CarbonPeriod; use Modules\Anagrafiche\Anagrafica; use Modules\Articoli\Articolo as ArticoloOriginale; use Modules\Emails\Mail; @@ -771,6 +772,34 @@ switch (post('op')) { add_tecnico($id_record, $id_tecnico, $inizio, $fine, $idcontratto); break; + // OPERAZIONI PER AGGIUNTA SESSIONi DI LAVORO MULTIPLE + case 'add_sessioni': + $idcontratto = $intervento['id_contratto']; + $orario_inizio = post('orario_inizio'); + $orario_fine = post('orario_fine'); + $data_inizio = post('data_inizio'); + $data_fine = post('data_fine'); + $giorni = (array)post('giorni'); + $id_tecnici = (array)post('id_tecnici'); + + $period = CarbonPeriod::create($data_inizio, $data_fine); + + // Iterate over the period + foreach ($period as $date) { + $data = $date->format('Y-m-d'); + $giorno = $date->locale('IT')->dayName; + if (in_array($giorno, $giorni)) { + $inizio = $data.' '.$orario_inizio; + $fine = $data.' '.$orario_fine; + + foreach ($id_tecnici as $id_tecnico) { + add_tecnico($id_record, $id_tecnico, $inizio, $fine, $idcontratto); + } + } + } + + break; + // RIMOZIONE SESSIONE DI LAVORO case 'delete_sessione': $id_sessione = post('id_sessione'); diff --git a/modules/interventi/ajax_tecnici.php b/modules/interventi/ajax_tecnici.php index aa8f19823..6c313adb9 100755 --- a/modules/interventi/ajax_tecnici.php +++ b/modules/interventi/ajax_tecnici.php @@ -265,7 +265,14 @@ if (!$is_completato) { echo '
-
+
+ + +
+ +
{[ "type": "select", "label": "'.tr('Tecnico').'", "name": "nuovo_tecnico", "placeholder": "'.tr('Seleziona un tecnico').'", "ajax-source": "tecnici", "icon-after": "add|'.Modules::get('Anagrafiche')['id'].'|tipoanagrafica=Tecnico&readonly_tipo=1" ]}
@@ -358,6 +365,21 @@ function add_tecnici(id_tecnico) { }); } +/* +* Aggiunge sessioni massivamente +*/ +async function add_sessioni(button) { + // Salvataggio via AJAX + await salvaForm("#edit-form", {}, button); + + // Chiusura tooltip + if ($(button).hasClass("tooltipstered")) + $(button).tooltipster("close"); + + // Apertura modal + openModal("'.tr('Aggiungi sessioni').'", "'.$module->fileurl('modals/add_sessioni.php').'?id_module=" + globals.id_module + "&id_record=" + globals.id_record); +} + /* * Rimuove la sessione di lavoro dall\'intervento. */ diff --git a/modules/interventi/modals/add_sessioni.php b/modules/interventi/modals/add_sessioni.php new file mode 100644 index 000000000..f41bcdc27 --- /dev/null +++ b/modules/interventi/modals/add_sessioni.php @@ -0,0 +1,110 @@ +. + */ + +include_once __DIR__.'/../../../core.php'; +include_once __DIR__.'/../../../../core.php'; + +$sessione = $dbo->fetchOne('SELECT in_interventi_tecnici.*, an_anagrafiche.ragione_sociale, an_anagrafiche.deleted_at, in_interventi_tecnici.tipo_scontokm AS tipo_sconto_km, in_interventi_tecnici.prezzo_ore_unitario, in_interventi_tecnici.prezzo_km_unitario, in_interventi_tecnici.prezzo_dirittochiamata FROM in_interventi_tecnici INNER JOIN an_anagrafiche ON in_interventi_tecnici.idtecnico = an_anagrafiche.idanagrafica WHERE in_interventi_tecnici.id = '.prepare(get('id_sessione'))); + +$op = 'add_sessioni'; +$button = ' '.tr('Aggiungi'); +$orario_inizio = date('H').':00:00'; +$orario_fine = date('H').':00:00'; + +echo ' +
+ + + +
'; +// Orari +echo ' +
+ {[ "type": "time", "label": "'.tr('Ora inizio').'", "name": "orario_inizio", "required": 1, "value": "'.$orario_inizio.'" ]} +
+ +
+ {[ "type": "time", "label": "'.tr('Ora fine').'", "name": "orario_fine", "required": 1, "value": "'.$orario_fine.'" ]} +
'; + +// Date +echo ' +
+ {[ "type": "date", "label": "'.tr('Data inizio').'", "name": "data_inizio", "required": 1, "value": "-now-" ]} +
+ +
+ {[ "type": "date", "label": "'.tr('Data fine').'", "name": "data_fine", "required": 1, "value": "-now-" ]} +
+
'; + +// Tecnici +echo ' +
+
+ {[ "type": "select", "multiple":"1", "label": "'.tr('Giorni').'", "name": "giorni[]", "required": 0, "value": "'.strtolower(setting('Giorni lavorativi')).'", "values": "list=\"lunedì\":\"'.tr('Lunedì').'\", \"martedì\":\"'.tr('Martedì').'\", \"mercoledì\":\"'.tr('Mercoledì').'\", \"giovedì\":\"'.tr('Giovedì').'\", \"venerdì\":\"'.tr('Venerdì').'\", \"sabato\":\"'.tr('Sabato').'\", \"domenica\":\"'.tr('Domenica').'\"" ]} +
+ +
+ {[ "type": "select", "multiple": "1", "label": "'.tr('Tecnici').'", "name": "id_tecnici[]", "required": 1, "ajax-source": "tecnici" ]} +
+
'; + +echo ' + + +
+
+ +
+
+
'; + +echo ' +'; + +echo ' +';