PageSourceSearch

https://facturino.com/assets/QuotesListView-B4pfMOmu.js

js facturino.com collected 2026-10-02 00:17:18 UTC 11,487 bytes, 1 lines download raw bytes

1import{h as e,w as t,z as a,V as s,n as l,u as i,a8 as o,X as n,F as u,W as r,aa as c,a4 as d,a9 as m,b as p,f as v,O as f,U as y,Y as h,q as _,ag as g,af as b}from"./vendor-oAkPuYrc.js";import{useQuoteStore as k}from"./useQuoteStore-CF9N1zjB.js";import{i as C,H as w,y as D,e as T,J as j,K as x,L,M as V,t as U}from"./index-BZekDLOH.js";import{u as z}from"./useTenantRole-FrZWpTTe.js";import{_ as q}from"./DataTable.vue_vue_type_script_setup_true_lang-B1PEpg8z.js";import{_ as M}from"./StatusChip.vue_vue_type_script_setup_true_lang-BRg2nJF6.js";import{_ as S}from"./AmountDisplay.vue_vue_type_script_setup_true_lang-5gYOrJyx.js";import{_ as A}from"./EmptyState.vue_vue_type_script_setup_true_lang-BB4TAozD.js";import{_ as E}from"./ConfirmDialog.vue_vue_type_script_setup_true_lang-CA1DGR69.js";import{_ as N}from"./ListFilterBar.vue_vue_type_script_setup_true_lang-B9ejVwgj.js";import{_ as R}from"./MobileCardList.vue_vue_type_script_setup_true_lang-BbpaV1Oc.js";import{_ as B}from"./SwipeableRow.vue_vue_type_script_setup_true_lang-0e6lEKWq.js";import{u as F,_ as K}from"./usePullToRefresh-BojQPjc_.js";import{ac as P}from"./vuetify-1DwLL1X_.js";import"./firebase-D-ZPylk-.js";import"./livemode-BCl9euiE.js";import"./VTable-DSXoB7U0.js";import"./invoiceStatusLabels-WSnBl11V.js";import"./decimal-BX0koNkP.js";const H={class:"fc-page fc-page--list animate-in"},J={class:"fc-page-head"},Q={class:"fc-page-head-text"},G={class:"fc-page-head-title"},I={key:0,class:"fc-page-head-count"},O={key:0,class:"fc-page-head-actions"},W={key:0,class:"fc-list-card"},X={class:"font-weight-medium"},Y={class:"text-truncate d-inline-block",style:{"max-width":"200px","min-width":"0"}},Z={class:"tabular-nums"},$={class:"tabular-nums"},ee={key:1,class:"text-medium-emphasis"},te=["onClick","onKeydown"],ae={class:"fc-list-item-icon"},se={class:"fc-list-item-body"},le={class:"fc-list-item-title"},ie={class:"fc-list-item-subtitle"},oe={class:"fc-list-item-meta"},ne={class:"fc-list-item-trail"},ue={class:"fc-list-item-amount"},re={key:1},ce=["onClick"],de=["onClick"],me=e({__name:"QuotesListView",setup(e){const me=f(),pe=k(),ve=C(),{handleError:fe}=T(),{can:ye}=z(),{smAndDown:he,mdAndDown:_e}=P();const ge=p(""),be=p(""),ke=p(""),Ce=p(""),we=p(!0),De=p(!1),Te=p(""),je=p(""),xe=p(!1),Le=p(null),Ve=[{title:"Tous les statuts",value:""},{title:"Brouillon",value:"draft"},{title:"Envoyé",value:"sent"},{title:"Consulté",value:"viewed"},{title:"Accepté",value:"accepted"},{title:"Refusé",value:"refused"},{title:"Expiré",value:"expired"},{title:"Converti",value:"converted"}],Ue=v(()=>{const e=[{title:"Numéro",key:"number",sortable:!1},{title:"Client",key:"customer.snapshot.name",sortable:!1}];return he.value||e.push({title:"Date",key:"dates.issued",sortable:!1},{title:"Validité",key:"dates.validUntil",sortable:!1}),e.push({title:"Montant TTC",key:"totals.totalTTC",sortable:!1,align:"end"},{title:"Statut",key:"status",sortable:!1},{title:"",key:"actions",sortable:!1,width:48}),e}),ze=v(()=>{let e=pe.items;if(be.value.trim()){const t=be.value.trim().toLowerCase();e=e.filter(e=>{const a=e.customer?.snapshot?.name?.toLowerCase()??"",s=e.number?.toLowerCase()??"";return a.includes(t)||s.includes(t)})}return ke.value&&(e=e.filter(e=>e.dates?.issued>=ke.value)),Ce.value&&(e=e.filter(e=>e.dates?.issued<=Ce.value)),e}),qe=v(()=>!(pe.loading||0!==pe.items.length||ge.value||be.value||ke.value||Ce.value));function Me(){ge.value="",be.value="",ke.value="",Ce.value=""}async function Se(e=!0){try{e&&pe.resetList(),await pe.fetchList(ge.value?{status:ge.value}:void 0)}catch(t){fe(t)}finally{we.value=!1}}async function Ae(){await Se(!1)}function Ee(e){const t=e.id;me.push({name:"quote-detail",params:{id:t}})}function Ne(e){if(!e)return"—";return new Date(e).toLocaleDateString("fr-FR",{day:"2-digit",month:"2-digit",year:"numeric"})}function Re(e){if(!e)return!1;const t=new Date,a=new Date(e),s=Math.ceil((a.getTime()-t.getTime())/864e5);return s>=0&&s<=7}const Be=p(!1);async function Fe(e){if(!Be.value){Be.value=!0;try{const t=await pe.duplicate(e);ve.showNotification({message:"Devis dupliqué."}),me.push({name:"quote-detail",params:{id:t}})}catch(t){fe(t)}finally{Be.value=!1}}}function Ke(e){Te.value="Supprimer le devis",je.value="Êtes-vous sûr de vouloir supprimer ce devis ? Cette action est irréversible.",Le.value=async()=>
1{await pe.softDelete(e),ve.showNotification({message:"Devis supprimé."}),await Se()},De.value=!0}async function Pe(){if(Le.value){xe.value=!0;try{await Le.value(),De.value=!1}catch(e){fe(e)}finally{xe.value=!1,Le.value=null}}}function He(e){return"draft"===e}function Je(e){return"accepted"===e}function Qe(e){return"draft"===e}t(ge,()=>Se());const{pullDistance:Ge,pullProgress:Ie,isRefreshing:Oe,registerScrollContainer:We,threshold:Xe}=F({onRefresh:()=>Se()});return a(()=>{Se(),We(document.scrollingElement)}),(e,t)=>(y(),s("div",H,[l(K,{"pull-distance":i(Ge),"pull-progress":i(Ie),"is-refreshing":i(Oe),threshold:i(Xe)},null,8,["pull-distance","pull-progress","is-refreshing","threshold"]),we.value?(y(),o(w,{key:0,indeterminate:"",color:"primary",height:2,class:"fc-page-progress"})):n("",!0),we.value?n("",!0):(y(),s(u,{key:1},[r("header",J,[r("div",Q,[t[7]||(t[7]=r("p",{class:"fc-page-head-eyebrow"},"Facturation",-1)),r("h1",G,[t[6]||(t[6]=c(" Devis ",-1)),qe.value?n("",!0):(y(),s("span",I,d(ze.value.length)+d(i(pe).hasMore?"+":""),1))]),t[8]||(t[8]=r("p",{class:"fc-page-head-subtitle"}," Gérez vos devis commerciaux et convertissez-les en factures. ",-1))]),qe.value?n("",!0):(y(),s("div",O,[i(ye)("editor")?(y(),o(D,{key:0,color:"primary",variant:"flat","prepend-icon":"mdi-plus",rounded:"lg",class:"text-none",to:{name:"quote-create"}},{default:m(()=>[...t[9]||(t[9]=[c(" Nouveau devis ",-1)])]),_:1})):n("",!0)]))]),qe.value?(y(),o(A,{key:0,title:"Aucun devis",description:"Créez votre premier devis pour proposer une offre à vos clients.",icon:"mdi-file-document-edit-outline","action-label":i(ye)("editor")?"Créer un devis":void 0,"action-to":"/quotes/new"},null,8,["action-label"])):(y(),s(u,{key:1},[l(N,{sticky:"",search:be.value,status:ge.value,"status-options":Ve.filter(e=>""!==e.value),"search-placeholder":"Nom client, numéro de devis...","onUpdate:search":t[2]||(t[2]=e=>be.value=e),"onUpdate:status":t[3]||(t[3]=e=>ge.value=e),onClear:Me},{default:m(()=>[l(j,{modelValue:ke.value,"onUpdate:modelValue":t[0]||(t[0]=e=>ke.value=e),label:"Date début","aria-label":"Date début",type:"date",density:"comfortable",variant:"outlined","hide-details":"",clearable:"",rounded:"lg",class:h(["fc-list-toolbar-date",{"fc-list-toolbar-date--empty":!ke.value}])},null,8,["modelValue","class"]),l(j,{modelValue:Ce.value,"onUpdate:modelValue":t[1]||(t[1]=e=>Ce.value=e),label:"Date fin","aria-label":"Date fin",type:"date",density:"comfortable",variant:"outlined","hide-details":"",clearable:"",rounded:"lg",class:h(["fc-list-toolbar-date",{"fc-list-toolbar-date--empty":!Ce.value}])},null,8,["modelValue","class"])]),_:1},8,["search","status","status-options"]),i(_e)?(y(),o(R,{key:1,items:ze.value,loading:i(pe).loading,"first-load":i(pe).loading&&0===ze.value.length,"has-more":i(pe).hasMore,onLoadMore:Ae},{empty:m(()=>[i(pe).loading?n("",!0):(y(),o(A,{key:0,variant:"no-results",title:"Aucun résultat","action-label":"Effacer les filtres","icon-color":"info",onAction:Me}))]),item:m(({item:e})=>[l(B,{"reveal-width":180},{actions:m(({close:a})=>[r("button",{type:"button",class:"fc-swipe-action fc-swipe-action--info",onClick:t=>{a(),Fe(e.id)}},[l(U,{size:"20"},{default:m(()=>[...t[11]||(t[11]=[c("mdi-content-copy",-1)])]),_:1}),t[12]||(t[12]=r("span",null,"Dupliquer",-1))],8,ce),Qe(e.status)?(y(),s("button",{key:0,type:"button",class:"fc-swipe-action fc-swipe-action--danger",onClick:t=>{a(),Ke(e.id)}},[l(U,{size:"20"},{default:m(()=>[...t[13]||(t[13]=[c("mdi-delete-outline",-1)])]),_:1}),t[14]||(t[14]=r("span",null,"Supprimer",-1))],8,de)):n("",!0)]),default:m(()=>[r("div",{class:"fc-list-item",role:"button",tabindex:"0",onClick:t=>Ee(e),onKeydown:[b(t=>Ee(e),["enter"]),b(g(t=>Ee(e),["prevent"]),["space"])]},[r("span",ae,[l(U,{size:"18"},{default:m(()=>[...t[10]||(t[10]=[c("mdi-file-document-edit-outline",-1)])]),_:1})]),r("div",se,[r("span",le,d(e.number??"Brouillon"),1),r("span",ie,d(e.customer?.snapshot?.name??"—"),1),r("span",oe,[c(d(Ne(e.dates?.issued))+" ",1),e.dates?.validUntil?(y(),s(u,{key:0},[c(" · Val. "+d(Ne(e.dates.validUntil)),1)],64)):n("",!0)])]),r("div",ne,[r("span",ue,[e.totals?.totalTTC?(y(),o(S,{key:0,amount:e.totals.totalTTC},null,8,["amount"])):(y(),s("span",re,"—"))]),l(M,{status:e.status,size:"sm"},null,8,["status"])])],40,te)]),_:2},1024)]),_:1},8,["items","loading","first-load","has-more"])):(y(),s("div",W,[l(q,{items:ze.value,headers:Ue.value,loading:i(pe).loading,"has-more":i(pe).hasMore,onLoadMore:Ae,"onClick:row":Ee},{"item.number":m(({item:e})=>{return[r("span",X,d((t=e.number,t?/\{[A-Z]+(?::\d+)?\}/.test(t)?"Brouillon":t:"Brouillon")),1)];var t}),"item.customer.snapshot.name":m(({item:e})=>
1[r("span",Y,d(e.customer?.snapshot?e.customer.snapshot.name:"—"),1)]),"item.dates.issued":m(({item:e})=>[r("span",Z,d(Ne(e.dates?.issued)),1)]),"item.dates.validUntil":m(({item:e})=>[r("span",{class:h({"text-warning":Re(e.dates?.validUntil)})},[r("span",$,d(Ne(e.dates?.validUntil)),1),Re(e.dates?.validUntil)?(y(),o(U,{key:0,icon:"mdi-clock-alert-outline",size:"x-small",color:"warning",class:"ml-1"})):n("",!0)],2)]),"item.totals.totalTTC":m(({item:e})=>[e.totals?.totalTTC?(y(),o(S,{key:0,amount:e.totals.totalTTC,class:"tabular-nums"},null,8,["amount"])):(y(),s("span",ee,"—"))]),"item.status":m(({item:e})=>[l(M,{status:e.status,size:"small"},null,8,["status"])]),"item.actions":m(({item:e})=>[l(x,{location:"bottom end"},{activator:m(({props:e})=>[l(D,_(e,{icon:"mdi-dots-vertical",variant:"text",size:"small",onClick:t[4]||(t[4]=g(()=>{},["stop"]))}),null,16)]),default:m(()=>[l(L,{density:"compact"},{default:m(()=>{return[l(V,{"prepend-icon":"mdi-eye-outline",title:"Voir",onClick:t=>Ee(e)},null,8,["onClick"]),(t=e.status,"draft"===t?(y(),o(V,{key:0,"prepend-icon":"mdi-pencil-outline",title:"Modifier",onClick:t=>i(me).push({name:"quote-edit",params:{id:e.id}})},null,8,["onClick"])):n("",!0)),He(e.status)?(y(),o(V,{key:1,"prepend-icon":"mdi-send",title:"Envoyer",onClick:t=>{return a=e.id,void me.push({name:"quote-detail",params:{id:a},query:{action:"send"}});var a}},null,8,["onClick"])):n("",!0),Je(e.status)?(y(),o(V,{key:2,"prepend-icon":"mdi-file-replace-outline",title:"Convertir en facture",onClick:t=>{return a=e.id,Te.value="Convertir en facture",je.value="Une facture brouillon sera créée à partir de ce devis. Le devis passera au statut « Converti ».",Le.value=async()=>{const e=await pe.convert(a);ve.showNotification({message:"Devis converti en facture."}),me.push({name:"invoice-detail",params:{id:e}})},void(De.value=!0);var a}},null,8,["onClick"])):n("",!0),l(V,{"prepend-icon":"mdi-content-copy",title:"Dupliquer",onClick:t=>Fe(e.id)},null,8,["onClick"]),Qe(e.status)?(y(),o(V,{key:3,"prepend-icon":"mdi-delete-outline",title:"Supprimer",class:"text-error",onClick:t=>Ke(e.id)},null,8,["onClick"])):n("",!0)];var t}),_:2},1024)]),_:2},1024)]),_:1},8,["items","headers","loading","has-more"])]))],64))],64)),l(E,{modelValue:De.value,"onUpdate:modelValue":t[5]||(t[5]=e=>De.value=e),title:Te.value,message:je.value,loading:xe.value,onConfirm:Pe},null,8,["modelValue","title","message","loading"])]))}});export{me 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.