PageSourceSearch

https://nadort-elektro.nl/assets/AccuCalculator-qPTUBNne.js

js nadort-elektro.nl collected 2026-10-09 22:03:10 UTC 58,848 bytes, 1 lines download raw bytes

1import{u as oa,r as K,j as e,t as We,ae as ca,B as ge,L as Ye,ai as da,D as Xe,F as ha,a5 as ga,a6 as xa,a7 as ma,a8 as ja,a as L,am as se,an as te,ao as ne,ap as re,aq as z,I as Qe,y as ie,q as ua,c as ee,b as Pe}from"./index-DZ2JdFDg.js";import{C as D,a as E,b as R,d as le,c as A}from"./card-BwIc6VxI.js";import{T as va,a as pa,b as _e,c as we}from"./tabs-CsfuF8BP.js";import{S as ue}from"./switch-DpIfkMXY.js";import{e as d,k as u,a as Se,u as ba,b as fa,A as Ne,c as ye,d as ze,N as S,S as ka,E as Ie}from"./NumField-YNDdHLf6.js";import{S as ea}from"./separator-ChT6qNkM.js";import{T as ve,d as pe,b as U,e as w,a as $e,c as W}from"./table-joELbrFS.js";import{P as _a}from"./PdfBlobViewer-BNGS04K-.js";import{E as wa}from"./jspdf.es.min-DTKfYfxW.js";import{n as Na}from"./nadort-briefhoofd.png.asset-BC6fVcUl.js";import{D as ya}from"./download-DuCPwZpS.js";import{R as Ge,C as Je,X as Ke,Y as Ze,T as He,L as aa,a as za,B as sa,b as ta}from"./BarChart-UaovWQOn.js";import{L as Fa,a as Ca}from"./LineChart-DRAdp8q4.js";import{R as $a}from"./refresh-cw-DNf-HIuv.js";import{F as Ta}from"./folder-open-CKIeQUVV.js";import{T as Wa}from"./trash-2-DeU-Lotm.js";import{S as Sa}from"./save-CH8uQq9H.js";import"./plus-DWaCrKyQ.js";const na=N=>({klantnaam:"",adres:"",zakelijk:!1,jaar:N,btw_modus:"inclusief",btw_percentage:21,tarieven_incl_btw:!0,investering_incl_btw:!1,btw_basis_onbekend:!1,verbruik_invoer:"totaal",jaarverbruik_kwh:null,pv_productie_kwh:null,teruglevering_kwh:null,avondnacht_aandeel:50,contracttype:"onbekend",afnametarief:null,terugleververgoeding:null,terugleverkosten:{model:"geen",bedrag:0,staffels:[],tariefmodel_id:null,tariefmodel_naam:null,handmatig:!1},dyn_gem_inkoopprijs_markt:null,dyn_gem_verkoopprijs_markt:null,dyn_energiebelasting:null,dyn_opslag_afname:null,dyn_opslag_teruglevering:null,dyn_transactiekosten_per_kwh:0,dyn_btw_percentage:null,dyn_handelsdagen:200,ev_aanwezig:!1,ev_kwh_per_jaar:0,ev_zon_aandeel:40,noodstroom_gewenst:!1,noodstroom_uren:0,noodstroom_vermogen_kw:1,product_id:null,handmatige_verkoopprijs:{},subsidie_type:"geen",subsidie_bedrag:0,subsidie_percentage:0,prijsontwikkeling_percentage:null,scenario:"verwacht",heeft_intervaldata:!1}),P=N=>(N??"").replace(/[“”„]/g,'"').replace(/[‘’‚]/g,"'").replace(/–|—/g,"-").replace(/…/g,"...").replace(/€/g,"EUR ").replace(/[^\x00-\xff]/g,"?");async function Ba(){try{const o=await(await fetch(Na.url)).blob();return await new Promise((Y,t)=>{const G=new FileReader;G.onload=()=>Y(String(G.result)),G.onerror=t,G.readAsDataURL(o)})}catch{return null}}function Va(N){return`${["Accuadvies",N.klantnaam,N.adres].filter(Boolean).join(" ").replace(/[\\/:*?"<>|]/g,"-").trim()}.pdf`}const Z=210,xe=297,f=18,Ue=22,oe=[25,42,67],me=[21,173,155],ra=[214,158,46],ia=[170,180,190],De=[244,247,249],Te=[223,229,234];async function Da(N,o,Y){var Ve;const t=new wa({unit:"mm",format:"a4"}),G=await Ba(),l=o.configs.find(r=>r.key===o.eindadvies_key)??o.configs[0]??null;let c=0;const M=r=>t.setFillColor(r[0],r[1],r[2]),q=r=>t.setDrawColor(r[0],r[1],r[2]),s=r=>Array.isArray(r)?t.setTextColor(r[0],r[1],r[2]):t.setTextColor(r),be=()=>{if(G)try{t.addImage(G,"PNG",Z-f-50,11,50,0)}catch{}q(Te),t.setLineWidth(.2)},g=()=>{const r=t.getNumberOfPages();for(let x=1;x<=r;x++)t.setPage(x),q(Te),t.setLineWidth(.2),t.line(f,xe-14,Z-f,xe-14),t.setFont("helvetica","normal"),t.setFontSize(7.5),s(140),t.text(P(`Nadort Elektrotechniek - indicatief accuadvies${N.klantnaam?` voor ${N.klantnaam}`:""}`),f,xe-9.5),t.text(`${x} / ${r}`,Z-f,xe-9.5,{align:"right"}),s(0)},O=()=>{t.addPage(),be(),c=26},Q=r=>{c+r>xe-Ue&&O()},n=(r,x=22)=>{c+12+x>xe-Ue&&O(),c+=4,M(me),t.rect(f,c-3.6,1.8,5,"F"),t.setFont("helvetica","bold"),t.setFontSize(11.5),s(oe),t.text(P(r),f+4.5,c),s(0),c+=2.5,q(Te),t.setLineWidth(.2),t.line(f,c,Z-f,c),c+=6};let v=0;const H=()=>{v=0},p=(r,x,m=!1)=>{const y=P(r),h=P(x);t.setFont("helvetica",m?"bold":"normal"),t.setFontSize(9.5);const F=t.getTextWidth(y),C=Z-2*f-4-F-6,J=t.getTextWidth(h)<=C?[h]:t.splitTextToSize(h,Math.max(C,30)),k=6+(J.length-1)*4.6;Q(k+1),v%2===0&&(M(De),t.rect(f,c-3.9,Z-2*f,k,"F")),v++,t.setFont("helvetica",m?"bold":"normal"),t.setFontSize(9.5),s(m?oe:[60,68,78]),t.text(y,f+2,c),s(m?oe:0),J.forEach((T,B)=>{t.text(T,Z-f-2,c+B*4.6,{align:"right"})}),s(0),c+=k},ae=(r,x=9.5,m=!1)=>{t.setFont("helvetica","normal"),t.setFontSize(x),m&&s(120);const y=t.splitTextToSize(P(r),Z-2*f);for(const h of y)Q(6),t.text(h,f,c),c+=x<=8.5?4.2:5;s(0),c+=2},Fe=r=>{t.setFontSize(9.5);
1for(const x of r)t.splitTextToSize(P(x),Z-2*f-6).forEach((y,h)=>{Q(6),h===0&&(M(me),t.circle(f+1.4,c-1.2,.9,"F")),t.setFont("helvetica","normal"),s([55,62,72]),t.text(y,f+5,c),s(0),c+=5});c+=2},Ee=r=>{Q(26);const m=4,y=(Z-2*f-m*(r.length-1))/r.length;r.forEach((h,F)=>{const C=f+F*(y+m);M(De),q(Te),t.setLineWidth(.2),t.roundedRect(C,c,y,22,1.8,1.8,"FD"),M(h.kleur??me),t.roundedRect(C,c,y,1.6,.8,.8,"F"),t.setFont("helvetica","normal"),t.setFontSize(7.5),s(120),t.text(P(h.label),C+3.5,c+7.5),t.setFont("helvetica","bold"),t.setFontSize(13),s(oe),t.text(P(h.waarde),C+3.5,c+14.5),h.sub&&(t.setFont("helvetica","normal"),t.setFontSize(7),s(130),t.text(P(h.sub),C+3.5,c+19)),s(0)}),c+=28},je=(r,x,m=()=>!1)=>{const y=r.reduce((k,T)=>k+T.breedte,0),h=(Z-2*f)/y,F=[];let C=f;for(const k of r)F.push(C),C+=k.breedte*h;const J=()=>{Q(9),M(oe),t.rect(f,c-4.2,Z-2*f,6.4,"F"),t.setFont("helvetica","bold"),t.setFontSize(8.2),s(255),r.forEach((k,T)=>{const B=k.rechts?F[T]+k.breedte*h-2:F[T]+2;t.text(P(k.titel),B,c,k.rechts?{align:"right"}:void 0)}),s(0),c+=6.6};J(),x.forEach((k,T)=>{c+5.6>
1xe-Ue&&(O(),J()),T%2===0&&(M(De),t.rect(f,c-3.7,Z-2*f,5.4,"F"));const B=m(T);t.setFont("helvetica",B?"bold":"normal"),t.setFontSize(8.4),s(B?oe:[55,62,72]),r.forEach((I,V)=>{const a=I.rechts?F[V]+I.breedte*h-2:F[V]+2;t.text(P(k[V]??""),a,c,I.rechts?{align:"right"}:void 0)}),s(0),c+=5.4}),c+=4};if(be(),c=44,M(oe),t.rect(0,0,6,xe,"F"),t.setFont("helvetica","bold"),t.setFontSize(22),s(oe),t.text("Advies batterijopslag",f,c),s(0),c+=8,t.setFont("helvetica","normal"),t.setFontSize(10),s(110),t.text(P([N.klantnaam||"Klant",N.adres].filter(Boolean).join(" - ")),f,c),c+=5,t.text(P(`Opgesteld op ${new Date().toLocaleDateString("nl-NL")} - betrouwbaarheid: ${o.betrouwbaarheid}`),f,c),s(0),c+=8,!o.ok||!l||!o.basis)return n("Onvoldoende gegevens"),ae("Voor een betrouwbaar advies zijn nog aanvullende gegevens nodig:"),Fe(o.ontbrekend.length?o.ontbrekend:["Vul de invoergegevens aan."]),g(),t.output("blob");n("Ons advies",60),M(oe),t.roundedRect(f,c-4,Z-2*f,24,2,2,"F"),t.setFont("helvetica","bold"),t.setFontSize(20),s(255),t.text(P(`${l.capaciteit_kwh.toFixed(0)} kWh batterijopslag`),f+6,c+6),t.setFont("helvetica","normal"),t.setFontSize(9),s([190,205,215]),t.text(P([Y==null?void 0:Y.naam,`${l.modules} x ${(Y==null?void 0:Y.module_kwh)??"-"} kWh module`].filter(Boolean).join("  -  ")),f+6,c+13.5),s(0),c+=26,Ee([{label:"Jaarlijks voordeel",waarde:d(l.jaarvoordeel),kleur:me},{label:"Terugverdientijd",waarde:l.terugverdientijd?`${l.terugverdientijd.toFixed(1)} jr`:"> 15 jr",kleur:ra},{label:"Netto investering",waarde:d(l.netto_investering),kleur:oe},{label:"Resultaat na 15 jaar",waarde:d(l.resultaat_15jaar),kleur:me}]),ae(`Op basis van uw werkelijke energieprofiel adviseren wij ${l.capaciteit_kwh.toFixed(0)} kWh. ${o.advies_motivatie}`),o.argumenten.length&&Fe(o.argumenten);const fe=["Meer van uw eigen zonne-energie zelf gebruiken","Minder terugleveren aan het net","Lagere netafname en lagere energiekosten"];if(N.contracttype==="dynamisch"&&fe.push("Slim laden en ontladen op basis van dynamische prijzen"),N.noodstroom_gewenst&&fe.push(`Noodstroom: circa ${N.noodstroom_vermogen_kw} kW gedurende ${N.noodstroom_uren} uur`),n("Wat levert dit u op",fe.length*5+4),Fe(fe),n("Uw situatie: nu en met batterij",60),je([{titel:"Energiestroom",breedte:60},{titel:"Nu",breedte:25,rechts:!0},{titel:"Met batterij",breedte:27,rechts:!0},{titel:"Verschil",breedte:25,rechts:!0}],[["Jaarverbruik",u(o.basis.verbruik),u(l.stromen.verbruik??o.basis.verbruik),"-"],["Zonneproductie",u(o.basis.pv_productie),u(l.stromen.pv_productie??o.basis.pv_productie),"-"],["Teruglevering aan het net",u(o.basis.teruglevering),u(l.stromen.teruglevering),u(l.stromen.teruglevering-o.basis.teruglevering)],["Netafname",u(o.basis.netafname),u(l.stromen.netafname),u(l.stromen.netafname-o.basis.netafname)],["Zelfconsumptie",`${o.basis.zelfconsumptie_pct.toFixed(0)} %`,`${l.stromen.zelfconsumptie_pct.toFixed(0)} %`,`+${(l.stromen.zelfconsumptie_pct-o.basis.zelfconsumptie_pct).toFixed(0)} %`],["Zelfvoorziening",`${o.basis.zelfvoorziening_pct.toFixed(0)} %`,`${l.stromen.zelfvoorziening_pct.toFixed(0)} %`,`+${(l.stromen.zelfvoorziening_pct-o.basis.zelfvoorziening_pct).toFixed(0)} %`]],r=>r>=4),n("Technische kerncijfers",56),H(),p("Nominale batterijcapaciteit",u(l.capaciteit_kwh)),p("Technisch bruikbaar (DoD)",u(l.technisch_bruikbaar_kwh)),l.noodstroom_reserve_kwh>0&&p("Permanent gereserveerd voor noodstroom",u(l.noodstroom_reserve_kwh)),p("Beschikbaar voor energieoptimalisatie",u(l.bruikbaar_kwh)),p("Energie in de batterij (geladen)",u(l.stromen.geladen_kwh)),p("Energie uit de batterij (ontladen)",u(l.stromen.pv_via_batterij)),p("Omzettingsverlies batterij",u(l.stromen.batterijverlies)),p("Equivalente volledige cycli per jaar",l.stromen.volledige_cycli.toFixed(0)),p("Benutting van de capaciteit",`${l.stromen.benuttingsgraad_pct.toFixed(0)} %`),N.terugleverkosten.model!=="geen"){if(n("Terugleverkosten",30),H(),N.terugleverkosten.model==="staffel"){const r=l.terugleverstaffel_zonder,x=l.terugleverstaffel_met,m=N.terugleverkosten.tariefmodel_naam||(N.terugleverkosten.tariefmodel_id?"tariefmodel":"handmatige staffels");p("Tariefmodel",m),p("Zonder batterij",`${u(o.basis.teruglevering)} - staffel ${(r==null?void 0:r.staffelnummer)??"-"} - ${d(l.terugleverkosten_zonder)} p/j`),p("Met batterij",`${u(l.stromen.teruglevering)} - staffel ${(x==null?void 0:x.staffelnummer)??"-"} - ${d(l.terugleverkosten_met)} p/j`)}else p("Zonder batterij",`${d(l.terugleverkosten_zonder)} per jaar`),p("Met batterij",`${d(l.terugleverkosten_met)} per jaar`);p("Besparing terugleverkosten",`${d(l.terugleverkosten_zonder-l.terugleverkosten_met)} per jaar`,!0)}n("Financiele indicatie",70),H();const Re=((Ve=o.prijzen)==null?void 0:Ve.btw_modus)==="exclusief";p(Re?"Netto investering excl. btw (incl. installatie)":"Investering incl. btw (incl. installatie)",d(l.investering.klant_totaal)),l.subsidie>0&&p("Subsidie / fiscaal voordeel",`- ${d(l.subsidie)}`),p("Netto investering",d(l.netto_investering),!0),c+=3,H();const Be=l.posten.filter(r=>r.label==="Besparing netafname"||r.label==="Gemiste terugleververgoeding").reduce((r,x)=>r+x.bedrag,0);for(const r of l.posten)p(r.label,r.label.includes("Netto voordeel eigen zonne-energie")?d(Be):d(r.bedrag),r.label.includes("Netto voordeel eigen zonne-energie"));p("Verwacht jaarlijks voordeel",d(l.jaarvoordeel),!0),p("Indicatieve terugverdientijd",l.terugverdientijd?`${l.terugverdientijd.toFixed(1)} jaar`:"> 15 jaar",!0),p("Verwacht resultaat na 10 jaar",d(l.resultaat_10jaar)),p("Verwacht resultaat na 15 jaar",d(l.resultaat_15jaar),!0);const ke=(r,x)=>{n(x,r+14);const m=f,y=c,h=Z-2*f;return q(Te),M(De),t.setLineWidth(.2),t.roundedRect(m,y,h,r,1.5,1.5,"FD"),{x0:m,y0:y,w:h,h:r}}
1,ce=(r,x,m,y)=>{t.setFont("helvetica","normal"),t.setFontSize(6.5),s(125),t.text(P(r),x,m,y),s(0)},Me=(r,x,m)=>{let y=x;t.setFontSize(7),t.setFont("helvetica","normal");for(const h of r)M(h.kleur),t.rect(y,m-2.2,2.6,2.6,"F"),s(80),t.text(P(h.label),y+3.6,m),y+=4+t.getTextWidth(P(h.label))+5;s(0)};if(l.jaren.length>1){const{x0:x,y0:m,w:y}=ke(62,"Cumulatief netto resultaat (incl. investering)"),h=[{jaar:0,v:-l.netto_investering},...l.jaren.map(b=>({jaar:b.jaar,v:b.cumulatief_netto}))],F=Math.min(0,...h.map(b=>b.v)),C=Math.max(0,...h.map(b=>b.v)),J=22,k=8,T=6,B=x+J,I=y-J-8,V=m+T,a=62-T-k,i=b=>V+a-(b-F)/(C-F||1)*a,j=b=>B+b/(h.length-1)*I;q([228,233,237]);for(let b=0;b<=4;b++){const X=F+(C-F)*b/4,de=i(X);t.line(B,de,B+I,de),ce(d(X),B-2,de+1,{align:"right"})}const $=i(0);for(let b=1;b<h.length;b++){const X=j(b-1),de=j(b),Oe=i(h[b-1].v),Ce=i(h[b].v),la=(h[b-1].v+h[b].v)/2>=0;M(la?[214,240,236]:[246,226,226]),t.triangle(X,Oe,de,Ce,X,$,"F"),t.triangle(de,Ce,de,$,X,$,"F")}q([150,158,166]),t.setLineWidth(.3),t.line(B,$,B+I,$),q(me),t.setLineWidth(.8);for(let b=1;b<h.length;b++)t.line(j(b-1),i(h[b-1].v),j(b),i(h[b].v));t.setLineWidth(.2),h.forEach((b,X)=>{(X%Math.ceil(h.length/8)===0||X===h.length-1)&&ce(String(b.jaar),j(X),m+62-2,{align:"center"})}),c=m+62+5,ae(l.terugverdientijd?`De lijn kruist de nullijn na circa ${l.terugverdientijd.toFixed(1)} jaar; dat is het moment waarop de investering is terugverdiend.`:"Binnen de beschouwde periode wordt het break-evenpunt niet bereikt.",8.5,!0)}{const{x0:x,y0:m,w:y}=ke(62,"Jaarlijkse energiestromen"),h=[{naam:"Direct eigen PV",a:o.basis.direct_eigen_pv,b:l.stromen.direct_eigen_pv},{naam:"Via batterij",a:0,b:l.stromen.pv_via_batterij},{naam:"Teruglevering",a:o.basis.teruglevering,b:l.stromen.teruglevering},{naam:"Netafname",a:o.basis.netafname,b:l.stromen.netafname}],F=Math.max(...h.flatMap(i=>[i.a,i.b]),1),C=22,J=9,k=x+C,T=y-C-8,B=m+6,I=56-J;q([228,233,237]);for(let i=0;i<=4;i++){const j=F*i/4,$=B+I-j/F*I;t.line(k,$,k+T,$),ce(u(j),k-2,$+1,{align:"right"})}const V=T/h.length,a=Math.min(10,V/3);h.forEach((i,j)=>{const $=k+V*j+V/2;[[i.a,ia],[i.b,me]].forEach(([X,de],Oe)=>{const Ce=X/F*I;M(de),t.rect($-a-1+Oe*(a+2),B+I-Ce,a,Ce,"F")}),ce(i.naam,$,m+62-3.5,{align:"center"})}),c=m+62+5,Me([{label:"Zonder batterij",kleur:ia},{label:"Met geadviseerde batterij",kleur:me}],f,c),c+=7}if(o.configs.length>1){const{x0:x,y0:m,w:y}=ke(54,"Jaarvoordeel per capaciteit"),h=Math.max(...o.configs.map(V=>V.jaarvoordeel),1),F=22,C=x+F,J=y-F-8,k=m+6,T=39;q([228,233,237]);for(let V=0;V<=4;V++){const a=h*V/4,i=k+T-a/h*T;t.line(C,i,C+J,i),ce(d(a),C-2,i+1,{align:"right"})}const B=J/o.configs.length,I=Math.min(14,B*.5);o.configs.forEach((V,a)=>{const i=C+B*a+B/2,j=V.jaarvoordeel/h*T,$=V.key===o.eindadvies_key;M($?ra:[196,205,213]),t.rect(i-I/2,k+T-j,I,j,"F"),ce(`${V.capaciteit_kwh.toFixed(0)} kWh${$?" *":""}`,i,m+54-3.5,{align:"center"})}),c=m+54+5,ae("* geadviseerde capaciteit",8,!0)}if(o.prijzen){n("Gehanteerde tarieven",34),H();const r=o.prijzen.btw_modus==="exclusief",x=r?"excl. btw":"incl. btw";p("Financiele berekening",r?`Zakelijk - bedragen excl. btw (${o.prijzen.btw_percentage}%)`:`Particulier - bedragen incl. btw (${o.prijzen.btw_percentage}%)`,!0),p("Afnameprijs",`${Se(o.prijzen.afnameprijs)} / kWh ${x}`),p("Terugleververgoeding",`${Se(o.prijzen.terugleverprijs)} / kWh ${x}`),p("Terugleverkosten zonder batterij",`${d(l.terugleverkosten_zonder)} per jaar ${x}`),p("Investering",`${d(l.investering.klant_totaal)} ${x}`),p("Waarde van 1 extra zelf gebruikte kWh",`${Se(o.prijzen.waarde_zelfconsumptie)} / kWh`)}if(l.jaren.length&&(n("Verwacht verloop per jaar",34),je([{titel:"Jaar",breedte:16},{titel:"Capaciteit",breedte:30,rechts:!0},{titel:"Besparing",breedte:30,rechts:!0},{titel:"Netto",breedte:30,rechts:!0},{titel:"Cumulatief",breedte:32,rechts:!0}],l.jaren.map(r=>[String(r.jaar),u(r.capaciteit_kwh),d(r.besparing),d(r.netto),d(r.cumulatief)]))),o.configs.length>1&&(n("Waarom deze capaciteit",34),je([{titel:"Capaciteit",breedte:30},{titel:"Netto inv.",breedte:24,rechts:!0},{titel:"PV via accu",breedte:26,rechts:!0}
1,{titel:"Rest terugl.",breedte:26,rechts:!0},{titel:"Jaarvoordeel",breedte:26,rechts:!0},{titel:"Extra voordeel",breedte:28,rechts:!0},{titel:"TVT extra",breedte:22,rechts:!0}],o.configs.map((r,x)=>{const m=x>0?o.marginaal[x-1]:null;return[`${r.capaciteit_kwh.toFixed(0)} kWh${r.key===o.eindadvies_key?" (advies)":""}`,d(r.netto_investering),u(r.stromen.pv_via_batterij),u(r.stromen.teruglevering),d(r.jaarvoordeel),m?`${d(m.extra_besparing)}/jr`:"-",m?m.terugverdientijd_extra!=null?`${m.terugverdientijd_extra.toFixed(1)} jr`:"> 15 jr":"-"]}),r=>o.configs[r].key===o.eindadvies_key),ae(`Geadviseerde capaciteit: ${l.capaciteit_kwh.toFixed(0)} kWh. ${o.advies_motivatie}`)),o.aannames.length){n("Aannames",20),H();for(const r of o.aannames)p(r.label,r.waarde)}return n("Toelichting",30),o.klanttekst_nauwkeurigheid&&ae(o.klanttekst_nauwkeurigheid,8.5,!0),ae("Deze berekening is een indicatie. Werkelijke resultaten zijn afhankelijk van onder andere uw energieverbruik, weersomstandigheden, energieprijzen, terugleververgoeding, systeeminstellingen en toekomstige wet- en regelgeving. Aan dit document kunnen geen rechten worden ontleend.",8.5,!0),ae(`Rekenmethode: ${o.engine_versie}.`,8,!0),g(),t.output("blob")}const Ae=new Date().getFullYear();function es({embedded:N=!1}){const{isAdmin:o,isAdministratie:Y}=oa(),t=o||Y,{producten:G,jaren:l,tariefmodellen:c,instellingen:M,loading:q}=ba(),[s,be]=K.useState(na(Ae)),g=(a,i)=>be(j=>({...j,[a]:i})),O=K.useMemo(()=>G.find(a=>a.id===s.product_id)??G.find(a=>a.actief)??null,[G,s.product_id]),Q=K.useMemo(()=>l.find(a=>a.jaar===s.jaar)??null,[l,s.jaar]),n=K.useMemo(()=>fa(s,O,Q,M),[s,O,Q,M]),v=n.configs.find(a=>a.key===n.eindadvies_key)??null,H=n.configs.find(a=>a.key===n.technisch_advies_key)??null,p=n.configs.find(a=>a.key===n.economisch_optimum_key)??null,ae=K.useMemo(()=>{var i;if(!n.ok)return[];const a=[];for(let j=0;j<=15;j++){const $={jaar:j};for(const b of n.configs)$[b.label]=j===0?-b.netto_investering:((i=b.jaren[j-1])==null?void 0:i.cumulatief_netto)??-b.netto_investering;a.push($)}return a},[n]),Fe=K.useMemo(()=>!n.ok||!n.basis||!v?[]:[{naam:"Zonder accu","Direct eigen PV":Math.round(n.basis.direct_eigen_pv),"PV via batterij":0,Teruglevering:Math.round(n.basis.teruglevering),Netafname:Math.round(n.basis.netafname),Batterijverlies:0},{naam:`Met ${v.capaciteit_kwh.toFixed(0)} kWh`,"Direct eigen PV":Math.round(v.stromen.direct_eigen_pv),"PV via batterij":Math.round(v.stromen.pv_via_batterij),Teruglevering:Math.round(v.stromen.teruglevering),Netafname:Math.round(v.stromen.netafname),Batterijverlies:Math.round(v.stromen.batterijverlies)}],[n,v]),Ee=K.useMemo(()=>n.configs.map(a=>({capaciteit:`${a.capaciteit_kwh.toFixed(0)} kWh`,Jaarvoordeel:Math.round(a.jaarvoordeel)})),[n]),[je,fe]=K.useState(null),[Re,Be]=K.useState(!1),[ke,ce]=K.useState(!1),Me=async()=>{if(!n.controles_ok){ee.error("Rekencontrole mislukt – controleer de gemarkeerde onderdelen");return}ce(!0);try{const a=await Da(s,n,O);fe(a),Be(!0)}catch{ee.error("PDF genereren mislukt")}finally{ce(!1)}},Ve=()=>{if(!je)return;const a=URL.createObjectURL(je),i=document.createElement("a");i.href=a,i.download=Va(s),i.click(),setTimeout(()=>URL.revokeObjectURL(a),2e3)},[r,x]=K.useState([]),[m,y]=K.useState(!1),[h,F]=K.useState("invoer"),[C,J]=K.useState(!1),k=a=>C&&(n.ontbrekend??[]).includes(a),T=async()=>{y(!0);const{data:a}=await Pe.from("accu_berekeningen").select("id, klantnaam, adres, invoer, created_at, updated_at").order("created_at",{ascending:!1});x(a??[]),y(!1)};K.useEffect(()=>{t&&T()},[t]);const B=async()=>{if(!n.ok){J(!0),F("invoer"),ee.error(`Opslaan niet mogelijk – vul de rood gemarkeerde velden in: ${(n.ontbrekend??[]).join(", ")}`);return}if(!n.controles_ok){ee.error("Rekencontrole mislukt – een berekening met een niet-sluitende balans wordt niet opgeslagen");return}const{error:a}=await Pe.from("accu_berekeningen").insert({klantnaam:s.klantnaam||null,adres:s.adres||null,invoer:{...s,engine_versie:n.engine_versie},resultaat:n});a?ee.error("Opslaan mislukt"):(ee.success("Berekening opgeslagen"),T())},I=a=>{var j,$;const i=((j=a==null?void 0:a.invoer)==null?void 0:j.engine_versie)??(($=a==null?void 0:a.resultaat)==null?void 0:$.engine_versie)??null;be({...na(Ae),...a.invoer}),F("invoer"),i&&i!==Ie?ee.info(`Deze berekening is gemaakt met rekenmethode ${i}. De invoer is opnieuw doorgerekend met ${Ie}; de opgeslagen versie blijft bewaard.`):i?ee.success("Berekening geladen"):ee.info(`Deze berekening is gemaakt met een oudere rekenmethode en is opnieuw doorgerekend met ${Ie}. De originele berekening blijft bewaard.`)},V=async a=>{const{error:i}=await Pe.from("accu_berekeningen").delete().eq("id",a);i?ee.error("Verwijderen mislukt"):(x(j=>j.filter($=>$.id!==a)),ee.success("Berekening verwijderd"))};return t?e.jsxs("div",{className:"p-3 sm:p-6 space-y-4 max-w-[1400px] mx-auto",children:[e.jsxs("div",{className:"flex flex-wrap items-center justify-between gap-3",children:[!N&&e.jsxs("div",{children:[e.jsxs("h1",{className:"text-xl sm:text-2xl font-semibold flex items-center gap-2",children:[e.jsx(ca,{className:"w-6 h-6 text-primary"})," Accu Calculator"]}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Technisch accuadvies met financiële simulatie en terugverdientijd."})]}),e.jsxs("div",{className:"flex flex-wrap gap-2",children:[e.jsx(ge,{variant:"outline",size:"sm",asChild:!0,children:e.jsxs(Ye,{to:"/portaal/accu-calculator/instellingen",children:[e.jsx(da,{className:"w-4 h-4 mr-1"})," Instellingen"]})}),e.jsxs(ge,{size:"sm",onClick:Me,disabled:!n.ok||ke,children:[ke?e.jsx(Xe,{className:"w-4 h-4 mr-1 animate-spin"}):e.jsx(ha,{className:"w-4 h-4 mr-1"}),"Genereer klantadvies (PDF)"]})]})]}),e.jsx(ga,{open:Re,onOpenChange:Be,children:e.jsxs(xa,{className:"max-w-4xl max-h-[92vh] overflow-y-auto",children:[e.jsx(ma,{children:e.jsxs(ja,{className:"flex flex-wrap items-center justify-between gap-2 pr-6",children:[e.jsx("span",{children:"Klantadvies"}),e.jsxs(ge,{size:"sm",variant:"outline",onClick:Ve,children:[e.jsx(ya,{className:"w-4 h-4 mr-1"})," Downloaden"]})]})}),e.jsx(_a,{blob:je})]})}),q&&e.jsx("p",{className:"text-sm text-muted-foreground",children:"Gegevens laden…"}),!q&&G.length===0&&e.jsxs(Ne,{children:[e.jsx(We,{className:"h-4 w-4"}),e.jsx(ye,{children:"Nog geen batterijproducten"}),e.jsxs(ze,{children:["Voeg eerst producten met prijzen en degradatie toe onder"," ",e.jsx(Ye,{className:"underline",to:"/portaal/accu-calculator/instellingen",children:"Instellingen → Accu Calculator"}),"."]})]}),e.jsxs(va,{value:h,onValueChange:F,children:[e.jsxs(pa,{className:"flex-wrap h-auto",children:[e.jsx(_e,{value:"invoer",children:"Invoer"}),e.jsx(_e,{value:"technisch",children:"Technisch"}),e.jsx(_e,{value:"financieel",children:"Financieel"}),e.jsx(_e,{value:"klant",children:"Klantweergave"}),e.jsx(_e,{value:"details",children:"Technische & financiële details"}),e.jsx(_e,{value:"opgeslagen",children:"Opgeslagen berekeningen"})]}
1),e.jsxs(we,{value:"invoer",className:"space-y-4 mt-4",children:[e.jsxs(D,{children:[e.jsxs(E,{className:"pb-3",children:[e.jsx(R,{className:"text-base",children:"Klanttype & btw-basis"}),e.jsx(le,{children:"Bepaalt op welke btw-basis investering, energieprijzen, terugleververgoeding en terugleverkosten met elkaar worden vergeleken."})]}),e.jsxs(A,{className:"grid gap-3 sm:grid-cols-3",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx(L,{className:"text-xs",children:"BTW-berekening"}),e.jsxs(se,{value:(s.btw_modus??(s.zakelijk?"exclusief":"inclusief"))==="exclusief"?"zakelijk":"particulier",onValueChange:a=>be(i=>({...i,zakelijk:a==="zakelijk",btw_modus:a==="zakelijk"?"exclusief":"inclusief"})),children:[e.jsx(te,{children:e.jsx(ne,{})}),e.jsxs(re,{className:"bg-popover z-50",children:[e.jsx(z,{value:"particulier",children:"Particulier – inclusief btw"}),e.jsx(z,{value:"zakelijk",children:"Zakelijk – exclusief btw"})]})]}),e.jsx("p",{className:"text-[10px] text-muted-foreground",children:"Alle bedragen in de ROI worden hiernaar genormaliseerd."})]}),e.jsx(S,{label:"BTW-percentage",suffix:"%",value:s.btw_percentage??21,onChange:a=>g("btw_percentage",a??21)}),e.jsxs("div",{className:"space-y-3 pt-5",children:[e.jsxs("div",{className:"flex items-center justify-between gap-2",children:[e.jsx(L,{className:"text-xs",children:"Ingevoerde tarieven incl. btw"}),e.jsx(ue,{checked:s.tarieven_incl_btw!==!1,onCheckedChange:a=>g("tarieven_incl_btw",a)})]}),e.jsxs("div",{className:"flex items-center justify-between gap-2",children:[e.jsx(L,{className:"text-xs",children:"Investering incl. btw"}),e.jsx(ue,{checked:!!s.investering_incl_btw,onCheckedChange:a=>g("investering_incl_btw",a)})]}),e.jsxs("div",{className:"flex items-center justify-between gap-2",children:[e.jsx(L,{className:"text-xs",children:"BTW-basis tarieven onbekend"}),e.jsx(ue,{checked:!!s.btw_basis_onbekend,onCheckedChange:a=>g("btw_basis_onbekend",a)})]})]}),s.btw_basis_onbekend&&e.jsx("p",{className:"sm:col-span-3 text-xs text-destructive",children:"Let op: van minstens één tarief is niet bekend of het inclusief of exclusief btw is. De terugverdientijd kan hierdoor afwijken."})]})]}),e.jsxs(D,{children:[e.jsx(E,{className:"pb-3",children:e.jsx(R,{className:"text-base",children:"Klant & energieprofiel"})}),e.jsxs(A,{className:"grid gap-3 sm:grid-cols-3",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx(L,{className:"text-xs",children:"Klantnaam"}),e.jsx(Qe,{value:s.klantnaam,onChange:a=>g("klantnaam",a.target.value)})]}),e.jsxs("div",{className:"space-y-1 sm:col-span-2",children:[e.jsx(L,{className:"text-xs",children:"Adres"}),e.jsx(Qe,{value:s.adres,onChange:a=>g("adres",a.target.value)})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx(L,{className:"text-xs",children:"Type verbruiksinvoer"}),e.jsxs(se,{value:s.verbruik_invoer??"totaal",onValueChange:a=>g("verbruik_invoer",a),children:[e.jsx(te,{children:e.jsx(ne,{})}),e.jsxs(re,{className:"bg-popover z-50",children:[e.jsx(z,{value:"totaal",children:"Totaal jaarverbruik (incl. eigen zon)"}),e.jsx(z,{value:"netafname",children:"Netafname (uit het net)"})]})]})]}),e.jsx(S,{label:(s.verbruik_invoer??"totaal")==="netafname"?"Netafname per jaar (uit net)":"Totaal jaarverbruik elektriciteit",suffix:"kWh",value:s.jaarverbruik_kwh,onChange:a=>g("jaarverbruik_kwh",a),error:k("Jaarverbruik elektriciteit")}),e.jsx(S,{label:"Zonneproductie per jaar",suffix:"kWh",value:s.pv_productie_kwh,onChange:a=>g("pv_productie_kwh",a),error:k("Jaarlijkse zonneproductie")}),e.jsx(S,{label:"Teruglevering per jaar",suffix:"kWh",value:s.teruglevering_kwh,onChange:a=>g("teruglevering_kwh",a),error:k("Jaarlijkse teruglevering")}),e.jsxs("div",{className:"space-y-1",children:[e.jsx(L,{className:"text-xs",children:"Gebruiksprofiel (verbruik avond/nacht)"}),e.jsxs(se,{value:String(s.avondnacht_aandeel),onValueChange:a=>g("avondnacht_aandeel",Number(a)),children:[e.jsx(te,{children:e.jsx(ne,{})}),e.jsxs(re,{children:[e.jsx(z,{value:"35",children:"Veel overdag thuis — 35%"}),e.jsx(z,{value:"50",children:"Gemiddeld huishouden — 50%"}),e.jsx(z,{value:"65",children:"Overdag weinig thuis — 65%"}),e.jsx(z,{value:"70",children:"Veel avondverbruik / EV 's avonds — 70%"})]})]}),e.jsx("p",{className:"text-[10px] text-muted-foreground",children:"Bepaalt hoeveel de accu 's avonds kwijt kan."})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx(L,{className:"text-xs",children:"Kalenderjaar (regelgeving)"}),e.jsxs(se,{value:String(s.jaar),onValueChange:a=>g("jaar",Number(a)),children:[e.jsx(te,{children:e.jsx(ne,{})}),e.jsx(re,{children:(l.length?l.map(a=>a.jaar):[Ae,Ae+1]).map(a=>e.jsx(z,{value:String(a),children:a},a))})]})]}),e.jsxs("div",{className:"flex items-center justify-between gap-2 pt-5",children:[e.jsx(L,{className:"text-xs",children:"Kwartier-/uurdata beschikbaar"}),e.jsx(ue,{checked:s.heeft_intervaldata,onCheckedChange:a=>g("heeft_intervaldata",a)})]})]})]}),e.jsxs(D,{children:[e.jsxs(E,{className:"pb-3",children:[e.jsx(R,{className:"text-base",children:"Energiecontract"}),e.jsx(le,{children:"De invoervelden en rekenmethode passen zich aan het contracttype aan."})]}),e.jsxs(A,{className:"space-y-4",children:[e.jsx("div",{className:"grid gap-3 sm:grid-cols-3",children:e.jsxs("div",{className:"space-y-1",children:[e.jsx(L,{className:`text-xs ${k("Type energiecontract")?"text-destructive":""}`,children:"Type energiecontract"}),e.jsxs(se,{value:s.contracttype,onValueChange:a=>g("contracttype",a),children:[e.jsx(te,{className:k("Type energiecontract")?"border-destructive ring-1 ring-destructive":"",children:e.jsx(ne,{})}),e.jsxs(re,{children:[e.jsx(z,{value:"vast",children:"Vast"}),e.jsx(z,{value:"variabel",children:"Variabel"}),e.jsx(z,{value:"dynamisch",children:"Dynamisch"}),e.jsx(z,{value:"onbekend",children:"Onbekend"})]})]})]})}),(s.contracttype==="vast"||s.contracttype==="variabel")&&e.jsxs("div",{className:"grid gap-3 sm:grid-cols-3",children:[e.jsx(S,{label:`Afnametarief (incl. energiebelasting, ${s.tarieven_incl_btw===!1?"excl.":"incl."} btw)`,suffix:"€/kWh",value:s.afnametarief,onChange:a=>g("afnametarief",a),error:k("Afnametarief elektriciteit")}),e.jsx(S,{label:"Terugleververgoeding",suffix:"€/kWh",value:s.terugleververgoeding,onChange:a=>g("terugleververgoeding",a),error:k("Terugleververgoeding")})]}),s.contracttype==="dynamisch"&&e.jsxs("div",{className:"grid gap-3 sm:grid-cols-3",children:[e.jsx(S,{label:"Gemiddelde inkoopprijs (kale markt)",
1suffix:"€/kWh",value:s.dyn_gem_inkoopprijs_markt,onChange:a=>g("dyn_gem_inkoopprijs_markt",a),error:k("Gemiddelde inkoopprijs")}),e.jsx(S,{label:"Gemiddelde verkoopprijs (kale markt)",suffix:"€/kWh",value:s.dyn_gem_verkoopprijs_markt,onChange:a=>g("dyn_gem_verkoopprijs_markt",a),error:k("Gemiddelde verkoopprijs")}),e.jsx(S,{label:"Energiebelasting/opslag",suffix:"€/kWh",value:s.dyn_energiebelasting,onChange:a=>g("dyn_energiebelasting",a),hint:Q?`Standaard ${Q.energiebelasting_per_kwh} volgens ${Q.jaar}`:void 0}),e.jsx(S,{label:"Leveranciersopslag afname",suffix:"€/kWh",value:s.dyn_opslag_afname,onChange:a=>g("dyn_opslag_afname",a)}),e.jsx(S,{label:"Leveranciersopslag teruglevering",suffix:"€/kWh",value:s.dyn_opslag_teruglevering,onChange:a=>g("dyn_opslag_teruglevering",a)}),e.jsx(S,{label:"Vaste transactiekosten",suffix:"€/kWh",value:s.dyn_transactiekosten_per_kwh,onChange:a=>g("dyn_transactiekosten_per_kwh",a??0)}),e.jsx(S,{label:"Btw",suffix:"%",value:s.dyn_btw_percentage,onChange:a=>g("dyn_btw_percentage",a)}),e.jsx(S,{label:"Handelsdagen per jaar",value:s.dyn_handelsdagen,onChange:a=>g("dyn_handelsdagen",a??0),hint:"Dagen waarop laden/ontladen op prijsverschil realistisch is."})]}),e.jsx(ea,{}),e.jsxs("div",{className:"grid gap-3 sm:grid-cols-3",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx(L,{className:"text-xs",children:"Terugleverkosten"}),e.jsxs(se,{value:s.terugleverkosten.model,onValueChange:a=>g("terugleverkosten",{...s.terugleverkosten,model:a}),children:[e.jsx(te,{children:e.jsx(ne,{})}),e.jsxs(re,{children:[e.jsx(z,{value:"geen",children:"Nee"}),e.jsx(z,{value:"per_maand",children:"Vast bedrag per maand"}),e.jsx(z,{value:"per_jaar",children:"Vast bedrag per jaar"}),e.jsx(z,{value:"per_kwh",children:"Bedrag per teruggeleverde kWh"}),e.jsx(z,{value:"staffel",children:"Staffel op jaarteruglevering"})]})]})]}),s.terugleverkosten.model!=="geen"&&s.terugleverkosten.model!=="staffel"&&e.jsx(S,{label:"Bedrag",value:s.terugleverkosten.bedrag,onChange:a=>g("terugleverkosten",{...s.terugleverkosten,bedrag:a??0}),suffix:s.terugleverkosten.model==="per_kwh"?"€/kWh":"€"})]}),s.terugleverkosten.model==="staffel"&&e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"grid gap-3 sm:grid-cols-2",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx(L,{className:"text-xs",children:"Tariefmodel (leverancier / contract)"}),e.jsxs(se,{value:s.terugleverkosten.tariefmodel_id??"",onValueChange:a=>{const i=c.find(j=>j.id===a);g("terugleverkosten",{...s.terugleverkosten,tariefmodel_id:a,tariefmodel_naam:(i==null?void 0:i.naam)??null,handmatig:!1,staffels:((i==null?void 0:i.staffels)??[]).map(j=>({...j}))})},children:[e.jsx(te,{children:e.jsx(ne,{placeholder:"Kies een tariefmodel"})}),e.jsxs(re,{children:[c.filter(a=>a.actief).length===0&&e.jsx("div",{className:"px-2 py-1.5 text-sm text-muted-foreground",children:"Nog geen tariefmodellen ingevoerd"}),c.filter(a=>a.actief).map(a=>e.jsx(z,{value:a.id,children:a.naam},a.id))]})]})]}),e.jsxs("div",{className:"flex items-center justify-between gap-3 sm:pt-5",children:[e.jsxs("div",{children:[e.jsx(L,{className:"text-xs",children:"Handmatig aanpassen"}),e.jsx("p",{className:"text-[11px] text-muted-foreground",children:"Alleen voor deze berekening"})]}),e.jsx(ue,{checked:!!s.terugleverkosten.handmatig,onCheckedChange:a=>g("terugleverkosten",{...s.terugleverkosten,handmatig:a})})]})]}),e.jsx(ka,{staffels:s.terugleverkosten.staffels??[],readOnly:!s.terugleverkosten.handmatig,onChange:a=>g("terugleverkosten",{...s.terugleverkosten,staffels:a})}),e.jsx("p",{className:"text-[11px] text-muted-foreground",children:"De calculator kiest automatisch de staffel op basis van de berekende jaarteruglevering (met en zonder accu). Grenzen: vanaf inclusief, tot exclusief."})]})]})]}),e.jsxs(D,{children:[e.jsx(E,{className:"pb-3",children:e.jsx(R,{className:"text-base",children:"Wensen, elektrische auto en investering"})}),e.jsxs(A,{className:"space-y-4",children:[e.jsxs("div",{className:"grid gap-3 sm:grid-cols-3",children:[e.jsxs("div",{className:"flex items-center justify-between gap-2 pt-5",children:[e.jsx(L,{className:"text-xs",children:"Noodstroom gewenst"}),e.jsx(ue,{checked:s.noodstroom_gewenst,onCheckedChange:a=>g("noodstroom_gewenst",a)})]}),s.noodstroom_gewenst&&e.jsxs(e.Fragment,{children:[e.jsx(S,{label:"Gewenste noodstroomduur",suffix:"uur",value:s.noodstroom_uren,onChange:a=>g("noodstroom_uren",a??0)}),e.jsx(S,{label:"Vermogensvraag tijdens noodstroom",suffix:"kW",value:s.noodstroom_vermogen_kw,onChange:a=>g("noodstroom_vermogen_kw",a??0)}),e.jsxs("p",{className:"text-[11px] text-muted-foreground sm:col-span-3",children:["Benodigde reserve:"," ",e.jsxs("span",{className:"font-medium text-foreground",children:[(s.noodstroom_uren*s.noodstroom_vermogen_kw).toFixed(1)," kWh"]})," ","bruikbare capaciteit (",s.noodstroom_uren," uur ×"," ",s.noodstroom_vermogen_kw," kW). Deze capaciteit blijft gereserveerd en wordt niet meegerekend voor besparing of handel."]})]}),e.jsxs("div",{className:"flex items-center justify-between gap-2 pt-5",children:[e.jsx(L,{className:"text-xs",children:"Elektrische auto aanwezig"}),e.jsx(ue,{checked:s.ev_aanwezig,onCheckedChange:a=>g("ev_aanwezig",a)})]}),s.ev_aanwezig&&e.jsxs(e.Fragment,{children:[e.jsx(S,{label:"Laadbehoefte auto per jaar",suffix:"kWh",value:s.ev_kwh_per_jaar,onChange:a=>g("ev_kwh_per_jaar",a??0)}),e.jsx(S,{label:"Aandeel direct op zon geladen",suffix:"%",value:s.ev_zon_aandeel,onChange:a=>g("ev_zon_aandeel",a??0),hint:"Deze kWh loopt niet via de accu (geen dubbeltelling)."})]})]}),e.jsx(ea,{}),e.jsxs("div",{className:"grid gap-3 sm:grid-cols-3",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx(L,{className:`text-xs ${k("Batterijproduct (investering)")?"text-destructive":""}`,children:"Batterijproduct"}),e.jsxs(se,{value:s.product_id??(O==null?void 0:O.id)??"",onValueChange:a=>g("product_id",a),children:[e.jsx(te,{className:k("Batterijproduct (investering)")?"border-destructive ring-1 ring-destructive":"",children:e.jsx(ne,{placeholder:"Kies product"})}),e.jsx(re,{children:G.map(a=>e.jsxs(z,{value:a.id,children:[a.merk?`${a.merk} — `:"",a.naam," (",a.module_kwh," kWh/module)"]},a.id))})]})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx(L,{className:"text-xs",children:"Financieel scenario"}),e.jsxs(se,{value:s.scenario,onValueChange:a=>g("scenario",a),children:[e.jsx(te,{children:e.jsx(ne,{})}),e.jsxs(re,{children:[e.jsx(z,{value:"voorzichtig",children:"Voorzichtig"}),e.jsx(z,{value:"verwacht",children:"Verwacht"}),e.jsx(z,{value:"gunstig",children:"Gunstig"})]})]})]}),e.jsx(S,{label:"Verwachte jaarlijkse wijziging energieprijs",suffix:"%",value:s.prijsontwikkeling_percentage,onChange:a=>g("prijsontwikkeling_percentage",a),hint:`Leeg = standaard ${M.prijsontwikkeling_percentage}%`}),e.jsxs("div",{className:"space-y-1",children:[e.jsx(L,{className:"text-xs",children:"Subsidie / fiscaal voordeel"}),e.jsxs(se,{value:s.subsidie_type,onValueChange:a=>g("subsidie_type",a),children:[e.jsx(te,{children:e.jsx(ne,{})}),e.jsxs(re,{children:[e.jsx(z,{value:"geen",children:"Geen"}),e.jsx(z,{value:"subsidie",children:"Subsidie"}),e.jsx(z,{value:"fiscaal",children:"Fiscaal voordeel"}),e.jsx(z,{value:"bedrag",children:"Handmatig bedrag"}),e.jsx(z,{value:"percentage",children:"Handmatig percentage"})]})]})]}),s.subsidie_type==="percentage"?e.jsx(S,{label:"Percentage",suffix:"%",value:s.subsidie_percentage,onChange:a=>g("subsidie_percentage",a??0)}):s.subsidie_type!=="geen"&&e.jsx(S,{label:"Bedrag",suffix:"€",value:s.subsidie_bedrag,onChange:a=>g("subsidie_bedrag",a??0)})]}),s.subsidie_type==="fiscaal"&&e.jsx("p",{className:"text-xs text-muted-foreground",children:"Fiscaal voordeel is een indicatie en afhankelijk van de individuele fiscale situatie van de klant."}),n.configs.length>0&&e.jsxs("div",{className:"space-y-2",children:[e.jsx(L,{className:"text-xs",children:`Handmatige verkoopprijs per configuratie (${s.investering_incl_btw?"incl.":"excl."} btw)`}),e.jsx("div",{className:"grid gap-3 sm:grid-cols-3",children:n.configs.map(a=>e.jsx(S,{label:`${a.label} — ${a.capaciteit_kwh.toFixed(0)} kWh`,suffix:"€",value:s.handmatige_verkoopprijs[String(a.modules)]??null,onChange:i=>g("handmatige_verkoopprijs",{...s.handmatige_verkoopprijs,[String(a.modules)]:i}),placeholder:String(Math.round(a.investering.klant_totaal))},a.key))})]})]})]})]}
1),e.jsx(we,{value:"technisch",className:"space-y-4 mt-4",children:n.ok?e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"grid gap-3 sm:grid-cols-3",children:n.configs.map(a=>e.jsxs(D,{className:a.key===n.eindadvies_key?"border-primary":"",children:[e.jsxs(E,{className:"pb-2",children:[e.jsxs("div",{className:"flex items-center justify-between gap-2",children:[e.jsx(R,{className:"text-base",children:a.label}),a.key===n.eindadvies_key&&e.jsx(ie,{children:"Advies"})]}),e.jsxs(le,{children:[a.modules," × ",O==null?void 0:O.module_kwh," kWh ="," ",a.capaciteit_kwh.toFixed(0)," kWh"]})]}),e.jsxs(A,{className:"text-sm space-y-1",children:[e.jsx(_,{label:"Technisch bruikbaar",waarde:u(a.technisch_bruikbaar_kwh)}),a.noodstroom_reserve_kwh>0&&e.jsx(_,{label:"Reserve noodstroom",waarde:u(a.noodstroom_reserve_kwh)}),e.jsx(_,{label:"Voor energieoptimalisatie",waarde:u(a.bruikbaar_kwh)}),e.jsx(_,{label:"Geladen per jaar",waarde:u(a.stromen.geladen_kwh)}),e.jsx(_,{label:"Ontladen per jaar",waarde:u(a.stromen.pv_via_batterij)}),e.jsx(_,{label:"Batterijverlies",waarde:u(a.stromen.batterijverlies)}),e.jsx(_,{label:"Equivalente cycli / jaar",waarde:a.stromen.volledige_cycli.toFixed(0)}),e.jsx(_,{label:"Benuttingsgraad",waarde:`${a.stromen.benuttingsgraad_pct.toFixed(0)}%`}),e.jsx(_,{label:"Resterende teruglevering",waarde:u(a.stromen.teruglevering)}),e.jsx(_,{label:"Resterende netafname",waarde:u(a.stromen.netafname)}),e.jsx(_,{label:"Zelfconsumptie",waarde:`${a.stromen.zelfconsumptie_pct.toFixed(0)}%`}),e.jsx(_,{label:"Zelfvoorziening",waarde:`${a.stromen.zelfvoorziening_pct.toFixed(0)}%`}),e.jsx(_,{label:"Technisch passend",waarde:a.technisch_passend?"Ja":"Nee"}),a.technische_opmerkingen.map((i,j)=>e.jsx("p",{className:"text-xs text-muted-foreground",children:i},j))]})]},a.key))}),e.jsxs(D,{children:[e.jsx(E,{className:"pb-2",children:e.jsx(R,{className:"text-base",children:"Ons advies"})}),e.jsxs(A,{className:"space-y-3 text-sm",children:[e.jsxs("p",{className:"text-lg font-semibold",children:[v==null?void 0:v.capaciteit_kwh.toFixed(0)," kWh batterijopslag —"," ",v==null?void 0:v.modules," × ",O==null?void 0:O.module_kwh," kWh module"]}),e.jsxs("div",{children:[e.jsx("p",{className:"font-medium mb-1",children:"Waarom deze configuratie?"}),e.jsx("ul",{className:"list-disc pl-5 space-y-1",children:n.argumenten.map((a,i)=>e.jsx("li",{children:a},i))})]}),e.jsxs("div",{className:"grid gap-1 sm:grid-cols-2",children:[e.jsx(_,{label:"Technisch passend",waarde:v!=null&&v.technisch_passend?"Ja":"Nee"}),e.jsx(_,{label:"Economisch optimaal",waarde:n.eindadvies_key===n.economisch_optimum_key?"Ja":"Nee"}),e.jsx(_,{label:"Geschikt voor back-up",waarde:s.noodstroom_gewenst?O!=null&&O.noodstroom_mogelijk?"Ja":"Nee":"Niet gevraagd"}),e.jsx(_,{label:"Betrouwbaarheid berekening",waarde:n.betrouwbaarheid})]}),H&&p&&H.key!==p.key&&e.jsxs(Ne,{children:[e.jsx(ye,{children:"Financieel versus technisch"}),e.jsxs(ze,{children:["Financieel optimum: ",p.capaciteit_kwh.toFixed(0)," kWh — advies op basis van alle wensen:"," ",H.capaciteit_kwh.toFixed(0)," kWh. Voor maximale financiële benutting zou"," ",p.capaciteit_kwh.toFixed(0)," kWh voldoende zijn; vanwege de technische wensen adviseren wij"," ",H.capaciteit_kwh.toFixed(0)," kWh."]})]})]})]})]}):e.jsx(qe,{ontbrekend:n.ontbrekend})}),e.jsx(we,{value:"financieel",className:"space-y-4 mt-4",children:!n.ok||!v||!n.basis?e.jsx(qe,{ontbrekend:n.ontbrekend}):e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[e.jsxs(ie,{variant:"outline",children:["Scenario: ",s.scenario]}),e.jsxs(ie,{variant:"outline",children:["Betrouwbaarheid: ",n.betrouwbaarheid]}),e.jsxs(ie,{variant:"outline",children:["Energieprijsontwikkeling:"," ",s.prijsontwikkeling_percentage??M.prijsontwikkeling_percentage,"% per jaar"]})]}),e.jsxs("div",{className:"grid gap-3 grid-cols-2 lg:grid-cols-4",children:[e.jsx(Le,{label:`Investering (${(s.btw_modus??(s.zakelijk?"exclusief":"inclusief"))==="exclusief"?"excl.":"incl."} btw)`,waarde:d(v.netto_investering)}),e.jsx(Le,{label:"Geschat voordeel per jaar",waarde:d(v.jaarvoordeel)}),e.jsx(Le,{label:"Terugverdientijd",waarde:v.terugverdientijd?`${v.terugverdientijd.toFixed(1)} jaar`:"> 15 jaar"}),e.jsx(Le,{label:"Zelfconsumptie",waarde:`${n.basis.zelfconsumptie_pct.toFixed(0)}% → ${v.stromen.zelfconsumptie_pct.toFixed(0)}%`})]}),e.jsxs(D,{children:[e.jsxs(E,{className:"pb-2",children:[e.jsx(R,{className:"text-base",children:"Opbouw jaarlijkse besparing"}),e.jsxs(le,{children:[v.label," — ",v.capaciteit_kwh.toFixed(0)," kWh"]})]}),e.jsx(A,{children:e.jsx(ve,{children:e.jsxs(pe,{children:[v.posten.map((a,i)=>e.jsxs(U,{children:[e.jsxs(w,{className:"align-top",children:[e.jsx("div",{children:a.label}),e.jsx("div",{className:"text-xs text-muted-foreground",children:a.toelichting})]}),e.jsxs(w,{className:"text-right whitespace-nowrap align-top",children:[d(a.label.includes("Netto voordeel eigen zonne-energie")?v.posten.filter(j=>j.label==="Besparing netafname"||j.label==="Gemiste terugleververgoeding").reduce((j,$)=>j+$.bedrag,0):a.bedrag)," ","/ jaar"]})]},i)),e.jsxs(U,{className:"font-semibold",children:[e.jsx(w,{children:"Totaal"}),e.jsxs(w,{className:"text-right whitespace-nowrap",children:[d(v.jaarvoordeel)," / jaar"]})]})]})})})]}),e.jsxs(D,{children:[e.jsx(E,{className:"pb-2",children:e.jsx(R,{className:"text-base",children:"Vergelijking batterijgroottes"})}),e.jsx(A,{className:"overflow-x-auto",children:e.jsxs(ve,{children:[e.jsx($e,{children:e.jsxs(U,{children:[e.jsx(W,{children:" "}),e.jsx(W,{children:"Geen accu"}),n.configs.map(a=>e.jsxs(W,{children:[a.label,a.key===n.eindadvies_key&&e.jsx(ie,{className:"ml-1",children:"Beste balans"})]},a.key))]})}),e.jsxs(pe,{children:[e.jsx(he,{label:"Capaciteit",zonder:"—",waarden:n.
1configs.map(a=>`${a.capaciteit_kwh.toFixed(0)} kWh`)}),e.jsx(he,{label:"Investering (netto)",zonder:"—",waarden:n.configs.map(a=>d(a.netto_investering))}),e.jsx(he,{label:"Netafname",zonder:u(n.basis.netafname),waarden:n.configs.map(a=>u(a.stromen.netafname))}),e.jsx(he,{label:"Teruglevering",zonder:u(n.basis.teruglevering),waarden:n.configs.map(a=>u(a.stromen.teruglevering))}),e.jsx(he,{label:"Zelfconsumptie",zonder:`${n.basis.zelfconsumptie_pct.toFixed(0)}%`,waarden:n.configs.map(a=>`${a.stromen.zelfconsumptie_pct.toFixed(0)}%`)}),e.jsx(he,{label:"Jaarvoordeel",zonder:"—",waarden:n.configs.map(a=>d(a.jaarvoordeel))}),e.jsx(he,{label:"Terugverdientijd",zonder:"—",waarden:n.configs.map(a=>a.terugverdientijd?`${a.terugverdientijd.toFixed(1)} jaar`:"> 15 jaar")}),e.jsx(he,{label:"10-jaars resultaat",zonder:"—",waarden:n.configs.map(a=>d(a.resultaat_10jaar))}),e.jsx(he,{label:"15-jaars resultaat",zonder:"—",waarden:n.configs.map(a=>d(a.resultaat_15jaar))})]})]})})]}),e.jsxs("div",{className:"grid gap-4 lg:grid-cols-2",children:[e.jsxs(D,{children:[e.jsxs(E,{className:"pb-2",children:[e.jsx(R,{className:"text-base",children:"Investering & cumulatieve besparing"}),e.jsx(le,{children:"Het break-evenpunt is waar de lijn de nullijn kruist."})]}),e.jsx(A,{className:"h-72",children:e.jsx(Ge,{width:"100%",height:"100%",children:e.jsxs(Fa,{data:ae,children:[e.jsx(Je,{strokeDasharray:"3 3"}),e.jsx(Ke,{dataKey:"jaar",tick:{fontSize:11}}),e.jsx(Ze,{tick:{fontSize:11}}),e.jsx(He,{formatter:a=>d(Number(a))}),e.jsx(aa,{}),e.jsx(za,{y:0,stroke:"hsl(var(--foreground))"}),n.configs.map((a,i)=>e.jsx(Ca,{type:"monotone",dataKey:a.label,stroke:`hsl(var(--chart-${i%5+1}))`,dot:!1,strokeWidth:2},a.key))]})})})]}),e.jsxs(D,{children:[e.jsx(E,{className:"pb-2",children:e.jsx(R,{className:"text-base",children:"Jaarlijkse energiestromen"})}),e.jsx(A,{className:"h-72",children:e.jsx(Ge,{width:"100%",height:"100%",children:e.jsxs(sa,{data:Fe,children:[e.jsx(Je,{strokeDasharray:"3 3"}),e.jsx(Ke,{dataKey:"naam",tick:{fontSize:11}}),e.jsx(Ze,{tick:{fontSize:11}}),e.jsx(He,{formatter:a=>`${a} kWh`}),e.jsx(aa,{}),["Direct eigen PV","PV via batterij","Teruglevering","Netafname","Batterijverlies"].map((a,i)=>e.jsx(ta,{dataKey:a,fill:`hsl(var(--chart-${i%5+1}))`},a))]})})})]}),e.jsxs(D,{children:[e.jsx(E,{className:"pb-2",children:e.jsx(R,{className:"text-base",children:"Accucapaciteit versus financieel rendement"})}),e.jsx(A,{className:"h-64",children:e.jsx(Ge,{width:"100%",height:"100%",children:e.jsxs(sa,{data:Ee,children:[e.jsx(Je,{strokeDasharray:"3 3"}),e.jsx(Ke,{dataKey:"capaciteit",tick:{fontSize:11}}),e.jsx(Ze,{tick:{fontSize:11}}),e.jsx(He,{formatter:a=>d(Number(a))}),e.jsx(ta,{dataKey:"Jaarvoordeel",fill:"hsl(var(--chart-1))"})]})})})]}),e.jsxs(D,{children:[e.jsx(E,{className:"pb-2",children:e.jsx(R,{className:"text-base",children:"Vergelijking capaciteiten"})}),e.jsx(A,{className:"overflow-x-auto",children:e.jsxs(ve,{children:[e.jsx($e,{children:e.jsxs(U,{children:[e.jsx(W,{children:"Capaciteit"}),e.jsx(W,{className:"text-right",children:"Netto investering"}),e.jsx(W,{className:"text-right",children:"PV via batterij"}),e.jsx(W,{className:"text-right",children:"Rest teruglevering"}),e.jsx(W,{className:"text-right",children:"Jaarvoordeel"}),e.jsx(W,{className:"text-right",children:"Extra voordeel"}),e.jsx(W,{className:"text-right",children:"TVT extra module"})]})}),e.jsx(pe,{children:n.configs.map((a,i)=>{const j=i>0?n.marginaal[i-1]:null;return e.jsxs(U,{className:a.key===n.eindadvies_key?"bg-muted/60 font-medium":"",children:[e.jsxs(w,{children:[a.capaciteit_kwh.toFixed(0)," kWh",a.key===n.eindadvies_key&&e.jsx(ie,{className:"ml-2",children:"Advies"})]}),e.jsx(w,{className:"text-right",children:d(a.netto_investering)}),e.jsx(w,{className:"text-right",children:u(a.stromen.pv_via_batterij)}),e.jsx(w,{className:"text-right",children:u(a.stromen.teruglevering)}),e.jsx(w,{className:"text-right",children:d(a.jaarvoordeel)}),e.jsx(w,{className:"text-right",children:j?`${d(j.extra_besparing)} / jaar`:"—"}),e.jsx(w,{className:"text-right",children:j?j.terugverdientijd_extra!=null?`${j.terugverdientijd_extra.toFixed(1)} jaar`:"> 15 jaar":"—"})]},a.key)})})]})})]})]}),e.jsxs(D,{children:[e.jsx(E,{className:"pb-2",children:e.jsx(R,{className:"text-base",children:"Economisch optimum"})}),e.jsxs(A,{className:"text-sm space-y-2",children:[e.jsx(_,{label:"Technisch advies",
1waarde:`${H==null?void 0:H.capaciteit_kwh.toFixed(0)} kWh`}),e.jsx(_,{label:"Economisch optimum",waarde:`${p==null?void 0:p.capaciteit_kwh.toFixed(0)} kWh`}),e.jsx(_,{label:"Maximale configuratie",waarde:`${n.configs[n.configs.length-1].capaciteit_kwh.toFixed(0)} kWh`}),e.jsx("p",{className:"text-muted-foreground",children:n.advies_motivatie}),n.marginaal.map((a,i)=>e.jsx("p",{className:"text-xs text-muted-foreground",children:a.toelichting},i)),e.jsxs(ge,{variant:"outline",size:"sm",disabled:!0,children:["Door naar offerte ",e.jsx(ua,{className:"w-4 h-4 ml-1"})]}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Offertekoppeling volgt in de volgende fase; de gegevensstructuur (product, modules, omvormer, gateway, noodstroom, verkoopprijs) is al voorbereid."})]})]})]})}),e.jsx(we,{value:"klant",className:"space-y-4 mt-4",children:!n.ok||!v||!n.basis?e.jsx(qe,{ontbrekend:n.ontbrekend}):e.jsxs(D,{children:[e.jsxs(E,{className:"pb-2",children:[e.jsx(R,{className:"text-base",children:s.klantnaam||"Klantadvies"}),s.adres&&e.jsx(le,{children:s.adres})]}),e.jsxs(A,{className:"space-y-4 text-sm",children:[e.jsxs("div",{children:[e.jsx("p",{className:"font-medium",children:"Uw huidige situatie"}),e.jsx(_,{label:"Jaarverbruik",waarde:u(n.basis.verbruik)}),e.jsx(_,{label:"Zonneproductie",waarde:u(n.basis.pv_productie)}),e.jsx(_,{label:"Teruglevering",waarde:u(n.basis.teruglevering)})]}),e.jsxs("div",{children:[e.jsx("p",{className:"font-medium",children:"Ons advies"}),e.jsxs("p",{children:[v.capaciteit_kwh.toFixed(0)," kWh batterijopslag"]})]}),e.jsxs("div",{children:[e.jsx("p",{className:"font-medium",children:"Verwacht effect"}),e.jsxs("ul",{className:"list-disc pl-5",children:[e.jsx("li",{children:"Meer eigen zonne-energie gebruiken"}),e.jsx("li",{children:"Minder terugleveren"}),e.jsx("li",{children:"Lagere netafname"}),s.contracttype==="dynamisch"&&e.jsx("li",{children:"Mogelijkheid tot slim handelen met energie"}),s.noodstroom_gewenst&&e.jsx("li",{children:"Noodstroom beschikbaar"})]})]}),e.jsxs("div",{children:[e.jsx("p",{className:"font-medium",children:"Financiële indicatie"}),e.jsx(_,{label:`Investering (${(s.btw_modus??(s.zakelijk?"exclusief":"inclusief"))==="exclusief"?"excl.":"incl."} btw)`,waarde:d(v.netto_investering)}),e.jsx(_,{label:"Verwacht jaarlijks voordeel",waarde:d(v.jaarvoordeel)}),e.jsx(_,{label:"Indicatieve terugverdientijd",waarde:v.terugverdientijd?`${v.terugverdientijd.toFixed(1)} jaar`:"> 15 jaar"}),e.jsx(_,{label:"Verwacht resultaat na 15 jaar",waarde:d(v.resultaat_15jaar)})]}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Deze berekening is een indicatie. Werkelijke resultaten zijn afhankelijk van onder andere energieverbruik, weersomstandigheden, energieprijzen, terugleververgoeding, systeeminstellingen en toekomstige wet- en regelgeving."})]})]})}),e.jsxs(we,{value:"details",className:"space-y-4 mt-4",children:[e.jsxs(D,{children:[e.jsx(E,{className:"pb-2",children:e.jsx(R,{className:"text-base",children:"Tarieven & prijsopbouw"})}),e.jsx(A,{className:"text-sm",children:n.prijzen?e.jsx(ve,{children:e.jsxs(pe,{children:[n.prijzen.opbouw.map((a,i)=>e.jsxs(U,{children:[e.jsx(w,{children:a.label}),e.jsx(w,{className:"text-right",children:Se(a.waarde)})]},i)),e.jsxs(U,{className:"font-semibold",children:[e.jsx(w,{children:"Waarde van 1 extra zelf gebruikte kWh"}),e.jsx(w,{className:"text-right",children:Se(n.prijzen.waarde_zelfconsumptie)})]})]})}):e.jsx("p",{className:"text-muted-foreground",children:"Nog geen tarieven bekend — vul het energiecontract in."})})]}),e.jsxs(D,{children:[e.jsx(E,{className:"pb-2",children:e.jsx(R,{className:"text-base",children:"Aannames & correctiefactoren"})}),e.jsx(A,{className:"text-sm grid gap-1 sm:grid-cols-2",children:n.aannames.map((a,i)=>e.jsx(_,{label:a.label,waarde:a.waarde},i))})]}),e.jsxs(D,{children:[e.jsxs(E,{className:"pb-2",children:[e.jsxs(R,{className:"text-base flex flex-wrap items-center gap-2",children:["Rekencontrole",e.jsx(ie,{variant:n.controles_ok?"secondary":"destructive",children:n.controles_ok?"Alle controles OK":"Controle mislukt"}),e.jsx(ie,{variant:"outline",children:n.engine_versie})]}),e.jsx(le,{children:"Interne consistentiechecks op energiebalans, netstromen en kasstromen (tolerantie 1 kWh / € 1)."})]}),e.jsxs(A,{className:"text-sm space-y-2",children:[!n.controles_ok&&e.jsxs(Ne,{variant:"destructive",children:[e.jsx(We,{className:"h-4 w-4"}),e.jsx(ye,{children:"Berekening niet betrouwbaar"}),e.jsx(ze,{children:"Opslaan en het klantadvies (PDF) zijn geblokkeerd tot de onderstaande controles kloppen."})]}),e.jsxs(ve,{children:[e.jsx($e,{children:e.jsxs(U,{children:[e.jsx(W,{children:"Controle"}),e.jsx(W,{children:"Resultaat"}),e.jsx(W,{children:"Toelichting"})]})}),e.jsx(pe,{children:n.controles.map((a,i)=>e.jsxs(U,{children:[e.jsx(w,{children:a.label}),e.jsx(w,{children:e.jsx(ie,{variant:a.ok?"secondary":"destructive",children:a.ok?"OK":"Afwijking"})}),e.jsx(w,{className:"text-xs text-muted-foreground",children:a.detail||"—"})]},i))})]})]})]}),e.jsxs(D,{children:[e.jsxs(E,{className:"pb-2",children:[e.jsx(R,{className:"text-base",children:"Databronnen"}),e.jsxs(le,{children:["Herkomst per parameter — bepaalt de betrouwbaarheidsklasse (",n.betrouwbaarheid,")."]})]}),e.jsxs(A,{className:"text-sm",children:[e.jsxs(ve,{children:[e.jsx($e,{children:e.jsxs(U,{children:[e.jsx(W,{children:"Parameter"}),e.jsx(W,{children:"Bron"}),e.jsx(W,{children:"Waarde"})]})}),e.jsx(pe,{children:n.databronnen.map((a,i)=>e.jsxs(U,{children:[e.jsx(w,{children:a.parameter}),e.jsx(w,{children:e.jsx(ie,{variant:"outline",children:a.bron})}),e.jsx(w,{className:"text-muted-foreground",children:a.waarde})]},i))})]}),n.klanttekst_nauwkeurigheid&&e.jsx("p",{className:"mt-3 text-xs text-muted-foreground",children:n.klanttekst_nauwkeurigheid})]})]}),n.ok&&e.jsxs(D,{children:[e.jsxs(E,{className:"pb-2",children:[e.jsx(R,{className:"text-base",children:"Interne calculatie & kasstromen"}),e.jsx(le,{children:"Alleen zichtbaar voor kantoor/administratie — nooit in het klantadvies."})]}),e.jsx(A,{className:"space-y-6",children:n.configs.map(a=>e.jsxs("div",{className:"space-y-2",children:[e.jsxs("p",{className:"font-medium",children:[a.label," — ",a.capaciteit_kwh.toFixed(0)," kWh"]}),e.jsxs("div",{className:"grid gap-1 sm:grid-cols-2 text-sm",children:[e.jsx(_,{label:"Interne inkoopwaarde",waarde:d(a.investering.intern_inkoop)}),e.jsx(_,{label:"Klantprijs",waarde:`${d(a.investering.klant_totaal)}${a.investering.handmatig?" (handmatig)":""}`}),e.jsx(_,{label:"Subsidie / fiscaal",waarde:d(a.subsidie)}),e.jsx(_,{label:"Netto investering",waarde:d(a.netto_investering)}),e.jsx(_,{label:"Batterijverlies",waarde:u(a.stromen.batterijverlies)}),e.jsx(_,{label:"Handelsvolume",waarde:u(a.stromen.handel_kwh)})]}),e.jsx("div",{className:"overflow-x-auto",children:e.jsxs(ve,{children:[e.jsx($e,{children:e.jsxs(U,{children:[e.jsx(W,{children:"Jaar"}),e.jsx(W,{className:"text-right",children:"Capaciteit"}),e.jsx(W,{className:"text-right",children:"Besparing"}),e.jsx(W,{className:"text-right",children:"Onderhoud"}),e.jsx(W,{className:"text-right",children:"Abonnement"}),e.jsx(W,{className:"text-right",children:"Netto"}),e.jsx(W,{className:"text-right",children:"Cumulatief"}),e.jsx(W,{className:"text-right",children:"Restinvestering"})]})}),e.jsx(pe,{children:a.jaren.filter(i=>[1,5,10,15].includes(i.jaar)).map(i=>e.jsxs(U,{children:[e.jsx(w,{children:i.jaar}),e.jsxs(w,{className:"text-right",children:[i.capaciteit_kwh.toFixed(1)," kWh"]}),e.jsx(w,{className:"text-right",children:d(i.besparing)}),e.jsx(w,{className:"text-right",children:d(i.onderhoud)}),e.jsx(w,{className:"text-right",children:d(i.abonnement)}),e.jsx(w,{className:"text-right",children:d(i.netto)}),e.jsx(w,{className:"text-right",children:d(i.cumulatief)}),e.jsx(w,{className:"text-right",children:d(i.resterende_investering)})]},i.jaar))})]})})]},a.key))})]})]}
1),e.jsx(we,{value:"opgeslagen",className:"space-y-4 mt-4",children:e.jsxs(D,{children:[e.jsxs(E,{className:"pb-3 flex-row items-start justify-between gap-3",children:[e.jsxs("div",{children:[e.jsx(R,{className:"text-base",children:"Opgeslagen berekeningen"}),e.jsx(le,{children:"Klik op een berekening om de invoer opnieuw te laden."})]}),e.jsxs(ge,{variant:"outline",size:"sm",onClick:T,disabled:m,children:[m?e.jsx(Xe,{className:"w-4 h-4 mr-1 animate-spin"}):e.jsx($a,{className:"w-4 h-4 mr-1"}),"Vernieuwen"]})]}),e.jsx(A,{children:r.length===0?e.jsx("p",{className:"text-sm text-muted-foreground",children:"Nog geen berekeningen opgeslagen. Gebruik “Berekening opslaan” onderaan de pagina."}):e.jsx("div",{className:"divide-y",children:r.map(a=>e.jsxs("div",{className:"flex items-center gap-3 py-2",children:[e.jsxs("div",{className:"min-w-0 flex-1",children:[e.jsx("p",{className:"font-medium truncate",children:a.klantnaam||"Zonder naam"}),e.jsx("p",{className:"text-xs text-muted-foreground truncate",children:[a.adres,new Date(a.created_at).toLocaleString("nl-NL")].filter(Boolean).join(" · ")})]}),e.jsxs(ge,{size:"sm",variant:"outline",onClick:()=>I(a),children:[e.jsx(Ta,{className:"w-4 h-4 mr-1"})," Openen"]}),e.jsx(ge,{size:"icon",variant:"ghost","aria-label":"Verwijderen",onClick:()=>V(a.id),children:e.jsx(Wa,{className:"w-4 h-4 text-destructive"})})]},a.id))})})]})})]}),C&&!n.ok&&(n.ontbrekend??[]).length>0&&e.jsxs(Ne,{variant:"destructive",children:[e.jsx(We,{className:"h-4 w-4"}),e.jsx(ye,{children:"Opslaan niet mogelijk – ontbrekende velden"}),e.jsx(ze,{children:e.jsx("ul",{className:"list-disc pl-4 space-y-0.5 text-xs",children:(n.ontbrekend??[]).map(a=>e.jsx("li",{children:a},a))})})]}),e.jsxs("div",{className:"flex flex-wrap items-center justify-between gap-3 pt-2 border-t",children:[e.jsx("p",{className:"text-sm text-muted-foreground",children:"Sla de huidige invoer en uitkomst op voor later gebruik."}),e.jsxs(ge,{onClick:B,children:[e.jsx(Sa,{className:"w-4 h-4 mr-1"})," Berekening opslaan"]})]})]}):e.jsx("div",{className:"p-4",children:e.jsxs(Ne,{children:[e.jsx(We,{className:"h-4 w-4"}),e.jsx(ye,{children:"Geen toegang"}),e.jsx(ze,{children:"De Accu Calculator is alleen beschikbaar voor kantoor en administratie."})]})})}function _({label:N,waarde:o}){return e.jsxs("div",{className:"flex items-baseline justify-between gap-3 border-b border-dashed last:border-0 py-0.5",children:[e.jsx("span",{className:"text-muted-foreground",children:N}),e.jsx("span",{className:"font-medium text-right",children:o})]})}function Le({label:N,waarde:o}){return e.jsx(D,{children:e.jsxs(A,{className:"p-4",children:[e.jsx("p",{className:"text-xs text-muted-foreground",children:N}),e.jsx("p",{className:"text-lg sm:text-xl font-semibold mt-1",children:o})]})})}function he({label:N,zonder:o,waarden:Y}){return e.jsxs(U,{children:[e.jsx(w,{className:"font-medium whitespace-nowrap",children:N}),e.jsx(w,{children:o}),Y.map((t,G)=>e.jsx(w,{className:"whitespace-nowrap",children:t},G))]})}function qe({ontbrekend:N}){return e.jsxs(Ne,{children:[e.jsx(We,{className:"h-4 w-4"}),e.jsx(ye,{children:"Onvoldoende gegevens voor een betrouwbare financiële berekening"}),e.jsxs(ze,{children:["De volgende gegevens ontbreken:",e.jsx("ul",{className:"list-disc pl-5 mt-1",children:N.map(o=>e.jsx("li",{children:o},o))})]})]})}export{es 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.