From 7d956888d2feecf4db6b01815332d8a0f8aebdc0 Mon Sep 17 00:00:00 2001 From: Dillon Ngo Date: Wed, 23 Jul 2025 22:45:32 +0800 Subject: [PATCH] E-Invoice - Automapping Issues, Sales Invoice Report (Import) --- .../ControllersLogic/ImportExcelLogic.php | 23 ++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/app/Classes/Modules/Imports/ControllersLogic/ImportExcelLogic.php b/app/Classes/Modules/Imports/ControllersLogic/ImportExcelLogic.php index 17a5a34f..7ad55ac1 100644 --- a/app/Classes/Modules/Imports/ControllersLogic/ImportExcelLogic.php +++ b/app/Classes/Modules/Imports/ControllersLogic/ImportExcelLogic.php @@ -39,7 +39,28 @@ class ImportExcelLogic extends AbstractControllerLogic foreach ($object->getFiles() as $file){ $collection = Excel::toCollection(null, json_decode($file)->file_info->original->file, null, null, true); - $rows = $collection->first()->skip(1); + $sheet = $collection->first(); + $header = $sheet->first()->toArray(); + + $normalizedHeader = array_map(fn($h) => strtolower(trim($h)), $header); + $salesInvoiceHeader = [ + 'docno', 'docdate', 'debtorcode', 'ref', 'shipinfo', 'accno', + 'detaildescription', 'furtherdescription', 'classification', + 'deptno', 'qty', 'unitprice', 'submiteinvoice', 'consolidatedeinvoice' + ]; + $customersReportHeader = [ + 'tin', 'identityno', 'name', 'identitytype', 'taxclassification', 'msiccode', + 'businessactivitydesc', 'debtorcode', 'tradename', 'address', 'postcode', + 'phone', 'emailaddress', 'city', 'countrycode', 'statecode' + ]; + if ( + ($reportType === 'Sales Invoice Report' && $normalizedHeader !== $salesInvoiceHeader) || + ($reportType === 'Customers Report' && $normalizedHeader !== $customersReportHeader) + ) { + throw new MalformedRequestException('Uploaded Excel file format is incorrect. Column headers do not match expected format.'); + } + $rows = $sheet->skip(1); + foreach ($rows as $index => $details) { $docNo = $details[0] ?? null; $docDate = $details[1] ?? null;