code)?$pdf_currency->code:($company->base_currency??'IDR'); $currencySymbol=isset($pdf_currency->symbol)&&trim((string)$pdf_currency->symbol)!==''?$pdf_currency->symbol:$currencyCode; $groups=array(); $barcodesByLine=array(); foreach($barcodes as$b)$barcodesByLine[(int)$b->invoice_detail_id][]=$b; foreach($lines as$l){ $code=trim((string)($l->item_code??'')); $name=trim((string)$l->nama_item); $key=$l->service_date.'|'.$l->line_type.'|'.$code.'|'.$name.'|'.$l->unit; $label=trim(($code!==''?$code.' - ':'').$name); if(!isset($groups[$key]))$groups[$key]=array('date'=>$l->service_date,'item'=>$label,'qty'=>0,'unit'=>$l->unit,'gross'=>0,'discount'=>0,'tax'=>0,'total'=>0); $groups[$key]['qty']+=(float)$l->qty; $groups[$key]['gross']+=(float)$l->harga*(float)$l->qty; $groups[$key]['discount']+=(float)$l->discount_amount; $groups[$key]['tax']+=(float)$l->tax_amount; $groups[$key]['total']+=(float)$l->subtotal; } function ipMoney($v){return number_format((float)$v,2,',','.');} function ipQty($v){return floor((float)$v)==(float)$v?number_format((float)$v,0,',','.'):rtrim(rtrim(number_format((float)$v,4,',','.'),'0'),',');} $statusKey=$invoice->workflow_status==='posted'?$invoice->status:$invoice->workflow_status; $statusLabels=array('draft'=>'DRAFT','submitted'=>'MENUNGGU PERSETUJUAN','approved'=>'DISETUJUI','posted'=>'POSTED','unpaid'=>'BELUM LUNAS','partial'=>'DIBAYAR SEBAGIAN','paid'=>'LUNAS','cancelled'=>'DIBATALKAN','reversed'=>'DIBALIK'); $statusLabel=$statusLabels[$statusKey]??strtoupper(str_replace('_',' ',$statusKey)); $previousTotal=0;foreach($previous_invoices as$old)$previousTotal+=(float)$old->sisa_piutang;$customerOutstanding=$previousTotal+(float)$invoice->sisa_piutang; ?>
name??'Perusahaan')?>
address??'-'))?>
Telp: phone??'-')?>

INVOICE

no_invoice)?>
tanggal)?>
Ditagihkan kepada
customer_name)?>
customer_address?:'-'))?>
Informasi Invoice
Tanggal Invoice: tanggal)?>
Tanggal Jatuh Tempo: jatuh_tempo)?>
Mata Uang:
TANGGALBARANG / JASA / TABUNGANQTYHARGADISKONPAJAKSUBTOTAL
Belum ada item pada invoice ini.
Subtotal bersihsubtotal_before_tax)?>
Diskondiscount_total)?>
Pajaktax_total)?>
Total Invoice total)?>
Sudah dibayartotal_bayar)?>
Sisa tagihansisa_piutang)?>
Daftar Tagihan Sebelumnya yang Belum Lunas
INVOICETANGGALJATUH TEMPOTOTALTERBAYARSISA TAGIHAN
no_invoice)?>tanggal)?>jatuh_tempo)?>total)?>total_bayar)?>sisa_piutang)?>
Total sisa tagihan customer_name)?>, termasuk invoice ini:
Rekening Pembayaran Perusahaan
bank_name)?> · account_number)?> · a.n. account_holder)?> (currency)?>)is_primary?' · Utama':''?>

Surat Jalan: delivery_no;},$deliveries))?:'-')?>
Catatan: keterangan?:'-')?>

Dibuat oleh


creator_name?:'-')?>
Disetujui


approver_name?:'-')?>
Diterima Customer

Lampiran Detail

Rincian seluruh item Invoice no_invoice)?>.

id]??array();$label=trim((!empty($l->item_code)?$l->item_code.' - ':'').$l->nama_item);$note=trim((string)($l->keterangan?:$l->specification));if($lineBars):foreach($lineBars as$b):?>
TANGGALSURAT JALANBARANG / JASA / TABUNGANBARCODE / SERIALQTYKETERANGAN
service_date)?>delivery_no?:'-')?>barcode)?>
serial_number?:'-')?>
qty).' '.html_escape($l->unit)?>
service_date)?>--qty).' '.html_escape($l->unit)?>
Belum ada detail item pada invoice ini.