PageSourceSearch

https://navafratelli.lovable.app/assets/Clienti-BEKMiXh_.js

js navafratelli.lovable.app collected 2026-10-03 03:34:01 UTC 40,892 bytes, 18 lines download raw bytes

1import{j as e}from"./motion-Db2Xga7i.js";import{r as h}from"./charts-B1Y5zxTN.js";import{s as Te}from"./success-animation-JysX3yYf.js";import{c as we,s as b,b as vi,u as fi,k as _i,a as ji,m as bi,B as _,F as ae,D as Ie,d as Ni,P as yi,e as Le,f as De,h as $e,n as wi,S as Ci,o as zi,p as Si,U as Pi,q as Ai,r as Ei,t as Oe,v as k,w as ki,x as F,y as Fi}from"./index-C66_C_P1.js";import{I as v}from"./input-E9Aimm-q.js";import{L as l}from"./label-DMjgtnjN.js";import{T as Re}from"./textarea-xJkKZHD2.js";import{S as H}from"./switch-CEuoCKEN.js";import{S as fe,a as _e,b as je,c as be,d as W}from"./select-DAot6aZb.js";import{T as Me,a as Ve,b as T,c as se}from"./tabs-CIcQut5I.js";import{C as M,b as V,c as G,a as q,d as Ne}from"./card-DXxMF52i.js";import{B as S}from"./badge-CQJpCeZk.js";import{e as Ti}from"./exportCsv-DngXSoT3.js";import{E as Je,a as te}from"./pdf-BkPZWjdg.js";import{f as Ii,i as Li}from"./dates-ivKbcnBu.js";import{o as Di,s as oe,l as re,n as qe}from"./forms-4oGjGWvu.js";import{F as $i}from"./file-down-C3PxiVrp.js";import{P as Be}from"./printer-DuNPlL1s.js";import{T as Oi}from"./truck-BnQxr1pm.js";import{C as Ri}from"./clipboard-list-DYCIR2tz.js";import{E as Ue}from"./eye-off-s16VXISC.js";import{E as He}from"./eye-Za7bJazn.js";import{U as We}from"./user-x-xti9caPk.js";import{P as Mi}from"./pencil-Bw6eFndf.js";import{T as Ge}from"./trash-2-n68YVVtN.js";import"./check-D5Kn9MgH.js";import"./radix-CndBjKvF.js";import"./vendor-data-DCPnHH6p.js";import"./chevron-down-D_XrtiFJ.js";/**
2 * @license lucide-react v0.462.0 - ISC
3 *
4 * This source code is licensed under the ISC license.
5 * See the LICENSE file in the root directory of this source tree.
6 */const Vi=we("ExternalLink",[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"M10 14 21 3",key:"gplh6r"}],["path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6",key:"a6xqqp"}]]);/**
7 * @license lucide-react v0.462.0 - ISC
8 *
9 * This source code is licensed under the ISC license.
10 * See the LICENSE file in the root directory of this source tree.
11 */const qi=we("Key",[["path",{d:"m15.5 7.5 2.3 2.3a1 1 0 0 0 1.4 0l2.1-2.1a1 1 0 0 0 0-1.4L19 4",key:"g0fldk"}],["path",{d:"m21 2-9.6 9.6",key:"1j0ho8"}],["circle",{cx:"7.5",cy:"15.5",r:"5.5",key:"yqb3hr"}]]);/**
12 * @license lucide-react v0.462.0 - ISC
13 *
14 * This source code is licensed under the ISC license.
15 * See the LICENSE file in the root directory of this source tree.
16 */const Bi=we("Percent",[["line",{x1:"19",x2:"5",y1:"5",y2:"19",key:"1x9vlm"}],["circle",{cx:"6.5",cy:"6.5",r:"2.5",key:"4mh3h7"}],["circle",{cx:"17.5",cy:"17.5",r:"2.5",key:"1mdrzq"}]]),N={primary:[30,41,80],accent:[59,130,246],ink:[15,23,42],muted:[100,116,139],border:[226,232,240],zebra:[248,250,252],sectionBg:[241,245,249]},Ui={lunedi:"Lunedì",martedi:"Martedì",mercoledi:"Mercoledì",giovedi:"Giovedì",venerdi:"Venerdì"};function Hi(t){switch(t.regola_consegna){case"giorno_fisso":return`Ogni ${Ui[t.giorno_consegna_fisso||""]||t.giorno_consegna_fisso||"-"}`;case"giorni_fissi":return`${t.giorni_consegna_fissi??15} giorni`;default:return"15 gg lavorativi (standard)"}}function Ke(t,j,u){const p=t.internal.pageSize.getWidth();t.setFillColor(...N.primary),t.rect(0,0,p,22,"F"),t.setTextColor(255,255,255),t.setFont("helvetica","bold"),t.setFontSize(16),t.text(j,14,13),u&&(t.setFont("helvetica","normal"),t.setFontSize(9),t.text(u,14,19)),t.setFontSize(9),t.setFont("helvetica","normal");const g=Ii(new Date,"d MMMM yyyy 'ore' HH:mm",{locale:Li});t.text(g,p-14,13,{align:"right"})}function Qe(t){const j=t.getNumberOfPages(),u=t.internal.pageSize.getWidth(),p=t.internal.pageSize.getHeight();for(let g=1;g<=j;g++)t.setPage(g),t.setFontSize(8),t.setTextColor(...N.muted),t.text(`Pagina ${g} di ${j}`,u-14,p-8,{align:"right"}),t.text("Nava Fratelli — Anagrafica",14,p-8)}function Wi(t,j,u){const p=new Je;Ke(p,"Scheda Anagrafica Cliente",t.nome);const g=[["Telefono fisso",t.telefono_fisso||t.telefono||"-"],["Cellulare",t.cellulare||"-"],["Email",t.email||"-"],["PEC",t.pec||"-"]],x=[["Via",t.via||"-"],["CAP",t.cap||"-"],["Città",t.citta||"-"],["Provincia",t.provincia||"-"]],P=[["Partita IVA",t.partita_iva||"-"],["Codice SDI",t.codice_sdi||"-"],["IBAN",t.iban||"-"],["Banca di appoggio",t.banca_appoggio||"-"]],le=[["Listino assegnato",(()=>{const w=j||(t.listino_dedicato?"Dedicato":"-");return u||t.listino_dedicato?`${w} — con prezzi personalizzati`:w})()],["Imballo",t.percentuale_imballo!=null?`${t.percentuale_imballo}%`:"default sistema"],["Regola consegna",Hi(t)],["Rivenditore",t.is_reseller?"Sì":"No"],["Posa abilitata",t.posa_abilitata?"Sì":"No"],["Username",t.username||"-"],["Stato",t.attivo===!1?"Archiviato":"Attivo"]],ce=[{title:"Contatti",rows:g},{title:"Indirizzo",rows:x},{title:"Dati fiscali",rows:P},{title:"Dati commerciali",rows:le}];let z=30;for(const w of ce)te(p,{startY:z,head:[[w.title,""]],body:w.rows,theme:"grid",headStyles:{fillColor:N.primary,textColor:[255,255,255],fontStyle:"bold",fontSize:10,halign:"left"},bodyStyles:{fontSize:10,textColor:N.ink,lineColor:N.border,lineWidth:.1},alternateRowStyles:{fillColor:N.zebra},columnStyles:{0:{fontStyle:"bold",cellWidth:55,textColor:N.muted},1:{cellWidth:"auto"}},margin:{left:14,right:14}}),z=p.lastAutoTable.finalY+6;t.note&&(te(p,{startY:z,head:[["Note"]],body:[[t.note]],theme:"grid",headStyles:{fillColor:N.primary,textColor:[255,255,255],fontStyle:"bold",fontSize:10,halign:"left"},bodyStyles:{fontSize:10,textColor:N.ink,cellPadding:3},margin:{left:14,right:14}}),z=p.lastAutoTable.finalY+6),t.note_produzione&&te(p,{startY:z,head:[["Note produzione"]],body:[[t.note_produzione]],theme:"grid",headStyles:{fillColor:N.accent,textColor:[255,255,255],fontStyle:"bold",fontSize:10,halign:"left"},bodyStyles:{fontSize:10,textColor:N.ink,cellPadding:3},margin:{left:14,right:14}}),Qe(p);
16const A=t.nome.replace(/[^a-z0-9]+/gi,"_").toLowerCase();p.save(`anagrafica_${A}.pdf`)}function Gi(t,j,u,p={}){const g=new Je({orientation:"landscape"});Ke(g,"Elenco Clienti",`${t.length} clienti${u?` — ${u}`:""}`),te(g,{startY:28,head:[["Ragione sociale","Città","Telefono","Email","P.IVA","Listino","Stato"]],body:t.map(x=>[x.nome,[x.citta,x.provincia].filter(Boolean).join(" "),x.cellulare||x.telefono_fisso||x.telefono||"",x.email||"",x.partita_iva||"",(()=>{const P=j[x.listino_base_id||""]||(x.listino_dedicato?"Dedicato":"");return p[x.id]||x.listino_dedicato?`${P}${P?" ":""}(personalizz.)`:P})(),x.attivo===!1?"Archiviato":"Attivo"]),theme:"grid",headStyles:{fillColor:N.primary,textColor:[255,255,255],fontStyle:"bold",fontSize:9,halign:"left"},bodyStyles:{fontSize:8.5,textColor:N.ink,lineColor:N.border,lineWidth:.1,cellPadding:2},alternateRowStyles:{fillColor:N.zebra},margin:{left:10,right:10},columnStyles:{0:{fontStyle:"bold",cellWidth:55},6:{cellWidth:22}}}),Qe(g),g.save(`elenco_clienti_${new Date().toISOString().slice(0,10)}.pdf`)}function Yi({path:t}){const[j,u]=h.useState(null);return h.useEffect(()=>{let p=!0;return(async()=>{if(!t)return u(null);if(t.startsWith("http"))return u(t);const{data:x}=await b.storage.from("cliente-loghi").createSignedUrl(t,3600);p&&u((x==null?void 0:x.signedUrl)||null)})(),()=>{p=!1}},[t]),j?e.jsx("img",{src:j,alt:"Logo cliente",className:"h-10 w-auto object-contain rounded border border-border bg-background p-1"}):null}const Xe=(t=500)=>oe().trim().max(t).transform(j=>j.replace(/<script[\s\S]*?<\/script>/gi,"").replace(/on\w+\s*=\s*["'][^"']*["']/gi,"")),y=(t=500)=>Xe(t).optional().or(re("")),Ji=Di({nome:Xe(200).refine(t=>t.length>0,"Il nome è obbligatorio"),via:y(300),cap:y(10),citta:y(100),provincia:y(5),telefono_fisso:y(30),cellulare:y(30),email:oe().trim().max(255).email("Email non valida").optional().or(re("")),pec:oe().trim().max(255).email("PEC non valida").optional().or(re("")),partita_iva:y(20),codice_sdi:y(10),iban:y(34),banca_appoggio:y(200),username:y(50),password:oe().max(128).optional().or(re("")),note:y(2e3),note_produzione:y(2e3),percentuale_imballo:qe().min(0).max(100).optional(),giorni_consegna_fissi:qe().min(1).max(365).optional()});function Ki(t,j){const u=t.safeParse(j);return u.success?{success:!0,data:u.data}:{success:!1,errors:u.error.issues.map(g=>`${g.path.join(".")}: ${g.message}`)}}const ye=[{value:"lunedi",label:"Lunedì"},{value:"martedi",label:"Martedì"},{value:"mercoledi",label:"Mercoledì"},{value:"giovedi",label:"Giovedì"},{value:"venerdi",label:"Venerdì"}],Ye={nome:"",via:"",cap:"",citta:"",provincia:"",telefono_fisso:"",cellulare:"",email:"",pec:"",partita_iva:"",codice_sdi:"",iban:"",banca_appoggio:"",username:"",password:"",listino_dedicato:!1,listino_base_id:"",note:"",note_produzione:"",attivo:!0,regola_consegna:"standard",giorno_consegna_fisso:"",giorni_consegna_fissi:15,trasporto_abilitato:!0,percentuale_imballo:null,is_reseller:!1,logo_url:"",ricarico_percentuale:100,preventivo_finale_abilitato:!1};function Sa(){var ke;const[t,j]=h.useState([]),[u,p]=h.useState([]),[g,x]=h.useState([]),[P,ne]=h.useState({}),[le,ce]=h.useState(!0),[z,A]=h.useState(!1),[w,Ze]=h.useState(""),[ei,Y]=h.useState(!1),[m,Ce]=h.useState(null),[ii,J]=h.useState(!1),[B,de]=h.useState(""),[I,me]=h.useState(null),[ue,ai]=h.useState(!1),[pe,si]=h.useState(!1),[D,K]=h.useState(null),{toast:f}=vi(),{user:he,isAdmin:Q}=fi(),{permessi:ze}=_i(),X=ji(),{imballo_default_percentuale:ge}=bi(),Se=Q||ze.gestisce_listini_personalizzati,Z=Q||ze.gestisce_clienti,[a,n]=h.useState(Ye),ti=async i=>{try{const[o,s]=await Promise.all([b.from("ordini").select("id",{count:"exact",head:!0}).eq("cliente_id",i),b.from("preventivi").select("id",{count:"exact",head:!0}).eq("cliente_id",i)]);K({ordini:o.count||0,preventivi:s.count||0})}catch(o){console.error("Error fetching cliente stats:",o),K(null)}};h.useEffect(()=>{$(),oi(),ri(),ni()},[]);const oi=async()=>{try{const{data:i,error:o}=await b.from("listini_base").select("id, nome").eq("attivo",!0).order("ordine");if(o)throw o;p(i||[])}catch(i){console.error("Error fetching listini base:",i)}},ri=async()=>{try{const{data:i,error:o}=await b.from("negozi").select("id, nome, sede_cliente_id, attivo").eq("attivo",!0).order("nome");if(o)throw o;x((i||[]).filter(s=>s.sede_cliente_id))}catch(i){console.error("Error fetching negozi:",i)}},ni=async()=>{try{const{data:i,error:o}=await b.from("clienti_prezzi_override").select("cliente_id");if(o)throw o;const s={};for(const r of i||[])r.cliente_id&&(s[r.cliente_id]=!0);ne(s)}catch(i){console.error("Error fetching personalizzazioni:",i)}},$=async()=>{try{const{data:i,error:o}=await b.from("clienti").select("*, reseller:clienti!created_by_cliente_id(nome)").order("created_by_cliente_id",{nullsFirst:!0}).order("nome");if(o)throw o;const s=(i||[]).map(c=>
16c.user_id).filter(Boolean);let r={};if(s.length>0){const{data:c}=await b.from("profiles").select("user_id, ultimo_accesso").in("user_id",s);r=Object.fromEntries((c||[]).map(d=>[d.user_id,d.ultimo_accesso]))}j((i||[]).map(c=>({...c,ultimo_accesso:c.user_id?r[c.user_id]:void 0})))}catch(i){console.error("Error fetching clienti:",i),f({variant:"destructive",title:"Errore nel caricamento clienti"})}finally{ce(!1)}},li=async i=>{var c;i.preventDefault();const o=Ki(Ji,{nome:a.nome,via:a.via,cap:a.cap,citta:a.citta,provincia:a.provincia,telefono_fisso:a.telefono_fisso,cellulare:a.cellulare,email:a.email||void 0,pec:a.pec||void 0,partita_iva:a.partita_iva,codice_sdi:a.codice_sdi,iban:a.iban,banca_appoggio:a.banca_appoggio,username:a.username,password:a.password,note:a.note,note_produzione:a.note_produzione,percentuale_imballo:a.percentuale_imballo,giorni_consegna_fissi:a.giorni_consegna_fissi});if(!o.success){f({variant:"destructive",title:"Errori di validazione",description:o.errors.join(", ")});return}const s=!m||!m.user_id,r=a.username&&a.password&&s;if(r&&a.password.length<6){f({variant:"destructive",title:"La password deve essere di almeno 6 caratteri"});return}A(!0);try{let d=null;if(r){const{data:L}=await b.auth.getSession(),U=await fetch("https://cdfbvzberwcwlgjtmjyg.supabase.co/functions/v1/admin-create-user",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${(c=L.session)==null?void 0:c.access_token}`},body:JSON.stringify({email:a.email||void 0,password:a.password,nome:a.nome,username:a.username,role:"cliente"})}),Fe=await U.json();if(!U.ok)throw new Error(Fe.error||"Errore nella creazione utente");d=Fe.user_id}const{password:Qi,...E}=a;if(m){const L={...E,listino_base_id:E.listino_base_id||null,giorni_consegna_fissi:E.giorni_consegna_fissi||null,giorno_consegna_fisso:E.giorno_consegna_fisso||null};d&&(L.user_id=d);const{error:U}=await b.from("clienti").update(L).eq("id",m.id);if(U)throw U;Te("success",d?"Accesso app attivato":"Cliente aggiornato")}else{const{error:L}=await b.from("clienti").insert({...E,listino_base_id:E.listino_base_id||null,giorni_consegna_fissi:E.giorni_consegna_fissi||null,giorno_consegna_fisso:E.giorno_consegna_fisso||null,user_id:d,created_by:he==null?void 0:he.id});if(L)throw L;Te("success",d?"Cliente creato con accesso app":"Cliente creato")}Y(!1),Pe(),$()}catch(d){console.error("Error saving cliente:",d);const R=d instanceof Error?d.message:"Errore nel salvataggio";f({variant:"destructive",title:R})}finally{A(!1)}},ci=async i=>{var s;if(!(!i.user_id||!confirm(`Vuoi rimuovere l'accesso app per "${i.nome}"?
17
18Questo libera lo username e l'utente non potrà più accedere.`))){A(!0);try{const{data:r}=await b.auth.getSession(),c=await fetch("https://cdfbvzberwcwlgjtmjyg.supabase.co/functions/v1/admin-delete-user",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${(s=r.session)==null?void 0:s.access_token}`},body:JSON.stringify({user_id:i.user_id})}),d=await c.json();if(!c.ok)throw new Error(d.error||"Errore nella rimozione accesso");f({title:"Accesso app rimosso"}),$()}catch(r){console.error("Error removing access:",r);const c=r instanceof Error?r.message:"Errore nella rimozione accesso";f({variant:"destructive",title:c})}finally{A(!1)}}},di=async()=>{var i;if(!(!(I!=null&&I.user_id)||!B)){if(B.length<6){f({variant:"destructive",title:"La password deve essere di almeno 6 caratteri"});return}A(!0);try{const{data:o}=await b.auth.getSession(),s=await fetch("https://cdfbvzberwcwlgjtmjyg.supabase.co/functions/v1/admin-update-password",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${(i=o.session)==null?void 0:i.access_token}`},body:JSON.stringify({user_id:I.user_id,new_password:B})}),r=await s.json();if(!s.ok)throw new Error(r.error||"Errore nel cambio password");f({title:"Password aggiornata con successo"}),J(!1),de(""),me(null)}catch(o){console.error("Error changing password:",o);const s=o instanceof Error?o.message:"Errore nel cambio password";f({variant:"destructive",title:s})}finally{A(!1)}}},mi=i=>{Ce(i),K(null),ti(i.id),n({nome:i.nome,via:i.via||"",cap:i.cap||"",citta:i.citta||"",provincia:i.provincia||"",telefono_fisso:i.telefono_fisso||i.telefono||"",cellulare:i.cellulare||"",email:i.email||"",pec:i.pec||"",partita_iva:i.partita_iva||"",codice_sdi:i.codice_sdi||"",iban:i.iban||"",banca_appoggio:i.banca_appoggio||"",username:i.username||"",password:"",listino_dedicato:i.listino_dedicato||!1,listino_base_id:i.listino_base_id||"",note:i.note||"",note_produzione:i.note_produzione||"",attivo:i.attivo??!0,regola_consegna:i.regola_consegna||"standard",giorno_consegna_fisso:i.giorno_consegna_fisso||"",giorni_consegna_fissi:i.giorni_consegna_fissi||15,trasporto_abilitato:i.trasporto_abilitato??!0,percentuale_imballo:i.percentuale_imballo??null,is_reseller:i.is_reseller??!1,logo_url:i.logo_url||"",ricarico_percentuale:i.ricarico_percentuale??100,preventivo_finale_abilitato:i.preventivo_finale_abilitato??!1}),Y(!0)},ui=async i=>{if(confirm("Sei sicuro di voler archiviare questo cliente? Potrà essere riattivato in seguito."))try{const{error:o}=await b.from("clienti").update({attivo:!1}).eq("id",i);if(o)throw o;
18f({title:"Cliente archiviato",description:"Il cliente è stato disattivato e può essere riattivato dalla lista."}),$()}catch(o){console.error("Error archiving cliente:",o),f({variant:"destructive",title:"Errore nell'archiviazione"})}},pi=async i=>{try{const{error:o}=await b.from("clienti").update({attivo:!0}).eq("id",i);if(o)throw o;f({title:"Cliente riattivato"}),$()}catch(o){console.error("Error reactivating cliente:",o),f({variant:"destructive",title:"Errore nella riattivazione"})}},hi=async i=>{var o;if(confirm("ATTENZIONE: Questa azione è irreversibile! Vuoi eliminare definitivamente questo cliente e tutti i suoi dati associati?"))try{const{error:s}=await b.from("clienti").delete().eq("id",i);if(s)throw s;f({title:"Cliente eliminato",description:"Il cliente è stato eliminato definitivamente."}),$()}catch(s){console.error("Error deleting cliente:",s),f({variant:"destructive",title:"Errore nell'eliminazione",description:(o=s==null?void 0:s.message)!=null&&o.includes("violates foreign key")?"Impossibile eliminare: il cliente ha ordini o preventivi associati.":"Si è verificato un errore."})}},Pe=()=>{Ce(null),n({...Ye,percentuale_imballo:ge}),K(null)},{clientiAttivi:Ae,clientiArchiviati:ee,clientiDiretti:xe,rivenditori:ie,clientiRivenditori:Ee,clientiPerNegozio:ve}=h.useMemo(()=>{const i=t.filter(s=>s.attivo!==!1),o={};for(const s of g)o[s.id]=i.filter(r=>r.created_by_cliente_id===s.sede_cliente_id&&!r.is_reseller);return{clientiAttivi:i,clientiArchiviati:t.filter(s=>s.attivo===!1),clientiDiretti:i.filter(s=>!s.created_by_cliente_id&&!s.is_reseller),rivenditori:i.filter(s=>s.is_reseller),clientiRivenditori:i.filter(s=>s.created_by_cliente_id&&!s.is_reseller),clientiPerNegozio:o}},[t,g]),[C,gi]=h.useState("diretti"),O=h.useMemo(()=>{let i;if(C.startsWith("negozio_")){const s=C.slice(8);i=ve[s]||[]}else switch(C){case"diretti":i=xe;break;case"rivenditori":i=ie;break;case"clienti_rivenditori":i=Ee;break;case"archiviati":i=ee;break;default:i=Ae}if(!w)return i;const o=w.toLowerCase();return i.filter(s=>{var r,c,d;return s.nome.toLowerCase().includes(o)||((r=s.email)==null?void 0:r.toLowerCase().includes(o))||((c=s.partita_iva)==null?void 0:c.includes(w))||((d=s.username)==null?void 0:d.toLowerCase().includes(o))})},[C,w,xe,ie,Ee,ve,ee,Ae]),xi=i=>{var c;let o=i.regola_consegna,s=i.giorno_consegna_fisso,r=i.giorni_consegna_fissi;if(i.created_by_cliente_id&&(!o||o==="standard")){const d=t.find(R=>R.id===i.created_by_cliente_id);d&&(o=d.regola_consegna,s=d.giorno_consegna_fisso,r=d.giorni_consegna_fissi)}switch(o){case"giorno_fisso":return`Ogni ${((c=ye.find(d=>d.value===s))==null?void 0:c.label)||s}`;case"giorni_fissi":return`${r} giorni`;default:return"15 gg lavorativi"}};return e.jsxs("div",{className:"space-y-6 pb-12",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row justify-between gap-4",children:[e.jsx("h1",{className:"text-3xl font-bold",children:"Clienti"}),e.jsxs("div",{className:"flex flex-wrap gap-2",children:[e.jsxs(_,{variant:"outline",onClick:()=>{const i=["Ragione Sociale","Email","PEC","Telefono Fisso","Cellulare","","Indirizzo","CAP","Città","Provincia","","Partita IVA","Codice Fiscale","Codice SDI","","IBAN","Banca di Appoggio","","Username","Stato","Listino Assegnato","Sconto Predefinito (%)","Imballo (%)","","Note"],o=O.map(s=>{var r;return[s.nome,s.email||"",s.pec||"",s.telefono_fisso||s.telefono||"",s.cellulare||"","",s.via||"",s.cap||"",s.citta||"",s.provincia||"","",s.partita_iva||"",s.codice_fiscale||"",s.codice_sdi||"","",s.iban||"",s.banca_appoggio||"","",s.username||"",s.attivo?"Attivo":"Archiviato",((r=u.find(c=>c.id===s.listino_base_id))==null?void 0:r.nome)||"",s.sconto_default??"",s.percentuale_imballo??"","",s.note||""]});Ti(`clienti_${new Date().toISOString().slice(0,10)}.csv`,i,o),f({title:"Export CSV completato",description:`${O.length} clienti esportati`})},children:[e.jsx($i,{className:"h-4 w-4 mr-2"}),"Export CSV"]}),e.jsxs(_,{variant:"outline",onClick:()=>{const i=Object.fromEntries(u.map(o=>[o.id,o.nome]));Gi(O,i,C,P),f({title:"PDF elenco generato",description:`${O.length} clienti`})},children:[e.jsx(Be,{className:"h-4 w-4 mr-2"}),"Stampa Elenco"]}),Q&&ie.length>0&&e.jsxs(_,{variant:"outline",onClick:()=>X("/clienti/listini-reseller"),children:[e.jsx(ae,{className:"h-4 w-4 mr-2"}),"Listini Rivenditori"]}),e.jsxs(Ie,{open:ei,onOpenChange:i=>{Y(i),i||Pe()},children:[Z&&e.jsx(Ni,{asChild:!0,children:e.jsxs(_,{children:[e.jsx(yi,{className:"h-4 w-4 mr-2"}),"Nuovo Cliente"]})}),e.jsxs(Le,{className:"max-w-2xl max-h-[90vh] overflow-y-auto",onCloseAutoFocus:i=>i.preventDefault(),children:[e.jsx(De,{children:e.jsx($e,{children:m?"Modifica Cliente":"Nuovo Cliente"})}),e.jsxs("form",{onSubmit:li,children:[e.jsxs(Me,{defaultValue:"anagrafica",className:"w-full",children:[e.jsxs(Ve,{className:"grid w-full grid-cols-4",children:[e.jsxs(T,{value:"anagrafica",className:"gap-1",children:[e.jsx(wi,{className:"h-4 w-4"}),e.jsx("span",{className:"hidden sm:inline",children:"Anagrafica"})]}),e.jsxs(T,{value:"consegna",className:"gap-1",children:[e.jsx(Oi,{className:"h-4 w-4"}),e.jsx("span",{className:"hidden sm:inline",children:"Consegna"})]}),e.jsxs(T,{value:"commerciale",className:"gap-1",children:[e.jsx(Bi,{className:"h-4 w-4"}),e.jsx("span",{className:"hidden sm:inline",children:"Commerciale"})]}),e.jsxs(T,{value:"note",className:"gap-1",children:[e.jsx(ae,{className:"h-4 w-4"}),e.jsx("span",{className:"hidden sm:inline",children:"Note"})]})]}
18),e.jsxs(se,{value:"anagrafica",className:"space-y-4 mt-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(l,{htmlFor:"nome",children:"Nome Azienda *"}),e.jsx(v,{id:"nome",value:a.nome,onChange:i=>n({...a,nome:i.target.value}),required:!0})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(l,{htmlFor:"via",children:"Via"}),e.jsx(v,{id:"via",value:a.via,onChange:i=>n({...a,via:i.target.value})})]}),e.jsxs("div",{className:"grid grid-cols-3 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(l,{htmlFor:"cap",children:"CAP"}),e.jsx(v,{id:"cap",value:a.cap,onChange:i=>n({...a,cap:i.target.value}),maxLength:5})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(l,{htmlFor:"citta",children:"Città"}),e.jsx(v,{id:"citta",value:a.citta,onChange:i=>n({...a,citta:i.target.value})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(l,{htmlFor:"provincia",children:"Provincia"}),e.jsx(v,{id:"provincia",value:a.provincia,onChange:i=>n({...a,provincia:i.target.value.toUpperCase()}),maxLength:2,placeholder:"MI"})]})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(l,{htmlFor:"telefono_fisso",children:"Telefono Fisso"}),e.jsx(v,{id:"telefono_fisso",value:a.telefono_fisso,onChange:i=>n({...a,telefono_fisso:i.target.value})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(l,{htmlFor:"cellulare",children:"Cellulare"}),e.jsx(v,{id:"cellulare",value:a.cellulare,onChange:i=>n({...a,cellulare:i.target.value})})]})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(l,{htmlFor:"email",children:"Email"}),e.jsx(v,{id:"email",type:"email",value:a.email,onChange:i=>n({...a,email:i.target.value})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(l,{htmlFor:"pec",children:"PEC"}),e.jsx(v,{id:"pec",type:"email",value:a.pec,onChange:i=>n({...a,pec:i.target.value})})]})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(l,{htmlFor:"partita_iva",children:"Partita IVA"}),e.jsx(v,{id:"partita_iva",value:a.partita_iva,onChange:i=>n({...a,partita_iva:i.target.value}),maxLength:11})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(l,{htmlFor:"codice_sdi",children:"Codice SDI"}),e.jsx(v,{id:"codice_sdi",value:a.codice_sdi,onChange:i=>n({...a,codice_sdi:i.target.value.toUpperCase()}),maxLength:7})]})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(l,{htmlFor:"iban",children:"IBAN"}),e.jsx(v,{id:"iban",value:a.iban,onChange:i=>n({...a,iban:i.target.value.toUpperCase().replace(/\s/g,"")}),maxLength:27})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(l,{htmlFor:"banca_appoggio",children:"Banca di Appoggio"}),e.jsx(v,{id:"banca_appoggio",value:a.banca_appoggio,onChange:i=>n({...a,banca_appoggio:i.target.value})})]})]}),m&&e.jsxs(M,{className:"mt-4",children:[e.jsx(V,{className:"pb-2",children:e.jsx(G,{className:"text-lg",children:"Statistiche Cliente"})}),e.jsx(q,{children:e.jsxs("div",{className:"flex gap-6",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Ci,{className:"h-5 w-5 text-primary"}),e.jsxs("div",{children:[e.jsx("div",{className:"text-2xl font-bold",children:(D==null?void 0:D.ordini)??"..."}),e.jsx("div",{className:"text-sm text-muted-foreground",children:"Ordini"})]})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Ri,{className:"h-5 w-5 text-primary"}),e.jsxs("div",{children:[e.jsx("div",{className:"text-2xl font-bold",children:(D==null?void 0:D.preventivi)??"..."}),e.jsx("div",{className:"text-sm text-muted-foreground",children:"Preventivi"})]})]})]})})]}),e.jsxs(M,{className:"mt-4",children:[e.jsxs(V,{className:"pb-2",children:[e.jsx(G,{className:"text-lg",children:"Accesso App"}),e.jsx(Ne,{children:"Configura le credenziali per permettere al cliente di accedere all'app"})]}),e.jsxs(q,{className:"space-y-4",children:[e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(l,{htmlFor:"username",children:"Nome Utente"}),e.jsx(v,{id:"username",value:a.username,onChange:i=>n({...a,username:i.target.value.replace(/\s/g,"")}),placeholder:"es: cliente123",disabled:!!(m!=null&&m.user_id)})]}),(!m||!m.user_id)&&e.jsxs("div",{className:"space-y-2",children:[e.jsx(l,{htmlFor:"password",children:"Password"}),e.jsxs("div",{className:"relative",children:[e.jsx(v,{id:"password",type:ue?"text":"password",value:a.password,onChange:i=>n({...a,password:i.target.value}),placeholder:m?"Inserisci per attivare accesso":"Inserisci password",className:"pr-10"}),e.jsx("button",{type:"button",onClick:()=>ai(!ue),className:"absolute right-3 top-1/2 -translate-y-1/2 text-muted-foreground hover:text-foreground transition-colors",tabIndex:-1,
18children:ue?e.jsx(Ue,{size:18}):e.jsx(He,{size:18})})]})]})]}),e.jsx("p",{className:"text-sm text-muted-foreground",children:m!=null&&m.user_id?"Il cliente ha già accesso. Usa l'icona chiave per cambiare la password.":"Se inserisci username e password, il cliente potrà accedere all'app."})]})]}),e.jsxs("div",{className:"flex items-center space-x-2 mt-4",children:[e.jsx(H,{id:"attivo",checked:a.attivo,onCheckedChange:i=>n({...a,attivo:i})}),e.jsx(l,{htmlFor:"attivo",children:"Cliente attivo"})]})]}),e.jsxs(se,{value:"consegna",className:"space-y-4 mt-4",children:[e.jsxs(M,{children:[e.jsxs(V,{children:[e.jsx(G,{className:"text-lg",children:"Regola Consegna"}),e.jsx(Ne,{children:"Imposta la regola di consegna per questo cliente. Di default sono 15 giorni lavorativi."})]}),e.jsxs(q,{className:"space-y-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(l,{children:"Tipo regola"}),e.jsxs(fe,{value:a.regola_consegna,onValueChange:i=>n({...a,regola_consegna:i}),children:[e.jsx(_e,{children:e.jsx(je,{})}),e.jsxs(be,{children:[e.jsx(W,{value:"standard",children:"Standard (15 giorni lavorativi)"}),e.jsx(W,{value:"giorno_fisso",children:"Giorno fisso settimanale"}),e.jsx(W,{value:"giorni_fissi",children:"Numero giorni fissi"})]})]})]}),a.regola_consegna==="giorno_fisso"&&e.jsxs("div",{className:"space-y-2",children:[e.jsx(l,{children:"Giorno di consegna"}),e.jsxs(fe,{value:a.giorno_consegna_fisso,onValueChange:i=>n({...a,giorno_consegna_fisso:i}),children:[e.jsx(_e,{children:e.jsx(je,{placeholder:"Seleziona giorno"})}),e.jsx(be,{children:ye.map(i=>e.jsx(W,{value:i.value,children:i.label},i.value))})]}),e.jsxs("p",{className:"text-sm text-muted-foreground",children:["Gli ordini ricevuti entro questo giorno saranno consegnati il ",((ke=ye.find(i=>i.value===a.giorno_consegna_fisso))==null?void 0:ke.label)||"giorno selezionato"," successivo."]})]}),a.regola_consegna==="giorni_fissi"&&e.jsxs("div",{className:"space-y-2",children:[e.jsx(l,{htmlFor:"giorni_consegna_fissi",children:"Numero giorni"}),e.jsx(v,{id:"giorni_consegna_fissi",type:"number",min:1,max:60,value:a.giorni_consegna_fissi,onChange:i=>n({...a,giorni_consegna_fissi:parseInt(i.target.value)||15})}),e.jsxs("p",{className:"text-sm text-muted-foreground",children:["Consegna prevista dopo ",a.giorni_consegna_fissi," giorni lavorativi dall'ordine."]})]})]})]}),!(m!=null&&m.created_by_cliente_id)&&e.jsxs(M,{children:[e.jsxs(V,{children:[e.jsx(G,{className:"text-lg",children:"Trasporto"}),e.jsx(Ne,{children:'Se abilitato, nel PDF cliente comparirà la dicitura "+ TRASPORTO" nei totali.'})]}),e.jsx(q,{className:"space-y-4",children:e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(H,{id:"trasporto_abilitato",checked:a.trasporto_abilitato,onCheckedChange:i=>n({...a,trasporto_abilitato:i})}),e.jsx(l,{htmlFor:"trasporto_abilitato",children:'Mostra "+ TRASPORTO" nel PDF'})]})})]})]}),e.jsx(se,{value:"commerciale",className:"space-y-4 mt-4",children:e.jsxs(M,{children:[e.jsx(V,{children:e.jsx(G,{className:"text-lg",children:"Condizioni Commerciali"})}),e.jsxs(q,{className:"space-y-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(l,{children:"Listino Base"}),e.jsxs(fe,{value:a.listino_base_id||"",onValueChange:i=>n({...a,listino_base_id:i||null}),children:[e.jsx(_e,{children:e.jsx(je,{placeholder:"Seleziona listino..."})}),e.jsx(be,{children:u.map(i=>e.jsx(W,{value:i.id,children:i.nome},i.id))})]}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Listino prezzi applicato a questo cliente."})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(H,{id:"listino_dedicato",checked:a.listino_dedicato,onCheckedChange:i=>n({...a,listino_dedicato:i}),disabled:!Se}),e.jsx(l,{htmlFor:"listino_dedicato",children:"Listino prezzi dedicato"})]}),m&&a.listino_dedicato&&Se&&e.jsxs(_,{type:"button",variant:"outline",size:"sm",onClick:()=>X(`/clienti/${m.id}/listino`),children:[e.jsx(Vi,{className:"h-4 w-4 mr-2"}),"Modifica Prezzi"]})]}),a.listino_dedicato&&e.jsx("p",{className:"text-sm text-muted-foreground",children:"Puoi personalizzare i prezzi per questo cliente rispetto al listino base."}),e.jsxs("div",{className:"space-y-3 pt-4 border-t",children:[e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(H,{id:"preventivo_finale_abilitato",checked:a.preventivo_finale_abilitato,onCheckedChange:i=>n({...a,preventivo_finale_abilitato:i})}),e.jsx(l,{htmlFor:"preventivo_finale_abilitato",children:"Preventivi per il cliente finale"})]}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Il cliente puo generare, dai suoi preventivi e ordini, un documento con la propria intestazione e i prezzi ricaricati per il proprio cliente finale."}),a.preventivo_finale_abilitato&&e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(l,{htmlFor:"ricarico_percentuale",children:"Ricarico predefinito (%)"}),e.jsx(v,{id:"ricarico_percentuale",type:"number",step:"1",value:a.ricarico_percentuale,onWheel:i=>i.target.blur(),onChange:i=>n({...a,ricarico_percentuale:Number(i.target.value)})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(l,{children:"Logo cliente (per il PDF finale)"}),e.jsxs("div",{className:"flex items-center gap-3",children:[a.logo_url&&e.jsx(Yi,{path:a.logo_url}),e.jsx(v,{type:"file",accept:"image/png,image/jpeg",onChange:async i=>{var d;const o=(d=i.target.files)==null?void 0:d[0];if(!o)return;const s=o.name.split(".").pop(),r=`${(m==null?void 0:m.id)||"nuovo"}-${Date.now()}.${s}`,{error:c}=await b.storage.from("cliente-loghi").upload(r,o,{upsert:!0});if(c){f({variant:"destructive",title:"Errore caricamento logo",description:c.message});return}n(R=>({...R,logo_url:r})),f({title:"Logo caricato"})}}),a.logo_url&&e.jsx(_,{type:"button",variant:"ghost",size:"sm",onClick:()=>n({...a,logo_url:""}),children:"Rimuovi"})]})]})]})]}),Q&&e.jsxs("div",{className:"space-y-2 pt-4 border-t",children:[e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(H,{id:"is_reseller",checked:a.is_reseller,onCheckedChange:i=>n({...a,is_reseller:i})}),e.jsx(l,{htmlFor:"is_reseller",children:"Rivenditore (sede negozio)"})]}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Abilita se questo cliente è la sede di un negozio (es. Milano, Varese, Blindotex). Potrà gestire in autonomia il proprio listino e i propri sub-clienti."})]}),e.jsxs("div",{className:"space-y-2 pt-4 border-t",children:[e.jsx(l,{htmlFor:"percentuale_imballo",children:"Percentuale Imballo (%)"}),e.jsx(v,{id:"percentuale_imballo",type:"number",min:0,max:100,step:.1,value:a.percentuale_imballo??"",placeholder:ge.toString(),onChange:i=>{const o=parseFloat(i.target.value);n({...a,percentuale_imballo:isNaN(o)?null:o})},className:"max-w-[120px]"}),e.jsxs("p",{className:"text-sm text-muted-foreground",children:["Percentuale imballo applicata agli ordini di questo cliente. Lascia vuoto per usare il default globale (",ge,"%). Modificabile in Impostazioni → Prezzi e Calcoli."]})]})]})]})}
18),e.jsxs(se,{value:"note",className:"space-y-4 mt-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(l,{htmlFor:"note",children:"Note generali"}),e.jsx(Re,{id:"note",value:a.note,onChange:i=>n({...a,note:i.target.value}),rows:4,placeholder:"Note visibili in anagrafica..."})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(l,{htmlFor:"note_produzione",children:"Note produzione"}),e.jsx(Re,{id:"note_produzione",value:a.note_produzione,onChange:i=>n({...a,note_produzione:i.target.value}),rows:4,placeholder:"Note specifiche per la produzione (saranno visibili nel PDF di produzione)..."})]})]})]}),e.jsxs("div",{className:"flex justify-end gap-2 mt-6",children:[e.jsx(_,{type:"button",variant:"outline",onClick:()=>Y(!1),children:"Annulla"}),e.jsx(_,{type:"submit",disabled:z,children:z?"Salvataggio...":m?"Aggiorna":"Crea"})]})]})]})]}),e.jsx(Ie,{open:ii,onOpenChange:J,children:e.jsxs(Le,{className:"max-w-md",children:[e.jsx(De,{children:e.jsx($e,{children:"Cambia Password"})}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("p",{className:"text-sm text-muted-foreground",children:["Imposta una nuova password per ",e.jsx("strong",{children:I==null?void 0:I.nome})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(l,{htmlFor:"newPassword",children:"Nuova Password"}),e.jsxs("div",{className:"relative",children:[e.jsx(v,{id:"newPassword",type:pe?"text":"password",value:B,onChange:i=>de(i.target.value),placeholder:"Inserisci la nuova password",className:"pr-10"}),e.jsx("button",{type:"button",onClick:()=>si(!pe),className:"absolute right-3 top-1/2 -translate-y-1/2 text-muted-foreground hover:text-foreground transition-colors",tabIndex:-1,children:pe?e.jsx(Ue,{size:18}):e.jsx(He,{size:18})})]})]}),e.jsxs("div",{className:"flex justify-end gap-2",children:[e.jsx(_,{variant:"outline",onClick:()=>{J(!1),de(""),me(null)},children:"Annulla"}),e.jsx(_,{onClick:di,disabled:z||!B,children:z?"Salvataggio...":"Salva Password"})]})]})]})})]})]}),e.jsxs(M,{children:[e.jsx(V,{children:e.jsxs("div",{className:"space-y-4",children:[e.jsx(Me,{value:C,onValueChange:gi,children:e.jsxs(Ve,{children:[e.jsxs(T,{value:"diretti",className:"gap-2",children:["Clienti Diretti",e.jsx(S,{variant:"secondary",className:"ml-1",children:xe.length})]}),e.jsxs(T,{value:"rivenditori",className:"gap-2",children:["Negozi",e.jsx(S,{variant:"secondary",className:"ml-1",children:ie.length})]}),g.map(i=>e.jsxs(T,{value:`negozio_${i.id}`,className:"gap-2",children:["Clienti ",i.nome,e.jsx(S,{variant:"secondary",className:"ml-1",children:(ve[i.id]||[]).length})]},i.id)),ee.length>0&&e.jsxs(T,{value:"archiviati",className:"gap-2",children:[e.jsx(We,{className:"h-4 w-4"}),"Archiviati",e.jsx(S,{variant:"destructive",className:"ml-1",children:ee.length})]})]})}),e.jsxs("div",{className:"relative max-w-sm w-full",children:[e.jsx(zi,{className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground pointer-events-none"}),e.jsx(v,{placeholder:"Cerca per nome, email, P.IVA, CF...",value:w,onChange:i=>Ze(i.target.value),className:"pl-9"})]})]})}),e.jsx(q,{children:le?e.jsx(Si,{rows:6}):O.length===0?e.jsxs("div",{className:"flex flex-col items-center justify-center py-12 text-center animate-fade-in",children:[e.jsx("div",{className:"h-14 w-14 rounded-full bg-muted/60 flex items-center justify-center mb-3 ring-1 ring-border",children:e.jsx(Pi,{className:"h-7 w-7 text-muted-foreground"})}),e.jsx("p",{className:"text-sm font-medium text-foreground",children:"Nessun cliente trovato"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"Prova a modificare i filtri o la ricerca."})]}):e.jsx("div",{className:"overflow-x-auto",children:e.jsxs(Ai,{children:[e.jsx(Ei,{children:e.jsxs(Oe,{children:[e.jsx(k,{children:"Cliente"}),(C==="clienti_milano"||C==="clienti_varese")&&e.jsx(k,{children:"Negozio"}),e.jsx(k,{children:"Contatti"}),e.jsx(k,{children:"Città"}),e.jsx(k,{children:"Consegna"}),e.jsx(k,{children:"Accesso"}),e.jsx(k,{children:"Stato"}),e.jsx(k,{className:"w-40 min-w-[10rem]",children:"Azioni"})]})}),e.jsx(ki,{children:O.map(i=>{const o=i.reseller;return e.jsxs(Oe,{children:[e.jsx(F,{children:e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx(Fi,{logoPath:i.logo_url,nome:i.nome,ultimoAccesso:i.ultimo_accesso}),e.jsxs("div",{className:"min-w-0",children:[e.jsxs("div",{className:"font-medium",children:[i.nome,i.is_reseller&&e.jsx(S,{variant:"outline",className:"ml-2 bg-blue-100 text-blue-700 border-blue-300",children:"Negozio"})]}),i.partita_iva&&e.jsxs("div",{className:"text-sm text-muted-foreground",children:["P.IVA: ",i.partita_iva]})]})]})}),(C==="clienti_milano"||C==="clienti_varese")&&e.jsx(F,{children:e.jsx(S,{variant:"outline",className:"bg-primary/10 text-primary border-primary/30",children:(o==null?void 0:o.nome)||"Negozio"})}),e.jsxs(F,{children:[e.jsx("div",{className:"text-sm",children:i.cellulare||i.telefono_fisso||i.telefono}),e.jsx("div",{className:"text-sm text-muted-foreground",children:i.email})]}),e.jsxs(F,{children:[i.citta,i.provincia&&` (${i.provincia})`]}),e.jsx(F,{children:e.jsx(S,{variant:"outline",children:xi(i)})}),e.jsx(F,{children:i.user_id?e.jsxs("div",{className:"flex flex-col gap-1",children:[e.jsx(S,{variant:"default",className:"w-fit",children:"Ha accesso"}),i.ultimo_accesso?e.jsx("span",{className:"text-xs tabular-nums text-foreground font-medium whitespace-nowrap",children:new Date(i.ultimo_accesso).toLocaleStr
18ing("it-IT",{day:"2-digit",month:"2-digit",year:"2-digit",hour:"2-digit",minute:"2-digit"})}):e.jsx("span",{className:"text-xs text-muted-foreground italic",children:"mai entrato"})]}):e.jsx(S,{variant:"secondary",children:"No accesso"})}),e.jsx(F,{children:e.jsx(S,{variant:i.attivo!==!1?"default":"secondary",children:i.attivo!==!1?"Attivo":"Inattivo"})}),e.jsx(F,{children:e.jsxs("div",{className:"flex flex-wrap items-center gap-1",children:[Z&&e.jsx(_,{variant:"ghost",size:"icon",onClick:()=>mi(i),title:"Modifica",children:e.jsx(Mi,{className:"h-4 w-4"})}),e.jsx(_,{variant:"ghost",size:"icon",onClick:()=>{var r;const s=(r=u.find(c=>c.id===i.listino_base_id))==null?void 0:r.nome;Wi(i,s,!!P[i.id])},title:"Stampa anagrafica PDF",children:e.jsx(Be,{className:"h-4 w-4"})}),!i.is_reseller&&e.jsx(_,{variant:"ghost",size:"icon",onClick:()=>X(`/clienti/${i.id}/listino`),title:"Visualizza listino",children:e.jsx(ae,{className:"h-4 w-4"})}),i.is_reseller&&e.jsx(_,{variant:"ghost",size:"icon",onClick:()=>X(`/clienti/listini-reseller?clienteId=${i.id}`),title:"Visualizza listino negozio",children:e.jsx(ae,{className:"h-4 w-4"})}),Z&&i.user_id&&e.jsxs(e.Fragment,{children:[e.jsx(_,{variant:"ghost",size:"icon",onClick:()=>ci(i),title:"Rimuovi accesso app",children:e.jsx(We,{className:"h-4 w-4"})}),e.jsx(_,{variant:"ghost",size:"icon",onClick:()=>{me(i),J(!0)},title:"Cambia password",children:e.jsx(qi,{className:"h-4 w-4"})})]}),Z&&(C==="archiviati"?e.jsxs("div",{className:"flex gap-1",children:[e.jsx(_,{variant:"ghost",size:"sm",onClick:()=>pi(i.id),className:"text-emerald-600 hover:text-emerald-700",title:"Riattiva cliente",children:"Riattiva"}),e.jsx(_,{variant:"ghost",size:"icon",onClick:()=>hi(i.id),className:"text-destructive hover:text-destructive",title:"Elimina definitivamente",children:e.jsx(Ge,{className:"h-4 w-4"})})]}):e.jsx(_,{variant:"ghost",size:"icon",onClick:()=>ui(i.id),title:"Archivia",children:e.jsx(Ge,{className:"h-4 w-4"})}))]})})]},i.id)})})]})})})]})]})}export{Sa as default};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.