@php
if (!function_exists('format_rs_custom')) {
function format_rs_custom($amount) {
if (empty($amount)) {
return 'Rs.0.00';
}
if (strpos($amount, 'Rs.') !== false) {
return $amount;
}
$clean = preg_replace('/[^0-9.]/', '', $amount);
if (!is_numeric($clean)) {
return 'Rs.0.00';
}
return 'Rs.' . number_format(floatval($clean), 2);
}
}
$transaction = null;
if (!empty($receipt_details->transaction_id)) {
$transaction = \App\Transaction::with('contact')->find($receipt_details->transaction_id);
} elseif (!empty($receipt_details->invoice_no)) {
$transaction = \App\Transaction::with('contact')->where('invoice_no', $receipt_details->invoice_no)->first();
}
$customer_code = '';
$customer_id_padded = '00000000';
if ($transaction && $transaction->contact) {
$customer_code = $transaction->contact->contact_id;
$customer_id_padded = sprintf("%08d", $transaction->contact->id);
}
if (empty($customer_code)) {
$customer_code = $receipt_details->customer_id ?? '';
}
$display_mobile = !empty($receipt_details->customer_mobile) ? $receipt_details->customer_mobile : '';
$display_address = '';
if ($transaction && $transaction->contact) {
$contact = $transaction->contact;
if (empty($display_mobile) && !empty($contact->mobile)) {
$display_mobile = $contact->mobile;
}
$address_parts = [];
if (!empty($contact->address_line_1)) $address_parts[] = $contact->address_line_1;
if (!empty($contact->address_line_2)) $address_parts[] = $contact->address_line_2;
if (!empty($contact->city)) $address_parts[] = $contact->city;
if (!empty($address_parts)) {
$display_address = implode(', ', array_filter($address_parts));
}
}
if (empty($display_address) && !empty($receipt_details->customer_address)) {
$display_address = strip_tags($receipt_details->customer_address);
}
// Header strings
$business_name = 'Lewis Engineering';
$business_address = !empty($receipt_details->address) ? strip_tags($receipt_details->address) : 'No.56, HEMAPALA MUNIDASA MAWATHA, WELIMADA. [T] 0572245974 [F] 0572245333';
$business_tagline = !empty($receipt_details->sub_heading_line1) ? $receipt_details->sub_heading_line1 : 'QUILTY FURNITURES , LAMINATED, MDF, STEEL SHEET AND STEEL TUBE PRODUCTS';
// Lines / chunking
$raw_lines = $receipt_details->lines ?? [];
$lines_array = is_array($raw_lines) ? $raw_lines : (is_object($raw_lines) && method_exists($raw_lines, 'toArray') ? $raw_lines->toArray() : (array)$raw_lines);
$chunks = array_chunk($lines_array, 9);
$total_pages = count($chunks);
if ($total_pages == 0) {
$chunks = [[]];
$total_pages = 1;
}
// Calculations
$total_qty = 0;
$current_total = 0;
$total_discount = 0;
foreach ($lines_array as $line) {
$qty_val = floatval(preg_replace('/[^0-9.]/', '', $line['quantity'] ?? '0'));
$total_qty += $qty_val;
$line_tot = floatval(preg_replace('/[^0-9.]/', '', $line['line_total'] ?? '0.00'));
$current_total += $line_tot;
$line_disc = floatval(preg_replace('/[^0-9.]/', '', $line['line_discount'] ?? $line['total_line_discount'] ?? '0.00'));
$total_discount += $line_disc;
}
$bill_discount = floatval(preg_replace('/[^0-9.]/', '', $receipt_details->discount ?? '0.00'));
$other_charges = floatval(preg_replace('/[^0-9.]/', '', $receipt_details->shipping_charges ?? '0.00'));
$return_amount = 0;
$f_balance = floatval(preg_replace('/[^0-9.]/', '', $receipt_details->previous_due ?? '0.00'));
$final_balance = $current_total + $f_balance - $bill_discount + $other_charges - $return_amount;
$credit_days = 0;
$credit_limit_status = '';
if ($transaction && $transaction->contact) {
if ($transaction->contact->pay_term_type == 'days') {
$credit_days = $transaction->contact->pay_term_number;
}
$credit_limit = $transaction->contact->credit_limit;
if (!is_null($credit_limit) && $final_balance > $credit_limit) {
$credit_limit_status = 'CREDI LIMTE EXCED';
}
}
$invoice_time = '';
if (!empty($receipt_details->invoice_date)) {
try {
$invoice_time = \Carbon\Carbon::parse($receipt_details->invoice_date)->format('H:i:s');
} catch (\Exception $e) {
$invoice_time = '';
}
}
// Commission agent name — always fetch directly regardless of layout setting
$commission_agent_name = '';
if (!empty($receipt_details->commission_agent)) {
$commission_agent_name = strtoupper($receipt_details->commission_agent);
} elseif ($transaction && !empty($transaction->sale_commission_agent)) {
$commission_agent_name = strtoupper($transaction->sale_commission_agent->user_full_name ?? '');
}
// Amount in words - always generate from final_balance
$amount_in_words = '';
if (!empty($receipt_details->total_in_words)) {
$amount_in_words = strtoupper($receipt_details->total_in_words);
} elseif (extension_loaded('intl')) {
try {
$fmt = new \NumberFormatter('en', \NumberFormatter::SPELLOUT);
$amount_in_words = strtoupper($fmt->format($final_balance)) . ' ONLY';
} catch (\Exception $e) {
$amount_in_words = '';
}
}
@endphp
@foreach($chunks as $page_index => $chunk)
| Code |
Description |
Qty |
Unit Price |
Discount |
Amount |
@foreach($chunk as $line)
| {{ $line['sub_sku'] ?? '' }} |
{{ $line['name'] }}
@if(!empty($line['variation']) && $line['variation'] != 'Default')
{{ $line['variation'] }}
@endif
@if(!empty($line['is_free_promo_item']) || (isset($line['unit_price_uf']) && $line['unit_price_uf'] == 0))
🎁 FREE
@endif
|
{{ number_format(floatval(preg_replace('/[^0-9.]/', '', $line['quantity'] ?? '0')), 0) }} |
{{ format_rs_custom($line['unit_price_before_discount'] ?? $line['unit_price'] ?? 0) }} |
{{ format_rs_custom($line['line_discount'] ?? $line['total_line_discount'] ?? 0) }} |
{{ format_rs_custom($line['line_total'] ?? 0) }} |
@endforeach
@if($page_index == $total_pages - 1)
CREDIT DAYS {{ $credit_days }}
{{ $credit_limit_status }}
Authorized by_______________________
Customer Signature__________________
* PLEASE PAY THIS AMOUNT
| Current Total |
{{ format_rs_custom($total_discount) }} |
{{ format_rs_custom($current_total) }} |
| Bill Di. (-) |
|
{{ format_rs_custom($bill_discount) }} |
| Other Ch. (+) |
|
{{ format_rs_custom($other_charges) }} |
| Return (-) |
|
{{ format_rs_custom($return_amount) }} |
| F/Balance |
|
{{ number_format($f_balance, 2) }} |
| Final Balance |
|
{{ number_format($final_balance, 2) }} |
Number of Items {{ count($lines_array) }}
Number of Qty {{ number_format($total_qty, 0) }}
Amount In Words {{ $amount_in_words }}
We declare that this Invoice shows the actual price of the goods described and that all particulars are true and correct
Please check and confirm that all Items on this Invoice have been Received
@else
Continued...
@endif
@endforeach