PageSourceSearch

https://kostenlose-erechnung.de/_app/immutable/nodes/64.CQIMufYB.js

js kostenlose-erechnung.de collected 2026-10-06 15:16:44 UTC 32,026 bytes, 2 lines download raw bytes

1import"../chunks/By_1nqkn.js";import{o as Ga}from"../chunks/DgcavDGt.js";import{p as ra,c as J,f as C,b as c,a as sa,v as o,g as e,ag as D,aq as ea,au as s,aD as l,av as a,u as U,ah as w,aE as he,X as Xe,aw as g,ay as Le,t as Ma}from"../chunks/CM63AIx1.js";import{d as ka,s as b}from"../chunks/Cx7uPeN_.js";import{i as v}from"../chunks/odpoKi2w.js";import{e as _t,i as ba}from"../chunks/BFtIJrvQ.js";import{c as qa}from"../chunks/CtWNrNCA.js";import{t as Ka}from"../chunks/CB0Q5VDj.js";import{s as De,r as Wa,c as Va}from"../chunks/SMFl__th.js";import{s as bt}from"../chunks/BhMl7way.js";import{b as Ia}from"../chunks/BqpVnKrQ.js";import{g as Ce}from"../chunks/lXCOwfPh.js";import{a as Za}from"../chunks/DSm1r-pw.js";import{quoteApi as fe}from"../chunks/3x85wWq1.js";import{b as ye,f as Aa}from"../chunks/C-fP77D9.js";import{q as Nt,a as Ha,i as Xa}from"../chunks/CuBjnj6k.js";import{toastStore as F}from"../chunks/CpIoMKZz.js";/* empty css                */import{B as ha}from"../chunks/DI5wic5U.js";import{D as ya}from"../chunks/CZSCGxCn.js";import{p as pt}from"../chunks/CjeENRgj.js";import{w as Pt,l as Ze,a as mt}from"../chunks/BxOqj68v.js";import{o as Ja}from"../chunks/D6_VXXy8.js";import{E as Ya}from"../chunks/D9EvZLSj.js";import{D as er}from"../chunks/D8VKqBxy.js";import{S as He}from"../chunks/SpAOUjA6.js";import{S as Je}from"../chunks/hYBpCKvW.js";import{P as tr}from"../chunks/DxOWs1Ny.js";import{P as ar}from"../chunks/BtFwOWFo.js";import{P as rr}from"../chunks/Dqlqc8Nd.js";import{a as sr,q as nr}from"../chunks/DMORxPis.js";import{F as ta}from"../chunks/BLqZ0Wmx.js";import{S as aa}from"../chunks/DyVASoGI.js";import{C as lr}from"../chunks/BW4ZLpqG.js";import{C as jt}from"../chunks/w3ZRWoz_.js";import{C as or}from"../chunks/CHlCUx_4.js";import{S as ir}from"../chunks/C-5Ki9Wr.js";import{L as wa}from"../chunks/HPxuFUgA.js";import{D as cr}from"../chunks/chF5Iypq.js";import{A as za}from"../chunks/B8fzSsIv.js";import{C as Sa}from"../chunks/MNyBw9Ol.js";import{F as ur}from"../chunks/Bau7VKv-.js";import{C as Dt}from"../chunks/Blu68Na0.js";import{E as dr}from"../chunks/CCtN5pw4.js";import{P as vr,E as gr}from"../chunks/DgULCJoE.js";import{C as fr}from"../chunks/uhef818j.js";import{P as pr}from"../chunks/CUlJmVXR.js";import{C as mr}from"../chunks/Cnwgyusb.js";import{C as _r}from"../chunks/DoEi1GuF.js";import{S as xa}from"../chunks/bognTweJ.js";import{T as br}from"../chunks/DIpFkU9y.js";const hr=async()=>({seo:{title:"Angebote | Dashboard"}}),nn=Object.freeze(Object.defineProperty({__proto__:null,load:hr},Symbol.toStringTag,{value:"Module"}));function Ca(Ye,pe){ra(pe,!0);let i=D(null);function Qe(W){Pt.subscription?.isPremium===!1?o(i,W,!0):W()}function Be(){return e(i)!==null}function Ue(){o(i,null)}function te(W){const P=e(i);o(i,null),W==="trial_claimed"&&P?.()}var K={run:Qe,isOpen:Be,close:Ue},ee=J(),re=C(ee);{var ce=W=>{rr(W,{get trigger(){return pe.trigger},onConfirm:te,onCancel:Ue})};v(re,W=>{e(i)&&W(ce)})}return c(Ye,ee),sa(K)}var yr=g('<div class="details-section svelte-1lrgty5"><!> <div style="height: 0.75rem;"></div> <!> <div style="height: 0.5rem;"></div> <!> <div style="height: 0.5rem;"></div> <!></div>'),wr=g("<span> </span>"),xr=g('<button aria-label="Status ändern" aria-haspopup="menu" type="button"><span> </span> <!></button>'),kr=g('<button class="status-option svelte-1lrgty5" role="menuitem"><span class="status-icon"><!></span> <span> </span></button>'),qr=g('<div class="status-dropdown svelte-1lrgty5" role="menu" aria-label="Neuen Angebotsstatus wählen"></div>'),Ir=g("<span><!></span>"),Ar=g('<button class="action-btn secondary svelte-1lrgty5" type="button"><!> Bearbeiten</button>'),zr=g('<button class="action-btn secondary svelte-1lrgty5" type="button"><!> Per E-Mail senden</button>'),Sr=g('<button class="action-btn primary svelte-1lrgty5" type="button"><!> In Rechnung umwandeln</button> <button class="action-btn secondary svelte-1lrgty5" type="button"><!> Abschlagsrechnung erstellen</button>',1),Cr=g('<p id="qds-final-hint" class="action-hint svelte-1lrgty5">Die Schlussrechnung ist möglich, sobald eine Abschlagsrechnung festgeschrieben ist.</p>'),Dr=g('<button class="action-btn primary svelte-1lrgty5" type="button"><!> Schlussrechnung erstellen</button> <button class="action-btn secondary svelte-1lrgty5" type="button"><!> Weitere Abschlagsrechnung</button> <!>',1),Pr=g('<button class="action-btn secondary svelte-1lrgty5" type="button">Zur Schlussrechnung</button>'),jr=g('<button class="action-btn secondary svelte-1lrgty5" type="button">Zur Rechnung</button>'),Nr=g('<button class="action-btn secondary svelte-1lrgty5" type="button"><!> Duplizieren</button>
1'),Er=g('<div class="series-skeleton svelte-1lrgty5" aria-busy="true" aria-label="Abschlagsrechnungen werden geladen"><!> <!></div>'),Fr=g('<span class="series-drafts svelte-1lrgty5"> </span>'),Tr=g('<p class="series-billed svelte-1lrgty5">Noch nicht bezahlt: <strong class="svelte-1lrgty5"> </strong> brutto</p>'),Lr=g('<li><a class="series-row svelte-1lrgty5"><span class="series-row-main svelte-1lrgty5"><span class="series-row-title svelte-1lrgty5"> </span> <span class="series-row-meta svelte-1lrgty5"> </span></span> <span class="series-row-amount svelte-1lrgty5"> </span></a></li>'),Qr=g('<li><a class="series-row svelte-1lrgty5"><span class="series-row-main svelte-1lrgty5"><span class="series-row-title svelte-1lrgty5">Schlussrechnung</span> <span class="series-row-meta svelte-1lrgty5"> </span></span> <span class="series-row-amount svelte-1lrgty5"> </span></a></li>'),Br=g('<p class="series-billed svelte-1lrgty5">Bisher abgerechnet: <strong class="svelte-1lrgty5"> </strong> <!></p> <!> <ul class="series-list svelte-1lrgty5"><!> <!></ul>',1),Ur=g('<p class="series-intro svelte-1lrgty5">Die Übersicht ist gerade nicht verfügbar. Die Abschlagsrechnungen finden Sie unter Rechnungen.</p>'),$r=g('<div class="details-section svelte-1lrgty5"><h3 class="svelte-1lrgty5">Abschlagsrechnungen</h3> <p class="series-intro svelte-1lrgty5"><!></p> <!></div>'),Rr=g('<div class="item-row svelte-1lrgty5"><div class="item-info svelte-1lrgty5"><span class="item-desc svelte-1lrgty5"> </span> <span class="item-qty svelte-1lrgty5"> </span></div> <span class="item-total svelte-1lrgty5"> </span></div>'),Or=g('<div class="status-section svelte-1lrgty5"><div class="status-row svelte-1lrgty5"><div class="status-selector svelte-1lrgty5"><!> <!></div> <!></div></div> <div class="quick-actions svelte-1lrgty5"><!> <!> <!> <!></div> <!> <div class="details-section svelte-1lrgty5"><h3 class="svelte-1lrgty5">Angebotsdetails</h3> <div class="detail-grid svelte-1lrgty5"><div class="detail-item svelte-1lrgty5"><span class="label svelte-1lrgty5">Kunde</span> <span class="value svelte-1lrgty5"> </span></div> <div class="detail-item svelte-1lrgty5"><span class="label svelte-1lrgty5">Angebotsdatum</span> <span class="value svelte-1lrgty5"> </span></div> <div class="detail-item svelte-1lrgty5"><span class="label svelte-1lrgty5">Gültig bis</span> <span class="value svelte-1lrgty5"> </span></div> <div class="detail-item svelte-1lrgty5"><span class="label svelte-1lrgty5">Erstellt</span> <span class="value svelte-1lrgty5"> </span></div></div></div> <div class="details-section svelte-1lrgty5"><h3 class="svelte-1lrgty5">Positionen</h3> <div class="items-list svelte-1lrgty5"></div> <div class="total-section svelte-1lrgty5"><div class="total-row svelte-1lrgty5"><span>Gesamtbetrag</span> <span class="total-value svelte-1lrgty5"> </span></div></div></div> <div class="details-section svelte-1lrgty5"><h3 class="svelte-1lrgty5">Dokumente</h3> <div class="download-buttons svelte-1lrgty5"><button class="download-btn svelte-1lrgty5"><!> PDF herunterladen</button></div></div>',1),Gr=g("<!> <!> <!> <!>",1);function Mr(Ye,pe){ra(pe,!0);let i=pt(pe,"quote",15,null),Qe=pt(pe,"loading",11,!1),Be=pt(pe,"onclose",3,()=>{});pt(pe,"onConvert",3,()=>{}),pt(pe,"onDuplicate",3,()=>{});async function Ue(){if(i()?.quoteId)try{const n=await fe.getQuote(i().quoteId),f=n?.quote??n;f?.quoteId&&i(f)}catch{}}let te=D(!1),K=D(null),ee=D(!1),re=D(!1),ce=D(!1),W=D(void 0),P=D(null),oe=D(!1),ie=D(!1);const we=[{value:"draft",icon:ta},{value:"sent",icon:aa},{value:"accepted",icon:lr},{value:"rejected",icon:jt}].map(n=>({...n,label:Nt(n.value).label})),ue=n=>Aa(n,"N/A");function ze(n){return new mt(n?.quantity||0).times(n?.unitPrice||0).toNumber()}function Pe(n){const f=Nt(n);return{text:f.label,class:`badge-${f.status}`}}function Et(n,f){if(!n||f==="accepted"||f==="rejected")return null;const t=new Date,p=new Date(n)-t;return Math.ceil(p/(1e3*60*60*24))}async function ht(){if(i()?.quoteId){o(te,!0);try{const n=await fe.getDownloadUrl(i().quoteId);if(n.downloadUrl){const f=document.createElement("a");f.href=n.downloadUrl;const t=n.fileName||`angebot-${i().metadata?.quoteNumber||"N/A"}.pdf`;f.setAttribute("download",t),document.body.appendChild(f),f.click(),document.body.removeChild(f)}else F.error("Download-Link konnte nicht abgerufen werden.")}catch(n){Ze.error("PDF Download failed:",n),F.error("Fehler beim Download.")}finally{o(te,!1)}}}function et(){i().status==="draft"&&Ce(`/dashboard/angebote/${i().quoteId}`)}async function tt(n){if(n===i().status){o(ee,!1);return}o(ee,!1);const f=Pe(n).text,t=await Ja(i(),{status:n},async()=>{const r=await fe.updateStatus(i().quoteId,n);if(!r.success)throw new Error(r.message||"Statusaenderung fehlgeschlagen.");return r});t.ok?F.success(`Status auf "${f}" geändert.`):(Ze.error("Failed to update status:",t.error),F.error(t.error.message||"Fehler bei Statusänderung."))}async function Ft(){o(K,"convert");const n=i().status==="accepted";try{const f=await fe.convertToInvoice(i().quoteId);f.success?(i(i().status="accepted",!0),i(i().convertedToInvoiceId=f.data?.invoiceId,!0),F.success(n?"Angebot in eine Rechnung umgewandelt.":"Angebot in eine Rechnung umgewandelt. Das Angebot steht jetzt auf „Angenommen“."),f.data?.invoiceId&&Ce(`/dashboard/rechnungen/${f.data.invoiceId}`)):F.error(f.message||"Umwandlung fehlgeschlagen.")}catch(f){Ze.error("Convert failed:",f),F.error("Fehler bei der Umwandlung.")}finally{o(K,null)}}function yt(){e($t)?o(re,!0):o(ce,!0)}function Tt(n){i(i().partialBillingSeriesId=n.seriesId,!0),i(i().status="accepted",!0),F.success("Entwurf der Abschlagsrechnung erstellt.")}async function Lt(){o(K,"final");try{const n=await fe.createFinalInvoice(i().quoteId);n.existing?F.info("Es gibt bereits einen Entwurf der Schlussrechnung. Er wird geöffnet."):F.success("Entwurf der Schlussrechnung erstellt."),Ce(`/dashboard/rechnungen/${n.invoiceId}`)}catch(n){Ze.error("Final invoice failed:",n),F.error(n?.message||"Die Schlussrechnung konnte nicht erstellt werden.")}finally{o(K,null)}}function wt(n){return Xa(n.paid?"paid":n.status).label}function at(n){return n.status==="draft"||!n.invoiceNumber?"Ohne Nummer (Entwurf)":n.invoiceNumber}async function Qt(){o(K,"duplicate");try{const n=await fe.duplicateQuote(i().quoteId);n.success?(F.success("Angebot dupliziert!"),n.data?.quoteId&&Ce(`/dashboard/angebote/${n.data.quoteId}`)):F.error(n.message||"Duplizieren fehlgeschlagen.")}catch(n){Ze.error("Duplicate failed:",n),F.error("Fehler beim Duplizieren.")}finally{o(K,null)}}let $e=D(!1);ea(()=>{o($e,!0)});let xt=D(!1);function Bt(){if(e(re)||e(ce)||e(W)?.isOpen()){o(re,!1),o(ce,!1),e(W)?.close();return}e(xt)||(o(xt,!0),o($e,!1),o(ee,!1),setTimeout(()=>Be()(),400))}let me=U(()=>i()?Et(i().metadata?.validUntil,i().status):null),Re=U(()=>i()?Pe(i().status):{text:"Lädt...",class:""}),Ut=U(()=>i()?`Angebot ${i().metadata?.quoteNumber||"N/A"}`:"Lädt..."),je=U(()=>Pt.hasCap("quote:write")),Ne=U(()=>e(je)&&Pt.hasCap("invoice:write")),_e=U(()=>
1i()?.metadata?.currency||"EUR"),$t=U(()=>!!Pt.subscription?.isPlus),Oe=U(()=>i()?.partialBillingSeriesId??null),rt=U(()=>!!e(P)?.closedByInvoiceId),st=U(()=>e(P)?sr(e(P)).length>0:!0),nt=U(()=>!!i()&&i().status!=="rejected"&&!i().convertedToInvoiceId&&e(Ne)),Rt=U(()=>(e(P)?.partials??[]).reduce((n,f)=>n.plus(f.net||0),new mt(0))),lt=U(()=>(e(P)?.partials??[]).filter(n=>n.status==="draft").reduce((n,f)=>n.plus(f.net||0),new mt(0))),ot=U(()=>typeof e(P)?.contractNet=="number"?new mt(e(P).contractNet):nr(i()??{}).reduce((n,f)=>n.plus(f.net),new mt(0))),Ge=U(()=>e(P)?.openGross??0),it=U(()=>i()?{kind:"quote",quote:i(),series:e(P)}:null);ea(()=>{const n=e(Oe);if(o(P,null),o(ie,!1),!n)return;let f=!1;return o(oe,!0),fe.getSeriesOverview(n).then(t=>{f||(o(P,t,!0),o(ie,!t))}).catch(t=>{Ze.error("Series overview failed:",t),f||o(ie,!0)}).finally(()=>{f||o(oe,!1)}),()=>{f=!0}});var kt=Gr(),qt=C(kt);er(qt,{get title(){return e(Ut)},onClose:Bt,width:"500px",get open(){return e($e)},set open(n){o($e,n,!0)},children:(n,f)=>{var t=J(),r=C(t);{var p=$=>{var T=yr(),V=s(T);He(V,{width:"150px",height:"1.25rem",rounded:"6px"});var j=l(V,4);He(j,{width:"100%",height:"1rem",rounded:"4px"});var y=l(j,4);He(y,{width:"80%",height:"1rem",rounded:"4px"});var Z=l(y,4);He(Z,{width:"90%",height:"1rem",rounded:"4px"}),a(T),c($,T)},m=$=>{var T=J(),V=C(T);{var j=y=>{var Z=Or(),x=C(Z),k=s(x),L=s(k),Q=s(L);{var R=d=>{var u=wr(),_=s(u,!0);a(u),w(()=>{bt(u,1,`status-badge-static badge ${e(Re).class??""}`,"svelte-1lrgty5"),b(_,e(Re).text)}),c(d,u)},H=d=>{var u=xr();u.__click=()=>o(ee,!e(ee)),u.__keydown=q=>q.key==="Escape"&&o(ee,!1);var _=s(u),N=s(_,!0);a(_);var B=l(_,2);or(B,{size:12}),a(u),w(()=>{bt(u,1,`status-button badge ${e(Re).class??""}`,"svelte-1lrgty5"),De(u,"aria-expanded",e(ee)),b(N,e(Re).text)}),c(d,u)};v(Q,d=>{!e(je)||i().status==="accepted"||i().status==="rejected"||i().status==="expired"?d(R):d(H,!1)})}var xe=l(Q,2);{var de=d=>{var u=qr();_t(u,21,()=>we,ba,(_,N)=>{var B=J(),q=C(B);{var z=E=>{const O=U(()=>e(N).icon);var S=kr();S.__click=()=>tt(e(N).value);var I=s(S),A=s(I);qa(A,()=>e(O),(le,G)=>{G(le,{size:16})}),a(I);var ae=l(I,2),Fe=s(ae,!0);a(ae),a(S),w(()=>b(Fe,e(N).label)),c(E,S)};v(q,E=>{Ha(i().status,e(N).value)&&E(z)})}c(_,B)}),a(u),c(d,u)};v(xe,d=>{e(ee)&&!(i().status==="accepted"||i().status==="rejected"||i().status==="expired")&&d(de)})}a(L);var se=l(L,2);{var ve=d=>{var u=Ir();let _;var N=s(u);{var B=z=>{var E=Le();w(O=>b(E,`Seit ${O??""} Tagen abgelaufen`),[()=>Math.abs(e(me))]),c(z,E)},q=z=>{var E=J(),O=C(E);{var S=A=>{var ae=Le("Läuft heute ab");c(A,ae)},I=A=>{var ae=Le();w(()=>b(ae,`Gültig noch ${e(me)??""} Tage`)),c(A,ae)};v(O,A=>{e(me)===0?A(S):A(I,!1)},!0)}c(z,E)};v(N,z=>{e(me)<0?z(B):z(q,!1)})}a(u),w(()=>_=bt(u,1,"due-info svelte-1lrgty5",null,_,{overdue:e(me)<0})),c(d,u)};v(se,d=>{e(me)!==null&&d(ve)})}a(k),a(x);var Ee=l(x,2),Me=s(Ee);{var X=d=>{var u=Ar();u.__click=et;var _=s(u);ir(_,{size:20}),he(),a(u),c(d,u)};v(Me,d=>{i().status==="draft"&&e(je)&&d(X)})}var h=l(Me,2);{var ne=d=>{Ya(d,{get invoice(){return i()},documentType:"quote",onSuccess:Ue,trigger:(_,N=Xe)=>{var B=zr();B.__click=function(...z){N()?.apply(this,z)};var q=s(B);aa(q,{size:20}),he(),a(B),c(_,B)},$$slots:{trigger:!0}})};v(h,d=>{e(je)&&d(ne)})}var qe=l(h,2);{var Ke=d=>{var u=Sr(),_=C(u);_.__click=()=>e(W).run(Ft);var N=s(_);{var B=O=>{Je(O,{size:"sm"})},q=O=>{za(O,{size:20})};v(N,O=>{e(K)==="convert"?O(B):O(q,!1)})}he(),a(_);var z=l(_,2);z.__click=yt;var E=s(z);wa(E,{size:20}),he(),a(z),w(()=>{_.disabled=e(K)!==null,z.disabled=e(K)!==null}),c(d,u)},ke=d=>{var u=J(),_=C(u);{var N=q=>{var z=Dr(),E=C(z);E.__click=Lt;var O=s(E);{var S=G=>{Je(G,{size:"sm"})},I=G=>{ur(G,{size:20})};v(O,G=>{e(K)==="final"?G(S):G(I,!1)})}he(),a(E);var A=l(E,2);A.__click=yt;var ae=s(A);wa(ae,{size:20}),he(),a(A);var Fe=l(A,2);{var le=G=>{var Te=Cr();c(G,Te)};v(Fe,G=>{e(st)||G(le)})}w(()=>{E.disabled=e(K)!==null||!e(st),De(E,"aria-describedby",e(st)?void 0:"qds-final-hint"),A.disabled=e(K)!==null||e(oe)}),c(q,z)},B=q=>{var z=J(),E=C(z);{var O=I=>{var A=Pr();A.__click=()=>Ce(`/dashboard/rechnungen/${e(P).closedByInvoiceId}`),c(I,A)},S=I=>{var A=J(),ae=C(A);{var Fe=le=>{var G=jr();G.__click=()=>Ce(`/dashboard/rechnungen/${i().convertedToInvoiceId}`),c(le,G)};v(ae,le=>{i().convertedToInvoiceId&&le(Fe)},!0)}c(I,A)};v(E,I=>{e(rt)?I(O):I(S,!1)},!0)}c(q,z)};v(_,q=>{e(nt)&&!e(rt)?q(N):q(B,!1)},!0)}c(d,u)};v(qe,d=>{e(nt)&&!e(Oe)?d(Ke):d(ke,!1)})}var Se=l(qe,2);{var ut=d=>{var u=Nr();u.__click=()=>e(W).run(Qt);var _=s(u);{var N=q=>{Je(q,{size:"sm"})},B=q=>{Sa(q,{size:20})};v(_,q=>{e(K)==="duplicate"?q(N):q(B,!1)})}he(),a(u),w(()=>u.disabled=e(K)!==null),c(d,u)};v(Se,d=>{e(je)&&d(ut)})}a(Ee);var We=l(Ee,2);{var dt=d=>{var u=$r(),_=l(s(u),2),N=s(_);{var B=S=>{var I=Le("Dieses Angebot ist mit der Schlussrechnung vollständig abgerechnet.");c(S,I)},q=S=>{var I=Le("Dieses Angebot wird in Abschlägen abgerechnet. Den Rest stellen Sie mit der Schlussrechnung in Rechnung.");c(S,I)};v(N,S=>{e(rt)?S(B):S(q,!1)})}a(_);var z=l(_,2);{var E=S=>{var I=Er(),A=s(I);He(A,{width:"100%",height:"2.75rem",rounded:"8px"});var ae=l(A,2);He(ae,{width:"100%",height:"2.75rem",rounded:"8px"}),a(I),c(S,I)},O=S=>{var I=J(),A=C(I);{var ae=le=>{var G=Br(),Te=C(G),vt=l(s(Te)),gt=s(vt,!0);a(vt);var St=l(vt),Qa=l(St);{var Ba=Y=>{var M=Fr(),ge=s(M);a(M),w(be=>b(ge,`(davon ${be??""} in Entwürfen)`),[()=>ye(e(lt).toNumber(),e(_e))]),c(Y,M)};v(Qa,Y=>{e(lt).gt(0)&&Y(Ba)})}a(Te);var pa=l(Te,2);{var Ua=Y=>{var M=Tr(),ge=l(s(M)),be=s(ge,!0);a(ge),he(),a(M),w(Ae=>b(be,Ae),[()=>ye(e(Ge),e(_e))]),c(Y,M)};v(pa,Y=>{e(Ge)>0&&Y(Ua)})}var ma=l(pa,2),_a=s(ma);_t(_a,17,()=>e(P).partials,Y=>Y.invoiceId,(Y,M)=>{var ge=Lr(),be=s(ge),Ae=s(be),Ve=s(Ae),Ht=s(Ve,!0);a(Ve);var ft=l(Ve,2),Xt=s(ft);a(ft),a(Ae);var Ct=l(Ae,2),Jt=s(Ct,!0);a(Ct),a(be),a(ge),w((Yt,Ra,Oa)=>{De(be,"href",`/dashboard/rechnungen/${e(M).invoiceId}`),b(Ht,e(M).sequence?`${e(M).sequence}. Abschlag`:"Abschlag"),b(Xt,`${Yt??""} · ${Ra??""}`),b(Jt,Oa)},[()=>at(e(M)),()=>wt(e(M)),()=>ye(e(M).net,e(_e))]),c(Y,ge)});var $a=l(_a,2);_t($a,17,()=>e(P).finals,Y=>Y.invoiceId,(Y,M)=>{var ge=Qr(),be=s(ge),Ae=s(be),Ve=l(s(Ae),2),Ht=s(Ve);a(Ve),a(Ae);var ft=l(Ae,2),Xt=s(ft,!0);a(ft),a(be),a(ge),w((Ct,Jt,Yt)=>{De(be,"href",`/dashboard/rechnungen/${e(M).invoiceId}`),b(Ht,`${Ct??""} · ${Jt??""}`),b(Xt,Yt)},[()=>at(e(M)),()=>wt(e(M)),()=>ye(e(M).net,e(_e))]),c(Y,ge)}),a(ma),w((Y,M)=>{b(gt,Y),b(St,` netto
2              von ${M??""} `)},[()=>ye(e(Rt).toNumber(),e(_e)),()=>ye(e(ot).toNumber(),e(_e))]),c(le,G)},Fe=le=>{var G=J(),Te=C(G);{var vt=gt=>{var St=Ur();c(gt,St)};v(Te,gt=>{e(ie)&&gt(vt)},!0)}c(le,G)};v(A,le=>{e(P)?le(ae):le(Fe,!1)},!0)}c(S,I)};v(z,S=>{e(oe)?S(E):S(O,!1)})}a(u),c(d,u)};v(We,d=>{e(Oe)&&d(dt)})}var Ie=l(We,2),At=l(s(Ie),2),Mt=s(At),na=l(s(Mt),2),Da=s(na,!0);a(na),a(Mt);var Kt=l(Mt,2),la=l(s(Kt),2),Pa=s(la,!0);a(la),a(Kt);var Wt=l(Kt,2),oa=l(s(Wt),2),ja=s(oa,!0);a(oa),a(Wt);var ia=l(Wt,2),ca=l(s(ia),2),Na=s(ca,!0);a(ca),a(ia),a(At),a(Ie);var Vt=l(Ie,2),Zt=l(s(Vt),2);_t(Zt,21,()=>i().items||[],ba,(d,u)=>{var _=Rr(),N=s(_),B=s(N),q=s(B,!0);a(B);var z=l(B,2),E=s(z);a(z),a(N);var O=l(N,2),S=s(O,!0);a(O),a(_),w((I,A)=>{b(q,e(u).description||"Keine Beschreibung"),b(E,`${e(u).quantity??""} × ${I??""}`),b(S,A)},[()=>ye(e(u).unitPrice,e(_e)),()=>ye(ze(e(u)),e(_e))]),c(d,_)}),a(Zt);var ua=l(Zt,2),da=s(ua),va=l(s(da),2),Ea=s(va,!0);a(va),a(da),a(ua),a(Vt);var ga=l(Vt,2),fa=l(s(ga),2),zt=s(fa);zt.__click=ht;var Fa=s(zt);{var Ta=d=>{Je(d,{size:"sm"})},La=d=>{cr(d,{size:18})};v(Fa,d=>{e(te)?d(Ta):d(La,!1)})}he(),a(zt),a(fa),a(ga),w((d,u,_,N)=>{b(Da,i().recipient?.name||"N/A"),b(Pa,d),b(ja,u),b(Na,_),b(Ea,N),zt.disabled=e(te)},[()=>ue(i().metadata?.date),()=>ue(i().metadata?.validUntil),()=>ue(i().createdAt),()=>ye(i().metadata?.total,e(_e))]),c(y,Z)};v(V,y=>{i()&&y(j)},!0)}c($,T)};v(r,$=>{Qe()?$(p):$(m,!1)})}c(n,t)},$$slots:{default:!0}});var It=l(qt,2);{var Ot=n=>{tr(n,{get open(){return e(re)},get context(){return e(it)},onClose:()=>o(re,!1),onCreated:Tt,onPlanRequired:()=>o(ce,!0)})};v(It,n=>{e(it)&&n(Ot)})}var ct=l(It,2);ar(ct,{get open(){return e(ce)},feature:"partial",onClose:()=>o(ce,!1)});var Gt=l(ct,2);Ia(Ca(Gt,{trigger:"quotes"}),n=>
2o(W,n,!0),()=>e(W)),c(Ye,kt),sa()}ka(["click","keydown"]);var Kr=g("<span><!> <span> </span></span>"),Wr=g('<button class="dg-icon-btn dg-icon-btn--danger btn-icon-danger svelte-rqjznn" title="Entwurf löschen"><!></button>'),Vr=g('<button class="dg-icon-btn btn-icon-primary svelte-rqjznn" title="In Rechnung umwandeln"><!></button>'),Zr=g('<button class="dg-icon-btn btn-icon-secondary svelte-rqjznn" title="Angebot duplizieren"><!></button>'),Hr=g("<!> <!> <!>",1),Xr=g('<span class="quote-number svelte-rqjznn"> </span>'),Jr=g('<span class="customer-name svelte-rqjznn"> </span>'),Yr=g('<span class="date svelte-rqjznn"> </span>'),es=g('<span class="amount svelte-rqjznn"> </span>'),ts=g('<div class="col-actions dg-actions svelte-rqjznn" role="presentation"><!></div>'),as=g('<div class="quote-card svelte-rqjznn"><div class="quote-card-head svelte-rqjznn"><span class="quote-number svelte-rqjznn"> </span> <!></div> <span class="customer-name quote-card-customer svelte-rqjznn"> </span> <dl class="quote-card-meta svelte-rqjznn"><div><dt class="svelte-rqjznn">Gültig bis</dt><dd class="date svelte-rqjznn"> </dd></div> <div><dt class="svelte-rqjznn">Betrag</dt><dd class="amount svelte-rqjznn"> </dd></div></dl> <div class="col-actions quote-card-actions dg-actions svelte-rqjznn" role="presentation"><!></div></div>'),rs=g('<div class="state-info error-state"><p><!> </p> <!></div>'),ss=g('<button class="clear-search-btn svelte-rqjznn" aria-label="Suche löschen"><!></button>'),ns=g('<button> <span class="filter-count svelte-rqjznn"> </span></button>'),ls=g('<div class="controls-bar"><div class="search-wrapper"><!> <input type="search" placeholder="Nach Angebotsnummer oder Kunde suchen" class="search-input svelte-rqjznn" aria-label="Angebote suchen"/> <!></div></div> <div class="filter-controls"></div> <div class="quotes-grid svelte-rqjznn"><!></div> <!>',1),os=g('<div class="page-container"><div class="page-header"><div class="header-title"><h1>Angebote</h1> <p>Erstellen und verwalten Sie Ihre Angebote</p></div> <div class="header-actions"><!></div></div> <!></div> <!> <!> <!>',1);function ln(Ye,pe){ra(pe,!0);const i=(t,r=Xe)=>{const p=U(()=>$e(r().status));var m=Kr(),$=s(m);qa($,()=>e(p).icon,(j,y)=>{y(j,{size:14})});var T=l($,2),V=s(T,!0);a(T),a(m),w(()=>{bt(m,1,`status-badge status-${r().status??""}`,"svelte-rqjznn"),b(V,e(p).text)}),c(t,m)},Qe=(t,r=Xe)=>{var p=Hr(),m=C(p);{var $=y=>{Dt(y,{cap:"quote:delete",children:(Z,x)=>{var k=Wr();k.__click=Q=>_e(r().quoteId,Q);var L=s(k);br(L,{size:18}),a(k),w(()=>De(k,"aria-label",`Angebot ${r().metadata?.quoteNumber||""} löschen`)),c(Z,k)},$$slots:{default:!0}})};v(m,y=>{r().status==="draft"&&y($)})}var T=l(m,2);{var V=y=>{Dt(y,{cap:"invoice:write",children:(Z,x)=>{var k=Vr();k.__click=H=>nt(r().quoteId,H);var L=s(k);{var Q=H=>{Je(H,{size:"sm"})},R=H=>{za(H,{size:18})};v(L,H=>{e(ue)===r().quoteId&&e(ze)==="convert"?H(Q):H(R,!1)})}a(k),w(()=>{De(k,"aria-label",`Angebot ${r().metadata?.quoteNumber||""} in Rechnung umwandeln`),k.disabled=e(ue)===r().quoteId}),c(Z,k)},$$slots:{default:!0}})};v(T,y=>{st(r())&&y(V)})}var j=l(T,2);Dt(j,{cap:"quote:write",children:(y,Z)=>{var x=Zr();x.__click=R=>Oe(r().quoteId,R);var k=s(x);{var L=R=>{Je(R,{size:"sm"})},Q=R=>{Sa(R,{size:18})};v(k,R=>{e(ue)===r().quoteId&&e(ze)==="duplicate"?R(L):R(Q,!1)})}a(x),w(()=>{De(x,"aria-label",`Angebot ${r().metadata?.quoteNumber||""} duplizieren`),x.disabled=e(ue)===r().quoteId}),c(y,x)},$$slots:{default:!0}}),c(t,p)},Be=(t,r=Xe,p=Xe)=>{var m=J(),$=C(m);{var T=j=>{i(j,r)},V=j=>{var y=J(),Z=C(y);{var x=L=>{var Q=Xr(),R=s(Q,!0);a(Q),w(()=>b(R,r().metadata?.quoteNumber||"–")),c(L,Q)},k=L=>{var Q=J(),R=C(Q);{var H=de=>{var se=Jr(),ve=s(se,!0);a(se),w(()=>b(ve,r().recipient?.name||"–")),c(de,se)},xe=de=>{var se=J(),ve=C(se);{var Ee=X=>{var h=Yr(),ne=s(h,!0);a(h),w(qe=>b(ne,qe),[()=>at(r().metadata?.validUntil)]),c(X,h)},Me=X=>{var h=J(),ne=C(h);{var qe=ke=>{var Se=es(),ut=s(Se,!0);a(Se),w(We=>b(ut,We),[()=>ye(r().metadata?.total,r().metadata?.currency||"EUR")]),c(ke,Se)},Ke=ke=>{var Se=J(),ut=C(Se);{var We=dt=>{var Ie=ts();
2Ie.__click=me,Ie.__keydown=me;var At=s(Ie);Qe(At,r),a(Ie),c(dt,Ie)};v(ut,dt=>{p().key==="actions"&&dt(We)},!0)}c(ke,Se)};v(ne,ke=>{p().key==="amount"?ke(qe):ke(Ke,!1)},!0)}c(X,h)};v(ve,X=>{p().key==="validUntil"?X(Ee):X(Me,!1)},!0)}c(de,se)};v(R,de=>{p().key==="customer"?de(H):de(xe,!1)},!0)}c(L,Q)};v(Z,L=>{p().key==="number"?L(x):L(k,!1)},!0)}c(j,y)};v($,j=>{p().key==="status"?j(T):j(V,!1)})}c(t,m)},Ue=(t,r=Xe)=>{var p=as(),m=s(p),$=s(m),T=s($,!0);a($);var V=l($,2);i(V,r),a(m);var j=l(m,2),y=s(j,!0);a(j);var Z=l(j,2),x=s(Z),k=l(s(x)),L=s(k,!0);a(k),a(x);var Q=l(x,2),R=l(s(Q)),H=s(R,!0);a(R),a(Q),a(Z);var xe=l(Z,2);xe.__click=me,xe.__keydown=me;var de=s(xe);Qe(de,r),a(xe),a(p),w((se,ve)=>{b(T,r().metadata?.quoteNumber||"–"),b(y,r().recipient?.name||"–"),b(L,se),b(H,ve)},[()=>at(r().metadata?.validUntil),()=>ye(r().metadata?.total,r().metadata?.currency||"EUR")]),c(t,p)};let te=D(Ma([])),K=D(!0),ee=D(null),re=D(null),ce=D(!1),W=D(!1),P=D("all"),oe=D(""),ie=D(25),we=D(1),ue=D(null),ze=D(null),Pe=D(void 0);const Et=[{key:"all",label:"Alle"},...["draft","sent","accepted","rejected","expired"].map(t=>({key:t,label:Nt(t).label}))],ht=[{key:"status",label:"Status",width:"120px",md:"104px",skeletonWidth:"80px"},{key:"number",label:"Angebotsnr.",width:"minmax(0, 1fr)",md:"minmax(110px, 1fr)",skeletonWidth:"100px"},{key:"customer",label:"Kunde",width:"minmax(0, 2fr)",md:"minmax(140px, 1.6fr)",truncate:!0,skeletonWidth:"140px"},{key:"validUntil",label:"Gültig bis",width:"120px",md:"96px",hideBelow:"sm",skeletonWidth:"80px"},{key:"amount",label:"Betrag",width:"140px",md:"112px",align:"right",skeletonWidth:"90px"},{key:"actions",label:"",srLabel:"Aktionen",width:"120px",md:"100px",align:"right",skeleton:!1}];Ga(async()=>{await et()});async function et(){o(K,!0),o(ee,null);try{const t=[];let r;for(let p=0;p<50;p++){const m=await fe.getQuotes(200,r);if(m.items?.length&&t.push(...m.items),r=m.lastKey,!r)break}o(te,t,!0),o(we,1)}catch(t){o(ee,t.message||"Fehler beim Laden der Angebote",!0),console.error("Failed to load quotes:",t)}finally{o(K,!1)}}const tt=U(()=>()=>{let t=e(te);if(e(P)!=="all"&&(t=t.filter(r=>r.status===e(P))),e(oe).trim()){const r=e(oe).toLowerCase();t=t.filter(p=>p.metadata?.quoteNumber?.toLowerCase().includes(r)||p.recipient?.name?.toLowerCase().includes(r))}return[...t].sort((r,p)=>{const m=r.metadata?.quoteNumber||"";return(p.metadata?.quoteNumber||"").localeCompare(m,void 0,{numeric:!0,sensitivity:"base"})})}),Ft=U(()=>{const t=e(tt)();if(e(ie)===-1)return t;const r=(e(we)-1)*e(ie);return t.slice(r,r+e(ie))}),yt=U(()=>{const t={all:e(te).length,draft:0,sent:0,accepted:0,rejected:0,expired:0};for(const r of e(te))r.status in t&&(t[r.status]+=1);return t});ea(()=>{if(e(oe),e(P),e(ie),e(ie)!==-1){const t=e(tt)().length,r=Math.max(1,Math.ceil(t/e(ie)));e(we)>r&&o(we,1)}});function Tt(t){o(P,t,!0),o(we,1)}function Lt(t){o(oe,t.target.value,!0)}function wt(){o(oe,"")}const at=t=>Aa(t,"–"),Qt={draft:ta,sent:aa,accepted:_r,rejected:jt,expired:mr};function $e(t){const r=Nt(t);return{text:r.label,icon:Qt[r.status]}}function xt(t){return`Angebot ${t.metadata?.quoteNumber||""} von ${t.recipient?.name||"unbekanntem Kunden"} öffnen`}function Bt(t){return e(re)?.quoteId===t.quoteId?"selected":""}function me(t){t.stopPropagation()}async function Re(t){if(t){o(W,!0),o(ce,!0);try{const r=await fe.getQuote(t);o(re,r.quote||r,!0)}catch(r){console.error("Error fetching quote:",r),F.error("Fehler beim Laden des Angebots"),o(re,null)}finally{o(W,!1)}}}function Ut(){o(ce,!1),setTimeout(()=>{o(re,null)},300)}function je(){Ce("/dashboard/angebote/erstellen")}let Ne=D(null);function _e(t,r){r.stopPropagation(),o(Ne,t,!0)}async function $t(){const t=e(Ne);if(o(Ne,null),!!t)try{const r=await fe.deleteQuote(t);r.success?(o(te,e(te).filter(p=>p.quoteId!==t),!0),F.success("Angebot gelöscht")):F.error(r.message||"Löschen fehlgeschlagen")}catch{F.error("Fehler beim Löschen")}}function Oe(t,r){r.stopPropagation(),e(Pe).run(()=>rt(t))}async function rt(t){o(ue,t,!0),o(ze,"duplicate");try{const r=await fe.duplicateQuote(t);r.success?(F.success("Angebot dupliziert"),await et()):F.error(r.message||"Duplizieren fehlgeschlagen")}catch{F.error("Fehler beim Duplizieren")}finally{o(ue,null),o(ze,null)}}function st(t){return t.status!=="rejected"&&!t.convertedToInvoiceId&&!t.partialBillingSeriesId}function nt(t,r){r.stopPropagation(),e(Pe).run(()=>Rt(t))}async function Rt(t){const r=e(te).find(m=>m.quoteId===t),p=r?.status==="accepted";o(ue,t,!0),o(ze,"convert");try{const m=await fe.convertToInvoice(t);m.success?(r&&(r.status="accepted",r.convertedToInvoiceId=m.data?.invoiceId),F.success(p?"Angebot in eine Rechnung umgewandelt.":"Angebot in eine Rechnung umgewandelt. Das Angebot steht jetzt auf „Angenommen“."),m.data?.invoiceId&&Ce(`/dashboard/rechnungen/${m.data.invoiceId}`)):F.error(m.message||"Umwandlung fehlgeschlagen")}catch{F.error("Fehler bei der Umwandlung")}finally{o(ue,null),o(ze,null)}}var lt=os(),ot=C(lt),Ge=s(ot),it=l(s(Ge),2),kt=s(it);Dt(kt,{cap:"quote:write",children:(t,r)=>{ha(t,{variant:"primary",onclick:je,get iconLeft(){return pr},children:(p,m)=>{he();var $=Le("Neues Angebot");c(p,$)},$$slots:{default:!0}})},$$slots:{default:!0}}),a(it),a(Ge);var qt=l(Ge,2);{var It=t=>{ya(t,{get columns(){return ht},rows:[],rowKey:r=>r.quoteId,loading:!0,skeletonRows:5,ariaLabel:"Angebote",get cell(){return Be}})},Ot=t=>{var r=J(),p=C(r);{var m=T=>{var V=rs(),j=s(V),y=s(j);jt(y,{size:20,class:"inline-icon"});var Z=l(y);a(j);var x=l(j,2);ha(x,{variant:"secondary",onclick:et,children:(k,L)=>{he();var Q=Le("Erneut versuchen");c(k,Q)},$$slots:{default:!0}}),a(V),w(()=>b(Z,` ${e(ee)??""}`)),c(T,V)},$=T=>{var V=J(),j=C(V);{var y=x=>{dr(x,{headline:"Noch keine Angebote",primaryActionLabel:"Erstes Angebot erstellen",primaryActionHref:"/dashboard/angebote/erstellen",previewText:"Erstellen Sie Ihr erstes Angebot, um potenzielle Kunden zu überzeugen.",previewBadge:"Angebots-Über
2sicht",get Icon(){return ta}})},Z=x=>{var k=ls(),L=C(k),Q=s(L),R=s(Q);xa(R,{size:20,class:"search-icon"});var H=l(R,2);Wa(H),H.__input=Lt;var xe=l(H,2);{var de=X=>{var h=ss();h.__click=wt;var ne=s(h);jt(ne,{size:14}),a(h),c(X,h)};v(xe,X=>{e(oe)&&X(de)})}a(Q),a(L);var se=l(L,2);_t(se,21,()=>Et,X=>X.key,(X,h)=>{var ne=ns();ne.__click=()=>Tt(e(h).key);var qe=s(ne),Ke=l(qe),ke=s(Ke,!0);a(Ke),a(ne),w(()=>{bt(ne,1,`btn btn-filter ${e(P)===e(h).key?"active":""}`,"svelte-rqjznn"),De(ne,"aria-pressed",e(P)===e(h).key),b(qe,`${e(h).label??""} `),b(ke,e(yt)[e(h).key])}),c(X,ne)}),a(se);var ve=l(se,2),Ee=s(ve);ya(Ee,{get columns(){return ht},get rows(){return e(Ft)},rowKey:h=>h.quoteId,onRowClick:h=>Re(h.quoteId),rowLabel:xt,rowClass:Bt,ariaLabel:"Angebote",get cell(){return Be},get card(){return Ue},empty:h=>{gr(h,{get Icon(){return xa},tone:"muted",title:"Keine Angebote gefunden",description:"Für die ausgewählten Filter gibt es aktuell keine Treffer."})},$$slots:{empty:!0}}),a(ve);var Me=l(ve,2);{let X=U(()=>e(tt)().length);vr(Me,{get currentPage(){return e(we)},get totalItems(){return e(X)},get itemsPerPage(){return e(ie)},label:"Angebote",onPageChange:h=>{o(we,h,!0)},onItemsPerPageChange:h=>{o(ie,h,!0),o(we,1)}})}w(()=>Va(H,e(oe))),Ka(1,ve,()=>Za,()=>({duration:150})),c(x,k)};v(j,x=>{e(te).length===0&&e(P)==="all"&&!e(oe)?x(y):x(Z,!1)},!0)}c(T,V)};v(p,T=>{e(ee)?T(m):T($,!1)},!0)}c(t,r)};v(qt,t=>{e(K)?t(It):t(Ot,!1)})}a(ot);var ct=l(ot,2);{var Gt=t=>{Mr(t,{onclose:Ut,onConvert:nt,onDuplicate:Oe,get quote(){return e(re)},set quote(r){o(re,r,!0)},get loading(){return e(W)},set loading(r){o(W,r,!0)}})};v(ct,t=>{e(ce)&&t(Gt)})}var n=l(ct,2);{let t=U(()=>!!e(Ne));fr(n,{get open(){return e(t)},variant:"danger",title:"Angebotsentwurf löschen?",description:"Möchten Sie diesen Angebotsentwurf wirklich löschen?",confirmLabel:"Löschen",cancelLabel:"Abbrechen",onConfirm:$t,onCancel:()=>o(Ne,null)})}var f=l(n,2);Ia(Ca(f,{trigger:"quotes"}),t=>o(Pe,t,!0),()=>e(Pe)),c(Ye,lt),sa()}ka(["click","keydown","input"]);export{ln as component,nn as universal};

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.