(function($){
'use strict';
var cfg=window.RECEIVABLE_PAGE||{},invoices=[],files=[],sourceIndex=0;
function esc(v){return $('
').text(v==null?'':v).html()}
function parseMoney(v){v=String(v==null?'':v).replace(/Rp|\s/g,'');if(v.indexOf(',')>=0)v=v.replace(/\./g,'').replace(',','.');else if(/^\d{1,3}(\.\d{3})+$/.test(v))v=v.replace(/\./g,'');return Number(v)||0}
function money(v){return'Rp '+new Intl.NumberFormat('id-ID',{minimumFractionDigits:2,maximumFractionDigits:2}).format(Number(v)||0)}
function fmt(v){return new Intl.NumberFormat('id-ID',{minimumFractionDigits:0,maximumFractionDigits:2}).format(Number(v)||0)}
function toast(message,icon){if(window.AppAlert)return AppAlert.toast(message,icon||'success');return Swal.fire({toast:true,position:'top-end',icon:icon||'success',title:message,showConfirmButton:false,timer:3200})}
function fail(xhr){var m='Permintaan tidak dapat diproses.';try{var r=xhr.responseJSON||JSON.parse(xhr.responseText);m=r.message||m}catch(e){}toast(m,'error')}
function select2(selector,url,placeholder){$(selector).select2({width:'100%',placeholder:placeholder,allowClear:true,ajax:{url:cfg.base+url,dataType:'json',delay:300,data:function(p){return{q:p.term||'',page:p.page||1}},processResults:function(r){return{results:r.results||[],pagination:r.pagination||{more:false}}},cache:true}})}
function addSource(){sourceIndex++;var row=$('');$('#paymentSources').append(row);select2(row.find('.source-account'),'receivables/lookup_cash_accounts','Pilih akun Aktiva / Passiva');row.find('.source-amount').on('input blur',function(e){if(e.type==='blur')this.value=fmt(parseMoney(this.value));calculate()})}
function renderInvoices(rows){invoices=Array.isArray(rows)?rows:[];if(!invoices.length){$('#invoiceAllocations').html('
Customer ini tidak memiliki invoice terbuka.
');$('#invoiceSelectionHint').text('Tidak ada invoice terbuka.');calculate();return}var today=new Date().toISOString().slice(0,10);$('#invoiceAllocations').html(invoices.map(function(i){var overdue=i.jatuh_tempo
Total '+money(i.total)+'Terbayar '+money(i.total_bayar)+'
Sisa '+money(i.sisa_piutang)+'
'}).join(''));$('#invoiceSelectionHint').text(invoices.length+' invoice belum lunas.');$('.allocation-amount').on('input blur',function(e){var value=Math.min(parseMoney(this.value),Number($(this).data('balance')));if(e.type==='blur')this.value=fmt(value);calculate()});if(cfg.focus&&Number(cfg.focus.customer_id)===Number($('#payCustomer').val())){$('.allocation-amount[data-id="'+Number(cfg.focus.id)+'"]').val(fmt(cfg.focus.sisa_piutang));cfg.focus=null}calculate()}
function loadCustomer(id){$('#paymentCustomerId').val(id||'');if(!id){renderInvoices([]);return}$('#invoiceAllocations').html('
Memuat invoice...
');$.getJSON(cfg.base+'receivables/open_invoices/'+id).done(function(r){if(!r.status)return toast(r.message,'error');renderInvoices(r.invoices)}).fail(fail);$.getJSON(cfg.base+'receivables/payment_history/'+id).done(function(r){renderHistory(r.payments||[])}).fail(fail)}
function renderHistory(rows){if(!rows.length){$('#paymentHistory').html('