From 6f842ac25746871bc5fd985ba48bb5764c73193e Mon Sep 17 00:00:00 2001 From: Dillon Ngo Date: Fri, 25 Jul 2025 14:25:39 +0800 Subject: [PATCH] E-Invoice - Automapping Issues, Sales Invoice Report (Import) --- .../ControllersLogic/ImportExcelLogic.php | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/app/Classes/Modules/Imports/ControllersLogic/ImportExcelLogic.php b/app/Classes/Modules/Imports/ControllersLogic/ImportExcelLogic.php index 7ad55ac1..1e16c542 100644 --- a/app/Classes/Modules/Imports/ControllersLogic/ImportExcelLogic.php +++ b/app/Classes/Modules/Imports/ControllersLogic/ImportExcelLogic.php @@ -5,8 +5,12 @@ namespace App\Classes\Modules\Imports\ControllersLogic; use App\Classes\Exceptions\MalformedRequestException; use App\Classes\General\Abstracts\AbstractControllerLogic; +use App\Classes\Modules\Accounts\Services\CreatesKeyValuePair; +use App\Classes\Modules\Accounts\Services\UpdatesKeyValuePair; use App\Classes\Modules\Documents\DataTransferObjects\DocumentObject; +use App\Classes\Modules\Accounts\DataTransferObjects\KeyValuePairObject; use App\Classes\ValueObjects\Constants\ApprovalStatus; +use App\Models\Booking; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; use Illuminate\Support\Facades\Log; @@ -15,6 +19,23 @@ use Maatwebsite\Excel\Facades\Excel; class ImportExcelLogic extends AbstractControllerLogic { + /** @var CreatesKeyValuePair */ + private $createsKeyValuePair; + + /** @var UpdatesKeyValuePair */ + private $updatesKeyValuePair; + + /** + * ImportExcelLogic constructor. + * @param CreatesKeyValuePair $createsKeyValuePair + * @param UpdatesKeyValuePair $updatesKeyValuePair + */ + public function __construct(CreatesKeyValuePair $createsKeyValuePair, UpdatesKeyValuePair $updatesKeyValuePair) + { + $this->createsKeyValuePair = $createsKeyValuePair; + $this->updatesKeyValuePair = $updatesKeyValuePair; + } + /** * @return array */ @@ -95,9 +116,29 @@ class ImportExcelLogic extends AbstractControllerLogic 'ConsolidatedEinvoice' => $consolidatedEinvoice, 'EInvoiceValidationLink' => $eInvoiceValidationLink, ]); + + $booking = Booking::where('marking', $ref)->first(); + if($docNo != "<>"){ + $this->updateOrCreateKeyValuePair($booking, "AUTOCOUNT_DOCNO", $docNo); + } + if($eInvoiceValidationLink){ + $this->updateOrCreateKeyValuePair($booking, "AUTOCOUNT_EINVOICE_VALIDATION_LINK", $eInvoiceValidationLink); + } } } return $this->response([]); } + + private function updateOrCreateKeyValuePair($booking, $key, $value) + { + $keyValuePairObject = new KeyValuePairObject($key, $value); + $metadata = $booking->attributesKVP()->where('key', $key)->first(); + + if ($metadata) { + $this->updatesKeyValuePair->execute($metadata, $keyValuePairObject); + } else { + $this->createsKeyValuePair->execute($booking, $keyValuePairObject); + } + } }