2

function removerProduto(id){ if(confirm("Remover?")) produtosRef.child(id).remove(); } function cancelarEdicao(){ titulo.value="";descricao.value="";preco.value="";estoque.value=""; imagemProduto="";editando=null; } /* CARRINHO */ function addCarrinho(id){ if(!LOJA_ABERTA){ alert("A loja está fechada para pedidos!"); return; } const p = listaProdutos.find(x=>x.id===id); if(!p) return; if((p.estoque||0)<=0){ alert("Sem estoque"); return; } produtosRef.child(id).child("estoque").transaction(e=>{ if(!e || e<=0) return e; return e-1; }); let item=carrinho.find(x=>x.id===id); if(item) item.qtd++; else carrinho.push({id:p.id,titulo:p.titulo,preco:Number(p.preco||0),qtd:1}); renderCarrinho(); } function alterarQtd(id,delta){ let item=carrinho.find(x=>x.id===id); if(!item) return; const prod=listaProdutos.find(p=>p.id===id); if(delta>0){ if((prod.estoque||0)<=0) return alert("Sem estoque"); produtosRef.child(id).child("estoque").transaction(e=>{ if(!e || e<=0) return e; return e-1; }); item.qtd++; }else{ if(item.qtd>1){ produtosRef.child(id).child("estoque").transaction(e=>(e||0)+1); item.qtd--; }else{ removerDoCarrinho(id); return; } } renderCarrinho(); } function removerDoCarrinho(id){ let item=carrinho.find(x=>x.id===id); if(!item) return; produtosRef.child(id).child("estoque").transaction(e=>(e||0)+item.qtd); carrinho=carrinho.filter(x=>x.id!==id); renderCarrinho(); } function renderCarrinho(){ itens.innerHTML=""; let totalValor=0; carrinho.forEach(p=>{ totalValor+=p.preco*p.qtd; itens.innerHTML+=`
${p.titulo}
R$ ${p.preco.toFixed(2)}
${p.qtd}
`; }); total.innerText="Total: R$ "+totalValor.toFixed(2); } /* REGISTRAR VENDA */ function registrarVenda() { let total = 0; let itensVenda = []; carrinho.forEach(p => { total += p.preco * p.qtd; itensVenda.push({ id: p.id, titulo: p.titulo, qtd: p.qtd, total: p.preco * p.qtd }); }); vendasRef.push({ data: Date.now(), total: total, itens: itensVenda }); } /* RELATORIO */ function toggleRelatorio() { const div = document.getElementById("relatoriosBox"); div.style.display = div.style.display === "none" ? "block" : "none"; } vendasRef.on("value", snap => { let hojeTotal = 0, mesTotal = 0, geralTotal = 0, pedidos = 0; let contadorProdutos = {}; const agora = new Date(); const diaHoje = agora.getDate(); const mesHoje = agora.getMonth(); const anoHoje = agora.getFullYear(); snap.forEach(s => { const v = s.val(); pedidos++; geralTotal += v.total; const d = new Date(v.data); if(d.getDate() === diaHoje && d.getMonth() === mesHoje && d.getFullYear() === anoHoje) { hojeTotal += v.total; } if(d.getMonth() === mesHoje && d.getFullYear() === anoHoje) { mesTotal += v.total; } (v.itens || []).forEach(i => { if(!contadorProdutos[i.titulo]) contadorProdutos[i.titulo] = 0; contadorProdutos[i.titulo] += i.qtd; }); }); relHoje.innerText = hojeTotal.toFixed(2); relMes.innerText = mesTotal.toFixed(2); relTotal.innerText = geralTotal.toFixed(2); relPedidos.innerText = pedidos; let topNome = "Nenhum ainda"; let maior = 0; for(let k in contadorProdutos){ if(contadorProdutos[k] > maior){ maior = contadorProdutos[k]; topNome = k; }

Comentários

Postagens mais visitadas deste blog

Tentativa

Atualização