PageSourceSearch

https://app.revofield.com/assets/InvoicesView-oSKW5wbC.js

js revofield.com collected 2026-10-01 23:49:53 UTC 26,001 bytes, 1 lines download raw bytes

1import{Q as _e,Y as fe,a as p,o as be,h as c,i as e,t as o,U as t,v,f as u,p as C,e as h,z as se,s as f,P as he,B as O,j as ge,d,A as I,J as ye,F as N,y as H}from"./vendor-vue-Ns5D07Xf.js";import{getInvoices as we,sendInvoice as ae,downloadInvoicePDF as ke}from"./billing-BS1WCkhq.js";import{u as Ce,e as De}from"./index-Ckj6hzUu.js";import{_ as Ie}from"./PaymentCollectionDialog.vue_vue_type_script_setup_true_lang-CrFrHbH6.js";import{u as Se,d as Ee,p as Le,B as Ae,f as _,E as Re,H as $e,o as Ne,F as S,j as Y}from"./vendor-primevue-CDtTrPAe.js";import{C as Ue}from"./CoachMark-kkJ6gfSt.js";import{u as Ve}from"./usePermissions-EAKT_G8F.js";import{_ as Fe}from"./_plugin-vue_export-helper-DlAUqK2U.js";const je={class:"animate-slide-up"},Oe={class:"page-header glass-container mb-6 p-4"},Te={class:"flex flex-wrap items-center justify-between gap-4"},Pe={class:"flex items-center gap-3"},ze={class:"text-2xl font-bold m-0 text-slate-900 dark:text-white"},Be={class:"text-xs text-slate-500 m-0 mt-0.5"},Me={class:"flex items-center gap-3 flex-wrap"},He={class:"w-48 md:w-56"},Ye={class:"relative"},Qe={class:"flex gap-2"},Je={class:"relative"},Ke={class:"grid grid-cols-2 md:grid-cols-4 gap-4 mb-6"},We={class:"stat-card"},qe={class:"stat-value text-indigo-600"},Ge={class:"stat-label"},Xe={class:"stat-value text-emerald-600"},Ze={class:"stat-label"},et={class:"stat-value text-amber-600"},tt={class:"stat-label"},st={class:"stat-value text-red-500"},at={class:"stat-label"},lt={key:0,class:"flex items-center justify-between px-1 mb-3 text-sm text-slate-500"},ot={class:"text-slate-700 dark:text-slate-300"},it={class:"view-card shadow-premium border-none overflow-hidden"},nt={class:"p-2 md:p-4"},dt={class:"font-mono font-semibold text-indigo-600 dark:text-indigo-400 text-sm"},rt={class:"flex items-center gap-3"},ct={class:"w-8 h-8 rounded-full bg-indigo-50 dark:bg-indigo-900/30 flex items-center justify-center text-indigo-600 dark:text-indigo-400 font-bold text-xs border border-indigo-100 dark:border-indigo-800 flex-shrink-0"},ut={class:"flex flex-col min-w-0"},vt={class:"font-semibold text-sm text-slate-800 dark:text-slate-200 truncate"},mt={key:0,class:"text-xs text-slate-400 truncate"},pt={class:"text-sm text-slate-600 dark:text-slate-400"},xt={class:"font-semibold text-slate-800 dark:text-slate-200"},_t={class:"flex flex-col items-center justify-center py-20 text-slate-400"},ft={class:"text-xl font-medium text-slate-600 dark:text-slate-300"},bt={class:"text-sm mb-4"},ht={class:"text-xl font-medium"},gt={class:"flex items-center gap-3 w-full"},yt={class:"flex-1 min-w-0"},wt={class:"flex items-center gap-2"},kt={class:"font-bold text-slate-900 dark:text-white font-mono"},Ct={class:"text-xs text-slate-500 m-0 mt-0.5"},Dt={key:0,class:"flex flex-col gap-5 pb-8"},It={class:"rounded-xl bg-gradient-to-br from-indigo-50 to-indigo-100/50 dark:from-indigo-900/30 dark:to-indigo-900/10 p-5"},St={class:"text-xs text-indigo-500 font-bold uppercase tracking-widest mb-1"},Et={class:"text-4xl font-bold text-indigo-700 dark:text-indigo-300 m-0 font-mono"},Lt={class:"mt-3 pt-3 border-t border-indigo-200/50 dark:border-indigo-700/30 flex items-center justify-between"},At={class:"grid grid-cols-2 gap-3"},Rt={class:"bg-slate-50 dark:bg-slate-800/50 rounded-xl p-3"},$t={class:"text-xs text-slate-400 font-semibold uppercase tracking-wide mb-1"},Nt={class:"font-semibold text-slate-800 dark:text-white m-0 text-sm truncate"},Ut={key:0,class:"text-xs text-slate-400 m-0 mt-0.5 truncate"},Vt={class:"bg-slate-50 dark:bg-slate-800/50 rounded-xl p-3"},Ft={class:"text-xs text-slate-400 font-semibold uppercase tracking-wide mb-1"},jt={class:"flex flex-wrap gap-2"},Ot={key:0,class:"drawer-section"},Tt={class:"section-label"},Pt={class:"flex flex-col gap-1.5"},zt={class:"flex-1 min-w-0"},Bt={class:"m-0 font-medium text-slate-800 dark:text-slate-200 truncate"},Mt={class:"m-0 text-xs text-slate-400 mt-0.5"},Ht={class:"font-bold text-slate-700 dark:text-slate-300 whitespace-nowrap"},Yt={class:"drawer-section"},Qt={class:"section-label"},Jt={class:"flex flex-col gap-1.5"}
1,Kt={class:"flex justify-between text-sm text-slate-600 dark:text-slate-400"},Wt={class:"font-mono"},qt={key:0,class:"flex justify-between text-sm text-red-500"},Gt={class:"font-mono"},Xt={key:1,class:"flex justify-between text-sm text-slate-600 dark:text-slate-400"},Zt={class:"font-mono"},es={class:"flex justify-between text-base font-bold text-slate-900 dark:text-white pt-2 border-t border-slate-200 dark:border-slate-700"},ts={class:"font-mono"},ss={key:1,class:"drawer-section"},as={class:"section-label"},ls={class:"flex flex-col gap-3"},os={class:"flex items-center justify-between p-3 rounded-xl bg-slate-50 dark:bg-slate-800/50"},is={class:"flex items-center gap-2"},ns={class:"m-0 text-sm font-semibold text-slate-800 dark:text-slate-200"},ds={class:"m-0 text-xs text-slate-400"},rs={class:"text-right"},cs={class:"font-bold text-emerald-600 font-mono m-0"},us={key:0,class:"text-xs text-red-500 font-medium m-0 mt-0.5"},vs={key:0,class:"ml-4 mt-1 flex flex-col gap-1"},ms={class:"flex-1 min-w-0 mr-3"},ps={class:"flex items-center gap-1.5 flex-wrap"},xs={class:"text-xs font-semibold text-red-600 dark:text-red-400"},_s={key:0,class:"text-xs text-slate-500 dark:text-slate-400 m-0 mt-1 italic truncate"},fs={class:"text-xs text-slate-400 m-0 mt-0.5"},bs={class:"font-bold text-red-500 font-mono text-sm whitespace-nowrap"},hs={key:0,class:"space-y-4 pt-4"},gs={class:"bg-slate-50 dark:bg-slate-800/50 p-4 rounded-xl border border-slate-100 dark:border-slate-700"},ys={class:"text-sm text-slate-500 mb-1"},ws={class:"font-bold text-slate-800 dark:text-slate-200"},ks={class:"text-sm text-slate-500"},Cs={class:"text-xs text-slate-500"},Ds={class:"flex gap-2"},le="fsm_invoices_view_config",Is=_e({__name:"InvoicesView",setup(Ss){const U=he(),D=Se(),{hasPermission:k}=Ve(),T=Ce(),{t:a}=fe(),E=p([]),A=p(!0),V=p(null),P=p(!1),y=p(""),g=p([]),b=p((()=>{const i=new Date;i.setHours(23,59,59,999);const s=new Date;return s.setDate(s.getDate()-7),s.setHours(0,0,0,0),[s,i]})()),oe=[{label:a("invoices.statusDraft"),value:"DRAFT"},{label:a("invoices.statusSent"),value:"SENT"},{label:a("invoices.statusViewed"),value:"VIEWED"},{label:a("invoices.statusPartiallyPaid"),value:"PARTIALLY_PAID"},{label:a("invoices.statusPaid"),value:"PAID"},{label:a("invoices.statusOverdue"),value:"OVERDUE"},{label:a("invoices.statusCanceled"),value:"CANCELED"},{label:a("invoices.statusRefunded"),value:"REFUNDED"}],z=p(!1),Q=p(null),J=p(""),K=p(""),R=p(!1),w=p(null),B=p(!1),$=p(!1),n=p(null),F=async()=>{A.value=!0;try{const i=await we();E.value=i.map(s=>({...s,status:s.status?s.status.toUpperCase():"DRAFT"}))}catch(i){console.error("Failed to fetch invoices",i)}finally{A.value=!1}},W=O(()=>!!(y.value||g.value.length||!b.value)),M=()=>{y.value="",g.value=[],b.value=null},q=O(()=>{if(!b.value)return E.value;const[i,s]=b.value;if(!i||!s)return E.value;const m=new Date(i);m.setHours(0,0,0,0);const l=new Date(s);return l.setHours(23,59,59,999),E.value.filter(r=>{const L=new Date(r.issue_date);return L.setHours(0,0,0,0),L>=m&&L<=l})}),G=O(()=>{const i=y.value.toLowerCase();return q.value.filter(s=>{const m=!i||(s.invoice_number||"").toLowerCase().includes(i)||(s.customer?.first_name||"").toLowerCase().includes(i)||(s.customer?.last_name||"").toLowerCase().includes(i)||(s.customer?.company_name||"").toLowerCase().includes(i),l=g.value.length===0||g.value.includes(s.status?.toUpperCase());return m&&l})}),j=O(()=>{const i=q.value,s=i.filter(r=>r.status==="PAID").reduce((r,L)=>r+Number(L.total||0),0),m=i.filter(r=>Number(r.balance_due)>0&&r.status!=="CANCELED").reduce((r,L)=>r+Number(L.balance_due),0),l=i.filter(r=>r.status==="OVERDUE").length;return{total:i.length,revenue:s,outstanding:m,overdueCount:l}});be(async()=>{await F();try{const s=await De();J.value=s.stripe_publishable_key,K.value=s.stripe_account_id||""}catch(s){console.error("Failed to load billing config",s)}const i=localStorage.getItem(le);if(i)try{const s=JSON.parse(i);y.value=s.searchQuery||"",g.value=s.selectedStatuses||[],s.dateRange===null?b.value=null:Array.isArray(s.dateRange)&&s.dateRange.length===2&&(b.value=[new Date(s.dateRange[0]),new Date(s.dateRange[1])])}catch{}});const ie=()=>{localStorage.setItem(le,JSON.stringify({searchQuery:y.value,selectedStatuses:g.value,dateRange:b.value?[b.value[0]?.toISOString(),b.value[1]?.toISOString()]:null})),D.add({severity:"success",summary:a("invoices.viewSaved"),detail:a("invoices.filtersSaved"),life:3e3})},ne=i=>{n.value=i,$.value=!0},de=()=>"cursor-pointer hover:bg-indigo-50/50 dark:hover:bg-indigo-900/10 transition-colors",re=i=>ne(i.data),X=i=>{Q.value=i,z.value=!0},ce=async()=>{await F(),$.value=!1},ue=i=>{w.value=i,R.value=!0},ve=async()=>
1{if(w.value){B.value=!0;try{await ae(w.value.id,"email"),R.value=!1;const i=w.value.customer?.email||"the customer";D.add({severity:"success",summary:a("invoices.invoiceSent"),detail:a("invoices.paymentLinkSent",{email:i}),life:4e3}),await F()}catch(i){const s=i?.response?.data?.detail||a("invoices.failedSave");D.add({severity:"error",summary:a("common.error"),detail:s,life:3e3})}finally{B.value=!1}}},me=async i=>{if(!i?.customer?.email){D.add({severity:"warn",summary:a("invoices.noEmail"),detail:a("invoices.customerNoEmail"),life:3e3});return}P.value=!0;try{await ae(i.id,"email"),D.add({severity:"success",summary:a("common.sent"),detail:a("invoices.sentToEmail",{email:i.customer.email}),life:3e3}),await F()}catch(s){const m=s?.response?.data?.detail||a("invoices.failedSave");D.add({severity:"error",summary:a("common.error"),detail:m,life:3e3})}finally{P.value=!1}},Z=async i=>{V.value=i.id;try{const s=await ke(i.id),m=window.URL.createObjectURL(new Blob([s])),l=document.createElement("a");l.href=m,l.setAttribute("download",`invoice_${i.invoice_number}.pdf`),document.body.appendChild(l),l.click(),document.body.removeChild(l),window.URL.revokeObjectURL(m),D.add({severity:"success",summary:a("invoices.downloaded"),detail:a("invoices.invoiceDownloaded",{number:i.invoice_number}),life:3e3})}catch{D.add({severity:"error",summary:a("common.error"),detail:a("invoices.failedDownloadPdf"),life:3e3})}finally{V.value=null}},ee=i=>{switch(i?.toLowerCase()){case"paid":return"success";case"partially_paid":return"warning";case"sent":case"viewed":return"info";case"overdue":return"danger";case"refunded":return"secondary";case"canceled":return"secondary";default:return"secondary"}},x=i=>new Intl.NumberFormat("en-US",{style:"currency",currency:"USD"}).format(i),pe=i=>i.customer&&((i.customer.first_name?.[0]||"")+(i.customer.last_name?.[0]||"")).toUpperCase()||"?",te=i=>i.customer?i.customer.company_name||`${i.customer.first_name} ${i.customer.last_name}`:"Unknown",xe=i=>({card:a("payments.methodCard"),ach:a("payments.methodAch"),cash:a("payments.methodCash"),check:a("payments.methodCheck"),paypal:"PayPal",other:a("payments.methodOther")})[i?.toLowerCase()]??(i||"—");return(i,s)=>{const m=ge("tooltip");return d(),c("div",je,[e("div",Oe,[e("div",Te,[e("div",Pe,[s[18]||(s[18]=e("div",{class:"w-10 h-10 rounded-xl bg-primary flex items-center justify-center text-white shadow-lg shadow-indigo-500/20"},[e("i",{class:"pi pi-file-edit text-xl"})],-1)),e("div",null,[e("h1",ze,o(t(a)("common.invoices")),1),e("p",Be,o(t(a)("invoices.subtitle")),1)])]),e("div",Me,[e("div",He,[v(t(Ee),{modelValue:y.value,"onUpdate:modelValue":s[0]||(s[0]=l=>y.value=l),placeholder:t(a)("invoices.searchPlaceholder"),class:"w-full bg-slate-50 dark:bg-slate-900/50 border-none shadow-sm h-10"},null,8,["modelValue","placeholder"])]),e("div",Ye,[v(t(Le),{selectOtherMonths:"",modelValue:b.value,"onUpdate:modelValue":s[1]||(s[1]=l=>b.value=l),selectionMode:"range",manualInput:!1,showIcon:"",iconDisplay:"input",dateFormat:"M dd",placeholder:t(a)("invoices.allDates"),class:"w-56 h-10"},null,8,["modelValue","placeholder"]),b.value?(d(),c("button",{key:0,type:"button",class:"absolute right-8 top-1/2 -translate-y-1/2 text-slate-400 hover:text-slate-600 dark:hover:text-slate-300 z-10",onClick:s[2]||(s[2]=l=>b.value=null)},[...s[19]||(s[19]=[e("i",{class:"pi pi-times text-xs"},null,-1)])])):u("",!0)]),v(t(Ae),{modelValue:g.value,"onUpdate:modelValue":s[3]||(s[3]=l=>g.value=l),options:oe,optionLabel:"label",optionValue:"value",placeholder:t(a)("common.status"),class:"w-36 h-10"},null,8,["modelValue","placeholder"]),e("div",Qe,[W.value?C((d(),h(t(_),{key:0,icon:"pi pi-times",text:"",rounded:"",severity:"danger",onClick:M,class:"h-10 w-10"},null,512)),[[m,t(a)("common.clearFilters"),void 0,{top:!0}]]):u("",!0),C(v(t(_),{icon:"pi pi-bookmark",text:"",rounded:"",severity:"secondary",class:"h-10 w-10",onClick:ie},null,512),[[m,t(a)("invoices.saveCurrentView"),void 0,{top:!0}]]),e("div",Je,[t(k)("invoice.create")?(d(),h(t(_),{key:0,label:t(a)("invoices.newInvoice"),icon:"pi pi-plus",severity:"primary",onClick:s[4]||(s[4]=l=>t(U).push("/invoices/new")),class:"shadow-lg h-10 whitespace-nowrap"},null,8,["label"])):u("",!0),v(Ue,{id:"invoices-empty",arrow:"up",show:t(k)("invoice.create")&&!A.value&&E.value.length===0,text:"👋 Create your first invoice to get paid."},null,8,["show"])])])])])]),e("div",Ke,[e("div",We,[s[20]||(s[20]=e("div",{class:"stat-icon bg-indigo-50 dark:bg-indigo-900/30 text-indigo-600"},[e("i",{class:"pi pi-file-edit text-lg"})],-1)),e("div",null,[e("p",qe,o(j.value.total),1),e("p",Ge,o(t(a)("invoices.totalInvoices")),1)])]),C((d(),c("div",{class:"stat-card cursor-pointer hover:shadow-md transition-all",onClick:s[5
1]||(s[5]=l=>{g.value=["PAID"],y.value=""})},[s[21]||(s[21]=e("div",{class:"stat-icon bg-emerald-50 dark:bg-emerald-900/30 text-emerald-600"},[e("i",{class:"pi pi-dollar text-lg"})],-1)),e("div",null,[e("p",Xe,o(x(j.value.revenue)),1),e("p",Ze,o(t(a)("invoices.totalRevenue")),1)])])),[[m,t(a)("invoices.showPaid"),void 0,{bottom:!0}]]),C((d(),c("div",{class:"stat-card cursor-pointer hover:shadow-md transition-all",onClick:s[6]||(s[6]=l=>{g.value=["DRAFT","SENT","VIEWED","PARTIALLY_PAID","OVERDUE"],y.value=""})},[s[22]||(s[22]=e("div",{class:"stat-icon bg-amber-50 dark:bg-amber-900/30 text-amber-600"},[e("i",{class:"pi pi-clock text-lg"})],-1)),e("div",null,[e("p",et,o(x(j.value.outstanding)),1),e("p",tt,o(t(a)("invoices.outstanding")),1)])])),[[m,t(a)("invoices.showUnpaid"),void 0,{bottom:!0}]]),C((d(),c("div",{class:"stat-card cursor-pointer hover:shadow-md transition-all",onClick:s[7]||(s[7]=l=>{g.value=["OVERDUE"],y.value=""})},[s[23]||(s[23]=e("div",{class:"stat-icon bg-red-50 dark:bg-red-900/30 text-red-500"},[e("i",{class:"pi pi-exclamation-circle text-lg"})],-1)),e("div",null,[e("p",st,o(j.value.overdueCount),1),e("p",at,o(t(a)("invoices.overdue")),1)])])),[[m,t(a)("invoices.showOverdue"),void 0,{bottom:!0}]])]),W.value?(d(),c("div",lt,[e("span",null,[se(o(t(a)("common.showing"))+" ",1),e("strong",ot,o(G.value.length),1),se(" "+o(t(a)("common.of"))+" "+o(E.value.length)+" "+o(t(a)("common.invoices").toLowerCase()),1)]),e("button",{class:"text-indigo-500 hover:text-indigo-700 font-medium transition-colors",onClick:M},o(t(a)("common.clearFilters")),1)])):u("",!0),e("div",it,[e("div",nt,[v(t(Re),{value:G.value,loading:A.value,paginator:"",rows:10,stripedRows:"",tableStyle:"min-width: 50rem",class:"p-datatable-sm custom-table",removableSort:"",rowClass:de,onRowClick:re},{empty:f(()=>[e("div",_t,[E.value.length===0&&!A.value?(d(),c(N,{key:0},[s[24]||(s[24]=e("i",{class:"pi pi-file-edit text-6xl mb-4 opacity-20"},null,-1)),e("p",ft,o(t(a)("invoices.noInvoicesYet")),1),e("p",bt,o(t(a)("invoices.createFirstInvoice")),1),t(k)("invoice.create")?(d(),h(t(_),{key:0,label:t(a)("invoices.newInvoice"),icon:"pi pi-plus",severity:"primary",onClick:s[9]||(s[9]=l=>t(U).push("/invoices/new"))},null,8,["label"])):u("",!0)],64)):(d(),c(N,{key:1},[s[25]||(s[25]=e("i",{class:"pi pi-search text-6xl mb-4 opacity-20"},null,-1)),e("p",ht,o(t(a)("invoices.noInvoicesMatch")),1),v(t(_),{label:t(a)("invoices.clearFilters"),text:"",class:"mt-2",onClick:M},null,8,["label"])],64))])]),default:f(()=>[v(t(S),{field:"invoice_number",header:t(a)("invoices.number"),sortable:"",style:{width:"140px"}},{body:f(l=>[e("span",dt,o(l.data.invoice_number),1)]),_:1},8,["header"]),v(t(S),{field:"customer",header:t(a)("common.customer"),sortable:""},{body:f(l=>[e("div",rt,[e("div",ct,o(pe(l.data)),1),e("div",ut,[e("span",vt,o(te(l.data)),1),l.data.customer?.email?(d(),c("span",mt,o(l.data.customer.email),1)):u("",!0)])])]),_:1},8,["header"]),v(t(S),{field:"issue_date",header:t(a)("invoices.date"),sortable:"",style:{width:"110px"}},{body:f(l=>[e("span",pt,o(new Date(l.data.issue_date).toLocaleDateString()),1)]),_:1},8,["header"]),v(t(S),{field:"due_date",header:t(a)("invoices.dueDate"),sortable:"",style:{width:"110px"}},{body:f(l=>[e("span",{class:I(["text-sm",l.data.balance_due>0&&new Date(l.data.due_date)<new Date?"text-red-500 font-semibold":"text-slate-600 dark:text-slate-400"])},o(new Date(l.data.due_date).toLocaleDateString()),3)]),_:1},8,["header"]),v(t(S),{field:"total",header:t(a)("common.amount"),sortable:"",style:{width:"120px"}},{body:f(l=>[e("span",xt,o(x(l.data.total)),1)]),_:1},8,["header"]),v(t(S),{field:"balance_due",header:t(a)("invoices.balance"),sortable:"",style:{width:"120px"}},{body:f(l=>[e("span",{class:I(["font-semibold",l.data.balance_due>0?"text-red-500":"text-emerald-600"])},o(x(l.data.balance_due)),3)]),_:1},8,["header"]),v(t(S),{field:"status",header:t(a)("common.status"),sortable:"",style:{width:"140px"}},{body:f(l=>[l.data.status?(d(),h(t(Y),{key:0,value:l.data.status.replace("_"," "),severity:ee(l.data.status),rounded:"",class:"text-xs font-semibold"},null,8,["value","severity"])):(d(),h(t(Y),{key:1,value:"UNKNOWN",severity:"secondary",rounded:""}))]),_:1},8,["header"]),v(t(S),{header:t(a)("common.actions"),style:{width:"140px"}},{body:f(l=>[e("div",{class:"flex justify-end gap-1",onClick:s[8]||(s[8]=ye(()=>{},["stop"]))},[t(k)("invoice.update")&&l.data.status!=="CANCELED"?C((d(),h(t(_),{key:0,icon:"pi pi-pencil",text:"",rounded:"",severity:"secondary",size:"small",onClick:r=>t(U).push(`/invoices/${l.data.id}`)},null,8,["onClick"])),[[m,t(a)("common.edit"),void 0,{top:!0}]]):u("",!0),l.data.balance_due>0&&t(k)("invoice.send")&&l.data.status!=="CANCELED"?C((d(),h(t(_),{key:1,icon:"pi pi-dollar",text:"",rounded:"",severity:"success",size:"small",onClick:r=>X(l.data)},null,8,["onClick"])),[[m,t(a)("invoices.collectPayment"),void 0,{top:!0}]]):u("",!0),C(v(t(_),{icon:"pi pi-file-pdf",text:"",rounded:"",severity:"danger",size:"small",loading:V.value===l.data.id,onClick:r=>Z(l.data)},null,8,["loading","onClick"]),[[m,t(a)("invoices.downloadPdf"),void 0,{top:!0}]]),t(k)("invoice.send")&&!["PAID","CANCELED"].includes(l.data.status)?C((d(),h(t(_),{key:2,icon:"pi pi-send",text:"",rounded:"",severity:"info",size:"small",onClick:r=>ue(l.data)},null,8,["onClick"])),[[m,t(a)("invoices.sendInvoice"),void 0,{top:!0}]]):u("",!0)])]),_:1},8,["header"])]),_:1},8,["value","loading"])])]),v(t($e),{visible:$.value,"onUpdate:visible":s[14]||(s[14]=l=>$.value=l),position:"right",style:{width:"460px"},pt:{mask:{style:"backdrop-filter: blur(2px)"}}},{header:f(()=>
1[e("div",gt,[s[26]||(s[26]=e("div",{class:"w-9 h-9 rounded-xl bg-indigo-50 dark:bg-indigo-900/40 flex items-center justify-center flex-shrink-0"},[e("i",{class:"pi pi-file-edit text-indigo-500"})],-1)),e("div",yt,[e("div",wt,[e("span",kt,o(n.value?.invoice_number),1),n.value?.status?(d(),h(t(Y),{key:0,value:n.value.status.replace("_"," "),severity:ee(n.value.status),rounded:"",class:"text-xs"},null,8,["value","severity"])):u("",!0)]),e("p",Ct,o(n.value?new Date(n.value.issue_date).toLocaleDateString("en-US",{year:"numeric",month:"long",day:"numeric"}):""),1)])])]),default:f(()=>[n.value?(d(),c("div",Dt,[e("div",It,[e("p",St,o(t(a)("invoices.invoiceTotal")),1),e("p",Et,o(x(n.value.total)),1),e("div",Lt,[e("span",{class:I(["text-xs font-bold uppercase tracking-wide",(n.value.balance_due||0)>0?"text-red-500":"text-emerald-600"])},o(t(a)("invoices.balanceDue")),3),e("span",{class:I(["font-bold text-lg font-mono",(n.value.balance_due||0)>0?"text-red-500":"text-emerald-600"])},o(x(n.value.balance_due||0)),3)])]),e("div",At,[e("div",Rt,[e("p",$t,o(t(a)("common.customer")),1),e("p",Nt,o(te(n.value)),1),n.value.customer?.email?(d(),c("p",Ut,o(n.value.customer.email),1)):u("",!0)]),e("div",Vt,[e("p",Ft,o(t(a)("invoices.dueDate")),1),e("p",{class:I(["font-semibold m-0 text-sm",(n.value.balance_due||0)>0&&new Date(n.value.due_date)<new Date?"text-red-500":"text-slate-800 dark:text-white"])},o(new Date(n.value.due_date).toLocaleDateString()),3)])]),e("div",jt,[t(k)("invoice.update")&&n.value.status!=="CANCELED"?(d(),h(t(_),{key:0,label:t(a)("common.edit"),icon:"pi pi-pencil",size:"small",severity:"secondary",onClick:s[10]||(s[10]=l=>{t(U).push(`/invoices/${n.value.id}`),$.value=!1})},null,8,["label"])):u("",!0),n.value.balance_due>0&&t(k)("invoice.send")&&n.value.status!=="CANCELED"?(d(),h(t(_),{key:1,label:t(a)("invoices.collectPayment"),icon:"pi pi-dollar",size:"small",severity:"success",onClick:s[11]||(s[11]=l=>X(n.value))},null,8,["label"])):u("",!0),t(k)("invoice.send")&&!["PAID","CANCELED"].includes(n.value.status)?(d(),h(t(_),{key:2,label:t(a)("invoices.send"),icon:"pi pi-send",size:"small",severity:"info",loading:P.value,onClick:s[12]||(s[12]=l=>me(n.value))},null,8,["label","loading"])):u("",!0),v(t(_),{label:"PDF",icon:"pi pi-file-pdf",size:"small",severity:"danger",outlined:"",loading:V.value===n.value.id,onClick:s[13]||(s[13]=l=>Z(n.value))},null,8,["loading"])]),n.value.line_items?.length?(d(),c("div",Ot,[e("p",Tt,o(t(a)("common.lineItems")),1),e("div",Pt,[(d(!0),c(N,null,H(n.value.line_items,(l,r)=>(d(),c("div",{key:r,class:"flex items-start justify-between gap-2 text-sm py-2 border-b border-slate-100 dark:border-slate-800 last:border-0"},[e("div",zt,[e("p",Bt,o(l.description),1),e("p",Mt,o(l.quantity)+" × "+o(x(l.unit_price)),1)]),e("span",Ht,o(x(l.line_total||0)),1)]))),128))])])):u("",!0),e("div",Yt,[e("p",Qt,o(t(a)("invoices.summary")),1),e("div",Jt,[e("div",Kt,[e("span",null,o(t(a)("common.subtotal")),1),e("span",Wt,o(x(n.value.subtotal||0)),1)]),(n.value.discount_total||0)>0?(d(),c("div",qt,[e("span",null,o(t(a)("common.discount")),1),e("span",Gt,"– "+o(x(n.value.discount_total||0)),1)])):u("",!0),(n.value.tax_total||0)>0?(d(),c("div",Xt,[e("span",null,o(t(a)("common.tax")),1),e("span",Zt,o(x(n.value.tax_total||0)),1)])):u("",!0),e("div",es,[e("span",null,o(t(a)("common.total")),1),e("span",ts,o(x(n.value.total||0)),1)])])]),n.value.payments?.length?(d(),c("div",ss,[e("p",as,o(t(a)("invoices.payments")),1),e("div",ls,[(d(!0),c(N,null,H(n.value.payments,l=>(d(),c("div",{key:l.id},[e("div",os,[e("div",is,[e("div",{class:I(["w-7 h-7 rounded-lg flex items-center justify-center flex-shrink-0",(l.amount_refunded??0)>=l.amount?"bg-red-100 dark:bg-red-900/30":(l.amount_refunded??0)>0?"bg-amber-100 dark:bg-amber-900/30":"bg-emerald-100 dark:bg-emerald-900/30"])},[e("i",{class:I(["text-xs",(l.amount_refunded??0)>=l.amount?"pi pi-replay text-red-500":(l.amount_refunded??0)>0?"pi pi-replay text-amber-500":"pi pi-check text-emerald-600"])},null,2)],2),e("div",null,[e("p",ns,o(xe(l.payment_method)),1),e("p",ds,o(new Date(l.processed_at).toLocaleDateString()),1)])]),e("div",rs,[e("p",cs," +"+o(x(l.amount)),1),(l.amount_refunded??0)>0?(d(),c("p",us," –"+o(x(l.amount_refunded??0))+" "+o(t(a)("invoices.refunded")),1)):u("",!0)])]),l.refunds?.length?(d(),c("div",vs,[(d(!0),c(N,null,H(l.refunds,r=>(d(),c("div",{key:r.id,class:"flex items-start justify-between px-3 py-2 rounded-lg bg-red-50/60 dark:bg-red-900/10 border border-red-100 dark:border-red-800/30"},[e("div",ms,[e("div",ps,[s[27]||(s[27]=e("i",{class:"pi pi-replay text-red-400 text-xs"},null,-1)),e("span",xs,o(t(a)("invoices.refund")),1),e("span",{class:I(["text-[9px] font-bold px-1.5 py-0.5 rounded-full",r.gateway_sync_status==="synced"?"bg-emerald-100 dark:bg-emerald-900/30 text-emerald-700 dark:text-emerald-400":r.gateway_sync_status==="failed"?"bg-red-100 dark:bg-red-900/30 text-red-700 dark:text-red-400":"bg-amber-100 dar
1k:bg-amber-900/30 text-amber-700 dark:text-amber-400"])},o(r.gateway_sync_status==="synced"?t(a)("invoices.processed"):r.gateway_sync_status==="failed"?t(a)("common.failed"):t(a)("invoices.manual")),3)]),r.reason?(d(),c("p",_s,' "'+o(r.reason)+'" ',1)):u("",!0),e("p",fs,o(r.created_at?new Date(r.created_at).toLocaleDateString():"—"),1)]),e("span",bs," –"+o(x(r.amount)),1)]))),128))])):u("",!0)]))),128))])])):u("",!0)])):u("",!0)]),_:1},8,["visible"]),v(Ie,{visible:z.value,"onUpdate:visible":s[15]||(s[15]=l=>z.value=l),invoice:Q.value,"stripe-publishable-key":J.value,"stripe-account-id":K.value,"accept-cash":t(T).tenant?.mobile_allow_cash_collection!==!1,"accept-credit-card":t(T).tenant?.payments_accept_credit_card!==!1,"accept-bank-transfer":t(T).tenant?.payments_accept_bank_transfer!==!1,onPaymentSuccess:ce},null,8,["visible","invoice","stripe-publishable-key","stripe-account-id","accept-cash","accept-credit-card","accept-bank-transfer"]),v(t(Ne),{visible:R.value,"onUpdate:visible":s[17]||(s[17]=l=>R.value=l),header:t(a)("invoices.sendInvoice"),modal:!0,class:"p-fluid w-full max-w-sm"},{footer:f(()=>[e("div",Ds,[v(t(_),{label:t(a)("common.cancel"),text:"",onClick:s[16]||(s[16]=l=>R.value=!1),class:"w-full"},null,8,["label"]),v(t(_),{label:t(a)("invoices.send"),icon:"pi pi-send",loading:B.value,disabled:!w.value?.customer?.email,onClick:ve,class:"w-full"},null,8,["label","loading","disabled"])])]),default:f(()=>[w.value?(d(),c("div",hs,[e("div",gs,[e("p",ys,o(t(a)("invoices.paymentLinkSentTo")),1),e("p",ws,o(w.value.customer?.first_name)+" "+o(w.value.customer?.last_name),1),e("p",ks,o(w.value.customer?.email||t(a)("invoices.customerNoEmail")),1)]),e("p",Cs,o(t(a)("invoices.customerReceiveLink",{number:w.value.invoice_number})),1)])):u("",!0)]),_:1},8,["visible","header"])])}}}),js=Fe(Is,[["__scopeId","data-v-69976587"]]);export{js 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.