Change year calculations to financial year spans

This commit is contained in:
David Bomba 2023-07-17 23:10:37 +10:00
parent fa487e7f92
commit 514bbacc35
2 changed files with 6 additions and 5 deletions

View File

@ -45,7 +45,7 @@ class ShowChartRequest extends Request
$input = $this->all(); $input = $this->all();
if(isset($input['date_range'])) { if(isset($input['date_range'])) {
$dates = $this->calculateStartAndEndDates($input); $dates = $this->calculateStartAndEndDates($input, auth()->user()->company());
$input['start_date'] = $dates[0]; $input['start_date'] = $dates[0];
$input['end_date'] = $dates[1]; $input['end_date'] = $dates[1];
} }

View File

@ -14,6 +14,7 @@ namespace App\Utils\Traits;
use DateTime; use DateTime;
use DateTimeZone; use DateTimeZone;
use Carbon\Carbon; use Carbon\Carbon;
use App\Models\Company;
use App\DataMapper\Schedule\EmailStatement; use App\DataMapper\Schedule\EmailStatement;
/** /**
@ -119,11 +120,11 @@ trait MakesDates
* *
* @return array [$start_date, $end_date]; * @return array [$start_date, $end_date];
*/ */
public function calculateStartAndEndDates(array $data): array public function calculateStartAndEndDates(array $data, ?Company $company = null): array
{ {
//override for financial years //override for financial years
if($data['date_range'] == 'this_year') { if($data['date_range'] == 'this_year') {
$first_month_of_year = $this->company->getSetting('first_month_of_year') ?? 1; $first_month_of_year = $company ? $company?->first_month_of_year : 1;
$fin_year_start = now()->createFromDate(now()->year, $first_month_of_year, 1); $fin_year_start = now()->createFromDate(now()->year, $first_month_of_year, 1);
if(now()->lt($fin_year_start)) if(now()->lt($fin_year_start))
@ -133,7 +134,7 @@ trait MakesDates
//override for financial years //override for financial years
if($data['date_range'] == 'last_year') { if($data['date_range'] == 'last_year') {
$first_month_of_year = $this->company->getSetting('first_month_of_year') ?? 1; $first_month_of_year = $company ? $company?->first_month_of_year : 1;
$fin_year_start = now()->createFromDate(now()->year, $first_month_of_year, 1); $fin_year_start = now()->createFromDate(now()->year, $first_month_of_year, 1);
$fin_year_start->subYearNoOverflow(); $fin_year_start->subYearNoOverflow();
@ -154,7 +155,7 @@ trait MakesDates
EmailStatement::THIS_QUARTER => [now()->startOfDay()->firstOfQuarter()->format('Y-m-d'), now()->startOfDay()->lastOfQuarter()->format('Y-m-d')], EmailStatement::THIS_QUARTER => [now()->startOfDay()->firstOfQuarter()->format('Y-m-d'), now()->startOfDay()->lastOfQuarter()->format('Y-m-d')],
EmailStatement::LAST_QUARTER => [now()->startOfDay()->subQuarterNoOverflow()->firstOfQuarter()->format('Y-m-d'), now()->startOfDay()->subQuarterNoOverflow()->lastOfQuarter()->format('Y-m-d')], EmailStatement::LAST_QUARTER => [now()->startOfDay()->subQuarterNoOverflow()->firstOfQuarter()->format('Y-m-d'), now()->startOfDay()->subQuarterNoOverflow()->lastOfQuarter()->format('Y-m-d')],
EmailStatement::THIS_YEAR => [$fin_year_start->format('Y-m-d'), $fin_year_start->copy()->addYear()->subDay()->format('Y-m-d')], EmailStatement::THIS_YEAR => [$fin_year_start->format('Y-m-d'), $fin_year_start->copy()->addYear()->subDay()->format('Y-m-d')],
EmailStatement::LAST_YEAR => [now()->startOfDay()->subYearNoOverflow()->firstOfYear()->format('Y-m-d'), now()->startOfDay()->subYearNoOverflow()->lastOfYear()->format('Y-m-d')], EmailStatement::LAST_YEAR => [$fin_year_start->format('Y-m-d'), $fin_year_start->copy()->addYear()->subDay()->format('Y-m-d')],
EmailStatement::CUSTOM_RANGE => [$data['start_date'], $data['end_date']], EmailStatement::CUSTOM_RANGE => [$data['start_date'], $data['end_date']],
default => [now()->startOfDay()->firstOfMonth()->format('Y-m-d'), now()->startOfDay()->lastOfMonth()->format('Y-m-d')], default => [now()->startOfDay()->firstOfMonth()->format('Y-m-d'), now()->startOfDay()->lastOfMonth()->format('Y-m-d')],
}; };