diff --git a/app/Classes/Modules/Transactions/Processors/CreateInvoiceTransactionV2Processor.php b/app/Classes/Modules/Transactions/Processors/CreateInvoiceTransactionV2Processor.php index 1b6a671e..1f4c89b4 100644 --- a/app/Classes/Modules/Transactions/Processors/CreateInvoiceTransactionV2Processor.php +++ b/app/Classes/Modules/Transactions/Processors/CreateInvoiceTransactionV2Processor.php @@ -107,7 +107,8 @@ class CreateInvoiceTransactionV2Processor $bookingOriginalStatus = $options['bookingOriginalStatus'] ?? ApprovalStatus::COMPLETED; if ($booking->status === ApprovalStatus::COMPLETED && !$generateEInvoiceRefund) { - return; + Log::info('CreateInvoiceTransactionV2Processor Check 1 Bypass New Business Logic Update for booking ' . $booking->id); + // return; } $payable_amount = $this->calculatesBookingPayableAmount->execute($booking, $booking->fix_currency_id, $generateEInvoiceRefund); @@ -124,7 +125,8 @@ class CreateInvoiceTransactionV2Processor } // confirm that all payments has been transferred if ($this->calculatesBookingTransferredAmount->execute($booking) !== $this->calculatesBookingPaidAmount->execute($booking)) { - return; + Log::info('CreateInvoiceTransactionV2Processor Check 2 Bypass New Business Logic Update for booking ' . $booking->id); + // return; } if($generateEInvoiceRefund){ @@ -284,38 +286,40 @@ class CreateInvoiceTransactionV2Processor $transaction = $paymentTransaction->transactions()->where('type', TransactionType::BILL)->first(); } else{ // Special handling for refund cases (When a refund is deleted via DeleteRefundTransactionLogic, a booking payment transaction is set to ApprovalStatus::APPROVED) - $temp = $booking->transactions()->payments()->where('status', ApprovalStatus::APPROVED)->first(); + $paymentTransactionTemp = $booking->transactions()->payments()->where('status', ApprovalStatus::APPROVED)->first(); // Lets check if there is a refund case - $refund = $temp->transactions()->refunds()->where('status', ApprovalStatus::APPROVED)->first(); + $refund = $paymentTransactionTemp->transactions()->refunds()->where('status', ApprovalStatus::APPROVED)->first(); if($refund){ - $transaction = $temp; + $transaction = $paymentTransactionTemp->transactions()->where('type', TransactionType::BILL)->first(); } else{ - throw new Exception("No payment found for booking '$booking->id'."); + Log::info("CreateInvoiceTransactionV2Processor NO completed payment transaction, refund transaction found for booking '$booking->id'."); } } - $transaction_object = new TransactionObject( - $billNumber, - TransactionType::SUPPLIER_DELIVER, - $transaction->issuer, - $transaction->receiver, - $transaction->recipient_bank_account_id, - $transaction->payment_method, - $payable_amount, - $booking_amount, - $transaction->currency_id, - $transaction->original_currency_id, - $booking_currency_average_rate, - $total_tax, - $total_service_charge, - null, - ApprovalStatus::APPROVED - ); - $supplier_deliver_order_transaction = $this->createsTransaction->execute($purchaseOrder->booking, $transaction_object); + if($transaction){ + $transaction_object = new TransactionObject( + $billNumber, + TransactionType::SUPPLIER_DELIVER, + $transaction->issuer, + $transaction->receiver, + $transaction->recipient_bank_account_id, + $transaction->payment_method, + $payable_amount, + $booking_amount, + $transaction->currency_id, + $transaction->original_currency_id, + $booking_currency_average_rate, + $total_tax, + $total_service_charge, + null, + ApprovalStatus::APPROVED + ); + $supplier_deliver_order_transaction = $this->createsTransaction->execute($purchaseOrder->booking, $transaction_object); - // supply deliver order - $this->invoiceDocumentProcessor->execute($supplier_deliver_order_transaction, $purchaseOrder, $supplier, DocumentType::SUPPLIER_DELIVER_ORDER, null); + // supply deliver order + $this->invoiceDocumentProcessor->execute($supplier_deliver_order_transaction, $purchaseOrder, $supplier, DocumentType::SUPPLIER_DELIVER_ORDER, null); + } } //if(!$generateEInvoiceRefund){ diff --git a/resources/assets/vue/components/bookings/forms/PurchaseOrderFormComponent.vue b/resources/assets/vue/components/bookings/forms/PurchaseOrderFormComponent.vue index a96af8fc..78f64baf 100644 --- a/resources/assets/vue/components/bookings/forms/PurchaseOrderFormComponent.vue +++ b/resources/assets/vue/components/bookings/forms/PurchaseOrderFormComponent.vue @@ -187,7 +187,20 @@
- + +
+
+
+
+
@@ -321,6 +334,7 @@ products: [], files: [], uploadFiles: false, + poProcessing: false, } }, validations: { @@ -447,6 +461,7 @@ } this.updateList() } + this.poProcessing = false; }, errorHandler(error, statusCode, section) { //E-Invoice if(section === this.section + 'CheckEInvoiceRule' && statusCode === 422){ @@ -528,8 +543,14 @@ }; this.parameters.e_invoice_request = false; this.submit((this.route('api.company.einvoice.request.change')), 'post', this.section + 'ChangeOfMind', true, true); + }, + handleRepprove() { + if (this.poProcessing) return; + this.poProcessing = true; + this.submit(route('api.booking.po.approval', this.data.id), 'post', this.section, true, true); } }, mixins: [formHandler] } +<