PageSourceSearch

https://dionisio-crm.web.app/assets/mesas-reservas.2c5f1dd8.js

js dionisio-crm.web.app collected 2026-10-03 12:22:53 UTC 14,594 bytes, 1 lines download raw bytes

1import{Q as Fe}from"./QPage.986ee005.js";import{a2 as Te,D as h,a3 as l,ah as y,ai as pe,b6 as ze,a5 as p,a6 as x,ad as C,aI as N,al as n,cr as je,a4 as d,aJ as W,b8 as Oe,aa as L,aY as Ue,iT as He,dj as Ae,a8 as f,fx as De,af as xe,dJ as qe,bl as Qe,cv as We,a9 as Le,N as Ge,w as Ye,aG as Je,bi as Ke,ag as Xe,B as m,G as me,ab as Ze,ac as ea,i0 as aa,cN as oa,bO as Ve,de as ta,aH as na,e0 as Q,fI as ve}from"./index.ceb99e3d.js";import{u as sa}from"./useStandardLayout.492d27e0.js";import{u as Ne}from"./tabs.store.805d6724.js";import{T as la}from"./tables-map.1bc2e009.js";import{B as Re}from"./base-banner.aa6a7cd1.js";import{R as ia,_ as ra}from"./reservation-table.7fd61ac7.js";import{u as ua,a as ca,R as da,S as ma,C as va,b as pa}from"./status-change-confirm.2ec1544d.js";import{R as ga}from"./reservation-history-dialog.44ebf654.js";import{W as fa}from"./wpp-message-dialog.a603f506.js";import{C as ya}from"./cancellation-reason-dialog.bb4981f5.js";import{u as ba}from"./useAccessPolicy.e06b9fe3.js";import{b as Me}from"./entity.82c62d86.js";import"./money.1c7f9fea.js";import"./orders-host.a91e6fbb.js";import"./useDeviceRegister.be32b6d7.js";import"./errors.5143e9e0.js";import"./pos.service.3e865158.js";import"./pos-card.31ab7e05.js";import"./cpf-cnpj-validator.es.6b6327eb.js";import"./dining-table-options.dc47a48e.js";import"./links.0700aa0b.js";import"./pt-BR.c39f4a38.js";import"./base-phone-input.4189f145.js";import"./QSkeleton.7f27ea8d.js";import"./base-options-group.b2fba365.js";import"./base-toggle.c4806f49.js";import"./base-chip-group.c6ce230a.js";import"./entity.04de9d55.js";import"./QMarkupTable.41686e9d.js";import"./attribution-icon.90ded75f.js";import"./entity.a0052fb1.js";import"./entity.d11fb40f.js";import"./useConfirm.2ced89e7.js";import"./QExpansionItem.17214745.js";import"./QSlideTransition.292d7d37.js";import"./QTimeline.1287983f.js";import"./meta-pricing.0c0f59d5.js";import"./clients.696f051d.js";import"./template-preview-bubble.537954db.js";import"./template-variable-catalog.4b4dfdc6.js";import"./QBanner.2cde75fb.js";import"./resolveWhen.258add24.js";const _a={class:"dialog-header"},ha={class:"dialog-title"},Ca={class:"dialog-subtitle"},ka={class:"dialog-content"},Sa={key:0,class:"table-occupancy-dialog__reservations","data-test":"occupancy-reservations"},Ea={class:"table-occupancy-dialog__reservations-label"},$a={class:"table-occupancy-dialog__reservation-body"},wa={class:"table-occupancy-dialog__reservation-value"},Da={key:0,class:"table-occupancy-dialog__reservation-label"},xa={key:1,class:"table-occupancy-dialog__reservation-note"},Va={key:0,class:"table-occupancy-dialog__reservation-tag"},Ra={key:1,class:"table-occupancy-dialog__reservation-tag"},Ma={class:"table-occupancy-dialog__explainer"},Ta={class:"dialog-footer"},Oa=Te({__name:"table-occupancy-dialog",props:{modelValue:{type:Boolean},table:{}},emits:["update:modelValue","changed"],setup(G,{emit:ee}){const b=G,B=ee,k=Ne(),$=h({get:()=>b.modelValue,set:a=>B("update:modelValue",a)}),V=h(()=>{var a,s;return(s=(a=b.table)==null?void 0:a.openTabs)!=null?s:[]}),ae=h(()=>V.value.length>0),g=h(()=>{var a,s;return(s=(a=b.table)==null?void 0:a.reservation)!=null?s:null}),D=h(()=>{var a,s;return(s=(a=b.table)==null?void 0:a.reservations)!=null?s:[]}),I=new Intl.DateTimeFormat("pt-BR",{day:"2-digit",month:"2-digit"}),P=new Intl.DateTimeFormat("pt-BR",{hour:"2-digit",minute:"2-digit"});function oe(a){const s=new Date;return a.getDate()===s.getDate()&&a.getMonth()===s.getMonth()&&a.getFullYear()===s.getFullYear()}const R=h(()=>D.value.map(a=>{var K,j;const s=new Date(a.startsAt),i=a.endsAt?new Date(a.endsAt):null,O=i?`${P.format(s)} \u2013 ${P.format(i)}`:P.format(s),J=a.partySize>0?`${a.partySize} ${a.partySize===1?"pessoa":"pessoas"}`:null;return{id:a.id,when:oe(s)?O:`${I.format(s)} \xB7 ${O}`,guestName:a.guestName,people:J,note:(K=a.description)!=null?K:null,seated:a.status==="SEATED",painting:a.id===((j=g.value)==null?void 0:j.id)}})),M=h(()=>{var a;return((a=b.table)==null?void 0:a.manuallyOccupied)===!0}),S=h(()=>{var a;return((a=b.table)==null?void 0:a.occupancy)==="OCUPADA"?"Ocupada":"Livre"}),Y=h(()=>{var s;const a=(s=b.table)==null?void 0:s.capacity;return a==null?null:`${a} ${a===1?"lugar":"lugares"}`}),F=h(()=>Y.value?`${S.value} \xB7 ${Y.value}
1`:S.value);async function T(){const a=b.table;!a||k.saving||!await k.occupyTable(a.id)||(B("changed"),$.value=!1)}async function z(){const a=b.table;!a||k.saving||!await k.releaseTable(a.id)||(B("changed"),$.value=!1)}return(a,s)=>(l(),y(We,{modelValue:$.value,"onUpdate:modelValue":s[2]||(s[2]=i=>$.value=i),class:"table-occupancy-dialog"},{default:pe(()=>[G.table?(l(),y(ze,{key:0,class:"table-occupancy-dialog__card"},{default:pe(()=>[p("div",_a,[p("div",null,[p("div",ha," Mesa "+x(G.table.name),1),p("div",Ca,x(F.value),1)]),C(N,{icon:n(je),flat:"",rounded:"",dense:"",color:"grey-7",size:"sm",tooltip:"Fechar",onClick:s[0]||(s[0]=i=>$.value=!1)},null,8,["icon"])]),p("div",ka,[R.value.length?(l(),d("div",Sa,[p("div",Ea,x(R.value.length===1?"Reserva nesta mesa":`Reservas nesta mesa (${R.value.length})`),1),(l(!0),d(W,null,Oe(R.value,i=>(l(),d("div",{key:i.id,class:L(["table-occupancy-dialog__reservation",{"table-occupancy-dialog__reservation--seated":i.seated,"table-occupancy-dialog__reservation--painting":i.painting}]),"data-test":"occupancy-reservation"},[C(Ue,{name:i.seated?n(He):n(Ae),size:"18px","aria-hidden":"true"},null,8,["name"]),p("div",$a,[p("div",wa,x(i.when),1),i.guestName||i.people?(l(),d("div",Da,x([i.guestName,i.people].filter(Boolean).join(" \xB7 ")),1)):f("",!0),i.note?(l(),d("div",xa,x(i.note),1)):f("",!0)]),i.seated?(l(),d("span",Va,"Sentada")):i.painting?(l(),d("span",Ra,"Reservada")):f("",!0)],2))),128))])):f("",!0),ae.value?(l(),y(Re,{key:1,color:"info",icon:n(De),message:V.value.length===1?`Esta mesa est\xE1 ocupada pela comanda #${V.value[0].code}. Feche a comanda no PDV para liber\xE1-la.`:`Esta mesa est\xE1 ocupada por ${V.value.length} comandas. Feche-as no PDV para liber\xE1-la.`,"data-test":"occupancy-held-by-comanda"},null,8,["icon","message"])):f("",!0),p("p",Ma,[M.value?(l(),d(W,{key:0},[xe(" A mesa foi marcada como ocupada manualmente. Ela s\xF3 volta a ficar livre quando algu\xE9m a liberar aqui. ")],64)):(l(),d(W,{key:1},[xe(" Marque a mesa como ocupada quando sentar um grupo, com ou sem comanda. A marca\xE7\xE3o permanece at\xE9 ser removida. ")],64))]),n(k).lastError?(l(),y(Re,{key:2,color:"negative",icon:n(De),message:n(k).lastError.message},null,8,["icon","message"])):f("",!0)]),p("div",Ta,[C(N,{label:"Voltar",flat:"",color:"grey-7",onClick:s[1]||(s[1]=i=>$.value=!1)}),M.value?(l(),y(N,{key:0,icon:n(qe),label:"Liberar mesa",color:"accent",outline:"",loading:n(k).saving,"loading-label":"Liberando\u2026","data-test":"occupancy-release",onClick:z},null,8,["icon","loading"])):(l(),y(N,{key:1,icon:n(Qe),label:"Marcar como ocupada",color:"accent",loading:n(k).saving,"loading-label":"Salvando\u2026","data-test":"occupancy-occupy",onClick:T},null,8,["icon","loading"]))])]),_:1})):f("",!0)]),_:1},8,["modelValue"]))}});var Aa=Le(Oa,[["__scopeId","data-v-b76b5e30"]]);const La={key:0,class:"mesas-reservas-board"},Na={class:"mesas-reservas-board__head"},Ba={key:0,class:"mesas-reservas-board__count"},Ia=3*60*60*1e3,Pa=Te({__name:"mesas-reservas",setup(G){const ee=Ge(),{pageClasses:b,headerClasses:B,titleClasses:k,actionsClasses:$,cardGridClasses:V,isMobile:ae}=sa(),g=Ne(),D=Ye(),I=Je(),P=Ke(),{confirmStatusChange:oe}=ua(),R=Xe(),M=ba(),S=M.locked("/home/reservations/tables"),Y=M.locked("/home/pos/tables-config"),F=M.locked("/home/reservations"),T=m(null),z=m(!1),a=m([]),s=m(!1),i=m([]),O=m([]),J=m(!1),K=h(()=>g.sections),{contexto:j,agora:ge,copiarLink:fe,estornarPagamento:Be,paraCard:ye}=ca({areas:i,tables:O,salaoSections:K});function _(t,e){const r=a.value.find(c=>c.id===t.id);if(!r){console.error("[Mesas do sal\xE3o] linha da tabela sem reserva correspondente",t.id);return}e(r)}const be=m(null),te=m(!1),_e=m(null),ne=m(!1),A=m(null),se=m(!1),le=m(null),ie=m(!1);async function re(){var e,r;const t=(e=D.currentStore)==null?void 0:e.id;if(!(!t||S.value||F.value)){s.value=!0;try{const c=new Date;c.setHours(23,59,59,999);const v=await Q.get(`/v1/reservation/reservations/store/${t}`,{params:{status:[Me.CONFIRMED,Me.SEATED],fromTimestamp:Date.now()-Ia,toTimestamp:c.getTime()}});a.value=(r=v.data.reservations)!=null?r:[]}catch(c){console.error(c),I(ve(c,"Erro ao carregar as reservas de hoje"))}finally{s.value=!1}}}async function he(){var e;const t=(e=D.currentStore)==null?void 0:e.id;if(!(!t||S.value||F.value))try{const[r,c]=await Promise.all([Q.get(`/v1/tableArea/store/${t}`),Q.get(`/v1/table/store/${t}`)]);i.value=r.data,O.value=c.data,J.value=!0}catch(r){console.error(r)}}async function w(){S.value||await Promise.all([g.loadMap(),re()])}async function E(t,e){var r;!await oe(e,(r=t.client)==null?void 0:r.name)||await Ie(t.id,pa(e))}async function Ie(t,e){var c;const r=(c=D.currentStore)==null?void 0:c.id;if(!!r)try{await Q.patch(`/v1/reservation/stores/${r}/reservations/${t}/status`,{status:e}),await w()}catch(v){console.error(v),I(ve(v,"Erro ao atualizar o status da reserva"))}}function ue(t){be.value=t,te.value=!0}function X(t){_e.value=t,ne.value=!0}function Ce(t){A.value=t,se.value=!0}function ke(t){le.value=t,ie.value=!0}async function Se(t){await Be(t)&&await w()}async function ce(t){var c;const e=(c=D.currentStore)==null?void 0:c.id;if(!e)return;const r=await new Promise(v=>{var U,H,q;R.dialog({component:ya,componentProps:{entity:"reservation",actor:"business",targetLabel:`Reserva de ${(q=(H=(U=t.client)==null?void 0:U.name)!=null?H:t.guestName)!=null?q:"convidado"}`,note:va}}).onOk(Z=>v(Z)).onCancel(()=>v(null)).onDismiss(()=>v(null))});if(!!r)try{await Q.patch(`/v1/reservation/stores/${e}/reservations/${t.id}/cancel-without-policies`,{cancellation:r}),P("Reserva cancelada com sucesso"),await w()}catch(v){console.error(v),I(ve(v,"Erro ao cancelar reserva"))}}function Pe(t){T.value=t,z.value=!0}me(()=>g.tables,t=>{var r;const e=T.value;!e||(T.value=(r=t.find(c=>c.id===e.id))!=null?r:null)});function Ee(){typeof document!="undefined"&&!document.hidden&&w()}return me(S,t=>{t?g.stopWatching():g.startWatching()}),me(()=>{var t;return(t=D.currentStore)==null?void 0:t.id},t=>{a.value=[],i.value=[],O.value=[],J.value=!1,t&&(re(),he())}),Ze(()=>{S.value||(g.startWatching(),re(),he()),typeof document!="undefined"&&document.addEventListener("visibilitychange",Ee)}),ea(()=>{g.stopWatching(),typeof document!="undefined"&&document.removeEventListener("visibilitychange",Ee)}),(t,e)=>(l(),y(Fe,{class:L(n(b))},{default:pe(()=>{var r,c,v,U,H,q,Z,$e,we;return[p("div",{class:L(n(B))},[p("div",{class:L(n(k))}," Mesas do sal\xE3o ",2),n(S)?f("",!0):(l(),d("div",{key:0,class:L(n($))},[C(N,{icon:n(aa),label:"Atualizar",flat:"",color:"grey-7",loading:n(g).loadingMap,onClick:w},null,8,["icon","loading"]),n(Y)?f("",!0):(l(),y(N,{key:0,icon:n(oa),label:"\xC1reas e mesas",outline:"",color:"accent",onClick:e[0]||(e[0]=o=>n(ee).push("/home/pos/tables-config"))},null,8,["icon"]))],2))],2),n(S)?(l(),y(Ve,{key:0,icon:n(ta),title:"Voc\xEA n\xE3o tem acesso \xE0s mesas",description:"O sal\xE3o n\xE3o est\xE1 habilitado para voc\xEA neste estabelecimento. Fale com o respons\xE1vel da loja."},null,8,["icon"])):(l(),d(W,{key:1},[C(la,{variant:"reservations",sections:n(g).sections,loading:n(g).loadingMap,empty:n(g).isEmpty,onSelectTable:Pe},null,8,["sections","loading","empty"]),n(F)?f("",!0):(l(),d("section",La,[p("div",Na,[e[19]||(e[19]=p("h2",{class:"mesas-reservas-board__title"}," Reservas de hoje ",-1)),a.value.length?(l(),d("span",Ba,x(a.value.length),1)):f("",!0),s.value?(l(),y(na,{key:1,size:"sm"})):f("",!0)]),!s.value&&!a.value.length?(l(),y(Ve,{key:0,icon:n(Ae),title:"Nenhuma reserva para hoje",description:"As reservas confirmadas e sentadas de hoje ap
1arecem aqui, com a mesa de cada uma."},null,8,["icon"])):n(ae)&&a.value.length?(l(),d("div",{key:1,class:L(n(V))},[(l(!0),d(W,null,Oe(a.value,o=>(l(),d("div",{key:o.id,class:"col-12"},[C(da,{reservation:n(ye)(o,n(j)),now:n(ge),onOpenDetail:u=>X(o),onEdit:u=>X(o),onMarkSeated:u=>ue(o),onChangeStatus:(u,de)=>E(o,de),onConfirm:u=>E(o,"confirmed"),onMarkNoShow:u=>E(o,"no_show"),onCancel:u=>ce(o),onViewHistory:u=>Ce(o),onSendMessage:u=>ke(o),onCopyLink:u=>n(fe)(o),onRefundPayment:u=>Se(o)},null,8,["reservation","now","onOpenDetail","onEdit","onMarkSeated","onChangeStatus","onConfirm","onMarkNoShow","onCancel","onViewHistory","onSendMessage","onCopyLink","onRefundPayment"])]))),128))],2)):a.value.length?(l(),y(ia,{key:2,reservations:a.value.map(o=>n(ye)(o,n(j))),now:n(ge),onOpenDetail:e[1]||(e[1]=o=>_(o,X)),onEdit:e[2]||(e[2]=o=>_(o,X)),onMarkSeated:e[3]||(e[3]=o=>_(o,ue)),onChangeStatus:e[4]||(e[4]=(o,u)=>_(o,de=>void E(de,u))),onConfirm:e[5]||(e[5]=o=>_(o,u=>void E(u,"confirmed"))),onMarkNoShow:e[6]||(e[6]=o=>_(o,u=>void E(u,"no_show"))),onCancel:e[7]||(e[7]=o=>_(o,u=>void ce(u))),onViewHistory:e[8]||(e[8]=o=>_(o,Ce)),onSendMessage:e[9]||(e[9]=o=>_(o,ke)),onCopyLink:e[10]||(e[10]=o=>_(o,u=>void n(fe)(u))),onRefundPayment:e[11]||(e[11]=o=>_(o,u=>void Se(u)))},null,8,["reservations","now"])):f("",!0)]))],64)),C(Aa,{modelValue:z.value,"onUpdate:modelValue":e[12]||(e[12]=o=>z.value=o),table:T.value,onChanged:w},null,8,["modelValue","table"]),C(ma,{modelValue:te.value,"onUpdate:modelValue":e[13]||(e[13]=o=>te.value=o),reservation:be.value,onSeated:w},null,8,["modelValue","reservation"]),C(ra,{modelValue:ne.value,"onUpdate:modelValue":e[14]||(e[14]=o=>ne.value=o),mode:"edit",reservation:_e.value,"store-areas":i.value,"known-reservations":a.value,onSaved:w,onCancel:ce,onConfirm:e[15]||(e[15]=o=>E(o,"confirmed")),onMarkNoShow:e[16]||(e[16]=o=>E(o,"no_show")),onMarkSeated:ue,onChangeStatus:E},null,8,["modelValue","reservation","store-areas","known-reservations"]),C(ga,{modelValue:se.value,"onUpdate:modelValue":e[17]||(e[17]=o=>se.value=o),"reservation-info":A.value?{reservationId:A.value.id,clientName:(v=(c=(r=A.value.client)==null?void 0:r.name)!=null?c:A.value.guestName)!=null?v:"",clientPhone:(H=(U=A.value.client)==null?void 0:U.phone)!=null?H:""}:null},null,8,["modelValue","reservation-info"]),C(fa,{modelValue:ie.value,"onUpdate:modelValue":e[18]||(e[18]=o=>ie.value=o),"client-name":(Z=(q=le.value)==null?void 0:q.client)==null?void 0:Z.name,"client-phone":(we=($e=le.value)==null?void 0:$e.client)==null?void 0:we.phone},null,8,["modelValue","client-name","client-phone"])]}),_:1},8,["class"]))}});var Ro=Le(Pa,[["__scopeId","data-v-25705b62"]]);export{Ro 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.