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 ' +
    +
    +
    +

    '.tr('Documenti collegati: _NUM_', [ + '_NUM_' => count($elementi), + ]).'

    +
    + +
    +
    +
    + +
    +
    '; +} \ 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