1import{_ as tt}from"./1TT5617U.js";import{_ as at}from"./BmJPZ_Bp.js";import{_ as st}from"./CNzqBcff.js";import{_ as lt}from"./CfFb-8ky.js";import{e as rt,f as nt,h as ot,g as it,q as i,i as te,j as dt,c as n,a,d as _,b as Y,w as T,k as s,t as o,l as m,x as w,F as c,r as f,D as ut,o as r,n as O,G as ct,p as F,v as De,y as Le,A as pt,z as mt,E as yt}from"./BnI3597d.js";import{u as xt}from"./4bw899IF.js";import{u as kt}from"./DqYlBbyW.js";import{u as bt}from"./ZcOw_Y0n.js";const vt={class:"animate-fade-in space-y-4"},ht={class:"card"},ft={class:"mt-1 text-sm text-slate-500 dark:text-slate-400"},gt={key:0,class:"text-sm text-red-600"},_t={class:"flex gap-2"},wt={key:0,class:"rounded-full bg-amber-500 px-1.5 text-xs font-semibold text-white"},$t={class:"flex flex-wrap items-center gap-1.5 text-sm"},Ct={key:0,class:"font-medium text-slate-800 dark:text-slate-100"},Tt={class:"font-medium text-slate-800 dark:text-slate-100"},It={key:0,class:"flex flex-wrap gap-2"},St=["value"],Rt={key:1,class:"overflow-hidden rounded-2xl border border-slate-200 bg-white shadow-sm dark:border-slate-800 dark:bg-slate-900"},Bt={key:0,class:"py-10 text-center text-sm text-slate-400"},Pt={key:1,class:"py-10 text-center text-sm text-slate-400"},Dt={key:2,class:"overflow-x-auto"},Lt={class:"w-full text-left text-sm"},Mt={class:"border-b border-slate-200 bg-gradient-to-r from-primary-50/70 via-white to-white dark:border-slate-800 dark:from-primary-500/10 dark:via-slate-900"},Nt=["onClick"],Ut={class:"px-4 py-2.5 text-slate-400"},Vt={class:"px-4 py-2.5 font-medium text-primary-600 dark:text-primary-400"},jt={key:2,class:"overflow-hidden rounded-2xl border border-slate-200 bg-white shadow-sm dark:border-slate-800 dark:bg-slate-900"},qt={key:0,class:"py-10 text-center text-sm text-slate-400"},At={key:1,class:"py-10 text-center text-sm text-slate-400"},Et={key:2,class:"overflow-x-auto"},Ot={class:"w-full text-left text-sm"},Ft={class:"border-b border-slate-200 bg-gradient-to-r from-primary-50/70 via-white to-white dark:border-slate-800 dark:from-primary-500/10 dark:via-slate-900"},Kt=["onClick"],Jt={class:"px-4 py-2.5 text-slate-400"},Ht={class:"px-4 py-2.5 font-medium text-primary-600 dark:text-primary-400"},zt={key:3,class:"overflow-hidden rounded-2xl border border-slate-200 bg-white shadow-sm dark:border-slate-800 dark:bg-slate-900"},Yt={key:0,class:"py-10 text-center text-sm text-slate-400"},Zt={key:1,class:"py-10 text-center text-sm text-slate-400"},Gt={key:2,class:"overflow-x-auto"},Wt={class:"w-full text-left text-sm"},Qt={class:"border-b border-slate-200 bg-gradient-to-r from-primary-50/70 via-white to-white dark:border-slate-800 dark:from-primary-500/10 dark:via-slate-900"},Xt=["title"],ea={class:"flex items-center justify-center gap-1.5"},ta=["checked","disabled","onChange"],aa={key:0,class:"ml-0.5 text-amber-500"},sa={class:"px-4 py-2.5 text-slate-400"},la={class:"px-4 py-2.5"},ra=["onClick"],na={class:"text-slate-400"},oa=["checked","disabled","onChange"],ia={key:2,class:"text-slate-300"},da={class:"border-t border-slate-100 px-4 py-2 text-xs text-slate-400 dark:border-slate-800"},ua={key:4,class:"space-y-4"},ca={key:0,class:"card py-10 text-center text-sm text-slate-400"},pa={class:"card"},ma={key:0,class:"mt-2 text-sm text-slate-400"},ya={key:1,class:"mt-2 overflow-x-auto"},xa={class:"w-full text-left text-sm"},ka={class:"px-3 py-1.5"},ba={class:"px-3 py-1.5"},va={class:"px-3 py-1.5"},ha={class:"px-3 py-1.5 text-right"},fa={class:"px-3 py-1.5 text-right"},ga={class:"px-3 py-1.5"},_a={class:"card"},wa={key:0,class:"mt-2 text-sm text-slate-400"},$a={key:1,class:"mt-2 overflow-x-auto"},Ca={class:"w-full text-left text-sm"},Ta={class:"px-3 py-1.5"},Ia={class:"px-3 py-1.5"},Sa={class:"px-3 py-1.5 text-right"},Ra={class:"px-3 py-1.5"},Ba={class:"px-3 py-1.5"},Pa=["value"],Da={class:"flex justify-end gap-3 whitespace-nowrap"},La=["onClick"],Ma=["onClick"],Na={key:3,class:"card"},Ua={class:"mb-3 flex gap-2"},Va=["onClick"],ja={key:0,class:"py-10 text-center text-sm text-slate-400"},qa={key:1,class:"grid grid-cols-1 gap-3 sm:grid-cols-2 lg:grid-cols-3"},Aa={class:"flex items-start justify-between gap-2"},Ea={class:"font-semibold text-slate-800 dark:text-slate-100"},Oa={class:"text-xs text-slate-500"},Fa={class:"rounded-full bg-primary-50 px-2 py-0.5 text-xs font-semibold text-primary-700 dark:bg-primary-500/10 dark:text-primary-300"},Ka={class:"mt-2 text-lg font-bold text-slate-900 dark:text-slate-50"},Ja={class:"text-xs text-slate-400"},Ha={key:0,class:"mt-1 text-xs text-slate-500"},za=["href"],Ya={key:2,class:"mt-2 text-xs text-red-500"},Za={key:3,class:"mt-2 text-xs text-green-600"},Ga={class:"mt-3 flex flex-wrap gap-2"},Wa=["onClick"],Qa=["onClick"],Xa=["onClick"],es=["onClick"],ts={class:"space-y-3"},as={class:"text-sm text-slate-500 dark:text-slate-400"},ss={key:0,class:"max-h-56 space-y-1 overflow-y-auto rounded-lg border border-slate-200 p-2 dark:border-slate-700"},ls={class:"flex items-center gap-2"},rs=["value"],ns={class:"text-slate-500"},os={key:1,class:"text-sm text-slate-400"},is=["disabled"],ds=["disabled"],fs=rt({__name:"tagihan",setup(us){const ae={unpaid:"Belum Bayar",partial:"Sebagian",paid:"Lunas",waived:"Dibebaskan",cancelled:"Dibatalkan"},M={unpaid:"bg-red-100 text-red-700 dark:bg-red-500/10 dark:text-red-400",partial:"bg-amber-100 text-amber-700 dark:bg-amber-500/10 dark:text-amber-400",paid:"bg-green-100 text-green-700 dark:bg-green-500/10 dark:text-green-400",waived:"bg-slate-100 text-slate-500 dark:bg-slate-800",cancelled:"bg-slate-100 text-slate-400 line-through dar
1k:bg-slate-800"},fe={transfer_bank:"Transfer Bank",virtual_account:"Virtual Account",tunai:"Tunai",saldo:"Saldo"},{token:ge,user:Z,apiFetch:y,fetchMe:Me}=nt(),{activeSchoolId:u}=xt(),{formatRupiah:C}=kt(),{setFlash:Ne}=bt(),D=ot(),I=it(),g=i(I.query.tab==="verifikasi"?"verify":I.query.tab==="daftar"?"bills":"rekap"),_e=i([]),we=i(!0),d=i(""),se=i(0);function x(l){const t=l;return t?.data?.error?.message??t?.message??"Terjadi kesalahan, silakan coba lagi"}function $e(l){return new Date(l).toLocaleDateString("id-ID",{day:"numeric",month:"short",year:"numeric",timeZone:"Asia/Jakarta"})}function Ce(l){return new Date(l).toLocaleString("id-ID",{dateStyle:"medium",timeStyle:"short",timeZone:"Asia/Jakarta"})}function le(l){g.value=l,D.replace({query:{...I.query,tab:l==="verify"?"verifikasi":l==="bills"?"daftar":void 0}}),l==="rekap"&&J.value.length===0&&ke()}const K=i("registered"),p=i("month"),re=i([]),J=i([]),ne=i(!1),G=i(""),W=i(""),oe=i([]),ie=i([]),de=i(!1),Ue=i(""),Q=i(""),ue=i([]),S=i([]),ce=i(!1),pe=i(""),Ve=i(""),Te=i(""),me=i([]),ye=i([]),xe=i(!1),je={registered:"Terdaftar",paid:"Sudah Lunas",unpaid:"Belum Lunas"},qe=["registered","paid","unpaid"];function Ie(l,t){return l[t]?.[K.value]??0}async function ke(){ne.value=!0,d.value="";try{const l=await y(`/schools/${u.value}/student-bills/recap/months`);re.value=l.feeTypes,J.value=l.months}catch(l){d.value=x(l)}finally{ne.value=!1}}function Ae(){p.value="month",D.replace({query:{...I.query,month:void 0,classId:void 0,studentId:void 0}})}async function Ee(l){G.value=l.key,W.value=l.label,p.value="class",D.replace({query:{...I.query,month:l.key,classId:void 0,studentId:void 0}}),de.value=!0,d.value="";try{const t=await y(`/schools/${u.value}/student-bills/recap/classes?month=${l.key}`);W.value=t.monthLabel,oe.value=t.feeTypes,ie.value=t.classes}catch(t){d.value=x(t)}finally{de.value=!1}}function Oe(){p.value="class",D.replace({query:{...I.query,classId:void 0,studentId:void 0}})}async function Fe(l){Ue.value=l.classId,Q.value=l.className,p.value="student",D.replace({query:{...I.query,classId:l.classId,studentId:void 0}}),ce.value=!0,d.value="";try{const t=await y(`/schools/${u.value}/student-bills/recap/students?month=${G.value}&classId=${l.classId}`);Q.value=t.className,ue.value=t.feeTypes,S.value=t.students}catch(t){d.value=x(t)}finally{ce.value=!1}}async function Ke(l,t){const h=`${l.studentId}:${t.id}`,$=!l.cells[t.id].isParticipant;pe.value=h;try{await y(`/schools/${u.value}/fee-types/${t.id}/periods/${G.value}/participants`,{method:"POST",body:{studentId:l.studentId,isActive:$}}),l.cells[t.id].isParticipant=$}catch(E){d.value=x(E)}finally{pe.value=""}}const be=i("");function Se(l){return S.value.length>0&&S.value.every(t=>t.cells[l]?.isParticipant)}async function Je(l){if(S.value.length===0)return;const t=!Se(l.id);be.value=l.id;try{await y(`/schools/${u.value}/fee-types/${l.id}/periods/${G.value}/participants/bulk`,{method:"POST",body:{studentIds:S.value.map(h=>h.studentId),isActive:t}});for(const h of S.value)h.cells[l.id].isParticipant=t}catch(h){d.value=x(h)}finally{be.value=""}}async function He(l){Ve.value=l.studentId,Te.value=l.fullName,p.value="detail",D.replace({query:{...I.query,studentId:l.studentId}}),xe.value=!0,d.value="";try{const[t,h]=await Promise.all([y(`/schools/${u.value}/student-bills?studentId=${l.studentId}&activeYearOnly=true&limit=200`),y(`/schools/${u.value}/student-payments?studentId=${l.studentId}&limit=100`)]);me.value=t.bills,ye.value=h.payments}catch(t){d.value=x(t)}finally{xe.value=!1}}async function H(){try{const l=await y(`/schools/${u.value}/student-payments?status=pending&limit=200`);se.value=l.payments.length}catch{}}const Re=i([]),N=i(""),U=i(""),V=i(""),ze=[{key:"student_name",label:"Siswa"},{key:"class_name",label:"Kelas"},{key:"fee_type_name",label:"Jenis Biaya"},{key:"period_label",label:"Periode"},{key:"due_date",label:"Jatuh Tempo"},{key:"total_amount",label:"Total"},{key:"paid_amount",label:"Terbayar"},{key:"status",label:"Status"},{key:"actions",label:"",align:"right"}];async function z(){const l=new URLSearchParams;U.value&&l.set("classId",U.value),V.value&&l.set("status",V.value),N.value.trim()&&l.set("periodLabel",N.value.trim());const t=await y(`/schools/${u.value}/student-bills?${l.toString()}`);Re.value=t.bills}const R=i(null),B=i(null),v=i(!1);async function Ye(){if(R.value){v.value=!0;try{await y(`/schools/${u.value}/student-bills/${R.value.id}/cancel`,{method:"POST"}),R.value=null,await z()}catch(l){d.value=x(l)}finally{v.value=!1}}}async function Ze(){if(B.value){v.value=!0;try{await y(`/schools/${u.value}/student-bills/${B.value.id}`,{method:"DELETE"}),B.value=null,await z()}catch(l){d.value=x(l)}finally{v.value=!1}}}te([U,V,N],()=>z().catch(l=>d.value=x(l)));const ve=i([]),X=i("pending"),ee=i(!1);async function L(){const l=await y(`/schools/${u.value}/student-payments?status=${X.value}`);ve.value=l.payments,ee.value=!0}const P=i(null),he=i([]),j=i([]);async function Ge(l){P.value=l,j.value=[];try{const t=await y(`/schools/${u.value}/student-bills?studentId=${l.student_id}&status=unpaid`),h=await y(`/schools/${u.value}/student-bills?studentId=${l.student_id}&status=partial`);he.value=[...t.bills,...h.bills].sort(($,E)=>$.due_date.localeCompare(E.due_date))}catch(t){d.value=x(t)}}async function We(){if(P.value){v.value=!0,d.value="";try{const l=await y(`/schools/${u.value}/student-payments/${P.value.id}/verify`,{method:"POST",body:{targetBillIds:j.value.length?j.value:void 0}}),t=Number(l.overpaymentAmount??0);Ne(t>
10?`Pembayaran diverifikasi. ${C(t)} masuk saldo siswa.`:"Pembayaran berhasil diverifikasi.","success"),P.value=null,await Promise.all([L(),H()])}catch(l){d.value=x(l)}finally{v.value=!1}}}const q=i(null),A=i("");async function Qe(){if(!(!q.value||!A.value.trim())){v.value=!0;try{await y(`/schools/${u.value}/student-payments/${q.value.id}/reject`,{method:"POST",body:{reason:A.value}}),q.value=null,A.value="",await Promise.all([L(),H()])}catch(l){d.value=x(l)}finally{v.value=!1}}}async function Xe(l){v.value=!0;try{await y(`/schools/${u.value}/student-payments/${l.id}/unverify`,{method:"POST"}),await Promise.all([L(),H()])}catch(t){d.value=x(t)}finally{v.value=!1}}async function et(l){try{const t=await $fetch(`${yt().public.apiBaseUrl}/schools/${u.value}/student-payments/${l.id}/receipt`,{headers:{Authorization:`Bearer ${ge.value}`},responseType:"blob"}),h=URL.createObjectURL(t),$=document.createElement("a");$.href=h,$.download=`${l.receipt_number?.replace(/\//g,"-")??"kwitansi"}.pdf`,$.click(),URL.revokeObjectURL(h)}catch(t){d.value=x(t)}}te(X,()=>L().catch(l=>d.value=x(l))),te(g,l=>{l==="verify"&&!ee.value&&L().catch(t=>d.value=x(t))});async function Be(){const l=await y(`/schools/${u.value}/classes`);_e.value=l.classes}return te(u,()=>{ee.value=!1,p.value="month",J.value=[],Promise.all([Be(),z(),H()]).then(()=>{if(g.value==="verify")return L();if(g.value==="rekap")return ke()}).catch(l=>d.value=x(l))}),dt(async()=>{if(!ge.value)return D.push("/login");try{if(Z.value||await Me(),Z.value?.userType==="employee")u.value=Z.value.schoolId??"";else if(Z.value?.userType==="customer"){const l=await y("/auth/my-schools");l.schools.some(t=>t.id===u.value)||(u.value=l.schools[0]?.id??"")}await Be(),await z(),await H(),g.value==="verify"&&await L(),g.value==="rekap"&&await ke()}catch(l){d.value=x(l)}finally{we.value=!1}}),(l,t)=>{const h=tt,$=at,E=st,Pe=lt;return r(),n("div",vt,[a("div",ht,[a("div",null,[t[17]||(t[17]=a("h1",{class:"text-xl font-bold text-slate-900 dark:text-slate-50"},"Tagihan",-1)),a("p",ft,[t[15]||(t[15]=_(" Rekap tagihan per bulan, verifikasi bukti transfer wali siswa, & daftar tagihan yang sudah terbit. Untuk menerbitkan tagihan baru, buka halaman ",-1)),Y(h,{to:"/keuangan/jenis-biaya",class:"text-primary-600 hover:underline"},{default:T(()=>[...t[14]||(t[14]=[_("Kelola Biaya",-1)])]),_:1}),t[16]||(t[16]=_(". ",-1))])])]),s(d)?(r(),n("p",gt,o(s(d)),1)):m("",!0),a("div",_t,[a("button",{type:"button",class:w(["rounded-full px-4 py-1.5 text-sm font-medium transition-all",s(g)==="rekap"?"bg-primary-500 text-white shadow-sm shadow-primary-500/30":"bg-slate-100 text-slate-600 dark:bg-slate-800 dark:text-slate-300"]),onClick:t[0]||(t[0]=e=>le("rekap"))}," Rekap ",2),a("button",{type:"button",class:w(["rounded-full px-4 py-1.5 text-sm font-medium transition-all",s(g)==="bills"?"bg-primary-500 text-white shadow-sm shadow-primary-500/30":"bg-slate-100 text-slate-600 dark:bg-slate-800 dark:text-slate-300"]),onClick:t[1]||(t[1]=e=>le("bills"))}," Daftar Tagihan ",2),a("button",{type:"button",class:w(["flex items-center gap-1.5 rounded-full px-4 py-1.5 text-sm font-medium transition-all",s(g)==="verify"?"bg-primary-500 text-white shadow-sm shadow-primary-500/30":"bg-slate-100 text-slate-600 dark:bg-slate-800 dark:text-slate-300"]),onClick:t[2]||(t[2]=e=>le("verify"))},[t[18]||(t[18]=_(" Verifikasi Pembayaran ",-1)),s(se)>0?(r(),n("span",wt,o(s(se)),1)):m("",!0)],2)]),s(g)==="rekap"?(r(),n(c,{key:1},[a("div",$t,[a("button",{type:"button",class:w(["font-medium hover:underline",s(p)==="month"?"text-slate-800 dark:text-slate-100":"text-primary-600"]),onClick:Ae},"Rekap per Bulan",2),s(p)==="class"||s(p)==="student"||s(p)==="detail"?(r(),n(c,{key:0},[t[19]||(t[19]=a("span",{class:"text-slate-400"},"/",-1)),a("button",{type:"button",class:w(["font-medium hover:underline",s(p)==="class"?"text-slate-800 dark:text-slate-100":"text-primary-600"]),onClick:Oe},o(s(W)),3)],64)):m("",!0),s(p)==="student"||s(p)==="detail"?(r(),n(c,{key:1},[t[20]||(t[20]=a("span",{class:"text-slate-400"},"/",-1)),s(p)==="student"?(r(),n("span",Ct,o(s(Q)),1)):(r(),n("button",{key:1,type:"button",class:"font-medium text-primary-600 hover:underline",onClick:t[3]||(t[3]=e=>p.value="student")}
1,o(s(Q)),1))],64)):m("",!0),s(p)==="detail"?(r(),n(c,{key:2},[t[21]||(t[21]=a("span",{class:"text-slate-400"},"/",-1)),a("span",Tt,o(s(Te)),1)],64)):m("",!0)]),s(p)==="month"||s(p)==="class"?(r(),n("div",It,[(r(),n(c,null,f(qe,e=>a("label",{key:e,class:w(["flex cursor-pointer items-center gap-1.5 rounded-full border px-3 py-1 text-xs font-medium transition-all",s(K)===e?"border-primary-500 bg-primary-50 text-primary-700 dark:bg-primary-500/10 dark:text-primary-300":"border-slate-200 text-slate-500 dark:border-slate-700 dark:text-slate-400"])},[O(a("input",{"onUpdate:modelValue":t[4]||(t[4]=b=>F(K)?K.value=b:null),type:"radio",value:e,class:"h-3.5 w-3.5"},null,8,St),[[ct,s(K)]]),_(" "+o(je[e]),1)],2)),64))])):m("",!0),s(p)==="month"?(r(),n("div",Rt,[s(ne)?(r(),n("p",Bt,"Memuat...")):s(J).length===0?(r(),n("p",Pt,"Belum ada tahun ajaran aktif.")):(r(),n("div",Dt,[a("table",Lt,[a("thead",null,[a("tr",Mt,[t[22]||(t[22]=a("th",{class:"whitespace-nowrap px-4 py-3 text-xs font-semibold uppercase tracking-wider text-primary-700/80 dark:text-primary-300/80"},"No",-1)),t[23]||(t[23]=a("th",{class:"whitespace-nowrap px-4 py-3 text-xs font-semibold uppercase tracking-wider text-primary-700/80 dark:text-primary-300/80"},"Bulan",-1)),(r(!0),n(c,null,f(s(re),e=>(r(),n("th",{key:e.id,class:"whitespace-nowrap px-4 py-3 text-center text-xs font-semibold uppercase tracking-wider text-primary-700/80 dark:text-primary-300/80"},o(e.name),1))),128))])]),a("tbody",null,[(r(!0),n(c,null,f(s(J),(e,b)=>(r(),n("tr",{key:e.key,class:"cursor-pointer border-b border-slate-100 transition-colors last:border-0 hover:bg-primary-50/50 dark:border-slate-800 dark:hover:bg-primary-500/5",onClick:k=>Ee(e)},[a("td",Ut,o(b+1),1),a("td",Vt,o(e.label),1),(r(!0),n(c,null,f(s(re),k=>(r(),n("td",{key:k.id,class:"px-4 py-2.5 text-center"},o(Ie(e.counts,k.id)),1))),128))],8,Nt))),128))])])]))])):m("",!0),s(p)==="class"?(r(),n("div",jt,[s(de)?(r(),n("p",qt,"Memuat...")):s(ie).length===0?(r(),n("p",At,"Tidak ada kelas aktif.")):(r(),n("div",Et,[a("table",Ot,[a("thead",null,[a("tr",Ft,[t[24]||(t[24]=a("th",{class:"whitespace-nowrap px-4 py-3 text-xs font-semibold uppercase tracking-wider text-primary-700/80 dark:text-primary-300/80"},"No",-1)),t[25]||(t[25]=a("th",{class:"whitespace-nowrap px-4 py-3 text-xs font-semibold uppercase tracking-wider text-primary-700/80 dark:text-primary-300/80"},"Kelas",-1)),(r(!0),n(c,null,f(s(oe),e=>(r(),n("th",{key:e.id,class:"whitespace-nowrap px-4 py-3 text-center text-xs font-semibold uppercase tracking-wider text-primary-700/80 dark:text-primary-300/80"},o(e.name),1))),128))])]),a("tbody",null,[(r(!0),n(c,null,f(s(ie),(e,b)=>(r(),n("tr",{key:e.classId,class:"cursor-pointer border-b border-slate-100 transition-colors last:border-0 hover:bg-primary-50/50 dark:border-slate-800 dark:hover:bg-primary-500/5",onClick:k=>Fe(e)},[a("td",Jt,o(b+1),1),a("td",Ht,o(e.className),1),(r(!0),n(c,null,f(s(oe),k=>(r(),n("td",{key:k.id,class:"px-4 py-2.5 text-center"},o(Ie(e.counts,k.id)),1))),128))],8,Kt))),128))])])]))])):m("",!0),s(p)==="student"?(r(),n("div",zt,[s(ce)?(r(),n("p",Yt,"Memuat...")):s(S).length===0?(r(),n("p",Zt,"Tidak ada siswa aktif di kelas ini.")):(r(),n("div",Gt,[a("table",Wt,[a("thead",null,[a("tr",Qt,[t[26]||(t[26]=a("th",{class:"whitespace-nowrap px-4 py-3 text-xs font-semibold uppercase tracking-wider text-primary-700/80 dark:text-primary-300/80"},"No",-1)),t[27]||(t[27]=a("th",{class:"whitespace-nowrap px-4 py-3 text-xs font-semibold uppercase tracking-wider text-primary-700/80 dark:text-primary-300/80"},"Nama Siswa",-1)),(r(!0),n(c,null,f(s(ue),e=>(r(),n("th",{key:e.id,class:"whitespace-nowrap px-4 py-3 text-center text-xs font-semibold uppercase tracking-wider text-primary-700/80 dark:text-primary-300/80",title:e.requiresEnrollment?"Opsional â centang untuk atur peserta bulan ini":"Wajib semua siswa â status tagihan"},[a("span",ea,[e.requiresEnrollment?(r(),n("input",{key:0,type:"checkbox",checked:Se(e.id),disabled:s(be)===e.id,class:"h-3.5 w-3.5 rounded border-slate-300",title:"Centang/kosongkan semua siswa untuk kolom ini",onChange:b=>Je(e)},null,40,ta)):m("",!0),a("span",null,[_(o(e.name),1),e.requiresEnrollment?(r(),n("span",aa,"*")):m("",!0)])])],8,Xt))),128))])]),a("tbody",null,[(r(!0),n(c,null,f(s(S),(e,b)=>(r(),n("tr",{key:e.studentId,class:"border-b border-slate-100 last:border-0 dark:border-slate-800"},[a("td",sa,o(b+1),1),a("td",la,[a("button",{type:"button",class:"font-medium text-primary-600 hover:underline dark:text-primary-400",onClick:k=>He(e)},o(e.fullName),9,ra),a("span",na," ("+o(e.nisn)+")",1)]),(r(!0),n(c,null,f(s(ue),k=>(r(),n("td",{key:k.id,class:"px-4 py-2.5 text-center"}
1,[k.requiresEnrollment?(r(),n("input",{key:0,type:"checkbox",checked:e.cells[k.id].isParticipant,disabled:s(pe)===`${e.studentId}:${k.id}`,class:"h-4 w-4 rounded border-slate-300",onChange:cs=>Ke(e,k)},null,40,oa)):e.cells[k.id].hasBill?(r(),n("span",{key:1,class:w(["rounded-full px-2 py-0.5 text-xs",M[e.cells[k.id].status??""]])},o(ae[e.cells[k.id].status??""]??e.cells[k.id].status),3)):(r(),n("span",ia,"â"))]))),128))]))),128))])])])),a("p",da," * Jenis biaya opsional â centang untuk menandai siswa ikut biaya ini khusus bulan "+o(s(W))+" (tidak mempengaruhi bulan lain, atur per bulan di sini). ",1)])):m("",!0),s(p)==="detail"?(r(),n("div",ua,[s(xe)?(r(),n("p",ca,"Memuat...")):(r(),n(c,{key:1},[a("div",pa,[t[29]||(t[29]=a("h2",{class:"font-semibold text-slate-800 dark:text-slate-100"},"Riwayat Tagihan â Tahun Ajaran Aktif",-1)),s(me).length===0?(r(),n("p",ma,"Belum ada tagihan.")):(r(),n("div",ya,[a("table",xa,[t[28]||(t[28]=a("thead",null,[a("tr",{class:"border-b border-slate-200 dark:border-slate-800"},[a("th",{class:"px-3 py-1.5 text-xs font-semibold uppercase tracking-wider text-slate-400"},"Jenis Biaya"),a("th",{class:"px-3 py-1.5 text-xs font-semibold uppercase tracking-wider text-slate-400"},"Periode"),a("th",{class:"px-3 py-1.5 text-xs font-semibold uppercase tracking-wider text-slate-400"},"Jatuh Tempo"),a("th",{class:"px-3 py-1.5 text-right text-xs font-semibold uppercase tracking-wider text-slate-400"},"Total"),a("th",{class:"px-3 py-1.5 text-right text-xs font-semibold uppercase tracking-wider text-slate-400"},"Terbayar"),a("th",{class:"px-3 py-1.5 text-xs font-semibold uppercase tracking-wider text-slate-400"},"Status")])],-1)),a("tbody",null,[(r(!0),n(c,null,f(s(me),e=>(r(),n("tr",{key:e.id,class:"border-b border-slate-100 last:border-0 dark:border-slate-800"},[a("td",ka,o(e.fee_type_name),1),a("td",ba,o(e.period_label),1),a("td",va,o($e(e.due_date)),1),a("td",ha,o(s(C)(e.total_amount)),1),a("td",fa,o(s(C)(e.paid_amount)),1),a("td",ga,[a("span",{class:w(["rounded-full px-2 py-0.5 text-xs",M[e.status]])},o(ae[e.status]??e.status),3)])]))),128))])])]))]),a("div",_a,[t[31]||(t[31]=a("h2",{class:"font-semibold text-slate-800 dark:text-slate-100"},"Riwayat Pembayaran",-1)),s(ye).length===0?(r(),n("p",wa,"Belum ada pembayaran.")):(r(),n("div",$a,[a("table",Ca,[t[30]||(t[30]=a("thead",null,[a("tr",{class:"border-b border-slate-200 dark:border-slate-800"},[a("th",{class:"px-3 py-1.5 text-xs font-semibold uppercase tracking-wider text-slate-400"},"Tanggal"),a("th",{class:"px-3 py-1.5 text-xs font-semibold uppercase tracking-wider text-slate-400"},"Metode"),a("th",{class:"px-3 py-1.5 text-right text-xs font-semibold uppercase tracking-wider text-slate-400"},"Nominal"),a("th",{class:"px-3 py-1.5 text-xs font-semibold uppercase tracking-wider text-slate-400"},"Status"),a("th",{class:"px-3 py-1.5 text-xs font-semibold uppercase tracking-wider text-slate-400"},"No. Kwitansi")])],-1)),a("tbody",null,[(r(!0),n(c,null,f(s(ye),e=>(r(),n("tr",{key:e.id,class:"border-b border-slate-100 last:border-0 dark:border-slate-800"},[a("td",Ta,o(Ce(e.paid_at)),1),a("td",Ia,o(fe[e.method]??e.method),1),a("td",Sa,o(s(C)(e.amount)),1),a("td",Ra,[a("span",{class:w(["rounded-full px-2 py-0.5 text-xs",e.status==="verified"?M.paid:e.status==="rejected"?M.cancelled:M.unpaid])},o(e.status==="verified"?"Terverifikasi":e.status==="rejected"?"Ditolak":"Menunggu"),3)]),a("td",Ba,o(e.receipt_number??"-"),1)]))),128))])])]))])],64))])):m("",!0)],64)):m("",!0),s(g)==="bills"&&!s(we)?(r(),ut($,{key:2,columns:ze,rows:s(Re),"search-keys":["student_name","nisn","period_label"],"search-placeholder":"Cari siswa...","empty-text":"Belum ada tagihan."},{filters:T(()=>[O(a("input",{"onUpdate:modelValue":t[5]||(t[5]=e=>F(N)?N.value=e:null),placeholder:"Filter periode (mis. 2026-08)",class:"rounded-lg border border-slate-300 px-2 py-1.5 text-sm dark:border-slate-700 dark:bg-slate-800"},null,512),[[De,s(N)]]),O(a("select",{"onUpdate:modelValue":t[6]||(t[6]=e=>F(U)?U.value=e:null),class:"rounded-lg border border-slate-300 px-2 py-1.5 text-sm dark:border-slate-700 dark:bg-slate-800"},[t[32]||(t[32]=a("option",{value:""},"Semua Kelas",-1)),(r(!0),n(c,null,f(s(_e),e=>(r(),n("option",{key:e.id,value:e.id},o(e.name),9,Pa))),128))],512),[[Le,s(U)]]),O(a("select",{"onUpdate:modelValue":t[7]||(t[7]=e=>F(V)?V.value=e:null),class:"rounded-lg border border-slate-300 px-2 py-1.5 text-sm dark:border-slate-700 dark:bg-slate-800"},[...t[33]||(t[33]=[a("option",{value:""},"Semua Status",-1),a("option",{value:"unpaid"},"Belum Bayar",-1),a("option",{value:"partial"},"Sebagian",-1),a("option",{value:"paid"},"Lunas",-1),a("option",{value:"cancelled"},"Dibatalkan",-1)])],512),[[Le,s(V)]])]),"cell-due_date":T(({row:e})=>[_(o($e(e.due_date)),1)]),"cell-total_amount":T(({row:e})=>[_(o(s(C)(e.total_amount)),1)]),"cell-paid_amount":T(({row:e})=>[_(o(s(C)(e.paid_amount)),1)]),"cell-status":T(({row:e})=>[a("span",{class:w(["rounded-full px-2 py-0.5 text-xs",M[e.status]])},o(ae[e.status]??e.status),3)]),"cell-actions":T(({row:e})=>
1[a("div",Da,[e.status!=="cancelled"?(r(),n("button",{key:0,type:"button",class:"text-xs font-medium text-amber-600 hover:underline",onClick:b=>R.value=e},"Batalkan",8,La)):m("",!0),e.status==="unpaid"&&e.paid_amount==="0.00"?(r(),n("button",{key:1,type:"button",class:"text-xs font-medium text-red-500 hover:underline",onClick:b=>B.value=e},"Hapus",8,Ma)):m("",!0)])]),_:1},8,["rows"])):m("",!0),s(g)==="verify"?(r(),n("div",Na,[a("div",Ua,[(r(),n(c,null,f(["pending","verified","rejected"],e=>a("button",{key:e,type:"button",class:w(["rounded-full px-3 py-1 text-xs font-medium transition-all",s(X)===e?"bg-primary-500 text-white":"bg-slate-100 text-slate-600 dark:bg-slate-800 dark:text-slate-300"]),onClick:b=>X.value=e},o(e==="pending"?"Menunggu":e==="verified"?"Terverifikasi":"Ditolak"),11,Va)),64))]),s(ee)&&s(ve).length===0?(r(),n("p",ja,"Tidak ada pembayaran.")):(r(),n("div",qa,[(r(!0),n(c,null,f(s(ve),e=>(r(),n("div",{key:e.id,class:"rounded-xl border border-slate-200 p-4 dark:border-slate-700"},[a("div",Aa,[a("div",null,[a("p",Ea,o(e.student_name),1),a("p",Oa,o(e.nisn)+" ⢠"+o(e.class_name??"-"),1)]),a("span",Fa,o(fe[e.method]??e.method),1)]),a("p",Ka,o(s(C)(e.amount)),1),a("p",Ja,o(Ce(e.paid_at)),1),e.reference_number?(r(),n("p",Ha,"Ref: "+o(e.reference_number),1)):m("",!0),e.proofDownloadUrl?(r(),n("a",{key:1,href:e.proofDownloadUrl,target:"_blank",class:"mt-2 inline-block text-xs text-primary-600 hover:underline"},"Lihat Bukti Transfer",8,za)):m("",!0),e.rejected_reason?(r(),n("p",Ya,"Ditolak: "+o(e.rejected_reason),1)):m("",!0),e.receipt_number?(r(),n("p",Za,"No. Kwitansi: "+o(e.receipt_number),1)):m("",!0),a("div",Ga,[e.status==="pending"?(r(),n(c,{key:0},[a("button",{type:"button",class:"btn-primary text-xs",onClick:b=>Ge(e)},"Verifikasi",8,Wa),a("button",{type:"button",class:"rounded-lg border border-red-300 px-3 py-1.5 text-xs font-medium text-red-600 hover:bg-red-50",onClick:b=>q.value=e},"Tolak",8,Qa)],64)):e.status==="verified"?(r(),n(c,{key:1},[a("button",{type:"button",class:"rounded-lg border border-slate-300 px-3 py-1.5 text-xs font-medium hover:bg-slate-50 dark:border-slate-700 dark:hover:bg-slate-800",onClick:b=>et(e)},"Unduh Kwitansi",8,Xa),a("button",{type:"button",class:"rounded-lg border border-amber-300 px-3 py-1.5 text-xs font-medium text-amber-600 hover:bg-amber-50",onClick:b=>Xe(e)},"Batalkan Verifikasi",8,es)],64)):m("",!0)])]))),128))]))])):m("",!0),Y(E,{"model-value":s(P)!==null,title:"Verifikasi Pembayaran",subtitle:s(P)?.student_name,"onUpdate:modelValue":t[9]||(t[9]=e=>!e&&(P.value=null))},{default:T(()=>[a("div",ts,[a("p",as,[t[34]||(t[34]=_(" Nominal pembayaran: ",-1)),a("strong",null,o(s(C)(s(P)?.amount)),1),t[35]||(t[35]=_(". Pilih tagihan yang mau dilunasi (kosongkan untuk alokasi otomatis ke tagihan terlama). ",-1))]),s(he).length?(r(),n("div",ss,[(r(!0),n(c,null,f(s(he),e=>(r(),n("label",{key:e.id,class:"flex items-center justify-between gap-2 rounded-lg px-2 py-1.5 text-sm hover:bg-slate-50 dark:hover:bg-slate-800"},[a("span",ls,[O(a("input",{"onUpdate:modelValue":t[8]||(t[8]=b=>F(j)?j.value=b:null),type:"checkbox",value:e.id,class:"h-4 w-4 rounded border-slate-300"},null,8,rs),[[pt,s(j)]]),_(" "+o(e.period_label),1)]),a("span",ns,o(s(C)(Number(e.total_amount)-Number(e.paid_amount))),1)]))),128))])):(r(),n("p",os,"Siswa ini tidak punya tagihan belum lunas â seluruh nominal akan masuk saldo.")),a("button",{type:"button",class:"btn-primary w-full",disabled:s(v),onClick:We},o(s(v)?"Memproses...":"Konfirmasi Verifikasi"),9,is)])]),_:1},8,["model-value","subtitle"]),Y(E,{"model-value":s(q)!==null,title:"Tolak Pembayaran","onUpdate:modelValue":t[11]||(t[11]=e=>!e&&(q.value=null))},{default:T(()=>[a("form",{class:"flex flex-col gap-3",onSubmit:mt(Qe,["prevent"])},[O(a("textarea",{"onUpdate:modelValue":t[10]||(t[10]=e=>F(A)?A.value=e:null),rows:"3",placeholder:"Alasan penolakan",required:"",class:"rounded-lg border border-slate-300 px-3 py-2 text-sm dark:border-slate-700 dark:bg-slate-800"},null,512),[[De,s(A)]]),a("button",{type:"submit",class:"rounded-xl bg-red-500 px-4 py-2 text-sm font-semibold text-white hover:bg-red-600",disabled:s(v)},o(s(v)?"Memproses...":"Tolak Pembayaran"),9,ds)],32)]),_:1},8,["model-value"]),Y(Pe,{"model-value":s(R)!==null,title:"Batalkan Tagihan?",message:`Yakin ingin membatalkan tagihan ${s(R)?.fee_type_name} milik ${s(R)?.student_name}?`,loading:s(v),"onUpdate:modelValue":t[12]||(t[12]=e=>!e&&(R.value=null)),onConfirm:Ye},null,8,["model-value","message","loading"]),Y(Pe,{"model-value":s(B)!==null,title:"Hapus Tagihan?",message:`Yakin ingin menghapus tagihan ${s(B)?.fee_type_name} milik ${s(B)?.student_name}? Hanya bisa dihapus kalau belum ada pembayaran.`,loading:s(v),"onUpdate:modelValue":t[13]||(t[13]=e=>!e&&(B.value=null)),onConfirm:Ze},null,8,["model-value","message","loading"])])}}});
1export{fs as default};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.