diff --git a/modules/fatture/edit.php b/modules/fatture/edit.php
index 197d7a9c6..066857cec 100755
--- a/modules/fatture/edit.php
+++ b/modules/fatture/edit.php
@@ -659,11 +659,16 @@ echo '
//Dich. intento collegata
if ($dir == 'entrata' && !empty($fattura->dichiarazione)){
+ $ive_accettate = $dbo->table('co_iva')->where('codice_natura_fe','N3.5')->get();
+ foreach($ive_accettate as $iva_accettata){
+ $descrizione_iva_accettata .= '
'.$iva_accettata->descrizione.'';
+ }
+
if ($fattura->stato->descrizione == 'Bozza'){
- echo '
+ echo '
-
'.tr("La fattura è collegata ad una dichiarazione d'intento con diponibilità residura pari a _MONEY_.", [ '_MONEY_' => moneyFormat(abs($diff)),]).'
'.tr("Per collegare una riga alla dichiarazione è sufficiente specificare come IVA _IVA_", ['_IVA_' => '"
'.$iva->codice.' - '.$iva->descrizione.'"',]).'.
+
'.tr("La fattura è collegata ad una dichiarazione d'intento con diponibilità residura pari a _MONEY_.", [ '_MONEY_' => moneyFormat(abs($diff)),]).'
'.tr("Per collegare una riga alla dichiarazione è sufficiente specificare come IVA
", ['_IVA_' => $descrizione_iva_accettata]).'
';
}
diff --git a/plugins/dichiarazioni_intento/edit.php b/plugins/dichiarazioni_intento/edit.php
index 3d71ffc53..5190aa155 100755
--- a/plugins/dichiarazioni_intento/edit.php
+++ b/plugins/dichiarazioni_intento/edit.php
@@ -74,18 +74,6 @@ echo '
';
-// Collegamenti diretti (numerici)
-$numero_documenti = $dbo->fetchNum('SELECT id FROM co_documenti WHERE id_dichiarazione_intento='.prepare($id_record));
-
-if (!empty($numero_documenti)) {
- echo '
-
- '.tr('Ci sono _NUM_ documenti collegati', [
- '_NUM_' => $numero_documenti,
- ]).'.
-
';
-}
-
echo '
@@ -101,3 +89,41 @@ echo '
';
+
+//Documenti collegati
+$elementi = $dbo->fetchArray('SELECT `co_documenti`.`id`, `co_documenti`.`data`, `co_documenti`.`numero`, `co_documenti`.`numero_esterno`, `co_tipidocumento`.`descrizione` AS tipo_documento, `co_tipidocumento`.`dir`, NULL AS `deleted_at` FROM `co_documenti` JOIN `co_tipidocumento` ON `co_tipidocumento`.`id` = `co_documenti`.`idtipodocumento` WHERE `co_documenti`.`id_dichiarazione_intento` = '.prepare($record['id']));
+
+if (!empty($elementi)) {
+ echo '
+
+
+
+
+
';
+
+ foreach ($elementi as $elemento) {
+ $descrizione = tr('_DOC_ _NUM_ del _DATE_ _DELETED_AT_', [
+ '_DOC_' => $elemento['tipo_documento'],
+ '_NUM_' => !empty($elemento['numero_esterno']) ? $elemento['numero_esterno'] : $elemento['numero'],
+ '_DATE_' => Translator::dateToLocale($elemento['data']),
+ '_DELETED_AT_' => (!empty($elemento['deleted_at']) ? tr('Eliminato il:').' '.Translator::dateToLocale($elemento['deleted_at']) : ''),
+ ]);
+ $modulo = ($elemento['dir'] == 'entrata') ? 'Fatture di vendita' : 'Fatture di acquisto';
+ $id = $elemento['id'];
+
+ echo '
+ - '.Modules::link($modulo, $id, $descrizione).'
';
+ }
+
+ echo '
+
+
+
';
+}
\ No newline at end of file
diff --git a/plugins/dichiarazioni_intento/src/Dichiarazione.php b/plugins/dichiarazioni_intento/src/Dichiarazione.php
index e1218c184..d85cc6bda 100755
--- a/plugins/dichiarazioni_intento/src/Dichiarazione.php
+++ b/plugins/dichiarazioni_intento/src/Dichiarazione.php
@@ -74,17 +74,15 @@ class Dichiarazione extends Model
$righe = collect();
$fatture = $this->fatture;
+ $totale = 0;
foreach ($fatture as $fattura) {
- $righe = $righe->merge($fattura->getRighe());
+ foreach( $fattura->getRighe() as $riga){
+ if( $riga->aliquota->codice_natura_fe == 'N3.5' ){
+ $totale += ($fattura->tipo->reversed ? -$riga->totale_imponibile : $riga->totale_imponibile);
+ }
+ }
}
- // Filtro delle righe per IVA
- $id_iva = setting("Iva per lettere d'intento");
- $righe_dichiarazione = $righe->filter(function ($item, $key) use ($id_iva) {
- return $item->aliquota != null && $item->aliquota->id == $id_iva;
- });
-
- $totale = $righe_dichiarazione->sum('totale_imponibile') ?: 0;
$this->totale = $totale;
}
diff --git a/plugins/exportFE/src/FatturaElettronica.php b/plugins/exportFE/src/FatturaElettronica.php
index 5cce1e39d..d1f439180 100755
--- a/plugins/exportFE/src/FatturaElettronica.php
+++ b/plugins/exportFE/src/FatturaElettronica.php
@@ -1443,9 +1443,14 @@ class FatturaElettronica
// Dichiarazione d'intento
//Il numero di protocollo della dichiarazione d’intento, rilevabile dalla ricevuta telematica rilasciata dall’Agenzia delle entrate, è composto da 2 parti 17+6 (protocollo di ricezione della dichiarazione d’intento e il suo progressivo)
+ //$id_iva_dichiarazione = setting("Iva per lettere d'intento");
$dichiarazione = $documento->dichiarazione;
- $id_iva_dichiarazione = setting("Iva per lettere d'intento");
- if (!empty($dichiarazione) && $riga->aliquota->id == $id_iva_dichiarazione) {
+ $ive_accettate = [];
+ $rs = $dbo->table('co_iva')->where('codice_natura_fe','N3.5')->get();
+ foreach($rs as $r){
+ $ive_accettate[] = $r->id;
+ }
+ if (!empty($dichiarazione) && in_array($riga->aliquota->id, $ive_accettate) ) {
$dettaglio[]['AltriDatiGestionali'] = [
'TipoDato' => 'INTENTO',
'RiferimentoTesto' => $dichiarazione->numero_protocollo,
diff --git a/update/2_4_32.sql b/update/2_4_32.sql
index e4820da58..d2f8fff9b 100644
--- a/update/2_4_32.sql
+++ b/update/2_4_32.sql
@@ -9,4 +9,7 @@ UPDATE `zz_settings` SET `tipo` = 'list[mese,settimana,giorno,agenda]' WHERE `zz
-- Aggiunta colonna Impianti in Attività
UPDATE `zz_modules` SET `options` = 'SELECT |select| FROM `in_interventi`\nINNER JOIN `an_anagrafiche` ON `in_interventi`.`idanagrafica` = `an_anagrafiche`.`idanagrafica`\nLEFT JOIN `in_interventi_tecnici` ON `in_interventi_tecnici`.`idintervento` = `in_interventi`.`id`\nLEFT JOIN `in_interventi_tecnici_assegnati` ON `in_interventi_tecnici_assegnati`.`id_intervento` = `in_interventi`.`id`\nLEFT JOIN `in_statiintervento` ON `in_interventi`.`idstatointervento`=`in_statiintervento`.`idstatointervento`\nLEFT JOIN (\n SELECT an_sedi.id, CONCAT(an_sedi.nomesede, \'
\',IF(an_sedi.telefono!=\'\',CONCAT(an_sedi.telefono,\'
\'),\'\'),IF(an_sedi.cellulare!=\'\',CONCAT(an_sedi.cellulare,\'
\'),\'\'),an_sedi.citta,IF(an_sedi.indirizzo!=\'\',CONCAT(\' - \',an_sedi.indirizzo),\'\')) AS info FROM an_sedi\n) AS sede_destinazione ON sede_destinazione.id = in_interventi.idsede_destinazione\nLEFT JOIN (\n SELECT co_righe_documenti.idintervento, CONCAT(\'Fatt. \', co_documenti.numero_esterno, \' del \', DATE_FORMAT(co_documenti.data, \'%d/%m/%Y\')) AS info FROM co_documenti INNER JOIN co_righe_documenti ON co_documenti.id = co_righe_documenti.iddocumento\n) AS fattura ON fattura.idintervento = in_interventi.id\nLEFT JOIN (SELECT `zz_operations`.`id_email`, `zz_operations`.`id_record`\n FROM `zz_operations`\n INNER JOIN `em_emails` ON `zz_operations`.`id_email` = `em_emails`.`id`\n INNER JOIN `em_templates` ON `em_emails`.`id_template` = `em_templates`.`id`\n INNER JOIN `zz_modules` ON `zz_operations`.`id_module` = `zz_modules`.`id` \n WHERE `zz_modules`.`name` = \'Interventi\' AND `zz_operations`.`op` = \'send-email\' \n GROUP BY `zz_operations`.`id_record`) AS email ON email.id_record=in_interventi.id\nLEFT JOIN (\n SELECT GROUP_CONCAT(CONCAT(matricola, IF(nome != \'\', CONCAT(\' - \', nome), \'\')) SEPARATOR \'
\') AS descrizione, my_impianti_interventi.idintervento\n FROM my_impianti\n INNER JOIN my_impianti_interventi ON my_impianti.id = my_impianti_interventi.idimpianto\n GROUP BY my_impianti_interventi.idintervento\n) AS impianti ON impianti.idintervento = in_interventi.id\nWHERE 1=1 |date_period(`orario_inizio`,`data_richiesta`)|\nGROUP BY `in_interventi`.`id`\nHAVING 2=2\nORDER BY IFNULL(`orario_fine`, `data_richiesta`) DESC' WHERE `zz_modules`.`name` = 'Interventi';
-INSERT INTO `zz_views` (`id`, `id_module`, `name`, `query`, `order`, `search`, `slow`, `format`, `html_format`, `search_inside`, `order_by`, `visible`, `summable`, `default`) VALUES (NULL, (SELECT `id` FROM `zz_modules` WHERE `name` = 'Interventi'), 'Impianti', 'impianti.descrizione', '16', '1', '0', '0', '1', NULL, NULL, '0', '0', '1');
\ No newline at end of file
+INSERT INTO `zz_views` (`id`, `id_module`, `name`, `query`, `order`, `search`, `slow`, `format`, `html_format`, `search_inside`, `order_by`, `visible`, `summable`, `default`) VALUES (NULL, (SELECT `id` FROM `zz_modules` WHERE `name` = 'Interventi'), 'Impianti', 'impianti.descrizione', '16', '1', '0', '0', '1', NULL, NULL, '0', '0', '1');
+
+-- Allineamento totali dichiaranzione d'intento
+UPDATE `co_dichiarazioni_intento` INNER JOIN (SELECT `co_documenti`.`id_dichiarazione_intento`, SUM(IF(`co_tipidocumento`.`reversed`=1, (-(`co_righe_documenti`.`subtotale`-`co_righe_documenti`.`sconto`)), (`co_righe_documenti`.`subtotale`-`co_righe_documenti`.`sconto`))) AS `totale` FROM `co_righe_documenti` INNER JOIN `co_documenti` ON `co_documenti`.`id`=`co_righe_documenti`.`iddocumento` INNER JOIN `co_tipidocumento` ON `co_tipidocumento`.`id`=`co_documenti`.`idtipodocumento` INNER JOIN `co_iva` ON `co_iva`.`id`=`co_righe_documenti`.`idiva` WHERE `co_iva`.`codice_natura_fe`='N3.5' GROUP BY `co_documenti`.`id_dichiarazione_intento`) AS `righe` ON `righe`.`id_dichiarazione_intento`=`co_dichiarazioni_intento`.`id` SET `co_dichiarazioni_intento`.`totale`=`righe`.`totale`;
\ No newline at end of file