<?php include_once __DIR__.'/../../core.php'; include_once $docroot.'/modules/interventi/modutil.php'; switch (get('op')) { // OPERAZIONI PER AGGIUNTA NUOVA SESSIONE DI LAVORO case 'add_sessione': $idtecnico = get('idtecnico'); // Verifico se l'intervento รจ collegato ad un contratto $rs = $dbo->fetchArray('SELECT idcontratto FROM co_righe_contratti WHERE idintervento='.prepare($id_record)); $idcontratto = $rs[0]['idcontratto']; $ore = 1; $inizio = date('Y-m-d H:\0\0'); $fine = date_modify(date_create(date('Y-m-d H:\0\0')), '+'.$ore.' hours')->format('Y-m-d H:\0\0'); add_tecnico($id_record, $idtecnico, $inizio, $fine, $idcontratto); break; // RIMOZIONE SESSIONE DI LAVORO case 'del_sessione': $dbo->query('DELETE FROM in_interventi_tecnici WHERE id='.prepare(get('id'))); break; } $show_costi = true; // Limitazione delle azioni dei tecnici if ($user['gruppo'] == 'Tecnici') { $show_costi = !empty($user['idanagrafica']) && get_var('Mostra i prezzi al tecnico'); } // RECUPERO IL TIPO DI INTERVENTO $rss = $dbo->fetchArray('SELECT idtipointervento FROM in_interventi WHERE id='.prepare($id_record)); $idtipointervento = $rs[0]['idtipointervento']; $query = 'SELECT * FROM an_anagrafiche JOIN in_interventi_tecnici ON in_interventi_tecnici.idtecnico = an_anagrafiche.idanagrafica WHERE deleted=0 AND idintervento='.prepare($id_record)." AND idanagrafica IN (SELECT idanagrafica FROM an_tipianagrafiche_anagrafiche WHERE idtipoanagrafica = (SELECT idtipoanagrafica FROM an_tipianagrafiche WHERE descrizione = 'Tecnico')) ORDER BY ragione_sociale ASC, in_interventi_tecnici.orario_inizio ASC"; $rs2 = $dbo->fetchArray($query); $prev_tecnico = ''; if (!empty($rs2)) { foreach ($rs2 as $key => $r) { $idtecnico = $r['idanagrafica']; // Intestazione tecnico if ($prev_tecnico != $r['ragione_sociale']) { echo ' <div class="table-responsive"> <table class="table table-striped table-hover table-condensed '.$class_tecnico.'"> <tr> <th width="200"><i class="fa fa-user"></i> '.$r['ragione_sociale'].'</th> <th width="300">'._('Orario').'</th> <th width="190">'._('Ore').'</th> <th width="190">'._('Km').'</th> <th width="100">'._('Sconto ore').'</th> <th width="100">'._('Sconto km').'</th> <th width="40"></th> </tr>'; } $id = $r['id']; // Lettura costi unitari salvati al momento dell'intervento $sconto_unitario = $r['sconto_unitario']; $tipo_sconto = $r['tipo_sconto']; $scontokm_unitario = $r['scontokm_unitario']; $tipo_scontokm = $r['tipo_scontokm']; $sconto = $r['sconto']; $scontokm = $r['scontokm']; $costo_ore_unitario = $r['prezzo_ore_unitario']; $costo_km_unitario = $r['prezzo_km_unitario']; $costo_dirittochiamata = $r['prezzo_dirittochiamata']; $costo_ore_unitario_tecnico = $r['prezzo_ore_unitario_tecnico']; $costo_km_unitario_tecnico = $r['prezzo_km_unitario_tecnico']; $costo_dirittochiamata_tecnico = $r['prezzo_dirittochiamata_tecnico']; $costo_km_consuntivo_tecnico = $r['prezzo_km_consuntivo_tecnico']; $costo_ore_consuntivo_tecnico = $r['prezzo_ore_consuntivo_tecnico']; $costo_km_consuntivo = $r['prezzo_km_consuntivo']; $costo_ore_consuntivo = $r['prezzo_ore_consuntivo']; $orario_inizio = !empty($r['orario_inizio']) ? Translator::timestampToLocale($r['orario_inizio']) : $r['orario_inizio']; $orario_fine = !empty($r['orario_fine']) ? Translator::timestampToLocale($r['orario_fine']) : $r['orario_fine']; $orario = $orario_inizio.' - '.$orario_fine; $km = $r['km']; $ore = $r['ore']; // Costi unitari echo ' <input type="hidden" name="idtecnico['.$id.']" value="'.$idtecnico.'" /> <input type="hidden" name="id_[]" value="'.$id.'" /> <input type="hidden" name="prezzo_km_unitario['.$id.']" value="'.$costo_km_unitario.'" /> <input type="hidden" name="prezzo_dirittochiamata['.$id.']" value="'.$costo_dirittochiamata.'" /> <input type="hidden" name="prezzo_ore_unitario_tecnico['.$id.']" value="'.$costo_ore_unitario_tecnico.'" /> <input type="hidden" name="prezzo_km_unitario_tecnico['.$id.']" value="'.$costo_km_unitario_tecnico.'" /> <input type="hidden" name="prezzo_dirittochiamata_tecnico['.$id.']" value="'.$costo_dirittochiamata_tecnico.'" />'; echo ' <tr class="'.$class_tecnico.'"> <td class="tecn_'.$r['idtecnico'].'">'; if ($rs[0]['stato'] != 'Fatturato') { // Elenco tipologie di interventi echo ' {[ "type": "select", "name": "idtipointerventot['.$id.']", "value": "'.$r['idtipointervento'].'", "values": "query=SELECT idtipointervento AS id, descrizione, IFNULL((SELECT costo_ore FROM in_tariffe WHERE idtipointervento=in_tipiintervento.idtipointervento AND idtecnico='.prepare($r['idtecnico']).'), 0) AS costo_orario FROM in_tipiintervento ORDER BY descrizione" ]}'; } echo ' </td>'; // Orario echo ' <td>'; if ($rs[0]['stato'] == 'Fatturato') { echo ' <span>'.$ora_dal1.'</span> <input type="hidden" id="orario_'.$id.'" name="orario['.$id.']" style="'.$display.'" value="'.$orario.'">'; } else { echo ' <input class="form-control text-center datetimepicker" type="text" id="orario_'.$id.'" name="orario['.$id.']" value="'.$orario.'">'; } echo ' </td>'; // ORE echo ' <td style="border-right:1px solid #aaa;"> {[ "type": "number", "name": "ore['.$id.']", "value": "'.$ore.'", "disabled": 1 ]} <div class="extra hide"> <table class="table table-condensed table-bordered"> <tr><th class="text-danger">'._('Costo').':</th><td align="right">'.Translator::numberToLocale($costo_ore_consuntivo_tecnico)."<small class='help-block'>".Translator::numberToLocale($costo_ore_unitario_tecnico).'x'.Translator::numberToLocale($ore).'<br>+'.Translator::numberToLocale($costo_dirittochiamata_tecnico).'</small></td></tr> <tr><th>'._('Addebito').':</th><td align="right">'.Translator::numberToLocale($costo_ore_consuntivo).'<small class="help-block">'.Translator::numberToLocale($costo_ore_unitario).'x'.Translator::numberToLocale($ore).'<br>+'.Translator::numberToLocale($costo_dirittochiamata).'</small></td></tr> <tr><th>'._('Scontato').':</th><td align="right">'.Translator::numberToLocale($costo_ore_consuntivo - $sconto).'</td></tr> </table> </div> </td>'; // KM echo ' <td style="border-right:1px solid #aaa;"> {[ "type": "number", "name": "km['.$id.']", "value": "'.$km.'" ]} <div class="extra hide"> <table class="table table-condensed table-bordered"> <tr> <th class="text-danger">'._('Costo').':</th> <td align="right"> '.Translator::numberToLocale($costo_km_consuntivo_tecnico).' <small class="help-block"> '.Translator::numberToLocale($costo_km_unitario_tecnico).'x'.Translator::numberToLocale($km).' </small><br> </td> </tr> <tr> <th>'._('Addebito').':</th> <td align="right"> '.Translator::numberToLocale($costo_km_consuntivo).' <small class="help-block"> '.Translator::numberToLocale($costo_km_unitario).'x'.Translator::numberToLocale($km).' </small><br> </td> </tr> <tr> <th>'._('Scontato').':</th> <td align="right">'.Translator::numberToLocale($costo_km_consuntivo - $scontokm).'</td> </tr> </table> </div> </td>'; // Sconto ore echo ' <td style="border-right:1px solid #aaa;">'; if ($user['idanagrafica'] == 0 || $show_costi) { echo ' {[ "type": "number", "name": "sconto['.$id.']", "value": "'.$sconto_unitario.'", "icon-after": "choice|untprc|'.$tipo_sconto.'" ]}'; } else { echo ' <input type="hidden" name="sconto['.$id.']" value="'.Translator::numberToLocale($sconto_unitario).'" /> <input type="hidden" name="sconto['.$id.']" value="'.Translator::numberToLocale($tipo_sconto).'" />'; } echo ' </td>'; // Sconto km echo ' <td style="border-right:1px solid #aaa;">'; if ($user['idanagrafica'] == 0 || $show_costi) { echo ' {[ "type": "number", "name": "scontokm['.$id.']", "value": "'.$scontokm_unitario.'", "icon-after": "choice|untprc|'.$tipo_scontokm.'" ]}'; } else { echo ' <input type="hidden" name="scontokm['.$id.']" value="'.Translator::numberToLocale($scontokm_unitario).'" /> <input type="hidden" name="tipo_scontokm['.$id.']" value="'.Translator::numberToLocale($tipo_scontokm).'" />'; } echo ' <input type="hidden" name="prezzo_ore_consuntivo['.$id.']" value="'.Translator::numberToLocale($costo_ore_consuntivo).'" /> <input type="hidden" name="prezzo_km_consuntivo['.$id.']" value="'.Translator::numberToLocale($costo_km_consuntivo).'" /> <input type="hidden" name="prezzo_ore_consuntivotecnico['.$id.']" value="'.Translator::numberToLocale($costo_ore_consuntivo_tecnico).'" /> <input type="hidden" name="prezzo_km_consuntivotecnico['.$id.']" value="'.Translator::numberToLocale($costo_km_consuntivo_tecnico).'" /> </td>'; // Pulsante aggiunta nuova sessione echo ' <td> <a class="btn btn-danger" id="delbtn_'.$id.'" onclick="elimina_sessione(\''.$id.'\', \''.$id_record.'\', \''.$idzona.'\');" title="Elimina riga" class="only_rw"><i class="fa fa-trash"></i></a> </td> </tr>'; // Intestazione tecnico if (!isset($rs2[$key + 1]['ragione_sociale']) || $r['ragione_sociale'] != $rs2[$key + 1]['ragione_sociale']) { echo ' </table> </div>'; } } } else { echo '<p>'._('Nessun tecnico presente').'.</p>'; } echo ' <!-- AGGIUNTA TECNICO --> <div class="row"> <div class="col-md-offset-6 col-md-3"> {[ "type": "select", "label": "'._('Aggiungi tecnico').'", "name": "nuovotecnico", "ajax-source": "tecnici" ]} </div> <div class="col-md-3"> <br> <button type="button" class="btn btn-primary btn-block" onclick="if($(\'#nuovotecnico\').val()){ add_tecnici( \''.$id_record.'\', $(\'#nuovotecnico\').val()); }else{ alert(\'Seleziona un tecnico!\'); }"> <i class="fa fa-plus"></i> '._('Aggiungi tecnico').' </button> </div> </div>'; ?> <script type="text/javascript" charset="utf-8"> $(document).ready( function(){ $('.datetimepicker').daterangepicker({ timePicker: true, timePickerIncrement: 5, locale: { format: globals.timestampFormat, customRangeLabel: globals.translations.custom, applyLabel: globals.translations.apply, cancelLabel: globals.translations.cancel, fromLabel: globals.translations.from, toLabel: globals.translations.to, }, timePicker24Hour: true, applyClass: 'btn btn-success btn-sm', cancelClass: 'btn btn-danger btn-sm', } ).on('change', function(){ id = $(this).attr('id').split('_'); idriga = id[1]; orario = $('#orario_'+idriga).val(); o = orario.split(' - '); start = o[0]; end = o[1]; calcola_ore(idriga, start, end); }); }); </script> <script type="text/javascript" src="<?php echo $rootdir ?>/lib/init.js"></script>