From 83f37bb8babaa9b25a841c89b0a35b9a787e06bb Mon Sep 17 00:00:00 2001 From: mfwadejr <125498560+mfwadejr@users.noreply.github.com> Date: Sat, 29 Aug 2026 15:50:46 -0400 Subject: [PATCH] Show payment details in sales --- public/app.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/public/app.js b/public/app.js index d9a380b..38e67b2 100644 --- a/public/app.js +++ b/public/app.js @@ -34,13 +34,13 @@ function render() { document.querySelectorAll("[data-tab]").forEach(b=>b.classList.toggle("active",b.dataset.tab===state.tab)); const all=filtered(), pages=Math.max(1,Math.ceil(all.length/PAGE_SIZE)); state.page=Math.min(state.page,pages); const start=(state.page-1)*PAGE_SIZE, rows=all.slice(start,start+PAGE_SIZE); - $("#thead").innerHTML=state.tab==="available"?"
Add a vSeeBox unit to available inventory.
`); @@ -48,14 +48,14 @@ function receiveForm() { } function sellForm(id="") { const available=state.products.filter(p=>p.status==="available"); - openModal(`Enter the customer and shipped-to details.
`); + openModal(`Enter the customer, payment, and shipped-to details.
`); $("#sellForm").onsubmit=async e=>{ e.preventDefault(); const data=Object.fromEntries(new FormData(e.currentTarget)), productId=data.productId; delete data.productId; await change(`/api/products/${encodeURIComponent(productId)}/sell`,"POST",data,"Sale recorded."); }; $("[data-cancel]").onclick=closeModal; } async function submitForm(e,path,message){ e.preventDefault(); await change(path,"POST",Object.fromEntries(new FormData(e.currentTarget)),message); } async function change(path,method,body,message){ try{ await api(path,{method,body:body?JSON.stringify(body):undefined}); closeModal(); await load(); toast(message); }catch(e){ toast(e.message); } } function viewSale(p) { - openModal(`${esc(p.model)} · ${fmtDate(p.soldAt)}
${esc(p.customerName||"Unknown")}
${esc(p.phone||"No phone recorded")}
${address(p)?esc(address(p)):"No shipping address recorded"}
${p.shippingNotes?`${esc(p.shippingNotes)}
`:""}${esc(p.manufacturer)} ${esc(p.model)} · ${esc(p.condition)}
Received: ${fmtDate(p.receivedAt)} · Sold: ${fmtDate(p.soldAt)}
Cost: ${p.cost?money.format(p.cost):"—"} · Sale price: ${p.salePrice?money.format(p.salePrice):"—"}
${p.notes?`Notes: ${esc(p.notes)}
`:""}${esc(p.model)} · ${fmtDate(p.soldAt)}
${esc(p.customerName||"Unknown")}
${esc(p.phone||"No phone recorded")}
${esc(p.paymentMethod||"Not recorded")}
${p.paymentReference?`Reference: ${esc(p.paymentReference)}
`:""}${address(p)?esc(address(p)):"No shipping address recorded"}
${p.shippingNotes?`${esc(p.shippingNotes)}
`:""}${esc(p.manufacturer)} ${esc(p.model)} · ${esc(p.condition)}
Received: ${fmtDate(p.receivedAt)} · Sold: ${fmtDate(p.soldAt)}
Cost: ${p.cost?money.format(p.cost):"—"} · Sale price: ${p.salePrice?money.format(p.salePrice):"—"}
${p.notes?`Notes: ${esc(p.notes)}
`:""}