diff --git a/app/Classes/Modules/Transactions/Processors/CheckStorageInvoiceTransactionProcessor.php b/app/Classes/Modules/Transactions/Processors/CheckStorageInvoiceTransactionProcessor.php index 80e6f0ce..93d80c14 100644 --- a/app/Classes/Modules/Transactions/Processors/CheckStorageInvoiceTransactionProcessor.php +++ b/app/Classes/Modules/Transactions/Processors/CheckStorageInvoiceTransactionProcessor.php @@ -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; }