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();
if(isset($input['date_range'])) {
$dates = $this->calculateStartAndEndDates($input);
$dates = $this->calculateStartAndEndDates($input, auth()->user()->company());
$input['start_date'] = $dates[0];
$input['end_date'] = $dates[1];
}

View File

@ -14,6 +14,7 @@ namespace App\Utils\Traits;
use DateTime;
use DateTimeZone;
use Carbon\Carbon;
use App\Models\Company;
use App\DataMapper\Schedule\EmailStatement;
/**
@ -119,11 +120,11 @@ trait MakesDates
*
* @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
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);
if(now()->lt($fin_year_start))
@ -133,7 +134,7 @@ trait MakesDates
//override for financial years
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->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::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::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']],
default => [now()->startOfDay()->firstOfMonth()->format('Y-m-d'), now()->startOfDay()->lastOfMonth()->format('Y-m-d')],
};