diff --git a/resources/views/pages/pdfs/purchase_order_table.blade.php b/resources/views/pages/pdfs/purchase_order_table.blade.php
index e96e6116..5f62205f 100644
--- a/resources/views/pages/pdfs/purchase_order_table.blade.php
+++ b/resources/views/pages/pdfs/purchase_order_table.blade.php
@@ -18,6 +18,26 @@
$currency_id = $transaction->owner->fix_currency_id;
@endphp
+ owner;
+ $paymentSum = $booking->transactions()
+ ->where('type', TransactionType::PAYMENT)
+ ->where('status', ApprovalStatus::COMPLETED)
+ ->get()
+ ->sum(function ($transaction) {
+ return round($transaction->amount, 2);
+ });
+
+ $refundedAmount = (App()->make(CalculatesBookingRefundAmount::class))->calculateRefundAmount($booking, $booking->fix_currency_id);
+
+ $totalPayment = $paymentSum - $refundedAmount;
+ ?>
+
@foreach ($po_order_transaction->transactionDetails as $key => $transaction_detail)
@php
$exactUnitPrice = ($currency_id) === 1 ? $transaction_detail->price : bcdiv($transaction_detail->price, $transaction->currency_rate, 7);
@@ -55,9 +75,11 @@
Service Charges |
service_charge;
- if (isset($current_paid_amount)) {
- $refundedServiceCharge = $subtotal + $serviceCharge - $current_paid_amount;
- $serviceCharge = $serviceCharge - $refundedServiceCharge + $voucherDiscount;
+
+ // if has payment, calculate and deduct the refund
+ if ($totalPayment) {
+ $refundedServiceCharge = $subtotal + $serviceCharge - $totalPayment;
+ $serviceCharge = $serviceCharge - $refundedServiceCharge - $voucherDiscount;
}
?>
{{ number_format($serviceCharge, 2) }} |
diff --git a/routes/web.php b/routes/web.php
index ee36a74d..4726d956 100644
--- a/routes/web.php
+++ b/routes/web.php
@@ -172,6 +172,25 @@ Route::get('/transfer/{marking}/latest/{document_type}', function ($marking, $do
return view('pages.pdfs.' . $lowercaseDocumentType, ['transaction' => $transaction, 'po_order_transaction' => $purchaseOrder, 'supplier' => $supplier, 'voucher_redemption' => $voucherRedemption]);
})->name('booking.details.latest_invoice');
+Route::get('/transfer/{marking}/preview-proforma-invoice', function ($marking) {
+ $booking= Booking::where('marking', $marking)->first();
+
+ $transaction = $booking->transactions()
+ ->where('type', TransactionType::PAYMENT)
+ ->first();
+
+ $po_order_transaction = $booking->transactions()
+ ->where('type', TransactionType::PURCHASE_ORDER)
+ ->whereIn('status', [ApprovalStatus::PENDING_VERIFICATION, ApprovalStatus::APPROVED])
+ ->first();
+
+ $proforma_transaction = $booking->transactions()->where('type', TransactionType::PROFORMA)->first();
+
+ $supplier = Company::find($transaction->receiver);
+
+ return view('pages.pdfs.proforma_invoice', ['invoice_transaction' => $proforma_transaction, 'po_order_transaction' => $po_order_transaction, 'supplier' => $supplier]);
+});
+
Route::get('/transfer/merge/{marking}', function ($marking) {
return view('pages.bookings.merge', ['marking' => $marking]);
})->name('booking.merge');