. */ include_once __DIR__.'/../../core.php'; use Modules\Fatture\Fattura; use Models\Module; $module = Module::find($id_module); $module_interventi = (new Module())->getByName('Interventi')->id_record; if ($module['name'] == 'Fatture di vendita') { $dir = 'entrata'; $conti = 'conti-vendite'; } else { $dir = 'uscita'; $conti = 'conti-acquisti'; } $fattura = Fattura::find($id_record); $numero = ($fattura->numero_esterno != '') ? $fattura->numero_esterno : $fattura->numero; $idanagrafica = $fattura->idanagrafica; $idconto = ($dir == 'entrata') ? setting('Conto predefinito fatture di vendita') : setting('Conto predefinito fatture di acquisto'); $where = ''; // Lettura interventi non collegati a preventivi, ordini e contratti if (!setting('Permetti fatturazione delle attività collegate a contratti')) { $where = ' AND in_interventi.id_contratto IS NULL'; } if (!setting('Permetti fatturazione delle attività collegate a ordini')) { $where .= ' AND in_interventi.id_ordine IS NULL'; } if (!setting('Permetti fatturazione delle attività collegate a preventivi')) { $where .= ' AND in_interventi.id_preventivo IS NULL'; } /* Form di inserimento riga documento */ echo '

'.tr('Documento numero _NUM_', [ '_NUM_' => $numero, ]).'

'; $rs = $dbo->fetchArray('SELECT `in_interventi`.`id`, CONCAT(\'Attività numero \', `in_interventi`.`codice`, \' del \', DATE_FORMAT(IFNULL((SELECT MIN(`orario_inizio`) FROM `in_interventi_tecnici` WHERE `in_interventi_tecnici`.`idintervento`=`in_interventi`.`id`), `in_interventi`.`data_richiesta`), \'%d/%m/%Y\'), " [", `in_statiintervento_lang`.`name` , "]") AS descrizione, CONCAT(\'Attività numero \', `in_interventi`.`codice`, \' del \', DATE_FORMAT(IFNULL((SELECT MIN(`orario_inizio`) FROM `in_interventi_tecnici` WHERE `in_interventi_tecnici`.`idintervento`=`in_interventi`.`id`), `in_interventi`.`data_richiesta`), \'%d/%m/%Y\')) AS info, CONCAT(\'\n\', `in_interventi`.`descrizione`) AS descrizione_intervento, IF(`idclientefinale`='.prepare($idanagrafica).', \'Interventi conto terzi\', \'Interventi diretti\') AS `optgroup` FROM `in_interventi` INNER JOIN `in_statiintervento` ON `in_interventi`.`idstatointervento`=`in_statiintervento`.`id` LEFT JOIN `in_statiintervento_lang` ON (`in_statiintervento`.`id` = `in_statiintervento_lang`.`id_record` AND `in_statiintervento_lang`.`id_lang` = '.prepare(setting('Lingua')).') WHERE (`in_interventi`.`idanagrafica`='.prepare($idanagrafica).' OR `in_interventi`.`idclientefinale`='.prepare($idanagrafica).') AND `in_statiintervento`.`is_fatturabile`=1 AND `in_interventi`.`id` NOT IN (SELECT `idintervento` FROM `co_righe_documenti` WHERE `idintervento` IS NOT NULL) '.$where); foreach ($rs as $key => $value) { $intervento = Modules\Interventi\Intervento::find($value['id']); $prezzo = $intervento->totale; $rs[$key]['prezzo'] = Translator::numberToLocale($prezzo); $rs[$key]['descrizione_intervento'] = str_replace("'", ' ', strip_tags($rs[$key]['descrizione_intervento'])); $rs[$key]['info'] = str_replace("'", ' ', strip_tags($module_interventi->replacePlaceholders($value['id'], setting('Descrizione personalizzata in fatturazione')))) ?: $rs[$key]['info']; } // Intervento echo '
{[ "type": "select", "label": "'.tr('Intervento').'", "name": "idintervento", "required": 1, "values": '.json_encode($rs).', "extra": "onchange=\"$data = $(this).selectData(); if($data){ $(\'#descrizione\').val($data.info); $(\'#prezzo\').val($data.prezzo);};\"" ]}
{[ "type": "checkbox", "label": "'.tr('Copia descrizione').'", "name": "copia_descrizione", "placeholder": "'.tr('Copia anche la descrizione dell\'intervento').'." ]}
'; // Descrizione echo '
{[ "type": "textarea", "label": "'.tr('Descrizione').'", "name": "descrizione", "required": 1 ]}
'; $options = [ 'action' => 'add', 'hide_conto' => true, 'dir' => $dir, 'superamento_soglia_qta' => setting('Permetti il superamento della soglia quantità dei documenti di origine'), ]; // Leggo la ritenuta d'acconto predefinita per l'anagrafica e se non c'è leggo quella predefinita generica $ritenuta_acconto = $dbo->fetchOne('SELECT id_ritenuta_acconto_'.($dir == 'uscita' ? 'acquisti' : 'vendite').' AS id_ritenuta_acconto FROM an_anagrafiche WHERE idanagrafica='.prepare($idanagrafica)); $options['id_ritenuta_acconto_predefined'] = $ritenuta_acconto['id_ritenuta_acconto']; echo App::internalLoad('conti.php', [], $options); // Leggo l'iva predefinita dall'anagrafica e se non c'è leggo quella predefinita generica $id_iva = $fattura->anagrafica->idiva_vendite ?: setting('Iva predefinita'); // Iva echo '
{[ "type": "select", "label": "'.tr('Iva').'", "name": "idiva", "required": 1, "value": "'.$id_iva.'", "ajax-source": "iva", "help": "'.tr("L'aliquota IVA selezionata sovrascrive il valore predditivo presentato in Attività, modificando di conseguenza le sessioni di lavoro dei tecnici").'. '.tr('Righe generiche, articoli e sconti non verranno influenzati').'."]}
'; echo '
{[ "type": "select", "label": "'.tr('Conto').'", "name": "idconto", "required": 1, "value": "'.$idconto.'", "ajax-source": "'.$conti.'" ]}
'; // Costo unitario echo '
{[ "type": "number", "label": "'.tr('Costo unitario').'", "name": "prezzo", "required": 1, "icon-after": "'.currency().'", "disabled": 1 ]}
'; echo '
'; echo ' ';