diff --git a/app/Classes/Modules/Transactions/Processors/CheckStorageInvoiceTransactionProcessor.php b/app/Classes/Modules/Transactions/Processors/CheckStorageInvoiceTransactionProcessor.php index 95089642..bc9adccd 100644 --- a/app/Classes/Modules/Transactions/Processors/CheckStorageInvoiceTransactionProcessor.php +++ b/app/Classes/Modules/Transactions/Processors/CheckStorageInvoiceTransactionProcessor.php @@ -200,6 +200,11 @@ class CheckStorageInvoiceTransactionProcessor $this->createStorageInvoiceTransactionDetails($storageInvoice, $destinationWarehousePackage, $cbm, $pricePerCBM, $resultNumberOfDaysExceeded); } else if($storageInvoice){ + //Additional handling for giving selected storage invoice a waiver + if(isset($storageInvoice->is_waived) && $storageInvoice->is_waived){ + $pricePerCBM = 0; + $price_cbm = $pricePerCBM * $cbm * $resultNumberOfDaysExceeded; + } //Additional handling for calculation of numberOfDaysExceeded in the event of the storage already paid $paymentStorageTransaction = $storageInvoice->transactions()->where('transactions.type', TransactionType::PAYMENT)->where('transactions.status', ApprovalStatus::APPROVED)->first(); @@ -216,10 +221,12 @@ class CheckStorageInvoiceTransactionProcessor Log::channel('storage_invoices')->info('Update $transaction->id: '.$transaction->id); Log::channel('storage_invoices')->info('$storageInvoice->status: '.$storageInvoice->status); Log::channel('storage_invoices')->info('price_cbm: '.$price_cbm."-".gettype($price_cbm)); + Log::channel('storage_invoices')->info('amount: '.$amount); + + $proceedToUpdate = false; if(abs($price_cbm - $amount) > $epsilon && $storageInvoice->status !== ApprovalStatus::COMPLETED){ $paymentTransactions = $storageInvoice->transactions()->where('transactions.type', TransactionType::PAYMENT)->where('transactions.status', ApprovalStatus::PENDING_SUBMISSION)->get(); - if(!$isBackDoorCheck){ if(count($paymentTransactions) > 0){ $this->updatePaymentTransactionViaNonGroupPayment($paymentTransactions); @@ -229,6 +236,11 @@ class CheckStorageInvoiceTransactionProcessor } } + $proceedToUpdate = true; + } + + if($proceedToUpdate || ($pricePerCBM == 0 && $amount != 0)){ + Log::channel('storage_invoices')->info('proceedToUpdate'); $storageInvoice = $this->updateStorageInvoiceTransaction($storageInvoice, $price_cbm); $invoiceTransactionDetails = $storageInvoice->transactionDetails()->first(); $this->updateStorageInvoiceTransactionDetails($invoiceTransactionDetails, $destinationWarehousePackage, $cbm, $pricePerCBM, $resultNumberOfDaysExceeded); diff --git a/database/migrations/2024_01_23_233651_add_is_waived_to_transactions_logs_table.php b/database/migrations/2024_01_23_233651_add_is_waived_to_transactions_logs_table.php new file mode 100644 index 00000000..6755dcef --- /dev/null +++ b/database/migrations/2024_01_23_233651_add_is_waived_to_transactions_logs_table.php @@ -0,0 +1,32 @@ +boolean('is_waived')->nullable()->after('status')->default(false); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('transaction_logs', function (Blueprint $table) { + $table->dropColumn('is_waived'); + }); + } +} diff --git a/database/migrations/2024_01_23_233651_add_is_waived_to_transactions_table.php b/database/migrations/2024_01_23_233651_add_is_waived_to_transactions_table.php new file mode 100644 index 00000000..30a5e738 --- /dev/null +++ b/database/migrations/2024_01_23_233651_add_is_waived_to_transactions_table.php @@ -0,0 +1,32 @@ +boolean('is_waived')->nullable()->after('status')->default(false); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('transactions', function (Blueprint $table) { + $table->dropColumn('is_waived'); + }); + } +}