. */ use Models\Module; use Models\Plugin; use Modules\Anagrafiche\Anagrafica; use Modules\Anagrafiche\Sede; include_once __DIR__.'/../../core.php'; $block_edit = $record['flag_completato']; $id_modulo_anagrafiche = Module::where('name', 'Anagrafiche')->first()->id; $id_segment = $record['id_segment']; // Verifica aggiuntive sulla sequenzialità dei numeri $numero_previsto = verifica_numero_intervento($intervento, $id_segment); if (!empty($numero_previsto) && intval(setting('Verifica numero intervento'))) { echo '
'.tr("E' assente una attività con numero _NUM_ in data precedente o corrispondente al _DATE_: potrebbero esserci alcuni errori di continuità con la numerazione delle attività", [ '_DATE_' => dateFormat($intervento->data_richiesta), '_NUM_' => '"'.$numero_previsto.'"', ]).'.
'; } $tags = $database->fetchArray('SELECT `id_tag` FROM `in_interventi_tags` WHERE id_intervento = '.prepare($id_record)); $tags = $tags ? array_column($tags, 'id_tag') : []; echo '

'.tr('Dati cliente').'

'.Modules::link('Anagrafiche', $record['idanagrafica'], null, null, 'class="pull-right"').' {[ "type": "select", "label": "'.tr('Cliente').'", "name": "idanagrafica", "required": 1, "value": "$idanagrafica$", "ajax-source": "clienti", "readonly": "'.($user['gruppo'] == 'Clienti' ? '1' : $record['flag_completato']).'" ]}
{[ "type": "select", "label": "'.tr('Zona').'", "name": "idzona", "values": "query=SELECT id, CONCAT_WS( \' - \', nome, descrizione) AS descrizione FROM an_zone ORDER BY nome", "value": "$idzona$" , "placeholder": "'.tr('Nessuna zona').'", "extra": "readonly", "help":"'.tr('La zona viene definita automaticamente in base al cliente selezionato.').'" ]}
'; if (!empty($record['idclientefinale'])) { echo ' '.Modules::link('Anagrafiche', $record['idclientefinale'], null, null, 'class="pull-right"'); } echo ' {[ "type": "select", "label": "'.tr('Per conto di').'", "name": "idclientefinale", "value": "$idclientefinale$", "ajax-source": "clienti", "readonly": "'.$record['flag_completato'].'" ]}
{[ "type": "select", "label": "'.tr('Referente').'", "name": "idreferente", "value": "$idreferente$", "ajax-source": "referenti", "select-options": '.json_encode(['idanagrafica' => $record['idanagrafica'], 'idclientefinale' => $record['idclientefinale'], 'idsede_destinazione' => $record['idsede_destinazione']]).', "readonly": "'.intval($record['flag_completato']).'", "icon-after": "add|'.$id_modulo_anagrafiche.'|id_plugin='.Plugin::where('name', 'Referenti')->first()->id.'&id_parent='.$record['idanagrafica'].'" ]}
'; if ($record['idagente'] != 0) { echo Modules::link('Anagrafiche', $record['idagente'], null, null, 'class="pull-right"'); } echo '
{[ "type": "select", "label": "'.tr('Agente').'", "name": "idagente", "ajax-source": "agenti", "select-options": {"idanagrafica": '.$record['idanagrafica'].'}, "value": "$idagente$" ]}
'; echo !empty($record['idpagamento']) ? Modules::link('Pagamenti', $record['idpagamento'], null, null, 'class="pull-right"') : ''; echo ' {[ "type": "select", "label": "'.tr('Pagamento').'", "name": "idpagamento", "required": 0, "ajax-source": "pagamenti", "value": "$idpagamento$" ]}
'; if (!empty($record['idpreventivo'])) { echo ' '.Modules::link('Preventivi', $record['idpreventivo'], null, null, 'class="pull-right"'); } echo ' {[ "type": "select", "label": "'.tr('Preventivo').'", "name": "idpreventivo", "value": "'.$record['id_preventivo'].'", "ajax-source": "preventivi", "select-options": '.json_encode(['idanagrafica' => $record['idanagrafica']]).', "readonly": "'.$record['flag_completato'].'", "icon-after": "add|'.Module::where('name', 'Preventivi')->first()->id.'|pianificabile=1&idanagrafica='.$record['idanagrafica'].'" ]}
'; $idpreventivo_riga = $dbo->fetchOne('SELECT id FROM co_promemoria WHERE idintervento='.prepare($id_record))['id']; if (!empty($record['idcontratto'])) { echo ' '.Modules::link('Contratti', $record['idcontratto'], null, null, 'class="pull-right"'); } echo ' {[ "type": "select", "label": "'.tr('Contratto').'", "name": "idcontratto", "value": "'.$record['id_contratto'].'", "ajax-source": "contratti", "select-options": '.json_encode(['idanagrafica' => $record['idanagrafica']]).', "readonly": "'.$record['flag_completato'].'", "icon-after": "add|'.Module::where('name', 'Contratti')->first()->id.'|pianificabile=1&idanagrafica='.$record['idanagrafica'].'" ]}
'; $idcontratto_riga = $dbo->fetchOne('SELECT id FROM co_promemoria WHERE idintervento='.prepare($id_record))['id']; if (!empty($record['idordine'])) { echo ' '.Modules::link('Ordini cliente', $record['idordine'], null, null, 'class="pull-right"'); } echo ' {[ "type": "select", "label": "'.tr('Ordine').'", "name": "idordine", "value": "'.$record['id_ordine'].'", "ajax-source": "ordini-cliente", "select-options": '.json_encode(['idanagrafica' => $record['idanagrafica']]).', "readonly": "'.$record['flag_completato'].'" ]}
'; $anagrafica_cliente = $intervento->anagrafica; $sede_cliente = $anagrafica_cliente->sedeLegale; if (!empty($intervento->idsede_destinazione)) { $sede_cliente = Sede::find($intervento->idsede_destinazione); } $anagrafica_azienda = Anagrafica::find(setting('Azienda predefinita')); $sede_azienda = $anagrafica_azienda->sedeLegale; ?>

{[ "type": "text", "label": "", "name": "codice", "value": "$codice$", "readonly": "" ]}
{[ "type": "timestamp", "label": "", "name": "data_richiesta", "required": 1, "value": "$data_richiesta$", "readonly": "" ]}
{[ "type": "timestamp", "label": "", "name": "data_scadenza", "required": 0, "value": "$data_scadenza$", "readonly": "" ]}
{[ "type": "select", "label": "", "name": "idtipointervento", "required": 1, "ajax-source": "tipiintervento", "value": "$idtipointervento$", "readonly": "" ]}
{[ "type": "select", "label": "", "name": "idstatointervento", "required": 1, "values": "query=SELECT `in_statiintervento`.`id`, `title` as descrizione, `colore` AS _bgcolor_ FROM `in_statiintervento` LEFT JOIN `in_statiintervento_lang` ON (`in_statiintervento`.`id` = `in_statiintervento_lang`.`id_record` AND `in_statiintervento_lang`.`id_lang` =id); ?>) WHERE `deleted_at` IS NULL ORDER BY `title`", "value": "$idstatointervento$", "class": "unblockable" ]}
fetchArray('SELECT id_tecnico FROM in_interventi_tecnici_assegnati WHERE id_intervento = '.prepare($id_record)); $tecnici_assegnati = array_column($tecnici_assegnati, 'id_tecnico'); echo '
{[ "type": "select", "label": "'.tr('Tecnici assegnati').'", "multiple": "1", "name": "tecnici_assegnati[]", "ajax-source": "tecnici", "value": "'.implode(',', $tecnici_assegnati).'", "icon-after": "add|'.$id_modulo_anagrafiche.'|tipoanagrafica=Tecnico&readonly_tipo=1" ]}
'; // Conteggio numero articoli intervento per eventuale blocco della sede di partenza $articoli = $intervento->articoli; echo '
{[ "type": "select", "label": "'.tr('Partenza merce').'", "name": "idsede_partenza", "ajax-source": "sedi_azienda", "value": "$idsede_partenza$", "readonly": "'.(($record['flag_completato'] || !$articoli->isEmpty()) ? 1 : 0).'" ]}
{[ "type": "select", "label": "'.tr('Sede destinazione').'", "name": "idsede_destinazione","value": "$idsede_destinazione$", "ajax-source": "sedi", "select-options": '.json_encode(['idanagrafica' => $record['idanagrafica']]).', "placeholder": "'.tr('Sede legale').'", "readonly": "'.$record['flag_completato'].'" ]}
{[ "type": "select", "label": "'.tr('Tags').'", "multiple": "1", "name": "tags[]", "values": "query=SELECT `id`, `name` as descrizione FROM `in_tags` ORDER BY `name`", "value": "'.implode(',', $tags).'", "icon-after": "add|'.(Module::where('name', 'Tags')->first()->id).'|" ]}
'; echo input([ 'type' => 'ckeditor', 'label' => tr('Richiesta'), 'name' => 'richiesta', 'required' => 1, 'value' => $record['richiesta'], 'extra' => 'style=\'max-height:40px;\'', ]); echo '
'; echo input([ 'type' => 'ckeditor', 'label' => tr('Descrizione'), 'name' => 'descrizione', 'value' => $record['descrizione'], 'extra' => 'style=\'max-height:40px;\'', ]); echo '
'; // Nascondo le note interne ai clienti if ($user->gruppo != 'Clienti') { echo '
{[ "type": "textarea", "label": "'.tr('Note interne').'", "name": "informazioniaggiuntive", "class": "autosize", "value": "$informazioniaggiuntive$", "extra": "rows=\'5\'" ]}
'; } // Visualizzo solo se l'anagrafica cliente è un ente pubblico if (!empty($record['idcontratto'])) { $contratto = $dbo->fetchOne('SELECT num_item,codice_cig,codice_cup,id_documento_fe FROM co_contratti WHERE id = '.prepare($record['idcontratto'])); $record['id_documento_fe'] = $contratto['id_documento_fe']; $record['codice_cup'] = $contratto['codice_cup']; $record['codice_cig'] = $contratto['codice_cig']; $record['num_item'] = $contratto['num_item']; } ?>

{[ "type": "", "label": "", "name": "id_documento_fe", "required": 0, "help": "Obbligatorio per valorizzare CIG/CUP. È possible inserire:
  • N. determina
  • RDO
  • Ordine MEPA
'); ?>", "value": "", "maxlength": 20, "readonly": "", "extra": "" ]}
{[ "type": "", "label": "", "name": "num_item", "required": 0, "value": "", "maxlength": 15, "readonly": "", "extra": "" ]}
{[ "type": "", "label": "", "name": "codice_cig", "required": 0, "value": "", "maxlength": 15, "readonly": "", "extra": "" ]}
{[ "type": "", "label": "", "name": "codice_cup", "required": 0, "value": "", "maxlength": 15, "readonly": "", "extra": "" ]}


"; } ?>

0)'; $preventivi = $dbo->fetchArray($prev_query)[0]['tot']; // Lettura contratti accettati, in attesa di conferma o in lavorazione $contr_query = 'SELECT COUNT(*) AS tot FROM `co_contratti` WHERE `idanagrafica`='.prepare($record['idanagrafica']).' AND `idstato` IN (SELECT `id` FROM `co_staticontratti` WHERE `is_fatturabile` = 1) AND `co_contratti`.`id` IN (SELECT `idcontratto` FROM `co_righe_contratti` WHERE `co_righe_contratti`.`idcontratto` = `co_contratti`.`id` AND (`qta` - `qta_evasa`) > 0)'; $contratti = $dbo->fetchArray($contr_query)[0]['tot']; // Lettura ddt (entrata o uscita) $ddt_query = 'SELECT COUNT(*) AS tot FROM `dt_ddt` LEFT JOIN `dt_causalet` ON `dt_causalet`.`id` = `dt_ddt`.`idcausalet` INNER JOIN `dt_statiddt` ON `dt_statiddt`.`id` = `dt_ddt`.`idstatoddt` LEFT JOIN `dt_statiddt_lang` ON (`dt_statiddt_lang`.`id_record` = `dt_statiddt`.`id` AND `dt_statiddt_lang`.`id_lang` = '.prepare(Models\Locale::getDefault()->id).') INNER JOIN `dt_tipiddt` ON `dt_tipiddt`.`id` = `dt_ddt`.`idtipoddt` INNER JOIN `dt_righe_ddt` ON `dt_righe_ddt`.`idddt` = `dt_ddt`.`id` WHERE `idanagrafica`='.prepare($record['idanagrafica']).' AND `dt_statiddt_lang`.`title` IN ("Evaso", "Parzialmente evaso", "Parzialmente fatturato") AND `dt_tipiddt`.`dir` = '.prepare($intervento->direzione).' AND `dt_causalet`.`is_importabile` = 1 AND (`dt_righe_ddt`.`qta` - `dt_righe_ddt`.`qta_evasa`) > 0'; $ddt = $dbo->fetchArray($ddt_query)[0]['tot']; // Form di inserimento riga documento echo ' '; } ?>

{( "name": "filelist_and_upload", "id_module": "$id_module$", "id_record": "$id_record$", )}
'.tr('Questo intervento non è ancora stato firmato dal cliente').'.
'; } else { echo '
 
'.tr('Firmato il _DATE_ alle _TIME_ da _PERSON_', [ '_DATE_' => Translator::dateToLocale($record['firma_data']), '_TIME_' => Translator::timeToLocale($record['firma_data']), '_PERSON_' => (!empty($record['firma_nome']) ? $record['firma_nome'] : $intervento->anagrafica->ragione_sociale), ]).'
'; } echo '
{( "name": "log_email", "id_module": "$id_module$", "id_record": "$id_record$" )} '; // Collegamenti diretti // Fatture collegate a questo intervento $elementi = $dbo->fetchArray('SELECT `co_documenti`.*, `co_tipidocumento_lang`.`title` AS tipo_documento, `co_statidocumento_lang`.`title` AS stato_documento, `co_tipidocumento`.`dir` FROM `co_documenti` INNER JOIN `co_tipidocumento` ON `co_tipidocumento`.`id` = `co_documenti`.`idtipodocumento` LEFT JOIN `co_tipidocumento_lang` ON (`co_tipidocumento_lang`.`id_record` = `co_documenti`.`idtipodocumento` AND `co_tipidocumento_lang`.`id_lang` = '.prepare(Models\Locale::getDefault()->id).') INNER JOIN `co_statidocumento` ON `co_statidocumento`.`id` = `co_documenti`.`idstatodocumento` LEFT JOIN `co_statidocumento_lang` ON (`co_statidocumento_lang`.`id_record` = `co_documenti`.`idstatodocumento` AND `co_statidocumento_lang`.`id_lang` = '.prepare(Models\Locale::getDefault()->id).') WHERE `co_documenti`.`id` IN (SELECT `iddocumento` FROM `co_righe_documenti` WHERE `idintervento` = '.prepare($id_record).') ORDER BY `data`'); if (!empty($elementi)) { echo '

'.tr('Documenti collegati: _NUM_', [ '_NUM_' => count($elementi), ]).'

'; } if (!empty($elementi)) { echo '
'.tr('Eliminando questo documento si potrebbero verificare problemi nelle altre sezioni del gestionale').'.
'; } ?>