Files
opensourcepos/app/Models/Reports/Summary_sales_taxes.php
BudsieBuds e83c23cf0c Improve code style and PSR-12 compliance (#4204)
* Improve code style and PSR-12 compliance
- refactored code formatting to adhere to PSR-12 guidelines
- standardized coding conventions across the codebase
- added missing framework files and reverted markup changes
- reformatted arrays for enhanced readability
- updated language files for consistent styling and clarity
- minor miscellaneous improvements
2025-05-02 19:37:06 +02:00

72 lines
2.6 KiB
PHP

<?php
namespace App\Models\Reports;
use Config\OSPOS;
class Summary_sales_taxes extends Summary_report
{
private array $config;
public function __construct()
{
parent::__construct();
$this->config = config(OSPOS::class)->settings;
}
/**
* @return array[]
*/
protected function _get_data_columns(): array // TODO: hungarian notation
{
return [
['reporting_authority' => lang('Reports.authority')],
['jurisdiction_name' => lang('Reports.jurisdiction')],
['tax_category' => lang('Reports.tax_category')],
['tax_rate' => lang('Reports.tax_rate'), 'sorter' => 'number_sorter'],
['tax' => lang('Reports.tax'), 'sorter' => 'number_sorter']
];
}
/**
* @param array $inputs
* @param object $builder
* @return void
*/
protected function _where(array $inputs, object &$builder): void // TODO: hungarian notation
{
$builder->where('sales.sale_status', COMPLETED);
if (empty($this->config['date_or_time_format'])) { // TODO: Duplicated code
$builder->where('DATE(sales.sale_time) BETWEEN ' . $this->db->escape($inputs['start_date']) . ' AND ' . $this->db->escape($inputs['end_date']));
} else {
$builder->where('sales.sale_time BETWEEN ' . $this->db->escape(rawurldecode($inputs['start_date'])) . ' AND ' . $this->db->escape(rawurldecode($inputs['end_date'])));
}
}
/**
* @param array $inputs
* @return array
*/
public function getData(array $inputs): array
{
$builder = $this->db->table('sales_taxes');
if (empty($this->config['date_or_time_format'])) {
$builder->where('DATE(sale_time) BETWEEN ' . $inputs['start_date'] . ' AND ' . $inputs['end_date']);
} else {
$builder->where('sale_time BETWEEN ' . $this->db->escape(rawurldecode($inputs['start_date'])) . ' AND ' . $this->db->escape(rawurldecode($inputs['end_date'])));
}
$builder->select('reporting_authority, jurisdiction_name, tax_category, tax_rate, SUM(sale_tax_amount) AS tax');
$builder->join('sales', 'sales_taxes.sale_id = sales.sale_id', 'left');
$builder->join('tax_categories', 'sales_taxes.tax_category_id = tax_categories.tax_category_id', 'left');
$builder->join('tax_jurisdictions', 'sales_taxes.jurisdiction_id = tax_jurisdictions.jurisdiction_id', 'left');
$builder->groupBy('reporting_authority, jurisdiction_name, tax_category, tax_rate');
$query = $builder->get();
return $query->getResultArray();
}
}