diff --git a/modules/contratti/actions.php b/modules/contratti/actions.php index c2dbefa7d..dfdaf4dd2 100644 --- a/modules/contratti/actions.php +++ b/modules/contratti/actions.php @@ -28,6 +28,7 @@ use Modules\Contratti\Components\Riga; use Modules\Contratti\Components\Sconto; use Modules\Contratti\Contratto; use Modules\Contratti\Stato; +use Modules\Iva\Aliquota; use Plugins\PianificazioneInterventi\Promemoria; switch (post('op')) { @@ -563,7 +564,11 @@ switch (post('op')) { $articolo->qta = 1; $articolo->costo_unitario = $originale->prezzo_acquisto; - $id_iva = ($contratto->anagrafica->idiva_vendite ?: $originale->idiva_vendita) ?: setting('Iva predefinita'); + // L'aliquota dell'articolo ha precedenza solo se ha aliquota a 0, altrimenti anagrafica -> articolo -> impostazione + if ($originale->idiva_vendita) { + $aliquota_articolo = floatval(Aliquota::find($originale->idiva_vendita)->percentuale); + } + $id_iva = ($contratto->anagrafica->idiva_vendite && (!$originale->idiva_vendita || $aliquota_articolo != 0) ? $contratto->anagrafica->idiva_vendite : $originale->idiva_vendita) ?: setting('Iva predefinita'); $id_anagrafica = $contratto->idanagrafica; $prezzi_ivati = setting('Utilizza prezzi di vendita comprensivi di IVA'); diff --git a/modules/ddt/actions.php b/modules/ddt/actions.php index 8d5485841..efd23738e 100755 --- a/modules/ddt/actions.php +++ b/modules/ddt/actions.php @@ -29,6 +29,7 @@ use Modules\DDT\Components\Sconto; use Modules\DDT\DDT; use Modules\DDT\Stato; use Modules\DDT\Tipo; +use Modules\Iva\Aliquota; $module = Modules::get($id_module); @@ -575,8 +576,12 @@ switch (filter('op')) { $articolo->qta = 1; $articolo->costo_unitario = $originale->prezzo_acquisto; + // L'aliquota dell'articolo ha precedenza solo se ha aliquota a 0, altrimenti anagrafica -> articolo -> impostazione if ($dir == 'entrata') { - $id_iva = ($ddt->anagrafica->idiva_vendite ?: $originale->idiva_vendita) ?: setting('Iva predefinita'); + if ($originale->idiva_vendita) { + $aliquota_articolo = floatval(Aliquota::find($originale->idiva_vendita)->percentuale); + } + $id_iva = ($ddt->anagrafica->idiva_vendite && (!$originale->idiva_vendita || $aliquota_articolo != 0) ? $ddt->anagrafica->idiva_vendite : $originale->idiva_vendita) ?: setting('Iva predefinita'); } else { $id_iva = ($ddt->anagrafica->idiva_acquisti ?: setting('Iva predefinita')); } diff --git a/modules/fatture/actions.php b/modules/fatture/actions.php index c38bc29ea..f9deeb9a0 100755 --- a/modules/fatture/actions.php +++ b/modules/fatture/actions.php @@ -962,7 +962,11 @@ switch ($op) { $articolo->idconto = $id_conto; if ($dir == 'entrata') { - $id_iva = ($fattura->anagrafica->idiva_vendite ?: $originale->idiva_vendita) ?: setting('Iva predefinita'); + // L'aliquota dell'articolo ha precedenza solo se ha aliquota a 0, altrimenti anagrafica -> articolo -> impostazione + if ($originale->idiva_vendita) { + $aliquota_articolo = floatval(Aliquota::find($originale->idiva_vendita)->percentuale); + } + $id_iva = ($fattura->anagrafica->idiva_vendite && (!$originale->idiva_vendita || $aliquota_articolo != 0) ? $fattura->anagrafica->idiva_vendite : $originale->idiva_vendita) ?: setting('Iva predefinita'); } else { $id_iva = ($fattura->anagrafica->idiva_acquisti ?: setting('Iva predefinita')); } diff --git a/modules/interventi/actions.php b/modules/interventi/actions.php index 1eb657558..40b5303c6 100644 --- a/modules/interventi/actions.php +++ b/modules/interventi/actions.php @@ -31,6 +31,7 @@ use Modules\Interventi\Components\Sconto; use Modules\Interventi\Components\Sessione; use Modules\Interventi\Intervento; use Modules\Interventi\Stato; +use Modules\Iva\Aliquota; use Modules\TipiIntervento\Tipo as TipoSessione; use Plugins\ComponentiImpianti\Componente; use Plugins\ListinoClienti\DettaglioPrezzo; @@ -1064,7 +1065,11 @@ switch (post('op')) { $articolo->qta = 1; $articolo->costo_unitario = $originale->prezzo_acquisto; - $id_iva = ($intervento->anagrafica->idiva_vendite ?: $originale->idiva_vendita) ?: setting('Iva predefinita'); + // L'aliquota dell'articolo ha precedenza solo se ha aliquota a 0, altrimenti anagrafica -> articolo -> impostazione + if ($originale->idiva_vendita) { + $aliquota_articolo = floatval(Aliquota::find($originale->idiva_vendita)->percentuale); + } + $id_iva = ($intervento->anagrafica->idiva_vendite && (!$originale->idiva_vendita || $aliquota_articolo != 0) ? $intervento->anagrafica->idiva_vendite : $originale->idiva_vendita) ?: setting('Iva predefinita'); $id_anagrafica = $intervento->idanagrafica; $prezzi_ivati = setting('Utilizza prezzi di vendita comprensivi di IVA'); diff --git a/modules/ordini/actions.php b/modules/ordini/actions.php index 1e2882775..38e74f126 100755 --- a/modules/ordini/actions.php +++ b/modules/ordini/actions.php @@ -22,6 +22,7 @@ include_once __DIR__.'/../../core.php'; use Carbon\Carbon; use Modules\Anagrafiche\Anagrafica; use Modules\Articoli\Articolo as ArticoloOriginale; +use Modules\Iva\Aliquota; use Modules\Ordini\Components\Articolo; use Modules\Ordini\Components\Descrizione; use Modules\Ordini\Components\Riga; @@ -624,7 +625,11 @@ switch (post('op')) { $articolo->confermato = ($dir == 'entrata' ? setting('Conferma automaticamente le quantità negli ordini cliente') : setting('Conferma automaticamente le quantità negli ordini fornitore')); if ($dir == 'entrata') { - $id_iva = ($ordine->anagrafica->idiva_vendite ?: $originale->idiva_vendita) ?: setting('Iva predefinita'); + // L'aliquota dell'articolo ha precedenza solo se ha aliquota a 0, altrimenti anagrafica -> articolo -> impostazione + if ($originale->idiva_vendita) { + $aliquota_articolo = floatval(Aliquota::find($originale->idiva_vendita)->percentuale); + } + $id_iva = ($ordine->anagrafica->idiva_vendite && (!$originale->idiva_vendita || $aliquota_articolo != 0) ? $ordine->anagrafica->idiva_vendite : $originale->idiva_vendita) ?: setting('Iva predefinita'); } else { $id_iva = ($ordine->anagrafica->idiva_acquisti ?: setting('Iva predefinita')); } diff --git a/modules/preventivi/actions.php b/modules/preventivi/actions.php index bf7727fa4..696ac5e4e 100755 --- a/modules/preventivi/actions.php +++ b/modules/preventivi/actions.php @@ -22,6 +22,7 @@ include_once __DIR__.'/../../core.php'; use Carbon\Carbon; use Modules\Anagrafiche\Anagrafica; use Modules\Articoli\Articolo as ArticoloOriginale; +use Modules\Iva\Aliquota; use Modules\Preventivi\Components\Articolo; use Modules\Preventivi\Components\Descrizione; use Modules\Preventivi\Components\Riga; @@ -438,7 +439,11 @@ switch (post('op')) { $articolo->costo_unitario = $originale->prezzo_acquisto; $articolo->confermato = setting('Conferma automaticamente le quantità nei preventivi'); - $id_iva = ($preventivo->anagrafica->idiva_vendite ?: $originale->idiva_vendita) ?: setting('Iva predefinita'); + // L'aliquota dell'articolo ha precedenza solo se ha aliquota a 0, altrimenti anagrafica -> articolo -> impostazione + if ($originale->idiva_vendita) { + $aliquota_articolo = floatval(Aliquota::find($originale->idiva_vendita)->percentuale); + } + $id_iva = ($preventivo->anagrafica->idiva_vendite && (!$originale->idiva_vendita || $aliquota_articolo != 0) ? $preventivo->anagrafica->idiva_vendite : $originale->idiva_vendita) ?: setting('Iva predefinita'); $id_anagrafica = $preventivo->idanagrafica; $prezzi_ivati = setting('Utilizza prezzi di vendita comprensivi di IVA');