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