@php $pledge = $redemption->pledge; $companyName = $settings['company_name'] ?? 'PAJAK GADAI SDN BHD'; $chineseName = $settings['company_name_chinese'] ?? ''; $tamilName = $settings['company_name_tamil'] ?? ''; $address = $settings['address'] ?? ''; $phone = $settings['phone'] ?? ''; $phone2 = $settings['phone2'] ?? ''; $estYear = $settings['established_year'] ?? ''; $businessDays = $settings['business_days'] ?? 'ISNIN - AHAD'; $businessHours = $settings['business_hours'] ?? '8.30AM - 6.00PM'; $redemptionPeriod = $settings['redemption_period'] ?? '6 BULAN'; $interestRateNormal = $settings['interest_rate_normal'] ?? '1.5'; $interestRateOverdue = $settings['interest_rate_overdue'] ?? '2.0'; $logoUrl = $settings['logo_url'] ?? null; $customer = $pledge->customer; $loanAmount = $pledge->loan_amount ?? 0; // Redemption-specific amounts $principalAmount = $redemption->principal_amount ?? $loanAmount; $interestAmount = $redemption->interest_amount ?? 0; $overdueInterest = $redemption->overdue_interest ?? 0; $handlingFee = $redemption->handling_fee ?? 0; $totalPayable = $redemption->total_payable ?? ($principalAmount + $interestAmount + $overdueInterest + $handlingFee); $totalWeight = 0; foreach ($pledge->items as $item) { $totalWeight += $item->net_weight ?? $item->gross_weight ?? 0; } // Redemption date $redemptionDate = $redemption->created_at ?? now(); if (is_string($redemptionDate)) $redemptionDate = \Carbon\Carbon::parse($redemptionDate); // Original pledge date $pledgeDate = $pledge->pledge_date ?? $pledge->created_at; if (is_string($pledgeDate)) $pledgeDate = \Carbon\Carbon::parse($pledgeDate); // Due date $dueDate = $pledge->due_date; if (is_string($dueDate)) $dueDate = \Carbon\Carbon::parse($dueDate); $ic = preg_replace('/[^0-9]/', '', $customer->ic_number ?? ''); $icFormatted = strlen($ic) === 12 ? substr($ic, 0, 6) . '-' . substr($ic, 6, 2) . '-' . substr($ic, 8, 4) : ($ic ?: '-'); if (!empty($customer->date_of_birth)) { try { $dob = $customer->date_of_birth; if (is_string($dob)) $dob = \Carbon\Carbon::parse($dob); $birthYear = $dob->format('Y'); } catch (\Exception $e) { $birthYear = '-'; } } else { $birthYear = (strlen($ic) >= 6) ? ((intval(substr($ic, 0, 2)) > intval(date('y'))) ? '19' . substr($ic, 0, 2) : '20' . substr($ic, 0, 2)) : '-'; } $g = strtolower($customer->gender ?? ''); $gender = in_array($g, ['male', 'm', 'lelaki']) ? 'LELAKI' : (in_array($g, ['female', 'f', 'perempuan']) ? 'PEREMPUAN' : '-'); $nat = strtoupper($customer->nationality ?? ''); $nationality = str_contains($nat, 'MALAYSIA') ? 'MALAYSIA' : ($nat ?: 'WARGANEGARA'); $addrParts = array_filter([ $customer->address_line1 ?? $customer->address ?? '', $customer->address_line2 ?? '', trim(($customer->postcode ?? '') . ' ' . ($customer->city ?? '')), strtoupper($customer->state ?? '') ]); $customerAddress = implode(', ', $addrParts) ?: '-'; $catatan = $pledge->reference_no ?? $pledge->notes ?? ''; $usedDescriptions = []; foreach ($pledge->items as $item) { $desc = $item->description ?? ''; if ($desc && !in_array($desc, $usedDescriptions, true) && !str_contains($catatan, $desc)) { if ($catatan) $catatan .= '; '; $catatan .= $desc; $usedDescriptions[] = $desc; } } // Amount in words for total payable (redemption payment) $amountWords = ''; try { $amountWords = strtoupper(app(\App\Http\Controllers\Api\DotMatrixPrintController::class)->numberToMalayWordsPublic($totalPayable) ?? ''); } catch (\Exception $e) {} if (empty($amountWords)) { $amountWords = strtoupper(number_format($totalPayable, 2)); } $barcodeUrl = $barcode_data_uri ?? ''; $copyLabel = ($copy_type ?? 'customer') === 'office' ? 'SALINAN PEJABAT' : 'SALINAN PELANGGAN'; @endphp
{{-- ═══ HEADER ═══ --}}
@if($logoUrl) @endif
{{ $companyName }}
@if(($chineseName || $tamilName) && !empty($multilang_image_uri ?? null))
{{ $chineseName }} {{ $tamilName }}
@elseif($chineseName || $tamilName)
{{ $chineseName }}  {{ $tamilName }}
@endif
{{ $address }}
{{-- Redemption badge top-right --}} TEBUSAN / REDEMPTION @if($estYear) @endif
☎ {{ $phone }}@if($phone2)
{{ $phone2 }}@endif
SEJAK
{{ $estYear }}
BUKA 7 HARI
{{ $businessDays }} : {{ $businessHours }}
{{-- ═══ MID SECTION ═══ --}}
Barang dilepaskan / Items released:-
@foreach($pledge->items as $index => $item)
{{ $index + 1 }}. {{ $item->category->name_ms ?? $item->category->name_en ?? 'Item' }} {{ $item->purity->code ?? '' }} - {{ number_format($item->net_weight ?? $item->gross_weight ?? 0, 2) }}g
@endforeach
@if($barcodeUrl) {{ $pledge->pledge_no }} @endif
{{ $pledge->pledge_no }}
NO. TIKET:
{{ $pledge->pledge_no }}
{{-- Redemption number sub-box --}}
NO. TEBUSAN / REDEMPTION NO:
{{ $redemption->redemption_no }}
{{-- Redeemed stamp --}}
DITEBUS / REDEEMED
KADAR KEUNTUNGAN BULANAN
1. 0.5% SEBULAN : UNTUK TEMPOH 6 BULAN PERTAMA
2. 1.5% SEBULAN : PEMBAHARUAN SETERUSNYA TEMPOH 6 BULAN
3. 2.0% SEBULAN : LEPAS MATANG TEMPOH 6 BULAN
{{-- ═══ CUSTOMER ═══ --}}
Butir-butir terperinci mengenai pemajak gadai:-
No. Kad
Pengenalan :
{{ $icFormatted }} Nama : {{ $customer->name ?? '-' }} Kerakyatan : {{ $nationality }}
Tahun Lahir : {{ $birthYear }} Jantina : {{ $gender }}
Alamat : {{ $customerAddress }}
Catatan : {{ $catatan }}
{{-- ═══ REDEMPTION PAYMENT SUMMARY ═══ --}} @if(($overdueInterest ?? 0) > 0) @else @endif
Pinjaman / Principal : RM {{ number_format($principalAmount, 2) }} JUMLAH TEBUSAN / TOTAL REDEMPTION : RM {{ number_format($totalPayable, 2) }}
Faedah / Interest : RM {{ number_format($interestAmount, 2) }} Bayaran Tunai / Cash : RM {{ number_format($redemption->cash_amount ?? $totalPayable, 2) }}
Faedah Lewat / Overdue : RM {{ number_format($overdueInterest, 2) }}Yuran / Handling Fee : RM {{ number_format($handlingFee, 2) }}Pindahan / Transfer : RM {{ number_format($redemption->transfer_amount ?? 0, 2) }}
{{-- ═══ AMOUNT IN WORDS ═══ --}}
Jumlah Tebusan :   {{ $amountWords }} SAHAJA
{{-- ═══ BOTTOM ═══ --}}
Jumlah Tebusan / Total Redemption RM {{ number_format($totalPayable, 2) }} ***
Tarikh Pajakan / Pledge Date
{{ $pledgeDate ? $pledgeDate->format('d/m/Y') : '-' }}
Tarikh Tebusan / Redemption Date
{{ $redemptionDate->format('d/m/Y') }}
{{-- ═══ FOOTER ═══ --}}