Skip to content

Commit 7818330

Browse files
committed
fix: gestione fatturazione attività per anagrafiche con dichiarazione d'intento
1 parent 6e2b22e commit 7818330

3 files changed

Lines changed: 81 additions & 1 deletion

File tree

modules/fatture/actions.php

Lines changed: 40 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -437,7 +437,21 @@
437437
$riga->save();
438438
}
439439

440-
aggiungi_intervento_in_fattura($id_intervento, $id_record, post('descrizione'), post('idiva'), post('idconto'), post('id_rivalsa_inps'), post('id_ritenuta_acconto'), post('calcolo_ritenuta_acconto'));
440+
$id_iva_intervento = post('idiva');
441+
442+
// Se la fattura ha una dichiarazione d'intento, usa l'aliquota IVA N3.5
443+
if (!empty($fattura->id_dichiarazione_intento)) {
444+
$iva_dichiarazione = $database->table('co_iva')
445+
->where('codice_natura_fe', 'N3.5')
446+
->where('deleted_at', null)
447+
->first();
448+
449+
if (!empty($iva_dichiarazione)) {
450+
$id_iva_intervento = $iva_dichiarazione->id;
451+
}
452+
}
453+
454+
aggiungi_intervento_in_fattura($id_intervento, $id_record, post('descrizione'), $id_iva_intervento, post('idconto'), post('id_rivalsa_inps'), post('id_ritenuta_acconto'), post('calcolo_ritenuta_acconto'));
441455

442456
flash()->info(tr('Intervento _NUM_ aggiunto!', [
443457
'_NUM_' => $idintervento,
@@ -813,6 +827,19 @@
813827

814828
if (post('importa_sessioni')) {
815829
$id_iva = $anagrafica->idiva_vendite ?: setting('Iva predefinita');
830+
831+
// Se la fattura ha una dichiarazione d'intento, usa l'aliquota IVA N3.5
832+
if (!empty($fattura->id_dichiarazione_intento)) {
833+
$iva_dichiarazione = $database->table('co_iva')
834+
->where('codice_natura_fe', 'N3.5')
835+
->where('deleted_at', null)
836+
->first();
837+
838+
if (!empty($iva_dichiarazione)) {
839+
$id_iva = $iva_dichiarazione->id;
840+
}
841+
}
842+
816843
aggiungi_sessioni_in_fattura($documento->id, $fattura->id, $id_iva, $id_conto, $id_rivalsa_inps, $id_ritenuta_acconto, $calcolo_ritenuta_acconto);
817844
}
818845
}
@@ -831,6 +858,18 @@
831858
$copia->id_rivalsa_inps = $id_rivalsa_inps;
832859
$copia->ritenuta_contributi = $ritenuta_contributi;
833860

861+
// Se la fattura ha una dichiarazione d'intento, applica l'aliquota IVA N3.5
862+
if (!empty($fattura->id_dichiarazione_intento)) {
863+
$iva_dichiarazione = $database->table('co_iva')
864+
->where('codice_natura_fe', 'N3.5')
865+
->where('deleted_at', null)
866+
->first();
867+
868+
if (!empty($iva_dichiarazione)) {
869+
$copia->idiva = $iva_dichiarazione->id;
870+
}
871+
}
872+
834873
// Aggiornamento seriali dalla riga dell'ordine
835874
if ($copia->isArticolo()) {
836875
$serials = is_array(post('serial')[$riga->id]) ? post('serial')[$riga->id] : [];

modules/interventi/bulk.php

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -174,6 +174,21 @@
174174
}
175175
}
176176

177+
// Recupera la fattura per verificare se ha una dichiarazione d'intento
178+
$fattura = Fattura::find($id_documento);
179+
180+
// Se la fattura ha una dichiarazione d'intento, usa l'aliquota IVA N3.5
181+
if (!empty($fattura->id_dichiarazione_intento)) {
182+
$iva_dichiarazione = $dbo->table('co_iva')
183+
->where('codice_natura_fe', 'N3.5')
184+
->where('deleted_at', null)
185+
->first();
186+
187+
if (!empty($iva_dichiarazione)) {
188+
$id_iva = $iva_dichiarazione->id;
189+
}
190+
}
191+
177192
$descrizione = str_replace("'", ' ', strip_tags((string) $module->replacePlaceholders($intervento['id'], setting('Descrizione personalizzata in fatturazione')))) ?: tr('Attività numero _NUM_ del _DATE_', [
178193
'_NUM_' => $intervento['codice_intervento'],
179194
'_DATE_' => Translator::dateToLocale($intervento['data']),

modules/interventi/modutil.php

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -178,6 +178,19 @@ function aggiungi_intervento_in_fattura($id_intervento, $id_fattura, $descrizion
178178
$intervento = Intervento::find($id_intervento);
179179
$codice = $intervento->codice;
180180

181+
// Se la fattura ha una dichiarazione d'intento, usa l'aliquota IVA N3.5
182+
if (!empty($fattura->id_dichiarazione_intento)) {
183+
$database = database();
184+
$iva_dichiarazione = $database->table('co_iva')
185+
->where('codice_natura_fe', 'N3.5')
186+
->where('deleted_at', null)
187+
->first();
188+
189+
if (!empty($iva_dichiarazione)) {
190+
$id_iva = $iva_dichiarazione->id;
191+
}
192+
}
193+
181194
// Riga di descrizione
182195
$riga = Descrizione::build($fattura);
183196
$riga->descrizione = $descrizione;
@@ -234,6 +247,19 @@ function aggiungi_sessioni_in_fattura($id_intervento, $id_fattura, $id_iva, $id_
234247
$intervento = Intervento::find($id_intervento);
235248
$sessioni = $intervento->sessioni;
236249

250+
// Se la fattura ha una dichiarazione d'intento, usa l'aliquota IVA N3.5
251+
if (!empty($fattura->id_dichiarazione_intento)) {
252+
$database = database();
253+
$iva_dichiarazione = $database->table('co_iva')
254+
->where('codice_natura_fe', 'N3.5')
255+
->where('deleted_at', null)
256+
->first();
257+
258+
if (!empty($iva_dichiarazione)) {
259+
$id_iva = $iva_dichiarazione->id;
260+
}
261+
}
262+
237263
$decimals = setting('Cifre decimali per quantità');
238264

239265
$ore_di_lavoro = $sessioni->groupBy(fn ($item, $key) => $item['prezzo_orario'].'|'.$item['sconto_unitario'].'|'.$item['tipo_sconto']);

0 commit comments

Comments
 (0)