From 4b910e4df7de6502d504f74bd15853efd775ad12 Mon Sep 17 00:00:00 2001 From: Dillon Ngo Date: Wed, 24 Dec 2025 11:53:15 +0800 Subject: [PATCH] E-Invoice - EXC3000: Exchange Rules of RM10K single INV --- .../Standards/Rules/CanPassMustEInvoiceAmountLimitRule.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/app/Classes/Modules/Rules/Standards/Rules/CanPassMustEInvoiceAmountLimitRule.php b/app/Classes/Modules/Rules/Standards/Rules/CanPassMustEInvoiceAmountLimitRule.php index 201bad8b..fa3d66be 100644 --- a/app/Classes/Modules/Rules/Standards/Rules/CanPassMustEInvoiceAmountLimitRule.php +++ b/app/Classes/Modules/Rules/Standards/Rules/CanPassMustEInvoiceAmountLimitRule.php @@ -8,6 +8,7 @@ use App\Classes\Modules\Bookings\Services\FetchesBooking; use App\Classes\Modules\Bookings\Services\CalculatesBookingOutstanding; use App\Classes\Modules\Bookings\Services\FetchesBookingQuotation; use App\Classes\Modules\Currencies\DataTransferObjects\CurrencyConversionObject; +use App\Classes\ValueObjects\Constants\ApprovalStatus; use App\Classes\ValueObjects\Constants\PaymentMethodType; use Carbon\Carbon; use Illuminate\Support\Facades\Log; @@ -65,8 +66,11 @@ class CanPassMustEInvoiceAmountLimitRule extends AbstractRule //Check if booking amount is RM10,000 or more, than must opt-in E-Invoice $booking = $this->fetchesBooking->execute(['id' => $object->bookingId]); $company = $booking->company; + $totalPayments = 0; if(isset($object->amount)){ + $totalPayments = $booking->transactions()->payments()->whereIn('transactions.status', [ApprovalStatus::APPROVED, ApprovalStatus::COMPLETED])->sum('amount'); + $conversionObject = new CurrencyConversionObject(floatval(str_replace(',', '', floatval(str_replace(',', '', $object->amount)))), $booking->convertible_currency_id, $booking->service_id, $booking->fix_currency_id === 1 ? 0:1, PaymentMethodType::PAYMENT_METHODS[$object->paymentMethod]); $voucherCode = $object->voucherCode ?? null; $configurations = $this->fetchesBookingQuotation->execute($booking->company, $conversionObject, $voucherCode, null, $booking); @@ -78,6 +82,7 @@ class CanPassMustEInvoiceAmountLimitRule extends AbstractRule } $bookingAmountInMYR = $configurations->getTotal(); + $bookingAmountInMYR = $bookingAmountInMYR + $totalPayments; if($bookingAmountInMYR >= 10000 && (!$company->e_invoice || !$company->tin) ){ throw new CriteriaNotFulfilledException("RM10,000 and above must opt-in for E-Invoice.");