From 7d223890d73fbfa6fe343ca6e856e0bfa1c1af3b Mon Sep 17 00:00:00 2001 From: Dasc3er Date: Fri, 20 Nov 2020 14:49:32 +0100 Subject: [PATCH] Correzione per generazione automatica Fattura elettronica --- .../anagrafiche/src/API/v1/Anagrafiche.php | 4 +- modules/fatture/actions.php | 37 ++++++++++++------- modules/interventi/occupazione_tecnici.php | 2 +- plugins/exportFE/src/FatturaElettronica.php | 18 +++++++-- 4 files changed, 40 insertions(+), 21 deletions(-) diff --git a/modules/anagrafiche/src/API/v1/Anagrafiche.php b/modules/anagrafiche/src/API/v1/Anagrafiche.php index f82b859e1..a24c8d631 100755 --- a/modules/anagrafiche/src/API/v1/Anagrafiche.php +++ b/modules/anagrafiche/src/API/v1/Anagrafiche.php @@ -79,7 +79,7 @@ class Anagrafiche extends Resource implements RetrieveInterface, CreateInterface // Filtro per Ragione sociale if (!empty($conditions['ragione_sociale'])) { - $query = $query->where('an_anagrafiche.ragione_sociale','like', '%'.$conditions['ragione_sociale'].'%'); + $query = $query->where('an_anagrafiche.ragione_sociale', 'like', '%'.$conditions['ragione_sociale'].'%'); } // Filtri aggiuntivi predefiniti @@ -94,7 +94,7 @@ class Anagrafiche extends Resource implements RetrieveInterface, CreateInterface } $total_count = $query->count(); - + return [ 'results' => $query->skip($request['page'] * $request['length']) ->limit($request['length']) diff --git a/modules/fatture/actions.php b/modules/fatture/actions.php index c52d29c82..30758640f 100755 --- a/modules/fatture/actions.php +++ b/modules/fatture/actions.php @@ -137,27 +137,36 @@ switch (post('op')) { $fattura->save(); + // Operazioni automatiche per le Fatture Elettroniche if ($fattura->direzione == 'entrata' && $stato_precedente->descrizione == 'Bozza' && $stato['descrizione'] == 'Emessa') { + $stato_fe = $database->fetchOne('SELECT * FROM fe_stati_documento WHERE codice = '.prepare($fattura->codice_stato_fe)); + $abilita_genera = empty($fattura->codice_stato_fe) || intval($stato_fe['is_generabile']); + // Generazione automatica della Fattura Elettronica - $stato_fe = empty($fattura->codice_stato_fe) || in_array($fattura->codice_stato_fe, ['GEN', 'NS', 'EC02']); $checks = FatturaElettronica::controllaFattura($fattura); - if ($stato_fe && empty($checks)) { - try { - $fattura_pa = new FatturaElettronica($id_record); - $file = $fattura_pa->save(base_dir().'/'.FatturaElettronica::getDirectory()); + $fattura_elettronica = new FatturaElettronica($id_record); + if ($abilita_genera && empty($checks)) { + $file = $fattura_elettronica->save(base_dir().'/'.FatturaElettronica::getDirectory()); - flash()->info(tr('Fattura elettronica generata correttamente!')); + flash()->info(tr('Fattura elettronica generata correttamente!')); - if (!$fattura_pa->isValid()) { - $errors = $fattura_pa->getErrors(); + if (!$fattura_elettronica->isValid()) { + $errors = $fattura_elettronica->getErrors(); - flash()->warning(tr('La fattura elettronica potrebbe avere delle irregolarità!').' '.tr('Controllare i seguenti campi: _LIST_', [ - '_LIST_' => implode(', ', $errors), - ]).'.'); - } - } catch (UnexpectedValueException $e) { + flash()->warning(tr('La fattura elettronica potrebbe avere delle irregolarità!').' '.tr('Controllare i seguenti campi: _LIST_', [ + '_LIST_' => implode(', ', $errors), + ]).'.'); } - } elseif (!empty($checks)) { + } + // Visualizzazione degli errori + elseif (!empty($checks)) { + // Rimozione eventuale fattura generata erronamente + // Fix per la modifica di dati interni su fattura già generata + if ($abilita_genera) { + $fattura_elettronica->delete(); + } + + // Messaggi informativi sulle problematiche $message = tr('La fattura elettronica non è stata generata a causa di alcune informazioni mancanti').':'; foreach ($checks as $check) { diff --git a/modules/interventi/occupazione_tecnici.php b/modules/interventi/occupazione_tecnici.php index ff00f7e91..d6dec5f4d 100644 --- a/modules/interventi/occupazione_tecnici.php +++ b/modules/interventi/occupazione_tecnici.php @@ -64,7 +64,7 @@ if (!empty($tecnici_selezionati)) { } // Blocco dei controlli se non sono presenti tecnici -if ( empty($tecnici) || setting('Alert occupazione tecnici')!=1 ) { +if (empty($tecnici) || setting('Alert occupazione tecnici') != 1) { return; } diff --git a/plugins/exportFE/src/FatturaElettronica.php b/plugins/exportFE/src/FatturaElettronica.php index 0ac1bdd34..5abcbe533 100755 --- a/plugins/exportFE/src/FatturaElettronica.php +++ b/plugins/exportFE/src/FatturaElettronica.php @@ -278,11 +278,10 @@ class FatturaElettronica */ public function save($directory) { - $name = 'Fattura Elettronica'; - $previous = $this->getFilename(); - $data = $this->getUploadData(); + $this->delete(); - Uploads::delete($previous, $data); + $name = 'Fattura Elettronica'; + $data = $this->getUploadData(); // Generazione nome XML $filename = $this->getFilename(true); @@ -308,6 +307,17 @@ class FatturaElettronica return ($result === false) ? null : $filename; } + /** + * Rimuove la fattura generata. + */ + public function delete() + { + $previous = $this->getFilename(); + $data = $this->getUploadData(); + + Uploads::delete($previous, $data); + } + /** * Restituisce il nome del file XML per la fattura elettronica. *