Spostamento generazione xml nella classe Fattura

This commit is contained in:
MatteoPistorello 2022-02-16 15:56:36 +01:00
parent 619e4f6c57
commit 448b79ade8
2 changed files with 70 additions and 50 deletions

View File

@ -64,8 +64,6 @@ switch (post('op')) {
break; break;
case 'update': case 'update':
$stato_precedente = $fattura->stato;
$stato = Stato::find(post('idstatodocumento')); $stato = Stato::find(post('idstatodocumento'));
$fattura->stato()->associate($stato); $fattura->stato()->associate($stato);
@ -145,59 +143,45 @@ switch (post('op')) {
$fattura->setScontoFinale(post('sconto_finale'), post('tipo_sconto_finale')); $fattura->setScontoFinale(post('sconto_finale'), post('tipo_sconto_finale'));
$fattura->save(); $results = $fattura->save();
$message = '';
// Operazioni automatiche per le Fatture Elettroniche foreach ($results as $numero => $result) {
if ($fattura->direzione == 'entrata' && $stato_precedente->descrizione == 'Bozza' && $stato['descrizione'] == 'Emessa') { foreach ($result as $title => $links) {
$stato_fe = $database->fetchOne('SELECT * FROM fe_stati_documento WHERE codice = '.prepare($fattura->codice_stato_fe)); foreach ($links as $link => $errors) {
$abilita_genera = empty($fattura->codice_stato_fe) || intval($stato_fe['is_generabile']); if (empty($title)) {
flash()->warning(tr('La fattura elettronica num. _NUM_ potrebbe avere delle irregolarità!', [
// Generazione automatica della Fattura Elettronica '_NUM_' => $numero,
$checks = FatturaElettronica::controllaFattura($fattura); ]).' '.tr('Controllare i seguenti campi: _LIST_', [
$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!'));
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), '_LIST_' => implode(', ', $errors),
]).'.'); ]).'.');
} } else {
}
// 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) {
$message .= ' $message .= '
<p><b>'.$check['name'].' '.$check['link'].'</b></p> <p><b>'.$title.' '.$link.'</b></p>
<ul>'; <ul>';
foreach ($check['errors'] as $error) { foreach ($errors as $error) {
if (!empty($error)) { if (!empty($error)) {
$message .= ' $message .= '
<li>'.$error.'</li>'; <li>'.$error.'</li>';
} }
} }
$message .= ' $message .= '
</ul>'; </ul>';
}
}
}
} }
if ($message) {
// Messaggi informativi sulle problematiche
$message = tr('La fattura elettronica numero _NUM_ non è stata generata a causa di alcune informazioni mancanti', [
'_NUM_' => $numero,
]).':'.$message;
flash()->warning($message); flash()->warning($message);
} }
}
aggiorna_sedi_movimenti('documenti', $id_record); aggiorna_sedi_movimenti('documenti', $id_record);

View File

@ -565,7 +565,7 @@ class Fattura extends Document
$is_fiscale = $this->isFiscale(); $is_fiscale = $this->isFiscale();
// Salvataggio effettivo // Salvataggio effettivo
$result = parent::save($options); parent::save($options);
// Fix dei campi statici // Fix dei campi statici
$this->id_riga_bollo = $this->gestoreBollo->manageRigaMarcaDaBollo(); $this->id_riga_bollo = $this->gestoreBollo->manageRigaMarcaDaBollo();
@ -581,7 +581,7 @@ class Fattura extends Document
} }
// Salvataggio effettivo // Salvataggio effettivo
$result = parent::save($options); parent::save($options);
// Operazioni al cambiamento di stato // Operazioni al cambiamento di stato
// Bozza o Annullato -> Stato diverso da Bozza o Annullato // Bozza o Annullato -> Stato diverso da Bozza o Annullato
@ -621,6 +621,42 @@ class Fattura extends Document
} }
} }
// Operazioni automatiche per le Fatture Elettroniche
if ($this->direzione == 'entrata' && $stato_precedente->descrizione == 'Bozza' && $this->stato['descrizione'] == 'Emessa') {
$stato_fe = database()->fetchOne('SELECT * FROM fe_stati_documento WHERE codice = '.prepare($this->codice_stato_fe));
$abilita_genera = empty($this->codice_stato_fe) || intval($stato_fe['is_generabile']);
// Generazione automatica della Fattura Elettronica
$checks = FatturaElettronica::controllaFattura($this);
$fattura_elettronica = new FatturaElettronica($this->id);
if ($abilita_genera && empty($checks)) {
$fattura_elettronica->save(base_dir().'/'.FatturaElettronica::getDirectory());
if (!$fattura_elettronica->isValid()) {
$errors = $fattura_elettronica->getErrors();
$result[$this->numero_esterno][0][0] = $errors;
}
} 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();
}
foreach ($checks as $check) {
$errors = [];
foreach ($check['errors'] as $error) {
if (!empty($error)) {
$errors = $error;
}
}
if (!empty($errors)) {
$result[$this->numero_esterno][$check['name']][$check['link']] = $check['errors'];
}
}
}
}
return $result; return $result;
} }