mirror of
https://github.com/invoiceninja/invoiceninja.git
synced 2025-05-31 09:54:34 -04:00
Fixes for date range calculations
This commit is contained in:
parent
6424ed5a4b
commit
81d6dbe865
@ -61,7 +61,7 @@ class ChartController extends BaseController
|
|||||||
/** @var \App\Models\User auth()->user() */
|
/** @var \App\Models\User auth()->user() */
|
||||||
$user = auth()->user();
|
$user = auth()->user();
|
||||||
$cs = new ChartService($user->company(), $user, $user->isAdmin());
|
$cs = new ChartService($user->company(), $user, $user->isAdmin());
|
||||||
|
|
||||||
return response()->json($cs->chart_summary($request->input('start_date'), $request->input('end_date')), 200);
|
return response()->json($cs->chart_summary($request->input('start_date'), $request->input('end_date')), 200);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -12,9 +12,12 @@
|
|||||||
namespace App\Http\Requests\Chart;
|
namespace App\Http\Requests\Chart;
|
||||||
|
|
||||||
use App\Http\Requests\Request;
|
use App\Http\Requests\Request;
|
||||||
|
use App\Utils\Traits\MakesDates;
|
||||||
|
|
||||||
class ShowChartRequest extends Request
|
class ShowChartRequest extends Request
|
||||||
{
|
{
|
||||||
|
use MakesDates;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Determine if the user is authorized to make this request.
|
* Determine if the user is authorized to make this request.
|
||||||
*
|
*
|
||||||
@ -22,7 +25,10 @@ class ShowChartRequest extends Request
|
|||||||
*/
|
*/
|
||||||
public function authorize() : bool
|
public function authorize() : bool
|
||||||
{
|
{
|
||||||
return auth()->user()->isAdmin();
|
/**@var \App\Models\User auth()->user */
|
||||||
|
$user = auth()->user();
|
||||||
|
|
||||||
|
return $user->isAdmin();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function rules()
|
public function rules()
|
||||||
@ -38,14 +44,22 @@ class ShowChartRequest extends Request
|
|||||||
{
|
{
|
||||||
$input = $this->all();
|
$input = $this->all();
|
||||||
|
|
||||||
if (! array_key_exists('start_date', $input)) {
|
if(isset($input['date_range'])) {
|
||||||
$input['start_date'] = now()->subDays(20);
|
$dates = $this->calculateStartAndEndDates($input);
|
||||||
|
$input['start_date'] = $dates[0];
|
||||||
|
$input['end_date'] = $dates[1];
|
||||||
}
|
}
|
||||||
|
|
||||||
if (! array_key_exists('end_date', $input)) {
|
if (! isset($input['start_date'])) {
|
||||||
$input['end_date'] = now();
|
$input['start_date'] = now()->subDays(20)->format('Y-m-d');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (! isset($input['end_date'])) {
|
||||||
|
$input['end_date'] = now()->format('Y-m-d');
|
||||||
|
}
|
||||||
|
|
||||||
|
nlog($input);
|
||||||
|
|
||||||
$this->replace($input);
|
$this->replace($input);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -76,6 +76,8 @@ class ChartService
|
|||||||
$currencies = $this->getCurrencyCodes();
|
$currencies = $this->getCurrencyCodes();
|
||||||
|
|
||||||
$data = [];
|
$data = [];
|
||||||
|
$data['start_date'] = $start_date;
|
||||||
|
$data['end_date'] = $end_date;
|
||||||
|
|
||||||
foreach ($currencies as $key => $value) {
|
foreach ($currencies as $key => $value) {
|
||||||
$data[$key]['invoices'] = $this->getInvoiceChartQuery($start_date, $end_date, $key);
|
$data[$key]['invoices'] = $this->getInvoiceChartQuery($start_date, $end_date, $key);
|
||||||
@ -96,6 +98,8 @@ class ChartService
|
|||||||
$data = [];
|
$data = [];
|
||||||
|
|
||||||
$data['currencies'] = $this->getCurrencyCodes();
|
$data['currencies'] = $this->getCurrencyCodes();
|
||||||
|
$data['start_date'] = $start_date;
|
||||||
|
$data['end_date'] = $end_date;
|
||||||
|
|
||||||
$revenue = $this->getRevenue($start_date, $end_date);
|
$revenue = $this->getRevenue($start_date, $end_date);
|
||||||
$outstanding = $this->getOutstanding($start_date, $end_date);
|
$outstanding = $this->getOutstanding($start_date, $end_date);
|
||||||
|
@ -58,7 +58,8 @@ class EmailReport
|
|||||||
public function run()
|
public function run()
|
||||||
{
|
{
|
||||||
|
|
||||||
$start_end_dates = $this->calculateStartAndEndDates();
|
$start_end_dates = $this->calculateStartAndEndDates($this->scheduler->parameters);
|
||||||
|
|
||||||
$data = [];
|
$data = [];
|
||||||
|
|
||||||
$data = [
|
$data = [
|
||||||
|
@ -119,9 +119,9 @@ trait MakesDates
|
|||||||
*
|
*
|
||||||
* @return array [$start_date, $end_date];
|
* @return array [$start_date, $end_date];
|
||||||
*/
|
*/
|
||||||
public function calculateStartAndEndDates(): array
|
public function calculateStartAndEndDates(array $data): array
|
||||||
{
|
{
|
||||||
return match ($this->scheduler->parameters['date_range']) {
|
return match ($data['date_range']) {
|
||||||
EmailStatement::LAST7 => [now()->startOfDay()->subDays(7)->format('Y-m-d'), now()->startOfDay()->format('Y-m-d')],
|
EmailStatement::LAST7 => [now()->startOfDay()->subDays(7)->format('Y-m-d'), now()->startOfDay()->format('Y-m-d')],
|
||||||
EmailStatement::LAST30 => [now()->startOfDay()->subDays(30)->format('Y-m-d'), now()->startOfDay()->format('Y-m-d')],
|
EmailStatement::LAST30 => [now()->startOfDay()->subDays(30)->format('Y-m-d'), now()->startOfDay()->format('Y-m-d')],
|
||||||
EmailStatement::LAST365 => [now()->startOfDay()->subDays(365)->format('Y-m-d'), now()->startOfDay()->format('Y-m-d')],
|
EmailStatement::LAST365 => [now()->startOfDay()->subDays(365)->format('Y-m-d'), now()->startOfDay()->format('Y-m-d')],
|
||||||
@ -131,9 +131,9 @@ trait MakesDates
|
|||||||
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 => [now()->startOfDay()->firstOfYear()->format('Y-m-d'), now()->startOfDay()->lastOfYear()->format('Y-m-d')],
|
EmailStatement::THIS_YEAR => [now()->startOfDay()->firstOfYear()->format('Y-m-d'), now()->startOfDay()->lastOfYear()->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 => [now()->startOfDay()->subYearNoOverflow()->firstOfYear()->format('Y-m-d'), now()->startOfDay()->subYearNoOverflow()->lastOfYear()->format('Y-m-d')],
|
||||||
EmailStatement::CUSTOM_RANGE => [$this->scheduler->parameters['start_date'], $this->scheduler->parameters['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')],
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
Loading…
x
Reference in New Issue
Block a user