diff --git a/app/Classes/Modules/Bookings/ControllersLogic/BatchBookingsGenerateEInvoiceLogic.php b/app/Classes/Modules/Bookings/ControllersLogic/BatchBookingsGenerateEInvoiceLogic.php index 703fe348..9d44e244 100644 --- a/app/Classes/Modules/Bookings/ControllersLogic/BatchBookingsGenerateEInvoiceLogic.php +++ b/app/Classes/Modules/Bookings/ControllersLogic/BatchBookingsGenerateEInvoiceLogic.php @@ -82,7 +82,13 @@ class BatchBookingsGenerateEInvoiceLogic extends AbstractControllerLogic $endDate = $endDate ? Carbon::parse($endDate)->endOfDay() : Carbon::now(); $bookings = Booking::where('status', ApprovalStatus::COMPLETED) - ->whereBetween('created_at', [$startDate, $endDate]) + // ->whereBetween('created_at', [$startDate, $endDate]) + ->whereHas('transactions', function ($query) use ($startDate, $endDate) { + $query->payments() + ->complete() + ->whereBetween('created_at', [$startDate, $endDate]) + ->latest('created_at'); + }) ->whereHas('attributesKVP', function (Builder $query) { $query->where('key', KVPKey::AUTOCOUNT_DOCNO); }) @@ -92,7 +98,7 @@ class BatchBookingsGenerateEInvoiceLogic extends AbstractControllerLogic ->get(); foreach ($bookings as $booking) { - // $autocountValue = optional($booking->attributesKVP->first())->value; + //$autocountValue = optional($booking->attributesKVP->first())->value; //Log::info('Booking ID: ' . $booking->marking . ' | AUTOCOUNT_DOCNO: ' . $autocountValue); // $this->regenerateInvoiceBookingProcessor->execute($booking); ProcessBookingForEInvoiceV2CommandJob::dispatch($booking); diff --git a/app/Classes/Modules/Transactions/Processors/CreateInvoiceTransactionProcessor.php b/app/Classes/Modules/Transactions/Processors/CreateInvoiceTransactionProcessor.php index 44f0dbbf..799032ab 100644 --- a/app/Classes/Modules/Transactions/Processors/CreateInvoiceTransactionProcessor.php +++ b/app/Classes/Modules/Transactions/Processors/CreateInvoiceTransactionProcessor.php @@ -18,6 +18,7 @@ use App\Classes\ValueObjects\Constants\ApprovalStatus; use App\Classes\ValueObjects\Constants\SegmentConstants; use App\Classes\ValueObjects\Constants\TransactionType; use App\Classes\ValueObjects\Constants\DocumentType; +use App\Classes\ValueObjects\Constants\KVPKey; use App\Models\Booking; use App\Models\SegmentConstant; use Carbon\Carbon; @@ -136,7 +137,10 @@ class CreateInvoiceTransactionProcessor if ($bookingCreatedDate->isAfter($eInvoiceStartDate) && $supplier->e_invoice === 1) { $eInvoice = true; } - // $eInvoice = true; //cief todo: 90 - for testing + $kvp = $booking->attributesKVP()->where('key', KVPKey::BOOKING_EINVOICE_ELIGIBLE)->first(); + if($kvp){ + $eInvoice = true; + } if($isAllowNormalInvoice){ $invoiceNo = ""; //July 2025 workaround generate normal invoice instead of E-Invoice diff --git a/app/Classes/ValueObjects/Constants/KVPKey.php b/app/Classes/ValueObjects/Constants/KVPKey.php index 50d3f17e..b2943b4c 100644 --- a/app/Classes/ValueObjects/Constants/KVPKey.php +++ b/app/Classes/ValueObjects/Constants/KVPKey.php @@ -16,4 +16,6 @@ class KVPKey public const TRANSACTION_MODEL_CLASS = 'App\Models\Transaction'; + public const BOOKING_EINVOICE_ELIGIBLE = 'BOOKING_EINVOICE_ELIGIBLE'; + } diff --git a/app/Http/Resources/BookingResource.php b/app/Http/Resources/BookingResource.php index 449c6a59..dbb11d0c 100644 --- a/app/Http/Resources/BookingResource.php +++ b/app/Http/Resources/BookingResource.php @@ -10,6 +10,7 @@ use App\Classes\ValueObjects\Constants\ApprovalStatus; use App\Classes\ValueObjects\Constants\BookingAttributeNames; use App\Classes\ValueObjects\Constants\TransactionType; use App\Classes\ValueObjects\Constants\DocumentType; +use App\Classes\ValueObjects\Constants\KVPKey; use Carbon\Carbon; use Illuminate\Http\Resources\Json\JsonResource; @@ -32,9 +33,12 @@ class BookingResource extends JsonResource if ($bookingCreatedDate->isAfter($eInvoiceStartDate) && $this->company->e_invoice === 1) { //&& $bookingCreatedDate->diffInMinutes($eInvoiceRequestedDate) <= 480 cief todo: 90 $eInvoice = true; } - // if ($this->company->e_invoice === 1) { - // $eInvoice = true; - // } + + $kvp = $this->attributesKVP()->where('key', KVPKey::BOOKING_EINVOICE_ELIGIBLE)->first(); + if($kvp){ + $eInvoice = true; + } + return [ 'id' => $this->id, 'company' => new CompanyResource($this->company),