E-Invoice - Update the conditions for generating Sales Invoice Report

This commit is contained in:
Dillon Ngo
2025-11-26 07:44:11 +08:00
parent dc2e2e711a
commit 01dd8073a1
2 changed files with 49 additions and 1 deletions
@@ -0,0 +1,42 @@
<?php
namespace App\Classes\Jobs\Commands\V2;
use App\Classes\Modules\Transactions\Processors\CreateInvoiceTransactionV2Processor;
use Carbon\Carbon;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;
use Illuminate\Support\Facades\Log;
class CreateInvoiceTransactionV2CommandJob implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
/** @var object */
private $booking;
/**
* CreateInvoiceTransactionV2CommandJob constructor.
* @param object $booking
*/
public function __construct($booking)
{
$this->booking = $booking;
}
public function handle()
{
Log::info(Carbon::now() . ': Start job - Creating invoice for single booking.');
$start = new Carbon();
(App()->make(CreateInvoiceTransactionV2Processor::class))->execute($this->booking);
$end = new Carbon();
$elapsedTime = $start->diff($end)->format('%H:%I:%S');
Log::info(Carbon::now() . ': End job - Creating invoice for single booking. ElapsedTime: ' . $elapsedTime . '.');
}
}
@@ -2,6 +2,7 @@
namespace App\Classes\Modules\Exports\Services;
use App\Classes\Jobs\Commands\V2\CreateInvoiceTransactionV2CommandJob;
use App\Classes\ValueObjects\Constants\TransactionType;
use App\Classes\ValueObjects\Constants\ApprovalStatus;
use App\Models\Booking;
@@ -71,7 +72,7 @@ class ExportsSalesInvoiceReport implements FromQuery, WithHeadings, WithHeadingR
'transactions.voucherRedemption',
'transactions.voucherRedemption.voucher.campaign'
])
->where('status', ApprovalStatus::COMPLETED)
// ->where('status', ApprovalStatus::COMPLETED)
->whereHas('transactions', function ($query) use ($startDate, $endDate) {
$query->payments()
->complete()
@@ -115,6 +116,11 @@ class ExportsSalesInvoiceReport implements FromQuery, WithHeadings, WithHeadingR
}
$invoiceTransaction = $booking->transactions->where('type', TransactionType::INVOICE)->whereIn('status', [ApprovalStatus::APPROVED, ApprovalStatus::COMPLETED])->first();
if(!$invoiceTransaction){
Log::info('ExportsSalesInvoiceReport booking with NO invoice: ' . json_encode($booking));
// CreateInvoiceTransactionV2CommandJob::dispatch($booking);
return $records;
}
$currencyId = $booking->fix_currency_id;