1
0
mirror of https://github.com/devcode-it/openstamanager.git synced 2024-12-29 09:11:11 +01:00

Correzione ricalcolo scadenze

This commit is contained in:
Thomas Zilio 2019-11-08 15:50:07 +01:00
parent ff6358ba88
commit 66c038036d
2 changed files with 43 additions and 45 deletions

View File

@ -105,51 +105,7 @@ switch (post('op')) {
$fattura->save();
// Operazioni sulla dichiarazione d'intento
if (!empty($dichiarazione_precedente) && $dichiarazione_precedente->id != $fattura->id_dichiarazione_intento) {
// Correzione dichiarazione precedente
$dichiarazione_precedente->fixTotale();
$dichiarazione_precedente->save();
// Correzione nuova dichiarazione
$dichiarazione = $fattura->dichiarazione;
if (!empty($dichiarazione)) {
$dichiarazione->fixTotale();
$dichiarazione->save();
}
}
// Ricalcolo inps, ritenuta e bollo (se la fattura non è stata pagata)
ricalcola_costiagg_fattura($id_record);
// Elimino la scadenza e tutti i movimenti, poi se la fattura è emessa le ricalcolo
if ($stato['descrizione'] == 'Bozza' or $stato['descrizione'] == 'Annullata') {
elimina_scadenze($id_record);
//elimina_movimenti($id_record, 0);
//elimino movimento anche prima nota (se pagata o parzialmente pagata)
elimina_movimenti($id_record, 1);
} elseif ($stato['descrizione'] == 'Emessa') {
elimina_scadenze($id_record);
elimina_movimenti($id_record, 0);
} elseif (($stato['descrizione'] == 'Pagato' or $stato['descrizione'] == 'Parzialmente pagato') and ($dbo->fetchNum('SELECT id FROM co_scadenziario WHERE iddocumento = '.prepare($id_record)) == 0)) {
// aggiungo la scadenza come già pagata
aggiungi_scadenza($id_record, null, 1);
aggiungi_movimento($id_record, $dir);
}
// Se la fattura è in stato "Emessa" posso inserirla in scadenzario e aprire il mastrino cliente
if ($stato['descrizione'] == 'Emessa') {
aggiungi_scadenza($id_record);
aggiungi_movimento($id_record, $dir);
}
if ($stato_precedente->descrizione == 'Bozza' && $stato['descrizione'] == 'Emessa') {
// Generazione numero fattura se non presente
if (empty($fattura->numero_esterno)) {
$fattura->numero_esterno = Fattura::getNextNumeroSecondario($fattura->data, $fattura->direzione, $fattura->id_segment);
$fattura->save();
}
// 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);

View File

@ -496,7 +496,49 @@ class Fattura extends Document
$this->attributes['rivalsainps'] = $this->rivalsa_inps;
$this->attributes['ritenutaacconto'] = $this->ritenuta_acconto;
return parent::save($options);
// Informazioni sul cambio dei valori
$stato_precedente = Stato::find($this->original['idstatodocumento']);
$dichiarazione_precedente = Dichiarazione::find($this->original['id_dichiarazione_intento']);
// Generazione numero fattura se non presente
if ($stato_precedente->descrizione == 'Bozza' && $this->stato['descrizione'] == 'Emessa' && empty($this->numero_esterno)) {
$this->numero_esterno = self::getNextNumeroSecondario($this->data, $this->direzione, $this->id_segment);
}
// Salvataggio effettivo
$result = parent::save($options);
// Operazioni al cambiamento di stato
if (
in_array($stato_precedente->descrizione, ['Bozza', 'Annullata'])
&& !in_array($this->stato['descrizione'], ['Bozza', 'Annullata'])
) {
// Registrazione scadenze
$this->registraScadenze($this->stato['descrizione'] == 'Pagato');
// Registrazione movimenti
aggiungi_movimento($this->id, $this->direzione);
} elseif (in_array($this->stato['descrizione'], ['Bozza', 'Annullata'])) {
$this->rimuoviScadenze();
elimina_movimenti($this->id, 1);
}
// Operazioni sulla dichiarazione d'intento
if (!empty($dichiarazione_precedente) && $dichiarazione_precedente->id != $this->id_dichiarazione_intento) {
// Correzione dichiarazione precedente
$dichiarazione_precedente->fixTotale();
$dichiarazione_precedente->save();
// Correzione nuova dichiarazione
$dichiarazione = Dichiarazione::find($this->id_dichiarazione_intento);
if (!empty($dichiarazione)) {
$dichiarazione->fixTotale();
$dichiarazione->save();
}
}
return $result;
}
public function delete()