mirror of
https://github.com/devcode-it/openstamanager.git
synced 2025-02-17 12:00:46 +01:00
Merge remote-tracking branch 'origin/master'
This commit is contained in:
commit
5473baf226
@ -70,6 +70,10 @@ function sum($first, $second = null, $decimals = 4)
|
|||||||
*/
|
*/
|
||||||
function calcola_sconto($data)
|
function calcola_sconto($data)
|
||||||
{
|
{
|
||||||
|
if (!isset($data['cumulativo'])) {
|
||||||
|
$data['cumulativo'] = true;
|
||||||
|
}
|
||||||
|
|
||||||
if ($data['tipo'] == 'PRC') {
|
if ($data['tipo'] == 'PRC') {
|
||||||
$result = 0;
|
$result = 0;
|
||||||
|
|
||||||
@ -80,7 +84,9 @@ function calcola_sconto($data)
|
|||||||
$discount = $price / 100 * floatval($percentage);
|
$discount = $price / 100 * floatval($percentage);
|
||||||
|
|
||||||
$result += $discount;
|
$result += $discount;
|
||||||
$price -= $discount;
|
if ($data['cumulativo']) {
|
||||||
|
$price -= $discount;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
$result = floatval($data['sconto']);
|
$result = floatval($data['sconto']);
|
||||||
|
@ -223,36 +223,49 @@ class FatturaOrdinaria extends FatturaElettronica
|
|||||||
// Sconti e maggiorazioni
|
// Sconti e maggiorazioni
|
||||||
$sconti = $riga['ScontoMaggiorazione'];
|
$sconti = $riga['ScontoMaggiorazione'];
|
||||||
if (!empty($sconti)) {
|
if (!empty($sconti)) {
|
||||||
|
$sconto_unitario = 0;
|
||||||
$sconti = $sconti[0] ? $sconti : [$sconti];
|
$sconti = $sconti[0] ? $sconti : [$sconti];
|
||||||
$tipo = !empty($sconti[0]['Percentuale']) ? 'PRC' : 'UNT';
|
|
||||||
|
|
||||||
$lista = [];
|
// Determina il tipo di sconto in caso di sconti misti UNT e PRC
|
||||||
foreach ($sconti as $sconto) {
|
foreach ($sconti as $sconto) {
|
||||||
$unitario = $sconto['Percentuale'] ?: $sconto['Importo'];
|
$tipo_sconto = !empty($sconto['Importo']) ? 'UNT' : 'PRC';
|
||||||
|
if(!empty($tipo) && $tipo_sconto!=$tipo){
|
||||||
// Sconto o Maggiorazione
|
$tipo = 'UNT';
|
||||||
$lista[] = ($sconto['Tipo'] == 'SC') ? $unitario : -$unitario;
|
} else{
|
||||||
|
$tipo = $tipo_sconto;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($tipo == 'PRC') {
|
foreach ($sconti as $sconto) {
|
||||||
$elenco = implode('+', $lista);
|
$unitario = $sconto['Importo'] ?: $sconto['Percentuale'];
|
||||||
$sconto = calcola_sconto([
|
|
||||||
'sconto' => $elenco,
|
|
||||||
'prezzo' => $obj->prezzo_unitario,
|
|
||||||
'tipo' => 'PRC',
|
|
||||||
'qta' => $obj->qta,
|
|
||||||
]);
|
|
||||||
|
|
||||||
/*
|
// Sconto o Maggiorazione
|
||||||
* Trasformazione di sconti multipli in sconto percentuale combinato.
|
$sconto_riga = ($sconto['Tipo'] == 'SC') ? $unitario : -$unitario;
|
||||||
* Esempio: 40% + 30% è uno sconto del 42%.
|
|
||||||
*/
|
$tipo_sconto = !empty($sconto['Importo']) ? 'UNT' : 'PRC';
|
||||||
$sconto_unitario = $sconto * 100 / $obj->imponibile;
|
if ($tipo_sconto == 'PRC') {
|
||||||
} else {
|
$sconto_calcolato = calcola_sconto([
|
||||||
$sconto_unitario = sum($lista);
|
'sconto' => $sconto_riga,
|
||||||
|
'prezzo' => $obj->prezzo_unitario,
|
||||||
|
'tipo' => 'PRC',
|
||||||
|
'qta' => $obj->qta,
|
||||||
|
'cumulativo' => false,
|
||||||
|
]);
|
||||||
|
|
||||||
|
if($tipo == 'PRC'){
|
||||||
|
$tot_sconto = $sconto_calcolato * 100 / $obj->imponibile;
|
||||||
|
} else {
|
||||||
|
$tot_sconto = $sconto_calcolato;
|
||||||
|
}
|
||||||
|
} else{
|
||||||
|
$tot_sconto = $sconto_riga;
|
||||||
|
}
|
||||||
|
|
||||||
|
$sconto_unitario += $tot_sconto;
|
||||||
}
|
}
|
||||||
|
|
||||||
$obj->setSconto($sconto_unitario, $tipo);
|
$obj->setSconto($sconto_unitario, $tipo);
|
||||||
|
$tipo = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
$obj->save();
|
$obj->save();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user