Add all report types into scheduler

This commit is contained in:
David Bomba 2023-04-14 16:44:04 +10:00
parent e591dbb7cd
commit 1233936936
4 changed files with 43 additions and 13 deletions

View File

@ -46,6 +46,7 @@ class StoreSchedulerRequest extends Request
'parameters.entity' => ['bail', 'sometimes', 'string', 'in:invoice,credit,quote,purchase_order'],
'parameters.entity_id' => ['bail', 'sometimes', 'string'],
'parameters.report_name' => ['bail','sometimes', 'string', 'required_if:template,email_report', 'in:ar_summary_report,ar_detail_report,tax_summary_report,user_sales_report,client_sales_report,client_balance_report,product_sales_report'],
'parameters.date_key' => ['bail','sometimes', 'string'],
];
return $rules;

View File

@ -40,6 +40,10 @@ class UpdateSchedulerRequest extends Request
'parameters.date_range' => 'bail|sometimes|string|in:last7_days,last30_days,last365_days,this_month,last_month,this_quarter,last_quarter,this_year,last_year,custom',
'parameters.start_date' => ['bail', 'sometimes', 'date:Y-m-d', 'required_if:parameters.date_rate,custom'],
'parameters.end_date' => ['bail', 'sometimes', 'date:Y-m-d', 'required_if:parameters.date_rate,custom', 'after_or_equal:parameters.start_date'],
'parameters.entity' => ['bail', 'sometimes', 'string', 'in:invoice,credit,quote,purchase_order'],
'parameters.entity_id' => ['bail', 'sometimes', 'string'],
'parameters.report_name' => ['bail','sometimes', 'string', 'required_if:template,email_report', 'in:ar_summary_report,ar_detail_report,tax_summary_report,user_sales_report,client_sales_report,client_balance_report,product_sales_report'],
'parameters.date_key' => ['bail','sometimes', 'string'],
];
return $rules;

View File

@ -14,17 +14,31 @@ namespace App\Services\Scheduler;
use App\Models\Client;
use App\Models\Scheduler;
use App\Mail\DownloadReport;
use App\Export\CSV\TaskExport;
use App\Export\CSV\QuoteExport;
use App\Utils\Traits\MakesHash;
use App\Export\CSV\ClientExport;
use App\Export\CSV\CreditExport;
use App\Utils\Traits\MakesDates;
use App\Export\CSV\ContactExport;
use App\Export\CSV\ExpenseExport;
use App\Export\CSV\InvoiceExport;
use App\Export\CSV\PaymentExport;
use App\Export\CSV\ProductExport;
use App\Jobs\Mail\NinjaMailerJob;
use App\Export\CSV\DocumentExport;
use App\Export\CSV\QuoteItemExport;
use App\Services\Report\ProfitLoss;
use App\Jobs\Mail\NinjaMailerObject;
use App\Export\CSV\InvoiceItemExport;
use App\Export\CSV\ProductSalesExport;
use App\Services\Report\ARDetailReport;
use App\Services\Report\ARSummaryReport;
use App\Services\Report\ClientBalanceReport;
use App\Services\Report\ClientSalesReport;
use App\Services\Report\TaxSummaryReport;
use App\Services\Report\UserSalesReport;
use App\Services\Report\TaxSummaryReport;
use App\Export\CSV\RecurringInvoiceExport;
use App\Services\Report\ClientSalesReport;
use App\Services\Report\ClientBalanceReport;
class EmailReport
{
@ -64,12 +78,26 @@ class EmailReport
match($this->scheduler->parameters['report_name'])
{
'product_sales_report' => $export = (new ProductSalesExport($this->scheduler->company, $data)),
'email_ar_detailed_report' => (new ARDetailReport($this->scheduler->company, $data)),
'email_ar_summary_report' => (new ARSummaryReport($this->scheduler->company, $data)),
'email_tax_summary_report' => (new TaxSummaryReport($this->scheduler->company, $data)),
'email_client_balance_report' => (new ClientBalanceReport($this->scheduler->company, $data)),
'email_client_sales_report' => (new ClientSalesReport($this->scheduler->company, $data)),
'email_user_sales_report' => (new UserSalesReport($this->scheduler->company, $data)),
'email_ar_detailed_report' => $export = (new ARDetailReport($this->scheduler->company, $data)),
'email_ar_summary_report' => $export = (new ARSummaryReport($this->scheduler->company, $data)),
'email_tax_summary_report' => $export = (new TaxSummaryReport($this->scheduler->company, $data)),
'email_client_balance_report' => $export = (new ClientBalanceReport($this->scheduler->company, $data)),
'email_client_sales_report' => $export = (new ClientSalesReport($this->scheduler->company, $data)),
'email_user_sales_report' => $export = (new UserSalesReport($this->scheduler->company, $data)),
'clients' => $export = (new ClientExport($this->scheduler->company, $data)),
'client_contacts' => $export = (new ContactExport($this->scheduler->company, $data)),
'credits' => $export = (new CreditExport($this->scheduler->company, $data)),
'documents' => $export = (new DocumentExport($this->scheduler->company, $data)),
'expenses' => $export = (new ExpenseExport($this->scheduler->company, $data)),
'invoices' => $export = (new InvoiceExport($this->scheduler->company, $data)),
'invoice_items' => $export = (new InvoiceItemExport($this->scheduler->company, $data)),
'quotes' => $export = (new QuoteExport($this->scheduler->company, $data)),
'quote_items' => $export = (new QuoteItemExport($this->scheduler->company, $data)),
'recurring_invoices' => $export = (new RecurringInvoiceExport($this->scheduler->company, $data)),
'payments' => $export = (new PaymentExport($this->scheduler->company, $data)),
'products' => $export = (new ProductExport($this->scheduler->company, $data)),
'tasks' => $export = (new TaskExport($this->scheduler->company, $data)),
'profitloss' => $export = (new ProfitLoss($this->scheduler->company, $data)),
default => $export = false,
};

View File

@ -51,10 +51,7 @@ class SchedulerService
private function email_report()
{
match($this->scheduler->template){
'product_sales_report' => (new EmailReport($this->scheduler))->run(),
default => null
};
(new EmailReport($this->scheduler))->run();
}