From d3ac49c5168ca4149fe2a8e9e4cefce810ad34f2 Mon Sep 17 00:00:00 2001 From: Jia Sheng Date: Sat, 8 Mar 2025 15:41:15 +0800 Subject: [PATCH] fix invoice amount not tally when service charge get refunded --- .../CalculatesBookingRefundServiceCharge.php | 27 +++++++++++++++++++ .../pages/pdfs/purchase_order_table.blade.php | 25 +++++++++++++---- 2 files changed, 47 insertions(+), 5 deletions(-) create mode 100644 app/Classes/Modules/Bookings/Services/CalculatesBookingRefundServiceCharge.php diff --git a/app/Classes/Modules/Bookings/Services/CalculatesBookingRefundServiceCharge.php b/app/Classes/Modules/Bookings/Services/CalculatesBookingRefundServiceCharge.php new file mode 100644 index 00000000..25cd44c1 --- /dev/null +++ b/app/Classes/Modules/Bookings/Services/CalculatesBookingRefundServiceCharge.php @@ -0,0 +1,27 @@ +transactions()->payments()->complete()->get()->map(function ($payment) use ($type) { + return $this->calculateRefundAmount($payment, $type); + }); + + $totalRefundAmount = $refundAmounts->sum(); + + return $totalRefundAmount; + } + + public function calculateRefundAmount($payment): float + { + $refundTransactions = $payment->transactions()->refunds()->whereIn('status', [ApprovalStatus::APPROVED]); + + return $refundTransactions->sum('service_charge'); + } +} diff --git a/resources/views/pages/pdfs/purchase_order_table.blade.php b/resources/views/pages/pdfs/purchase_order_table.blade.php index 5f62205f..f9a1d222 100644 --- a/resources/views/pages/pdfs/purchase_order_table.blade.php +++ b/resources/views/pages/pdfs/purchase_order_table.blade.php @@ -21,6 +21,7 @@ where('status', ApprovalStatus::COMPLETED) ->get() ->sum(function ($transaction) { - return round($transaction->amount, 2); + return $transaction->amount; }); - $refundedAmount = (App()->make(CalculatesBookingRefundAmount::class))->calculateRefundAmount($booking, $booking->fix_currency_id); + $refundedAmount = (App()->make(CalculatesBookingRefundAmount::class))->execute($booking, 1); + $refundedServiceCharge = (App()->make(CalculatesBookingRefundServiceCharge::class))->execute($booking, 1); - $totalPayment = $paymentSum - $refundedAmount; + $totalPayment = $paymentSum - $refundedAmount - $refundedServiceCharge; ?> @foreach ($po_order_transaction->transactionDetails as $key => $transaction_detail) @@ -78,13 +80,26 @@ // if has payment, calculate and deduct the refund if ($totalPayment) { - $refundedServiceCharge = $subtotal + $serviceCharge - $totalPayment; - $serviceCharge = $serviceCharge - $refundedServiceCharge - $voucherDiscount; + $serviceCharge = $serviceCharge - $voucherDiscount; } ?> {{ number_format($serviceCharge, 2) }} + @if($totalPayment && $refundedServiceCharge) + + + Refunded Service Charges + service_charge; + // if has payment, calculate and deduct the refund + if ($totalPayment) { + $serviceCharge = $serviceCharge - $refundedServiceCharge; + } + ?> + -{{ number_format($refundedServiceCharge, 2) }} + + @endif @if($voucher_redemption)