diff --git a/app/Http/Requests/TaskScheduler/StoreSchedulerRequest.php b/app/Http/Requests/TaskScheduler/StoreSchedulerRequest.php index f3cbd13e9ffa..f1e5f3b58082 100644 --- a/app/Http/Requests/TaskScheduler/StoreSchedulerRequest.php +++ b/app/Http/Requests/TaskScheduler/StoreSchedulerRequest.php @@ -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; diff --git a/app/Http/Requests/TaskScheduler/UpdateSchedulerRequest.php b/app/Http/Requests/TaskScheduler/UpdateSchedulerRequest.php index a7f70f48b2b8..d8bf21970622 100644 --- a/app/Http/Requests/TaskScheduler/UpdateSchedulerRequest.php +++ b/app/Http/Requests/TaskScheduler/UpdateSchedulerRequest.php @@ -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; diff --git a/app/Services/Scheduler/EmailReport.php b/app/Services/Scheduler/EmailReport.php index 2913782d9f84..8ec4c020630e 100644 --- a/app/Services/Scheduler/EmailReport.php +++ b/app/Services/Scheduler/EmailReport.php @@ -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, }; diff --git a/app/Services/Scheduler/SchedulerService.php b/app/Services/Scheduler/SchedulerService.php index 4f34e7b445d3..1089b882d572 100644 --- a/app/Services/Scheduler/SchedulerService.php +++ b/app/Services/Scheduler/SchedulerService.php @@ -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(); }