1import{_ as Je}from"./DlAUqK2U.js";import{ba as r,C as h,b2 as c,G as U,bk as $e,m as ce,u as t,b4 as E,b5 as _,bw as Y,n as y,v as V,bb as S,bi as w,bs as H,b8 as re,H as v,be as Ie,bg as Xe,d as D,w as Ze,A as et,c as te,bF as tt,b as le,c9 as at,b3 as it,bG as nt,x as ue}from"./Bp1wWSz3.js";import{_ as st,p as we,a as ot,b as rt,c as lt,d as ut}from"./DzhYOtme.js";import{u as De,hC as xe,hr as ct,hD as dt,hB as ft,gQ as mt,b as pt,t as yt,hm as vt,gY as bt,$ as j,e as z,gT as _t,gU as gt,hh as ht}from"#entry";import{_ as kt}from"./BMurGZjT.js";import{_ as Fe}from"./CIYm2YTp.js";import{_ as Bt}from"./DP_E-ZDP.js";import{_ as Ct}from"./CXUQLwPM.js";import{u as wt}from"./CEyBkMFL.js";import{d as $t}from"./DrqcTG5K.js";import"./BYST7aR8.js";import"./as4VcXEf.js";import"./BlaGicmF.js";import"./zAJi8wOU.js";import"./DLNjDMg6.js";import"./B8vdbLVe.js";import"./BuM4CgIY.js";import"./D352B6Bb.js";import"./BSvgLssO.js";import"./BCZFcyBU.js";import"./wvS2F_Qm.js";import"./CZzedpsj.js";import"./B1RYJYu9.js";import"./BRPk_5Gd.js";import"./CJvsS0h8.js";import"./Cpj98o6Y.js";import"./Bxdx_3wO.js";import"./CoaDwLwU.js";import"./BzLCLO6P.js";const It={},Dt={class:"my-2 grid animate-pulse gap-4"},xt={class:"card grid animate-pulse gap-4 lg:grid-cols-2"};function Ft(q,d){return r(),h("div",Dt,[d[0]||(d[0]=c("div",{class:"mb-4 h-6 bg-gray-300"},null,-1)),d[1]||(d[1]=c("div",{class:"h-12 w-full rounded-md bg-gray-300"},null,-1)),d[2]||(d[2]=c("div",{class:"h-6 w-1/2 animate-pulse rounded-md bg-gray-300"},null,-1)),c("div",xt,[(r(),h(U,null,$e(16,i=>c("div",{key:i,class:"h-12 w-full rounded-md bg-gray-300"})),64))])])}const Pt=Object.assign(Je(It,[["render",Ft]]),{__name:"CheckoutSkeletonForm"}),St={key:0,class:"text-2xl font-semibold max-sm:mx-4"},Et=ce({__name:"Title",setup(q){const d=De();return(i,m)=>t(d)?_("",!0):(r(),h("p",St,E(i.$t("Buying as a guest")),1))}}),Nt=Object.assign(Et,{__name:"CheckoutTitle"}),Ot={key:1,class:"flex min-w-0 items-start gap-4"},Tt={ref:"beneficiary-items",class:"scrollbar-thumb-primary-500 scrollbar-track-primary-200 flex min-w-0 flex-1 scrollbar-thin overflow-x-auto"},Vt={class:"relative mb-1 flex min-w-0 flex-1 gap-0.5"},Rt=["disabled","onClick"],qt=["disabled","onClick"],jt={key:0,class:"bg-primary-200 border-primary-400 z-1 flex items-center gap-2 rounded-t-md border-b-2 px-2 text-sm whitespace-nowrap"},At=ce({__name:"List",props:{isPending:{type:Boolean},isBeneficiary:{},beneficiaryEditId:{},isFirstBeneficiarySavedOnSubmit:{type:Boolean},isCurrentBeneficiaryEdited:{type:Boolean},itemsRequireBeneficiary:{}},emits:["beneficiary-edit-set","beneficiary-remove"],setup(q){const d=q,i=xe(),m=Y("beneficiary-items"),N=y(()=>i.value?.beneficiaries?.length??0);return V(()=>d.beneficiaryEditId,o=>{if(typeof o=="number"){m.value?.children[o]?.scrollIntoView({behavior:"smooth",inline:"start",block:"nearest"});return}m.value?.scrollTo({left:m.value?.scrollWidth,behavior:"smooth"})},{flush:"post"}),(o,x)=>{const Q=ct,L=Ie,W=Fe,$=Xe;return r(),h(U,null,[o.itemsRequireBeneficiary>1&&t(N)<2?(r(),S(Q,{key:0,variant:"info"},{default:w(()=>[H(E(o.$t("Enter the patient details",o.isBeneficiary)),1)]),_:1})):_("",!0),!o.isFirstBeneficiarySavedOnSubmit&&t(N)>=1?(r(),h("div",Ot,[c("div",Tt,[c("div",Vt,[x[1]||(x[1]=c("hr",{class:"absolute bottom-0 w-full border-t-0 border-b-2"},null,-1)),(r(!0),h(U,null,$e(t(i)?.beneficiaries,(F,I)=>(r(),h("div",{key:F?.id??I,class:re(["z-1 flex rounded-t",{"bg-primary-200":o.beneficiaryEditId===I,"hover:bg-primary-200":o.beneficiaryEditId!==I}])},[F?.id?(r(),h("button",{key:0,class:re(["inline-flex shrink-0 cursor-pointer border-b-2 p-2 whitespace-nowrap",{"border-primary-400":o.beneficiaryEditId===I,"pr-1":!F?.customerBeneficiaryId,"pr-2":!!t(i)?.isReadOnly}]),disabled:o.isPending,type:"button",onClick:G=>o.$emit("beneficiary-edit-set",I)},[o.beneficiaryEditId===I&&o.isCurrentBeneficiaryEdited?(r(),S(W,{key:0,text:o.$t("You have unsaved changes")},{default:w(()=>[v(L,{class:"text-info mr-1"})]),_:1},8,["text"])):_("",!0),c("span",null,E(F.personalData.firstname),1)],10,Rt)):_("",!0),!F?.customerBeneficiaryId&&!t(i)?.isReadOnly?(r(),h("button",{key:1,class:re(["group shrink-0 cursor-pointer border-b-2 p-2 px-1",{"border-primary-400":o.beneficiaryEditId===I,"pointer-events-none":o.isPending}]),disabled:o.isPending,onClick:G=>o.$emit("beneficiary-remove",F)},[v($,{class:"w-4 transition-transform group-hover:rotate-180"})],10,qt)):_("",!0)],2))),128)),t(N)&&o.beneficiaryEditId===void 0?(r(),h("div",jt,[H(E(o.$t("New beneficiary",o.isBeneficiary))+" ",1),c("button",{class:"shrink-0 cursor-pointer p-2 px-1 text-sm",type:"button",onClick:x[0]||(x[0]=F=>o.$emit("beneficiary-edit-set",0))},[v($,{class:"w-4 transition-transform hover:rotate-180"})])])):_("",!0)])],512)])):_("",!0)],64)}}}),Lt=Object.assign(At,{__name:"CheckoutBeneficiaryList"}),A=q=>q?Object.fromEntries(Object.entries(q).map(([d,i])=>[d,i??void 0]).filter(([,d])=>d!=null)):{},Mt={class:"my-4 grid gap-4"},Ut={class:"inline-flex gap-1"},Gt=["disabled"],Kt={class:"card grid gap-8"},zt={class:"bg-white max-lg:sticky max-lg:bottom-0 lg:col-start-2"},Yt=["disabled","data-loading"],Ht={class:"card grid gap-4"},Qt={key:2},Wt=["data-loading"],Ia=ce({__name:"index",setup(q){const d=dt(),i=xe(),m=ft(),N=De(),o=mt(),{t:x}=pt(),{notify:Q,notifyError:L}=yt(),W=vt();bt(`Checkout / ${x("Cart - form")}`),W.value&&(W.value=null);const{data:$,refresh:F,status:I,error:G}=wt("basket-form",()=>j("/api/basket/form"),{immediate:!!i.value,server:!1,dedupe:"defer"});V(G,()=>{G.value&&(i.value=null,L(G.value))});const b=D(!1),K=D(!1),O=D(!0),R=D(!1),u=D(),de=D(1),J=D(!1),ae=D(null),X=D({}),ie=D("abandon"),fe=Y("items"),ne=Y("beneficiary"),Pe=Y("beneficiary-title"),se=Y("payer"),B=y(()=>i.value?.beneficiaries?.filter(e=>!!e?.id)?.length??0),oe=y(()=>i.value?.itemsGroupedByVendor?.flatMap(e=>e?.groups??[]).flatMap(e=>e?.items??[])??[]),me=y(()=>oe.value.reduce((e,a)=>e+(a?.requiresBeneficiary?a?.quantity??0:0),0)??0),pe=y(()=>oe.value.some(e=>e?.__typename==="MedicalPackageBasketItem"||e?.requiresBeneficiary&&e.quantity>1||B.value>1)),T=y(()=>oe.value.some(e=>e?.__typename==="TrainingBasketItem"||e?.__typename==="PrepaidCardBasketItem"&&e.requiresBeneficiary)?1:0),M=D(!1);V(u,()=>{M.value=!1});const Se=e=>{const a=A(Object.fromEntries(Object.entries(e).map(([l,k])=>[l,te(k)]).filter(([,l])=>l!=null))),n=A(i.value?.beneficiaries?.[u.value]?.personalData),{addressCountryCode:s,...p}=a;if(!Object.keys(p).length){M.value=!1;return}M.value=Object.entries(a).some(([l,k])=>n[l]!==k)},ye=async e=>{u.value=void 0,await ue(),document.body.click(),e&&Pe.value?.$el.scrollIntoView({behavior:"smooth"}),ne.value?.$el.querySelector("input")?.focus()};V(R,e=>{e&&(O.value=!1)});const ve=y(()=>$.value?.checkoutForm?.fields?.fieldsPayer?.find(e=>e?.fieldKey==="invoiceNeeded")?.label?.labelTranslated),Ee=e=>{R.value=!!e.invoiceNeeded?.value},Ne=y(()=>Number.isFinite(u.value)?["email","dateOfBirth","govIdNumber","passportNumber","legalGuardianGovIdNumber","legalGuardianPassportNumber","gender","isForeigner","isNewborn"]:[]),be=y(()=>!N.value&&B.value<=1&&i.value?.isBeneficiary),Oe=y(()=>i.value?.isBeneficiary&&(B.value>1||!O.value)),Te=y(()=>{const e=Object.values(i.value?.customerData??{}).some(s=>!!s),a=ee(Number.isFinite(u.value)?A(i.value?.beneficiaries?.[u.value]?.personalData):A(i.value?.beneficiaries?.[0]?.personalData)),n=i.value?.customerData?.invoiceNeeded||he.value.some(s=>i.value?.customerData&&s in i.value.customerData&&i.value.customerData[s]!==te(a[s]));return e?n:!1});Ze(()=>{I.value==="success"&&B.value<=1&&Object.values(i.value?.customerData??{}).some(a=>!!a)&&(O.value=!Te.value)});const _e=y(()=>B.value>1||N.value||!i.value?.isBeneficiary||!O.value);V(i,()=>F()),V(i,(e,a)=>{a==null&&(R.value=e?.customerData?.invoiceNeeded??!1)},{immediate:!0}),V(()=>B.value,e=>{e>1&&(O.value=!1)}),V($,async()=>{await ue(),u.value===void 0&&(u.value=B.value?0:void 0)},{immediate:!0});const Ve=y(()=>$.value?.checkoutForm?.fields?.fieldsBeneficiary?.reduce((e,a)=>{if(a?.fieldKey){const n=we(a?.fieldType?.metadata)?.defaultValue?.value;n!=null&&(e[a.fieldKey]=n)}return e},{})??{}),Re=y(()=>$.value?.checkoutForm?.fields?.fieldsPayer?.reduce((e,a)=>{if(a?.fieldKey){const n=we(a?.fieldType?.metadata)?.defaultValue?.value;n!=null&&(e[a.fieldKey]=n)}return e},{})??{}),Z=y(()=>({...Ve.value,...Number.isInteger(u.value)?A(i.value?.beneficiaries?.[u.value]?.personalData):{}}));V(Z,()=>{b.value||de.value++});const ge=y(()=>({...Re.value,...A(i.value?.customerData),...ae.value,invoiceNeeded:R.value})),he=y(()=>$.value?.checkoutForm?.fields?.fieldsPayer?.filter(e=>e?.requirement==="REQUIRED").map(e=>e?.fieldKey??"")??[]),qe=async()=>{try{K.value=!1,b.value=!0,m.value++,B.value||(J.value=!0);const[e=!0,a=!0,n=!0]=await Promise.all([ne.value?.formValidate(),se.value?.formValidate(),fe.value?.validateAll()]);if(!e||!a||!n)throw new Error("Not valid");if(!_e.value){const s=ee(Z.value),p=Object.fromEntries(Object.entries(s).filter(([P])=>P==="email"||he.value.includes(P))),l={...ge.value,...p},{addressApartmentNumber:k,...g}=l,f={...g,...typeof k=="string"&&{addressApartmentNumber:k},basketId:d.value};try{await j("/api/basket/customer",{method:"post",body:f})}catch(P){throw L(P),new Error("Customer save error")}}if(await Promise.all([ne.value?.formSubmit(),se.value?.formSubmit()]),await fe.value?.onF
1ormSubmit(),K.value)throw new Error;ie.value="next",await gt(o("/checkout/payment"))}catch{J.value=!1}finally{m.value--,b.value=!1}},je=async()=>{ae.value=ee(Z.value),await ue(),se.value?.formValidate()},ee=e=>{const{isForeigner:a,isNewborn:n,...s}=Object.fromEntries(Object.entries(e).map(([p,l])=>[p,te(l)]));return s},Ae=async(e,{apiErrors:a})=>{const n=ee(e);let s=!1;const p=i.value?.beneficiaries?.[u.value]?.id??void 0,l=u.value===void 0||!p,k={basketId:d.value,beneficiaryId:p,personalData:n};try{m.value++,i.value=await j("/api/basket/beneficiary/save",{method:"post",body:k}),M.value=!1,l&&(u.value=B.value-1,!b.value&&pe.value&&(Q({content:x("You added a new patient",T.value),variant:"info"}),s=!0)),!s&&!b.value&&Q({content:x("Patient saved",T.value),variant:"success"}),z().$gtmBasketPush({event:"add_patient_info"}),await F()}catch(g){K.value=!0,a(g)}finally{m.value--}},Le=()=>{const e=String(i.value?.beneficiaries?.find(n=>!!n?.id)?.id);return i.value?.itemsGroupedByVendor?.flatMap(n=>n?.groups.flatMap(s=>s?.items?.filter(p=>p?.requiresBeneficiary)))?.filter(n=>!!n).map(n=>({itemId:n.itemId,beneficiaryIds:Array(n.quantity||1).fill(e)}))??[]},ke=e=>Object.entries(e).reduce((a,[n,s])=>{const[p,l,k]=n.split("__");if(p==="item"&&l){let g=a.find(f=>f.itemId===l);g||(g={itemId:l,beneficiaryIds:[]},a.push(g)),g.beneficiaryIds.push(typeof s=="string"?s:null)}else p==="group"&&l&&i.value?.itemsGroupedByVendor?.flatMap(f=>f?.groups.flatMap(P=>P)).find(f=>f?.facility?.facility_id===Number.parseInt(l))?.items?.filter(f=>f?.requiresBeneficiary).forEach(f=>
1{a.push({itemId:String(f?.itemId),beneficiaryIds:[typeof s=="string"?s:null]})});return a},[]),Me=async e=>{try{const a=await ht({question:x("Are you sure you want to delete beneficiary",{name:`${e?.personalData.firstname??"-"} ${e?.personalData.lastname??""}`}),iconComponent:"IcoTrash",confirmText:x("Delete")});m.value++,a&&(i.value=await j("/api/basket/beneficiary",{method:"delete",body:{beneficiaryId:e?.id}}),typeof u.value=="number"&&u.value>=B.value&&(u.value--,u.value<0&&(u.value=void 0)))}catch(a){L(a)}finally{m.value--}},Ue=$t(async()=>{try{m.value++;const e=ke(X.value);if(!e?.length)return;i.value=await j("/api/basket/beneficiary/assign",{method:"post",body:e})}catch(e){L(e)}finally{m.value--}},100),Ge=async(e,{apiErrors:a})=>{const n=B.value===1;try{m.value++;const s=n?Le():ke(e);if(!Object.keys(s).length)return;i.value=await j("/api/basket/beneficiary/assign",{method:"post",body:s})}catch(s){K.value=!0,a(s)}finally{m.value--}},Ke=async(e,{apiErrors:a})=>{const{isForeigner:n,isNewborn:s,...p}=Object.fromEntries(Object.entries(e).map(([f,P])=>[f,te(P)])),{addressApartmentNumber:l,...k}=p,g={basketId:d.value,...k,...typeof l=="string"&&{addressApartmentNumber:l}};try{m.value++,i.value=await j("/api/basket/customer",{method:"post",body:g}),ae.value=null}catch(f){K.value=!0,a(f)}finally{m.value--}};return et(()=>{z().$gtmBasketPush({event:"begin_checkout",ecommerce:{currency:i.value?.totals.grandTotal.currency??"",value:i.value?.totals.grandTotal.value??0,items:z().$getBasketItems()}}),z().$gtmBasketPush({event:"checkout_step_view",step:"patient_data"})}),_t(e=>{e.path.includes("checkout")&&(ie.value="next"),z().$gtmBasketPush({event:"checkout_step_exit",step:"patient_data",exit_type:ie.value})}),(e,a)=>{const n=Pt,s=ut,p=Nt,l=kt,k=tt,g=Fe,f=ot,P=Lt,ze=Ie,Be=rt,Ce=Bt,Ye=at,He=lt,Qe=Ct,We=st;return r(),S(We,{page:"form"},{fallback:w(()=>[v(n),v(s)]),default:w(()=>[c("div",Mt,[e.$config.public.isRoMedistore?_("",!0):(r(),h(U,{key:0},[v(p),v(l,{class:"max-sm:mx-4",enabled:!t(N),"login-buttons":""},null,8,["enabled"])],64)),t($)?.checkoutForm?.fields?(r(),h(U,{key:1},[t(i)?.isBeneficiary?(r(),h(U,{key:0},[v(f,{ref:"beneficiary-title",class:"flex items-center justify-between gap-2"},{default:w(()=>[c("span",Ut,[H(E(e.$t("Beneficiary form",t(T)))+" ",1),v(g,{text:e.$t("Beneficiary form tooltip")},{default:w(()=>[v(k)]),_:1}
1,8,["text"])]),!t(J)&&t(i).beneficiaries?.length&&!t(i).isReadOnly?(r(),h("button",{key:0,disabled:t(b),type:"button",class:"btn-outline-primary-500 shrink-0 px-4 py-2 text-sm",onClick:a[0]||(a[0]=C=>ye(!1))}," +"+E(e.$t("Add beneficiary",t(T))),9,Gt)):_("",!0)]),_:1},512),c("div",Kt,[v(P,{"is-pending":t(b),"is-beneficiary":t(T),"beneficiary-edit-id":t(u),"is-first-beneficiary-saved-on-submit":t(J),"items-require-beneficiary":t(me),"is-current-beneficiary-edited":t(M),onBeneficiaryRemove:Me,onBeneficiaryEditSet:a[1]||(a[1]=C=>u.value=C)},null,8,["is-pending","is-beneficiary","beneficiary-edit-id","is-first-beneficiary-saved-on-submit","items-require-beneficiary","is-current-beneficiary-edited"]),(r(),S(Be,{key:t(de),ref:"beneficiary",collapsing:t(N)&&t(B)===1&&t(u)!==void 0,disabled:t(I)!=="success"||t(b)||t(i).isReadOnly,fields:t($).checkoutForm.fields.fieldsBeneficiary,"disabled-fields":t(Ne),values:t(Z),"api-values":("nullsToUndefined"in e?e.nullsToUndefined:t(A))(t(i)?.beneficiaries?.[t(u)]?.personalData),onChanged:Se,onSubmit:Ae},{footer:w(({pending:C})=>[a[6]||(a[6]=c("div",{class:"hidden lg:block"},null,-1)),c("div",zt,[c("button",{type:"submit",class:"btn-outline-primary-400 inline-flex w-full",disabled:C||t(b)||t(i).isReadOnly,"data-loading":C&&!t(b)},[H(E(e.$t("Save beneficiary",t(T)))+" ",1),t(M)?(r(),S(g,{key:0,text:e.$t("You have unsaved changes")},{default:w(()=>[v(ze,{class:"ml-1 size-5"})]),_:1},8,["text"])):_("",!0)],8,Yt)])]),_:1},8,["collapsing","disabled","fields","disabled-fields","values","api-values"]))])],64)):_("",!0),v(f,{class:"inline-flex gap-1"},{default:w(()=>[c("span",null,E(e.$t("Payer form")),1),t(i)?.isBeneficiary?(r(),S(g,{key:0,text:e.$t("Payer form tooltip")},{default:w(()=>[v(k)]),_:1},8,["text"])):_("",!0)]),_:1}),c("div",Ht,[t(be)?(r(),S(Ce,{key:0,modelValue:t(O),"onUpdate:modelValue":a[2]||(a[2]=C=>le(O)?O.value=C:null),disabled:t(b)||t(R),type:"checkbox",label:e.$t("Payer is beneficiary",t(T))},null,8,["modelValue","disabled","label"])):_("",!0),t(be)&&t(ve)&&t(O)&&!e.$config.public.isRoMedistore?(r(),S(Ce,{key:1,modelValue:t(R),"onUpdate:modelValue":a[3]||(a[3]=C=>le(R)?R.value=C:null),disabled:t(b),type:"checkbox",label:t(ve)},null,8,["modelValue","disabled","label"])):_("",!0),t(Oe)?(r(),h("div",Qt,[c("button",{class:"btn-outline-primary-400 gap-2 py-2",type:"button",onClick:je},[v(Ye),H(" "+E(e.$t("Copy beneficiary",t(T))),1)])])):_("",!0),t(_e)?(r(),S(Be,{key:3,ref:"payer",disabled:t(b),"disabled-fields":t(N)?["email"]:[],fields:t($).checkoutForm.fields.fieldsPayer,values:t(ge),onChanged:Ee,onSubmit:Ke},null,8,["disabled","disabled-fields","fields","values"])):_("",!0)])],64)):(r(),S(n,{key:2,class:"my-4"}))]),v(Qe,{ref:"items",values:t(X),"onUpdate:values":a[5]||(a[5]=C=>le(X)?X.value=C:null),"keep-value-after-save":"","scroll-when-error":"",disabled:t(b),onSubmit:Ge},{default:w(()=>[v(He,{step:2,"is-beneficiary":t(T),"is-pending":t(b),"items-require-beneficiary":t(me),"is-beneficiary-select-visible":t(pe),onNewBeneficiary:a[4]||(a[4]=C=>ye(!0)),onBeneficiaryChanged:t(Ue)},{default:w(()=>[it(e.$slots,"btn",{},()=>[c("button",{class:"btn-primary-400 btn-css-colors mt-3",style:nt({"--bg-color":t(i)?.ctaButtons?.buttonColor??"var(--color-primary-400)","--color":t(i)?.ctaButtons?.fontColor??"white","--bg-hover":t(i)?.ctaButtons?.buttonHoverColor??"var(--color-hover-primary-400)","--hover-color":t(i)?.ctaButtons?.fontHoverColor??"white"}),type:"button","data-loading":t(I)!=="success"||t(b),onClick:qe},E(e.$t(t(i)?.isShipping?"Shipping & Payment":"Payment")),13,Wt)])]),_:3},8,["is-beneficiary","is-pending","items-require-beneficiary","is-beneficiary-select-visible","onBeneficiaryChanged"])]),_:3},8,["values","disabled"])]),_:3})}}});export{Ia 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.