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) => `