1import{_ as Z}from"./BmJPZ_Bp.js";import{_ as ee}from"./CNzqBcff.js";import{_ as ae}from"./CfFb-8ky.js";import{e as te,f as se,h as le,i as ne,j as oe,c as y,a as t,k as l,t as p,l as M,D as re,w as v,b as C,p as N,q as i,s as ie,o as b,x as D,d as E,z as j,n as d,F as P,r as q,y as T,v as w,A as de,B as R}from"./BnI3597d.js";import{u as ue}from"./4bw899IF.js";import{u as pe}from"./DqYlBbyW.js";const me={class:"animate-fade-in space-y-4"},ce={key:0,class:"text-sm text-red-600"},ve={class:"flex justify-end gap-3 whitespace-nowrap"},be=["onClick"],fe=["onClick"],ye=["value"],ke=["value"],ge={class:"grid grid-cols-2 gap-3"},xe=["max"],_e={class:"grid grid-cols-2 gap-3"},he=["max"],Te={class:"flex items-center gap-2 text-sm text-slate-600 dark:text-slate-300"},Ue=te({__name:"keringanan",setup(we){const{token:K,user:_,apiFetch:m,fetchMe:F}=se(),{activeSchoolId:u}=ue(),{formatRupiah:H}=pe(),L=le(),I=i([]),S=i([]),U=i([]),B=i(!0),r=i(""),k=i(!1),n=R({studentId:"",feeTypeId:"",kind:"percent",value:0,reason:""}),f=i(null),o=R({kind:"percent",value:0,reason:"",isActive:!0}),V=ie({get:()=>f.value!==null,set:s=>{s||(f.value=null)}}),c=i(null),A=i(!1),O=[{key:"student_name",label:"Siswa"},{key:"fee_type_name",label:"Jenis Biaya"},{key:"value",label:"Nilai"},{key:"reason",label:"Alasan"},{key:"is_active",label:"Status"},{key:"actions",label:"",align:"right"}];function g(s){const e=s;return e?.data?.error?.message??e?.message??"Terjadi kesalahan, silakan coba lagi"}async function x(){const s=`/schools/${u.value}`,[e,$,h]=await Promise.all([m(`${s}/students`),m(`${s}/fee-types`),m(`${s}/fee-discounts`)]);I.value=e.students,S.value=$.feeTypes,U.value=h.discounts}async function z(){r.value="";try{await m(`/schools/${u.value}/fee-discounts`,{method:"POST",body:{...n,feeTypeId:n.feeTypeId||null}}),Object.assign(n,{studentId:"",feeTypeId:"",kind:"percent",value:0,reason:""}),k.value=!1,await x()}catch(s){r.value=g(s)}}function Y(s){f.value=s,Object.assign(o,{kind:s.kind,value:Number(s.value),reason:s.reason,isActive:s.is_active})}async function G(){if(f.value){r.value="";try{await m(`/schools/${u.value}/fee-discounts/${f.value.id}`,{method:"PATCH",body:{...o}}),f.value=null,await x()}catch(s){r.value=g(s)}}}async function J(){if(c.value){A.value=!0;try{await m(`/schools/${u.value}/fee-discounts/${c.value.id}`,{method:"DELETE"}),c.value=null,await x()}catch(s){r.value=g(s)}finally{A.value=!1}}}function Q(s){return s.kind==="percent"?`${Number(s.value)}%`:H(s.value)}return ne(u,()=>x().catch(s=>r.value=g(s))),oe(async()=>{if(!K.value)return L.push("/login");try{if(_.value||await F(),_.value?.userType==="employee")u.value=_.value.schoolId??"";else if(_.value?.userType==="customer"){const s=await m("/auth/my-schools");s.schools.some(e=>e.id===u.value)||(u.value=s.schools[0]?.id??"")}await x()}catch(s){r.value=g(s)}finally{B.value=!1}}),(s,e)=>{const $=Z,h=ee,W=ae;return b(),y("div",me,[e[20]||(e[20]=t("div",{class:"card"},[t("div",null,[t("h1",{class:"text-xl font-bold text-slate-900 dark:text-slate-50"},"Keringanan Biaya"),t("p",{class:"mt-1 text-sm text-slate-500 dark:text-slate-400"},"Diskon/beasiswa per siswa â anak guru, saudara kandung, atau beasiswa lainnya.")])],-1)),l(r)?(b(),y("p",ce,p(l(r)),1)):M("",!0),l(B)?M("",!0):(b(),re
1($,{key:1,columns:O,rows:l(U),"search-keys":["student_name","nisn","reason"],"search-placeholder":"Cari siswa atau alasan...","empty-text":"Belum ada keringanan biaya."},{actions:v(()=>[t("button",{type:"button",class:"btn-primary btn-shine text-sm",onClick:e[0]||(e[0]=a=>k.value=!0)},"+ Tambah Keringanan")]),"cell-fee_type_name":v(({row:a})=>[t("span",{class:D(a.fee_type_name?"":"text-slate-400")},p(a.fee_type_name??"Semua jenis biaya"),3)]),"cell-value":v(({row:a})=>[E(p(Q(a)),1)]),"cell-is_active":v(({row:a})=>[t("span",{class:D(["rounded-full px-2 py-0.5 text-xs",a.is_active?"bg-green-100 text-green-700 dark:bg-green-500/10 dark:text-green-400":"bg-slate-100 text-slate-500 dark:bg-slate-800"])},p(a.is_active?"Aktif":"Nonaktif"),3)]),"cell-actions":v(({row:a})=>[t("div",ve,[t("button",{type:"button",class:"text-xs font-medium text-primary-600 hover:underline",onClick:X=>Y(a)},"Edit",8,be),t("button",{type:"button",class:"text-xs font-medium text-red-500 hover:underline",onClick:X=>c.value=a},"Hapus",8,fe)])]),_:1},8,["rows"])),C(h,{modelValue:l(k),"onUpdate:modelValue":e[6]||(e[6]=a=>N(k)?k.value=a:null),title:"Tambah Keringanan Biaya"},{default:v(()=>[t("form",{class:"flex flex-col gap-3",onSubmit:j(z,["prevent"])},[d(t("select",{"onUpdate:modelValue":e[1]||(e[1]=a=>l(n).studentId=a),required:"",class:"rounded-lg border border-slate-300 px-3 py-2 text-sm dark:border-slate-700 dark:bg-slate-800"},[e[13]||(e[13]=t("option",{value:"",disabled:""},"Pilih siswa",-1)),(b(!0),y(P,null,q(l(I),a=>(b(),y("option",{key:a.id,value:a.id},p(a.full_name)+" ("+p(a.nisn)+")"+p(a.class_name?` â ${a.class_name}`:""),9,ye))),128))],512),[[T,l(n).studentId]]),d(t("select",{"onUpdate:modelValue":e[2]||(e[2]=a=>l(n).feeTypeId=a),class:"rounded-lg border border-slate-300 px-3 py-2 text-sm dark:border-slate-700 dark:bg-slate-800"},[e[14]||(e[14]=t("option",{value:""},"Semua jenis biaya",-1)),(b(!0),y(P,null,q(l(S),a=>(b(),y("option",{key:a.id,value:a.id},p(a.name),9,ke))),128))],512),[[T,l(n).feeTypeId]]),t("div",ge,[d(t("select",{"onUpdate:modelValue":e[3]||(e[3]=a=>l(n).kind=a),class:"rounded-lg border border-slate-300 px-3 py-2 text-sm dark:border-slate-700 dark:bg-slate-800"},[...e[15]||(e[15]=[t("option",{value:"percent"},"Persen (%)",-1),t("option",{value:"nominal"},"Nominal (Rp)",-1)])],512),[[T,l(n).kind]]),d(t("input",{"onUpdate:modelValue":e[4]||(e[4]=a=>l(n).value=a),type:"number",min:"0",max:l(n).kind==="percent"?100:void 0,required:"",class:"rounded-lg border border-slate-300 px-3 py-2 text-sm dark:border-slate-700 dark:bg-slate-800"},null,8,xe),[[w,l(n).value,void 0,{number:!0}]])]),d(t("input",{"onUpdate:modelValue":e[5]||(e[5]=a=>l(n).reason=a),placeholder:"Alasan (mis. Anak Guru, Beasiswa Yatim)",required:"",class:"rounded-lg border border-slate-300 px-3 py-2 text-sm dark:border-slate-700 dark:bg-slate-800"},null,512),[[w,l(n).reason]]),e[16]||(e[16]=t("button",{type:"submit",class:"btn-primary"},"Tambah",-1))],32)]),_:1},8,["modelValue"]),C(h,{modelValue:l(V),"onUpdate:modelValue":e[11]||(e[11]=a=>N(V)?V.value=a:null),title:"Edit Keringanan Biaya"},{default:v(()=>[t("form",{class:"flex flex-col gap-3",onSubmit:j(G,["prevent"])},[t("div",_e,[d(t("select",{"onUpdate:modelValue":e[7]||(e[7]=a=>l(o).kind=a),class:"rounded-lg border border-slate-300 px-3 py-2 text-sm dark:border-slate-700 dark:bg-slate-800"},[...e[17]||(e[17]=[t("option",{value:"percent"},"Persen (%)",-1),t("option",{value:"nominal"},"Nominal (Rp)",-1)])],512),[[T,l(o).kind]]),d(t("input",{"onUpdate:modelValue":e[8]||(e[8]=a=>l(o).value=a),type:"number",min:"0",max:l(o).kind==="percent"?100:void 0,required:"",class:"rounded-lg border border-slate-300 px-3 py-2 text-sm dark:border-slate-700 dark:bg-slate-800"},null,8,he),[[w,l(o).value,void 0,{number:!0}]])]),d(t("input",{"onUpdate:modelValue":e[9]||(e[9]=a=>l(o).reason=a),placeholder:"Alasan",required:"",class:"rounded-lg border border-slate-300 px-3 py-2 text-sm dark:border-slate-700 dark:bg-slate-800"},null,512),[[w,l(o).reason]]),t("label",Te,[d(t("input",{"onUpdate:modelValue":e[10]||(e[10]=a=>
1l(o).isActive=a),type:"checkbox",class:"h-4 w-4 rounded border-slate-300"},null,512),[[de,l(o).isActive]]),e[18]||(e[18]=E(" Aktif ",-1))]),e[19]||(e[19]=t("button",{type:"submit",class:"btn-primary"},"Simpan Perubahan",-1))],32)]),_:1},8,["modelValue"]),C(W,{"model-value":l(c)!==null,title:"Hapus Keringanan?",message:`Yakin ingin menghapus keringanan untuk ${l(c)?.student_name}?`,loading:l(A),"onUpdate:modelValue":e[12]||(e[12]=a=>!a&&(c.value=null)),onConfirm:J},null,8,["model-value","message","loading"])])}}});export{Ue 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.