diff --git a/app/Classes/Modules/Companies/ControllersLogic/BulkDownloadSupplierWhiteFormsLogic.php b/app/Classes/Modules/Companies/ControllersLogic/BulkDownloadSupplierWhiteFormsLogic.php index bf7ed4b7..73f59c58 100644 --- a/app/Classes/Modules/Companies/ControllersLogic/BulkDownloadSupplierWhiteFormsLogic.php +++ b/app/Classes/Modules/Companies/ControllersLogic/BulkDownloadSupplierWhiteFormsLogic.php @@ -10,6 +10,7 @@ use App\Classes\ValueObjects\Constants\DocumentType; use App\Models\Company; use App\Models\Group; use Carbon\Carbon; +use Illuminate\Support\Facades\Log; class BulkDownloadSupplierWhiteFormsLogic { @@ -20,33 +21,57 @@ class BulkDownloadSupplierWhiteFormsLogic */ public function execute(Request $request) { - $startDate = Carbon::createFromFormat('d-m-Y', $request->input('startDate'))->startOfDay(); - $endDate = Carbon::createFromFormat('d-m-Y', $request->input('endDate'))->endOfDay(); - - $companyReference = Company::find($request->input('supplier'))->reference; - $groups = Group::where('issuer', $request->input('supplier')) - ->whereDate('created_at', '>=', $startDate) - ->whereDate('created_at', '<=', $endDate) - ->orderBy('created_at', 'DESC') - ->get(); - - if (count($groups) > 0) { - $zip_file = "currency_vendor_orders_{$request->input('startDate')}_to_{$request->input('endDate')}_{$companyReference}.zip"; - - $zip = new ZipArchive(); - if ($zip->open($zip_file, ZIPARCHIVE::CREATE | ZipArchive::OVERWRITE)) { - foreach($groups as $group) { - $document = $group->documents()->where('document_type', DocumentType::CURRENCY_VENDOR_ORDER)->whereNull('deleted_at')->first()->files()->first(); - $zip->addFile(Storage::disk('documents')->path($document->file->file_info->original->file), $group->reference . '.pdf'); - } + try { + + $startDate = Carbon::createFromFormat('d-m-Y', $request->input('startDate'))->startOfDay(); + $endDate = Carbon::createFromFormat('d-m-Y', $request->input('endDate'))->endOfDay(); - $zip->close(); - while (ob_get_level()) { - ob_end_clean(); - } + $companyReference = Company::find($request->input('supplier'))->reference; + $groups = Group::where('issuer', $request->input('supplier')) + ->whereDate('created_at', '>=', $startDate) + ->whereDate('created_at', '<=', $endDate) + ->orderBy('created_at', 'DESC') + ->get(); + + if (count($groups) > 0) { - return response()->download($zip_file); - } - } + $zipDirectory = storage_path('app/bulk_whiteform'); // Update this with the actual directory path + + if (!file_exists($zipDirectory)) { + mkdir($zipDirectory, 0755, true); + } + + $zip_file = "{$zipDirectory}/currency_vendor_orders_{$request->input('startDate')}_to_{$request->input('endDate')}_{$companyReference}.zip"; + + $zip = new ZipArchive(); + if ($zip->open($zip_file, ZIPARCHIVE::CREATE | ZipArchive::OVERWRITE)) { + foreach($groups as $group) { + $document = $group->documents()->where('document_type', DocumentType::CURRENCY_VENDOR_ORDER)->whereNull('deleted_at')->first()->files()->first(); + $zip->addFile(Storage::disk('documents')->path($document->file->file_info->original->file), $group->reference . '.pdf'); + } + + $zip->close(); + while (ob_get_level()) { + ob_end_clean(); + } + + return response()->download($zip_file); + } + } + + return response()->json([ + 'status' => 'Failed', + 'message' => 'No white form found for this supplier in the given date range.', + ]); + + } catch (\Exception $e) { + // Log the exception for debugging + Log::error('Error in BulkDownloadSupplierWhiteFormsLogic: ' . $e->getMessage()); + + return response()->json([ + 'status' => 'Failed', + 'message' => 'An error occurred while processing the request.', + ]); + } } } \ No newline at end of file diff --git a/resources/assets/vue/components/bookings/elements/DownloadSupplierWhiteFormComponent.vue b/resources/assets/vue/components/bookings/elements/DownloadSupplierWhiteFormComponent.vue index 34e86cbd..317ac0c3 100644 --- a/resources/assets/vue/components/bookings/elements/DownloadSupplierWhiteFormComponent.vue +++ b/resources/assets/vue/components/bookings/elements/DownloadSupplierWhiteFormComponent.vue @@ -4,19 +4,19 @@
-
+
-
+
-
+
@@ -25,7 +25,7 @@
- Export White Form + Export
@@ -65,7 +65,7 @@ export default { }, methods: { bulkDownloadWhiteForm(){ - window.open(route('suppliers.white_forms') + '?supplier=' + this.parameters.supplier + '&startDate=' + this.parameters.startDate + '&endDate=' + this.parameters.endDate, '_blank'); + this.submit(this.route('api.suppliers.white_forms'), 'post', this.section, false, false); }, }, mixins: [componentHandler] diff --git a/resources/assets/vue/components/bookings/elements/PaymentComponent.vue b/resources/assets/vue/components/bookings/elements/PaymentComponent.vue index 0f4c9a1e..d947fe6f 100644 --- a/resources/assets/vue/components/bookings/elements/PaymentComponent.vue +++ b/resources/assets/vue/components/bookings/elements/PaymentComponent.vue @@ -2,19 +2,33 @@
-
+
+ Export Payment Transactions CSV
+
+
+
+ Download Zip White Form + +
+
+
-
+
+ Filter Supplier +
+
+
+
-
- +
+
@@ -78,11 +92,6 @@
-
-
- -
-
diff --git a/routes/api.php b/routes/api.php index 310305d3..8b4bada0 100644 --- a/routes/api.php +++ b/routes/api.php @@ -33,6 +33,7 @@ Route::group(['middleware' => 'api', 'prefix' => 'v1', 'as' => 'api.'], function Route::post('/import/upload-import-invoices', 'Imports\ImportStatementInvoiceController@import')->name('import_invoices.upload'); Route::post('/import/upload-import-receipt', 'Imports\ImportStatementReceiptsController@import')->name('import_receipts.upload'); Route::post('/customers/invoices', 'Companies\BulkDownloadCustomerInvoicesController@download')->name('customers.invoices'); + Route::post('/supplier/white-form/bulk-download', 'Companies\BulkDownloadSupplierWhiteFormsController@download')->name('suppliers.white_forms'); require __DIR__ . '/company.php'; diff --git a/routes/web.php b/routes/web.php index 25301635..612fa976 100644 --- a/routes/web.php +++ b/routes/web.php @@ -261,7 +261,6 @@ Route::get('/export/payment-transactions/f614e339d7058904a831aad742e24d55', 'Exp Route::get('/export/wallet-transactions/f614e339d7058904a831aad742e24d55', 'Exports\ExportCustomersToExcelController@walletTransactions')->name('walletTransactions.export'); Route::get('/export/booking-transactions', 'Exports\ExportCustomersToExcelController@bookingTransactions')->name('export.transactions.booking'); Route::get('/export/invoice-transactions/f614e339d7058904a831aad742e24d55', 'Exports\ExportCustomersToExcelController@invoiceTransactions')->name('invoiceTransactions.export'); -Route::get('/supplier/white-form/bulk-download', 'Companies\BulkDownloadSupplierWhiteFormsController@download')->name('suppliers.white_forms'); Route::get('/products', function (\App\Classes\Modules\Exports\Services\ExportsProducts $exportsProducts) { $bookings = Booking::where(function($query){