From 03dda9cd5a459766392216f428a2237b3413d6c8 Mon Sep 17 00:00:00 2001 From: Dillon Ngo Date: Thu, 27 Nov 2025 12:32:01 +0800 Subject: [PATCH] E-Invoice - Update the conditions for generating Sales Invoice Report with business logic update on generating invoice --- .../Services/ExportsSalesInvoiceReport.php | 3 +- .../CreateInvoiceTransactionV2Processor.php | 4 ++ ...is_invoice_generated_to_bookings_table.php | 37 +++++++++++++++++++ ...nvoice_generated_to_booking_logs_table.php | 34 +++++++++++++++++ 4 files changed, 77 insertions(+), 1 deletion(-) create mode 100644 database/migrations/2025_11_27_120102_add_is_invoice_generated_to_bookings_table.php create mode 100644 database/migrations/2025_11_27_121256_add_is_invoice_generated_to_booking_logs_table.php diff --git a/app/Classes/Modules/Exports/Services/ExportsSalesInvoiceReport.php b/app/Classes/Modules/Exports/Services/ExportsSalesInvoiceReport.php index a801ca5b..34c743c8 100644 --- a/app/Classes/Modules/Exports/Services/ExportsSalesInvoiceReport.php +++ b/app/Classes/Modules/Exports/Services/ExportsSalesInvoiceReport.php @@ -72,7 +72,8 @@ class ExportsSalesInvoiceReport implements FromQuery, WithHeadings, WithHeadingR 'transactions.voucherRedemption', 'transactions.voucherRedemption.voucher.campaign' ]) - ->whereIn('status', [ApprovalStatus::COMPLETED]) + // ->whereIn('status', [ApprovalStatus::COMPLETED]) + ->where('is_invoice_generated', 1) ->whereHas('transactions', function ($query) use ($startDate, $endDate) { $query->payments() ->complete() diff --git a/app/Classes/Modules/Transactions/Processors/CreateInvoiceTransactionV2Processor.php b/app/Classes/Modules/Transactions/Processors/CreateInvoiceTransactionV2Processor.php index 619f34b5..399cb041 100644 --- a/app/Classes/Modules/Transactions/Processors/CreateInvoiceTransactionV2Processor.php +++ b/app/Classes/Modules/Transactions/Processors/CreateInvoiceTransactionV2Processor.php @@ -223,6 +223,10 @@ class CreateInvoiceTransactionV2Processor ); $invoice_transaction = $this->createsTransaction->execute($purchaseOrder->booking ?? $booking, $transaction_object); + //Update booking table, used on Export Sales Invoice Report + $booking->is_invoice_generated = true; + $booking->save(); + if ($kvpCopies) { foreach ($kvpCopies as $kvp) { $invoice_transaction->attributesKVP()->save($kvp); diff --git a/database/migrations/2025_11_27_120102_add_is_invoice_generated_to_bookings_table.php b/database/migrations/2025_11_27_120102_add_is_invoice_generated_to_bookings_table.php new file mode 100644 index 00000000..b2af1a22 --- /dev/null +++ b/database/migrations/2025_11_27_120102_add_is_invoice_generated_to_bookings_table.php @@ -0,0 +1,37 @@ +boolean('is_invoice_generated') + ->default(false) + ->after('status'); + + $table->index('is_invoice_generated', 'bookings_is_invoice_generated_index'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('bookings', function (Blueprint $table) { + $table->dropIndex('bookings_is_invoice_generated_index'); + $table->dropColumn('is_invoice_generated'); + }); + } +} diff --git a/database/migrations/2025_11_27_121256_add_is_invoice_generated_to_booking_logs_table.php b/database/migrations/2025_11_27_121256_add_is_invoice_generated_to_booking_logs_table.php new file mode 100644 index 00000000..e04b01d0 --- /dev/null +++ b/database/migrations/2025_11_27_121256_add_is_invoice_generated_to_booking_logs_table.php @@ -0,0 +1,34 @@ +boolean('is_invoice_generated') + ->default(false) + ->after('status'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('booking_logs', function (Blueprint $table) { + $table->dropColumn('is_invoice_generated'); + }); + } +}