company = auth()->user()->currentCompany; $this->fiscalYearStartDate = $this->company->locale->fiscalYearStartDate(); $this->fiscalYearEndDate = $this->company->locale->fiscalYearEndDate(); $this->dateRange = $this->getDefaultDateRange(); $this->setDateRange(Carbon::parse($this->fiscalYearStartDate), Carbon::parse($this->fiscalYearEndDate)); $this->loadReportData(); } abstract protected function loadReportData(): void; public function getDefaultDateRange(): string { return 'FY-' . now()->year; } public function form(Form $form): Form { return $form ->schema([ Split::make([ DateRangeSelect::make('dateRange') ->label('Date Range') ->selectablePlaceholder(false) ->startDateField('startDate') ->endDateField('endDate'), DatePicker::make('startDate') ->label('Start Date') ->displayFormat('Y-m-d') ->afterStateUpdated(static function (Set $set) { $set('dateRange', 'Custom'); }), DatePicker::make('endDate') ->label('End Date') ->displayFormat('Y-m-d') ->afterStateUpdated(static function (Set $set) { $set('dateRange', 'Custom'); }), ])->live(), ]); } public function setDateRange(Carbon $start, Carbon $end): void { $this->startDate = $start->format('Y-m-d'); $this->endDate = $end->isFuture() ? now()->format('Y-m-d') : $end->format('Y-m-d'); } }