Miglioria controllo stato fattura elettronica

This commit is contained in:
Pek5892 2023-07-17 16:03:38 +02:00
parent eb932e8c0a
commit 99d0b4faaa
1 changed files with 476 additions and 635 deletions

View File

@ -34,14 +34,26 @@ use Modules\Iva\Aliquota;
use Util\XML;
$module = Modules::get($id_module);
$op = post('op');
if ($module['name'] == 'Fatture di vendita') {
$dir = 'entrata';
} else {
$dir = 'uscita';
}
switch (post('op')) {
// Controllo se la fattura è già stata inviata allo SDI
$stato_fe= $dbo->fetchOne('SELECT codice_stato_fe FROM co_documenti WHERE id = '.$fattura->id);
$ops = ['update', 'add_intervento', 'manage_documento_fe', 'manage_riga_fe', 'manage_articolo', 'manage_sconto', 'manage_riga', 'manage_descrizione', 'unlink_intervento', 'delete_riga', 'copy_riga', 'add_serial', 'add_articolo', 'edit-price'];
if ($dir == 'entrata' && $stato_fe['codice_stato_fe'] == 'WAIT' && in_array($op, $ops)) {
flash()->warning(tr('La fattura numero _NUM_ è già stata inviata allo SDI, non è possibile effettuare modifiche!', [
'_NUM_' => $fattura->numero_esterno,
]));
$op = null;
}
switch ($op) {
case 'add':
$idanagrafica = post('idanagrafica');
$data = post('data');
@ -71,14 +83,6 @@ switch (post('op')) {
$tipo = Tipo::find(post('idtipodocumento'));
$fattura->tipo()->associate($tipo);
// Controllo se la fattura è già stata inviata allo SDI
$stato_fe= $dbo->fetchOne('SELECT codice_stato_fe FROM co_documenti WHERE id = '.$fattura->id);
if ($dir == 'entrata' && $stato_fe['codice_stato_fe'] == 'WAIT') {
flash()->warning(tr('La fattura numero _NUM_ è già stata inviata allo SDI, non è possibile effettuare modifiche!', [
'_NUM_' => $fattura->numero_esterno,
]));
} else {
$data_fattura_precedente = $dbo->fetchOne('
SELECT
MAX(DATA) AS datamax
@ -240,7 +244,6 @@ switch (post('op')) {
}
}
flash()->info(tr('Fattura modificata correttamente!'));
}
break;
@ -405,14 +408,6 @@ switch (post('op')) {
case 'add_intervento':
$id_intervento = post('idintervento');
// Controllo se la fattura è già stata inviata allo SDI
$stato_fe= $dbo->fetchOne('SELECT codice_stato_fe FROM co_documenti WHERE id = '.$fattura->id);
if ($dir == 'entrata' && $stato_fe['codice_stato_fe'] == 'WAIT') {
flash()->warning(tr('La fattura numero _NUM_ è già stata inviata allo SDI, non è possibile effettuare modifiche!', [
'_NUM_' => $fattura->numero_esterno,
]));
} else {
if (!empty($id_record) && $id_intervento !== null) {
$copia_descrizione = post('copia_descrizione');
$intervento = $dbo->fetchOne('SELECT descrizione FROM in_interventi WHERE id = '.prepare($id_intervento));
@ -429,20 +424,11 @@ switch (post('op')) {
'_NUM_' => $idintervento,
]));
}
}
break;
case 'manage_documento_fe':
$data = Filter::getPOST();
// Controllo se la fattura è già stata inviata allo SDI
$stato_fe= $dbo->fetchOne('SELECT codice_stato_fe FROM co_documenti WHERE id = '.$fattura->id);
if ($dir == 'entrata' && $stato_fe['codice_stato_fe'] == 'WAIT') {
flash()->warning(tr('La fattura numero _NUM_ è già stata inviata allo SDI, non è possibile effettuare modifiche!', [
'_NUM_' => $fattura->numero_esterno,
]));
} else {
$ignore = [
'id_plugin',
'id_module',
@ -461,21 +447,12 @@ switch (post('op')) {
$fattura->save();
flash()->info(tr('Dati FE aggiornati correttamente!'));
}
break;
case 'manage_riga_fe':
$id_riga = post('id_riga');
// Controllo se la fattura è già stata inviata allo SDI
$stato_fe= $dbo->fetchOne('SELECT codice_stato_fe FROM co_documenti WHERE id = '.$fattura->id);
if ($dir == 'entrata' && $stato_fe['codice_stato_fe'] == 'WAIT') {
flash()->warning(tr('La fattura numero _NUM_ è già stata inviata allo SDI, non è possibile effettuare modifiche!', [
'_NUM_' => $fattura->numero_esterno,
]));
} else {
if ($id_riga != null) {
$riga = Articolo::find($id_riga) ?: Riga::find($id_riga);
$riga = $riga ?: Descrizione::find($id_riga);
@ -502,51 +479,6 @@ switch (post('op')) {
flash()->info(tr('Dati FE aggiornati correttamente!'));
}
}
break;
case 'manage_barcode':
foreach (post('qta') as $id_articolo => $qta) {
if ($id_articolo == '-id-') {
continue;
}
// Dati di input
$sconto = post('sconto')[$id_articolo];
$tipo_sconto = post('tipo_sconto')[$id_articolo];
$prezzo_unitario = post('prezzo_unitario')[$id_articolo];
$id_dettaglio_fornitore = post('id_dettaglio_fornitore')[$id_articolo];
if ($dir == 'entrata') {
$id_iva = ($fattura->anagrafica->idiva_vendite ?: $originale->idiva_vendita) ?: setting('Iva predefinita');
} else {
$id_iva = ($fattura->anagrafica->idiva_acquisti ?: setting('Iva predefinita'));
}
$id_conto = ($fattura->direzione == 'entrata') ? setting('Conto predefinito fatture di vendita') : setting('Conto predefinito fatture di acquisto');
if ($fattura->direzione == 'entrata' && !empty($originale->idconto_vendita)) {
$id_conto = $originale->idconto_vendita;
} elseif ($fattura->direzione == 'uscita' && !empty($originale->idconto_acquisto)) {
$id_conto = $originale->idconto_acquisto;
}
// Creazione articolo
$originale = ArticoloOriginale::find($id_articolo);
$articolo = Articolo::build($fattura, $originale);
$articolo->id_dettaglio_fornitore = $id_dettaglio_fornitore ?: null;
$articolo->setPrezzoUnitario($prezzo_unitario, $id_iva);
if ($dir == 'entrata') {
$articolo->costo_unitario = $originale->prezzo_acquisto;
}
$articolo->setSconto($sconto, $tipo_sconto);
$articolo->qta = $qta;
$articolo->idconto = $id_conto;
$articolo->save();
}
flash()->info(tr('Articoli aggiunti!'));
break;
@ -559,14 +491,6 @@ switch (post('op')) {
$articolo->id_dettaglio_fornitore = post('id_dettaglio_fornitore') ?: null;
}
// Controllo se la fattura è già stata inviata allo SDI
$stato_fe= $dbo->fetchOne('SELECT codice_stato_fe FROM co_documenti WHERE id = '.$fattura->id);
if ($dir == 'entrata' && $stato_fe['codice_stato_fe'] == 'WAIT') {
flash()->warning(tr('La fattura numero _NUM_ è già stata inviata allo SDI, non è possibile effettuare modifiche!', [
'_NUM_' => $fattura->numero_esterno,
]));
} else {
$qta = post('qta');
$articolo->descrizione = post('descrizione');
@ -604,7 +528,6 @@ switch (post('op')) {
// Ricalcolo inps, ritenuta e bollo
ricalcola_costiagg_fattura($id_record);
}
break;
@ -615,14 +538,6 @@ switch (post('op')) {
$sconto = Sconto::build($fattura);
}
// Controllo se la fattura è già stata inviata allo SDI
$stato_fe= $dbo->fetchOne('SELECT codice_stato_fe FROM co_documenti WHERE id = '.$fattura->id);
if ($dir == 'entrata' && $stato_fe['codice_stato_fe'] == 'WAIT') {
flash()->warning(tr('La fattura numero _NUM_ è già stata inviata allo SDI, non è possibile effettuare modifiche!', [
'_NUM_' => $fattura->numero_esterno,
]));
} else {
$sconto->idconto = post('idconto');
$sconto->calcolo_ritenuta_acconto = post('calcolo_ritenuta_acconto') ?: null;
@ -643,7 +558,7 @@ switch (post('op')) {
// Ricalcolo inps, ritenuta e bollo
ricalcola_costiagg_fattura($id_record);
}
break;
@ -654,14 +569,7 @@ switch (post('op')) {
$riga = Riga::build($fattura);
}
// Controllo se la fattura è già stata inviata allo SDI
$stato_fe= $dbo->fetchOne('SELECT codice_stato_fe FROM co_documenti WHERE id = '.$fattura->id);
if ($dir == 'entrata' && $stato_fe['codice_stato_fe'] == 'WAIT') {
flash()->warning(tr('La fattura numero _NUM_ è già stata inviata allo SDI, non è possibile effettuare modifiche!', [
'_NUM_' => $fattura->numero_esterno,
]));
} else {
$qta = post('qta');
$riga->descrizione = post('descrizione');
@ -694,7 +602,6 @@ switch (post('op')) {
// Ricalcolo inps, ritenuta e bollo
ricalcola_costiagg_fattura($id_record);
}
break;
@ -708,14 +615,7 @@ switch (post('op')) {
$riga->descrizione = post('descrizione');
$riga->note = post('note');
// Controllo se la fattura è già stata inviata allo SDI
$stato_fe= $dbo->fetchOne('SELECT codice_stato_fe FROM co_documenti WHERE id = '.$fattura->id);
if ($dir == 'entrata' && $stato_fe['codice_stato_fe'] == 'WAIT') {
flash()->warning(tr('La fattura numero _NUM_ è già stata inviata allo SDI, non è possibile effettuare modifiche!', [
'_NUM_' => $fattura->numero_esterno,
]));
} else {
$riga->save();
if (post('idriga') != null) {
@ -723,21 +623,12 @@ switch (post('op')) {
} else {
flash()->info(tr('Riga descrittiva aggiunta!'));
}
}
break;
// Scollegamento intervento da documento
case 'unlink_intervento':
if (!empty($id_record) && post('idriga') !== null) {
// Controllo se la fattura è già stata inviata allo SDI
$stato_fe= $dbo->fetchOne('SELECT codice_stato_fe FROM co_documenti WHERE id = '.$fattura->id);
if ($dir == 'entrata' && $stato_fe['codice_stato_fe'] == 'WAIT') {
flash()->warning(tr('La fattura numero _NUM_ è già stata inviata allo SDI, non è possibile effettuare modifiche!', [
'_NUM_' => $fattura->numero_esterno,
]));
} else {
$id_riga = post('idriga');
$type = post('type');
$riga = $fattura->getRiga($type, $id_riga);
@ -754,21 +645,13 @@ switch (post('op')) {
}
}
}
}
break;
// Scollegamento riga generica da documento
case 'delete_riga':
$id_righe = (array)post('righe');
// Controllo se la fattura è già stata inviata allo SDI
$stato_fe= $dbo->fetchOne('SELECT codice_stato_fe FROM co_documenti WHERE id = '.$fattura->id);
if ($dir == 'entrata' && $stato_fe['codice_stato_fe'] == 'WAIT') {
flash()->warning(tr('La fattura numero _NUM_ è già stata inviata allo SDI, non è possibile effettuare modifiche!', [
'_NUM_' => $fattura->numero_esterno,
]));
} else {
foreach ($id_righe as $id_riga) {
$riga = Articolo::find($id_riga) ?: Riga::find($id_riga);
$riga = $riga ?: Descrizione::find($id_riga);
@ -786,21 +669,13 @@ switch (post('op')) {
$riga = null;
flash()->info(tr('Righe eliminate!'));
}
}
break;
// Duplicazione riga
case 'copy_riga':
$id_righe = (array)post('righe');
// Controllo se la fattura è già stata inviata allo SDI
$stato_fe= $dbo->fetchOne('SELECT codice_stato_fe FROM co_documenti WHERE id = '.$fattura->id);
if ($dir == 'entrata' && $stato_fe['codice_stato_fe'] == 'WAIT') {
flash()->warning(tr('La fattura numero _NUM_ è già stata inviata allo SDI, non è possibile effettuare modifiche!', [
'_NUM_' => $fattura->numero_esterno,
]));
} else {
foreach ($id_righe as $id_riga) {
$riga = Articolo::find($id_riga) ?: Riga::find($id_riga);
$riga = $riga ?: Descrizione::find($id_riga);
@ -819,25 +694,15 @@ switch (post('op')) {
}
flash()->info(tr('Righe duplicate!'));
}
break;
case 'add_serial':
$articolo = Articolo::find(post('idriga'));
// Controllo se la fattura è già stata inviata allo SDI
$stato_fe= $dbo->fetchOne('SELECT codice_stato_fe FROM co_documenti WHERE id = '.$fattura->id);
if ($dir == 'entrata' && $stato_fe['codice_stato_fe'] == 'WAIT') {
flash()->warning(tr('La fattura numero _NUM_ è già stata inviata allo SDI, non è possibile effettuare modifiche!', [
'_NUM_' => $fattura->numero_esterno,
]));
} else {
$serials = (array) post('serial');
$articolo->serials = $serials;
}
break;
case 'update_position':
@ -953,14 +818,6 @@ switch (post('op')) {
$id_segment = post('id_segment');
$data = post('data');
// Controllo se la fattura è già stata inviata allo SDI
$stato_fe= $dbo->fetchOne('SELECT codice_stato_fe FROM co_documenti WHERE id = '.$fattura->id);
if ($dir == 'entrata' && $stato_fe['codice_stato_fe'] == 'WAIT') {
flash()->warning(tr('La fattura numero _NUM_ è già stata inviata allo SDI, non è possibile effettuare modifiche!', [
'_NUM_' => $fattura->numero_esterno,
]));
} else {
$anagrafica = $fattura->anagrafica;
$tipo = Tipo::where('descrizione', 'Nota di credito')->where('dir', 'entrata')->first();
@ -999,7 +856,7 @@ switch (post('op')) {
$id_record = $nota->id;
aggiorna_sedi_movimenti('documenti', $id_record);
}
break;
@ -1075,14 +932,7 @@ switch (post('op')) {
case 'add_articolo':
$id_articolo = post('id_articolo');
$barcode = post('barcode');
// Controllo se la fattura è già stata inviata allo SDI
$stato_fe= $dbo->fetchOne('SELECT codice_stato_fe FROM co_documenti WHERE id = '.$fattura->id);
if ($dir == 'entrata' && $stato_fe['codice_stato_fe'] == 'WAIT') {
flash()->warning(tr('La fattura numero _NUM_ è già stata inviata allo SDI, non è possibile effettuare modifiche!', [
'_NUM_' => $fattura->numero_esterno,
]));
} else {
if (!empty($barcode)) {
$id_articolo = $dbo->selectOne('mg_articoli', 'id', ['deleted_at' => null, 'attivo' => 1, 'barcode' => $barcode])['id'];
}
@ -1178,7 +1028,6 @@ switch (post('op')) {
$response['error'] = tr('Nessun articolo corrispondente a magazzino');
echo json_encode($response);
}
}
break;
// Controllo se impostare anagrafica azienda in base a tipologia documento
@ -1212,14 +1061,6 @@ switch (post('op')) {
$righe = $post['righe'];
$numero_totale = 0;
// Controllo se la fattura è già stata inviata allo SDI
$stato_fe= $dbo->fetchOne('SELECT codice_stato_fe FROM co_documenti WHERE id = '.$fattura->id);
if ($dir == 'entrata' && $stato_fe['codice_stato_fe'] == 'WAIT') {
flash()->warning(tr('La fattura numero _NUM_ è già stata inviata allo SDI, non è possibile effettuare modifiche!', [
'_NUM_' => $fattura->numero_esterno,
]));
} else {
foreach ($righe as $riga) {
if (($riga['id']) != null) {
$articolo = Articolo::find($riga['id']);
@ -1247,7 +1088,7 @@ switch (post('op')) {
} else {
flash()->warning(tr('Nessun prezzo modificato!'));
}
}
break;
}