diff --git a/plugins/importFE/src/FatturaElettronica.php b/plugins/importFE/src/FatturaElettronica.php index 513c79d79..e82b49d41 100644 --- a/plugins/importFE/src/FatturaElettronica.php +++ b/plugins/importFE/src/FatturaElettronica.php @@ -221,19 +221,67 @@ class FatturaElettronica } $sconti = $riga['ScontoMaggiorazione']; + if (!empty($sconti)) { - foreach ($sconti as $key => $sconto) { - $tipo = !empty($sconto['Percentuale']) ? 'PRC' : 'EUR'; - $unitario = $sconto['Percentuale'] ?: $sconto['Importo']; + if ($sconti['Percentuale'] || $sconti['Importo']) { + $tipo = !empty($sconti['Percentuale']) ? 'PRC' : 'EUR'; + $unitario = $sconti['Percentuale'] ?: $sconti['Importo']; //SConto o MaGgiorazione - $unitario = ($sconto['Tipo'] == 'SC') ? $unitario : -$unitario; + $unitario = ($sconti['Tipo'] == 'SC') ? $unitario : -$unitario; if (!empty($unitario)) { $obj->sconto_unitario = $unitario; $obj->tipo_sconto = $tipo; } } + + // Sconti multipli + else { + $sconto = $sconti[0]['Percentuale'] ? $sconti[0]['Percentuale'] : $sconti['Percentuale']; + $tipo = !empty($sconto) ? 'PRC' : 'EUR'; + + $sconto_totale = 0; + if ($tipo == 'PRC') { + /** + * Trasformo un eventuale sconto percentuale combinato in più + * sconti: + * Esempio: + * 40% + 30% è uno sconto del 42% + */ + $prezzo_intero = $riga['PrezzoUnitario'] * $riga['Quantita']; + $prezzo_scontato = $prezzo_intero; + + foreach ($sconti as $scontor) { + $prezzo_scontato -= $prezzo_scontato / 100 * $scontor['Percentuale']; + } + + // Ricavo la percentuale finale di sconto con una proporzione + $percentuale_totale = ( 1 - ($prezzo_scontato / $prezzo_intero) ) * 100; + + if (!empty($percentuale_totale)) { + $obj->sconto_unitario = $percentuale_totale; + $obj->tipo_sconto = $tipo; + } + } + + else { + // Combino gli sconti tra loro + foreach ($sconti as $sconto) { + $unitario = $sconto['Percentuale'] ?: $sconto['Importo']; + + //Sconto o Maggiorazione + $unitario = ($sconto['Tipo'] == 'SC') ? $unitario : -$unitario; + + $sconto_totale += $unitario; + } + + if (!empty($unitario)) { + $obj->sconto_unitario = $sconto_totale; + $obj->tipo_sconto = $tipo; + } + } + } } $obj->save();