public static
calculateDiscountFixedAmount
(mixed $ratio, mixed $quantity, mixed &$priceItems, mixed &$total, mixed $taxKey = '')
public static function calculateDiscountFixedAmount($ratio, $quantity, &$priceItems, &$total, $taxKey = '')
{
$price = new PhocacartPrice();
// $taxCalcType type 1 ... percentage, 2 ... fixed amount (be aware it is not the tax calculation set in options: brutto, netto, none)
$taxCalcType = $priceItems['taxcalctype'];
// Reset info about discount for each step (reward points, product discount, cart discount, coupon)
$priceItems['bruttodiscount'] = 0;
$priceItems['nettodiscount'] = 0;
$priceItems['taxdiscount'] = 0;
$dB = $price->roundPrice($priceItems['brutto'] * $ratio / 100);
$dN = $price->roundPrice($priceItems['netto'] * $ratio / 100);
$dT = $price->roundPrice($priceItems['tax'] * $ratio / 100);
// Price before discount
$pbD = array();
$pbD['brutto'] = $priceItems['brutto'];
$pbD['netto'] = $priceItems['netto'];
$pbD['tax'] = $priceItems['tax'];
// Brutto If fixed VAT ($taxCalcType == 2) then we cannot reduce the VAT, so we cannot reduce BRUTTO
if ($priceItems['brutto'] < $dB) {
$priceItems['bruttodiscount'] = $priceItems['brutto'];
$priceItems['brutto'] = 0;
} else {
$priceItems['bruttodiscount'] = $taxCalcType == 2 ? $dN : $dB;
$priceItems['brutto'] -= $priceItems['bruttodiscount'];
}
// Netto
if ($priceItems['netto'] < $dN) {
$priceItems['nettodiscount'] = $priceItems['netto'];
$priceItems['netto'] = 0;
} else {
$priceItems['nettodiscount'] = $dN;
$priceItems['netto'] -= $priceItems['nettodiscount'];
}
// Tax
if ($priceItems['tax'] < $dT) {
$priceItems['taxdiscount'] = $priceItems['tax'];
$priceItems['tax'] = 0;
} else {
$priceItems['taxdiscount'] = $taxCalcType == 2 ? 0 : $dT;
$priceItems['tax'] -= $priceItems['taxdiscount'];
}
if (!empty($total)) {
// Possible TO DO - add different condition for netto and brutto
/*
* if ($taxCalcType == 2) {
if ($pbD['netto'] < $dB) {
} else {
if ($pbD['brutto'] < $dB) {
}
*/
// Brutto
if ($pbD['brutto'] < $dB) {
$total['brutto'] -= $taxCalcType == 2 ? $pbD['netto'] * $quantity : $pbD['brutto'] * $quantity;
$total['tax'][$taxKey]['brutto'] -= $taxCalcType == 2 ? $pbD['netto'] * $quantity : $pbD['brutto'] * $quantity;
} else {
$total['brutto'] -= $taxCalcType == 2 ? $dN * $quantity : $dB * $quantity;
$total['tax'][$taxKey]['brutto'] -= $taxCalcType == 2 ? $dN * $quantity : $dB * $quantity;
}
// Netto
if ($pbD['netto'] < $dN) {
$total['netto'] -= $pbD['netto'] * $quantity;
$total['tax'][$taxKey]['netto'] -= $pbD['netto'] * $quantity;
} else {
$total['netto'] -= $dN * $quantity;
$total['tax'][$taxKey]['netto'] -= $dN * $quantity;
}
// Tax
if ($pbD['tax'] < $dT) {
$total['tax'][$taxKey]['tax'] -= $taxCalcType == 2 ? 0 : $pbD['tax'] * $quantity;
} else {
$total['tax'][$taxKey]['tax'] -= $taxCalcType == 2 ? 0 : $dT * $quantity;
}
}
return true;
}