. */ include_once __DIR__.'/../../core.php'; use Models\User; use Models\Module; $show_costi = true; // Limitazione delle azioni dei tecnici if ($user['gruppo'] == 'Tecnici') { $show_costi = !empty($user['idanagrafica']) && setting('Mostra i prezzi al tecnico'); } // Stato dell'intervento $rss = $dbo->fetchArray('SELECT `is_completato` AS flag_completato FROM `in_statiintervento` INNER JOIN `in_interventi` ON `in_statiintervento`.`id` = `in_interventi`.`idstatointervento` WHERE `in_interventi`.`id`='.prepare($id_record).')'); $is_completato = $rss[0]['flag_completato']; // Sessioni dell'intervento $query = 'SELECT `in_interventi_tecnici`.*, (`in_interventi_tecnici`.`prezzo_ore_unitario` * `in_interventi_tecnici`.`ore` - `in_interventi_tecnici`.`sconto`) AS prezzo_ore_consuntivo, (`in_interventi_tecnici`.`prezzo_km_unitario` * `in_interventi_tecnici`.`km` - `in_interventi_tecnici`.`scontokm`) AS prezzo_km_consuntivo, (`in_interventi_tecnici`.`prezzo_ore_unitario_tecnico` * `in_interventi_tecnici`.`ore`) AS prezzo_ore_consuntivo, (`in_interventi_tecnici`.`prezzo_km_unitario_tecnico` * `in_interventi_tecnici`.`km`) AS prezzo_km_consuntivo, `an_anagrafiche`.`ragione_sociale`, `an_anagrafiche`.`deleted_at` AS anagrafica_deleted_at, `in_tipiintervento`.`deleted_at` AS tipo_deleted_at, `in_tipiintervento_lang`.`name` AS descrizione_tipo, `in_interventi_tecnici`.`tipo_scontokm` AS tipo_sconto_km, `user`.`id` AS id_user FROM `in_interventi_tecnici` INNER JOIN `an_anagrafiche` ON `in_interventi_tecnici`.`idtecnico` = `an_anagrafiche`.`idanagrafica` LEFT JOIN (SELECT `zz_users`.`idanagrafica`, `zz_users`.`id` FROM `zz_users` GROUP BY `zz_users`.`idanagrafica`) AS user ON `user`.`idanagrafica` = `an_anagrafiche`.`idanagrafica` INNER JOIN `in_tipiintervento` ON `in_interventi_tecnici`.`idtipointervento` = `in_tipiintervento`.`id` LEFT JOIN `in_tipiintervento_lang` ON (`in_tipiintervento`.`id` = `in_tipiintervento_lang`.`id_record` AND `in_tipiintervento_lang`.`id_lang` = '.prepare(setting('Lingua')).') WHERE `in_interventi_tecnici`.`idintervento`='.prepare($id_record).' ORDER BY `ragione_sociale` ASC, `in_interventi_tecnici`.`orario_inizio` ASC, `in_interventi_tecnici`.`id` ASC'; $sessioni = $dbo->fetchArray($query); $prev_tecnico = ''; if (!empty($sessioni)) { foreach ($sessioni as $key => $sessione) { // Intestazione tecnico if ($prev_tecnico != $sessione['ragione_sociale']) { $prev_tecnico = $sessione['ragione_sociale']; echo '
'; if ($show_costi) { echo ' '; } if (!$is_completato) { echo ' '; } echo ' '; } // Lettura costi unitari salvati al momento dell'intervento $sconto = $sessione['sconto']; $scontokm = $sessione['scontokm']; $costo_ore_unitario = $sessione['prezzo_ore_unitario']; $costo_km_unitario = $sessione['prezzo_km_unitario']; $costo_dirittochiamata = $sessione['prezzo_dirittochiamata']; $costo_ore_unitario_tecnico = $sessione['prezzo_ore_unitario_tecnico']; $costo_km_unitario_tecnico = $sessione['prezzo_km_unitario_tecnico']; $costo_dirittochiamata_tecnico = $sessione['prezzo_dirittochiamata_tecnico']; $costo_km_consuntivo_tecnico = $sessione['prezzo_km_consuntivo_tecnico']; $costo_ore_consuntivo_tecnico = $sessione['prezzo_ore_consuntivo_tecnico']; $costo_km_consuntivo = $sessione['prezzo_km_consuntivo']; $costo_ore_consuntivo = $sessione['prezzo_ore_consuntivo']; $ore = $sessione['ore']; $km = $sessione['km']; // Tipologia echo ' '; // Orario di inizio echo ' '; // Orario di fine echo ' '; // ORE echo ' '; // KM echo ' '; // Sconto ore if ($show_costi) { $tipo_sconto = (setting('Tipo di sconto predefinito') == '%' ? 'PRC' : 'UNT'); echo ' '; } // Sconto km if ($show_costi) { echo ' '; } // Pulsante per la sessione if (!$is_completato) { echo ' '; } echo ' '; // Intestazione tecnico if (!isset($sessioni[$key + 1]['ragione_sociale']) || $sessione['ragione_sociale'] != $sessioni[$key + 1]['ragione_sociale']) { echo '
'; if ($sessione['id_user']) { $user = User::where('idanagrafica', $sessione['idtecnico'])->orderByRaw('CASE WHEN idgruppo = 2 THEN -1 ELSE idgruppo END')->first(); echo ' '; } else { echo ' '; } echo ' '.$sessione['ragione_sociale'].' '.(($sessione['anagrafica_deleted_at']) ? '('.tr('Eliminato').')' : '').' '.tr('Orario inizio').' '.tr('Orario fine').' '.tr('Ore').' '.tr('Km').''.tr('Sconto ore').' '.tr('Sconto km').' 
'.$sessione['descrizione_tipo'].' '.(($sessione['tipo_deleted_at']) ? '('.tr('Eliminato').')' : '').' {[ "type": "timestamp", "name": "data_inizio_'.$sessione['id'].'", "required": 1, "value": "'.$sessione['orario_inizio'].'", "disabled": "'.$block_edit.'" ]} {[ "type": "timestamp", "name": "data_fine_'.$sessione['id'].'", "required": 1, "value": "'.$sessione['orario_fine'].'", "disabled": "'.$block_edit.'" ]} '.((Carbon\Carbon::createFromFormat('Y-m-d H:i:s', $sessione['orario_inizio'])->eq(Carbon\Carbon::createFromFormat('Y-m-d H:i:s', $sessione['orario_fine'])) || Carbon\Carbon::createFromFormat('Y-m-d H:i:s', $sessione['orario_inizio'])->gt(Carbon\Carbon::createFromFormat('Y-m-d H:i:s', $sessione['orario_fine']))) ? '' : '').' {[ "type": "number", "name": "ore_'.$sessione['id'].'", "required": 1, "value": "'.numberFormat($ore, 'qta').'", "disabled": "1" ]}
'.tr('Costo').': '.Translator::numberToLocale($costo_ore_consuntivo_tecnico)." ".Translator::numberToLocale($costo_ore_unitario_tecnico).'x'.Translator::numberToLocale($ore).'
+'.Translator::numberToLocale($costo_dirittochiamata_tecnico).'
'.tr('Addebito').': '.Translator::numberToLocale($costo_ore_consuntivo).' '.Translator::numberToLocale($costo_ore_unitario).'x'.Translator::numberToLocale($ore).'
+'.Translator::numberToLocale($costo_dirittochiamata).'
'.tr('Scontato').': '.Translator::numberToLocale($costo_ore_consuntivo - $sconto).'
{[ "type": "number", "name": "sessione_km_'.$sessione['id'].'", "required": 1, "value": "'.numberFormat($sessione['km'], 'qta').'", "onchange": "aggiornaSessioneInline($(this).closest(\'tr\').data(\'id\'))", "disabled": "'.$block_edit.'" ]}
'.tr('Costo').': '.Translator::numberToLocale($costo_km_consuntivo_tecnico).' '.Translator::numberToLocale($costo_km_unitario_tecnico).'x'.Translator::numberToLocale($km).'
'.tr('Addebito').': '.Translator::numberToLocale($costo_km_consuntivo).' '.Translator::numberToLocale($costo_km_unitario).'x'.Translator::numberToLocale($km).'
'.tr('Scontato').': '.Translator::numberToLocale($costo_km_consuntivo - $scontokm).'
{[ "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.'" ]} {[ "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.'" ]}
'; } } } else { echo '
'.tr('Nessun tecnico assegnato').'.
'; } echo '
'; if (!$is_completato) { echo '
{[ "type": "select", "label": "'.tr('Tecnico').'", "name": "nuovo_tecnico", "placeholder": "'.tr('Seleziona un tecnico').'", "ajax-source": "tecnici", "icon-after": "add|'.(new Module())->getByName('Anagrafiche')->id_record.'|tipoanagrafica=Tecnico&readonly_tipo=1" ]}
'; } echo ' ';