From 1ee68f1c310384a68a54b45b4a37092b72d28e6f Mon Sep 17 00:00:00 2001 From: Dillon Ngo Date: Fri, 9 Jan 2026 09:42:02 +0800 Subject: [PATCH] E-Invoice - Fix some transfer E-Invoice cannot be generated --- .../CreateInvoiceTransactionV2Processor.php | 23 ++++--- ...TimeProcessBookingForEInvoiceV2Command.php | 62 +++++++++++++++++++ 2 files changed, 73 insertions(+), 12 deletions(-) create mode 100644 app/Console/Commands/V2/OneTimeProcessBookingForEInvoiceV2Command.php diff --git a/app/Classes/Modules/Transactions/Processors/CreateInvoiceTransactionV2Processor.php b/app/Classes/Modules/Transactions/Processors/CreateInvoiceTransactionV2Processor.php index b0d6fb7d..230296e4 100644 --- a/app/Classes/Modules/Transactions/Processors/CreateInvoiceTransactionV2Processor.php +++ b/app/Classes/Modules/Transactions/Processors/CreateInvoiceTransactionV2Processor.php @@ -138,19 +138,18 @@ class CreateInvoiceTransactionV2Processor // return; } - $purchaseOrder = null; - if($generateEInvoiceRefund){ + $purchaseOrder = $booking->transactions() + ->where('type', TransactionType::PURCHASE_ORDER) + ->complete() + ->first(); + + if(!$purchaseOrder){ + //was use for $generateEInvoiceRefund true $purchaseOrder = $booking->transactions() ->where('type', TransactionType::PURCHASE_ORDER) ->where('status', ApprovalStatus::PENDING_SUBMISSION) ->first(); } - else{ - $purchaseOrder = $booking->transactions() - ->where('type', TransactionType::PURCHASE_ORDER) - ->complete() - ->first(); - } $constants = SegmentConstant::where('reference', SegmentConstants::SERVICE_TYPE)->where('detail->id', $booking->service->id)->first(); // if ($constants->detail->is_billable && !$purchaseOrder && !$generateEInvoiceRefund) { @@ -330,14 +329,14 @@ class CreateInvoiceTransactionV2Processor } } - //if(!$generateEInvoiceRefund){ - $this->updatesBookingStatus->execute($booking, $bookingOriginalStatus); - //} - // update perfex crm // if(config('perfexcrm.is_enabled') == 'true'){ // CreatePerfexCRMInvoice::dispatch($invoice_transaction, $purchaseOrder, $supplier); // } } + + //if(!$generateEInvoiceRefund){ + $this->updatesBookingStatus->execute($booking, $bookingOriginalStatus); + //} } } diff --git a/app/Console/Commands/V2/OneTimeProcessBookingForEInvoiceV2Command.php b/app/Console/Commands/V2/OneTimeProcessBookingForEInvoiceV2Command.php new file mode 100644 index 00000000..c001f69b --- /dev/null +++ b/app/Console/Commands/V2/OneTimeProcessBookingForEInvoiceV2Command.php @@ -0,0 +1,62 @@ +get(); + + $count = 0; + foreach ($bookings as $booking) { + ProcessBookingForEInvoiceV2CommandJob::dispatch($booking); + $count++; + Log::info('Processed: ' . $count); + Log::info('Booking ID: ' . $booking->marking . ' for E-Invoice '); + } + } +}