Correzione per generazione automatica Fattura elettronica

This commit is contained in:
Dasc3er 2020-11-20 14:49:32 +01:00
parent 482b06a974
commit 7d223890d7
4 changed files with 40 additions and 21 deletions

View File

@ -79,7 +79,7 @@ class Anagrafiche extends Resource implements RetrieveInterface, CreateInterface
// Filtro per Ragione sociale // Filtro per Ragione sociale
if (!empty($conditions['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 // Filtri aggiuntivi predefiniti

View File

@ -137,27 +137,36 @@ switch (post('op')) {
$fattura->save(); $fattura->save();
// Operazioni automatiche per le Fatture Elettroniche
if ($fattura->direzione == 'entrata' && $stato_precedente->descrizione == 'Bozza' && $stato['descrizione'] == 'Emessa') { 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 // 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); $checks = FatturaElettronica::controllaFattura($fattura);
if ($stato_fe && empty($checks)) { $fattura_elettronica = new FatturaElettronica($id_record);
try { if ($abilita_genera && empty($checks)) {
$fattura_pa = new FatturaElettronica($id_record); $file = $fattura_elettronica->save(base_dir().'/'.FatturaElettronica::getDirectory());
$file = $fattura_pa->save(base_dir().'/'.FatturaElettronica::getDirectory());
flash()->info(tr('Fattura elettronica generata correttamente!')); flash()->info(tr('Fattura elettronica generata correttamente!'));
if (!$fattura_pa->isValid()) { if (!$fattura_elettronica->isValid()) {
$errors = $fattura_pa->getErrors(); $errors = $fattura_elettronica->getErrors();
flash()->warning(tr('La fattura elettronica potrebbe avere delle irregolarità!').' '.tr('Controllare i seguenti campi: _LIST_', [ flash()->warning(tr('La fattura elettronica potrebbe avere delle irregolarità!').' '.tr('Controllare i seguenti campi: _LIST_', [
'_LIST_' => implode(', ', $errors), '_LIST_' => implode(', ', $errors),
]).'.'); ]).'.');
} }
} catch (UnexpectedValueException $e) {
} }
} 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').':'; $message = tr('La fattura elettronica non è stata generata a causa di alcune informazioni mancanti').':';
foreach ($checks as $check) { foreach ($checks as $check) {

View File

@ -64,7 +64,7 @@ if (!empty($tecnici_selezionati)) {
} }
// Blocco dei controlli se non sono presenti tecnici // 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; return;
} }

View File

@ -278,11 +278,10 @@ class FatturaElettronica
*/ */
public function save($directory) public function save($directory)
{ {
$name = 'Fattura Elettronica'; $this->delete();
$previous = $this->getFilename();
$data = $this->getUploadData();
Uploads::delete($previous, $data); $name = 'Fattura Elettronica';
$data = $this->getUploadData();
// Generazione nome XML // Generazione nome XML
$filename = $this->getFilename(true); $filename = $this->getFilename(true);
@ -308,6 +307,17 @@ class FatturaElettronica
return ($result === false) ? null : $filename; 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. * Restituisce il nome del file XML per la fattura elettronica.
* *