mirror of
				https://github.com/invoiceninja/invoiceninja.git
				synced 2025-11-04 03:29:03 -05:00 
			
		
		
		
	Fixes for date range calculations
This commit is contained in:
		
							parent
							
								
									6424ed5a4b
								
							
						
					
					
						commit
						81d6dbe865
					
				@ -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,7 +131,7 @@ 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