1const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/quote-number-DZSla4Ag.js","assets/index-DtAltElw.js","assets/index-D__uRsRC.css","assets/quote-error-JCSrHFl5.js"])))=>i.map(i=>d[i]); 2import{m as ht,r as o,a9 as xt,cr as gt,s as y,ck as Oe,aq as ce,j as e,L as ft,n as bt,K as pt,C as W,a3 as U,a4 as G,W as Z,I as Y,o as f,p as M,ac as V,ad as L,ae as H,af as F,ag as p,am as jt,al as Te,ap as le,T as Ce,e as R,R as vt,cs as wt,ct as Ie,U as Re,bq as Nt,cl as _t,cm as kt,cn as yt,bc as St,cu as be,k as S,ch as Ke,cv as De}from"./index-DtAltElw.js";import{i as Pt}from"./quote-insert-Ba4__Rdo.js";import{A as de,a as ue}from"./alert-Csp0-n_G.js";import{Q as zt,P as Qe}from"./QuoteCartLayout-DyfasTvW.js";import{r as At}from"./quote-kinds-DLuRWvdz.js";import{S as We}from"./SearchableEntitySelect-lVlGS7zR.js";import{H as qt}from"./HardwareMarginPanel-CD9S3KiS.js";import"./command-DQf4v91M.js";import"./chevrons-up-down-BVWbjKDL.js";const Ue={sku:null,name:"",qty:1,unitPrice:0,basePrice:0,acquisitionMode:"kauf"};function Tt(){const Ge=ht(),[J,X]=o.useState(!1),{isAdmin:Ze,isHeadOfSales:Ye}=xt(),Je=Ze||Ye,[pe,Xe]=o.useState([]),[E,et]=o.useState([]),{availability:je}=gt(E.map(t=>t.id)),[u,tt]=o.useState(""),[K,nt]=o.useState(!0),[h,ve]=o.useState(null),[ee,me]=o.useState(!1),[q,D]=o.useState([{...Ue}]),[te,we]=o.useState([]),[w,ne]=o.useState(""),[O,Ne]=o.useState([]),[g,ae]=o.useState(""),[Q,at]=o.useState(""),[he,st]=o.useState([]),[P,se]=o.useState(""),[xe,_e]=o.useState(""),[re,ke]=o.useState(0),[z,rt]=o.useState("none"),[ge,ie]=o.useState(0),[k,ye]=o.useState("GOLD"),[B,Se]=o.useState(36),[Pe,ze]=o.useState("Vielen Dank für Ihre Anfrage. Anbei finden Sie unser Hardware-Angebot:"),[Ae,qe]=o.useState(""),[$e,it]=o.useState(()=>{const t=new Date;return t.setDate(t.getDate()+14),t.toISOString().slice(0,10)});o.useEffect(()=>{(async()=>{const[t,n]=await Promise.all([y.from("customers").select("id, company, full_name, zoho_customer_number, customer_number").order("company").limit(1e3),y.from("articles").select("id, article_number, name, manufacturer, recommended_retail_price, selling_price, category, warranty_months, current_stock, ean").eq("is_active",!0).order("name").limit(2e3)]);Xe(t.data??[]),et(n.data??[])})()},[]),o.useEffect(()=>{if(!u){ve(null),we([]),ne(""),Ne([]),ae("");return}(async()=>{ve(await Oe(y,u));const{count:t}=await y.from("contracts").select("id",{count:"exact",head:!0}).eq("customer_id",u).eq("status","aktiv");nt((t??0)>0);const{data:n}=await y.from("quotes").select("id, quote_number, software_config, created_at").eq("customer_id",u).neq("quote_kind","hardware_only").order("created_at",{ascending:!1}).limit(20);we(n??[]);const{data:s}=await y.from("contracts").select("id, title, status, created_at").eq("customer_id",u).order("created_at",{ascending:!1}).limit(20);Ne(s??[]);const{data:a}=await y.from("legacy_contracts").select("id, zoho_contract_ref, scope_text, started_on, term_months, no_term, source").eq("customer_id",u).order("started_on",{ascending:!1}).limit(20);st(a??[]),se(""),_e(""),ke(0)})()},[u]);const j=o.useMemo(()=>{if(!P)return null;let t=null,n=null,s="";if(P==="manual")t=xe||null,n=re||null,s="Altvertrag vor LAB (Handangabe)";else{const c=he.find(l=>l.id===P);t=(c==null?void 0:c.started_on)??null,n=c!=null&&c.no_term?null:(c==null?void 0:c.term_months)??null,s=`Altvertrag ${(c==null?void 0:c.zoho_contract_ref)||(c==null?void 0:c.scope_text)||""}`.trim()}const a=At(t,n),i=a!=null&&a>=12&&n?Math.round((ce[n]||0)*100):0;return{start:t,term:n,rest:a,pct:i,label:s,unknown:a==null}},[P,he,xe,re]),[b,Me]=o.useState(null);o.useEffect(()=>{if(!g){Me(null);return}let t=!1;return(async()=>{const{data:n}=await y.rpc("fn_hardware_subsidy_context",{_contract_id:g});t||Me(n??null)})(),()=>{t=!0}},[g]);const N=o.useMemo(()=>g?Number((b==null?void 0:b.subsidy_percent)??0)/100:j?j.pct/100:ce[B]||0,[g,b,B,j]);o.useEffect(()=>{D(t=>t.map(n=>n.basePrice>0?{...n,unitPrice:Math.round(n.basePrice*(1-N)*100)/100}:n))},[N]),o.useEffect(()=>{if(!w)return;const t=te.find(c=>c.id===w),n=(t==null?void 0:t.software_config)||{},s=n.packageName?String(n.packageName):null,a=n.duration??n.term_months??n.followUpDuration,i=a!=null?Number(a):null;if(s&&ye(s),i&&Number.isFinite(i)){const c=Te[s??k]||[12,24,36,60];Se(c.includes(i)?i:c[c.length-1])}},[w,te]);function A(t,n){D(s=>s.map((a,i)=>i===t?{...a,...n}:a))}function ot(){D(t=>[...t,{...Ue}])}function ct(t){D(n=>n.filter((s,a)=>a!==t))}function lt(t,n){const s=E.find(i=>i.id===n);if(!s)return;const a=Number(s.recommended_retail_price??s.selling_price??0);A(t,{sku:s.article_number,name:s.name,basePrice:a,unitPrice:Math.round(a*(1-N)*100)/100})}function $(t,n){if(!n||!n.value)return{effective:t,amount:0};const s=n.type==="pct"?t*(Math.max(0,Math.min(100,n.value))/100):Math.max(0,n.value),a=Math.min(t,s);return{effective:Math.max(0,t-a),amount:a}}o.useEffect(()=>{D(t=>t.map(n=>n.basePrice>0?{...n,unitPrice:Math.round(n.basePrice*(1-N)*100)/100}:n))},[N]);const m=o.useMemo(()=>{const t=q.reduce((l,d)=>l+d.qty*$(d.unitPrice,d.discount).effective,0),n=q.filter(l=>l.name&&l.qty>0&&l.acquisitionMode==="kauf").reduce((l,d)=>l+d.qty*$(d.unitPrice,d.discount).effective,0),s=q.reduce((l,d)=>l+d.qty*(d.basePrice||d.unitPrice),0),a=Math.max(0,s-t),i=(h==null?void 0:h.rate)==null?0:h.rate/100,c=t*i;return{net:t,purchaseNet:n,baseNet:s,savings:a,tax:c,gross:t+c,vatFactor:i}},[q,h]),T=q.some(t=>t.name&&t.qty>0&&t.acquisitionMode==="kauf"),Ve=Math.round(m.purchaseNet*100)/100,C=T&&Ve>be;o.useEffect(()=>{C&&me(!0)},[C]),o.useEffect(()=>{T||me(!1)},[T]);async function fe(t){var Ee;if(!u)return S.error("Kunde wählen");const n=q.filter(r=>r.name&&r.qty>0);if(n.length===0)return S.error("Mindestens eine Hardware-Position");if(!g&&!P&&O.length>0)return S.error("Bezug zum bestehenden Vertrag ist Pflicht",{description:"Eine Nachbestellung laeuft immer am laufenden Vertrag â bitte oben den Vertrag auswaehlen."});if(!g&&!w&&!P)return S.error("Bezug zu Vertrag, Altvertrag oder Vorangebot ist Pflicht (Hardware-Only).");if(P==="manual"&&Q.trim().length<5)return S.error("Bei einem Altvertrag per Handangabe ist eine Begründung Pflicht.");if(n.some(r=>r.discount&&r.discount.value>0&&!(r.discount.reason||"").trim()))return S.error("Bei jedem Sonderrabatt muss eine Begründung eingetragen werden.");const a=h??await Oe(y,u);if(a.treatment==="unklar")return S.error("Steuerbehandlung ungeklärt",{description:a.blocker??void 0});if(J)return;X(!0);const{data:i}=await y.auth.getUser();if(!i.user)return X(!1),S.error("Nicht angemeldet");const c=K?` 3 4Diese Hardware ist als Ergänzung zu Ihrer bestehenden Liefersoft SaaS-Lizenz vorgesehen.`:` 5 6â ï¸ Hinweis: Für dieses Angebot ist KEINE aktive Liefersoft SaaS-Lizenz hinterlegt. Hardware wird ohne integrierte Software-Anbindung geliefert. Bei Bedarf einer SaaS-Lizenz sprechen Sie uns gerne an.`,l=z!=="none"&&ge>0,d=l?ge:0,Le=m.net+d,He=n.filter(r=>r.acquisitionMode==="kauf"),dt=Math.round(He.reduce((r,x)=>r+x.qty*$(x.unitPrice,x.discount).effective,0)*100)/100;let Fe="kauf";if(He.length===0){const r=n.reduce((x,_)=>(x[_.acquisitionMode]=(x[_.acquisitionMode]??0)+1,x),{});Fe=((Ee=Object.entries(r).sort((x,_)=>_[1]-x[1])[0])==null?void 0:Ee[0])??"kauf"}const I={created_by:i.user.id,customer_id:u,quote_kind:"hardware_only",status:t,valid_until:$e,tags:["Hardware-Only",K?"Add-On":"Ohne-Lizenz"],software_config:{skipped:!0,items:[],packageName:k,duration:B,hintOnly:!0},hardware_config:{acquisitionMode:Fe,items:n.map(r=>{const{effective:x,amount:_}=$(r.unitPrice,r.discount);return{sku:r.sku,articleNumber:r.sku,name:r.name,qty:r.qty,unitPrice:x,unitPriceBeforeDiscount:_>0?r.unitPrice:void 0,basePrice:r.basePrice||r.unitPrice,total:r.qty*x,acquisitionMode:r.acquisitionMode,note:r.note??null,discount:_>0?{type:r.discount.type,value:r.discount.value,reason:r.discount.reason,amount_per_unit:_}:null}}),hwSavings:m.savings,total_net:m.net,total:m.net,purchase_total_net:dt,prepaymentRequired:T?ee:!1,paymentTerm:T&&ee?"vorkasse":void 0},consulting_config:{skipped:!0},enabled_sections:{saas:!1,hw:!0,payment:!1,modules:!1,free:!1,hardware:!0,consulting:!1,onboarding:l},transferred_onboarding:l,_onboarding_detail:l?{mode:z,amount:d,source_quote_id:w||null,source_contract_id:g||null,note:`Onboarding (${z}) aus SaaS-Vertrag in dieses Hardware-Only-Angebot übernommen.`}:!1,reference_kind:g?"contract":j?"customer_number":w?"quote":"none",reference_contract_id:g||null,reference_quote_id:w||null,reference_reason:(j?`${j.label}: Start ${j.start??"unbekannt"}, Laufzeit ${j.term??"unbekannt"} Mon., Restlaufzeit ${j.rest??"unbekannt"} Mon., Subvention ${j.pct}%`+(j.unknown?" (Laufzeit unbekannt â Listenpreis, Freigabe durch Admin/HoS nötig)":"")+(Q?` · ${Q}`:""):null)||Q||(g?`Hardware-Erweiterung zu bestehendem Vertrag (${k} / ${B} Mon., ${(N*100).toFixed(0)}% Hardware-Subvention).`:w?`Hardware-Ãbernahme aus Angebot mit Tarif ${k} / ${B} Monate (${(N*100).toFixed(0)}% Hardware-Subvention).`:null),free_intro_text:Pe||null,free_outro_text:(Ae||"")+c,totals:{total_net:Le,hardware_net:m.net,hardwareOnce:m.net,onboarding:d,totalSavings:m.savings,gross:Math.round(Le*(1+(a.rate??0)
6/100)*100)/100,tax_treatment:a.treatment,tax_rate:a.rate},notes:`Hardware-Only Angebot. SaaS-Lizenz vorhanden: ${K?"ja":"nein"}. Hinweis-Tarif: ${k} / ${B} Mon. (Subvention ${(N*100).toFixed(0)}%).`+(l?` Onboarding (${z}, ${d.toFixed(2)} â¬) übernommen aus ${g?"Vertrag":"Vorangebot"}.`:"")};I.hardware_config.transferred_onboarding=I._onboarding_detail,delete I._onboarding_detail;try{if(g){const r=pe.find(mt=>mt.id===u),x=(r==null?void 0:r.zoho_customer_number)||(r==null?void 0:r.customer_number)||null,{data:_,error:oe}=await y.rpc("next_reorder_number",{zoho:x});if(oe||!_){X(!1),S.error("Nachbestell-Nummer konnte nicht vergeben werden",{description:(oe==null?void 0:oe.message)??"Bitte erneut versuchen â ohne NB-Nummer wird nicht gespeichert."});return}I.quote_number=_}else{const{nextQuoteNumberFor:r}=await Ke(async()=>{const{nextQuoteNumberFor:_}=await import("./quote-number-DZSla4Ag.js");return{nextQuoteNumberFor:_}},__vite__mapDeps([0,1,2])),x=await r({customerId:u});x&&(I.quote_number=x)}}catch{}const{data:v,error:Be,deduplicated:ut}=await Pt(I,"id, quote_number");if(X(!1),ut&&S.info("Angebot war bereits angelegt â bestehendes Angebot wird geöffnet."),Be){const{toastQuoteError:r}=await Ke(async()=>{const{toastQuoteError:x}=await import("./quote-error-JCSrHFl5.js");return{toastQuoteError:x}},__vite__mapDeps([3,1,2]));r(Be);return}if(l&&(v!=null&&v.id))try{w&&await De({entityType:"quote",entityId:w,performedBy:i.user.id,activityType:"onboarding_transferred",title:`Onboarding ausgelagert in Hardware-Only-Angebot ${v.quote_number}`,description:`Modus: ${z} · Betrag: ${d.toFixed(2)} â¬`,metadata:{target_quote_id:v.id,target_quote_number:v.quote_number,mode:z,amount:d}}),g&&await De({entityType:"contract",entityId:g,performedBy:i.user.id,activityType:"onboarding_transferred",title:`Onboarding ausgelagert in Hardware-Only-Angebot ${v.quote_number}`,description:`Modus: ${z} · Betrag: ${d.toFixed(2)} â¬`,metadata:{target_quote_id:v.id,target_quote_number:v.quote_number,mode:z,amount:d}})}catch(r){console.warn("Onboarding-Transfer-Log fehlgeschlagen",r)}S.success(`Hardware-Angebot ${v==null?void 0:v.quote_number} angelegt`),Ge(`/dashboard/quotes/${v==null?void 0:v.id}`)}return e.jsx(zt,{cart:{lines:q.map((t,n)=>{const{effective:s,amount:a}=$(t.unitPrice,t.discount);return{key:`hw-${n}-${t.sku??t.name}`,kind:"hardware",label:t.name||`Position ${n+1}`,qty:t.qty,unitPrice:s,total:t.qty*s,recurrence:t.acquisitionMode==="kauf"?"once":"monthly",note:t.acquisitionMode!=="kauf"?t.acquisitionMode:void 0,discountBadge:a>0?`â${(a*t.qty).toFixed(2)} â¬`:null}}).filter(t=>(t.qty??0)>0&&!!t.label),summary:{mrr:0,once:m.net,netto:m.net,brutto:m.gross,savings:m.savings},submitLabel:"Speichern & versenden",submitDisabled:J,onSubmit:()=>fe("gesendet")},children:e.jsxs("div",{className:"container py-6 space-y-6 max-w-5xl",children:[e.jsxs("header",{children:[e.jsxs(ft,{to:"/dashboard/quotes",className:"inline-flex items-center text-sm text-muted-foreground hover:underline",children:[e.jsx(bt,{className:"h-3 w-3 mr-1"})," Zurück zur Angebotsübersicht"]}),e.jsxs("h1",{className:"text-2xl font-semibold mt-2 flex items-center gap-2",children:[e.jsx(pt,{className:"h-5 w-5"})," Hardware-Only Angebot"]}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Reines Hardware-Angebot für Bestands- oder Neukunden â mit oder ohne SaaS-Lizenz."})]}),e.jsxs(W,{children:[e.jsx(U,{children:e.jsx(G,{className:"text-base",children:"Kunde"})}),e.jsxs(Z,{className:"space-y-3",children:[e.jsx(We,{value:u,onChange:tt,placeholder:"Bestandskunde auswählen â¦",searchPlaceholder:"Kunde suchen (Firma, Name, Kdnr.)â¦",items:pe.map(t=>{const n=t.company||t.full_name||"(ohne Name)",s=t.zoho_customer_number||t.customer_number;return{id:t.id,label:n,subLabel:s||void 0,searchText:`${n} ${t.full_name??""} ${s??""}`}})}),u&&e.jsxs(de,{className:K?"":"border-amber-500",children:[e.jsx(Y,{className:"h-4 w-4"}),e.jsx(ue,{children:K?"Aktive SaaS-Lizenz vorhanden â Hardware wird als Add-On ausgewiesen.":"Keine aktive SaaS-Lizenz. Im Angebot wird explizit darauf hingewiesen, dass die Hardware ohne Software-Anbindung geliefert wird."})]}),e.jsxs("div",{children:[e.jsx(f,{children:"Gültig bis"}
6),e.jsx(M,{type:"date",value:$e,onChange:t=>it(t.target.value)})]})]})]}),e.jsxs(W,{children:[e.jsx(U,{children:e.jsx(G,{className:"text-base",children:"Bezug zu Vertrag / Vorangebot · Pflicht"})}),e.jsxs(Z,{className:"space-y-3",children:[e.jsxs(de,{children:[e.jsx(Y,{className:"h-4 w-4"}),e.jsxs(ue,{className:"text-xs",children:["Eine Nachbestellung hängt immer am ",e.jsx("strong",{children:"bestehenden Vertrag"})," â nur wenn der Kunde noch gar keinen Vertrag hat, ist ersatzweise ein ",e.jsx("strong",{children:"Vorangebot"})," zulässig. So bleibt klar, zu welcher SaaS-Lizenz die Hardware gehört, und die Subventionsstaffel greift."]})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-3",children:[e.jsxs("div",{children:[e.jsx(f,{className:"text-xs",children:"Bestehender Vertrag"}),e.jsxs(V,{value:g,onValueChange:t=>{ae(t),t&&(ne(""),se(""))},disabled:!u,children:[e.jsx(L,{children:e.jsx(H,{placeholder:u?O.length?"Vertrag wählen â¦":"Kein Vertrag vorhanden":"Erst Kunde wählen"})}),e.jsx(F,{children:O.map(t=>e.jsxs(p,{value:t.id,children:[t.title||`Vertrag ${t.id.slice(0,8)}`,t.status?` · ${t.status}`:""]},t.id))})]}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"Empfohlen, wenn der Kunde bereits eine aktive SaaS-Lizenz hat."})]}),e.jsxs("div",{children:[e.jsx(f,{className:"text-xs",children:"Alternativ: Vorangebot"}),e.jsxs(V,{value:w,onValueChange:t=>{ne(t),t&&(ae(""),se(""))},disabled:!u||O.length>0,children:[e.jsx(L,{children:e.jsx(H,{placeholder:u?O.length>0?"Vertrag vorhanden â Vertrag wählen":"Vorangebot wählen â¦":"Erst Kunde wählen"})}),e.jsx(F,{children:te.map(t=>{var n,s;return e.jsxs(p,{value:t.id,children:[t.quote_number," · ",((n=t.software_config)==null?void 0:n.packageName)??"â"," / ",((s=t.software_config)==null?void 0:s.duration)??"?"," Mon."]},t.id)})})]})]})]}),u&&O.length===0&&e.jsxs("div",{className:"rounded-md border border-amber-300/60 bg-amber-50 dark:bg-amber-950/20 p-2 text-xs text-amber-900 dark:text-amber-200",children:[e.jsx("strong",{children:"Kein unterschriebener LAB-Vertrag â Versand nur mit Admin-Freigabe."})," ","Wählen Sie als Bezug das angenommene Vorangebot oder den Altvertrag. Nach dem Versenden gibt ein Admin in der Kundenakte über âOhne LAB-Vertrag freigebenâ frei; der Vorgang landet in der Nachweisliste."]}),e.jsxs("div",{className:"rounded-md border border-dashed border-border p-3 space-y-2",children:[e.jsx(f,{className:"text-xs font-semibold",children:"Altvertrag aus der Zeit vor dem LAB"}),e.jsx("p",{className:"text-[11px] text-muted-foreground",children:"Für Kunden, deren Vertrag noch nicht aus dem LAB verschickt wurde. Die Subvention richtet sich nach der Restlaufzeit: ab 12 Monaten Rest gilt die Staffel (12/24/36/60 Mon. = 15/20/25/30 %), darunter oder bei unbekannter Laufzeit der Listenpreis."}),e.jsxs(V,{value:P||"_none",onValueChange:t=>{const n=t==="_none"?"":t;se(n),n&&(ae(""),ne(""))},disabled:!u,children:[e.jsx(L,{children:e.jsx(H,{placeholder:"Kein Altvertrag"})}),e.jsxs(F,{children:[e.jsx(p,{value:"_none",children:"Kein Altvertrag"}),he.map(t=>e.jsxs(p,{value:t.id,children:[t.zoho_contract_ref||t.scope_text||"Altvertrag"," · ab ",t.started_on??"?"," · ",t.no_term?"ohne Laufzeit":`${t.term_months??"?"} Mon.`]},t.id)),e.jsx(p,{value:"manual",children:"Altvertrag von Hand angeben â¦"})]})]}),P==="manual"&&e.jsxs("div",{className:"grid grid-cols-2 gap-2",children:[e.jsxs("div",{children:[e.jsx(f,{className:"text-[11px]",children:"Vertragsbeginn"}),e.jsx(M,{type:"date",value:xe,onChange:t=>_e(t.target.value)})]}),e.jsxs("div",{children:[e.jsx(f,{className:"text-[11px]",children:"Laufzeit (Monate)"}),e.jsxs(V,{value:re?String(re):"",onValueChange:t=>ke(Number(t)),children:[e.jsx(L,{children:e.jsx(H,{placeholder:"unbekannt"})}),e.jsx(F,{children:[12,24,36,60].map(t=>e.jsx(p,{value:String(t),children:t},t))})]})]})]}),j&&e.jsxs("p",{className:"text-xs",children:["Restlaufzeit: ",e.jsx("strong",{children:j.rest??"unbekannt"})," Mon. · Subvention: ",e.jsxs("strong",{children:[j.pct," %"]}),j.unknown&&e.jsx("span",{className:"text-destructive",children:" · Laufzeit unbekannt â Listenpreis, Freigabe durch Admin/HoS"})]})]}),e.jsxs("div",{children:[e.jsxs(f,{className:"text-xs",children:["Bezug-Begründung ",P==="manual"?"(Pflicht)":"(optional)"]}),e.jsx(M,{value:Q,onChange:t=>at(t.target.value),placeholder:"z. B. Kunde möchte Hardware direkt kaufen / Erweiterung Vertrag"})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-3",children:[e.jsxs("div",{children:[e.jsx(f,{className:"text-xs",children:"Tarif (Hinweis)"}),e.jsxs(V,{value:k,onValueChange:ye,children:[e.jsx(L,{children:e.jsx(H,{})}),e.jsx(F,{children:jt.map(t=>e.jsx(p,{value:t,children:t},t))})]})]}),e.jsxs("div",{children:[e.jsx(f,{className:"text-xs",children:"Laufzeit (steuert Hardware-Subvention)"}),e.jsxs(V,{value:String(B),onValueChange:t=>Se(Number(t)),children:[e.jsx(L,{children:e.jsx(H,{})}),e.jsx(F,{children:(Te[k]||[12,24,36,60]).map(t=>e.jsxs(p,{value:String(t),children:[t," Monate ",ce[t]>0?`(${(ce[t]*100).toFixed(0)}% HW-Rabatt)`:""]},t))})]})]})]}),w&&(()=>{var i,c;const t=te.find(l=>l.id===w),n=(i=t==null?void 0:t.software_config)==null?void 0:i.packageName,s=(c=t==null?void 0:t.software_config)==null?void 0:c.duration;if(!n&&!s)return null;const a=n&&n!==k||s&&Number(s)!==B;return e.jsxs("div",{className:`text-[11px] rounded-md border px-2 py-1.5 ${a?"bg-amber-50 border-amber-300 text-amber-900":"bg-muted/50 border-border text-muted-foreground"}`,children:["Ãbernommen aus Vorangebot ",e.jsx("strong",{children:t==null?void 0:t.quote_number}),": ",n??"â"," / ",s??"?"," Monate",a&&" â abweichend gewählt, bitte prüfen."]})})(),g&&e.jsxs(de,{className:b!=null&&b.eligible?"":"border-amber-500",children:[e.jsx(Y,{className:"h-4 w-4"}),e.jsxs(ue,{className:"text-xs space-y-1",children:[e.jsxs("div",{children:[e.jsx("strong",{children:"Nachbestellung am bestehenden Vertrag."})," Es entsteht kein neuer Vertrag, die Laufzeit des bestehenden Vertrags bleibt unverändert."]}),e.jsxs("div",{children:["Vertragslaufzeit: ",e.jsx("strong",{children:(b==null?void 0:b.term_months)??"â"})," Monate ·"," ","Restlaufzeit: ",e.jsx("strong",{children:(b==null?void 0:b.remaining_months)!=null?`${Number(b.remaining_months).toFixed(1)} Monate`:"unbekannt"})," ·"," ","Subvention: ",e.jsxs("strong",{children:[(N*100).toFixed(0)," %"]})]}),e.jsx("div",{children:(b==null?void 0:b.reason_text)??"Subvention wird geprüft â¦"})]})]}),e.jsxs(de,{children:[e.jsx(Y,{className:"h-4 w-4"}),e.jsxs(ue,{className:"text-xs",children:["Aktueller Hardware-Rabatt: ",e.jsxs("strong",{children:[(N*100).toFixed(0),"%"]})," â wird auf alle Positionen angewendet. Im Hardware-Only-PDF werden ",e.jsx("strong",{children:"SaaS-Lizenz, Leistungsumfang, Onboarding und laufende Kosten ausgeblendet"}),", um Verwirrung zu vermeiden."]})]}),(g||w)&&e.jsxs("div",{className:"rounded-md border border-primary/30 bg-primary/5 p-3 space-y-2",children:[e.jsxs("div",{className:"flex items-center justify-between gap-2",children:[e.jsx(f,{className:"text-xs font-semibold",children:"Onboarding aus SaaS-Vertrag auslagern (optional)"}),e.jsxs(V,{value:z,onValueChange:t=>{const n=t;rt(n),n==="none"&&ie(0),n==="paket"&&ie(le[k]??199),n==="premium"&&ie(le.PLATIN??499)},children:[e.jsx(L,{className:"w-56",children:e.jsx(H,{})}),e.jsxs(F,{children:[e.jsx(p,{value:"none",children:"Kein Onboarding hier"}),e.jsxs(p,{value:"paket",children:["Paket-Onboarding (",k,") â ",(le[k]??199).toFixed(2)," â¬"]}),e.jsxs(p,{value:"premium",children:["Premium-Onboarding â ",(le.PLATIN??499).toFixed(2)," â¬"]})]})]})]}),z!=="none"&&e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(f,{className:"text-xs",children:"Betrag â¬"}
6),e.jsx(M,{type:"number",min:0,step:.01,value:ge,onChange:t=>ie(Number(t.target.value)||0),className:"w-32"}),e.jsx("span",{className:"text-[11px] text-muted-foreground",children:'Wird im PDF als separate Onboarding-Position ausgewiesen und im SaaS-Quellangebot als âausgelagert" vermerkt.'})]})]})]})]}),e.jsxs(W,{children:[e.jsxs(U,{className:"flex flex-row items-center justify-between",children:[e.jsx(G,{className:"text-base",children:"Intro"}),e.jsx(Qe,{onPick:t=>ze(n=>n?`${n} 7 8${t}`:t)})]}),e.jsx(Z,{children:e.jsx(Ce,{rows:3,value:Pe,onChange:t=>ze(t.target.value)})})]}),e.jsxs(W,{children:[e.jsxs(U,{className:"flex flex-row items-center justify-between",children:[e.jsx(G,{className:"text-base",children:"Hardware-Positionen"}),e.jsxs(R,{size:"sm",variant:"outline",onClick:ot,children:[e.jsx(vt,{className:"h-3 w-3 mr-1"}),"Position"]})]}),e.jsxs(Z,{className:"space-y-3",children:[q.map((t,n)=>{var s;return e.jsxs("div",{className:"grid grid-cols-12 gap-2 items-end border-b pb-3",children:[e.jsxs("div",{className:"col-span-12 md:col-span-5",children:[e.jsx(f,{className:"text-xs",children:"Katalog-Artikel (optional)"}),e.jsx(We,{value:t.sku?((s=E.find(a=>a.article_number===t.sku))==null?void 0:s.id)??"":"",onChange:a=>lt(n,a),placeholder:`Artikel wählen oder frei eintragen (${E.length} im Sortiment)`,searchPlaceholder:"Suchen: Name, Hersteller, Art.-Nr., EAN, Kategorieâ¦",items:E.map(a=>{const i=je.get(a.id),c=i!=null&&i.known?`Verfügbar: ${i.available}`:"Bestand unbekannt",l=a.recommended_retail_price??a.selling_price,d=l?`${Number(l).toFixed(2)} â¬`:"";return{id:a.id,label:a.name,subLabel:[a.manufacturer,a.article_number,a.category,d,c].filter(Boolean).join(" · ")||void 0,searchText:`${a.name} ${a.manufacturer??""} ${a.article_number??""} ${a.ean??""} ${a.category??""}`}})}),e.jsx(M,{className:"mt-1",placeholder:"oder freier Name",value:t.name,onChange:a=>A(n,{name:a.target.value})}),(()=>{const a=/s700\s*dock|ladestation/i.test(`${t.sku} ${t.name}`)&&/s700/i.test(`${t.sku} ${t.name}`)?"s700dock":/s700/i.test(`${t.sku} ${t.name}`)?"s700":null;return a?e.jsxs("p",{className:"text-[11px] text-muted-foreground mt-1 flex gap-1",children:[e.jsx(Y,{className:"h-3 w-3 mt-0.5 shrink-0"}),wt[a]]}):null})()]}),e.jsxs("div",{className:"col-span-3 md:col-span-1",children:[e.jsx(f,{className:"text-xs",children:"Menge"}),e.jsx(M,{type:"number",min:1,value:t.qty,onChange:a=>A(n,{qty:Number(a.target.value)||1})}),(()=>{const a=t.sku?E.find(l=>l.article_number===t.sku):null;if(!a)return null;const i=je.get(a.id);if(!(i!=null&&i.known))return e.jsx("p",{className:"text-[10px] text-muted-foreground mt-0.5",title:Ie(i),children:"Bestand unbekannt"});const c=t.qty>(i.available??0);return e.jsx("p",{className:`text-[10px] mt-0.5 ${c?"text-destructive font-medium":"text-muted-foreground"}`,title:Ie(i),children:c?`nur ${i.available} verfügbar`:`${i.available} verfügbar`})})()]}),e.jsxs("div",{className:"col-span-4 md:col-span-2",children:[e.jsx(f,{className:"text-xs",children:"Listenpreis ⬠(netto)"}),e.jsx(M,{type:"number",min:0,step:.01,value:t.basePrice,onChange:a=>{const i=Number(a.target.value)||0;A(n,{basePrice:i,unitPrice:Math.round(i*(1-N)*100)/100})}}),N>0&&t.basePrice>0&&e.jsxs("p",{className:"text-[10px] text-muted-foreground mt-0.5",children:["nach ",(N*100).toFixed(0),"% Rabatt: ",e.jsxs("strong",{children:[t.unitPrice.toFixed(2)," â¬"]})]})]}),e.jsxs("div",{className:"col-span-4 md:col-span-2",children:[e.jsx(f,{className:"text-xs",children:"Beschaffung"}),e.jsxs(V,{value:t.acquisitionMode,onValueChange:a=>A(n,{acquisitionMode:a}),children:[e.jsx(L,{children:e.jsx(H,{})}),e.jsxs(F,{children:[e.jsx(p,{value:"kauf",children:"Kauf"}),e.jsx(p,{value:"leasing",children:"Leasing (Albis)"}),e.jsx(p,{value:"miete",children:"Miete"})]})]})]}),e.jsxs("div",{className:"col-span-1 md:col-span-1 text-right text-sm font-medium",children:[(t.qty*$(t.unitPrice,t.discount).effective).toFixed(2)," â¬"]}),e.jsx("div",{className:"col-span-1 md:col-span-1 flex justify-end",children:e.jsx(R,{variant:"ghost",size:"icon",onClick:()=>ct(n),children:e.jsx(Re,{className:"h-4 w-4"})})}),Je&&e.jsx("div",{className:"col-span-12",children:t.discount?e.jsxs("div",{className:"rounded-md border border-dashed border-amber-400 bg-amber-50/40 p-2 grid grid-cols-12 gap-2 items-end",children:[e.jsxs("div",{className:"col-span-3",children:[e.jsx(f,{className:"text-[10px]",children:"Typ"}),e.jsxs(V,{value:t.discount.type,onValueChange:a=>A(n,{discount:{...t.discount,type:a}}),children:[e.jsx(L,{className:"h-8",children:e.jsx(H,{})}),e.jsxs(F,{children:[e.jsx(p,{value:"eur",children:e.jsxs("span",{className:"flex items-center gap-1",children:[e.jsx(_t,{className:"h-3 w-3"}),"⬠/ Stk"]})}),e.jsx(p,{value:"pct",children:e.jsxs("span",{className:"flex items-center gap-1",children:[e.jsx(kt,{className:"h-3 w-3"}),"%"]})})]})]})]}),e.jsxs("div",{className:"col-span-2",children:[e.jsx(f,{className:"text-[10px]",children:"Wert"}
8),e.jsx(M,{type:"number",min:0,step:.01,className:"h-8",value:t.discount.value,onChange:a=>A(n,{discount:{...t.discount,value:Number(String(a.target.value).replace(",","."))||0}})})]}),e.jsxs("div",{className:"col-span-6",children:[e.jsx(f,{className:"text-[10px]",children:"Begründung (Pflicht)"}),e.jsx(M,{className:"h-8",placeholder:"z. B. Wechslerrabatt / Bestandskundenbonus",value:t.discount.reason,onChange:a=>A(n,{discount:{...t.discount,reason:a.target.value}})})]}),e.jsx("div",{className:"col-span-1 flex justify-end",children:e.jsx(R,{variant:"ghost",size:"icon",className:"h-7 w-7",onClick:()=>A(n,{discount:null}),children:e.jsx(Re,{className:"h-3 w-3"})})}),t.discount.value>0&&e.jsxs("div",{className:"col-span-12 text-[10px] text-amber-800",children:["â",$(t.unitPrice,t.discount).amount.toFixed(2)," â¬/Stk · effektiv ",$(t.unitPrice,t.discount).effective.toFixed(2)," â¬/Stk"]})]}):e.jsxs(R,{size:"sm",variant:"ghost",className:"h-7 text-xs text-muted-foreground",onClick:()=>A(n,{discount:{type:"eur",value:0,reason:""}}),children:[e.jsx(Nt,{className:"h-3 w-3 mr-1"}),"Sonderrabatt hinzufügen"]})})]},n)}),e.jsx(qt,{items:q.filter(t=>t.sku).map(t=>({name:t.name,articleNumber:t.sku,unitPrice:$(t.unitPrice,t.discount).effective}))}),e.jsxs("div",{className:"text-right space-y-1 pt-2",children:[m.savings>0&&e.jsxs("div",{className:"text-xs text-emerald-600",children:["Listenpreis: ",m.baseNet.toFixed(2)," ⬠· Ersparnis: â",m.savings.toFixed(2)," â¬"]}),e.jsxs("div",{className:"text-sm text-muted-foreground",children:["Netto: ",m.net.toFixed(2)," â¬"]}),(h==null?void 0:h.treatment)==="standard"?e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"text-sm text-muted-foreground",children:["MwSt (",(m.vatFactor*100).toFixed(0),"%): ",m.tax.toFixed(2)," â¬"]}),e.jsxs("div",{className:"text-base font-semibold",children:["Brutto: ",m.gross.toFixed(2)," â¬"]})]}):h&&h.treatment!=="unklar"?e.jsxs("div",{className:"text-xs text-muted-foreground",children:[yt(h),e.jsx("div",{className:"mt-0.5",children:"Steuerbefreiung für diesen Kunden freigeschaltet â es werden 0 % statt 19 % berechnet."})]}):h?e.jsxs("div",{className:"flex items-start gap-1.5 justify-end text-xs text-amber-700 dark:text-amber-300",children:[e.jsx(St,{className:"h-3.5 w-3.5 shrink-0 mt-0.5"}),e.jsx("span",{children:h.blocker})]}):null,(h==null?void 0:h.treatment)==="standard"&&h.hinweis&&e.jsx("div",{className:"text-xs text-muted-foreground max-w-md ml-auto",children:h.hinweis})]}),T&&e.jsxs("label",{className:`flex items-start gap-2 rounded-md border p-3 transition-all ${C?"cursor-not-allowed":"cursor-pointer"} ${ee?"border-primary bg-primary/10":"border-dashed border-border hover:border-primary/40"}`,children:[e.jsx("input",{type:"checkbox",className:"mt-0.5 h-4 w-4 accent-primary",checked:ee,disabled:C,onChange:t=>me(t.target.checked)}),e.jsxs("span",{children:[e.jsx("span",{className:"block text-xs font-semibold",children:"Hardware nur gegen Vorkasse"}),e.jsx("span",{className:"mt-1 block text-[11px] text-muted-foreground",children:"Der Hardware-Versand wird erst freigegeben, wenn der Zahlungseingang erfasst ist."}),C&&e.jsxs("span",{className:"mt-1 block text-[11px] text-amber-600",children:["Ab ",be," ⬠Hardware-Nettowert ist ausschlieÃlich Vorkasse möglich."]}),e.jsxs("span",{className:"mt-1 block text-[11px] text-muted-foreground",children:["Prüfwert für die ",be,"-â¬-Regel:"," ",e.jsxs("span",{className:"font-medium",children:["purchase_total_net = ",Ve.toFixed(2)," â¬"]})," ","(nur Kauf-Positionen; Gesamt-Netto total = ",m.net.toFixed(2)," ⬠wird nicht herangezogen).",C?" Schwelle überschritten â Vorkasse erzwungen.":" Schwelle nicht überschritten â Vorkasse frei wählbar."]})]})]})]})]}),e.jsxs(W,{children:[e.jsxs(U,{className:"flex flex-row items-center justify-between",children:[e.jsx(G,{className:"text-base",children:"Outro / Hinweise"}),e.jsx(Qe,{onPick:t=>qe(n=>n?`${n} 9 10${t}`:t)})]}),e.jsxs(Z,{children:[e.jsx(Ce,{rows:3,value:Ae,onChange:t=>qe(t.target.value),placeholder:"Zusatz, Lieferhinweise, Garantie â¦"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-2",children:"Der Hinweis zur SaaS-Lizenz wird automatisch an den Outro-Text angehängt."})]})]}),e.jsxs("div",{className:"flex justify-end gap-2",children:[e.jsx(R,{variant:"outline",disabled:J,onClick:()=>fe("entwurf"),children:"Als Entwurf speichern"}),e.jsx(R,{disabled:J,onClick:()=>fe("gesendet"),children:"Speichern & versendet markieren"})]})]})})}export{Tt 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.