1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83:
<?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_percent' => $this->lang->line('reports_tax_percent'), 'sorter' => 'number_sorter'),
array('report_count' => $this->lang->line('reports_count')),
array('subtotal' => $this->lang->line('reports_subtotal'), 'sorter' => 'number_sorter'),
array('tax' => $this->lang->line('reports_tax'), 'sorter' => 'number_sorter'),
array('total' => $this->lang->line('reports_total'), 'sorter' => 'number_sorter'));
}
protected function _where(array $inputs)
{
if(empty($this->config->item('date_or_time_format')))
{
$this->db->where('sale_status = 0 AND DATE(sales.sale_time) BETWEEN ' . $this->db->escape($inputs['start_date']) . ' AND ' . $this->db->escape($inputs['end_date']));
}
else
{
$this->db->where('sale_status = 0 AND sales.sale_time BETWEEN ' . $this->db->escape(rawurldecode($inputs['start_date'])) . ' AND ' . $this->db->escape(rawurldecode($inputs['end_date'])));
}
}
public function getData(array $inputs)
{
$where = '';
if(empty($this->config->item('date_or_time_format')))
{
$where .= 'WHERE sale_status = 0 AND DATE(sale_time) BETWEEN ' . $this->db->escape($inputs['start_date']) . ' AND ' . $this->db->escape($inputs['end_date']);
}
else
{
$where .= 'WHERE sale_status = 0 AND sale_time BETWEEN ' . $this->db->escape(rawurldecode($inputs['start_date'])) . ' AND ' . $this->db->escape(rawurldecode($inputs['end_date']));
}
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 . '
) AS temp_taxes
GROUP BY percent'
);
return $query->result_array();
}
}
?>