. */ include_once __DIR__.'/../../core.php'; use Modules\Fatture\Fattura; $module = Modules::get($id_module); $module_interventi = Modules::get('Interventi'); 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`.`descrizione` , "]") 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.idstatointervento WHERE (in_interventi.idanagrafica='.prepare($idanagrafica).' OR in_interventi.idclientefinale='.prepare($idanagrafica).') AND in_statiintervento.is_completato=1 AND in_statiintervento.is_fatturabile=1 AND in_interventi.id NOT IN (SELECT idintervento FROM co_righe_documenti WHERE idintervento IS NOT NULL) AND NOT in_interventi.id IN (SELECT idintervento FROM co_promemoria 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 ' ';