1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[93121],{6176:(e,t,a)=>{a.d(t,{q:()=>i});var n=a(12115),r=a(83523),s=a(97406);function i(e){let t=!(arguments.length>1)||void 0===arguments[1]||arguments[1],a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:250,i=[...new Set(e.filter(r.wP))].sort().slice(0,s.S).join(","),[l,c]=(0,n.useState)({stock:null,etat:"inactif"}),o=(0,n.useRef)(new Set);return(0,n.useEffect)(()=>{if(!t){o.current=new Set,c(e=>"inactif"===e.etat?e:{stock:null,etat:"inactif"});return}let e=i?i.split(",").filter(e=>!o.current.has(e)):[];if(0===e.length)return;let n=new AbortController,r=setTimeout(()=>n.abort(),a+15e3),s=setTimeout(()=>{c(e=>({stock:e.stock,etat:"en-vol"})),fetch("/api/admin/parts/stock-bulk/",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({price_ids:e}),signal:n.signal}).then(e=>{if(!e.ok)throw Error(`stock-bulk HTTP ${e.status}`);return e.json()}).then(t=>{if(t&&"object"==typeof t.stock&&null!=t.stock){for(let t of e)o.current.add(t);c(e=>({stock:{...e.stock??{},...t.stock},etat:"relu"}))}else c(e=>({stock:e.stock,etat:"echec"}))}).catch(e=>{e?.name!=="AbortError"&&c(e=>({stock:e.stock,etat:"echec"}))})},a);return()=>{clearTimeout(s),clearTimeout(r),n.abort()}},[i,t,a]),l}},32316:(e,t,a)=>{a.d(t,{o:()=>i});var n=a(95155),r=a(36402),s=a(5746);function i(e){let{open:t,onClose:a,onConfirm:i,titre:l,destinataire:c,nomClient:o,ceQuiPart:u,confirmLabel:d="Envoyer"}=e,p=function(e){let t=(e??"").trim();if(!t)return"";if(t.includes("@")){let e=t.lastIndexOf("@");return e<=0||e===t.length-1?"":t}let a=t.replace(/\D/g,"");return(a.startsWith("0033")?a=`0${a.slice(4)}`:a.startsWith("33")&&t.startsWith("+")&&(a=`0${a.slice(2)}`),a.length<6)?"":10===a.length?(a.match(/.{2}/g)??[a]).join(" "):t}(c),m=(o??"").trim();return(0,n.jsx)(r.T,{open:t,onClose:a,onConfirm:i,title:l,confirmLabel:d,cancelLabel:"Annuler",children:(0,n.jsxs)("div",{className:"space-y-2",children:[(0,n.jsx)(s.rn,{complement:m||void 0,children:p||"aucune coordonn\xe9e lisible"}),(0,n.jsx)("p",{className:"text-sm text-gray-text",children:u})]})})}},38391:(e,t,a)=>{a.d(t,{p:()=>l});var n=a(95155),r=a(93392),s=a(10625);let i=a(34574).qT.appareil_hors_bareme;function l(e){let{id:t,value:a,onChange:l,disabled:c=!1,className:o=""}=e,u=""!==a&&0>=(0,s.OA)(a);return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("select",{id:t,value:a,disabled:c,onChange:e=>l(e.target.value),className:o||"mt-1.5 w-full h-11 px-3 rounded-xl border border-gray-200 bg-white text-sm focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--admin-focus)]",children:[(0,n.jsx)("option",{value:"",children:"Choisir le typeâ¦"}),r.gQ.map(e=>(0,n.jsx)("option",{value:e,children:r.mD[e]},e))]}),u&&(0,n.jsx)("p",{className:"mt-1 text-xs text-gray-600",children:i})]})}},42505:(e,t,a)=>{a.d(t,{L3:()=>i,Qy:()=>r,e1:()=>s});let n={cash:{label:"Esp\xe8ces",selectable:!0},card:{label:"CB",selectable:!0},alma:{label:"Alma",selectable:!0},amex:{label:"Amex",selectable:!0},virement:{label:"Virement",selectable:!0},cheque:{label:"Ch\xe8que",selectable:!0},qualirepar_bonus:{label:"Bonus QualiR\xe9par",customerFacingLabel:"Bonus R\xe9paration",selectable:!1},apple_pay:{label:"Apple Pay",selectable:!1}};function r(e){return n[e]?.label??e}function s(e){let t=n[e];return t?.customerFacingLabel??t?.label??e}let i=["cash","card","alma","amex","virement","cheque","qualirepar_bonus","apple_pay"].filter(e=>n[e].selectable)},43698:(e,t,a)=>{a.d(t,{l:()=>i});var n=a(95155),r=a(12115),s=a(57446);let i=(0,r.forwardRef)(function(e,t){let{className:a,error:r,wrapperClassName:i,children:l,...c}=e;return(0,n.jsxs)("div",{className:(0,s.cn)("relative",i),children:[(0,n.jsx)("select",{ref:t,className:(0,s.cn)("w-full h-11 pl-3 pr-9 rounded-[10px] border bg-white text-sm text-dark appearance-none transition-colors","focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-coral focus-visible:border-coral","disabled:bg-gray-50 disabled:text-gray-400 disabled:cursor-not-allowed",r?"border-red-400":"border-[rgba(15,23,42,0.12)] hover:border-[rgba(15,23,42,0.2)]",a),...c,children:l}),(0,n.jsx)("svg",{"aria-hidden":"true",className:"pointer-events-none absolute right-3 top-1/2 -translate-y-1/2 w-4 h-4 text-gray-400",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,n.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 9l-7 7-7-7"})})]})})},74250:(e,t,a)=>{a.d(t,{$:()=>r});var n=a(95155);function r(e){let{options:t,value:a,onChange:r,size:s="md",ariaLabel:i,disabled:l=!1,className:c=""}=e,o="sm"===s?"h-8 pointer-coarse:h-11 px-3 text-[13px]":"tactile"===s?"h-11 px-3.5 text-sm":"h-9 pointer-coarse:h-11 px-3.5 text-sm";return(0,n.jsx)("div",{className:`overflow-x-auto p-1 -m-1 ${c}`,children:(0,n.jsx)("div",{role:"group","aria-label":i,className:"inline-flex rounded-[11px] bg-[#edf0f4] p-[3px] gap-0.5",children:t.map(e=>{let t=a===e.key;return(0,n.jsxs)("button",{type:"button",onClick:()=>r(e.key),disabled:l,"aria-pressed":t,className:`${o} rounded-lg transition-all whitespace-nowrap shrink-0 inline-flex items-center gap-1.5 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[rgba(245,164,0,0.35)] ${l?"curs
1or-not-allowed opacity-60":"cursor-pointer"} ${t?"bg-white text-[#141822] font-semibold shadow-[0_1px_3px_rgba(15,23,42,0.10)]":"text-[#5d6b82] font-medium hover:text-[#141822]"}`,children:[e.label,"number"==typeof e.count&&(0,n.jsx)("span",{className:`text-[11px] font-semibold tabular-nums px-1.5 py-0.5 rounded-md ${t?"bg-[#f1f3f7] text-[#5d6b82]":"bg-[rgba(15,23,42,0.06)] text-[#5d6b82]"}`,children:e.count})]},e.key)})})})}},87526:(e,t,a)=>{function n(e){if("string"!=typeof e)return null;let t=/^v(\d+)\.(\d+)$/.exec(e);return t?[Number(t[1]),Number(t[2])]:null}function r(e){let t=function(e,t){let a=n(e),r=n(t);return a&&r?a[0]!==r[0]?a[0]-r[0]:a[1]-r[1]:null}(e,"v1.07");return null!==t&&t>=0?"societe":"historique"}function s(e){return e?String(e):null}function i(e){return!!e&&!!e.is_pro&&("string"==typeof e.company_name?""!==e.company_name.trim():!!e.company_name)}function l(e,t){if(!e)return null;if("societe"===t&&i(e)){let t=[{style:"nom",texte:String(e.company_name).trim()}],a=e=>{let a=s(e);null!==a&&t.push({style:"detail",texte:a})},n=(e,a)=>{let n=s(a);null!==n&&t.push({style:"mention",texte:`${e} : ${n}`})};return a(e.address),a(e.address_complement),a(e.postal_code||e.city?[e.postal_code,e.city].filter(Boolean).join(" "):null),n("SIREN",e.siren),n("SIRET",e.siret),n("N\xb0 TVA",e.tva_intra),a(e.phone),a(e.email),t}let a=[e.first_name,e.last_name].filter(Boolean).join(" "),n=e=>null===e?null:{style:"detail",texte:e},r=(t,a)=>e.is_pro&&a?{style:"mention",texte:`${t} : ${String(a)}`}:null;return[{style:"nom",texte:a||"-"},n(e.is_pro?s(e.company_name):null),n(s(e.phone)),n(s(e.email)),n(s(e.address)),n(s(e.address_complement)),n(e.postal_code||e.city?[e.postal_code,e.city].filter(Boolean).join(" "):null),r("SIREN",e.siren),r("SIRET",e.siret)]}function c(e,t){let a=l(e,t);if(!a)return null;let[n,r]=a;return n&&""!==n.texte.trim()&&"-"!==n.texte?n.texte:r?.style==="detail"&&""!==r.texte.trim()?r.texte:null}a.d(t,{I7:()=>l,ax:()=>i,db:()=>c,gY:()=>r})},90163:(e,t,a)=>{a.d(t,{FE:()=>p,Ff:()=>d,KE:()=>o,UD:()=>s.UD,_4:()=>c,bx:()=>l,nR:()=>i,xr:()=>u});var n=a(20467),r=a(79645),s=a(32101);function i(e,t,a){let n=!(arguments.length>3)||void 0===arguments[3]||arguments[3],i=!(arguments.length>4)||void 0===arguments[4]||arguments[4],l=(0,r.qN)(e,a,n);if(t>=1){let e=l.fullPrice??l.clientPrice;return i?{fullPrice:e,clientPrice:Math.max(0,e-s.UD),discount:s.UD,isMulti:!0,rank:t+1}:{fullPrice:null,clientPrice:e,discount:0,isMulti:!1,rank:t+1}}return{...l,isMulti:!1,rank:1}}function l(e){let t=!(arguments.length>1)||void 0===arguments[1]||arguments[1],a=0;return e.map(e=>{if(!e.isRepair||0==a++||null==e.clientPrice)return e;let n=e.fullPrice??e.clientPrice;return{...e,clientPrice:t?Math.max(0,n-s.UD):n}})}function c(e){let{repairs:t,services:a,selectedRepairs:n,selectedServices:s,deviceType:l,showPrices:c}=e,o=[];for(let e of(n.forEach((e,a)=>{let n=t.find(t=>t.id===e);if(!n)return;let r=c&&n.price>0,s=r?i(n,a,l):null;o.push({id:n.id,repairTypeId:n.repair_type_id,label:n.repair_type_name,clientPrice:s?s.clientPrice:null,fullPrice:s?s.fullPrice:null,surDevis:!r,kind:"repair"})}),s)){let t=a.find(t=>t.id===e);if(!t)continue;let n=c&&t.price>0;o.push({id:t.id,repairTypeId:t.repair_type_id,label:t.repair_type_name,clientPrice:n?(0,r.qN)(t,l).clientPrice:null,fullPrice:null,surDevis:!n,kind:(0,r.Z0)(t.repair_type_name)?"film":"service"})}return o}function o(e,t){return t?e.filter(e=>(0,r.Z0)(e.repair_type_name)&&e.price>0).map(e=>({id:e.id,repairTypeId:e.repair_type_id,name:e.repair_type_name,price:e.price})):[]}function u(e){return(0,n.Q5)(e)}function d(e){return e.some(e=>e.surDevis)?null:Math.round(100*e.reduce((e,t)=>e+(t.clientPrice??0),0))/100}function p(e){if(0===e.length)return"Diagnostic gratuit";let t=e.map(e=>e.surDevis||null==e.clientPrice?`${e.label} (sur devis)`:`${e.label} (${(0,n.Q5)(e.clientPrice)})`),a=d(e),r=null!=a&&e.length>1?` \xb7 Total ${(0,n.Q5)(a)}`:"";return`${t.join(" + ")}${r}`.slice(0,480)}},90594:(e,t,a)=>{a.d(t,{l:()=>i,q:()=>s});var n=a(42505),r=a(28956);let s={cash:r.Sr,card:r.AG,amex:r.AG,apple_pay:r.C5,alma:r.lc,virement:r.fl,cheque:r.py,qualirepar_bonus:r.jK},i=n.L3.map(e=>({method:e,label:(0,n.Qy)(e),Icon:s[e]}))},93121:(e,t,a)=>{a.r(t),a.d(t,{EncaisserModal:()=>e0});var n=a(95155),r=a(12115),s=a(5683),i=a(52769),l=a(31166),c=a(32316),o=a(16443),u=a(28956),d=a(20467);function p(e){let{payload:t,customer:a,amountTtcHint:s,existing:p,onConfirmed:m,onBack:x}=e,[h,_]=(0,r.useState)("config"),[b,g]=(0,r.useState)(3),[f,y]=(0,r.useState)(a.phone??""),[v,j]=(0,r.useState)(null),[k,N]=(0,r.useState)(null),[w,S]=(0,r.useState)(null),[q,C]=(0,r.useState)(!1),[P,$]=(0,r.useState)(null),[L,T]=(0,r.useState)(!1),E=(0,r.useRef)(crypto.randomUUID()),M=(0,r.useRef)(!1);(0,r.useEffect)(()=>{p&&!M.current&&(M.current=!0,(async()=>{let e=p.url?await i.toDataURL(p.url,{width:220,margin:4}):null;j({url:p.url,almaId:p.almaId,amountCents:p.amountCents,telephone:null}),N(e),["authorized","captured","invoiced"].includes(p.status)?(_("paid"),m(p.amountCents,p.almaId)):_("waiting")})())},[p]);let A=(0,r.useCallback)(async()=>{_("generating"),S(null);try{let e=f||a.phone||null,n=await fetch("/api/admin/alma/create/",{method:"POST",headers:{"Content-Type":"application/json","Idempotency-Key":E.current},body:JSON.stringify({installments_count:b,customer:{...a,phone:e},send_sms:!1,invoice:t})}
1),r=await n.json();if(!n.ok)throw E.current=crypto.randomUUID(),Error(r?.error||"\xc9chec de la cr\xe9ation du lien Alma");let s=r.url?await i.toDataURL(r.url,{width:220,margin:4}):null;j({url:r.url??null,almaId:r.alma_payment_id,amountCents:r.amount_cents,telephone:e}),N(s),_("waiting")}catch(e){S(e instanceof Error?e.message:"Erreur inconnue"),_("error")}},[b,a,f,t]);(0,r.useEffect)(()=>{if("waiting"!==h||!v)return;let e=!1,t=setInterval(async()=>{try{let t=await fetch(`/api/admin/alma/status/?alma_id=${encodeURIComponent(v.almaId)}`);if(!t.ok)return;let a=await t.json();if(e)return;"invoiced"===a.status||"captured"===a.status||"authorized"===a.status?(_("paid"),o.o.success("Paiement Alma re\xe7u"),m(v.amountCents,v.almaId)):"canceled"===a.status||"expired"===a.status?_("canceled"):"error"===a.status&&(S("Anomalie sur le paiement (montant). R\xe9essayez ou encaissez autrement."),_("error"))}catch{}},4e3);return()=>{e=!0,clearInterval(t)}},[h,v,m]);let R=async()=>{if(!v)return!1;C(!0),$(null);try{let e=await fetch("/api/admin/alma/send-sms/",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({alma_payment_id:v.almaId})}),t=await e.json();if(t.ok)return $({ok:!0,text:"SMS envoy\xe9 au client"}),o.o.success("SMS envoy\xe9"),!0;return $({ok:!1,text:t.error||"SMS indisponible"}),!1}catch{return $({ok:!1,text:"\xc9chec de l'envoi du SMS"}),!1}finally{C(!1)}},I=async()=>{v&&await fetch("/api/admin/alma/cancel/",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({alma_payment_id:v.almaId})}).catch(()=>{}),x()},D=v?(0,d.Fb)(v.amountCents/100):(0,d.Fb)(Math.max(s,0));return(0,n.jsxs)("section",{className:"rounded-xl border border-coral/20 bg-coral/5 p-4",children:[(0,n.jsxs)("h4",{className:"text-sm font-semibold text-dark mb-3 inline-flex items-center gap-1.5",children:[(0,n.jsx)(u.lc,{className:"w-4 h-4 text-coral"}),"Paiement en plusieurs fois (Alma)"]}),"config"===h&&(0,n.jsxs)("div",{className:"space-y-3",children:[(0,n.jsxs)("div",{className:"flex items-center justify-between text-sm",children:[(0,n.jsx)("span",{className:"text-gray-600",children:"Montant \xe0 r\xe9gler"}),(0,n.jsx)("span",{className:"font-semibold text-dark tabular-nums",children:D})]}),(0,n.jsxs)("div",{children:[(0,n.jsx)("p",{className:"text-xs text-gray-500 mb-1.5",children:"Nombre d'\xe9ch\xe9ances"}),(0,n.jsx)("div",{className:"grid grid-cols-3 gap-2",children:[2,3,4].map(e=>(0,n.jsxs)(l.$,{size:"sm",variant:b===e?"primary":"ghost",className:`h-11 ${b===e?"":"border border-gray-200"}`,onClick:()=>g(e),children:[e,"\xd7"]},e))})]}),(0,n.jsxs)("div",{children:[(0,n.jsx)("label",{className:"block text-xs text-gray-500 mb-1",htmlFor:"alma-phone",children:"T\xe9l\xe9phone du client (pour le SMS)"}),(0,n.jsx)("input",{id:"alma-phone",type:"tel",inputMode:"tel",placeholder:"06 12 34 56 78",value:f,onChange:e=>y(e.target.value),className:"w-full h-11 px-3 rounded-xl border border-gray-200 text-sm focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-coral"})]}),(0,n.jsxs)("div",{className:"flex flex-col sm:flex-row gap-2 pt-1",children:[(0,n.jsx)(l.$,{variant:"primary",className:"w-full sm:flex-1",onClick:A,children:"G\xe9n\xe9rer le lien Alma"}),(0,n.jsxs)(l.$,{variant:"ghost",className:"w-full sm:w-auto inline-flex items-center justify-center gap-1.5",onClick:x,children:[(0,n.jsx)(u.YJ,{className:"w-4 h-4"}),"Autres moyens"]})]})]}),"generating"===h&&(0,n.jsxs)("div",{className:"py-8 text-center text-sm text-gray-500",children:[(0,n.jsx)("div",{className:"mx-auto mb-3 h-8 w-8 animate-spin rounded-full border-2 border-coral border-t-transparent"}),"Cr\xe9ation du lien de paiementâ¦"]}),"waiting"===h&&v&&(0,n.jsxs)("div",{className:"space-y-3",children:[(0,n.jsxs)("div",{className:"flex items-center justify-between text-sm",children:[(0,n.jsxs)("span",{className:"text-gray-600",children:["\xc0 r\xe9gler en ",b,"\xd7"]}),(0,n.jsx)("span",{className:"font-semibold text-dark tabular-nums",children:D})]}),k&&(0,n.jsx)("div",{className:"flex justify-center",children:(0,n.jsx)("img",{src:k,alt:"QR code de paiement Alma \xe0 scanner par le client",className:"rounded-xl bg-white p-2 border border-gray-200",width:220,height:220})}),(0,n.jsx)("p",{className:"text-center text-xs text-gray-500",children:"Le client scanne le QR, ou re\xe7oit le lien par SMS, et paie sur son t\xe9l\xe9phone."}),v.url&&(0,n.jsxs)("div",{className:"flex items-center gap-2",children:[(0,n.jsx)("input",{readOnly:!0,value:v.url,className:"flex-1 h-10 px-3 rounded-xl border border-gray-200 bg-white text-xs text-gray-600 truncate",onFocus:e=>e.currentTarget.select()}),(0,n.jsx)(l.$,{size:"sm",variant:"ghost",className:"h-10 border border-gray-200",onClick:()=>{v?.url&&(navigator.clipboard?.writeText(v.url),o.o.success("Lien copi\xe9"))},children:"Copier"})]}),(0,n.jsxs)("div",{className:"flex flex-col sm:flex-row sm:items-center gap-2",children:[(0,n.jsxs)("p",{className:"flex-1 text-xs text-gray-600",children:["SMS au num\xe9ro enregistr\xe9 \xe0 la cr\xe9ation du lien",v.telephone?(0,n.jsxs)(n.Fragment,{children:[" : ",(0,n.jsx)("span",{className:"font-semibold tabular-nums",children:v.telephone})]}):" (enregistr\xe9 chez Alma)"]}),(0,n.jsxs)(l.$,{variant:"secondary",className:"w-full sm:w-auto inline-flex items-center justify-center gap-1.5",loading:q,onClick:()=>T(!0),children:[(0,n.jsx)(u.C5,{className:"w-4 h-4"}),"Envoyer par SMS"]})]}),P&&(0,n.jsx)("p",{className:`text-xs ${P.ok?"text-mint":"text-amber-600"}`,children:P.text}),(0,n.jsxs)("div",{"aria-live":"polite",className:"mt-1 rounded-xl bg-white border border-gray-200 px-3 py-2.5 flex items-center gap-2 text-sm text-gray-600",children:[(0,n.jsx)(u.O4,{className:"w-4 h-4 text-coral animate-pulse shrink-0"}),"En attente du paiement du clientâ¦"]}),(0,n.jsx)("button",{type:"button",onClick:I,className:"w-full text-xs text-gray-400 hover:text-red-600 pt-1",children:"Annuler le lien et encaisser autrement"})]}),"paid"===h&&(0,n.jsxs)("div",{className:"py-6 text-center",children:[(0,n.jsx)(u.C1,{className:"w-10 h-10 text-mint mx-auto mb-2"}),(0,n.jsx)("p",{className:"text-sm font-semibold text-dark",children:"Paiement Alma re\xe7u"}),(0,n.jsx)("p",{className:"text-xs text-gray-500 mt-1",children:"Cliquez sur \xab Encaisser & g\xe9n\xe9rer la facture \xbb ci-dessous pour finaliser."})]}
1),"canceled"===h&&(0,n.jsxs)("div",{className:"py-6 text-center space-y-3",children:[(0,n.jsx)(u.qh,{className:"w-9 h-9 text-gray-400 mx-auto"}),(0,n.jsx)("p",{className:"text-sm text-gray-600",children:"Lien de paiement annul\xe9 ou expir\xe9."}),(0,n.jsx)(l.$,{variant:"ghost",className:"border border-gray-200",onClick:x,children:"Revenir aux moyens de paiement"})]}),"error"===h&&(0,n.jsxs)("div",{className:"py-6 text-center space-y-3",children:[(0,n.jsx)(u.eq,{className:"w-9 h-9 text-amber-500 mx-auto"}),(0,n.jsx)("p",{className:"text-sm text-gray-600",children:w??"Une erreur est survenue."}),(0,n.jsxs)("div",{className:"flex flex-col sm:flex-row gap-2 justify-center",children:[(0,n.jsx)(l.$,{variant:"primary",onClick:()=>_("config"),children:"R\xe9essayer"}),(0,n.jsx)(l.$,{variant:"ghost",className:"border border-gray-200",onClick:x,children:"Encaisser autrement"})]})]}),(0,n.jsx)(c.o,{open:L&&"waiting"===h,onClose:()=>T(!1),titre:"Envoyer le lien de paiement par SMS ?",destinataire:v?.telephone??null,nomClient:[a.firstName,a.lastName].filter(Boolean).join(" ")||null,ceQuiPart:(0,n.jsxs)(n.Fragment,{children:["Un SMS part avec le lien de paiement Alma en ",b,"\xd7 de ",D," au total.",v?.telephone?" Pour l'envoyer \xe0 un autre num\xe9ro, annulez le lien et reg\xe9n\xe9rez-le.":" Alma l'envoie au num\xe9ro enregistr\xe9 sur ce paiement."]}),onConfirm:async()=>{if(!await R())throw Error("SMS en \xe9chec")}})]})}var m=a(32682),x=a(92631),h=a(67909),_=a(20063),b=a(94465),g=a(94039),f=a(27079),y=a(87963),v=a(80321),j=a(85231),k=a(8624),N=a(79037),w=a(82686),S=a(78516),q=a(65515),C=a(5590),P=a(43698);let $="hors-historique",L="Garantie ou casseâ¦",T=`Prix manquant : indiquez le prix, ou d\xe9clarez la ligne dans \xab ${L} \xbb.`;function E(e){let{libelleLigne:t,origin:a,origines:r,etatOrigines:s,originePending:i,onChangeOrigin:l}=e,c=a?.type==="untracked"?$:a?`${a.type}:${a.id}`:"";return(0,n.jsxs)("div",{className:"mt-1.5 flex flex-col gap-1.5",children:[(0,n.jsxs)("label",{className:"text-[11px] text-dark",children:[(0,n.jsx)("span",{className:"block mb-0.5",children:"D'o\xf9 vient la garantie ?"}),(0,n.jsxs)(P.l,{className:"text-[13px]","aria-label":`Origine de la garantie : ${t}`,value:c,onChange:e=>{let t=e.target.value;if(t===$)return l({type:"untracked",note:""});let a=r.find(e=>(0,q.kS)(e)===t);if(!a)return;let n=(0,q.Yh)((0,q.kS)(a));n&&l(n)},children:[(0,n.jsx)("option",{value:"",disabled:!0,children:"chargement"===s?"Chargementâ¦":"\xc0 choisir"}),r.map(e=>(0,n.jsx)("option",{value:(0,q.kS)(e),children:`${q.S6[e.type]} \xb7 ${e.label}${e.date?` \xb7 ${e.date}`:""}`},(0,q.kS)(e))),(0,n.jsx)("option",{value:$,children:"Ancien logiciel / hors historique (pr\xe9cisez)"})]})]}),i&&"chargement"!==s&&(0,n.jsx)("p",{className:"text-[11px] text-red-600",children:"Choisissez d'o\xf9 vient la garantie pour d\xe9bloquer le bouton Encaisser."}),"echec"===s&&(0,n.jsx)("p",{className:"text-[11px] text-amber-600",children:"Historique indisponible. Choisissez \xab hors historique \xbb et pr\xe9cisez."}),a?.type==="untracked"&&(0,n.jsxs)("label",{className:"text-[11px] text-dark",children:[(0,n.jsx)("span",{className:"block mb-0.5",children:"Pourquoi la garantie s'applique"}),(0,n.jsx)(C.p,{type:"text",value:a.note,onChange:e=>l({type:"untracked",note:e.target.value}),placeholder:"Ex. garantie constructeur, ticket papier",maxLength:300,className:"text-[13px]","aria-label":`Pourquoi la garantie s'applique : ${t}`}),a.note.trim().length<q.W1&&(0,n.jsxs)("span",{className:"block text-red-600 mt-0.5",children:["Indiquez la raison pour d\xe9bloquer le bouton Encaisser (",q.W1," ","caract\xe8res minimum)."]})]})]})}function M(e){let{lignes:t,origines:a,etatOrigines:s,onGeste:i,onOrigine:l,onOuvrirOrigines:c,onFermer:o}=e,u=t.some(e=>"sav"===e.geste);return(0,r.useEffect)(()=>{u&&c()},[u,c]),(0,n.jsxs)("div",{className:"mt-2.5 rounded-xl border border-[rgba(15,23,42,0.09)] bg-surface px-3 py-2.5",children:[(0,n.jsxs)("div",{className:"flex items-center justify-between gap-2",children:[(0,n.jsx)("p",{className:"text-[10.5px] font-bold uppercase tracking-[0.07em] text-gray-500",children:"Garantie ou casse"}),(0,n.jsx)("button",{type:"button",onClick:o,"aria-label":"Fermer le panneau Garantie ou casse",className:"text-[11px] text-gray-500 hover:text-dark cursor-pointer min-h-11 sm:min-h-0 sm:py-1",children:"Fermer"})]}),(0,n.jsx)("div",{className:"divide-y divide-gray-100",children:t.map(e=>{let t=!e.accessoire||"sav"===e.geste;return(0,n.jsxs)("div",{className:"py-2 first:pt-1.5 last:pb-0.5",children:[(0,n.jsxs)("div",{className:"flex flex-wrap items-baseline justify-between gap-x-2 gap-y-0.5",children:[(0,n.jsx)("span",{className:"min-w-0 flex-1 truncate text-sm text-dark",children:e.libelle}),(0,n.jsx)("span",{className:"text-xs tabular-nums text-gray-500",children:(0,d.Fb)(e.prixTtc)})]}),(0,n.jsxs)("div",{className:"mt-1 flex items-center gap-2",children:[(0,n.jsxs)(P.l,{className:"min-w-0 flex-1 text-[13px]","aria-label":`Geste : ${e.libelle}`,value:e.geste??"",onChange:t=>{let a=t.target.value;""!==a&&i(e.index,a)},children:[(0,n.jsx)("option",{value:"",disabled:!0,children:"Choisirâ¦"}),t&&(0,n.jsx)("option",{value:"sav",children:"Sous garantie (SAV)"}),(0,n.jsx)("option",{value:"casse_client",children:"Casse : pi\xe8ce du client"}),(0,n.jsx)("option",{value:"casse_neuve",children:"Casse : notre pi\xe8ce neuve"})]}),null!==e.geste&&(0,n.jsx)("button",{type:"button",onClick:()=>i(e.index,null),"aria-label":`Retirer le geste : ${e.libelle}`,className:"shrink-0 min-h-11 px-1.5 text-[12px] text-gray-500 hover:text-dark cursor-pointer",children:"Retirer"})]}),"sav"===e.geste&&(0,n.jsx)(E,{libelleLigne:e.libelle,origin:e.origine,origines:a,etatOrigines:s,originePending:e.originePending,onChangeOrigin:t=>l(e.index,t)})]},e.index)})})]})}var A=a(65442),R=a(6176),I=a(25999),D=a(85635),z=a(85982);let O=Object.freeze({reviewAuthorization:"paid_repair_without_explicit_optin",publicCoordinates:"email_and_phone",oppositionVerification:"immediate",closedTenantRetentionDays:30}).reviewAuthorization,F="explicit_consent"===O?"si le client a accept\xe9 les offres et ne s'est pas d\xe9sinscrit":"sauf si le client s'est d\xe9sinscrit ou si sa fiche n'est pas la seule avec cette adresse e-mail";function X(e){let{checked:t,onChange:a,clientEmail:r,deferred:s,dense:i,disabled:l}=e,c=(r??"").trim();return i?(0,n.jsxs)("label",{className:`inline-flex min-h-11 items-center gap-2 text-sm ${l?"curs
1or-not-allowed opacity-60":"cursor-pointer"}`,children:[(0,n.jsx)("input",{type:"checkbox",checked:t,disabled:l,onChange:e=>a(e.target.checked),className:"accent-[color:var(--color-admin-accent)] w-4 h-4 shrink-0"}),(0,n.jsx)("span",{className:"text-dark",children:"Demander un avis"})]}):(0,n.jsxs)("label",{className:`flex items-start gap-2.5 rounded-xl border px-3 py-2.5 transition-colors ${l?"border-gray-200 bg-gray-50 cursor-not-allowed opacity-60":"border-gray-200 bg-white cursor-pointer hover:border-gray-300"}`,children:[(0,n.jsx)("input",{type:"checkbox",checked:t,disabled:l,onChange:e=>a(e.target.checked),className:"accent-[color:var(--color-admin-accent)] w-4 h-4 mt-0.5 shrink-0"}),(0,n.jsxs)("span",{className:"min-w-0",children:[(0,n.jsx)("span",{className:"block text-sm font-medium text-dark",children:"Demander un avis au client"}),(0,n.jsx)("span",{className:"block text-xs text-gray-400 mt-0.5",children:c?t?"suspended"===O?"Les demandes d'avis sont suspendues : rien ne sera envoy\xe9.":s?`La demande d'avis partira \xe0 ${c} apr\xe8s le r\xe8glement de la facture, ${F}. Une seule fois par client.`:`La demande d'avis part \xe0 ${c} apr\xe8s le paiement, ${F}. Une seule fois par client.`:"Aucune demande ne sera envoy\xe9e pour cette facture.":"Ce client n'a pas d'adresse email : rien ne sera envoy\xe9."})]})]})}function B(e){let{sendEmail:t,onSendEmailChange:a,askReview:r,onAskReviewChange:s,reviewEnabled:i,deferred:l,clientEmail:c,disabled:o}=e,u=(c??"").trim(),d=l||t||i&&r;return l&&!i?(0,n.jsxs)("p",{className:"text-xs text-admin-muted",children:["La facture \xe0 r\xe9gler est envoy\xe9e au client par email",u?` (${u})`:"","."]}):(0,n.jsxs)("div",{className:"rounded-xl border border-gray-200 px-3 py-2.5",children:[(0,n.jsx)("p",{className:"text-[11px] font-semibold uppercase tracking-wide text-admin-faint",children:"Apr\xe8s l'encaissement"}),(0,n.jsxs)("div",{className:"mt-1.5 flex flex-wrap items-center gap-x-5 gap-y-2",children:[l?(0,n.jsx)("span",{className:"text-sm text-admin-muted",children:"Facture par email (\xe0 r\xe9gler)"}):(0,n.jsx)(z.u,{dense:!0,checked:t,onChange:a,clientEmail:c,disabled:o}),i&&(0,n.jsx)(X,{dense:!0,checked:r,onChange:s,clientEmail:c,deferred:l,disabled:o})]}),(!u||d)&&(0,n.jsxs)("p",{className:"mt-1.5 text-xs text-admin-muted",children:[u?`â ${u}`:"Ce client n'a pas d'adresse email : rien ne sera envoy\xe9.",u&&i&&r&&(0,n.jsx)("span",{className:"text-admin-faint",children:l?" \xb7 l'avis est demand\xe9 au r\xe8glement, une seule fois par client":" \xb7 avis demand\xe9 une seule fois par client"})]})]})}var G=a(79645),U=a(93392),V=a(38391),Q=a(34574);function H(e,t){let a=(t??"").trim().toUpperCase();return a?e.find(e=>e.code.toUpperCase()===a)??null:null}function J(e){return 44===e?"Ecologic":45===e?"Ecosystem":null}a(71491);var W=a(95514),K=a(83523),Y=a(53423);let Z=e=>{let t="number"==typeof e?e:"string"==typeof e&&""!==e.trim()?Number(e):NaN;return Number.isFinite(t)?t:0},ee=e=>"item"===e.line_type,et=new Set(["repair","free"]),ea=e=>Math.round(100*Z(e));var en=a(80426),er=a(40161),es=a(40051),ei=a(90806),el=a(34613),ec=a(90163),eo=a(15028);let eu=e=>(e??"").trim()||"Ligne";var ed=a(66979),ep=a(29216);let em=e=>!!e.casse||!!e.savPhonilab;function ex(e,t){return t&&t>0?Math.min(t,e+1):e+1}function eh(e){return e.filter(e=>null!=e.accessory_id).map(e=>{let t="client"===e.casse||!0===e.savPhonilab;return{accessory_id:e.accessory_id,quantity:e.quantity,unit_price_ttc:t?0:e.unit_price_ttc,...t?{allow_zero:!0}:{}}})}function e_(e){return e.filter(e=>null!=e.accessory_id&&"neuve"===e.casse).map(e=>({accessory_id:e.accessory_id,quantity:e.quantity}))}var eb=a(32101),eg=a(60056);function ef(e){let t=Math.max(1,Math.round(Number(e.quantity)||1)),a=(0,eg.X4)(Number(e.unit_price_ttc)||0);return`${(e.label??"").trim().toLowerCase()}|${t}|${a}`}var ey=a(87526),ev=a(21282),ej=a(62374),ek=a(90594),eN=a(67343),ew=a(27181);let eS="qr-panne-reparee",eq="qr-type-appareil",eC={phone:"t\xe9l\xe9phone",postal_code:"code postal",city:"ville"};function eP(e){return e.savPhonilab?"sav":"client"===e.casse?"casse_client":"neuve"===e.casse?"casse_neuve":null}function e$(e){let t=new Date;t.setDate(t.getDate()+e);let a=String(t.getMonth()+1).padStart(2,"0"),n=String(t.getDate()).padStart(2,"0");return`${t.getFullYear()}-${a}-${n}`}let eL=e=>e.unit_price_ttc>0?{prixAvantGeste:e.unit_price_ttc,unit_price_ttc:0}:{},eT=e=>0===e.unit_price_ttc&&null!=e.prixAvantGeste&&e.prixAvantGeste>0?{unit_price_ttc:e.prixAvantGeste,prixAvantGeste:null}:{prixAvantGeste:null};var eE=a(6739);let eM=e=>{let{className:t="w-4 h-4"}=e;return(0,n.jsx)("svg",{className:t,fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",strokeWidth:1.8,strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:(0,n.jsx)("path",{d:"M3 19h6m11-13.5a1.5 1.5 0 00-2.121 0L7.5 15.379V18h2.621L19.5 8.621a1.5 1.5 0 000-2.121l-1.5-1.5z"})})},eA=e=>{let{className:t="w-4 h-4"}=e;return(0,n.jsxs)("svg",{className:t,fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",strokeWidth:1.8,strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:[(0,n.jsx)("path",{d:"M2.5 12s3.5-6.5 9.5-6.5S21.5 12 21.5 12 18 18.5 12 18.5 2.5 12 2.5 12z"}),(0,n.jsx)("circle",{cx:"12",cy:"12",r:"2.75"})]})};function eR(e){let{adresseFacture:t,factureANom:a,factureASociete:r,isAdmin:s,marginRevealed:i,onBasculerFacturationPersonnelle:l,setMarginRevealed:c,ticket:o}=e;return(0,n.jsxs)("span",{className:"inline-flex items-center gap-2 text-base sm:text-lg",children:[(0,n.jsxs)("span",{children:["Encaisser - ",o.ticket_number,o.model_name&&(0,n.jsxs)("span",{className:"hidden sm:inline text-gray-400 font-normal",children:[" ","\xb7 ",o.model_name]}),(0,n.jsxs)("span",{className:"flex items-center gap-1.5 mt-0.5 text-xs sm:text-sm font-normal text-gray-500",children:[(0,n.jsx)("span",{children:"Factur\xe9 \xe0 :"}),r?(0,n.jsx)(u.Dg,{className:"w-3.5 h-3.5 shrink-0 text-gray-400"}):(0,n.jsx)(u.ny,{className:"w-3.5 h-3.5 shrink-0 text-gray-400"}),(0,n.jsx)("span",{className:"font-medium text-gray-700",children:r?"Soci\xe9t\xe9":"Particulier"}),(0,n.jsxs)("span",{className:"truncate",children:["\xb7 ",a]})]}),!0===o.client_is_pro&&o.client_id&&l&&!t.bloquant&&(0,n.jsxs)("button",{type:"button",onClick:l,className:"tap-44 mt-1 inline-flex items-center gap-1 py-1 text-xs font-semibold text-admin-accent hover:underline cursor-pointer focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-admin-accent rounded",children:[(0,n.jsx)(u.ny,{className:"w-3.5 h-3.5 shrink-0"}),eE.wG]}
1)]}),s&&(0,n.jsx)("button",{type:"button","aria-label":"Voir la marge pr\xe9visionnelle (maintenir appuy\xe9)","aria-pressed":i,title:"Marge pr\xe9visionnelle (maintenir appuy\xe9)",onPointerDown:e=>{e.preventDefault(),c(!0)},onPointerUp:()=>c(!1),onPointerLeave:()=>c(!1),onPointerCancel:()=>c(!1),onKeyDown:e=>{("Enter"===e.key||" "===e.key)&&(e.preventDefault(),c(!0))},onKeyUp:e=>{("Enter"===e.key||" "===e.key)&&c(!1)},onBlur:()=>c(!1),onContextMenu:e=>e.preventDefault(),className:"shrink-0 w-8 h-8 inline-flex items-center justify-center rounded-lg text-gray-300 hover:text-gray-500 hover:bg-[rgba(15,23,42,0.04)] transition-colors select-none [-webkit-touch-callout:none] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-coral",children:(0,n.jsx)(eA,{className:i?"w-4 h-4 text-coral":"w-4 h-4"})})]})}function eI(e){let{alreadyInvoiced:t,eur:a,previewMargin:r}=e;return(0,n.jsxs)("div",{role:"status",className:"rounded-xl border border-[rgba(15,23,42,0.08)] bg-surface px-4 py-3",children:[(0,n.jsxs)("div",{className:"flex items-center justify-between gap-2",children:[(0,n.jsx)("span",{className:"text-[11px] font-semibold uppercase tracking-wide text-gray-500",children:t?"Estimation \xb7 facture d\xe9j\xe0 \xe9mise":r.partial?"Marge sur co\xfbts connus":"Marge pr\xe9visionnelle"}),(0,n.jsxs)("span",{className:"text-lg font-bold tabular-nums text-dark",children:[a(r.marginHt)," HT"]})]}),(0,n.jsxs)("p",{className:"text-[11px] text-gray-500 mt-1",children:["Revenu ",a(r.revenueHt)," HT \xb7 co\xfbts connus ",a(r.knownCostHt)," HT"]}),r.excluded.length>0&&(0,n.jsxs)("p",{className:"text-[11px] text-amber-600 mt-0.5",children:["Hors co\xfbt (inconnu) : ",r.excluded.slice(0,3).join(", "),r.excluded.length>3?"â¦":""]})]})}var eD=a(50459),ez=a(82441),eO=a(69980),eF=a(56488);function eX(e){let{attachSuggestion:t,basculerVarianteLigne:a,caseVarianteEnEvidence:r,dismissSuggestion:s,dismissedSuggestions:i,handlePickPhone:l,items:c,lastAttached:o,linkedPriceIds:u,mentionDeLigne:d,removeItem:p,stockDeLigne:m,tenantLabel:x,ticket:h,ticketEligibleAuBonus:_,undoAttach:b,updateItem:g,varianteEnVol:f,vocabulaireResolu:y}=e;return(0,n.jsx)(eF.MD,{children:c.map((e,c)=>{let v=null==e.source_ref&&null==e.accessory_id||!0===e.is_custom,j=e.ticket_line_id&&e.ticket_line_updated_at?(0,I.LG)(e):null;return(0,n.jsx)(eF.jY,{label:v?e.label:x(e.label),labelEditable:v,traceState:(0,A.lc)(e,m(e))?void 0:(0,eD._)(e),autoFocus:!0===e.is_custom,onLabelChange:e=>g(c,{label:e}),quantity:e.quantity,onQuantityChange:e=>g(c,{quantity:e}),priceTtc:e.unit_price_ttc,onPriceChange:e=>g(c,{unit_price_ttc:(0,eo.X4)(e)}),badge:(0,n.jsx)(eO.n,{ligne:e,stock:m(e)}),warning:o?.idx===c?(0,n.jsxs)("div",{className:"flex flex-wrap items-center gap-x-2 gap-y-1 text-[11px]",children:[(0,n.jsx)("span",{className:"font-medium text-gray-600",children:"Rattach\xe9 au catalogue."}
1),null!=e.accessory_id&&(e.accessory_stock??0)<e.quantity&&(0,n.jsxs)("span",{className:"text-amber-600",children:["Stock disponible : ",e.accessory_stock??0,". La vente reste possible."]}),(0,n.jsx)("button",{type:"button",onClick:b,className:"cursor-pointer text-gray-500 underline hover:text-dark",children:"Annuler le rattachement"})]}):null!=e.accessory_id&&((e.accessory_stock??0)<e.quantity||e.unit_price_ttc<=0)?(0,n.jsxs)("p",{className:"text-[11px] text-amber-600",children:[(e.accessory_stock??0)<e.quantity&&`Stock disponible : ${e.accessory_stock??0}. La quantit\xe9 d\xe9passe le stock, la vente reste possible. `,e.unit_price_ttc<=0&&"Prix \xe0 fixer (catalogue \xe0 0 â¬)."]}):null==e.source_ref&&null==e.accessory_id?(0,n.jsx)(k.Z,{label:e.label,typedPriceTtc:e.unit_price_ttc,modelId:h.model_id??null,modelName:h.model_name??null,ticketId:h.id,linkedPriceIds:u,dismissedKeys:i,onDismiss:s,onAttach:e=>t(c,e),onPickPhone:e=>l({stock_id:e.stock_id,label:e.label,imei:e.imei,sale_target_price:e.sale_target_price,purchase_regime:e.purchase_regime,status:e.status},c),formatName:x,vocabulaireResolu:y}):void 0,colorPicker:(0,ep.E)(e)?(0,n.jsx)(ez.H,{portee:"groupe",priceId:e.source_ref,value:null==e.color?null:{color:e.color,piec:e.piec??!1},couleurSouhaitee:e.part_color??null,onChange:(e,t,a,n)=>g(c,{color:e,piec:t,colorPending:a,...null!=n?{piece_stock:n}:{}})},e.source_ref):void 0,casse:d(e,c),variant:j?(0,n.jsx)(eF.C,{texte:j.checkboxLabel,checked:!0===e.bonus_variant,disabled:null!=f,misEnEvidence:r&&!_&&!0!==e.bonus_variant,onChange:e=>void a(c,e)}):void 0,onRemove:()=>p(c)},c)})})}function eB(e){let{calc:t,eur:a}=e;return(0,n.jsxs)("section",{className:"rounded-xl bg-surface p-4 space-y-1 text-sm",children:[(0,n.jsxs)("div",{className:"flex justify-between text-gray-600",children:[(0,n.jsx)("span",{children:"Sous-total HT"}),(0,n.jsx)("span",{className:"tabular-nums",children:a(t.subtotal_ht)})]}),(0,n.jsxs)("div",{className:"flex justify-between text-gray-600",children:[(0,n.jsx)("span",{children:"TVA 20 %"}),(0,n.jsx)("span",{className:"tabular-nums",children:a(t.total_tva)})]}),(0,n.jsxs)("div",{className:"flex justify-between font-semibold text-dark text-base pt-1 border-t border-gray-200 mt-1",children:[(0,n.jsx)("span",{children:"Total TTC"}),(0,n.jsx)("span",{className:"tabular-nums",children:a(t.total_ttc)})]})]})}function eG(e){let{casier:t,casierColor:a,casierCoveredByLine:r,casierPiec:s,posePiece:i,setCasierColor:l,setCasierColorPending:c,setCasierPiec:o,setPosePiece:d}=e;return(0,n.jsx)("section",{className:"rounded-xl border border-[rgba(15,23,42,0.055)] bg-surface p-4",children:r?(0,n.jsxs)("div",{className:"flex items-start gap-2",children:[(0,n.jsx)(u.C1,{className:"w-4 h-4 text-gray-light mt-0.5 shrink-0"}),(0,n.jsxs)("span",{className:"min-w-0",children:[(0,n.jsx)("span",{className:"block text-sm font-semibold text-dark",children:"Pi\xe8ce d\xe9compt\xe9e via la ligne catalogue"}),(0,n.jsxs)("span",{className:"block text-xs text-gray-500 mt-0.5",children:[t.casier_label," \xb7 la ligne de la facture sort d\xe9j\xe0 la pi\xe8ce du stock (pas de double d\xe9compte)"]})]})]}):t.qty_on_hand>0?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("label",{className:"flex items-start gap-3 cursor-pointer",children:[(0,n.jsx)("input",{type:"checkbox",checked:i,onChange:e=>d(e.target.checked),className:"mt-0.5 accent-coral w-4 h-4 shrink-0"}),(0,n.jsxs)("span",{className:"min-w-0",children:[(0,n.jsx)("span",{className:"block text-sm font-semibold text-dark",children:"D\xe9compter la pi\xe8ce pos\xe9e du stock"}),(0,n.jsxs)("span",{className:"block text-xs text-gray-500 mt-0.5",children:[t.casier_label," \xb7 en stock ",t.qty_on_hand]})]})]}),i&&(0,n.jsx)(ez.H,{portee:"groupe",priceId:t.price_id,value:null==a?null:{color:a,piec:s},onChange:(e,t,a)=>{l(e),o(t),c(a)},className:"mt-2 pl-7"},t.price_id)]}):(0,n.jsxs)("div",{children:[(0,n.jsxs)("span",{className:"block text-sm font-semibold text-dark",children:["Pi\xe8ce : ",t.casier_label]}),(0,n.jsx)("span",{className:"block text-xs text-amber-600 mt-0.5",children:"Aucun stock pour cette pi\xe8ce (commande sp\xe9ciale) - pas de d\xe9compte."})]})})}function eU(e){let{InlineSignaturePad:t,setSignature:a,setSignatureRestored:r,signature:s,signatureRestored:i}=e;return(0,n.jsxs)("div",{className:"mt-3 rounded-xl border border-gray-200 p-3",children:[(0,n.jsxs)("div",{className:"flex items-center justify-between gap-2 mb-1",children:[(0,n.jsxs)("h5",{className:"text-sm font-semibold text-dark inline-flex items-center gap-1.5",children:[(0,n.jsx)(eM,{className:"w-4 h-4 text-gray-light"}),"Signature du client"]}),s&&(0,n.jsxs)("span",{className:"text-xs text-gray-500 inline-flex items-center gap-1",children:[(0,n.jsx)(u.C1,{className:"w-3.5 h-3.5"}),"Sign\xe9"]})]}),(0,n.jsx)("p",{className:"text-xs text-gray-500 mb-2",children:"Le client signe l'attestation QualiR\xe9par : obligatoire pour d\xe9bloquer le paiement."}),i&&s?(0,n.jsxs)("div",{className:"text-center",children:[(0,n.jsx)("img",{src:s,alt:"Signature du client (reprise de la saisie pr\xe9c\xe9dente)",className:"h-28 mx-auto bg-white rounded-lg border border-dashed border-gray-300"}),(0,n.jsx)("button",{type:"button",onClick:()=>{a(null),r(!1)},className:"text-xs text-gray-400 hover:text-red-600 mt-1.5",children:"Effacer et refaire signer"})]}):(0,n.jsx)(t,{onChange:a})]})}var eV=a(74250);function eQ(e){let{choisirEtatVirement:t,deferredActive:a,deferredDueDate:r,paymentLocked:s,setDeferredDueDate:i,virementMode:l}=e;return(0,n.jsxs)("div",{className:"mt-2.5",children:[(0,n.jsx)(eV.$,{ariaLabel:"\xc9tat du virement",size:"tactile",value:l,disabled:s,onChange:e=>t(e),options:[{key:"a_recevoir",label:"\xc0 recevoir"},{key:"recu",label:"Re\xe7u"}]}),a&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("p",{className:"mt-1.5 text-xs text-admin-muted",children:"Le client r\xe8gle plus tard par virement : la facture est \xe9mise avec un reste d\xfb."}),(0,n.jsxs)("div",{className:"mt-2 flex items-center justify-between gap-3",children:[(0,n.jsx)("label",{htmlFor:"deferred-due-date",className:"text-sm text-gray-700",children:"\xc9ch\xe9ance de r\xe8glement"}),(0,n.jsx)("input",{id:"deferred-due-date",type:"date",value:r,min:e$(1),onChange:e=>i(e.target.value),className:"h-11 rounded-lg border border-gray-200 bg-white px-3 text-sm"})]}),(0,n.jsx)("p",{className:"mt-1.5 text-xs text-admin-muted",children:"Rien n'entre dans la caisse du jour. L'\xe9ch\xe9ance est d\xe9finitive (scell\xe9e avec la facture). \xc0 r\xe9ception du virement, le r\xe8glement s'enregistre depuis la fiche facture (\xab Encaisser le reste \xbb)."})]})]})}var eH=a(95704);let eJ=(0,h.default)(()=>Promise.all([a.e(16785),a.e(13499)]).then(a.bind(a,13499)).then(e=>e.InlineSignaturePad),{loadableGenerated:{webpack:()=>[13499]},ssr:!1}),eW=(0,h.default)(()=>Promise.all([a.e(62918),a.e(47676),a.e(33877),a.e(70824),a.e(77064),a.e(61293),a.e(27733)]).then(a.bind(a,61293)).then(e=>e.VendreReconditionneModal),{loadableGenerated:{webpack:()=>[61293]},ssr:!1}),eK=e=>
1e.toLocaleString("fr-FR",{minimumFractionDigits:2,maximumFractionDigits:2})+" â¬";async function eY(e,t){if(!/(9H|7H|Privacy)/i.test(e))return null;try{let a=await fetch("/api/admin/parts/accessories/search/?q=hydrogel&limit=10");if(!a.ok)return null;let n=(await a.json()).rows??[];return(0,el.Ub)(n,e,t)}catch{return null}}async function eZ(e,t){try{let a=await fetch(`/api/admin/parts/accessories/search/?q=${encodeURIComponent(t.slice(0,60))}&limit=10`);if(a.ok){let t=((await a.json()).rows??[]).find(t=>t.id===e);if(t)return{accessory_id:e,qty_on_hand:t.qty_on_hand}}}catch{}return{accessory_id:e,qty_on_hand:0}}function e0(e){var t;let{open:a,onClose:i,onSuccess:c,ticket:d,initialLines:h,initialDiscount:C,initialMultiRepairApplied:P,ticketLines:$,quoteId:E,requestedRepairs:z,isAdmin:O=!1,onTicketChanged:F,onBasculerFacturationPersonnelle:X}=e,el=(0,_.useRouter)(),{t:eE,vocabulaireResolu:eM}=(0,eN.j)(),[eA,eD]=(0,r.useState)(null),[ez,eO]=(0,r.useState)(!0),[eF,eV]=(0,r.useState)(!0),[e0,e1]=(0,r.useState)(null),[e2,e5]=(0,r.useState)(0),[e4,e3]=(0,r.useState)(!1),[e6,e9]=(0,r.useState)([]),[e8,e7]=(0,r.useState)(0),[te,tt]=(0,r.useState)([]),[ta,tn]=(0,r.useState)(!1),tr=(0,r.useRef)(!1),ts=(0,r.useRef)(!1),[ti,tl]=(0,r.useState)("auto"),[tc,to]=(0,r.useState)(null),[tu,td]=(0,r.useState)(null),[tp,tm]=(0,r.useState)(""),[tx,th]=(0,r.useState)(!1),t_=(0,r.useRef)(null),tb=(0,r.useRef)(null),[tg,tf]=(0,r.useState)(null),ty=(0,r.useRef)(null),[tv,tj]=(0,r.useState)(!1),[tk,tN]=(0,r.useState)(null),[tw,tS]=(0,r.useState)(!1),[tq,tC]=(0,r.useState)(!1),[tP,t$]=(0,r.useState)(!1),tL=(0,r.useRef)(!1);(0,r.useEffect)(()=>{t$(!1),tL.current=!1},[a,d.id]);let[tT,tE]=(0,r.useState)(null),[tM,tA]=(0,r.useState)(!1),[tR,tI]=(0,r.useState)(null),[tD,tz]=(0,r.useState)(d.client_adresse??null),tO=(0,ev.$)(d.client_id,d.client_is_pro),tF=(0,r.useRef)(null),[tX,tB]=(0,r.useState)(!1),[tG,tU]=(0,r.useState)(!0),[tV,tQ]=(0,r.useState)(!0),[tH,tJ]=(0,r.useState)(!1),[tW,tK]=(0,r.useState)([]),[tY,tZ]=(0,r.useState)("none"),[t0,t1]=(0,r.useState)(()=>e$(30)),[t2,t5]=(0,r.useState)(!1),[t4,t3]=(0,r.useState)(!1),[t6,t9]=(0,r.useState)(!1),[t8,t7]=(0,r.useState)(null),[ae,at]=(0,r.useState)(null),[aa,an,ar,as]=(0,y.m8)(`feexo:idem:encaisser:${d.id}`),ai=!(h&&h.length>0),al=`feexo-encaisser-draft-${d.id}`,ac=(0,r.useRef)(null),[ao,au]=(0,r.useState)(null),[ad,ap]=(0,r.useState)(!1),[am,ax]=(0,r.useState)(null),[ah,a_]=(0,r.useState)(null),[ab,ag]=(0,r.useState)(null),[af,ay]=(0,r.useState)(null),[av,aj]=(0,r.useState)(null),[ak,aN]=(0,r.useState)({}),[aw,aS]=(0,r.useState)(!1),[aq,aC]=(0,r.useState)(null),[aP,a$]=(0,r.useState)(!1),[aL,aT]=(0,r.useState)(!1),[aE,aM]=(0,r.useState)([]),[aA,aR]=(0,r.useState)(null),[aI,aD]=(0,r.useState)(!1),az=(0,r.useRef)(null),[aO,aF]=(0,r.useState)(!1),[aX,aB]=(0,r.useState)(null),[aG,aU]=(0,r.useState)(d.qualirepar_eligible);(0,r.useEffect)(()=>{aU(d.qualirepar_eligible)},[d.qualirepar_eligible]);let[aV,aQ]=(0,r.useState)(d.device_type_declared??null);(0,r.useEffect)(()=>{aQ(d.device_type_declared??null)},[d.id,d.device_type_declared]);let[aH,aJ]=(0,r.useState)(d.qualirepar_bonus_amount);(0,r.useEffect)(()=>{aJ(d.qualirepar_bonus_amount)},[d.id,d.qualirepar_bonus_amount]);let aW=(0,U.Lt)({modelDeviceType:d.device_type,declared:aV}).type,aK=!d.model_id&&null==aW,aY=(0,eo.X4)(null!=aH&&aH>0?aH:(0,G.vb)(aW)),aZ=(0,r.useCallback)(()=>{az.current!==d.id&&(az.current=d.id,aM([]),aR("chargement"),fetch(`/api/admin/tickets/${d.id}/warranty-origins/`).then(async e=>{let t=await e.json();if(!e.ok)throw Error(t?.error||`HTTP ${e.status}`);aM(t.origins??[]),aR(null)}).catch(()=>{az.current=null,aR("echec")}))},[d.id]);(0,r.useEffect)(()=>{a||aD(!1)},[a]);let a0=(0,r.useCallback)(async()=>{eV(!0),e1(null);try{let e=await (0,ew.cf)();eD(!0===e.multiRepairDiscountEnabled)}catch{eD(!1)}try{let e=await fetch(`/api/admin/invoices/context/?ticket_id=${d.id}`);if(!e.ok)throw Error("Contexte indisponible");let t=await e.json();e5(Number(t.acompte_ttc)||0),e3(!!t.already_invoiced),tJ(!0===t.review_request_enabled),ax(t.qualirepar_imei_guard??null),t.qualirepar_imei_guard?.blocked&&tn(!1),a_(t.qualirepar_geo_guard??null),t.qualirepar_geo_guard?.blocked&&tn(!1),ay(t.qualirepar_required_fields_guard??null),ag(t.qualirepar_photo_guard??null),tf(t.qualirepar_codes_panne??null),tj(!0===t.qualirepar_option_enabled),tN(!0===t.bonus_variant_neutral_enabled),t.alma_active&&(at({almaId:t.alma_active.alma_payment_id,url:t.alma_active.payment_url??null,amountCents:t.alma_active.amount_cents,status:t.alma_active.status}),t3(!0))}catch(e){e1(e instanceof Error?e.message:"Erreur de chargement")}finally{eV(!1)}},[d.id]);(0,r.useEffect)(()=>
1{if(!a)return;let e=!(h&&h.length>0)&&!!($&&$.length>0),t=!!(h&&h.length>0),n=h&&h.length>0?h.map(e=>({label:e.label,unit_price_ttc:(0,eo.X4)(e.unit_price_ttc||0),quantity:e.quantity??1,source_type:e.source_type??((0,G.kd)(e.label)?"product":"repair"),source_ref:null,...e.ticket_line_id?{ticket_line_id:e.ticket_line_id}:{}})):e?$.filter(e=>null!=e.unit_price_ttc&&e.label.trim()).map(e=>({label:e.label,unit_price_ttc:(0,eo.X4)(e.unit_price_ttc),quantity:Math.max(1,Math.round(e.quantity||1)),source_type:e.source_type??"free",source_ref:e.source_ref??null,...null!=e.piece_stock?{piece_stock:e.piece_stock}:{},...null!=e.accessory_id?{accessory_id:e.accessory_id}:{},...null!=e.accessory_stock?{accessory_stock:e.accessory_stock}:{},...null!=e.accessory_cost_ht?{accessory_cost_ht:e.accessory_cost_ht}:{},...e.is_custom?{is_custom:!0}:{},...e.repair_type_name?{repair_type_name:e.repair_type_name}:{},...e.ticket_line_id&&e.updated_at?{ticket_line_id:e.ticket_line_id,ticket_line_updated_at:e.updated_at}:{},...!0===e.bonus_variant?{bonus_variant:!0}:{},...e.part_color?{part_color:e.part_color}:{},...e.repair_type_name&&(0,G.kd)(e.repair_type_name)?{is_service:!0}:{}})):[];e9(n),e7(function(e){let{depuisDevis:t,remiseDevis:a,totalArticlesTtc:n}=e;if(!t)return 0;let r=Number(a);if(!Number.isFinite(r)||r<=0)return 0;let s=Math.max(0,(0,eg.X4)(n));return(0,eg.X4)(Math.min(r,s))}({depuisDevis:t,remiseDevis:C,totalArticlesTtc:n.reduce((e,t)=>e+(t.quantity||1)*(t.unit_price_ttc||0),0)})),eO(!t||!0===P),eD(null),tt([]),tZ("none"),t1(e$(30)),t3(!1),t9(!1),t7(null),at(null),tI(null),ap(!1),tB(!1),tl("auto"),to(null),td(null),tm(""),th(!1),tb.current=null,t_.current=null,tA(!1),aj(null),aS(!1),aC(null),a$(!1),aT(!1),aF(!1);let r=null;if(ai)try{let e=sessionStorage.getItem(al);if(e){let t=JSON.parse(e);t&&Date.now()-(t.ts||0)<288e5&&Array.isArray(t.items)&&t.items.length>0?r=t:sessionStorage.removeItem(al)}}catch{}let s=e?Math.max(0,...$.map(e=>Date.parse(e.updated_at??"")||0)):0;ac.current=e?s:null;let i=n;if(au(null),r){let t=function(e){let{brouillon:t,depuisPanier:a,panierFraisTs:n,brouillonBaseTs:r,brouillonTs:s}=e;if(!t)return{source:"panier",comparaisonServeur:!1};if(!a)return{source:"brouillon",comparaisonServeur:!1};let i=Number(r);return null!=r&&Number.isFinite(i)?{source:n>i?"panier":"brouillon",comparaisonServeur:!0}:{source:(Number(s)||0)>n?"brouillon":"panier",comparaisonServeur:!1}}({brouillon:!0,depuisPanier:e,panierFraisTs:s,brouillonBaseTs:r.baseLinesUpdatedAt,brouillonTs:r.ts}),a=r.items??[],l=e&&!function(e,t){if(e.length!==t.length)return!1;let a=e.map(ef).sort(),n=t.map(ef).sort();return a.every((e,t)=>e===n[t])}(a,n);"brouillon"===t.source?(e9(i=a),l&&au(n)):l&&o.o.info("Panier mis \xe0 jour depuis un autre poste : reprise du panier \xe0 jour."),e7(Number(r.manualDiscount)||0),tt(Array.isArray(r.means)?r.means:[]),tI(r.signature??null),ap(!!r.signature);let c=e=>{var t,n;return null!=e&&null!=a[e]&&null!=i[e]&&(t=a[e],n=i[e],ef(t)===ef(n))},u=c(r.qrSupportLinePosition),d=c(r.qrManualLinePosition);tl("manual"===r.qrSupportMode&&d?"manual":"auto"),to(u?r.qrSupportLinePosition??null:null),td(d?r.qrManualLinePosition??null:null),tm(d?r.qrManualCode??"":"")}let l=r?.bonusTouched===!0;tn(d.qualirepar_eligible&&(l?!!r?.bonusActive:(0,W.V1)(i,aW))),tr.current=!!r&&(r.bonusTouched??(!r.bonusActive&&(0,W.V1)(i,aW))),ts.current=!1;let c=!!r,u=r?.posePiece;fetch(`/api/admin/parts/for-ticket/?ticket_id=${d.id}`).then(e=>e.ok?e.json():null).then(async a=>{let n=a?.casier??null;aj(n);let r=!!(n&&n.qty_on_hand>0);if(e)return void aS(!1);if(c||t)aS(c&&"boolean"==typeof u?u&&r:r);else{let e=d.repair_label??"",t=[d.repair_label,d.model_name].filter(Boolean).join(" ")||"R\xe9paration",a=[];r?a.push({label:t,unit_price_ttc:(0,eo.X4)(d.suggested_price_ttc||n.presta||0),quantity:1,source_type:(0,G.kd)(e)?"product":"repair",source_ref:n.price_id,piece_stock:n.qty_on_hand,is_service:(0,G.kd)(e),repair_type_name:e}):G.jG.includes(e)&&a.push({label:t,unit_price_ttc:(0,eo.X4)(d.suggested_price_ttc||0),quantity:1,source_type:"product",source_ref:null,repair_type_name:e});let s=new Set(a.map(e=>e.label.trim().toLowerCase()));for(let e of z??[]){if("film"!==e.kind)continue;let t=e.label.trim().toLowerCase();if(s.has(t))continue;s.add(t);let n=e.accessory_id?await eZ(e.accessory_id,e.label):await eY(e.label,d.device_type??null);a.push({label:e.label,unit_price_ttc:(0,eo.X4)(e.price??0),quantity:1,source_type:"product",source_ref:null,...n?{accessory_id:n.accessory_id,accessory_stock:n.qty_on_hand}:{}}
1)}a.length>0&&e9(e=>e.length>0?e:a),aS(!1)}}).catch(()=>{}).finally(()=>aF(!0)),a0()},[a,d.id,a0]),(0,r.useEffect)(()=>{if(a&&!eF&&ai&&!tX)try{sessionStorage.setItem(al,JSON.stringify({ts:Date.now(),baseLinesUpdatedAt:ac.current,items:e6,manualDiscount:e8,means:te,bonusActive:ta,bonusTouched:tr.current,signature:tR,posePiece:aw,qrSupportMode:ti,qrSupportLinePosition:tc,qrManualLinePosition:tu,qrManualCode:tp}))}catch{}},[a,eF,ai,al,tX,e6,e8,te,ta,tR,aw,ti,tc,tu,tp,tW.length]);let a1=(0,eo.X4)(e6.reduce((e,t)=>e+(t.quantity||1)*(t.unit_price_ttc||0),0)),a2=(0,eo.X4)(e6.reduce((e,t)=>e+("client"===t.casse?(t.quantity||1)*(t.unit_price_ttc||0):0),0)),a5=e=>(0,eo.X4)(e6.reduce((t,a)=>t+(e(a)?(a.quantity||1)*(a.unit_price_ttc||0):0),0)),a4=a5(e=>!!e.savPhonilab&&(0,q.G6)(e.savOrigin)),a3=a5(e=>!!e.savPhonilab&&!(0,q.G6)(e.savOrigin)),a6=(0,eo.X4)(a2+a4+a3),a9=(0,eo.X4)(a1-a6),a8=(0,S.Pj)(e6),a7=e6.filter(e=>!0===e.savPhonilab),ne=a7.length>0&&!e6.some(e=>"client"===e.casse)?a7.every(e=>(0,q.G6)(e.savOrigin))?"R\xe9paration offerte au titre du SAV historique : facture \xe0 0 â¬, rien \xe0 encaisser.":"R\xe9paration reprise sous garantie : facture \xe0 0 â¬, rien \xe0 encaisser.":"Toutes les prestations sont offertes : facture \xe0 0 â¬, rien \xe0 encaisser.",nt=ta&&!a8,na=e6.filter(S.EL).length,nn=!0===eA&&ez,nr=(0,r.useMemo)(()=>(0,eb.tc)({offeredCasseTtc:a2,savPhonilabTtc:a4,savGarantieTtc:a3,allOffered:a8,paidRepairCount:na,multiRepairDiscount:nn?ec.UD:0,manualDiscount:e8}),[a2,a4,a3,a8,na,nn,e8]),ns=!!(av&&e6.some(e=>e.source_ref===av.price_id&&(0,ep.E)(e))),ni=e6.filter(e=>null==e.accessory_id&&"string"==typeof e.source_ref&&/^[0-9a-f-]{36}$/i.test(e.source_ref)).map(e=>e.source_ref).sort().join(","),nl=(0,r.useMemo)(()=>new Set(ni?ni.split(","):[]),[ni]);(0,r.useEffect)(()=>{if(!a)return;if(!ni)return void aN({});let e=new AbortController;return fetch(`/api/admin/parts/for-ticket/?ticket_id=${d.id}&price_ids=${ni}`,{signal:e.signal}).then(e=>e.ok?e.json():null).then(e=>{if(!e||"object"!=typeof e.lineCosts||null==e.lineCosts)return;let t={};for(let[a,n]of Object.entries(e.lineCosts))"number"==typeof n?.avg_cost&&(t[a]=n.avg_cost);aN(t)}).catch(()=>{}),()=>e.abort()},[a,d.id,ni]);let{stock:nc}=(0,R.q)(ni.split(","),a),no=(0,r.useCallback)(e=>{let t="string"==typeof e.source_ref?e.source_ref:null;return(0,A.zV)(t&&nc?.[t]||null,e.piece_stock)},[nc]),nu=!a8&&ta&&!d.device_imei&&!d.device_serial_number,nd=!a8&&ta&&(af?.missing.length??0)>0,np=!a8&&ta&&ab?.required!==!1&&ab?.has_photo!==!0,nm=!a8&&(!!am?.blocked||!!ah?.blocked),nx=!a8&&ta&&!nm,nh=nx&&!tR,n_=e6.some(e=>0===e.unit_price_ttc&&!(0,S.Gk)(e)),nb=e6.some(e=>e.unit_price_ttc<0&&!(0,S.Gk)(e)),ng=e6.some(e=>!e.label.trim()),nf=(0,S.vv)(e6),ny=e6.some(e=>null!=e.accessory_id&&0===e.unit_price_ttc&&null==e.casse&&!0!==e.savPhonilab&&!(0,S.Gk)(e)),nv=e6.some(q.w$),nj=aw&&!a8,nk=e6.some(e=>e.colorPending)||nj&&!ns&&aL,nN=(0,D._0)(e6,{optionActive:!0===tk,bonusMontant:aY,deviceType:aW}),nw=(0,r.useMemo)(()=>e6.map((e,t)=>({index:t,label:e.label,priceId:e.source_ref,repairTypeName:(0,I.sp)(e),amountTtc:(0,eo.X4)((e.quantity||1)*(e.unit_price_ttc||0)),valid:(0,W.$K)(e,aW)})).filter(e=>e.valid&&(!nN||(0,D.w$)(e6[e.index],aY))),[e6,aW,nN,aY]),nS=(0,r.useMemo)(()=>e6.map((e,t)=>({index:t,label:e.label||`Ligne ${t+1}`,priceId:e.source_ref,isCustom:!0===e.is_custom,amountTtc:(0,eo.X4)((e.quantity||1)*(e.unit_price_ttc||0)),valid:(0,W._j)(e,aW)})).filter(e=>e.valid&&(!nN||(0,D.w$)(e6[e.index],aY))),[e6,aW,nN,aY]),nq=(0,r.useMemo)(()=>e6.filter(e=>(0,W.q_)(e,aW)),[e6,aW]),nC="auto"===ti?nw.find(e=>e.index===tc)??null:null,nP=H(tg?.codes??[],tp),n$=nS.find(e=>e.index===tu)??null,nL="manual"===ti&&null!=n$&&null!=nP,nT=!a8&&ta&&!nm&&null==nC&&!nL,nE=nT&&0===nw.length&&0===nS.length,nM=!eF&&(null==tg||0===tg.codes.length),nA=nT&&"manual"===ti&&null!=n$&&nM,nR=nT&&!nA&&"manual"===ti&&null!=n$&&null==nP,nI=(0,r.useMemo)(()=>!ta||a8?null:nC?.priceId?{support_line_position:nC.index,support_price_id:nC.priceId,support_repair_label:nC.repairTypeName??nC.label,support_repair_code_source:"auto_catalog"}:nL&&n$&&nP?{support_line_position:n$.index,support_price_id:n$.isCustom?n$.priceId:null,support_repair_code:nP.code,support_repair_label:nP.label,supp
1ort_repair_code_source:"manual"}:null,[a8,ta,nL,n$,nP,nC]),nD=nI?.support_line_position??null,nz=(0,D.bE)({optionActive:!0===tk,bonusDeduit:nt,bonusMontant:aY,lignes:e6,supportIndex:nD,deviceType:aW}),nO=(0,r.useMemo)(()=>(0,D.nn)(e6,nD,nz),[e6,nD,nz]),nF=(0,r.useMemo)(()=>{let e=a8?[]:[...nt?[{method:"qualirepar_bonus",amount:aY}]:[],...te];return(0,eo.PJ)({items:nO.map(e=>({label:e.label,source_type:e.source_type,source_ref:e.source_ref,quantity:e.quantity,unit_price_ttc:e.unit_price_ttc})),discounts:nr,payments:e,priorPaidTtc:a8?0:e2})},[nO,nr,te,ta,aY,e2,a8]),nX=nO.find(e=>"repair"===e.source_type)?.unit_price_ttc??0,nB=(0,r.useMemo)(()=>{let e=(0,eo.X4)(nr.reduce((e,t)=>e+(t.amount_ttc||0),0));return function(e){let t=e.lines??[],a=t.reduce((e,t)=>e+(t.quantity||1)*(t.unit_price_ttc||0),0)-Math.max(0,e.discountTtc??0),n=(0,eo.X4)(a/eo.iC),r=0,s=[],i=[];for(let e of t){let t=eu(e.label);if(e.costUnavailablePhone){i.push(`${t} (hors t\xe9l\xe9phone)`);continue}if(null==e.unit_cost_ht){i.push(t);continue}r=(0,eo.X4)(r+(e.quantity||1)*e.unit_cost_ht),s.push(t)}return null!=e.posedPieceCostHt&&(r=(0,eo.X4)(r+e.posedPieceCostHt),s.push("Pi\xe8ce pos\xe9e")),{revenueHt:n,knownCostHt:r,marginHt:(0,eo.X4)(n-r),partial:i.length>0,included:s,excluded:i}}({lines:nO.map(e=>{let t=null;return null!=e.accessory_id?t=e.accessory_cost_ht??null:av&&e.source_ref===av.price_id&&(e.piece_stock??0)>0?t=av.avg_cost:"string"==typeof e.source_ref&&(e.piece_stock??0)>0&&null!=ak[e.source_ref]&&(t=ak[e.source_ref]),{label:e.label||"Ligne",quantity:e.quantity||1,unit_price_ttc:e.unit_price_ttc||0,unit_cost_ht:t}}),discountTtc:e,posedPieceCostHt:av&&aw&&!ns?av.avg_cost:null})},[nO,nr,av,aw,ns,ak]),nG=nF.remaining<-.01,nU=te.some(e=>"cash"===e.method)&&nG?Math.abs(nF.remaining):0,nV=nC?.index??(nL?n$?.index:null)??null,nQ=null==nV?null:(t=nF.lines,function(e,t){let a="string"==typeof t?Number(t):t;if("number"!=typeof a||!Number.isInteger(a))return null;let n=!1,r=0,s=0;for(let t of e??[]){let e=ea(t.line_ttc),i=ee(t)&&Number(t.position)===a;i&&(n=!0),(i||ee(t)&&et.has(t.source_type??"")&&Z(t.line_ttc)>0&&!(0,K.QG)(t.source_ref)&&!(0,Y.YM)(t.source_ref))&&(r+=e),e<0&&(s-=e)}return n?{brut:r/100,remises:s/100,net:Math.max(0,r-s)/100}:null}(t,nV)?.net??null),nH=!a8&&ta&&!nm&&!nT&&null!=nQ&&aY>nQ;(0,r.useEffect)(()=>{a&&ta&&!tr.current&&!a8&&(nw.length>0||nq.length>0||(ts.current=!1,tn(!1)))},[a,ta,a8,nw,nq]),(0,r.useEffect)(()=>{!a||!aG||ta||tr.current||ts.current||a8||nm||(0!==nw.length||1===nq.length)&&(ts.current=!0,tn(!0))},[a,aG,ta,a8,nm,nw,nq]),(0,r.useEffect)(()=>{let e=t_.current;if(t_.current=e6,null==e||e===e6)return;let t=t=>{var a,n;return null!=t&&!(null!=e[t]&&null!=e6[t]&&(a=e[t],n=e6[t],ef(a)===ef(n)))};t(tc)&&(to(null),th(!0)),t(tu)&&(td(null),tm(""),th(!0))},[e6,tc,tu]),(0,r.useEffect)(()=>{if(ta&&!a8){if(0===nw.length){tl("manual"),to(null);return}"manual"!==ti&&!tx&&(nw.some(e=>e.index===tc)||to(nw[0]?.index??null))}},[a8,ta,nw,tc,ti,tx]),(0,r.useEffect)(()=>{if(!ta||a8||"manual"!==ti||tx||nS.some(e=>e.index===tu))return;let e=1===nq.length?e6.indexOf(nq[0]):-1;td(e>=0&&nS.some(t=>t.index===e)?e:null)},[a8,ta,e6,nq,nS,tu,ti,tx]),(0,r.useEffect)(()=>{if(!a||!ta||a8||"manual"!==ti||tx||null==n$||""!==tp||null==tg)return;let e=e6[n$.index];if(!e||!0!==e.bonus_variant||!(0,I.LG)(e))return;let t=`${n$.index}|${e.ticket_line_id??e.label}`;if(tb.current===t)return;let n=tg.eco_org_id===en.o||tg.eco_org_id===en.R?tg.eco_org_id:null;if(null==n)return;let r=(0,W.rp)((0,I.sp)(e),n,aW??void 0),s=H(tg.codes,r.code);tb.current=t,s&&tm(s.code)},[a,ta,a8,ti,tx,n$,tp,tg,e6,aW]),(0,r.useEffect)(()=>{tK(e=>0===e.length?e:[])},[ta,d.device_imei,tR,ti,tc,tu,tp,e6]);let nJ=te.find(e=>0>=(0,eo.X4)(e.amount))??null,nW=nJ?ek.l.find(e=>e.method===nJ.method)?.label??"moyen de paiement":null,nK="a_recevoir"===tY&&!t4&&!a8,nY=nK&&nF.remaining>.01,nZ=nK&&!d.client_id,n0=nK&&!d.client_email,n1=nK&&(!t0||t0<e$(0)),n2=nK&&nF.remaining<-.01,n5=!tX&&!e4&&!tO.bloquant&&!nu&&!nd&&!np&&!(ta&&nm)&&!nT&&!nH&&!nh&&!nv&&!ng&&!nf&&!nb&&!n_&&!nk&&!nJ&&!nZ&&!n0&&!n1&&!n2&&(a8?nF.total_ttc<.001:nF.total_ttc>.001)&&(nF.is_settled||nY)&&e6.length>0,n4=tO.bloquant?tO.champs.map(e=>ej.jt[e]):null,n3=n4?(0,x.Yo)(n4):tO.verificationEnCours?x.Bt:null,n6=(0,x.$Y)({alreadyInvoiced:e4,adresseSocieteManquante:n4,imeiMissing:nu,fieldsMissing:nd,photoMissing:np,photoVerificationImpossible:null==ab,missingClientFields:af?.missing?.map(e=>
1eC[e]??e),bonusRefused:ta&&nm,qualireparSupportMissing:nT,qualireparSupportAucuneLigne:nE,qualireparSupportPanneRequise:nR,qualireparSupportCodesIndisponibles:nA,qualireparSupportTooSmall:nH,qualireparSupportTtc:nQ,qualireparBonusTtc:aY,signatureMissing:nh,savOriginMissing:nv,noLabel:ng,diagnosticSeul:nf,hasNegativePrice:nb,accessoryPriceZero:ny,hasPriceZero:n_,colorChoiceMissing:nk,zeroAmountMeanLabel:nW,noItems:0===e6.length,totalInvalid:a8?nF.total_ttc>=.001:nF.total_ttc<=.001,notSettled:!nF.is_settled,overPaid:nG&&0===nU,overPaidTtc:Math.abs(nF.remaining),deferredMode:nK,clientPassageInterdit:nZ,clientEmailMissing:n0,deferredDueDateInvalid:n1,deferredOverpaid:n2}),n9=(0,r.useCallback)(()=>{let e=ty.current;e&&(e.scrollIntoView?.({block:"center"}),e.focus())},[]),[n8,n7]=(0,r.useState)(null),re=(0,r.useRef)(null),rt=async(e,t)=>{let a=e6[e],n=a?.ticket_line_id,r=a?.ticket_line_updated_at;if(a&&n&&r&&!re.current){t||(tL.current=!1),re.current=n,n7(n);try{let e=await fetch(`/api/admin/tickets/${d.id}/lines/${n}/`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({bonus_variant:t,expected_updated_at:r})}),a=await e.json().catch(()=>({}));if(a.line){let e=a.line;e9(t=>t.map(t=>t.ticket_line_id===n?{...t,label:e.label??t.label,bonus_variant:!0===e.bonus_variant,ticket_line_updated_at:e.updated_at??t.ticket_line_updated_at}:t));let t=Date.parse(e.updated_at??"");null!=ac.current&&Number.isFinite(t)&&t>ac.current&&(ac.current=t)}if(404===e.status){e9(e=>e.map(e=>e.ticket_line_id===n?{...e,ticket_line_id:null,ticket_line_updated_at:null}:e)),o.o.error("Cette prestation a \xe9t\xe9 supprim\xe9e du ticket sur un autre poste. Elle reste au panier, sans sa case de panne.");return}if(!e.ok)return void o.o.error(String(a.error??"La case n'a pas pu \xeatre enregistr\xe9e."));a.ticket_qualirepar&&(aU(!0===a.ticket_qualirepar.eligible),!0===a.ticket_qualirepar.refused&&o.o.error(er.xR),F?.())}catch{o.o.error("La case n'a pas pu \xeatre enregistr\xe9e. R\xe9essayez.")}finally{re.current=null,n7(null)}}},ra=()=>e6.map(e=>({source_type:e.source_type,source_ref:e.source_ref??null,is_custom:e.is_custom??null,casse:e.casse??null,savPhonilab:e.savPhonilab??null,repair_type_name:e.repair_type_name??null,label:e.label.slice(0,1e3),unit_price_ttc:Number.isFinite(e.unit_price_ttc)&&e.unit_price_ttc>=0?e.unit_price_ttc:null,bonus_variant:!0===e.bonus_variant,ticket_line_id:e.ticket_line_id??null})),rn=async()=>{if(!tw){tL.current=!1,tS(!0);try{let e=await fetch(`/api/admin/tickets/${d.id}/`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({qualirepar_eligible:!0,qualirepar_manual:!0,panier_caisse:ra()})}
1),t=await e.json().catch(()=>({}));if(!e.ok)return void o.o.error(String(t.error??"Le bonus n'a pas pu \xeatre activ\xe9."));let a=!0===t.qualirepar_eligible;aU(a),a||(o.o.error(t.qualirepar_refus_motif?(0,Q.mQ)(t.qualirepar_refus_motif):er.xR),tC("variante_non_cochee"===t.qualirepar_refus_motif)),F?.()}catch{o.o.error("Le bonus n'a pas pu \xeatre activ\xe9. R\xe9essayez.")}finally{tS(!1)}}},rr=async e=>{if(tT)return;tE(e);let t=aG&&ta,a=tL.current;try{let n=await fetch(`/api/admin/tickets/${d.id}/`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(a?{device_type_declared:e,qualirepar_eligible:!0,panier_caisse:ra()}:{device_type_declared:e})}),r=await n.json().catch(()=>({}));if(!n.ok)return void o.o.error(String(r.error??"Le type d'appareil n'a pas pu \xeatre enregistr\xe9. R\xe9essayez."));aQ(r.device_type_declared??e),t$(!1),aJ(null==r.qualirepar_bonus_amount?null:Number(r.qualirepar_bonus_amount));let s=!0===r.qualirepar_eligible;aU(s),s&&a&&(tL.current=!1,nm||tn(!0)),s||(tL.current=(t||a)&&(0,Q.Mh)(r.qualirepar_refus_motif),tn(!1),tI(null),o.o.error((0,Q.mQ)(r.qualirepar_refus_motif))),F?.(),a0()}catch{o.o.error("Le type d'appareil n'a pas pu \xeatre enregistr\xe9. R\xe9essayez.")}finally{tE(null)}},[rs,ri]=(0,r.useState)(new Set),[rl,rc]=(0,r.useState)(null),ro=(e,t)=>{if(tX)return void o.o.info("Encaissement en cours : attendez la r\xe9ponse avant de passer \xe0 la vente d'appareil.");if(ar)return void o.o.error("Un encaissement n'a pas confirm\xe9 son issue : v\xe9rifiez dans Factures avant de vendre un appareil.");if(e4)return void o.o.error(x.w1);let a=[];if(ta&&a.push("le bonus QualiR\xe9par"),nr.length>0&&a.push("une remise"),e6.some(e=>e.casse||e.savPhonilab)&&a.push("un geste offert (casse / SAV)"),aw&&a.push("une pi\xe8ce pos\xe9e \xe0 d\xe9compter"),a.length>0)return void o.o.error(`Cet encaissement porte ${a.join(" et ")} : la vente d'appareil ne sait pas le facturer. Encaissez la r\xe9paration depuis ce ticket, puis vendez l'appareil depuis sa fiche stock.`,{duration:12e3});let n=e6.filter((e,a)=>a!==t&&e.label.trim()&&e.unit_price_ttc>0),r=e6.filter((e,a)=>a!==t).length-n.length;aB({item:{id:e.stock_id,label:e.label,imei:e.imei,purchase_price:null,sale_target_price:e.sale_target_price>0?e.sale_target_price:null,purchase_regime:e.purchase_regime},...(0,j.z)(n,`ticket-${d.id}`)}),r>0&&o.o.info(1===r?"1 ligne incompl\xe8te (libell\xe9 ou prix manquant) n'a pas \xe9t\xe9 reprise.":`${r} lignes incompl\xe8tes (libell\xe9 ou prix manquant) n'ont pas \xe9t\xe9 reprises.`),null!=E&&o.o.info("Le devis restera \xab Accept\xe9 \xbb : cette vente encaisse le ticket, pas le devis. Marquez-le factur\xe9 depuis sa fiche si besoin.",{duration:1e4})},ru=()=>nO.map(e=>({label:e.label,source_type:e.source_type,source_ref:e.source_ref,quantity:e.quantity,unit_price_ttc:e.unit_price_ttc,...null!=e.majoration_bonus_variante&&e.majoration_bonus_variante>0?{majoration_bonus_variante:e.majoration_bonus_variante}:{},...!0===e.savPhonilab&&null!=e.savOrigin?{sav_origin:e.savOrigin}:{},...!0===e.bonus_variant&&"repair"===e.source_type?{bonus_variant:!0}:{},...e.ticket_line_id?{ticket_line_id:e.ticket_line_id}:{}})),rd=()=>{let e=e6.filter(q.w$);if(0!==e.length&&(e9(e=>e.map(e=>(0,q.w$)(e)?{...e,savPhonilab:!1,savOrigin:null,savOriginPending:!1,...eT(e)}:e)),1)){let t=e.map(e=>eE(e.label).trim()||"une ligne").join(", ");o.o.info(`Garantie non enregistr\xe9e sur ${t} : la raison manquait. La ligne reste factur\xe9e normalement.`)}aD(!1)},rp=e6.map((e,t)=>({index:t,libelle:eE(e.label).trim()||`Ligne ${t+1}`,prixTtc:e.unit_price_ttc,accessoire:!(0,S.pK)(e),geste:eP(e),origine:e.savOrigin??null,originePending:!0===e.savOriginPending})),rm=async()=>{if(!n5)return;let e=te.find(e=>0>=(0,eo.X4)(e.amount));if(e){let t=ek.l.find(t=>t.method===e.method)?.label??"moyen de paiement";o.o.error((0,x.LN)(t));return}tB(!0),tK([]);try{let e=(0,ep.b)({items:nO,posePiece:nj,casier:av?{...av,color:aq,piec:aP}:null,repairPriceTtc:nX}),t=eh(e6),a=e_(e6),n={ticket_id:d.id,client_id:d.client_id,...tG||nY?{}:{auto_send_optout:!0},...tH&&!tV?{review_request_optout:!0}:{},...E?{quote_id:E}:{},...nY?{deferred_payment:!0,due_date:t0}:{},items:ru(),discounts:nr,payments:a8?[]:[...nt?[{method:"qualirepar_bonus",amount:aY}]:[],...te],qualirepar:!a8&&ta?{eligible:!0,bonus_amount:aY,device_imei:d.device_imei,...nI??{},signature_data_url:tR}:null,...nF.total_ttc<.001?{allow_zero_total:!0}:{},...e.length>0?{consume_parts:e}:{},...t.length>0?{sell_accessories:t}:{},...a.length>0?{accessory_losses:a}:{}}
1,r=await fetch("/api/admin/invoices/",{method:"POST",headers:{"Content-Type":"application/json","Idempotency-Key":aa},body:JSON.stringify(n)}),s=await r.json();if(!r.ok){if(r.status>=400&&r.status<500&&409!==r.status&&an(),s?.code===ej.Em&&tO.signalerRefus(s),s?.kind==="qualirepar_blocking"&&Array.isArray(s.blockers)){let e=s.blockers.map(e=>"string"==typeof e?e.trim():"").filter(Boolean);tK(e)}throw Error(s?.error||(409===r.status?"Encaissement d\xe9j\xe0 en cours. Patientez quelques secondes, puis r\xe9essayez.":"\xc9chec de l'encaissement"))}an(),o.o.success(`Facture ${s.invoice_number} cr\xe9\xe9e`),s.qualirepar_support_warning&&o.o.error("Dossier QualiR\xe9par \xe0 v\xe9rifier : le support facture n'a pas pu \xeatre fig\xe9 automatiquement.",{duration:12e3}),!0===s.auto_delivered?o.o.success("Ticket cl\xf4tur\xe9 : appareil remis au client"):"string"!=typeof s.auto_delivered_reason||["d\xe9j\xe0 remis","ticket annul\xe9","ticket non r\xe9parable"].includes(s.auto_delivered_reason)||o.o.info(`Ticket non cl\xf4tur\xe9 automatiquement : ${s.auto_delivered_reason}. Cl\xf4turez-le depuis la fiche ticket.`,{duration:1e4});try{sessionStorage.removeItem(al)}catch{}if((0,ed.N)(s.part_warnings,"Pi\xe8ce non d\xe9compt\xe9e. V\xe9rifiez le stock de pi\xe8ces."),e.some(e=>e.breakage_undercounted)&&o.o.error("Pi\xe8ce neuve cass\xe9e non d\xe9compt\xe9e : stock \xe9puis\xe9 dans le casier. R\xe9gularisez la perte dans Stock > Ajustement avec le motif \xab casse \xbb au prochain r\xe9approvisionnement.",{duration:12e3}),(0,ed.N)(s.accessory_warnings,"Accessoire non d\xe9compt\xe9. V\xe9rifiez le stock dâaccessoires."),Array.isArray(s.accessory_loss_warnings))for(let e of s.accessory_loss_warnings.slice(0,3))o.o.error("string"==typeof e?.message?e.message:"Perte dâaccessoire non d\xe9compt\xe9e. V\xe9rifiez le stock dâaccessoires.");c(s.invoice_number),i(),s.invoice_id&&el.push(`/admin/factures/${s.invoice_id}`)}catch(e){o.o.error(e instanceof Error?e.message:"Erreur lors de l'encaissement")}finally{tB(!1)}},rx="true"===eH.env.NEXT_PUBLIC_ALMA_ENABLED,rh=(0,eo.X4)(nF.total_ttc-e2-(ta?aY:0)),r_=np||nu||nd,rb=nh||nT||nH||r_,rg=eF||!aO,rf=!rg&&!e0,ry={bonusActif:ta&&!a8,bonusBloque:aG&&nm&&!a8,motifBlocage:ah?.blocked?"geo":am?.blocked?"imei_recent":null,distanceKm:ah?.distance_km??null,dateDossierPrecedent:am?.last_claim_date?(0,ei.BY)(am.last_claim_date):null,supportManquant:nT,aucuneLignePossible:nE,panneRequise:nR,codesIndisponibles:nA,supportTropPetit:nH,supportTtc:nQ,bonusTtc:aY,imeiManquant:nu,photoManquante:np,photoAbsenceConfirmee:ab?.has_photo===!1,photoRequise:ab?.required!==!1,champsClientManquants:nd?(af?.missing??[]).map(e=>eC[e]??e):[]},rv=(0,er.n_)(ry),rj=(0,er.Mi)(ry),rk=rx&&!a8&&rh>.01&&!nT&&!nH&&!r_,rN={firstName:d.client_name?.split(" ")[0]??null,lastName:d.client_name?.split(" ").slice(1).join(" ")||null,email:d.client_email,phone:null},rw=(0,r.useCallback)((e,t)=>{tt([{method:"alma",amount:(0,eo.X4)(e/100)}]),t7(t),t9(!0)},[]),rS=(0,ey.ax)({is_pro:d.client_is_pro,company_name:d.client_company_name}),rq=d.client_id?rS?String(d.client_company_name).trim():d.client_name.trim()||"Client":"Client de passage",rC=(0,n.jsx)(eR,{adresseFacture:tO,factureANom:rq,factureASociete:rS,isAdmin:O,marginRevealed:t2,onBasculerFacturationPersonnelle:X,setMarginRevealed:t5,ticket:d});return aX?(0,n.jsx)(eW,{open:a,item:aX.item,initialAccessories:aX.accessories,initialServices:aX.services,initialExtraDevices:[],initialClientId:d.client_id,ticketId:d.id,quoteId:null,onSold:()=>{try{sessionStorage.removeItem(al)}catch{}(0,k.S)(),an(),c(""),i()},onUncertain:()=>as(),onClose:()=>aB(null)}):(0,n.jsxs)(b.aF,{open:a,onClose:i,title:rC,size:"lg",closeOnBackdrop:!1,children:[(0,n.jsx)(m.K,{className:"mb-5"}),rg?(0,n.jsxs)("div",{className:"space-y-3",role:"status","aria-label":"Chargement de l'encaissement",children:[(0,n.jsx)(es.EA,{className:"h-12 rounded-xl"}),(0,n.jsx)(es.EA,{className:"h-12 rounded-xl"}),(0,n.jsx)(es.EA,{className:"h-24 rounded-xl"})]}):e0?(0,n.jsx)(g.W,{message:e0,onRetry:a0}):(0,n.jsxs)("div",{className:"space-y-5",children:[d.client_id&&(tO.bloquant||tD)&&(0,n.jsx)("div",{ref:tF,children:(0,n.jsx)(ev.I1,{client:{id:d.client_id,is_pro:d.client_is_pro,company_name:d.client_company_name,...tD,...tO.bloquant?tO.fiche:null},bloquant:tO.bloquant,champsManquants:tO.champs,onBasculerPerso:X,onEnregistree:e=>{o.o.success("Adresse de la soci\xe9t\xe9 enregistr\xe9e"),tz({siren:e.siren??tD?.siren??null,address:e.address??null,address_complement:e.address_complement??null,postal_code:e.postal_code??null,city:e.city??null}),tO.marquerEnregistree(e),F?.()}})}),O&&t2&&(0,n.jsx)(eI,{alreadyInvoiced:e4,eur:eK,previewMargin:nB}),e4&&(0,n.jsx)("div",{className:"rounded-xl bg-amber-50 border border-amber-200 text-amber-800 text-sm px-3 py-2",children:x.w1}),(0,n.jsxs)("section",{children:[(0,n.jsx)("h4",{className:"text-sm font-semibold text-dark mb-2",children:"Prestations"}),ao&&(0,n.jsxs)("div",{role:"status",className:"rounded-[10px] border border-amber-200 bg-amber-50 px-3 py-2.5 mb-2 flex flex-col sm:flex-row sm:items-center sm:justify-between gap-2",children:[(0,n.jsx)("p",{className:"text-xs text-amber-800",children:"Le panier du ticket a chang\xe9 depuis votre saisie. Les lignes affich\xe9es ici sont celles que vous aviez commenc\xe9es."}),(0,n.jsx)(l.$,{variant:"outline",size:"sm",onClick:()=>(e=>{let t=(0,eo.X4)(e.reduce((e,t)=>
1e+("client"===t.casse||!0===t.savPhonilab?0:(t.quantity||1)*(t.unit_price_ttc||0)),0));e7(e=>(0,eo.X4)(Math.min(Math.max(0,e),t))),e9(e),au(null)})(ao),className:"shrink-0",children:"Repartir du panier"})]}),(0,n.jsx)(v.c,{cameraScan:!0,onPickPrestation:e=>{let t=e.is_service??(0,G.kd)(e.repairTypeName);e9(a=>[...a,{label:e.label,unit_price_ttc:(0,eo.X4)(e.presta),quantity:1,source_type:t?"product":"repair",source_ref:e.price_id,piece_stock:e.qty_on_hand,is_service:t,is_custom:e.is_custom,repair_type_name:e.repairTypeName}]),o.o.success(`Ligne ajout\xe9e : ${eE(e.label)}`)},onPickAccessory:e=>{e9(t=>[...t,{label:e.label,unit_price_ttc:(0,eo.X4)(e.sale_price_ttc),quantity:1,source_type:"product",source_ref:null,accessory_id:e.accessory_id,accessory_stock:e.qty_on_hand,accessory_cost_ht:e.avg_cost}]),o.o.success(`Ligne ajout\xe9e : ${e.label}`)},onPickPhone:ro,onScanPrestation:e=>{let t=(0,G.kd)(e.repairTypeName)?"product":"repair",a=void 0!==e.color;e9(n=>{let r=function(e,t){let a=void 0!==t.color;return e.findIndex(e=>e.source_ref===t.price_id&&e.source_type===t.source_type&&!em(e)&&(a?(e.color??"")===(t.color??"")&&(e.piec??!1)===(t.piec??!1):(e.color??"")===""))}(n,{price_id:e.price_id,source_type:t,color:e.color,piec:e.piec});return r>=0?n.map((e,t)=>t===r?{...e,quantity:ex(e.quantity,e.piece_stock)}:e):[...n,{label:e.label,unit_price_ttc:(0,eo.X4)(e.presta),quantity:1,source_type:t,source_ref:e.price_id,piece_stock:e.qty_on_hand,repair_type_name:e.repairTypeName,is_service:(0,G.kd)(e.repairTypeName),is_custom:e.is_custom,...a?{color:e.color??"",piec:e.piec??!1,colorPending:!1}:{}}]}),o.o.success(`Ligne ajout\xe9e : ${eE(e.label)}`)},onScanAccessory:e=>{e9(t=>{var a;let n=(a=e.accessory_id,t.findIndex(e=>e.accessory_id===a&&!em(e)));return n>=0?t.map((e,t)=>t===n?{...e,quantity:ex(e.quantity,e.accessory_stock)}:e):[...t,{label:e.label,unit_price_ttc:(0,eo.X4)(e.sale_price_ttc),quantity:1,source_type:"product",source_ref:null,accessory_id:e.accessory_id,accessory_stock:e.qty_on_hand,accessory_cost_ht:e.avg_cost}]}),o.o.success(`Ligne ajout\xe9e : ${e.label}`)},onScanFeedback:(e,t,a)=>{let n="error"===t?o.o.error:o.o.info;a?n(e,{action:a,duration:v.R}):n(e)},modelHint:d.model_name??"",modelId:d.model_id??null}),0===e6.length&&(0,n.jsxs)("div",{className:"rounded-xl bg-amber-50 border border-amber-200 px-3 py-2.5 mb-2",children:[(0,n.jsx)("p",{className:"text-sm font-medium text-amber-800",children:av&&av.qty_on_hand>0?"Aucune ligne sur la facture.":"La pi\xe8ce de cette r\xe9paration n'est pas dans le stock logiciel."}),(0,n.jsx)("p",{className:"text-xs text-amber-700 mt-0.5",children:"Cherchez ci-dessus ce qui est en stock pour cet appareil, ou ajoutez une \xab Ligne libre \xbb (dans ce cas aucun d\xe9compte de stock)."}),d.suggested_price_ttc>0&&(0,n.jsxs)("p",{className:"text-xs font-semibold text-amber-800 mt-1",children:["Prix annonc\xe9 au client sur le ticket : ",eK(d.suggested_price_ttc)]})]}),(0,n.jsx)(eX,{attachSuggestion:(e,t)=>{rc({idx:e,prev:e6[e]}),e9(a=>a.map((a,n)=>n===e?(0,w.dj)(a,{...a,...(0,N.fr)(a,t,G.kd)}):a))},basculerVarianteLigne:rt,caseVarianteEnEvidence:tq,dismissSuggestion:e=>ri(t=>new Set(t).add(e)),dismissedSuggestions:rs,handlePickPhone:ro,items:e6,lastAttached:rl,linkedPriceIds:nl,mentionDeLigne:(e,t)=>{let a=function(e){if("casse_client"===e.geste)return"Casse : pi\xe8ce du client";if("casse_neuve"===e.geste)return"Casse : notre pi\xe8ce neuve";if("sav"!==e.geste)return null;if(e.originePending)return"Sous garantie \xb7 origine \xe0 choisir";let t=e.origine;if(null==t||"legacy"===t.type)return"Sous garantie \xb7 Ancien logiciel";if("untracked"===t.type)return t.note.trim().length<q.W1?"Sous garantie \xb7 raison \xe0 indiquer":"Sous garantie \xb7 hors historique";let a=e.origines.find(e=>(0,q.kS)(e)===`${t.type}:${t.id}
1`),n=a?.label.split(" \xb7 ")[0]?.trim(),r=q.S6[t.type];return n?`Sous garantie \xb7 ${r} ${n}`:`Sous garantie \xb7 ${r}`}({geste:eP(e),origine:e.savOrigin,originePending:!0===e.savOriginPending,origines:aE}),r=(0,S.yW)(e),s=t===nD&&nz>0;if(a||r||s)return(0,n.jsxs)("div",{className:"flex flex-col gap-0.5",children:[a&&(0,n.jsx)("p",{className:(0,q.w$)(e)?"text-[11px] text-red-600":"text-[11px] text-gray-500",children:a}),r&&(0,n.jsx)("p",{className:"text-[11px] text-red-600",children:T}),s&&(0,n.jsxs)("p",{className:"text-[11px] text-gray-500 tabular-nums",children:["Factur\xe9e ",eK((0,eo.X4)(e.unit_price_ttc+nz))," : ",eK(e.unit_price_ttc)," +"," ",eK(nz)," de bonus QualiR\xe9par. Le client paie ",eK(e.unit_price_ttc),"."]})]})},removeItem:e=>e9(t=>t.filter((t,a)=>a!==e)),stockDeLigne:no,tenantLabel:eE,ticket:d,ticketEligibleAuBonus:aG,undoAttach:()=>{if(!rl)return;let{idx:e,prev:t}=rl;e9(a=>a.map((a,n)=>n===e?t:a)),rc(null)},updateItem:(e,t)=>{let a=e6[e],n=null!=t.unit_price_ttc&&t.unit_price_ttc>0,r=null!=a&&(!0===a.savPhonilab||"client"===a.casse);n&&r&&o.o.info(`Geste retir\xe9 sur ${eE(a.label).trim()||"la ligne"} : avec un prix, la ligne est factur\xe9e normalement.`),e9(a=>a.map((a,r)=>{if(r!==e)return a;let s={...a,...t};return n&&(!0===a.savPhonilab||"client"===a.casse)&&Object.assign(s,{savPhonilab:!1,savOrigin:null,savOriginPending:!1,casse:null,prixAvantGeste:null}),void 0!==t.label&&t.label!==a.label&&(0,S.kF)(a)&&Object.assign(s,(0,S.VR)(),{part_color:null}),s}))},varianteEnVol:n8,vocabulaireResolu:eM}),(0,n.jsxs)("div",{className:"mt-2 flex flex-wrap items-center gap-x-4 gap-y-1",children:[(0,n.jsx)("button",{type:"button",onClick:()=>{e6.some(e=>"free"===e.source_type&&!e.label.trim())||e9(e=>[...e,{label:"",unit_price_ttc:0,quantity:1,source_type:"free",source_ref:null}])},className:"min-h-11 text-xs text-gray-500 underline underline-offset-2 hover:text-dark cursor-pointer",children:"Ligne libre"}),e6.length>0&&(0,n.jsx)("button",{type:"button",onClick:()=>aI?rd():aD(!0),"aria-expanded":aI,className:"min-h-11 text-xs text-gray-500 underline underline-offset-2 hover:text-dark cursor-pointer",children:L})]}),aI&&e6.length>0&&(0,n.jsx)(M,{lignes:rp,origines:aE,etatOrigines:aA,onGeste:(e,t)=>e9(a=>a.map((a,n)=>{if(n!==e)return a;let r={savOrigin:null,savOriginPending:!1};return"casse_client"===t?{...a,casse:"client",savPhonilab:!1,...r,...eL(a)}:"casse_neuve"===t?{...a,casse:"neuve",savPhonilab:!1,...r,...eT(a)}:"sav"===t?!0===a.savPhonilab?{...a,casse:null,...eL(a)}:{...a,casse:null,savPhonilab:!0,savOrigin:null,savOriginPending:!0,...eL(a)}:{...a,casse:null,savPhonilab:!1,...r,...eT(a)}})),onOrigine:(e,t)=>e9(a=>a.map((a,n)=>n===e?{...a,savOrigin:t,savOriginPending:!1}:a)),onOuvrirOrigines:aZ,onFermer:rd}),a8&&!n6&&(0,n.jsx)("p",{className:"mt-2.5 rounded-xl bg-gray-50 px-3 py-2 text-xs text-gray-600",children:ne})]}),!a8&&(0,n.jsxs)("section",{className:"flex flex-col sm:flex-row sm:items-center gap-2",children:[(0,n.jsxs)("label",{className:"text-sm text-gray-600 flex items-center gap-2",children:["Remise commerciale",(0,n.jsx)(f.S,{ariaLabel:"Remise commerciale",className:"w-36",value:e8,max:a9,onChange:e=>e7((0,eo.X4)(Math.min(a9,Math.max(0,e))))})]}),!0===eA&&na>=2&&(0,n.jsxs)("label",{className:"text-xs font-medium text-dark bg-[var(--color-yellow)]/30 rounded-full px-3 py-1 inline-flex items-center gap-1.5 cursor-pointer",children:[(0,n.jsx)("input",{type:"checkbox",className:"accent-[var(--color-yellow)]",checked:ez,onChange:e=>eO(e.target.checked)}),"Multi-r\xe9paration â",eK(ec.UD)," (auto)"]})]}),(0,n.jsx)(eB,{calc:nF,eur:eK}),!a8&&nF.total_ttc<=.001&&e6.length>0&&e8>0&&(0,n.jsx)("p",{className:"text-xs text-amber-600 -mt-3",children:"La remise d\xe9passe le montant des prestations. R\xe9duisez-la pour obtenir un total positif."}),av&&!a8&&(0!==e6.length||0!==av.qty_on_hand)&&(0,n.jsx)(eG,{casier:av,casierColor:aq,casierCoveredByLine:ns,casierPiec:aP,posePiece:aw,setCasierColor:aC,setCasierColorPending:aT,setCasierPiec:a$,setPosePiece:aS}),ta&&a8&&!n6&&(0,n.jsx)("p",{className:"rounded-xl bg-gray-50 px-3 py-2 text-xs text-gray-600",children:"Tout est offert sur ce ticket : il n'y a rien \xe0 facturer, donc pas de bonus Quali
1R\xe9par \xe0 appliquer. Aucun dossier ne sera cr\xe9\xe9."}),!a8&&(0,n.jsxs)("section",{children:[(0,n.jsx)("h4",{className:"text-sm font-semibold text-dark mb-2",children:"Paiement"}),(0,n.jsxs)("div",{className:"space-y-1.5 text-sm",children:[aG&&(0,n.jsxs)("label",{className:`flex items-center justify-between rounded-xl border border-gray-200 px-3 py-2 ${nm?"opacity-60":"cursor-pointer"}`,children:[(0,n.jsxs)("span",{className:"flex items-center gap-2",children:[(0,n.jsx)("input",{type:"checkbox",checked:ta,disabled:nm,className:"w-4 h-4 accent-admin-accent",onChange:e=>{tr.current=!0,tn(e.target.checked),th(!1),e.target.checked||tI(null)}}),"Bonus QualiR\xe9par"]}),(0,n.jsx)("span",{className:"font-medium tabular-nums",children:eK(aY)})]}),!d.model_id&&aV&&"repair"===d.kind&&tv&&(0,n.jsx)("button",{type:"button",onClick:()=>t$(e=>!e),"aria-expanded":tP,className:"min-h-11 text-gray-600 underline underline-offset-2 cursor-pointer",children:"Changer le type d'appareil"}),(aG&&ta&&!nm&&aK||!d.model_id&&tP)&&(0,n.jsxs)("div",{className:"rounded-xl border-2 border-amber-400 bg-amber-50 p-3",children:[(0,n.jsxs)("label",{htmlFor:eq,className:"block text-sm font-semibold text-dark",children:["Type d'appareil",(0,n.jsx)("span",{className:"ml-1 text-xs font-normal text-amber-800",children:"\xe0 choisir pour le bonus QualiR\xe9par"})]}),(0,n.jsx)(V.p,{id:eq,value:tT??"",disabled:null!=tT,onChange:e=>{e&&rr(e)}}),(0,n.jsx)("p",{className:"mt-1 text-[11px] text-gray-600",children:"Appareil saisi \xe0 la main : son type d\xe9cide du montant du bonus et des codes panne propos\xe9s."})]}),aG&&ta&&!nm&&tg?.seuil_ttc!=null&&tg.seuil_ttc>aY&&(0,n.jsxs)("p",{className:"px-3 text-xs text-gray-600",children:["R\xe9paration minimum pour le bonus :"," ",(0,n.jsx)("span",{className:"tabular-nums",children:eK(tg.seuil_ttc)})]}),!aG&&"repair"===d.kind&&tv&&(0,n.jsxs)("div",{className:"flex flex-wrap items-center justify-between gap-2 rounded-xl bg-gray-50 px-3 py-2 text-gray-600",children:[(0,n.jsx)("span",{children:"Bonus QualiR\xe9par d\xe9sactiv\xe9 sur ce ticket"}),(0,n.jsx)("button",{type:"button",onClick:()=>void rn(),disabled:tw,className:"min-h-11 underline underline-offset-2 hover:text-dark disabled:opacity-60 cursor-pointer",children:tw?"Activationâ¦":"Activer"})]}),e2>0&&(0,n.jsxs)("div",{className:"flex items-center justify-between rounded-xl bg-gray-50 px-3 py-2 text-gray-700",children:[(0,n.jsx)("span",{children:"Acompte d\xe9j\xe0 vers\xe9"}),(0,n.jsx)("span",{className:"font-medium tabular-nums",children:eK(e2)})]})]}),rv&&(0,n.jsxs)("p",{role:"alert",className:"mt-2 flex items-start gap-1.5 text-xs text-amber-800",children:[(0,n.jsx)(u.eq,{className:"w-3.5 h-3.5 shrink-0 mt-0.5 text-amber-600"}),(0,n.jsx)("span",{children:rv})]}),aG&&!ta&&!nm&&!a8&&!(0,W.V1)(e6,aW)&&(nw.length>0||nS.length>0)&&(0,n.jsx)("p",{className:"mt-2 text-xs text-gray-500",children:"Bonus possible : cochez-le et choisissez la ligne qui le porte."}),rj.length>0&&(0,n.jsx)("p",{className:"mt-1.5 flex flex-wrap items-center gap-x-3 gap-y-1 text-[11px] text-gray-500",children:rj.map(e=>(0,n.jsxs)("span",{className:"inline-flex items-center gap-1","aria-label":`${e.label} : ${e.ok?"fait":"\xe0 faire"}`,children:[(0,n.jsx)("span",{"aria-hidden":"true",className:"tabular-nums",children:e.ok?"â":"â"}),e.label]},e.label))}),ta&&!nm&&(nw.length>0||nS.length>0)&&(0,n.jsxs)("div",{className:"mt-3",children:[(0,n.jsx)("p",{className:"text-[10.5px] font-bold uppercase tracking-[0.07em] text-gray-500",children:"Support du bonus"}),"auto"!==ti||1!==nw.length||tx?nw.length>0?(0,n.jsx)("div",{className:"mt-1 space-y-0.5",children:nw.map(e=>(0,n.jsxs)("label",{className:"flex items-center justify-between gap-2 min-h-11 text-sm cursor-pointer",children:[(0,n.jsxs)("span",{className:"min-w-0 inline-flex items-center gap-2",children:[(0,n.jsx)("input",{type:"radio",name:"qualirepar-support-line",checked:"auto"===ti&&tc===e.index,onChange:()=>{tl("auto"),to(e.index),th(!1)},className:"accent-admin-accent shrink-0"}),(0,n.jsx)("span",{className:"truncate",children:eE(e.repairTypeName??e.label)})]}),(0,n.jsx)("span",{className:"text-xs tabular-nums text-gray-500 shrink-0",children:eK(e.amountTtc)})]},`${e.index}-${e.priceId}`))}):null:(0,n.jsxs)("p",{className:"mt-1 text-xs text-gray-500",children:[eE(nw[0].repairTypeName??nw[0].label)," \xb7 ",(0,n.jsx)("span",{className:"tabular-nums",children:eK(nw[0].amountTtc)})]}),nS.length>0&&("manual"===ti||tM?(0,n.jsxs)("div",{className:"mt-2 space-y-1.5",children:[nw.length>0&&(0,n.jsx)("p",{className:"text-[11px] text-gray-400",children:"Autre support"}),nS.map(e=>(0,n.jsxs)("label",{className:"flex items-center justify-between gap-2 min-h-11 text-sm cursor-pointer",children:[(0,n.jsxs)("span",{className:"min-w-0 inline-flex items-center gap-2",children:[(0,n.jsx)("input",{type:"radio",name:"qualirepar-support-line",checked:"manual"===ti&&tu===e.index,onChange:()=>{tl("manual"),td(e.index),th(!1)},className:"accent-admin-accent shrink-0"}),(0,n.jsx)("span",{className:"truncate",children:eE(e.label)})]}),(0,n.jsx)("span",{className:"text-xs tabular-nums text-gray-500 shrink-0",children:eK(e.amountTtc)})]}
1,e.index)),nM?(0,n.jsxs)("p",{className:"flex flex-wrap items-center gap-2 text-xs text-amber-800",children:[(0,n.jsx)("span",{children:null!=tg&&null==tg.device_type?aK?"Type d'appareil inconnu : choisissez-le ci-dessus (Type d'appareil), ou d\xe9cochez le bonus.":"Type d'appareil inconnu : rattachez un mod\xe8le du catalogue \xe0 l'appareil (Modifier l'appareil), ou d\xe9cochez le bonus.":"Codes panne officiels indisponibles pour le moment (r\xe9f\xe9rentiel \xe9co-organisme non lisible)."}),(null==tg||null!=tg.device_type)&&(0,n.jsx)("button",{type:"button",onClick:()=>void a0(),className:"min-h-11 underline underline-offset-2 cursor-pointer",children:"R\xe9essayer"})]}):(0,n.jsxs)("div",{className:`rounded-xl p-3 ${nR?"border-2 border-amber-400 bg-amber-50":"border border-gray-200 bg-white"}`,children:[(0,n.jsxs)("label",{htmlFor:eS,className:nR?"block text-sm font-semibold text-dark":"block text-xs text-gray-500",children:["Panne r\xe9par\xe9e",nR&&(0,n.jsx)("span",{className:"ml-1 text-xs font-normal text-amber-800",children:"\xe0 choisir pour le bonus QualiR\xe9par"})]}),(0,n.jsxs)("select",{id:eS,ref:ty,"aria-label":"Code panne officiel du dossier",value:nP?nP.code:"",disabled:null==tg,onChange:e=>{tl("manual"),tm(e.target.value)},"aria-invalid":nR||void 0,className:"mt-1.5 w-full h-11 px-3 rounded-xl border border-gray-200 bg-white text-sm focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[rgba(245,164,0,0.35)]",children:[(0,n.jsx)("option",{value:"",children:null==tg?"Chargement des codes panneâ¦":"Choisissez la panne r\xe9par\xe9eâ¦"}),(tg?.codes??[]).map(e=>(0,n.jsxs)("option",{value:e.code,children:[e.code," \xb7 ",e.label]},e.code))]}),null!=tg&&J(tg.eco_org_id)&&(0,n.jsxs)("p",{className:"mt-1 text-[11px] text-gray-500",children:["Codes panne officiels ",J(tg.eco_org_id)," pour cet appareil."]})]})]}):(0,n.jsx)("button",{type:"button",onClick:()=>tA(!0),className:"mt-1 min-h-11 text-xs text-gray-500 underline underline-offset-2 hover:text-dark cursor-pointer",children:"Autre support"}))]}),tW.length>0&&(0,n.jsx)("div",{className:"mt-3 rounded-xl border border-amber-200 bg-amber-50 p-3 text-sm text-amber-900",children:(0,n.jsxs)("div",{className:"flex items-start gap-2",children:[(0,n.jsx)(u.eq,{className:"w-4 h-4 shrink-0 mt-0.5 text-amber-600"}),(0,n.jsxs)("div",{children:[(0,n.jsx)("p",{className:"font-semibold",children:"Bonus QualiR\xe9par \xe0 corriger"}),(0,n.jsx)("ul",{className:"mt-1.5 space-y-1 list-disc pl-4",children:tW.map((e,t)=>(0,n.jsx)("li",{children:e},`${t}-${e}`))})]})]})}),nx&&(0,n.jsx)(eU,{InlineSignaturePad:eJ,setSignature:tI,setSignatureRestored:ap,signature:tR,signatureRestored:ad}),t4?(0,n.jsx)(p,{payload:(()=>{let e=(0,ep.b)({items:nO,posePiece:aw,casier:av?{...av,color:aq,piec:aP}:null,repairPriceTtc:nX}),t=eh(e6),a=e_(e6);return{ticket_id:d.id,client_id:d.client_id,...E?{quote_id:E}:{},items:ru(),discounts:nr,payments:nt?[{method:"qualirepar_bonus",amount:aY}]:[],qualirepar:nt?{eligible:!0,bonus_amount:aY,device_imei:d.device_imei,...nI??{},signature_data_url:tR}:null,...e.length>0?{consume_parts:e}:{},...t.length>0?{sell_accessories:t}:{},...a.length>0?{accessory_losses:a}:{}}})(),customer:rN,amountTtcHint:rh,existing:ae,onConfirmed:rw,onBack:()=>{t3(!1),t9(!1),tt([])}}):(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("div",{className:`grid grid-cols-2 sm:grid-cols-3 gap-2 mt-2 ${rb?"opacity-50 pointer-events-none":""}`,children:ek.l.map(e=>(0,n.jsxs)(l.$,{size:"sm",variant:"ghost",className:"h-11 border border-gray-200 inline-flex items-center justify-center gap-1.5",disabled:rb,onClick:()=>(e=>{let t=function(e){let{mode:t,method:a,moyensSaisis:n,aUneLigneVirement:r}=e;if("virement"===a){let e="recu"!==t||r?t:"none";return"none"!==e?{mode:e,ajouterLeMoyen:!1}:0===n?{mode:"a_recevoir",ajouterLeMoyen:!1}:{mode:"recu",ajouterLeMoyen:!0}}return{mode:"a_recevoir"===t?"none":t,ajouterLeMoyen:!0}}({mode:tY,method:e,moyensSaisis:te.length,aUneLigneVirement:te.some(e=>"virement"===e.method)});t.mode!==tY&&tZ(t.mode),t.ajouterLeMoyen&&(e=>{let t=(0,eo.X4)(Math.max(nF.remaining,0));tt(a=>[...a,{method:e,amount:t}])})(e)})(e.method),children:[(0,n.jsx)(e.Icon,{className:"w-4 h-4 text-gray-light"}),e.label]},e.method))}),(0,n.jsx)("div",{className:"space-y-1.5 mt-2",children:te.map((e,t)=>{let a=ek.l.find(t=>t.method===e.method);return(0,n.jsxs)("div",{className:"flex items-center justify-between gap-2 text-sm",children:[(0,n.jsxs)("span",{className:"text-gray-700 inline-flex items-center gap-1.5",children:[a&&(0,n.jsx)(a.Icon,{className:"w-4 h-4 text-gray-light"}),a?.label]}),(0,n.jsxs)("div",{className:"flex items-center gap-2",children:[(0,n.jsx)(f.S,{ariaLabel:"Montant",className:"w-36",value:e.amount,onChange:e=>{let a;return a=(0,eo.X4)(e),tt(e=>e.map((e,n)=>n===t?{...e,amount:a}:e))}}),(0,n.jsx)("button",{type:"button","aria-label":"Retirer le moyen",onClick:()=>tt(e=>{let a=e.filter((e,a)=>a!==t);return"recu"===tY&&e.some(e=>"virement"===e.method)&&!a.some(e=>"virement"===e.method)&&tZ("none"),a}),className:"text-gray-400 hover:text-red-600 w-9 h-11 flex items-center justify-center",children:(0,n.jsx)(u.uc,{className:"w-4 h-4"})})]})]},t)})}),(0,n.jsx)(s.S,{moyens:te,ticketId:d.id,devisId:E||null}),"none"!==tY&&!t4&&!a8&&(0,n.jsx)(eQ,{choisirEtatVirement:e=>{if(e===tY)return;
1let t="a_recevoir"===e?{viderLesMoyens:!0,poserLeVirement:!1}:{viderLesMoyens:!1,poserLeVirement:!0};tZ(e),t.viderLesMoyens&&tt([]),t.poserLeVirement&&tt(e=>e.some(e=>"virement"===e.method)?e:[...e,{method:"virement",amount:(0,eo.X4)(Math.max(nF.remaining,0))}])},deferredActive:nK,deferredDueDate:t0,paymentLocked:rb,setDeferredDueDate:t1,virementMode:tY}),nW&&(0,n.jsx)("p",{role:"alert",className:"text-xs text-coral mt-1.5",children:(0,x.LN)(nW)}),(0,n.jsxs)("div",{"aria-live":"polite",className:`mt-3 rounded-xl px-4 py-3 flex items-center justify-between font-semibold ${nG?"bg-red-50 text-red-700":nF.is_settled?"bg-surface text-dark":"bg-amber-50 text-amber-900"}`,children:[(0,n.jsx)("span",{children:nG?"Trop-per\xe7u":nY?"Reste d\xfb (paiement diff\xe9r\xe9)":"Reste \xe0 payer"}),(0,n.jsx)("span",{className:"tabular-nums",children:eK(nG?Math.abs(nF.remaining):Math.max(nF.remaining,0))})]}),nU>0&&(0,n.jsxs)("p",{className:"text-xs text-amber-600 mt-1",children:["Trop-per\xe7u de ",eK(nU)," : saisissez le montant en esp\xe8ces r\xe9ellement conserv\xe9 (le rendu monnaie ne se facture pas)."]}),rk&&!nK&&(0,n.jsxs)("button",{type:"button",onClick:()=>{tt([]),t3(!0)},disabled:rb||null!=n3,"aria-describedby":n3?"alma-adresse-societe":void 0,className:"mt-3 w-full inline-flex items-center justify-center gap-2 rounded-xl border border-coral/30 bg-coral/5 text-coral font-semibold h-11 text-sm hover:bg-coral/10 disabled:opacity-50 disabled:cursor-not-allowed",children:[(0,n.jsx)(u.lc,{className:"w-4 h-4"}),"Payer en plusieurs fois (Alma 2\xd7/3\xd7/4\xd7)"]}),rk&&!nK&&n3&&(0,n.jsx)("p",{id:"alma-adresse-societe",className:"mt-1 text-xs text-red-700",children:n3})]})]})]}),rf&&n6&&!tX&&(!t4||t6)&&(0,n.jsxs)("p",{className:"mt-4 -mb-2 flex items-start gap-1.5 text-xs text-red-700 bg-red-50 border border-red-100 rounded-lg px-3 py-2",children:[(0,n.jsx)(u.eq,{className:"w-3.5 h-3.5 shrink-0 mt-0.5 text-red-600"}),(0,n.jsxs)("span",{className:"flex flex-wrap items-center gap-x-2 gap-y-1",children:[(0,n.jsx)("span",{children:n6}),n6===x.Z_&&(0,n.jsx)("button",{type:"button",onClick:n9,className:"min-h-11 underline underline-offset-2 cursor-pointer",children:"Choisir la panne"}),n6?.startsWith(x.u9)&&(0,n.jsx)("button",{type:"button",onClick:()=>tF.current?.scrollIntoView?.({block:"center"}),className:"min-h-11 underline underline-offset-2 cursor-pointer",children:"Compl\xe9ter l'adresse"})]})]}),rf&&(0,n.jsx)("div",{className:"mt-4",children:(0,n.jsx)(B,{sendEmail:tG,onSendEmailChange:tU,askReview:tV,onAskReviewChange:tQ,reviewEnabled:tH,deferred:nY,clientEmail:d.client_email,disabled:tX})}),(0,n.jsxs)(b.jl,{children:[(0,n.jsx)(l.$,{variant:"ghost",onClick:i,disabled:tX,children:"Annuler"}),rf&&(!t4||t6)&&(0,n.jsxs)(l.$,{variant:"primary",onClick:rm,loading:tX,disabled:!n5,className:"inline-flex items-center justify-center gap-1.5",children:[(0,n.jsx)(u.C1,{className:"w-4 h-4"}),nY?"G\xe9n\xe9rer la facture (\xe0 r\xe9gler par virement)":"Encaisser & g\xe9n\xe9rer la facture"]})]})]})}},93392:(e,t,a)=>{a.d(t,{Lt:()=>l,Zf:()=>c,gQ:()=>n,mD:()=>r});let n=["smartphone","tablette","montre connect\xe9e","laptop","console"],r={smartphone:"T\xe9l\xe9phone",tablette:"Tablette","montre connect\xe9e":"Montre connect\xe9e",laptop:"Ordinateur portable",console:"Console de jeux"},s=e=>(e??"").trim(),i=e=>e.normalize("NFD").replace(/[\u0300-\u036f]/g,"").toLowerCase().replace(/\s+/g," ").trim();function l(e){let t=s(e.modelDeviceType);if(t)return{type:t,source:"catalogue"};let a=s(e.declared);return a?{type:a,source:"declare"}:{type:null,source:"inconnu"}}function c(e){let t=i(s(e));return t?n.find(e=>i(e)===t)??null:null}}}]);
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.