feat: Add "Reabrir" button for comandas in 'PAYING' status, adjust visibility of other action buttons, include opening date in PDV modal title, and update the default product image fallback.

This commit is contained in:
Welton Silva
2026-02-25 08:40:56 -03:00
parent d1319c39ba
commit 4141650e2a
2 changed files with 21 additions and 9 deletions

View File

@@ -118,9 +118,11 @@ function renderComandasTable(data) {
<div style="display:flex;gap:6px">
<button class="btn btn-secondary btn-sm btn-itens" data-id="${c.id}" title="Itens">🛒</button>
${ativa ? `<button class="btn btn-success btn-sm btn-receber" data-id="${c.id}" title="Receber">💰</button>` : ''}
${ativa && c.status !== 'PAYING' ? `<button class="btn btn-warning btn-sm btn-pagar" data-id="${c.id}" title="Avisar Pagamento">⏳</button>` : ''}
${ativa ? `<button class="btn btn-danger btn-sm btn-excluir" data-id="${c.id}" title="Excluir">🗑️</button>` : ''}
</div>
${ativa && c.status === 'OPEN' ? `<button class="btn btn-warning btn-sm btn-pagar" data-id="${c.id}" title="Avisar Pagamento">⏳</button>` : ''}
${ativa && c.status === 'PAYING' ? `<button class="btn btn-warning btn-sm btn-reopen" data-id="${c.id}" title="Reabrir Comanda">Reabrir</button>` : ''}
</div>
</td>
</tr>`;
}).join('')}
@@ -146,6 +148,15 @@ function renderComandasTable(data) {
});
});
// Listener para botão "Reabrir" (muda p/ OPEN)
wrap.querySelectorAll('.btn-reopen').forEach(btn => {
btn.addEventListener('click', async () => {
const r = await window.electronAPI.patch(`/comandas/${btn.dataset.id}/`, { status: 'OPEN' });
if (r.ok) { showToast('Comanda reaberta!', 'info'); loadComandas(_mesasRef); }
else showToast(r.error, 'error');
});
});
// Listener para ver itens da comanda
wrap.querySelectorAll('.btn-itens').forEach(btn => {
btn.addEventListener('click', () => {
@@ -263,7 +274,7 @@ async function abrirItensComanda(comandaIdOrObj) {
openModal({
full: true,
title: `🛒 PDV: Comanda #${comanda.id}${comanda.name || ''} (${comanda.mesa_name || ''})`,
title: `🛒 #${comanda.id}${comanda.name || ''} (${comanda.mesa_name || ''})${formatDate(comanda.dt_open)}`,
body: `
<div class="pdv-container">
<!-- Lado Esquerdo: Itens da Comanda -->
@@ -348,7 +359,7 @@ async function abrirItensComanda(comandaIdOrObj) {
<div style="display:grid; grid-template-columns: 1fr 1fr; gap: 10px; margin-top: 10px;">
<button class="btn btn-success btn-lg" id="btn-pdv-receber">💰 Receber</button>
<button class="btn btn-danger btn-lg" id="btn-pdv-excluir">🗑️ Excluir</button>
</div>
</div>
` : ''}
</div>`;
@@ -440,9 +451,9 @@ async function abrirItensComanda(comandaIdOrObj) {
const filtrados = todosProdutos.filter(p => !filtro || p.name.toLowerCase().includes(filtro.toLowerCase())).slice(0, 20);
console.log('Produtos carregados no PDV:', todosProdutos);
// console.log('Produtos carregados no PDV:', todosProdutos);
container.innerHTML = filtrados.map(p => {
const imgTarget = p.image ? `url('${p.image}')` : 'none';
const imgTarget = p.image ? `url('${p.image}')` : `url('https://wallpapers.com/images/featured/fundo-abstrato-escuro-27kvn4ewpldsngbu.jpg')`;
return `
<div class="pdv-product-card" data-id="${p.id}">
<div class="pdv-product-bg" style="background-image: ${imgTarget}"></div>

View File

@@ -755,7 +755,7 @@ select.form-control option {
/* PDV Layout for Comanda Items */
.pdv-container {
display: grid;
grid-template-columns: 380px 1fr;
grid-template-columns: 480px 1fr;
height: 100%;
gap: 1px;
background: var(--border);
@@ -783,7 +783,8 @@ select.form-control option {
.pdv-products-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));
grid-auto-rows: max-content;
gap: 12px;
overflow-y: auto;
padding-right: 8px;