Update besar apk finance

This commit is contained in:
Wian Drs
2026-09-11 16:03:00 +07:00
parent d42483b350
commit 4ef15c22ae
897 changed files with 98056 additions and 15979 deletions
+32
View File
@@ -0,0 +1,32 @@
<?php $csrfName=$this->security->get_csrf_token_name();$csrfHash=$this->security->get_csrf_hash();function arMoney($v){return'Rp '.number_format((float)$v,2,',','.');} ?>
<link rel="stylesheet" href="<?=base_url('assets/css/invoices-professional.css').'?v='.filemtime(FCPATH.'assets/css/invoices-professional.css')?>">
<link rel="stylesheet" href="<?=base_url('assets/css/receivables-professional.css').'?v='.filemtime(FCPATH.'assets/css/receivables-professional.css')?>">
<section class="receivable-workspace">
<header class="invoice-hero"><div><span>SIKLUS PENJUALAN</span><h2>Piutang & Pembayaran</h2><p>Alokasikan pelunasan melalui akun Aktiva atau Passiva, termasuk pemindahbukuan simpanan customer.</p></div><a class="btn btn-light" href="<?=base_url('invoices')?>"><i class="bi bi-receipt"></i> Daftar Invoice</a></header>
<nav class="sales-section-nav" aria-label="Bagian Penjualan"><a href="<?=base_url('sales')?>"><i class="bi bi-speedometer2"></i><span>Ringkasan</span></a><a href="<?=base_url('invoices')?>"><i class="bi bi-receipt"></i><span>Invoice</span></a><a href="<?=base_url('sales/deliveries')?>"><i class="bi bi-truck"></i><span>Surat Jalan</span></a><a class="active" href="<?=base_url('receivables')?>"><i class="bi bi-cash-coin"></i><span>Piutang</span></a><a href="<?=base_url('sales/returns')?>"><i class="bi bi-arrow-counterclockwise"></i><span>Retur</span></a><a href="<?=base_url('customers')?>"><i class="bi bi-people"></i><span>Customer</span></a></nav>
<div class="receivable-grid">
<div class="card receivable-card">
<div class="card-header"><div><b>1. Pilih Customer & Invoice</b><small>Hanya invoice posted yang masih memiliki saldo.</small></div></div>
<div class="card-body"><label class="form-label">Customer</label><select id="payCustomer" class="form-select"></select><div class="allocation-toolbar"><span id="invoiceSelectionHint">Pilih customer terlebih dahulu.</span><div><button type="button" id="allocateAll" class="btn btn-sm btn-outline-primary">Alokasikan Semua</button><button type="button" id="clearAllocations" class="btn btn-sm btn-light">Kosongkan</button></div></div><div id="invoiceAllocations" class="invoice-allocation-list"><div class="ar-empty"><i class="bi bi-receipt"></i><span>Invoice terbuka akan tampil di sini.</span></div></div></div>
</div>
<div class="card receivable-card payment-panel">
<div class="card-header"><div><b>2. Detail Penerimaan</b><small>Bukti pembayaran wajib dan jurnal dibuat otomatis.</small></div></div>
<div class="card-body"><form id="paymentForm" action="<?=base_url('receivables/payment')?>" enctype="multipart/form-data"><input type="hidden" name="<?=$csrfName?>" value="<?=$csrfHash?>"><input type="hidden" name="customer_id" id="paymentCustomerId">
<div class="row g-3"><div class="col-md-6"><label class="form-label">Tanggal Pelunasan</label><input class="form-control" type="date" name="date" value="<?=date('Y-m-d')?>" required></div><div class="col-md-6"><label class="form-label">Referensi Pembayaran</label><input class="form-control" name="reference_no" placeholder="Nomor transfer atau referensi pemindahbukuan"></div></div>
<div class="source-title"><div><b>Akun Penerimaan / Pelunasan</b><small>Pilih Aktiva untuk dana masuk, atau Passiva untuk pemindahbukuan simpanan customer.</small></div><button class="btn btn-sm btn-outline-primary" type="button" id="addPaymentSource"><i class="bi bi-plus-lg"></i> Tambah Akun</button></div><div id="paymentSources"></div>
<div class="payment-balance"><div><span>Total dialokasikan</span><b id="allocatedTotal">Rp 0,00</b></div><div><span>Total sumber penerimaan</span><b id="sourceTotal">Rp 0,00</b></div><div class="difference"><span>Selisih</span><strong id="paymentDifference">Rp 0,00</strong></div></div>
<label class="form-check mt-3"><input class="form-check-input" type="checkbox" name="allow_advance" value="1" id="allowAdvance"><span class="form-check-label">Catat kelebihan sebagai uang muka customer</span></label>
<div class="mt-3"><label class="form-label">Bukti Pembayaran <span class="text-danger">*</span></label><small class="d-block text-muted mb-2">JPG, PNG, WEBP, GIF, atau PDF. Maksimal 10 file, masing-masing 5 MB.</small><input type="file" id="paymentAttachments" name="attachments[]" accept="image/jpeg,image/png,image/webp,image/gif,application/pdf,.pdf" multiple hidden><div id="paymentAttachmentGrid" class="payment-attachment-grid"><button type="button" class="attachment-add" id="addPaymentAttachment"><i class="bi bi-plus-lg"></i><span>Tambah</span></button></div></div>
<div class="mt-3"><label class="form-label">Catatan</label><textarea class="form-control" name="notes" rows="2" placeholder="Keterangan penerimaan atau informasi tambahan"></textarea></div>
<?php if($can_post):?><button class="btn btn-success w-100 mt-3" type="submit" id="postPayment"><i class="bi bi-check-circle"></i> Post Pembayaran</button><?php else:?><div class="alert alert-warning mt-3 mb-0">Anda tidak memiliki permission untuk memposting pembayaran.</div><?php endif?>
</form></div>
</div>
</div>
<div class="card receivable-card mt-3"><div class="card-header"><div><b>Riwayat Pembayaran Customer</b><small>Bukti penerimaan dapat dipratinjau sebagai PDF.</small></div></div><div class="card-body" id="paymentHistory"><div class="ar-empty"><i class="bi bi-clock-history"></i><span>Pilih customer untuk melihat riwayat.</span></div></div></div>
<div class="card receivable-card mt-3"><div class="card-header"><div><b>Ringkasan Aging Piutang</b><small>Saldo terbuka berdasarkan umur jatuh tempo.</small></div></div><div class="table-responsive"><table class="table align-middle mb-0"><thead><tr><th>Customer</th><th class="text-end">Belum jatuh tempo</th><th class="text-end">1–30 hari</th><th class="text-end">31–60 hari</th><th class="text-end">61–90 hari</th><th class="text-end">&gt;90 hari</th><th class="text-end">Total</th><th></th></tr></thead><tbody><?php foreach($aging as$r):?><tr><td><b><?=html_escape($r->nama)?></b></td><?php foreach(array('current_amount','days_1_30','days_31_60','days_61_90','days_over_90','total')as$f):?><td class="text-end"><?=arMoney($r->$f)?></td><?php endforeach?><td><a class="btn btn-sm btn-outline-secondary" href="<?=base_url('receivables/statement/'.$r->customer_id)?>">Statement</a></td></tr><?php endforeach?><?php if(!$aging):?><tr><td colspan="8" class="text-center text-muted py-4">Tidak ada saldo piutang terbuka.</td></tr><?php endif?></tbody></table></div></div>
</section>
<div class="modal fade" id="paymentPreviewModal" tabindex="-1"><div class="modal-dialog modal-xl modal-dialog-centered"><div class="modal-content"><div class="modal-header"><h5 class="modal-title">Pratinjau Dokumen</h5><button class="btn-close" data-bs-dismiss="modal"></button></div><div class="modal-body p-0"><iframe title="Pratinjau PDF"></iframe><img alt="Pratinjau gambar"></div></div></div></div>
<script>window.RECEIVABLE_PAGE=<?=json_encode(array('base'=>base_url(),'csrfName'=>$csrfName,'csrfHash'=>$csrfHash,'focus'=>$focus_invoice),JSON_UNESCAPED_SLASHES)?>;</script>
<script src="<?=base_url('assets/js/receivables-professional.js').'?v='.filemtime(FCPATH.'assets/js/receivables-professional.js')?>"></script>
@@ -0,0 +1 @@
<!doctype html><html><head><meta charset="utf-8"><title>Receipt <?=html_escape($payment->payment_no)?></title><style>body{font:14px Arial;max-width:760px;margin:30px auto}.right{text-align:right}table{width:100%;border-collapse:collapse}td,th{padding:8px;border-bottom:1px solid #ddd}@media print{button{display:none}}</style></head><body><button onclick="print()">Cetak</button><h2>BUKTI PENERIMAAN</h2><p><b><?=html_escape($payment->payment_no)?></b><br>Tanggal: <?=$payment->tanggal?><br>Diterima dari: <?=html_escape($payment->nama)?></p><table><thead><tr><th>Invoice</th><th class="right">Alokasi</th></tr></thead><tbody><?php foreach($allocations as$a):?><tr><td><?=html_escape($a->no_invoice)?></td><td class="right"><?=number_format($a->amount,0,',','.')?></td></tr><?php endforeach?></tbody><tfoot><tr><th>Total diterima</th><th class="right"><?=number_format($payment->jumlah,0,',','.')?></th></tr></tfoot></table><p>Referensi: <?=html_escape($payment->reference_no?:'-')?></p></body></html>
@@ -0,0 +1 @@
<div class="container py-3"><div class="d-flex justify-content-between"><div><h4>Customer Statement</h4><p><?=html_escape($customer->nama)?> · <?=html_escape($from)?> s/d <?=html_escape($to)?></p></div><button onclick="print()" class="btn btn-outline-secondary h-25">Cetak</button></div><div class="table-responsive"><table class="table"><thead><tr><th>Tanggal</th><th>Dokumen</th><th>Debit</th><th>Kredit</th></tr></thead><tbody><?php foreach($invoices as$i):?><tr><td><?=$i->tanggal?></td><td><?=html_escape($i->no_invoice)?></td><td><?=number_format($i->total,0,',','.')?></td><td></td></tr><?php endforeach?><?php foreach($payments as$p):?><tr><td><?=$p->tanggal?></td><td><?=html_escape($p->payment_no)?></td><td></td><td><?=number_format($p->jumlah,0,',','.')?></td></tr><?php endforeach?></tbody></table></div></div>