Laravel Vapor - Enhancement to prevent customer from underpay when a transaction also invoice storage invoices

This commit is contained in:
Dillon Ngo
2024-11-01 10:05:16 +08:00
parent 4a2860449f
commit 2fccdf4f7e
@@ -128,28 +128,8 @@ class CheckStorageInvoiceTransactionProcessor
$packingLists = $order->destinationWarehousePackages;
foreach ($packingLists as $packingList){
$arrivalDateAtChinaWarehouse = $this->getArrivalDateAtChinaWarehoue($packingList);
LogHelper::channel('storage_invoices')->info('arrivalDateAtChinaWarehouse: '.json_encode($arrivalDateAtChinaWarehouse));
LogHelper::channel('storage_invoices')->info('destinationWarehousePackage: '.json_encode($packingList));
$eta = $this->getEtaFromPackingList($packingList);
if($arrivalDateAtChinaWarehouse && $eta){
$transactions = $packingList->transactions()->where('transactions.type', TransactionType::SHIPPING_INVOICE)->whereIn('transactions.status', [ApprovalStatus::APPROVED, ApprovalStatus::COMPLETED])->get();
// $transactions = $destinationWarehousePackage->transactions()->where('transactions.type', TransactionType::SHIPPING_INVOICE)->where('transactions.status', ApprovalStatus::APPROVED)->get();
/** @var Transaction $invoice_transaction */
foreach ($transactions as $invoice_transaction){
$result = null;
if(!$is_credit_term){
$result = $this->processSingleTransactionOfTypeShippingInvoice($invoice_transaction, $packingList, $order->company_module_id, $eta);
}
else{
$result = $this->isPaidOrWaivedStorageInvoiceExist($invoice_transaction, $packingList, $eta);
}
if($result){
$results[] = $result;
}
}
}
$newResults = $this->getResults($packingList, $order, $is_credit_term);
$results = array_merge($results, $newResults);
}
return $results;
@@ -158,13 +138,44 @@ class CheckStorageInvoiceTransactionProcessor
public function executeShippingTransaction(Transaction $shippingInvoice){
LogHelper::channel('storage_invoices')->info('shippingInvoice: '.json_encode($shippingInvoice));
$results = [];
$packingList = $shippingInvoice->owner;
$order = $packingList->owner;
$eta = $this->getEtaFromPackingList($packingList);
$result = $this->processSingleTransactionOfTypeShippingInvoice($shippingInvoice, $packingList, $order->company_module_id, $eta);
$pL = $shippingInvoice->owner;
$order = $pL->owner;
$is_credit_term = $order->companyModule->inviters()->withPivot('is_credit_term')->first()->pivot->is_credit_term;
$packingLists = $order->destinationWarehousePackages;
if($result){
$results[] = $result;
foreach ($packingLists as $packingList){
if($packingList->id === $pL->id){
$newResults = $this->getResults($packingList, $order, $is_credit_term);
$results = array_merge($results, $newResults);
}
}
return $results;
}
private function getResults($packingList, $order, $is_credit_term){
$results = [];
$arrivalDateAtChinaWarehouse = $this->getArrivalDateAtChinaWarehoue($packingList);
LogHelper::channel('storage_invoices')->info('arrivalDateAtChinaWarehouse: '.json_encode($arrivalDateAtChinaWarehouse));
LogHelper::channel('storage_invoices')->info('destinationWarehousePackage: '.json_encode($packingList));
$eta = $this->getEtaFromPackingList($packingList);
if($arrivalDateAtChinaWarehouse && $eta){
$transactions = $packingList->transactions()->where('transactions.type', TransactionType::SHIPPING_INVOICE)->whereIn('transactions.status', [ApprovalStatus::APPROVED, ApprovalStatus::COMPLETED])->get();
// $transactions = $destinationWarehousePackage->transactions()->where('transactions.type', TransactionType::SHIPPING_INVOICE)->where('transactions.status', ApprovalStatus::APPROVED)->get();
/** @var Transaction $invoice_transaction */
foreach ($transactions as $invoice_transaction){
$result = null;
if(!$is_credit_term){
$result = $this->processSingleTransactionOfTypeShippingInvoice($invoice_transaction, $packingList, $order->company_module_id, $eta);
}
else{
$result = $this->isPaidOrWaivedStorageInvoiceExist($invoice_transaction, $packingList, $eta);
}
if($result){
$results[] = $result;
}
}
}
return $results;
}