Merge pull request #3107 from opensourcepos/fix_discounted_sales_rounding

Fix discounted price rounding issues in reports reported in  #2995
This commit is contained in:
FrancescoUK
2021-02-14 06:41:19 +00:00
committed by GitHub
3 changed files with 19 additions and 4 deletions

View File

@@ -1270,6 +1270,10 @@ class Sale_lib
{
$discount = bcmul($total, bcdiv($discount, 100));
}
else
{
$discount = bcmul($quantity, $discount);
}
return round($discount, totals_decimals(), PHP_ROUND_HALF_UP);
}

View File

@@ -29,7 +29,9 @@ class Sale extends CI_Model
$decimals = totals_decimals();
$sale_price = 'CASE WHEN sales_items.discount_type = ' . PERCENT . ' THEN sales_items.item_unit_price * sales_items.quantity_purchased * (1 - sales_items.discount / 100) ELSE sales_items.item_unit_price * sales_items.quantity_purchased - sales_items.discount END';
$sale_price = 'CASE WHEN sales_items.discount_type = ' . PERCENT
. " THEN ROUND(sales_items.quantity_purchased * (sales_items.item_unit_price - sales_items.item_unit_price * sales_items.discount / 100), $decimals) "
. 'ELSE sales_items.quantity_purchased * (sales_items.item_unit_price - sales_items.discount) END';
$sales_tax = "ROUND(IFNULL(SUM(sales_items_taxes.sales_tax), 0), $decimals)";
$internal_tax = "ROUND(IFNULL(SUM(sales_items_taxes.internal_tax), 0), $decimals)";
@@ -153,7 +155,10 @@ class Sale extends CI_Model
$decimals = totals_decimals();
$sale_price = 'CASE WHEN sales_items.discount_type = ' . PERCENT . ' THEN sales_items.item_unit_price * sales_items.quantity_purchased * (1 - sales_items.discount / 100) ELSE sales_items.item_unit_price * sales_items.quantity_purchased - sales_items.discount END';
$sale_price = 'CASE WHEN sales_items.discount_type = ' . PERCENT
. " THEN ROUND(sales_items.quantity_purchased * (sales_items.item_unit_price - sales_items.item_unit_price * sales_items.discount / 100), $decimals) "
. 'ELSE sales_items.quantity_purchased * (sales_items.item_unit_price - sales_items.discount) END';
$sale_cost = 'SUM(sales_items.item_cost_price * sales_items.quantity_purchased)';
$tax = 'IFNULL(SUM(sales_items_taxes.tax), 0)';
@@ -1133,7 +1138,10 @@ class Sale extends CI_Model
$decimals = totals_decimals();
$sale_price = 'CASE WHEN sales_items.discount_type = ' . PERCENT . ' THEN sales_items.item_unit_price * sales_items.quantity_purchased * (1 - sales_items.discount / 100) ELSE sales_items.item_unit_price * sales_items.quantity_purchased - sales_items.discount END';
$sale_price = 'CASE WHEN sales_items.discount_type = ' . PERCENT
. " THEN ROUND(sales_items.quantity_purchased * (sales_items.item_unit_price - sales_items.item_unit_price * sales_items.discount / 100), $decimals) "
. 'ELSE sales_items.quantity_purchased * (sales_items.item_unit_price - sales_items.discount) END';
$sale_cost = 'SUM(sales_items.item_cost_price * sales_items.quantity_purchased)';
$tax = 'IFNULL(SUM(sales_items_taxes.tax), 0)';

View File

@@ -23,7 +23,10 @@ abstract class Summary_report extends Report
$decimals = totals_decimals();
$sale_price = 'CASE WHEN sales_items.discount_type = ' . PERCENT . ' THEN sales_items.item_unit_price * sales_items.quantity_purchased * (1 - sales_items.discount / 100) ELSE sales_items.item_unit_price * sales_items.quantity_purchased - sales_items.discount END';
$sale_price = 'CASE WHEN sales_items.discount_type = ' . PERCENT
. " THEN ROUND(sales_items.quantity_purchased * (sales_items.item_unit_price - sales_items.item_unit_price * sales_items.discount / 100), $decimals) "
. 'ELSE sales_items.quantity_purchased * (sales_items.item_unit_price - sales_items.discount) END';
$sale_cost = 'SUM(sales_items.item_cost_price * sales_items.quantity_purchased)';
$tax = 'IFNULL(SUM(sales_items_taxes.tax), 0)';