987: if (dados.mesas) pdvRenderizarMesasSel(dados.mesas); 1324: mesa_id: parseInt(document.getElementById('pdv-mesa-sel')?.value)||null 1784: if (id === 'mesas') { 1785: carregarPainelMesas(); 1789: socket.emit('pedir-mesas'); 1802: // ­ƒ¬æ MESAS ÔÇö Fun├º├Áes de cadastro 1804: let mesasGlobal = []; 1806: socket.on('mesas-carregadas', (lista) => { 1807: mesasGlobal = lista; 1808: renderizarListaMesas(lista); 1811: function renderizarListaMesas(lista) { 1812: const div = document.getElementById('lista-mesas'); 1814: div.innerHTML = !lista.length ? '

Nenhuma mesa cadastrada.

' : 1817:
Mesa ${m.numero}${m.nome?' ÔÇö '+m.nome:''}
1821: 1822: 1827: function salvarMesa() { 1828: const num = parseInt(document.getElementById('mesa-numero').value); 1829: if (!num) { alert('Informe o n├║mero da mesa!'); return; } 1830: socket.emit('salvar-mesa', { 1831: id: parseInt(document.getElementById('mesa-id').value)||null, 1833: nome: document.getElementById('mesa-nome').value.trim(), 1836: limparFormMesa(); 1839: function editarMesa(id) { 1840: const m = mesasGlobal.find(x => x.id === id); 1842: document.getElementById('mesa-id').value = m.id; 1843: document.getElementById('mesa-numero').value = m.numero; 1844: document.getElementById('mesa-nome').value = m.nome || ''; 1845: document.getElementById('btn-cancelar-mesa').style.display = 'block'; 1848: function limparFormMesa() { 1849: document.getElementById('mesa-id').value = ''; 1850: document.getElementById('mesa-numero').value = ''; 1851: document.getElementById('mesa-nome').value = ''; 1852: document.getElementById('btn-cancelar-mesa').style.display = 'none'; 1855: // Selector de mesa dentro do PDV 1856: function pdvRenderizarMesasSel(mesas) { 1857: const sel = document.getElementById('pdv-mesa-sel'); 1859: sel.innerHTML = ''; 1860: mesas.filter(m => m.ativo).forEach(m => { 1861: sel.innerHTML += ``; 1916: ${p.mesa_id ? `
Mesa ${p.mesa_id}
` : ''} 2168: // ­ƒ¬æ SISTEMA DE MESAS ÔÇö PDV COMPLETO 2170: let mesaPdvMesaAtual = null; 2171: let mesaPdvCarrinho = []; 2172: let mesaPdvPagamento = ''; 2173: let mesaPdvItemEditando = null; 2175: // ÔöÇÔöÇ Painel de Mesas ÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇ 2176: function carregarPainelMesas() { 2177: socket.emit('pedir-painel-mesas'); 2180: socket.on('painel-mesas-carregado', (mesas) => { 2181: renderizarPainelMesas(mesas); 2183: if (mesaPdvMesaAtual) { 2184: const mesa = mesas.find(m => m.id === mesaPdvMesaAtual.id); 2185: if (mesa) mesaPdvMesaAtual = mesa; 2189: function renderizarPainelMesas(mesas) { 2190: const grid = document.getElementById('painel-mesas-grid'); 2191: const vazio = document.getElementById('painel-mesas-vazio'); 2194: const ativas = mesas.filter(m => m.ativo); 2205: const leg = document.getElementById('mesas-legenda'); 2220: return `
Mesa ${m.numero}
2233: // ÔöÇÔöÇ Abrir Modal Mesa ÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇ 2234: function abrirMesaPDV(mesaId) { 2235: socket.emit('pedir-painel-mesas'); 2237: const overlay = document.getElementById('mesa-overlay'); 2243: socket.once('painel-mesas-carregado', (mesas) => { 2244: const mesa = mesas.find(m => m.id === mesaId); 2245: if (!mesa) return; 2246: mesaPdvMesaAtual = mesa; 2247: mesaPdvCarrinho = Array.isArray(mesa.carrinho) ? [...mesa.carrinho] : JSON.parse(mesa.carrinho||'[]'); 2248: mesaPdvPagamento = ''; 2251: document.getElementById('mesa-pdv-titulo').textContent = `­ƒ¬æ Mesa ${mesa.numero}${mesa.nome?' ÔÇö '+mesa.nome:''}`; 2252: document.getElementById('mesa-pdv-status').textContent = mesa.status === 'livre' ? 'Livre ÔÇö clique para adicionar itens' : `Ocupada desde ${mesa.aberta_em||''}`; 2253: document.getElementById('mesa-cliente-nome').value = mesa.cliente_nome || ''; 2254: document.getElementById('mesa-obs').value = mesa.observacoes || ''; 2257: mesaPdvRenderizarCategorias(); 2258: mesaPdvRenderizarGrade(); 2259: mesaPdvRenderizarPagamentos(); 2260: mesaPdvRenderizarCarrinho(); 2266: function fecharMesaPDV() { 2268: if (mesaPdvMesaAtual) { 2269: socket.emit('atualizar-mesa-carrinho', { 2270: id: mesaPdvMesaAtual.id, 2271: carrinho: mesaPdvCarrinho, 2272: cliente_nome: document.getElementById('mesa-cliente-nome').value, 2273: observacoes: document.getElementById('mesa-obs').value, 2274: aberta_em: mesaPdvMesaAtual.aberta_em || new Date().toLocaleString('pt-BR') 2277: document.getElementById('mesa-overlay').style.display = 'none'; 2278: mesaPdvMesaAtual = null; 2279: mesaPdvCarrinho = []; 2283: function mesaPdvRenderizarCategorias() { 2284: const div = document.getElementById('mesa-cats-filter'); 2286: div.innerHTML = ``; 2288: div.innerHTML += ``; 2292: function mesaPdvRenderizarGrade(busca='', catId=null) { 2293: const div = document.getElementById('mesa-grade-produtos'); 2303: return `
2313: function mesaPdvFiltrar(busca, catId=null) { 2314: mesaPdvRenderizarGrade(busca, catId); 2318: let mesaPdvItemSelecionado = null; 2320: function mesaPdvAbrirItem(prodId) { 2323: mesaPdvItemSelecionado = p; 2339: vars.map((v,i) => `