From 3ea126572d3c91180eb5d98b707b931b1bc2afe4 Mon Sep 17 00:00:00 2001 From: MatteoPistorello Date: Wed, 6 Jul 2022 15:48:04 +0200 Subject: [PATCH] Fix progressivo invio autofatture --- modules/fatture/edit.php | 6 ++---- modules/fatture/init.php | 7 +++---- plugins/importFE/actions.php | 28 +++++++++++++++------------- plugins/importFE/generate.php | 20 ++++++++++++++++++++ 4 files changed, 40 insertions(+), 21 deletions(-) diff --git a/modules/fatture/edit.php b/modules/fatture/edit.php index 1e6031c17..ceea3aed9 100755 --- a/modules/fatture/edit.php +++ b/modules/fatture/edit.php @@ -113,12 +113,10 @@ if ($abilita_autofattura) { ])).' '; } elseif ($autofattura_collegata != null) { - $link_module = $fattura->direzione == 'entrata' ? 'Fatture di acquisto' : 'Fatture di vendita'; - $link_desc = $fattura->direzione == 'entrata' ? tr("Questa autofattura è già stata importata come fattura di acquisto") : tr("È presente un'autofattura collegata"); echo '
- '.$link_desc.': - '.Modules::link($link_module, $autofattura_collegata->id, tr('Fattura num. _NUM_ del _DATE_', [ + '.tr("Questa autofattura è già stata importata come fattura di acquisto").': + '.Modules::link('Fatture di acquisto', $autofattura_collegata->id, tr('Fattura num. _NUM_ del _DATE_', [ '_NUM_' => $autofattura_collegata->numero_esterno, '_DATE_' => dateFormat($autofattura_collegata->data), ])).' diff --git a/modules/fatture/init.php b/modules/fatture/init.php index d93c8c4fe..019aaffe5 100755 --- a/modules/fatture/init.php +++ b/modules/fatture/init.php @@ -75,11 +75,10 @@ if (isset($id_record)) { return $item->aliquota != null && substr($item->aliquota->codice_natura_fe, 0, 2) == 'N6'; })->id; $autofattura_vendita = Fattura::find($fattura->id_autofattura); - if (empty($autofattura_vendita) && !empty($fattura->progressivo_invio)) { - $autofattura_collegata = Fattura::where('progressivo_invio', '=', $fattura->progressivo_invio)->where('id', '!=', $fattura->id)->first(); - } - $abilita_autofattura = (($fattura->anagrafica->nazione->iso2 != 'IT' && !empty($fattura->anagrafica->nazione->iso2)) || $reverse_charge) && $dir == 'uscita' && $fattura->id_autofattura == null && empty($autofattura_collegata); + + $abilita_autofattura = (($fattura->anagrafica->nazione->iso2 != 'IT' && !empty($fattura->anagrafica->nazione->iso2)) || $reverse_charge) && $dir == 'uscita' && $fattura->id_autofattura == null; $fattura_acquisto_originale = Fattura::where('id_autofattura', '=', $fattura->id)->first(); + $autofattura_collegata = Fattura::where('id_autofattura', '=', $fattura->id)->where('id', '!=', $fattura_acquisto_originale->id)->orderBy('id', 'DESC')->first(); } } diff --git a/plugins/importFE/actions.php b/plugins/importFE/actions.php index ad4d4dcba..6c1811067 100755 --- a/plugins/importFE/actions.php +++ b/plugins/importFE/actions.php @@ -144,22 +144,24 @@ switch (filter('op')) { $id_fattura = $fattura_pa->save($info); $fattura_pa->delete(); $fattura = Fattura::find($id_fattura); + $id_autofattura = post('autofattura'); - if ($fattura->isAutofattura()) { - $autofattura_collegata = Fattura::where('progressivo_invio', '=', $fattura->progressivo_invio)->where('id', '!=', $fattura->id)->first(); - if (!empty($autofattura_collegata)) { - $fattura->registraScadenze(true); - $autofattura_collegata->registraScadenze(true); - $mastrino = Mastrino::build('Compensazione autofattura', $fattura->data, false, true); + if ($fattura->isAutofattura() && !empty($id_autofattura)) { + $autofattura_collegata = Fattura::find($id_autofattura); + $fattura->registraScadenze(true); + $autofattura_collegata->registraScadenze(true); + $mastrino = Mastrino::build('Compensazione autofattura', $fattura->data, false, true); - $movimento1 = Movimento::build($mastrino, $fattura->anagrafica->idconto_cliente); - $movimento1->setTotale($fattura->totale, 0); - $movimento1->save(); + $movimento1 = Movimento::build($mastrino, $fattura->anagrafica->idconto_cliente); + $movimento1->setTotale($fattura->totale, 0); + $movimento1->save(); - $movimento2 = Movimento::build($mastrino, $fattura->anagrafica->idconto_fornitore); - $movimento2->setTotale(0, $fattura->totale); - $movimento2->save(); - } + $movimento2 = Movimento::build($mastrino, $fattura->anagrafica->idconto_fornitore); + $movimento2->setTotale(0, $fattura->totale); + $movimento2->save(); + + $fattura->id_autofattura = $id_autofattura; + $fattura->save(); } // Aggiorno la tipologia di anagrafica fornitore diff --git a/plugins/importFE/generate.php b/plugins/importFE/generate.php index 1f25f4a3c..af73da577 100755 --- a/plugins/importFE/generate.php +++ b/plugins/importFE/generate.php @@ -18,6 +18,7 @@ */ use Carbon\Carbon; +use Modules\Fatture\Fattura; use Modules\Pagamenti\Pagamento; use Plugins\ImportFE\FatturaElettronica; use Util\XML; @@ -264,6 +265,25 @@ if (!empty($anagrafica)) {
{[ "type": "select", "label": "'.tr('Collega a fattura pro-forma').'", "name": "ref_fattura", "values": "query='.$query.'" ]}
'; + } elseif ($is_autofattura) { + $query = "SELECT + co_documenti.id, + CONCAT('Fattura num. ', co_documenti.numero_esterno, ' del ', DATE_FORMAT(co_documenti.data, '%d/%m/%Y')) AS descrizione + FROM co_documenti + INNER JOIN co_tipidocumento ON co_tipidocumento.id = co_documenti.idtipodocumento + WHERE + co_tipidocumento.dir = 'entrata' AND + co_tipidocumento.codice_tipo_documento_fe IN('TD16', 'TD17', 'TD18', 'TD19', 'TD20') AND + (co_documenti.data BETWEEN NOW() - INTERVAL 1 YEAR AND NOW()) AND + co_documenti.idstatodocumento IN (SELECT id FROM co_statidocumento WHERE descrizione != 'Bozza') AND + co_documenti.idanagrafica = ".prepare($anagrafica->id); + + $autofattura_collegata = Fattura::where('progressivo_invio', '=', $fattura_pa->getHeader()['DatiTrasmissione']['ProgressivoInvio'])->first(); + + echo ' +
+ {[ "type": "select", "label": "'.tr('Autofattura collegata').'", "name": "autofattura", "values": "query='.$query.'", "value": "'.$autofattura_collegata->id.'" ]} +
'; } }