const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/ReceivedInvoices-Lo0YqDmF.js","assets/vendor-animation-0s3FMHwK.js","assets/vendor-react-BVs3cwbi.js","assets/index-Bay45BGf.js","assets/vendor-utils-Dyr8OjFr.js","assets/index-S7b0Xjr1.css","assets/useListData-CvOpK9He.js"])))=>i.map(i=>d[i]); import{a as Ne,u as be,c as C,d as Q,e as _,g as O,C as we,_ as Se}from"./index-Bay45BGf.js";import{j as e,m,A as X}from"./vendor-animation-0s3FMHwK.js";import{r as a,L as z}from"./vendor-react-BVs3cwbi.js";import{F as Ce}from"./Forbidden-D25jV3Oq.js";import{u as _e,a as ze,S as B}from"./useListData-CvOpK9He.js";import{P as Be}from"./Pagination-B1sbY6V7.js";import"./vendor-utils-Dyr8OjFr.js";const Pe=a.lazy(()=>Se(()=>import("./ReceivedInvoices-Lo0YqDmF.js"),__vite__mapDeps([0,1,2,3,4,5,6]))),P="/api/admin",ee="boha_invoice_draft",V=["leden","únor","březen","duben","květen","červen","červenec","srpen","září","říjen","listopad","prosinec"];function se(t){return!t||t.length===0?"0 Kč":t.map(o=>O(o.amount,o.currency)).join(" · ")}function D(t,o){return!t||t.length===0?{value:"0 Kč",detail:null}:t.some(v=>v.currency!=="CZK")&&o!==null&&o!==void 0?{value:O(o,"CZK"),detail:se(t)}:{value:se(t),detail:null}}const ae={issued:"Vystavena",paid:"Zaplacena",overdue:"Po splatnosti"},te={issued:"admin-badge-invoice-issued",paid:"admin-badge-invoice-paid",overdue:"admin-badge-invoice-overdue"},De=[{value:"",label:"Vše"},{value:"issued",label:"Vystavené"},{value:"paid",label:"Zaplacené"},{value:"overdue",label:"Po splatnosti"}];function Ee(){const t=Ne(),{hasPermission:o}=be(),[h,v]=a.useState("issued"),[ie,I]=a.useState(!1),{sort:ne,order:u,handleSort:j,activeSort:y}=_e("invoice_number"),[M,oe]=a.useState(""),[le,$]=a.useState(1),[x,re]=a.useState(""),f=new Date,[d,g]=a.useState(f.getMonth()+1),[p,R]=a.useState(f.getFullYear()),[n,de]=a.useState(null),[ce,H]=a.useState(!0),K=a.useRef(!1),k=a.useRef(0),[me,he]=a.useState(0),U=d===f.getMonth()+1&&p===f.getFullYear(),ue=`${V[d-1]} ${p}`,N=a.useCallback(async()=>{H(!0);try{const i=await(await C(`${P}/invoices.php?action=stats&month=${d}&year=${p}`)).json();i.success&&(de(i.data),K.current=!0,he(l=>l+1))}catch{}finally{H(!1)}},[d,p]);a.useEffect(()=>{N()},[N]);const xe=()=>{k.current=-1,d===1?(g(12),R(s=>s-1)):g(s=>s-1)},pe=()=>{U||(k.current=1,d===12?(g(1),R(s=>s+1)):g(s=>s+1))},[b,A]=a.useState({show:!1,invoice:null}),[ve,Z]=a.useState(!1),[L,Y]=a.useState(null),[F,T]=a.useState(null),[c,J]=a.useState(null);a.useEffect(()=>{try{const s=localStorage.getItem(ee);if(!s)return;const i=JSON.parse(s);i&&i.form&&Array.isArray(i.items)&&J(i)}catch{}},[]);const je=()=>{try{localStorage.removeItem(ee)}catch{}J(null)},{items:w,loading:ye,pagination:W,refetch:q}=ze("invoices.php",{dataKey:"invoices",search:M,sort:ne,order:u,page:le,extraParams:x?{status:x}:{},errorMsg:"Nepodařilo se načíst faktury"});if(!o("invoices.view"))return e.jsx(Ce,{});const fe=async()=>{if(b.invoice){Z(!0);try{const i=await(await C(`${P}/invoices.php?id=${b.invoice.id}`,{method:"DELETE"})).json();i.success?(A({show:!1,invoice:null}),t.success(i.message||"Faktura byla smazána"),q(),N()):t.error(i.error||"Nepodařilo se smazat fakturu")}catch{t.error("Chyba připojení")}finally{Z(!1)}}},ge=async s=>{if(s.status!=="paid")try{const l=await(await C(`${P}/invoices.php?id=${s.id}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({status:"paid"})})).json();l.success?(t.success("Faktura označena jako zaplacená"),q(),N()):t.error(l.error||"Nepodařilo se změnit stav")}catch{t.error("Chyba připojení")}},G=async(s,i="cs")=>{if(!L){T(null),Y(s.id);try{const l=await C(`${P}/invoices-pdf.php?id=${s.id}&lang=${encodeURIComponent(i)}`);if(l.status===401)return;if(!l.ok){t.error("Nepodařilo se vygenerovat PDF");return}const S=await l.text(),r=window.open("","_blank");r?(r.document.open(),r.document.write(S),r.document.close(),r.onload=()=>r.print()):t.error("Prohlížeč zablokoval vyskakovací okno")}catch{t.error("Chyba při generování PDF")}finally{Y(null)}}};return ye?e.jsx("div",{children:e.jsxs("div",{className:"admin-skeleton",style:{padding:0,gap:"1.5rem"},children:[e.jsxs("div",{className:"admin-skeleton-row",style:{justifyContent:"space-between"},children:[e.jsxs("div",{children:[e.jsx("div",{className:"admin-skeleton-line h-8",style:{width:"200px",marginBottom:"0.5rem"}}),e.jsx("div",{className:"admin-skeleton-line",style:{width:"140px"}})]}),e.jsx("div",{className:"admin-skeleton-line h-10",style:{width:"140px",borderRadius:"8px"}})]}),e.jsx("div",{className:"dash-kpi-grid dash-kpi-4",children:[0,1,2,3].map(s=>e.jsxs("div",{className:"admin-stat-card",children:[e.jsx("div",{className:"admin-skeleton-line",style:{width:"60%",height:"11px",marginBottom:"0.5rem"}}),e.jsx("div",{className:"admin-skeleton-line",style:{width:"40%",height:"28px",marginBottom:"0.5rem"}}),e.jsx("div",{className:"admin-skeleton-line",style:{width:"50%",height:"12px"}})]},s))}),e.jsx("div",{className:"admin-card",children:e.jsx("div",{className:"admin-skeleton",style:{gap:"1rem"},children:[0,1,2,3,4].map(s=>e.jsxs("div",{className:"admin-skeleton-row",children:[e.jsx("div",{className:"admin-skeleton-line",style:{width:"80px"}}),e.jsx("div",{className:"admin-skeleton-line w-1/4"}),e.jsx("div",{className:"admin-skeleton-line",style:{width:"70px"}}),e.jsx("div",{className:"admin-skeleton-line",style:{width:"90px"}}),e.jsx("div",{className:"admin-skeleton-line",style:{width:"90px"}}),e.jsx("div",{className:"admin-skeleton-line",style:{width:"100px"}})]},s))})})]})}):e.jsxs("div",{children:[e.jsxs(m.div,{className:"admin-page-header",initial:{opacity:0,y:20},animate:{opacity:1,y:0},transition:{duration:.4},children:[e.jsxs("div",{children:[e.jsx("h1",{className:"admin-page-title",children:"Faktury"}),e.jsxs("p",{className:"admin-page-subtitle",children:[W?.total??w.length," ",Q(W?.total??w.length,"faktura","faktury","faktur")]})]}),o("invoices.create")&&e.jsx("div",{className:"admin-page-actions",children:h==="received"?e.jsxs("button",{className:"admin-btn admin-btn-primary",onClick:()=>I(!0),children:[e.jsxs("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[e.jsx("path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"}),e.jsx("polyline",{points:"17 8 12 3 7 8"}),e.jsx("line",{x1:"12",y1:"3",x2:"12",y2:"15"})]}),"Nahrát faktury"]}):e.jsxs(z,{to:"/invoices/new",className:"admin-btn admin-btn-primary",children:[e.jsxs("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[e.jsx("line",{x1:"12",y1:"5",x2:"12",y2:"19"}),e.jsx("line",{x1:"5",y1:"12",x2:"19",y2:"12"})]}),"Nová faktura"]})})]}),e.jsxs(m.div,{initial:{opacity:0,y:20},animate:{opacity:1,y:0},transition:{duration:.4,delay:.1},children:[e.jsxs("div",{className:"invoice-month-nav",children:[e.jsx("button",{className:"invoice-month-btn",onClick:xe,"aria-label":"Předchozí měsíc",children:e.jsx("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:e.jsx("polyline",{points:"15 18 9 12 15 6"})})}),e.jsx("span",{children:ue}),e.jsx("button",{className:"invoice-month-btn",onClick:pe,disabled:U,"aria-label":"Následující měsíc",children:e.jsx("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:e.jsx("polyline",{points:"9 18 15 12 9 6"})})})]}),e.jsxs("div",{className:"offers-tabs mb-4",style:{justifyContent:"center"},children:[e.jsx("button",{className:`offers-tab ${h==="issued"?"active":""}`,onClick:()=>v("issued"),children:"Vydané"}),e.jsx("button",{className:`offers-tab ${h==="received"?"active":""}`,onClick:()=>v("received"),children:"Přijaté"})]})]}),h==="received"?e.jsx(m.div,{initial:{opacity:0,y:20},animate:{opacity:1,y:0},transition:{duration:.4,delay:.15},children:e.jsx(a.Suspense,{fallback:e.jsx("div",{className:"dash-kpi-grid dash-kpi-4",style:{marginBottom:"1.5rem"},children:[0,1,2,3].map(s=>e.jsxs("div",{className:"admin-stat-card",children:[e.jsx("div",{className:"admin-skeleton-line",style:{width:"60%",height:"11px",marginBottom:"0.5rem"}}),e.jsx("div",{className:"admin-skeleton-line",style:{width:"40%",height:"28px",marginBottom:"0.5rem"}}),e.jsx("div",{className:"admin-skeleton-line",style:{width:"50%",height:"12px"}})]},s))}),children:e.jsx(Pe,{statsMonth:d,statsYear:p,uploadOpen:ie,setUploadOpen:I})})}):e.jsxs(e.Fragment,{children:[e.jsx(m.div,{initial:{opacity:0,y:20},animate:{opacity:1,y:0},transition:{duration:.4,delay:.15},children:!K.current&&ce?e.jsx("div",{className:"dash-kpi-grid dash-kpi-4",style:{marginBottom:"1.5rem"},children:[0,1,2,3].map(s=>e.jsxs("div",{className:"admin-stat-card",children:[e.jsx("div",{className:"admin-skeleton-line",style:{width:"60%",height:"11px",marginBottom:"0.5rem"}}),e.jsx("div",{className:"admin-skeleton-line",style:{width:"40%",height:"28px",marginBottom:"0.5rem"}}),e.jsx("div",{className:"admin-skeleton-line",style:{width:"50%",height:"12px"}})]},s))}):n&&e.jsx("div",{style:{overflow:"hidden",marginBottom:"1.5rem"},children:e.jsx(X,{mode:"popLayout",initial:!1,custom:k.current,children:e.jsx(m.div,{className:"dash-kpi-grid dash-kpi-4",custom:k.current,variants:{enter:s=>({x:`${(s||0)*105}%`,opacity:0}),center:{x:"0%",opacity:1},exit:s=>({x:`${(s||0)*-105}%`,opacity:0})},initial:"enter",animate:"center",exit:"exit",transition:{type:"spring",stiffness:300,damping:30},children:(()=>{const s=D(n.paid_month,n.paid_month_czk),i=D(n.awaiting,n.awaiting_czk),l=D(n.overdue,n.overdue_czk),S=D(n.vat_month,n.vat_month_czk),r=(E,ke)=>E>0?`${E} ${Q(E,"faktura","faktury","faktur")}`:ke;return e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"admin-stat-card success",children:[e.jsxs("div",{className:"admin-stat-label",children:["Uhrazeno (",V[d-1],")"]}),e.jsx("div",{className:"admin-stat-value admin-mono",children:s.value}),e.jsx("div",{className:"admin-stat-footer",children:[s.detail,r(n.paid_month_count,"žádné úhrady")].filter(Boolean).join(" · ")})]}),e.jsxs("div",{className:"admin-stat-card warning",children:[e.jsxs("div",{className:"admin-stat-label",children:["Čeká úhrada ",e.jsx("span",{style:{fontWeight:400,opacity:.7},children:"· celkově"})]}),e.jsx("div",{className:"admin-stat-value admin-mono",children:i.value}),e.jsx("div",{className:"admin-stat-footer",children:[i.detail,r(n.awaiting_count,"vše uhrazeno")].filter(Boolean).join(" · ")})]}),e.jsxs("div",{className:"admin-stat-card danger",children:[e.jsxs("div",{className:"admin-stat-label",children:["Po splatnosti ",e.jsx("span",{style:{fontWeight:400,opacity:.7},children:"· celkově"})]}),e.jsx("div",{className:"admin-stat-value admin-mono",children:l.value}),e.jsx("div",{className:"admin-stat-footer",children:[l.detail,n.overdue_count===0?"vše v pořádku":r(n.overdue_count,"")].filter(Boolean).join(" · ")})]}),e.jsxs("div",{className:"admin-stat-card info",children:[e.jsxs("div",{className:"admin-stat-label",children:["DPH (",V[d-1],")"]}),e.jsx("div",{className:"admin-stat-value admin-mono",children:S.value}),e.jsx("div",{className:"admin-stat-footer",children:S.detail||"z vydaných faktur"})]})]})})()},me)})})}),e.jsx(m.div,{initial:{opacity:0,y:20},animate:{opacity:1,y:0},transition:{duration:.4,delay:.2},children:e.jsx("div",{className:"offers-tabs mb-6",children:De.map(s=>e.jsx("button",{className:`offers-tab ${x===s.value?"active":""}`,onClick:()=>{re(s.value),$(1)},children:s.label},s.value))})}),e.jsx(m.div,{className:"admin-card",initial:{opacity:0,y:20},animate:{opacity:1,y:0},transition:{duration:.4,delay:.25},children:e.jsxs("div",{className:"admin-card-body",children:[e.jsx("div",{className:"admin-search-bar mb-4",children:e.jsx("input",{type:"text",value:M,onChange:s=>{oe(s.target.value),$(1)},className:"admin-form-input",placeholder:"Hledat podle čísla faktury, zákazníka nebo IČ..."})}),w.length===0&&!(c&&!x)?e.jsxs("div",{className:"admin-empty-state",children:[e.jsx("div",{className:"admin-empty-icon",children:e.jsxs("svg",{width:"28",height:"28",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",children:[e.jsx("path",{d:"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"}),e.jsx("polyline",{points:"14 2 14 8 20 8"}),e.jsx("line",{x1:"16",y1:"13",x2:"8",y2:"13"}),e.jsx("line",{x1:"16",y1:"17",x2:"8",y2:"17"}),e.jsx("polyline",{points:"10 9 9 9 8 9"})]})}),e.jsx("p",{children:"Zatím nejsou žádné faktury."}),o("invoices.create")&&e.jsx("p",{className:"text-tertiary",style:{fontSize:"0.875rem"},children:"Vytvořte první fakturu tlačítkem výše."})]}):e.jsx("div",{className:"admin-table-responsive",children:e.jsxs("table",{className:"admin-table",children:[e.jsx("thead",{children:e.jsxs("tr",{children:[e.jsxs("th",{style:{cursor:"pointer"},onClick:()=>j("invoice_number"),children:["Číslo ",e.jsx(B,{column:"invoice_number",sort:y,order:u})]}),e.jsx("th",{children:"Zákazník"}),e.jsxs("th",{style:{cursor:"pointer"},onClick:()=>j("status"),children:["Stav ",e.jsx(B,{column:"status",sort:y,order:u})]}),e.jsxs("th",{style:{cursor:"pointer"},onClick:()=>j("issue_date"),children:["Vystaveno ",e.jsx(B,{column:"issue_date",sort:y,order:u})]}),e.jsxs("th",{style:{cursor:"pointer"},onClick:()=>j("due_date"),children:["Splatnost ",e.jsx(B,{column:"due_date",sort:y,order:u})]}),e.jsx("th",{className:"text-right",children:"Celkem"}),e.jsx("th",{children:"Akce"})]})}),e.jsxs("tbody",{children:[c&&!M&&!x&&e.jsxs("tr",{className:"offers-draft-row",children:[e.jsx("td",{children:e.jsxs("span",{className:"offers-draft-row-label",children:["Koncept",c.savedAt&&e.jsxs("span",{style:{fontWeight:400,opacity:.8},children:[" · ",new Date(c.savedAt).toLocaleTimeString("cs-CZ",{hour:"2-digit",minute:"2-digit"})]})]})}),e.jsx("td",{children:c.form.customer_name||"—"}),e.jsx("td",{children:"—"}),e.jsx("td",{className:"admin-mono",children:c.form.issue_date?_(c.form.issue_date):"—"}),e.jsx("td",{className:"admin-mono",children:c.form.due_date?_(c.form.due_date):"—"}),e.jsx("td",{}),e.jsx("td",{children:e.jsxs("div",{className:"admin-table-actions",children:[e.jsx(z,{to:"/invoices/new",className:"admin-btn-icon",title:"Pokračovat v konceptu","aria-label":"Pokračovat v konceptu",children:e.jsxs("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[e.jsx("path",{d:"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7"}),e.jsx("path",{d:"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z"})]})}),e.jsx("button",{onClick:je,className:"admin-btn-icon danger",title:"Zahodit koncept",children:e.jsxs("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[e.jsx("polyline",{points:"3 6 5 6 21 6"}),e.jsx("path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"})]})})]})})]}),w.map(s=>{const i=s.status==="overdue"||s.status==="issued"&&s.due_date&&new Date(s.due_date)ge(s),className:`admin-badge ${te[s.status]||""}`,style:{cursor:"pointer"},children:ae[s.status]||s.status})}),e.jsx("td",{className:"admin-mono",children:_(s.issue_date)}),e.jsx("td",{className:"admin-mono",style:s.status==="overdue"?{color:"var(--danger)",fontWeight:600}:void 0,children:_(s.due_date)}),e.jsx("td",{className:"admin-mono",style:{textAlign:"right",fontWeight:500},children:O(s.total,s.currency)}),e.jsx("td",{children:e.jsxs("div",{className:"admin-table-actions",children:[e.jsx(z,{to:`/invoices/${s.id}`,className:"admin-btn-icon",title:"Detail","aria-label":"Detail",children:e.jsxs("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[e.jsx("path",{d:"M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"}),e.jsx("circle",{cx:"12",cy:"12",r:"3"})]})}),o("invoices.export")&&e.jsx("button",{onClick:()=>T(s),className:"admin-btn-icon",title:"PDF",disabled:L===s.id,children:L===s.id?e.jsx("div",{className:"admin-spinner",style:{width:18,height:18,borderWidth:2}}):e.jsxs("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[e.jsx("path",{d:"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"}),e.jsx("polyline",{points:"14 2 14 8 20 8"}),e.jsx("line",{x1:"16",y1:"13",x2:"8",y2:"13"}),e.jsx("line",{x1:"16",y1:"17",x2:"8",y2:"17"})]})}),o("invoices.delete")&&e.jsx("button",{onClick:()=>A({show:!0,invoice:s}),className:"admin-btn-icon danger",title:"Smazat",children:e.jsxs("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[e.jsx("polyline",{points:"3 6 5 6 21 6"}),e.jsx("path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"})]})})]})})]},s.id)})]})]})}),e.jsx(Be,{pagination:W,onPageChange:$})]})}),e.jsx(we,{isOpen:b.show,onClose:()=>A({show:!1,invoice:null}),onConfirm:fe,title:"Smazat fakturu",message:`Opravdu chcete smazat fakturu "${b.invoice?.invoice_number}"? Tato akce je nevratná.`,confirmText:"Smazat",cancelText:"Zrušit",type:"danger",loading:ve}),e.jsx(X,{children:F&&e.jsxs(m.div,{className:"admin-modal-overlay",initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},transition:{duration:.2},children:[e.jsx("div",{className:"admin-modal-backdrop",onClick:()=>T(null)}),e.jsxs(m.div,{className:"admin-modal admin-confirm-modal",role:"dialog","aria-modal":"true",initial:{opacity:0,scale:.95,y:20},animate:{opacity:1,scale:1,y:0},exit:{opacity:0,scale:.95,y:20},transition:{duration:.2},children:[e.jsxs("div",{className:"admin-modal-body admin-confirm-content",children:[e.jsx("div",{className:"admin-confirm-icon admin-confirm-icon-info",children:e.jsxs("svg",{width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[e.jsx("path",{d:"M12 22c5.523 0 10-4.477 10-10S17.523 2 12 2 2 6.477 2 12s4.477 10 10 10z"}),e.jsx("path",{d:"M2 12h20"}),e.jsx("path",{d:"M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z"})]})}),e.jsx("h2",{className:"admin-confirm-title",children:"Jazyk faktury"}),e.jsx("p",{className:"admin-confirm-message",children:"V jakém jazyce chcete vygenerovat fakturu?"})]}),e.jsxs("div",{className:"admin-modal-footer",children:[e.jsx("button",{type:"button",onClick:()=>G(F,"cs"),className:"admin-btn admin-btn-primary",children:"Čeština"}),e.jsx("button",{type:"button",onClick:()=>G(F,"en"),className:"admin-btn admin-btn-primary",children:"English"})]})]})]})})]})]})}export{Ee as default};