Define the Client Statement Class

This commit is contained in:
David Bomba 2023-01-13 20:16:17 +11:00
parent c5ac9cacaf
commit 9e5417ab1c
4 changed files with 121 additions and 9 deletions

View File

@ -0,0 +1,96 @@
<?php
/**
* Invoice Ninja (https://invoiceninja.com).
*
* @link https://github.com/invoiceninja/invoiceninja source repository
*
* @copyright Copyright (c) 2022. Invoice Ninja LLC (https://invoiceninja.com)
*
* @license https://www.elastic.co/licensing/elastic-license
*/
namespace App\DataMapper;
use App\Models\Client;
use stdClass;
class ClientStatement
{
/**
* Defines the template name
*
* @var string
*/
public string $template = 'client_statement';
/**
* An array of clients hashed_ids
*
* Leave blank if this action should apply to all clients
*
* @var array
*/
public array $clients = [];
/**
* The consts to be used to define the date_range variable of the statement
*/
public const THIS_MONTH = 'this_month';
public const THIS_QUARTER = 'this_quarter';
public const THIS_YEAR = 'this_year';
public const PREVIOUS_MONTH = 'previous_month';
public const PREVIOUS_QUARTER = 'previous_quarter';
public const PREVIOUS_YEAR = 'previous_year';
public const CUSTOM_RANGE = "custom_range";
/**
* The date range the statement should include
*
* @var string
*/
public string $date_range = 'this_month';
/**
* If a custom range is select for the date range then
* the start_date should be supplied in Y-m-d format
*
* @var string
*/
public string $start_date = '';
/**
* If a custom range is select for the date range then
* the end_date should be supplied in Y-m-d format
*
* @var string
*/
public string $end_date = '';
/**
* Flag which allows the payment table
* to be shown
*
* @var boolean
*/
public bool $show_payments_table = true;
/**
* Flag which allows the aging table
* to be shown
*
* @var boolean
*/
public bool $show_aging_table = true;
/**
* String const which defines whether
* the invoices to be shown are either
* paid or unpaid
*
* @var string
*/
public string $status = 'paid'; // paid | unpaid
}

View File

@ -28,9 +28,8 @@ class StoreSchedulerRequest extends Request
public function rules()
{
nlog($this->all());
$rules = [
'name' => ['bail', 'required', Rule::unique('schedulers')->where('company_id', auth()->user()->company()->id)],
'is_paused' => 'bail|sometimes|boolean',
'frequency_id' => 'bail|required|integer|digits_between:1,12',
'next_run' => 'bail|required|date:Y-m-d',
@ -38,6 +37,10 @@ class StoreSchedulerRequest extends Request
'parameters' => 'bail|array',
];
$rules['name'] = ['bail', 'required', Rule::unique('schedulers')->where('company_id', auth()->user()->company()->id)];
nlog($rules);
return $rules;
}

View File

@ -36,12 +36,12 @@ class Scheduler extends BaseModel
use SoftDeletes;
protected $fillable = [
'start_from',
'is_paused',
'repeat_every',
'name',
'frequency_id',
'next_run',
'scheduled_run',
'action_class',
'action_name',
'template',
'is_paused',
'parameters',
];
@ -50,7 +50,7 @@ class Scheduler extends BaseModel
'created_at' => 'timestamp',
'updated_at' => 'timestamp',
'deleted_at' => 'timestamp',
'paused' => 'boolean',
'is_paused' => 'boolean',
'is_deleted' => 'boolean',
'parameters' => 'array',
];

View File

@ -69,8 +69,21 @@ class SchedulerTest extends TestCase
'next_run' => '2023-01-31',
'template' => 'client_statement',
'clients' => [],
'parameters' => [
'date_range' => 'last_month',
'show_payments_table' => true,
'show_aging_table' => true,
'status' => 'paid'
],
];
$response = $this->withHeaders([
'X-API-SECRET' => config('ninja.api_secret'),
'X-API-TOKEN' => $this->token,
])->postJson('/api/v1/task_schedulers', $data);
$response->assertStatus(200);
}
public function testDeleteSchedule()