diff --git a/app/Classes/Modules/Orders/ControllersLogic/FetchOrderV2Logic.php b/app/Classes/Modules/Orders/ControllersLogic/FetchOrderV2Logic.php index 820586f7..890e8376 100644 --- a/app/Classes/Modules/Orders/ControllersLogic/FetchOrderV2Logic.php +++ b/app/Classes/Modules/Orders/ControllersLogic/FetchOrderV2Logic.php @@ -6,8 +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 App\Http\Resources\FetchOrderResource; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; @@ -49,7 +48,6 @@ class FetchOrderV2Logic extends AbstractControllerLogic */ public function logic(Request $request) : JsonResponse { - $this->canFetchOrder->passes(); $query = $this->fetchesOrder->execute(['reference' => $request->route('id'), 'with_packing_lists' => true]); @@ -57,14 +55,6 @@ class FetchOrderV2Logic extends AbstractControllerLogic if($request->input('storages')){ $query->storages = $request->input('storages'); //from middleware } - - if($request->route('id') === '578755292') - { - return $this->resourceResponse(new OrderShowPageResource($query)); - } - else{ - return $this->resourceResponse(new OrderV2Resource($query)); - } + return $this->resourceResponse(new FetchOrderResource($query)); } - } diff --git a/app/Classes/Modules/Orders/ControllersLogic/ListOrdersV2Logic.php b/app/Classes/Modules/Orders/ControllersLogic/ListOrdersV2Logic.php index 289522bc..1219af2b 100644 --- a/app/Classes/Modules/Orders/ControllersLogic/ListOrdersV2Logic.php +++ b/app/Classes/Modules/Orders/ControllersLogic/ListOrdersV2Logic.php @@ -8,7 +8,6 @@ use App\Classes\Modules\Orders\Services\ListsOrders; use App\Classes\Modules\Orders\Standards\Rules\CanListOrders; use App\Classes\ValueObjects\Constants\OrderType; use App\Http\Resources\OrderBaseResource; -use App\Http\Resources\OrderV2Resource; use ErrorException; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; @@ -65,9 +64,5 @@ class ListOrdersV2Logic extends AbstractControllerLogic } return $this->collectionResponse(OrderBaseResource::collection($query)); - //return $this->collectionResponse(OrderV2Resource::collection($query)); } - - - } diff --git a/app/Classes/Modules/Transactions/ControllersLogic/FetchTransactionLogic.php b/app/Classes/Modules/Transactions/ControllersLogic/FetchTransactionLogic.php new file mode 100644 index 00000000..64460ad0 --- /dev/null +++ b/app/Classes/Modules/Transactions/ControllersLogic/FetchTransactionLogic.php @@ -0,0 +1,61 @@ + 'Fetched Transaction', + 'message' => 'You have successfully retrieved a Transaction' + ]; + } + + /** @var CanFetchTransaction */ + private $canFetchTransaction; + + /** @var FetchesTransaction */ + private $fetchesTransaction; + + /** + * FetchTransactionLogic constructor. + * @param CanFetchTransaction $canFetchTransaction + * @param FetchesTransaction $fetchesTransaction + */ + public function __construct(CanFetchTransaction $canFetchTransaction, FetchesTransaction $fetchesTransaction) + { + $this->canFetchTransaction = $canFetchTransaction; + $this->fetchesTransaction = $fetchesTransaction; + } + + /** + * @param Request $request + * @return JsonResponse + * @throws \App\Classes\Exceptions\AccessForbiddenException + * @throws \App\Classes\Exceptions\RequestValidationException + */ + public function logic(Request $request) : JsonResponse + { + $this->canFetchTransaction->passes(); + + $query = $this->fetchesTransaction->execute(['id' => $request->route('transaction_id')]); + + if($request->input('storages')){ + $query->storages = $request->input('storages'); //from middleware + } + + return $this->resourceResponse(new TransactionWithStorageResource($query)); + } +} diff --git a/app/Classes/Modules/Transactions/Processors/CheckStorageInvoiceTransactionProcessor.php b/app/Classes/Modules/Transactions/Processors/CheckStorageInvoiceTransactionProcessor.php index cad13ca3..b2152e29 100644 --- a/app/Classes/Modules/Transactions/Processors/CheckStorageInvoiceTransactionProcessor.php +++ b/app/Classes/Modules/Transactions/Processors/CheckStorageInvoiceTransactionProcessor.php @@ -17,8 +17,6 @@ use App\Classes\Modules\Transactions\Services\DeletesGroup; use App\Classes\Modules\Billplzs\Services\DeletesBillplzBill; use App\Classes\Modules\Transactions\DataTransferObjects\TransactionObject; use App\Classes\Modules\Transactions\DataTransferObjects\TransactionDetailObject; - - use App\Classes\ValueObjects\Constants\TransactionType; use App\Classes\ValueObjects\Constants\PaymentMethodType; use App\Classes\ValueObjects\Constants\ApprovalStatus; @@ -26,7 +24,6 @@ use App\Classes\ValueObjects\Constants\PackageType; use App\Classes\ValueObjects\Constants\PackingListType; use App\Classes\ValueObjects\Constants\TaxPercentage; use App\Classes\ValueObjects\Constants\TransactionDetailType; -use App\Http\Resources\TransactionForOrderShowPageResource; use App\Http\Resources\TransactionWithStorageResource; use App\Models\Order; use App\Models\PackingList; @@ -166,6 +163,7 @@ class CheckStorageInvoiceTransactionProcessor /** @var Transaction $invoice_transaction */ foreach ($transactions as $invoice_transaction){ + LogHelper::channel('storage_invoices')->info('invoice_transaction bill_no: '. $invoice_transaction->bill_no); $result = null; if(!$is_credit_term){ $result = $this->processSingleTransactionOfTypeShippingInvoice($invoice_transaction, $packingList, $order->company_module_id, $eta); @@ -183,6 +181,7 @@ class CheckStorageInvoiceTransactionProcessor private function getArrivalDateAtChinaWarehoue($packingList){ if($packingList->type === PackingListType::SHIPPING_PACKING_LIST){ + LogHelper::channel('storage_invoices')->info('packingList reference: '.json_encode($packingList->reference)); $receive_packing_list = PackingList::where('reference', $packingList->reference)->where('type', PackingListType::WAREHOUSE_RECEIVE_LIST)->first(); LogHelper::channel('storage_invoices')->info('receive_packing_list: '.json_encode($receive_packing_list->transports)); $transport = $receive_packing_list->transports->first(); @@ -344,7 +343,7 @@ class CheckStorageInvoiceTransactionProcessor 'currentDate' => $dt2->format('Y-m-d H:i:s'), 'cbm' => $cbm, 'pricePerCBM' => $pricePerCBM, - 'storageInvoice' => new TransactionForOrderShowPageResource($storageInvoice) + 'storageInvoice' => new TransactionWithStorageResource($storageInvoice) ]; return $result; } @@ -407,7 +406,7 @@ class CheckStorageInvoiceTransactionProcessor 'currentDate' => $resultCurrentDate, 'cbm' => $cbm, 'pricePerCBM' => $pricePerCBM, - 'storageInvoice' => new TransactionForOrderShowPageResource($storageInvoice) + 'storageInvoice' => new TransactionWithStorageResource($storageInvoice) ]; return $result; } diff --git a/app/Classes/Modules/Transactions/Standards/Rules/CanFetchTransaction.php b/app/Classes/Modules/Transactions/Standards/Rules/CanFetchTransaction.php new file mode 100644 index 00000000..24784c75 --- /dev/null +++ b/app/Classes/Modules/Transactions/Standards/Rules/CanFetchTransaction.php @@ -0,0 +1,39 @@ +execute($request); + } +} diff --git a/app/Http/Kernel.php b/app/Http/Kernel.php index ef039b85..e03588ac 100644 --- a/app/Http/Kernel.php +++ b/app/Http/Kernel.php @@ -72,6 +72,7 @@ class Kernel extends HttpKernel 'token.check' => \App\Http\Middleware\TokenCheckerMiddleware::class, 'auth.check' => \App\Http\Middleware\CheckAuthorizationMiddleware::class, 'storage.invoice.check.byorder' => \App\Http\Middleware\CheckForStorageInvoiceByOrderId::class, + 'storage.invoice.check.bytransaction' => \App\Http\Middleware\CheckForStorageInvoiceByTransactionId::class, 'storage.invoice.check.bytransactions' => \App\Http\Middleware\CheckForStorageInvoiceByTransactions::class, 'storage.invoice.check.bygroup' => \App\Http\Middleware\CheckForStorageInvoiceByGroup::class, 'storage.invoice.check.bypackinglists' => \App\Http\Middleware\CheckForStorageInvoiceByPackingLists::class, diff --git a/app/Http/Middleware/CheckForStorageInvoiceByTransactionId.php b/app/Http/Middleware/CheckForStorageInvoiceByTransactionId.php new file mode 100644 index 00000000..a864c119 --- /dev/null +++ b/app/Http/Middleware/CheckForStorageInvoiceByTransactionId.php @@ -0,0 +1,47 @@ +storageInvoiceTransactionProcessor = $storageInvoiceTransactionProcessor; + } + + + /** + * Handle an incoming request. + * + * @param Request $request + * @param \Closure(\Illuminate\Http\Request): (\Illuminate\Http\Response|\Illuminate\Http\RedirectResponse) $next + * @return \Illuminate\Http\Response|\Illuminate\Http\RedirectResponse + */ + public function handle(Request $request, Closure $next) + { + $transactionId = $request->route('transaction_id'); + LogHelper::channel('storage_invoices')->info('CheckForStorageInvoiceByTransactionId: ' . $transactionId); + $storages = []; + try{ + $transaction = Transaction::where('id', $transactionId)->first(); + if($transaction){ + $storages = $this->storageInvoiceTransactionProcessor->executeShippingTransaction($transaction); + } + } catch (\Exception $exception) { + $storages = []; + } + $request->merge(['storages' => $storages]); + return $next($request); + } +} diff --git a/app/Http/Resources/OrderV2Resource.php b/app/Http/Resources/FetchOrderResource.php similarity index 97% rename from app/Http/Resources/OrderV2Resource.php rename to app/Http/Resources/FetchOrderResource.php index 7d3d7912..ddf7e584 100644 --- a/app/Http/Resources/OrderV2Resource.php +++ b/app/Http/Resources/FetchOrderResource.php @@ -5,10 +5,9 @@ namespace App\Http\Resources; use App\Classes\ValueObjects\Constants\ApprovalStatus; use App\Classes\ValueObjects\Constants\OrderRoleTypes; use App\Classes\ValueObjects\Constants\TransactionType; -use Carbon\Carbon; use Illuminate\Http\Resources\Json\JsonResource; -class OrderV2Resource extends JsonResource +class FetchOrderResource extends JsonResource { /** * Transform the resource into an array. diff --git a/app/Http/Resources/OrderShowPageResource.php b/app/Http/Resources/OrderShowPageResource.php deleted file mode 100644 index c608457b..00000000 --- a/app/Http/Resources/OrderShowPageResource.php +++ /dev/null @@ -1,43 +0,0 @@ - $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 deleted file mode 100644 index b0ef2b0e..00000000 --- a/app/Http/Resources/TransactionForOrderShowPageResource.php +++ /dev/null @@ -1,71 +0,0 @@ -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 e3755693..6e45b287 100644 --- a/resources/assets/vue/components/orders/sections/OrderProfileV2SectionComponent.vue +++ b/resources/assets/vue/components/orders/sections/OrderProfileV2SectionComponent.vue @@ -149,7 +149,7 @@ -
+ +
@@ -176,19 +176,13 @@
-
- -
-
- -
+
- @@ -224,16 +218,16 @@ pendingQueue () { return this.$store.getters.isInCompleteQueue(this.section); }, - orderStorageMap() { - // Create a map to link parent invoice IDs to storageInvoiceIds - const storageMap = {}; - if(this.order.storages){ - for (const storage of this.order.storages) { - storageMap[storage.parentInvoiceId] = storage.storageInvoiceId; - } - } - return storageMap; - } + // orderStorageMap() { + // // Create a map to link parent invoice IDs to storageInvoiceIds + // const storageMap = {}; + // if(this.order.storages){ + // for (const storage of this.order.storages) { + // storageMap[storage.parentInvoiceId] = storage.storageInvoiceId; + // } + // } + // return storageMap; + // } }, watch: { pendingQueue(inComplete){ @@ -264,35 +258,35 @@ window.location.href = this.route('error.404'); } }, - getStorageInfo(invoice) { - const storageObject = this.findStorageInfoObject(invoice.id); - return storageObject; - }, - findStorageInfoObject(shippingInvoiceId) { - if(this.order.storages){ - return this.order.storages.find(storage => storage.parentInvoiceId === shippingInvoiceId); - } - return null; - }, - getMergedInvoices(invoice){ - const storageInvoice = this.getStorageInvoice(invoice); - const mergedArray = [ - ...(invoice ? [invoice] : []), - ...(storageInvoice ? [storageInvoice] : []), - ]; - return mergedArray; - }, - getStorageInvoice(invoice) { - // Retrieve the storageInvoiceId for the current shipping invoice from storage info (order.storages) - const storageInvoiceId = this.orderStorageMap[invoice.id]; + // getStorageInfo(invoice) { + // const storageObject = this.findStorageInfoObject(invoice.id); + // return storageObject; + // }, + // findStorageInfoObject(shippingInvoiceId) { + // if(this.order.storages){ + // return this.order.storages.find(storage => storage.parentInvoiceId === shippingInvoiceId); + // } + // return null; + // }, + // getMergedInvoices(invoice){ + // const storageInvoice = this.getStorageInvoice(invoice); + // const mergedArray = [ + // ...(invoice ? [invoice] : []), + // ...(storageInvoice ? [storageInvoice] : []), + // ]; + // return mergedArray; + // }, + // getStorageInvoice(invoice) { + // // Retrieve the storageInvoiceId for the current shipping invoice from storage info (order.storages) + // const storageInvoiceId = this.orderStorageMap[invoice.id]; - // Find and return the storage invoice (type 16) from order.invoices - const storageInvoice = this.order.invoices.find((invoice) => { - return invoice.type === 16 && invoice.id === storageInvoiceId; - }); + // // Find and return the storage invoice (type 16) from order.invoices + // const storageInvoice = this.order.invoices.find((invoice) => { + // return invoice.type === 16 && invoice.id === storageInvoiceId; + // }); - return storageInvoice; - }, + // return storageInvoice; + // }, download(param) { let url = route('order.qr.download', param.id); if(window.LARAVEL_VAPOR_ENABLED){ diff --git a/resources/assets/vue/components/paymentsBilling/elements/CustPayBillComponent.vue b/resources/assets/vue/components/paymentsBilling/elements/CustPayBillComponent.vue deleted file mode 100644 index 23da476c..00000000 --- a/resources/assets/vue/components/paymentsBilling/elements/CustPayBillComponent.vue +++ /dev/null @@ -1,314 +0,0 @@ - - diff --git a/resources/assets/vue/components/paymentsBilling/elements/CustPayBillParentComponent.vue b/resources/assets/vue/components/paymentsBilling/elements/CustPayBillParentComponent.vue new file mode 100644 index 00000000..082a2a58 --- /dev/null +++ b/resources/assets/vue/components/paymentsBilling/elements/CustPayBillParentComponent.vue @@ -0,0 +1,82 @@ + + diff --git a/resources/assets/vue/components/paymentsBilling/elements/CustPayBillWithStorageComponent.vue b/resources/assets/vue/components/paymentsBilling/elements/CustPayBillWithStorageComponent.vue deleted file mode 100644 index 149d5a6a..00000000 --- a/resources/assets/vue/components/paymentsBilling/elements/CustPayBillWithStorageComponent.vue +++ /dev/null @@ -1,389 +0,0 @@ - - diff --git a/routes/order.php b/routes/order.php index cb142a63..31368d46 100644 --- a/routes/order.php +++ b/routes/order.php @@ -4,8 +4,8 @@ use Illuminate\Support\Facades\Route; Route::group(['prefix' => 'order', 'as' => 'order.', 'namespace' => 'Orders'], function () { Route::get('/show/{id}', 'FetchOrderController@fetch')->name('show'); - // Route::get('/v2/show/{id}', 'FetchOrderV2Controller@fetch')->name('v2.show'); - Route::get('/v2/show/{id}', 'FetchOrderV2Controller@fetch')->middleware('storage.invoice.check.byorder')->name('v2.show'); + Route::get('/v2/show/{id}', 'FetchOrderV2Controller@fetch')->name('v2.show'); + // Route::get('/v2/show/{id}', 'FetchOrderV2Controller@fetch')->middleware('storage.invoice.check.byorder')->name('v2.show'); Route::get('/list', 'ListOrdersController@list')->name('list'); Route::get('/v2/list', 'ListOrdersV2Controller@list')->name('v2.list'); Route::post('/create', 'CreateOrderController@create')->name('create'); diff --git a/routes/transaction.php b/routes/transaction.php index 872c8836..92cd95ca 100644 --- a/routes/transaction.php +++ b/routes/transaction.php @@ -58,4 +58,6 @@ Route::group(['prefix' => 'transactions', 'namespace' => 'Transactions', 'as' => // Route::post('/bulk/po', 'CreateBulkPurchaseOrderDocumentController@create')->name('bulk.po'); }); + Route::get('/single/{transaction_id}', 'FetchTransactionController@fetch')->middleware('storage.invoice.check.bytransaction')->name('fetch'); + });