@php if (!function_exists('numberToWords')) { function numberToWords($number) { $number = floor($number); $words = [ '', 'satu', 'dua', 'tiga', 'empat', 'lima', 'enam', 'tujuh', 'delapan', 'sembilan', 'sepuluh', 'sebelas' ]; if ($number < 12) { return $words[$number]; } else if ($number < 20) { return $words[$number - 10] . ' belas'; } else if ($number < 100) { $result = $words[floor($number / 10)] . ' puluh ' . $words[$number % 10]; } else if ($number < 200) { $result = 'seratus ' . numberToWords($number - 100); } else if ($number < 1000) { $result = $words[floor($number / 100)] . ' ratus ' . numberToWords($number % 100); } else if ($number < 2000) { $result = 'seribu ' . numberToWords($number - 1000); } else if ($number < 1000000) { $result = numberToWords(floor($number / 1000)) . ' ribu ' . numberToWords($number % 1000); } else if ($number < 1000000000) { $result = numberToWords(floor($number / 1000000)) . ' juta ' . numberToWords($number % 1000000); } else if ($number < 1000000000000) { $result = numberToWords(floor($number / 1000000000)) . ' milyar ' . numberToWords($number % 1000000000); } else if ($number < 1000000000000000) { $result = numberToWords(floor($number / 1000000000000)) . ' triliun ' . numberToWords($number % 1000000000000); } else { return 'Jumlah terlalu besar'; } // Remove double spaces and trim return trim(preg_replace('/\s+/', ' ', $result)); } } // Define the maximum number of lines per page $maxLines = 10; $allDetails = $receivableList->details; $pages = []; $currentPageItems = []; $currentLines = 0; $currentPageSubtotal = 0; foreach ($allDetails as $detail) { $maxLength = 31; $itemName = $detail->document_number; $prefix = '| BUTTERFLY |'; // Check if the item name starts with the prefix if (str_starts_with($itemName, $prefix)) { // Remove the prefix if it exists //$itemName = substr($itemName, strlen($prefix)); // Optional: Trim any leading/trailing whitespace left after removal $itemName = trim($itemName); } $linesNeeded = count(explode("\n", wordwrap($itemName, $maxLength, "\n", false))); // dump($linesNeeded); if (($currentLines + $linesNeeded) > $maxLines) { $pages[] = [ 'items' => $currentPageItems, ]; $currentPageItems = []; $currentLines = 0; } $currentPageItems[] = $detail; $currentLines += $linesNeeded; } if (!empty($currentPageItems)) { $pages[] = [ 'items' => $currentPageItems, ]; } $names=''; $names=$namacv; $name = $receivableList->customers->customer_name; $city = !$receivableList->alias?$receivableList->city:$receivableList->alias_city; $totalPages = count($pages); $qtys=0; @endphp @foreach($pages as $pageNumber => $page) @php @endphp


  {{ str_pad('TANDA TERIMA', 27) }} {{$name ?? 'N/A'}}
  {{ str_pad('', 45) }} {{''}}
  {{ str_pad('', 45) }} {{ \Carbon\Carbon::parse($receivableList->periode)->format('F Y') ?? 'N/A' }}
  {{ str_pad('', 45) }} {{ \Carbon\Carbon::parse($receivableList->document_date)->format('d/m/Y') }}
                                                {{ $receivableList->receivable_list_number }}
 ———————————————————————————————————————————————————————————————————————————————————————
  No             No.Faktur                 Tanggal                       Nilai Faktur
 ———————————————————————————————————————————————————————————————————————————————————————
@php
    $count = 0;
    $startingIndex = 0;
    for ($i = 0; $i < $pageNumber; $i++) {
        $startingIndex += count($pages[$i]['items']);
    }
@endphp
@foreach($page['items'] as $index => $detail)
@php
    $maxLength = 36; // Max length for item name
    $itemName = $detail->document_number;
    $prefix = '| BUTTERFLY |';
    // Check if the item name starts with the prefix
    if (str_starts_with($itemName, $prefix)) {
        // Remove the prefix if it exists
        $itemName = substr($itemName, strlen($prefix));
        // Optional: Trim any leading/trailing whitespace left after removal
        $itemName = trim($itemName);
    }
    $lines = explode("\n", wordwrap($itemName, $maxLength, "\n", false)); // Word-based wrapping
    $qtys+=$detail->nominal;
@endphp
@foreach($lines as $lineIndex => $line)
@if($lineIndex == 0)
  {{ str_pad($startingIndex + $loop->parent->iteration, 3) }} {{ str_pad($line, 36) }} {{ str_pad( \Carbon\Carbon::parse($detail->document_date)->format('d/m/Y') , 10, ' ', STR_PAD_BOTH) }} {{ str_pad(number_format($detail->nominal, 0)  , 33, ' ', STR_PAD_LEFT) }}
@else
  {{ str_pad('', 3) }} {{ str_pad($line, 36) }} {{ str_pad('', 10) }} {{ str_pad('', 36) }}
@endif
@php
    $count++;
@endphp
@endforeach
@endforeach
@for($i = 0; $i < (11 - $count-1); $i++)
  {{ str_pad('', 3) }} {{ str_pad('', 36) }} {{ str_pad('', 10) }} {{ str_pad('', 10) }} {{ str_pad(' ', 9) }}
@endfor
@php
    $maxLength = 40;
    $exp = ($receivableList->ekspedisi && $receivableList->ekspedisi != '') ? 'EXP    : ' . $receivableList->ekspedisi : '';
    $expLines = explode("\n", wordwrap($exp, $maxLength, "\n", false));
    $maxLength = 35;
    $alamat = ($receivableList->ekspedisi && $receivableList->alamat != '') ?'ALAMAT : ' . $receivableList->alamat:'';
    $alamatLines = explode("\n", wordwrap($alamat, $maxLength, "\n", false));
    $maxLength = 49;
    $terbilang = 'Terbilang: '.strtoupper(numberToWords($qtys));
    $terbilangLines = explode("\n", wordwrap($terbilang, $maxLength, "\n", false));
@endphp
 ———————————————————————————————————————————————————————————————————————————————————————
@if($pageNumber == $totalPages-1)
 {{str_pad($terbilangLines[0],49,' ',STR_PAD_RIGHT)}} {{str_pad('Rp. '.number_format($qtys, 0),36, ' ', STR_PAD_LEFT)}}
@if(isset($terbilangLines[1]))
 {{str_pad($terbilangLines[1],65,' ',STR_PAD_RIGHT)}}
@endif
 ———————————————————————————————————————————————————————————————————————————————————————
  Stampel dan Tanda Tangan Customer: {{ str_pad('', 10) }} {{ str_pad($expLines[0] , 40, ' ', STR_PAD_RIGHT) }}

@if(!isset($terbilangLines[1]))


@endif
@else






@endif


{{str_pad($names,77,' ',STR_PAD_LEFT)}}       {{ ($pageNumber + 1) }} of {{ $totalPages }}
        
@endforeach Kembali