Merge pull request #2257 from sevannerse/basis-default-filter-reports

Basis default filter reports
This commit is contained in:
Cüneyt Şentürk 2021-10-05 22:17:12 +03:00 committed by GitHub
commit 60f79340fd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 75 additions and 8 deletions

View File

@ -114,6 +114,14 @@ abstract class Report
return $model->pluck('name', 'id')->toArray();
}
public function getBasis()
{
return [
'cash' => trans('general.cash'),
'accrual' => trans('general.accrual'),
];
}
public function applyDateFilter($event)
{
$event->model->monthsOfYear($event->args['date_field']);
@ -127,6 +135,10 @@ abstract class Report
$search_year = 'year:' . $this->getSearchStringValue('year', '', $input);
$input = str_replace($search_year, '', $input);
// Remove basis as it's handled based on report itself
$search_basis = 'basis:' . $this->getSearchStringValue('basis', 'accrual', $input);
$input = str_replace($search_basis, '', $input);
$event->model->usingSearchString($input);
}

View File

@ -0,0 +1,34 @@
<?php
namespace App\Listeners\Report;
use App\Abstracts\Listeners\Report as Listener;
use App\Events\Report\FilterShowing;
class AddBasis extends Listener
{
protected $classes = [
'App\Reports\IncomeSummary',
'App\Reports\ExpenseSummary',
'App\Reports\IncomeExpenseSummary',
'App\Reports\ProfitLoss',
'App\Reports\TaxSummary',
];
/**
* Handle filter showing event.
*
* @param $event
* @return void
*/
public function handleFilterShowing(FilterShowing $event)
{
if ($this->skipThisClass($event)) {
return;
}
$event->class->filters['basis'] = $this->getBasis();
$event->class->filters['keys']['basis'] = 'basis';
$event->class->filters['defaults']['basis'] = $event->class->getSetting('basis', 'accrual');
}
}

View File

@ -112,5 +112,6 @@ class Event extends Provider
'App\Listeners\Report\AddIncomeExpenseCategories',
'App\Listeners\Report\AddSearchString',
'App\Listeners\Report\AddRowsToTax',
'App\Listeners\Report\AddBasis',
];
}

View File

@ -32,7 +32,9 @@ class ExpenseSummary extends Report
{
$transactions = $this->applyFilters(Transaction::with('recurring')->expense()->isNotTransfer(), ['date_field' => 'paid_at']);
switch ($this->getSetting('basis')) {
$basis = $this->getSearchStringValue('basis', $this->getSetting('basis'));
switch ($basis) {
case 'cash':
// Payments
$payments = $transactions->get();

View File

@ -18,7 +18,9 @@ class IncomeExpenseSummary extends Report
$income_transactions = $this->applyFilters(Transaction::with('recurring')->income()->isNotTransfer(), ['date_field' => 'paid_at']);
$expense_transactions = $this->applyFilters(Transaction::with('recurring')->expense()->isNotTransfer(), ['date_field' => 'paid_at']);
switch ($this->getSetting('basis')) {
$basis = $this->getSearchStringValue('basis', $this->getSetting('basis'));
switch ($basis) {
case 'cash':
// Revenues
$revenues = $income_transactions->get();

View File

@ -32,7 +32,9 @@ class IncomeSummary extends Report
{
$transactions = $this->applyFilters(Transaction::with('recurring')->income()->isNotTransfer(), ['date_field' => 'paid_at']);
switch ($this->getSetting('basis')) {
$basis = $this->getSearchStringValue('basis', $this->getSetting('basis'));
switch ($basis) {
case 'cash':
// Revenues
$revenues = $transactions->get();

View File

@ -37,7 +37,9 @@ class ProfitLoss extends Report
$income_transactions = $this->applyFilters(Transaction::with('recurring')->income()->isNotTransfer(), ['date_field' => 'paid_at']);
$expense_transactions = $this->applyFilters(Transaction::with('recurring')->expense()->isNotTransfer(), ['date_field' => 'paid_at']);
switch ($this->getSetting('basis')) {
$basis = $this->getSearchStringValue('basis', $this->getSetting('basis'));
switch ($basis) {
case 'cash':
// Revenues
$revenues = $income_transactions->get();

View File

@ -40,7 +40,9 @@ class TaxSummary extends Report
public function setData()
{
switch ($this->getSetting('basis')) {
$basis = $this->getSearchStringValue('basis', $this->getSetting('basis'));
switch ($basis) {
case 'cash':
// Invoice Payments
$invoices = $this->applyFilters(Transaction::with('recurring', 'invoice', 'invoice.totals')->income()->isDocument()->isNotTransfer(), ['date_field' => 'paid_at'])->get();

View File

@ -10,7 +10,7 @@
$filtered = [];
$skipped = [
'keys', 'names', 'types', 'routes'
'keys', 'names', 'types', 'routes', 'defaults'
];
foreach ($class->filters as $filter_name => $filter_values) {
@ -58,6 +58,16 @@
$url = (is_array($route)) ? route($route[0], $route[1]) : route($route);
}
$default_value = null;
if (isset($class->filters['defaults']) && !empty($class->filters['defaults'][$filter_name])) {
$default_value = $class->filters['defaults'][$filter_name];
}
if ($key == 'year') {
$default_value = \Date::now()->year;
}
$filters[] = [
'key' => $key,
'value' => $value,
@ -66,11 +76,11 @@
'values' => $filter_values,
];
if ($key == 'year') {
if (!is_null($default_value)) {
$filtered[] = [
'option' => $key,
'operator' => '=',
'value' => \Date::now()->year,
'value' => $default_value,
];
}