diff --git a/modules/anagrafiche/actions.php b/modules/anagrafiche/actions.php index baa4c89c1..8fb1aece6 100644 --- a/modules/anagrafiche/actions.php +++ b/modules/anagrafiche/actions.php @@ -16,8 +16,9 @@ switch (post('op')) { if (empty(post('tipo')) or post('tipo') == 'Privato'){ $anagrafica->codice_destinatario = ''; }else{ - if (empty(post('codice_destinatario'))) - $anagrafica->codice_destinatario = ((post('tipo') == 'Ente pubblico' ) ? '000000': '0000000'); + //controlli anche su FatturaElettronica.php + if (empty(post('codice_destinatario')) or post('codice_destinatario') == '999999' or post('codice_destinatario') == '0000000') + $anagrafica->codice_destinatario = ((post('tipo') == 'Ente pubblico' ) ? '999999': '0000000'); else $anagrafica->codice_destinatario = strtoupper(post('codice_destinatario')); } diff --git a/modules/contratti/actions.php b/modules/contratti/actions.php index c5cde70e2..f23a87abe 100644 --- a/modules/contratti/actions.php +++ b/modules/contratti/actions.php @@ -76,8 +76,11 @@ switch (post('op')) { $costo_orario = post('costo_orario'); $costo_km = post('costo_km'); $costo_diritto_chiamata = post('costo_diritto_chiamata'); + + $codice_cig = post('codice_cig'); + $codice_cup = post('codice_cup'); - $query = 'UPDATE co_contratti SET idanagrafica='.prepare($idanagrafica).', idsede='.prepare($idsede).', idstato='.prepare($idstato).', nome='.prepare($nome).', idagente='.prepare($idagente).', idpagamento='.prepare($idpagamento).', numero='.prepare($numero).', budget='.prepare($budget).', idreferente='.prepare($idreferente).', validita='.prepare($validita).', data_bozza='.prepare($data_bozza).', data_accettazione='.prepare($data_accettazione).', data_rifiuto='.prepare($data_rifiuto).', data_conclusione='.prepare($data_conclusione).', rinnovabile='.prepare($rinnovabile).', giorni_preavviso_rinnovo='.prepare($giorni_preavviso_rinnovo).', esclusioni='.prepare($esclusioni).', descrizione='.prepare($descrizione).' WHERE id='.prepare($id_record); + $query = 'UPDATE co_contratti SET idanagrafica='.prepare($idanagrafica).', idsede='.prepare($idsede).', idstato='.prepare($idstato).', nome='.prepare($nome).', idagente='.prepare($idagente).', idpagamento='.prepare($idpagamento).', numero='.prepare($numero).', budget='.prepare($budget).', idreferente='.prepare($idreferente).', validita='.prepare($validita).', data_bozza='.prepare($data_bozza).', data_accettazione='.prepare($data_accettazione).', data_rifiuto='.prepare($data_rifiuto).', data_conclusione='.prepare($data_conclusione).', rinnovabile='.prepare($rinnovabile).', giorni_preavviso_rinnovo='.prepare($giorni_preavviso_rinnovo).', esclusioni='.prepare($esclusioni).', descrizione='.prepare($descrizione).', codice_cig='.prepare($codice_cig).', codice_cup='.prepare($codice_cup).' WHERE id='.prepare($id_record); // costo_diritto_chiamata='.prepare($costo_diritto_chiamata).', ore_lavoro='.prepare($ore_lavoro).', costo_orario='.prepare($costo_orario).', costo_km='.prepare($costo_km).' $dbo->query($query); diff --git a/modules/contratti/edit.php b/modules/contratti/edit.php index 2a1dc2d4f..a2386e2d7 100644 --- a/modules/contratti/edit.php +++ b/modules/contratti/edit.php @@ -24,7 +24,7 @@ $_SESSION['superselect']['idanagrafica'] = $record['idanagrafica']; {[ "type": "text", "label": "", "name": "numero", "required": 1, "class": "text-center", "value": "$numero$" ]} -
+
@@ -32,10 +32,26 @@ $_SESSION['superselect']['idanagrafica'] = $record['idanagrafica']; {[ "type": "select", "label": "", "name": "idanagrafica", "id": "idanagrafica_c", "required": 1, "value": "$idanagrafica$", "ajax-source": "clienti" ]}
-
+
{[ "type": "select", "label": "", "name": "idsede", "value": "$idsede$", "ajax-source": "sedi", "placeholder": "Sede legale" ]}
+ +
+ + +
+ +
+ {[ "type": "text", "label": "", "name": "nome", "required": 1, "value": "$nome$" ]} +
+ + +
+ {[ "type": "select", "label": "", "name": "idreferente", "value": "$idreferente$", "ajax-source": "referenti" ]} +
+ +
{[ "type": "select", "label": "", "name": "idagente", "values": "query=SELECT an_anagrafiche.idanagrafica AS id, ragione_sociale AS descrizione FROM an_anagrafiche INNER JOIN (an_tipianagrafiche_anagrafiche INNER JOIN an_tipianagrafiche ON an_tipianagrafiche_anagrafiche.idtipoanagrafica=an_tipianagrafiche.idtipoanagrafica) ON an_anagrafiche.idanagrafica=an_tipianagrafiche_anagrafiche.idanagrafica WHERE descrizione='Agente' AND deleted_at IS NULL ORDER BY ragione_sociale", "value": "$idagente$" ]}
+
-
- {[ "type": "select", "label": "", "name": "idreferente", "value": "$idreferente$", "ajax-source": "referenti" ]} -
- -
- {[ "type": "text", "label": "", "name": "nome", "required": 1, "value": "$nome$" ]} -
- -
+ +
{[ "type": "number", "label": "", "name": "validita", "decimals": "0", "value": "$validita$", "icon-after": "giorni" ]}
-
- -
+
{[ "type": "checkbox", "label": "", "name": "rinnovabile", "help": "", "value": "$rinnovabile$" ]}
@@ -68,20 +76,34 @@ $_SESSION['superselect']['idanagrafica'] = $record['idanagrafica'];
{[ "type": "number", "label": "", "name": "giorni_preavviso_rinnovo", "decimals": "0", "value": "$giorni_preavviso_rinnovo$", "icon-after": "giorni", "disabled": ]}
+ +
+ {[ "type": "text", "label": "", "name": "codice_cig", "required": 0, "value": "$codice_cig$", "maxlength": 15 ]} +
+ +
+ {[ "type": "text", "label": "", "name": "codice_cup", "required": 0, "value": "$codice_cup$", "maxlength": 15 ]} +
+ + +
-
+
+ + +
{[ "type": "date", "label": "", "maxlength": 10, "name": "data_bozza", "value": "$data_bozza$" ]}
-
+
{[ "type": "date", "label": "", "maxlength": 10, "name": "data_accettazione", "value": "$data_accettazione$" ]}
-
+
{[ "type": "date", "label": "", "maxlength": 10, "name": "data_conclusione", "value": "$data_conclusione$" ]}
-
+
{[ "type": "date", "label": "", "maxlength": 10, "name": "data_rifiuto", "value": "$data_rifiuto$" ]}
@@ -98,10 +120,7 @@ $_SESSION['superselect']['idanagrafica'] = $record['idanagrafica'];
{[ "type": "select", "multiple": "1", "label": "", "name": "matricolaimpianto[]", "values": "query=SELECT idanagrafica, id AS id, IF(nome = '', matricola, CONCAT(matricola, ' - ', nome)) AS descrizione FROM my_impianti WHERE idanagrafica='$idanagrafica$' ORDER BY descrizione", "value": "$idimpianti$" ]}
- -
- -
+
{[ "type": "number", "label": "", "name": "sconto_generico", "value": "$sconto_globale$", "help": "", "icon-after": "choice|untprc|$tipo_sconto_globale$"getDocumento(); + $righe_documento = $fattura->getRighe(); + $database = database(); + + foreach ($righe_documento as $numero => $riga) { + if (!empty($riga['idcontratto'])){ + $numero_contratto = $database->fetchOne('SELECT numero FROM co_contratti WHERE id = '.prepare($riga['idcontratto']))['numero']; + $codice_cig = $database->fetchOne('SELECT codice_cig FROM co_contratti WHERE id = '.prepare($riga['idcontratto']))['codice_cig']; + $codice_cup = $database->fetchOne('SELECT codice_cup FROM co_contratti WHERE id = '.prepare($riga['idcontratto']))['codice_cup']; + + $result[] = [ + 'IdDocumento' => $numero_contratto, + ]; + + if (!empty($codice_cig)) { + $result['CodiceCIG'] = $codice_cig; + } + + if (!empty($codice_cup)) { + $result['CodiceCUP'] = $codice_cup; + } + } + } + return $result; + } /** * Restituisce l'array responsabile per la generazione del tag DatiDocumento. @@ -401,11 +435,27 @@ class FatturaElettronica protected static function getDatiGenerali($fattura) { $documento = $fattura->getDocumento(); + $cliente = $fattura->getCliente(); $result = [ 'DatiGeneraliDocumento' => static::getDatiGeneraliDocumento($fattura), // TODO: DatiOrdineAcquisto, DatiContratto, DatiConvenzione, DatiRicezione, DatiFattureCollegate, DatiSAL, DatiDDT, FatturaPrincipale ]; + + //aggiungo nodo codice cig, cup solo per enti pubblici + if ($cliente['tipo'] == 'Ente pubblico'){ + //e se tra le righe ho fatturato almeno un contratto + $righe_documento = $fattura->getRighe(); + $find = false; + foreach ($righe_documento as $key => $item) { + if (!empty($item['idcontratto'])) { + $find = true; + } + } + if ($find){ + $result['DatiContratto'] = static::getDatiContratto($fattura); + } + } if ($documento['tipo'] == 'Fattura accompagnatoria di vendita') { $result['DatiTrasporto'] = static::getDatiTrasporto($fattura); diff --git a/update/2_4_2.sql b/update/2_4_2.sql index f8ca96a16..213ccd9ca 100644 --- a/update/2_4_2.sql +++ b/update/2_4_2.sql @@ -596,3 +596,7 @@ UPDATE `zz_plugins` SET `options` = ' { "main_query": [ { "type": "table", "fiel -- Fix plugin "Ddt del cliente" UPDATE `zz_plugins` SET `options` = ' { "main_query": [ { "type": "table", "fields": "Numero, Data, Descrizione, Qtà", "query": "SELECT dt_ddt.id, (SELECT `id` FROM `zz_modules` WHERE `name` = \'Ddt di vendita\') AS _link_module_, dt_ddt.id AS _link_record_, IF(dt_ddt.numero_esterno = \'\', dt_ddt.numero, dt_ddt.numero_esterno) AS Numero, DATE_FORMAT(dt_ddt.data, \'%d/%m/%Y\') AS Data, dt_righe_ddt.descrizione AS `Descrizione`, REPLACE(REPLACE(REPLACE(FORMAT(dt_righe_ddt.qta, 2), \',\', \'#\'), \'.\', \',\'), \'#\', \'.\') AS `Qtà` FROM dt_ddt LEFT JOIN dt_righe_ddt ON dt_ddt.id=dt_righe_ddt.idddt WHERE dt_ddt.idanagrafica=|id_parent| GROUP BY dt_ddt.id HAVING 2=2 ORDER BY dt_ddt.id DESC"} ]}' WHERE `zz_plugins`.`name` = 'Ddt del cliente'; + +-- Aggiunto codice cig e codice cup per contratti +ALTER TABLE `co_contratti` ADD `codice_cig` VARCHAR(15) NOT NULL AFTER `tipo_sconto_globale`; +ALTER TABLE `co_contratti` ADD `codice_cup` VARCHAR(15) NOT NULL AFTER `codice_cig`; \ No newline at end of file