} function formatDate(dateString) { const date = new Date(dateString); return date.toLocaleDateString('pt-BR'); } /* -------------------- EXPORT / CLEAR -------------------- */ function downloadSales(){ if(state.sales.length===0) return alert('Sem vendas para exportar'); let csv = 'id,table,method,total,ts,items\n'; state.sales.forEach(s=>{ const items = s.items.map(i=>`${i.name} x${i.qty}`).join('; '); csv += `${s.id},"${s.tableName}",${s.method},${s.total},${s.ts},"${items}"\n`; }); const blob=new Blob([csv],{type:'text/csv'}); const url=URL.createObjectURL(blob); const a=document.createElement('a'); a.href=url; a.download='vendas_espeto.csv'; a.click(); URL.revokeObjectURL(url); } function clearAllData(){ if(!confirm('Apagar TODOS os dados (produtos, mesas, vendas e despesas)?')) return; state={products:[],tables:[],sales:[],expenses:[]}; localStorage.removeItem(K_PRODUCTS); localStorage.removeItem(K_TABLES); localStorage.removeItem(K_SALES); localStorage.removeItem(K_EXPENSES); render(); closeModal(); } /* -------------------- DESPESAS (mantidos) -------------------- */ function addExpense(){ const name = document.getElementById('expenseName').value.trim(); const value = parseFloat(document.getElementById('expenseValue').value); if(!name || isNaN(value)) return alert('Preencha nome e valor válidos'); state.expenses.push({id: Date.now(), name, amount: Math.round(value*100)/100, ts: new Date().toISOString()}); document.getElementById('expenseName').value=''; document.getElementById('expenseValue').value=''; saveState(); renderExpenses(); } function editExpense(id){ const e = state.expenses.find(x=>x.id===id); if(!e) return; const n = prompt('Nome da despesa', e.name); if(n===null) return; const v = prompt('Valor (R$)', e.amount); const value = parseFloat(v); if(!n.trim() || isNaN(value)) return alert('Dados inválidos'); e.name = n.trim(); e.amount = Math.round(value*100)/100; saveState(); renderExpenses(); } function removeExpense(id){ if(!confirm('Remover despesa?')) return; state.expenses = state.expenses.filter(x=>x.id!==id); saveState(); renderExpenses(); } function renderExpenses(){ const el = document.getElementById('expensesList'); el.innerHTML=''; if(state.expenses.length===0){ el.innerHTML='