1
0
mirror of https://github.com/devcode-it/openstamanager.git synced 2024-12-25 06:55:05 +01:00

Aggiunta gestione sconti multipli in import FE

This commit is contained in:
Fabio Lovato 2019-02-08 19:39:04 +01:00
parent 139b83b983
commit 851c9ad007

View File

@ -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();