mirror of
https://github.com/opensourcepos/opensourcepos.git
synced 2026-10-21 15:54:36 -04:00
75 lines
3.1 KiB
PHP
75 lines
3.1 KiB
PHP
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
|
|
|
|
require_once("Summary_report.php");
|
|
|
|
class Summary_taxes extends Summary_report
|
|
{
|
|
function __construct()
|
|
{
|
|
parent::__construct();
|
|
}
|
|
|
|
protected function _get_data_columns()
|
|
{
|
|
return array(
|
|
array('tax' => $this->lang->line('reports_tax_percent'), 'sorter' => 'currency_sorter'),
|
|
array('report_count' => $this->lang->line('reports_count')),
|
|
array('subtotal' => $this->lang->line('reports_subtotal'), 'sorter' => 'currency_sorter'),
|
|
array('tax' => $this->lang->line('reports_tax'), 'sorter' => 'currency_sorter'),
|
|
array('total' => $this->lang->line('reports_total'), 'sorter' => 'currency_sorter'));
|
|
}
|
|
|
|
public function getData(array $inputs)
|
|
{
|
|
$quantity_cond = '';
|
|
|
|
if($inputs['sale_type'] == 'sales')
|
|
{
|
|
$quantity_cond = 'AND quantity_purchased > 0';
|
|
}
|
|
elseif($inputs['sale_type'] == 'returns')
|
|
{
|
|
$quantity_cond = 'AND quantity_purchased < 0';
|
|
}
|
|
|
|
if($inputs['location_id'] != 'all')
|
|
{
|
|
$quantity_cond .= 'AND item_location = '. $this->db->escape($inputs['location_id']);
|
|
}
|
|
|
|
if($this->config->item('tax_included'))
|
|
{
|
|
$sale_total = '(sales_items.item_unit_price * sales_items.quantity_purchased * (1 - sales_items.discount_percent / 100))';
|
|
$sale_subtotal = '(sales_items.item_unit_price * sales_items.quantity_purchased * (1 - sales_items.discount_percent / 100) * (100 / (100 + sales_items_taxes.percent)))';
|
|
$sale_tax = '(sales_items.item_unit_price * sales_items.quantity_purchased * (1 - sales_items.discount_percent / 100) * (1 - 100 / (100 + sales_items_taxes.percent)))';
|
|
}
|
|
else
|
|
{
|
|
$sale_total = '(sales_items.item_unit_price * sales_items.quantity_purchased * (1 - sales_items.discount_percent / 100) * (1 + (sales_items_taxes.percent / 100)))';
|
|
$sale_subtotal = '(sales_items.item_unit_price * sales_items.quantity_purchased * (1 - sales_items.discount_percent / 100))';
|
|
$sale_tax = '(sales_items.item_unit_price * sales_items.quantity_purchased * (1 - sales_items.discount_percent / 100) * (sales_items_taxes.percent / 100))';
|
|
}
|
|
|
|
$decimals = totals_decimals();
|
|
|
|
$query = $this->db->query("SELECT percent, count(*) AS count, ROUND(SUM(subtotal), $decimals) AS subtotal, ROUND(SUM(tax), $decimals) AS tax, ROUND(SUM(total), $decimals) AS total
|
|
FROM (
|
|
SELECT
|
|
CONCAT(IFNULL(ROUND(percent, $decimals), 0), '%') AS percent,
|
|
$sale_subtotal AS subtotal,
|
|
IFNULL($sale_tax, 0) AS tax,
|
|
IFNULL($sale_total, $sale_subtotal) AS total
|
|
FROM " . $this->db->dbprefix('sales_items') . ' AS sales_items
|
|
INNER JOIN ' . $this->db->dbprefix('sales') . ' AS sales
|
|
ON sales_items.sale_id = sales.sale_id
|
|
LEFT OUTER JOIN ' . $this->db->dbprefix('sales_items_taxes') . ' AS sales_items_taxes
|
|
ON sales_items.sale_id = sales_items_taxes.sale_id AND sales_items.item_id = sales_items_taxes.item_id AND sales_items.line = sales_items_taxes.line
|
|
WHERE DATE(sale_time) BETWEEN ' . $this->db->escape($inputs['start_date']) . ' AND ' . $this->db->escape($inputs['end_date']) . " $quantity_cond
|
|
) AS temp_taxes
|
|
GROUP BY percent"
|
|
);
|
|
|
|
return $query->result_array();
|
|
}
|
|
}
|
|
?>
|