From bf22b86a025d814fc4457dde9abf4d4e7b895239 Mon Sep 17 00:00:00 2001 From: Dillon Ngo Date: Sat, 5 Jul 2025 14:52:50 +0800 Subject: [PATCH] Looked into a 504 error order show page --- .../ControllersLogic/FetchOrderV2Logic.php | 10 +- app/Http/Resources/OrderShowPageResource.php | 43 ++ .../TransactionForOrderShowPageResource.php | 71 ++++ .../OrderProfileV2SectionComponent.vue | 20 +- .../elements/CustPayBillComponent.vue | 314 ++++++++++++++ .../CustPayBillWithStorageComponent.vue | 389 ++++++++++++++++++ 6 files changed, 844 insertions(+), 3 deletions(-) create mode 100644 app/Http/Resources/OrderShowPageResource.php create mode 100644 app/Http/Resources/TransactionForOrderShowPageResource.php create mode 100644 resources/assets/vue/components/paymentsBilling/elements/CustPayBillComponent.vue create mode 100644 resources/assets/vue/components/paymentsBilling/elements/CustPayBillWithStorageComponent.vue diff --git a/app/Classes/Modules/Orders/ControllersLogic/FetchOrderV2Logic.php b/app/Classes/Modules/Orders/ControllersLogic/FetchOrderV2Logic.php index 9966d18c..820586f7 100644 --- a/app/Classes/Modules/Orders/ControllersLogic/FetchOrderV2Logic.php +++ b/app/Classes/Modules/Orders/ControllersLogic/FetchOrderV2Logic.php @@ -6,6 +6,7 @@ namespace App\Classes\Modules\Orders\ControllersLogic; use App\Classes\General\Abstracts\AbstractControllerLogic; use App\Classes\Modules\Orders\Services\FetchesOrder; use App\Classes\Modules\Orders\Standards\Rules\CanFetchOrder; +use App\Http\Resources\OrderShowPageResource; use App\Http\Resources\OrderV2Resource; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; @@ -57,8 +58,13 @@ class FetchOrderV2Logic extends AbstractControllerLogic $query->storages = $request->input('storages'); //from middleware } - return $this->resourceResponse(new OrderV2Resource($query)); - + if($request->route('id') === '578755292') + { + return $this->resourceResponse(new OrderShowPageResource($query)); + } + else{ + return $this->resourceResponse(new OrderV2Resource($query)); + } } } diff --git a/app/Http/Resources/OrderShowPageResource.php b/app/Http/Resources/OrderShowPageResource.php new file mode 100644 index 00000000..c608457b --- /dev/null +++ b/app/Http/Resources/OrderShowPageResource.php @@ -0,0 +1,43 @@ + $this->id, + 'reference' => $this->reference, + 'reference_contract' => (int) $this->type, + 'type' => (int) $this->type, + 'status' => (int) $this->status, + 'company_module' => new CompanyModuleResource($this->companyModule), + 'warehouse' => new CompanyModuleResource($this->orderRoles()->where('role_id', '=', OrderRoleTypes::ORIGIN_WAREHOUSE)->first()->appointee), + 'address' => new AddressResource($this->addresses()->where('status', '=', ApprovalStatus::APPROVED)->first()), + 'address_change_request' => new AddressResource($this->addressesPendingVerification()->first()), + 'invoices' => $this->whenLoaded('packingLists', function() { + $transactions = $this->transactions()->whereNotIn('transactions.status', [0, 1])->whereIn('transactions.type', [TransactionType::SHIPPING_INVOICE, TransactionType::STORAGE_INVOICE])->get(); + foreach ($transactions as $transaction) { + $transaction['is_einvoice_applicable'] = $this->companyModule->company->e_invoice === 1; + } + return TransactionForOrderShowPageResource::collection($transactions); + }), + 'storages' => $this->storages ? $this->storages : null, //from middleware + 'remarks' => RemarkResource::collection($this->remarks), + 'supplier_tax_rebate' => SupplierTaxRebateResource::collection($this->supplierTaxRebate), + 'created_at' => $this->created_at->format('d-m-Y'), + ]; + } +} diff --git a/app/Http/Resources/TransactionForOrderShowPageResource.php b/app/Http/Resources/TransactionForOrderShowPageResource.php new file mode 100644 index 00000000..b0ef2b0e --- /dev/null +++ b/app/Http/Resources/TransactionForOrderShowPageResource.php @@ -0,0 +1,71 @@ +owner instanceof Transaction) { + // if ($this->owner) { + // if ($this->owner->owner) { + // $order = new OrderResource($this->owner->owner->owner); + // } + // } + } else if (!($this->owner instanceof Transaction) && !($this->owner instanceof Wallet)) { + // if ($this->owner) { + // $order = new OrderResource($this->owner->owner); + // } + } else { + $group = Group::where('reference', $this->payment_reference)->first(); + if ($group) { + $groupTransactions = GroupTransactionResource::collection($group->groupTransactions); + } + } + + $packingListReference = null; + if ($this->owner instanceof PackingList) { + $packingListReference = $this->owner->reference; + } + + return [ + 'id' => $this->id, + 'owner_type' => $this->owner_type, + 'documents' => $groupTransactions ? DocumentResource::collection($this->documents->where('status', ApprovalStatus::PENDING_VERIFICATION)) : DocumentResource::collection($this->documents), + 'type' => (int) $this->type, + 'bill_no' => $this->bill_no, + 'amount' => (double) $this->amount, + 'payment_method' => (int) $this->payment_method, + 'payment_reference' => $this->payment_reference, + 'service_charge' => (double) $this->service_charge, + 'tax' => (double) $this->tax, + 'original_amount' => (double) $this->original_amount, + 'currency_rate' => (double) $this->currency_rate, + 'status' => (int) $this->status, + 'remarks' => RemarkResource::collection($this->remarks), + 'packing_list_reference' => $packingListReference, + 'storages' => $this->storages ? $this->storages : null, //from middleware + 'is_waived' => (int) $this->is_waived, + 'expires_on' => Carbon::parse($this->expires_on)->format('d-m-Y h:i:s A'), + 'updated_at' => Carbon::parse($this->updated_at)->format('d-m-Y'), + 'created_at' => Carbon::parse($this->created_at)->format('d-m-Y'), + 'is_einvoice_applicable' => Carbon::parse($this->created_at)->isAfter(Carbon::parse(env('E_INVOICE_START_DATE', '2025-07-01 00:00:00'))) && $this->is_einvoice_applicable, + ]; + } +} diff --git a/resources/assets/vue/components/orders/sections/OrderProfileV2SectionComponent.vue b/resources/assets/vue/components/orders/sections/OrderProfileV2SectionComponent.vue index 8df2e2ef..e3755693 100644 --- a/resources/assets/vue/components/orders/sections/OrderProfileV2SectionComponent.vue +++ b/resources/assets/vue/components/orders/sections/OrderProfileV2SectionComponent.vue @@ -149,7 +149,7 @@ -
+
@@ -167,6 +167,24 @@
+
+
+
+
+

Invoices

+

You can view your invoices here and make payment..

+
+
+
+
+ +
+
+ +
+
+
+
diff --git a/resources/assets/vue/components/paymentsBilling/elements/CustPayBillComponent.vue b/resources/assets/vue/components/paymentsBilling/elements/CustPayBillComponent.vue new file mode 100644 index 00000000..23da476c --- /dev/null +++ b/resources/assets/vue/components/paymentsBilling/elements/CustPayBillComponent.vue @@ -0,0 +1,314 @@ + + diff --git a/resources/assets/vue/components/paymentsBilling/elements/CustPayBillWithStorageComponent.vue b/resources/assets/vue/components/paymentsBilling/elements/CustPayBillWithStorageComponent.vue new file mode 100644 index 00000000..149d5a6a --- /dev/null +++ b/resources/assets/vue/components/paymentsBilling/elements/CustPayBillWithStorageComponent.vue @@ -0,0 +1,389 @@ + +