diff --git a/app/Classes/Modules/Imports/ControllersLogic/ImportExcelLogic.php b/app/Classes/Modules/Imports/ControllersLogic/ImportExcelLogic.php new file mode 100644 index 00000000..8dc461b6 --- /dev/null +++ b/app/Classes/Modules/Imports/ControllersLogic/ImportExcelLogic.php @@ -0,0 +1,82 @@ + 'Import Excel', + 'message' => 'You have successfully imported and updated booking details' + ]; + } + + + /** + * @param Request $request + * @return JsonResponse + * @throws MalformedRequestException + */ + public function logic(Request $request) : JsonResponse + { + $files = $request->file('files'); + + $object = new DocumentObject('', $request->input('files'), '', ApprovalStatus::APPROVED, 'imports'); + foreach ($object->getFiles() as $file){ + $collection = Excel::toCollection(null, json_decode($file)->file_info->original->file, null, null, true); + + $rows = $collection->first()->skip(1); + foreach ($rows as $index => $details) { + $docNo = $details[0] ?? null; + $docDate = $details[1] ?? null; + $debtorCode = $details[2] ?? null; + $ref = $details[3] ?? null; + $shipInfo = $details[4] ?? null; + $accNo = $details[5] ?? null; + $detailDescription = $details[6] ?? null; + $furtherDescription = $details[7] ?? null; + $classification = $details[8] ?? null; + $deptNo = $details[9] ?? null; + $qty = $details[10] ?? null; + $unitPrice = $details[11] ?? null; + $submitEinvoice = $details[12] ?? null; + $consolidatedEinvoice = $details[13] ?? null; + $eInvoiceValidationLink = $details[14] ?? null; // Safe access for the new column + + Log::info("Row {$index} Details:", [ + 'DocNo' => $docNo, + 'DocDate' => $docDate, + 'DebtorCode' => $debtorCode, + 'Ref' => $ref, + 'ShipInfo' => $shipInfo, + 'AccNo' => $accNo, + 'DetailDescription' => $detailDescription, + 'FurtherDescription' => $furtherDescription, + 'Classification' => $classification, + 'DeptNo' => $deptNo, + 'Qty' => $qty, + 'UnitPrice' => $unitPrice, + 'SubmitEinvoice' => $submitEinvoice, + 'ConsolidatedEinvoice' => $consolidatedEinvoice, + 'EInvoiceValidationLink' => $eInvoiceValidationLink, + ]); + } + } + + return $this->response([]); + } +} diff --git a/app/Http/Controllers/Imports/ImportController.php b/app/Http/Controllers/Imports/ImportController.php new file mode 100644 index 00000000..02f364b6 --- /dev/null +++ b/app/Http/Controllers/Imports/ImportController.php @@ -0,0 +1,17 @@ +execute($request); + } +} diff --git a/resources/assets/vue/components/bookings/elements/DownloadComponent.vue b/resources/assets/vue/components/bookings/elements/DownloadUploadComponent.vue similarity index 84% rename from resources/assets/vue/components/bookings/elements/DownloadComponent.vue rename to resources/assets/vue/components/bookings/elements/DownloadUploadComponent.vue index b8fddbb6..fe175436 100644 --- a/resources/assets/vue/components/bookings/elements/DownloadComponent.vue +++ b/resources/assets/vue/components/bookings/elements/DownloadUploadComponent.vue @@ -3,7 +3,7 @@
-
+
@@ -22,14 +22,24 @@
-
-
+
+
Export
+
+
+ + Import + +
+
+ + +
@@ -85,13 +95,13 @@ export default { 'Customers Report', ]; }, - handleClick(){ + handleExportClick(){ if (!this.validate()) return; const reportType = this.parameters.reportType; const routesMap = { - 'Sales Invoice Report': route('api.export.transactions.sales-invoices'), + 'Sales Invoice Report': route('api.export.bookings.sales-invoices'), 'Customers Report': route('api.export.companies.customers-data'), }; diff --git a/resources/assets/vue/components/bookings/elements/PaymentComponent.vue b/resources/assets/vue/components/bookings/elements/PaymentComponent.vue index c8ecca1c..d85e8dbd 100644 --- a/resources/assets/vue/components/bookings/elements/PaymentComponent.vue +++ b/resources/assets/vue/components/bookings/elements/PaymentComponent.vue @@ -4,7 +4,7 @@
Export Report (New) - +
diff --git a/resources/assets/vue/components/bookings/elements/UploadComponent.vue b/resources/assets/vue/components/bookings/elements/UploadComponent.vue new file mode 100644 index 00000000..bfc7573c --- /dev/null +++ b/resources/assets/vue/components/bookings/elements/UploadComponent.vue @@ -0,0 +1,88 @@ + + + diff --git a/routes/export.php b/routes/export.php index ccb51bd3..2a766539 100644 --- a/routes/export.php +++ b/routes/export.php @@ -1,14 +1,19 @@ 'export', 'as' => 'export.', 'namespace' => 'Exports'], function () { - Route::group(['prefix' => 'transactions', 'as' => 'transactions.'], function () { + Route::group(['prefix' => 'bookings', 'as' => 'bookings.'], function () { Route::get('/sales-invoices', [ExportController::class, 'salesInvoices'])->name('sales-invoices'); }); Route::group(['prefix' => 'companies', 'as' => 'companies.'], function () { Route::get('/customers-data', [ExportController::class, 'companies'])->name('customers-data'); }); }); + +Route::group(['prefix' => 'import', 'as' => 'import.', 'namespace' => 'Imports'], function () { + Route::post('/import', [ImportController::class, 'salesInvoices'])->name('sales-invoices'); +});