mirror of
https://github.com/opensourcepos/opensourcepos.git
synced 2026-05-04 05:43:48 -04:00
Fix included destination tax
This commit is contained in:
@@ -472,29 +472,27 @@ class Sale_lib
|
||||
$prediscount_subtotal= bcadd($prediscount_subtotal, $extended_amount);
|
||||
$total = bcadd($total, $extended_discounted_amount);
|
||||
|
||||
if($this->CI->config->item('tax_included'))
|
||||
{
|
||||
$subtotal = bcadd($subtotal, $this->get_extended_total_tax_exclusive($item['item_id'], $extended_discounted_amount, $item['quantity'], $item['price'], $item['discount'],$item['discount_type']));
|
||||
}
|
||||
else
|
||||
{
|
||||
$subtotal = bcadd($subtotal, $extended_discounted_amount);
|
||||
}
|
||||
$subtotal = bcadd($subtotal, $extended_discounted_amount);
|
||||
}
|
||||
|
||||
$totals['prediscount_subtotal'] = $prediscount_subtotal;
|
||||
$totals['total_discount'] = $total_discount;
|
||||
$totals['subtotal'] = $subtotal;
|
||||
$sales_tax = 0;
|
||||
|
||||
foreach($taxes as $tax_excluded)
|
||||
foreach($taxes as $tax)
|
||||
{
|
||||
if($tax_excluded['tax_type'] == Tax_lib::TAX_TYPE_EXCLUDED)
|
||||
if($tax['tax_type'] === Tax_lib::TAX_TYPE_EXCLUDED)
|
||||
{
|
||||
$total = bcadd($total, $tax_excluded['sale_tax_amount']);
|
||||
$sales_tax = bcadd($sales_tax, $tax_excluded['sale_tax_amount']);
|
||||
$total = bcadd($total, $tax['sale_tax_amount']);
|
||||
$sales_tax = bcadd($sales_tax, $tax['sale_tax_amount']);
|
||||
}
|
||||
else
|
||||
{
|
||||
$subtotal = bcsub($subtotal, $tax['sale_tax_amount']);
|
||||
}
|
||||
}
|
||||
|
||||
$totals['subtotal'] = $subtotal;
|
||||
$totals['total'] = $total;
|
||||
$totals['tax_total'] = $sales_tax;
|
||||
|
||||
@@ -1215,19 +1213,19 @@ class Sale_lib
|
||||
|
||||
public function get_item_tax($quantity, $price, $discount, $discount_type, $tax_percentage)
|
||||
{
|
||||
$price = $this->get_item_total($quantity, $price, $discount, $discount_type, TRUE);
|
||||
$item_total = $this->get_item_total($quantity, $price, $discount, $discount_type, TRUE);
|
||||
|
||||
if($this->CI->config->item('tax_included'))
|
||||
{
|
||||
$tax_fraction = bcdiv(bcadd(100, $tax_percentage), 100);
|
||||
$price_tax_excl = bcdiv($price, $tax_fraction);
|
||||
$price_tax_excl = bcdiv($item_total, $tax_fraction);
|
||||
|
||||
return bcsub($price, $price_tax_excl);
|
||||
return bcsub($item_total, $price_tax_excl);
|
||||
}
|
||||
|
||||
$tax_fraction = bcdiv($tax_percentage, 100);
|
||||
|
||||
return bcmul($price, $tax_fraction);
|
||||
return bcmul($item_total, $tax_fraction);
|
||||
}
|
||||
|
||||
public function calculate_subtotal($include_discount = FALSE, $exclude_tax = FALSE)
|
||||
|
||||
@@ -8,8 +8,8 @@
|
||||
|
||||
class Tax_lib
|
||||
{
|
||||
const TAX_TYPE_EXCLUDED = 1;
|
||||
const TAX_TYPE_INCLUDED = 0;
|
||||
const TAX_TYPE_EXCLUDED = '1';
|
||||
const TAX_TYPE_INCLUDED = '0';
|
||||
|
||||
private $CI;
|
||||
|
||||
@@ -150,9 +150,10 @@ class Tax_lib
|
||||
|
||||
public function get_included_tax($quantity, $price, $discount_percentage, $discount_type, $tax_percentage, $tax_decimal, $rounding_code)
|
||||
{
|
||||
$tax_amount = $this->CI->sale_lib->get_item_tax($quantity, $price, $discount_percentage, $discount_type, $tax_percentage);
|
||||
|
||||
return Rounding_mode::round_number($rounding_code, $tax_amount, $tax_decimal);
|
||||
$item_total = $this->CI->sale_lib->get_item_total($quantity, $price, $discount_percentage, $discount_type, TRUE);
|
||||
$tax_fraction = bcdiv(bcadd(100, $tax_percentage), 100);
|
||||
$price_tax_excl = bcdiv($item_total, $tax_fraction);
|
||||
return bcsub($item_total, $price_tax_excl);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -443,11 +444,11 @@ class Tax_lib
|
||||
$s1 = '';
|
||||
$s2 = '';
|
||||
|
||||
if($selected_tax_type == Tax_lib::TAX_TYPE_EXCLUDED)
|
||||
if($selected_tax_type === Tax_lib::TAX_TYPE_EXCLUDED)
|
||||
{
|
||||
$s1 = $selected;
|
||||
}
|
||||
else if($selected_tax_type == Tax_lib::TAX_TYPE_INCLUDED)
|
||||
else if($selected_tax_type === Tax_lib::TAX_TYPE_INCLUDED)
|
||||
{
|
||||
$s2 = $selected;
|
||||
}
|
||||
|
||||
@@ -28,17 +28,17 @@ 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';
|
||||
$tax = 'ROUND(IFNULL(SUM(sales_items_taxes.tax), 0), ' . $decimals . ')';
|
||||
|
||||
$sales_tax = 'ROUND(IFNULL(SUM(sales_items_taxes.sales_tax), 0), ' . $decimals . ')';
|
||||
$internal_tax = 'ROUND(IFNULL(SUM(sales_items_taxes.internal_tax), 0), ' . $decimals . ')';
|
||||
|
||||
if($this->config->item('tax_included'))
|
||||
{
|
||||
$sale_total = 'ROUND(SUM(' . $sale_price . '),' . $decimals . ')';
|
||||
$sale_subtotal = $sale_total . ' - ' . $tax;
|
||||
}
|
||||
else
|
||||
{
|
||||
$sale_subtotal = 'ROUND(SUM(' . $sale_price . '),' . $decimals . ')';
|
||||
$sale_total = $sale_subtotal . ' + ' . $tax;
|
||||
$sale_total = 'ROUND(SUM(' . $sale_price . '),' . $decimals . ') + ' . $sales_tax;
|
||||
}
|
||||
|
||||
// create a temporary table to contain all the sum of taxes per sale item
|
||||
@@ -48,7 +48,8 @@ class Sale extends CI_Model
|
||||
SELECT sales_items_taxes.sale_id AS sale_id,
|
||||
sales_items_taxes.item_id AS item_id,
|
||||
sales_items_taxes.line AS line,
|
||||
SUM(sales_items_taxes.item_tax_amount) AS tax
|
||||
SUM(CASE WHEN sales_items_taxes.tax_type = 0 THEN sales_items_taxes.item_tax_amount ELSE 0 END) AS internal_tax,
|
||||
SUM(CASE WHEN sales_items_taxes.tax_type = 1 THEN sales_items_taxes.item_tax_amount ELSE 0 END) AS sales_tax
|
||||
FROM ' . $this->db->dbprefix('sales_items_taxes') . ' AS sales_items_taxes
|
||||
INNER JOIN ' . $this->db->dbprefix('sales') . ' AS sales
|
||||
ON sales.sale_id = sales_items_taxes.sale_id
|
||||
@@ -75,9 +76,9 @@ class Sale extends CI_Model
|
||||
MAX(customer_p.email) AS email,
|
||||
MAX(customer_p.comments) AS comments,
|
||||
' . "
|
||||
IFNULL($sale_total, $sale_subtotal) AS amount_due,
|
||||
MAX($sale_total) AS amount_due,
|
||||
IFNULL(MAX(payments.sale_payment_amount), 0) AS amount_tendered,
|
||||
IFNULL(MAX(payments.sale_payment_amount) - IFNULL($sale_total, $sale_subtotal),0) AS change_due,
|
||||
IFNULL(MAX(payments.sale_payment_amount) - MAX($sale_total),0) AS change_due,
|
||||
" . '
|
||||
MAX(payments.payment_type) AS payment_type
|
||||
');
|
||||
@@ -144,18 +145,13 @@ class Sale extends CI_Model
|
||||
|
||||
$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_cost = 'SUM(sales_items.item_cost_price * sales_items.quantity_purchased)';
|
||||
$tax = 'IFNULL(SUM(sales_items_taxes.tax), 0)';
|
||||
|
||||
if($this->config->item('tax_included'))
|
||||
{
|
||||
$sale_total = 'ROUND(SUM(' . $sale_price . '), ' . $decimals . ')';
|
||||
$sale_subtotal = $sale_total . ' - ' . $tax;
|
||||
}
|
||||
else
|
||||
{
|
||||
$sale_subtotal = 'ROUND(SUM(' . $sale_price . '), ' . $decimals . ')';
|
||||
$sale_total = $sale_subtotal . ' + ' . $tax;
|
||||
}
|
||||
$tax = 'IFNULL(SUM(sales_items_taxes.tax), 0)';
|
||||
$sales_tax = 'IFNULL(SUM(sales_items_taxes.sales_tax), 0)';
|
||||
$internal_tax = 'IFNULL(SUM(sales_items_taxes.internal_tax), 0)';
|
||||
|
||||
$sale_subtotal = 'ROUND(SUM(' . $sale_price . '), ' . $decimals . ') - ' . $internal_tax;
|
||||
$sale_total = 'ROUND(SUM(' . $sale_price . '), ' . $decimals . ') + ' . $sales_tax;
|
||||
|
||||
// create a temporary table to contain all the sum of taxes per sale item
|
||||
$this->db->query('CREATE TEMPORARY TABLE IF NOT EXISTS ' . $this->db->dbprefix('sales_items_taxes_temp') .
|
||||
@@ -164,7 +160,9 @@ class Sale extends CI_Model
|
||||
SELECT sales_items_taxes.sale_id AS sale_id,
|
||||
sales_items_taxes.item_id AS item_id,
|
||||
sales_items_taxes.line AS line,
|
||||
SUM(sales_items_taxes.item_tax_amount) AS tax
|
||||
SUM(sales_items_taxes.item_tax_amount) AS tax,
|
||||
SUM(CASE WHEN sales_items_taxes.tax_type = 0 THEN sales_items_taxes.item_tax_amount ELSE 0 END) AS internal_tax,
|
||||
SUM(CASE WHEN sales_items_taxes.tax_type = 1 THEN sales_items_taxes.item_tax_amount ELSE 0 END) AS sales_tax
|
||||
FROM ' . $this->db->dbprefix('sales_items_taxes') . ' AS sales_items_taxes
|
||||
INNER JOIN ' . $this->db->dbprefix('sales') . ' AS sales
|
||||
ON sales.sale_id = sales_items_taxes.sale_id
|
||||
@@ -192,14 +190,14 @@ class Sale extends CI_Model
|
||||
MAX(CONCAT(customer_p.first_name, " ", customer_p.last_name)) AS customer_name,
|
||||
MAX(customer.company_name) AS company_name,
|
||||
' . "
|
||||
IFNULL($sale_subtotal, $sale_total) AS subtotal,
|
||||
$sale_subtotal AS subtotal,
|
||||
$tax AS tax,
|
||||
IFNULL($sale_total, $sale_subtotal) AS total,
|
||||
$sale_total AS total,
|
||||
$sale_cost AS cost,
|
||||
(IFNULL($sale_subtotal, $sale_total) - $sale_cost) AS profit,
|
||||
IFNULL($sale_total, $sale_subtotal) AS amount_due,
|
||||
($sale_total - $sale_cost) AS profit,
|
||||
$sale_total AS amount_due,
|
||||
MAX(payments.sale_payment_amount) AS amount_tendered,
|
||||
(MAX(payments.sale_payment_amount) - IFNULL($sale_total, $sale_subtotal)) AS change_due,
|
||||
(MAX(payments.sale_payment_amount) - ($sale_total)) AS change_due,
|
||||
" . '
|
||||
MAX(payments.payment_type) AS payment_type
|
||||
');
|
||||
@@ -1089,17 +1087,20 @@ class Sale extends CI_Model
|
||||
|
||||
$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_cost = 'SUM(sales_items.item_cost_price * sales_items.quantity_purchased)';
|
||||
|
||||
$tax = 'IFNULL(SUM(sales_items_taxes.tax), 0)';
|
||||
$sales_tax = 'IFNULL(SUM(sales_items_taxes.sales_tax), 0)';
|
||||
$internal_tax = 'IFNULL(SUM(sales_items_taxes.internal_tax), 0)';
|
||||
|
||||
if($this->config->item('tax_included'))
|
||||
{
|
||||
$sale_total = 'ROUND(SUM(' . $sale_price . '), ' . $decimals . ')';
|
||||
$sale_subtotal = $sale_total . ' - ' . $tax;
|
||||
$sale_subtotal = $sale_total . ' - ' . $internal_tax;
|
||||
}
|
||||
else
|
||||
{
|
||||
$sale_subtotal = 'ROUND(SUM(' . $sale_price . '), ' . $decimals . ')';
|
||||
$sale_total = $sale_subtotal . ' + ' . $tax;
|
||||
$sale_subtotal = 'ROUND(SUM(' . $sale_price . '), ' . $decimals . ') - ' . $internal_tax;
|
||||
$sale_total = 'ROUND(SUM(' . $sale_price . '), ' . $decimals . ') + ' . $sales_tax;
|
||||
}
|
||||
|
||||
// create a temporary table to contain all the sum of taxes per sale item
|
||||
@@ -1109,7 +1110,9 @@ class Sale extends CI_Model
|
||||
SELECT sales_items_taxes.sale_id AS sale_id,
|
||||
sales_items_taxes.item_id AS item_id,
|
||||
sales_items_taxes.line AS line,
|
||||
SUM(sales_items_taxes.item_tax_amount) AS tax
|
||||
SUM(sales_items_taxes.item_tax_amount) AS tax,
|
||||
SUM(CASE WHEN sales_items_taxes.tax_type = 0 THEN sales_items_taxes.item_tax_amount ELSE 0 END) AS internal_tax,
|
||||
SUM(CASE WHEN sales_items_taxes.tax_type = 1 THEN sales_items_taxes.item_tax_amount ELSE 0 END) AS sales_tax
|
||||
FROM ' . $this->db->dbprefix('sales_items_taxes') . ' AS sales_items_taxes
|
||||
INNER JOIN ' . $this->db->dbprefix('sales') . ' AS sales
|
||||
ON sales.sale_id = sales_items_taxes.sale_id
|
||||
@@ -1173,11 +1176,11 @@ class Sale extends CI_Model
|
||||
MAX(payments.payment_type) AS payment_type,
|
||||
MAX(payments.sale_payment_amount) AS sale_payment_amount,
|
||||
' . "
|
||||
IFNULL($sale_subtotal, $sale_total) AS subtotal,
|
||||
$sale_subtotal AS subtotal,
|
||||
$tax AS tax,
|
||||
IFNULL($sale_total, $sale_subtotal) AS total,
|
||||
$sale_total AS total,
|
||||
$sale_cost AS cost,
|
||||
(IFNULL($sale_subtotal, $sale_total) - $sale_cost) AS profit
|
||||
($sale_subtotal - $sale_cost) AS profit
|
||||
" . '
|
||||
FROM ' . $this->db->dbprefix('sales_items') . ' AS sales_items
|
||||
INNER JOIN ' . $this->db->dbprefix('sales') . ' AS sales
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
}
|
||||
</style>
|
||||
</style>
|
||||
<script type="text/javascript" src="dist/clipboard.min.js"></script>
|
||||
<script type="text/javascript" src="js/clipboard.min.js"></script>
|
||||
<div id="config_wrapper" class="col-sm-12">
|
||||
<?php echo $this->lang->line('config_server_notice'); ?>
|
||||
<div class="container">
|
||||
|
||||
Reference in New Issue
Block a user