Files
opensourcepos/application/models/reports/Summary_payments.php
jekkos d8e4bf48d8 Check if payments cover sale with exact precision (#733)
Set bc-operation style scale globally
Add location filtering in graphical and summary reports (#742)
2016-07-20 20:43:31 +02:00

86 lines
2.5 KiB
PHP

<?php
require_once("Report.php");
class Summary_payments extends Report
{
function __construct()
{
parent::__construct();
}
public function getDataColumns()
{
return array($this->lang->line('reports_payment_type'), $this->lang->line('reports_count'), $this->lang->line('sales_amount_tendered'));
}
public function getData(array $inputs)
{
$this->db->select('sales_payments.payment_type, count(*) AS count, SUM(payment_amount) AS payment_amount');
$this->db->from('sales_payments');
$this->db->join('sales', 'sales.sale_id=sales_payments.sale_id');
$this->db->where("date(sale_time) BETWEEN " . $this->db->escape($inputs['start_date']) . " AND " . $this->db->escape($inputs['end_date']));
if ($inputs['location_id'] != 'all')
{
$this->db->where('item_location', $inputs['location_id']);
}
if ($inputs['sale_type'] == 'sales')
{
$this->db->where('payment_amount > 0');
}
elseif ($inputs['sale_type'] == 'returns')
{
$this->db->where('payment_amount < 0');
}
$this->db->group_by("payment_type");
$payments = $this->db->get()->result_array();
// consider Gift Card as only one type of payment and do not show "Gift Card: 1, Gift Card: 2, etc." in the total
$gift_card_count = 0;
$gift_card_amount = 0;
foreach($payments as $key=>$payment)
{
if( strstr($payment['payment_type'], $this->lang->line('sales_giftcard')) != FALSE )
{
$gift_card_count += $payment['count'];
$gift_card_amount += $payment['payment_amount'];
// remove the "Gift Card: 1", "Gift Card: 2", etc. payment string
unset($payments[$key]);
}
}
if( $gift_card_count > 0 )
{
$payments[] = array('payment_type' => $this->lang->line('sales_giftcard'), 'count' => $gift_card_count, 'payment_amount' => $gift_card_amount);
}
return $payments;
}
public function getSummaryData(array $inputs)
{
$this->db->select('SUM(subtotal) AS subtotal, SUM(total) AS total, SUM(tax) AS tax, SUM(cost) AS cost, SUM(profit) AS profit');
$this->db->from('sales_items_temp');
$this->db->where("sale_date BETWEEN " . $this->db->escape($inputs['start_date']) . " AND " . $this->db->escape($inputs['end_date']));
if ($inputs['location_id'] != 'all')
{
$this->db->where('item_location', $inputs['location_id']);
}
if ($inputs['sale_type'] == 'sales')
{
$this->db->where('quantity_purchased > 0');
}
elseif ($inputs['sale_type'] == 'returns')
{
$this->db->where('quantity_purchased < 0');
}
return $this->db->get()->row_array();
}
}
?>