// Emporium da Arte — Mock data for the PDV prototype
// All values BRL. Stock real, names real, suppliers real-ish.

const SUPPLIERS = [
  { id: "s1", name: "Bordados Brasil",          taxId: "12.345.678/0001-90", taxIdType: "pj", contact: "Sandra Lima",    phone: "(11) 3245-1100", email: "vendas@bordadosbrasil.com.br", city: "São Paulo / SP",       lastOrder: "22/04/2026", totalBuys: 14820.50, products: 38, status: "ativo" },
  { id: "s2", name: "Acrilex Distribuidora",    taxId: "55.221.930/0001-12", taxIdType: "pj", contact: "Marcos Pereira", phone: "(11) 4002-2200", email: "atendimento@acrilexdist.com",  city: "Guarulhos / SP",       lastOrder: "02/05/2026", totalBuys:  9320.00, products: 27, status: "ativo" },
  { id: "s3", name: "Tecidos Santa Efigênia",   taxId: "08.119.402/0001-58", taxIdType: "pj", contact: "Dona Iracema",   phone: "(11) 3331-9080", email: "iracema@santaefigenia.com.br", city: "São Paulo / SP",       lastOrder: "30/04/2026", totalBuys: 22140.30, products: 52, status: "ativo" },
  { id: "s4", name: "Papelaria Criativa Imp.",  taxId: "22.901.110/0001-04", taxIdType: "pj", contact: "Renata Souza",   phone: "(21) 2589-4411", email: "comercial@papcriativa.com.br", city: "Rio de Janeiro / RJ",  lastOrder: "18/04/2026", totalBuys:  6440.20, products: 19, status: "ativo" },
  { id: "s5", name: "Madeireira Arte & Forma",  taxId: "31.776.502/0001-77", taxIdType: "pj", contact: "Sr. Donizete",   phone: "(11) 4671-2200", email: "donizete@arteforma.com.br",    city: "Itaquaquecetuba / SP", lastOrder: "11/04/2026", totalBuys:  3120.80, products: 11, status: "ativo" },
  { id: "s6", name: "Linhas & Botões São José", taxId: "44.108.221/0001-33", taxIdType: "pj", contact: "Pedro Augusto",  phone: "(11) 3105-7720", email: "pedro@linhassj.com.br",        city: "São Paulo / SP",       lastOrder: "06/03/2026", totalBuys:  1840.00, products:  9, status: "inativo" },
];

const CATEGORIES = [
  { id: "c1", name: "Linhas & Bordado", icon: "thread",  color: "#E91E78", count: 38 },
  { id: "c2", name: "Tintas",           icon: "paint",   color: "#F94C99", count: 27 },
  { id: "c3", name: "Tecidos & Feltro", icon: "fabric",  color: "#C8125F", count: 52 },
  { id: "c4", name: "Papelaria",        icon: "paper",   color: "#E8B14A", count: 19 },
  { id: "c5", name: "MDF & Madeira",    icon: "wood",    color: "#A30D4D", count: 11 },
  { id: "c6", name: "Pincéis & Tools",  icon: "brush",   color: "#FF93BC", count: 23 },
];

// Picked colors that read well as the placeholder image gradient
const PRODUCTS = [
  { id: "p001", sku: "4821-A", name: "Linha DMC Mouliné — Rosa #3326",          cat: "c1", supplier: "s1", price: 12.90, cost:  7.20, stock: 48, min: 12, glyph: "L", c1: "#FFE1EC", c2: "#FF93BC", barcode: "7891234048210", sales30: 86 },
  { id: "p002", sku: "4821-B", name: "Linha DMC Mouliné — Azul Royal #797",     cat: "c1", supplier: "s1", price: 12.90, cost:  7.20, stock: 31, min: 12, glyph: "L", c1: "#DCEAFE", c2: "#7AA8E8", barcode: "7891234048227", sales30: 64 },
  { id: "p003", sku: "4821-C", name: "Linha DMC Mouliné — Verde Folha #905",    cat: "c1", supplier: "s1", price: 12.90, cost:  7.20, stock:  6, min: 12, glyph: "L", c1: "#DCFCE7", c2: "#86C593", barcode: "7891234048234", sales30: 42 },
  { id: "p004", sku: "1042",   name: "Tinta Acrilex 037 — Amarelo Cádmio 60ml", cat: "c2", supplier: "s2", price:  8.50, cost:  4.10, stock:  3, min: 10, glyph: "T", c1: "#FFF7CC", c2: "#F5C84B", barcode: "7891234010427", sales30: 58 },
  { id: "p005", sku: "1043",   name: "Tinta Acrilex 501 — Branco 60ml",         cat: "c2", supplier: "s2", price:  8.50, cost:  4.10, stock: 22, min: 10, glyph: "T", c1: "#FAFAF9", c2: "#D2D0CA", barcode: "7891234010434", sales30: 71 },
  { id: "p006", sku: "1051",   name: "Tinta Acrilex 326 — Magenta 60ml",        cat: "c2", supplier: "s2", price:  8.50, cost:  4.10, stock: 14, min: 10, glyph: "T", c1: "#FFE1EC", c2: "#E91E78", barcode: "7891234010519", sales30: 49 },
  { id: "p007", sku: "2310",   name: "Feltro liso 1mm — Rosa Pink (m)",         cat: "c3", supplier: "s3", price: 24.00, cost: 12.50, stock:  0, min:  5, glyph: "F", c1: "#FFE1EC", c2: "#F95599", barcode: "7891234023109", sales30: 18 },
  { id: "p008", sku: "2311",   name: "Feltro liso 1mm — Branco (m)",            cat: "c3", supplier: "s3", price: 24.00, cost: 12.50, stock: 18, min:  5, glyph: "F", c1: "#FFFFFF", c2: "#E7E6E2", barcode: "7891234023116", sales30: 22 },
  { id: "p009", sku: "2418",   name: "Tecido tricoline floral — Rosa (50cm)",   cat: "c3", supplier: "s3", price: 18.50, cost:  9.20, stock: 12, min:  6, glyph: "T", c1: "#FFE1EC", c2: "#FFC2D9", barcode: "7891234024183", sales30: 24 },
  { id: "p010", sku: "5520",   name: "Bloco Canson 200g — A4 / 20fls",          cat: "c4", supplier: "s4", price: 32.00, cost: 18.00, stock: 17, min:  4, glyph: "B", c1: "#FBF4E4", c2: "#EBD7A4", barcode: "7891234055200", sales30: 19 },
  { id: "p011", sku: "5521",   name: "Caderno Sketch capa dura — A5",           cat: "c4", supplier: "s4", price: 28.00, cost: 14.50, stock:  8, min:  4, glyph: "C", c1: "#F4F4F2", c2: "#A1A09A", barcode: "7891234055217", sales30: 15 },
  { id: "p012", sku: "7701",   name: "Placa MDF cru 30×30 cm — 6mm",            cat: "c5", supplier: "s5", price: 14.00, cost:  6.80, stock: 22, min:  8, glyph: "M", c1: "#FBF4E4", c2: "#C9912D", barcode: "7891234077013", sales30: 28 },
  { id: "p013", sku: "7702",   name: "Caixa MDF organizadora 20×15×10",          cat: "c5", supplier: "s5", price: 38.00, cost: 19.00, stock:  4, min:  6, glyph: "M", c1: "#F5E8C9", c2: "#E8B14A", barcode: "7891234077020", sales30: 12 },
  { id: "p014", sku: "8801",   name: "Pincel Tigre 815 — n°6 chato",            cat: "c6", supplier: "s2", price:  9.20, cost:  4.80, stock: 36, min: 10, glyph: "P", c1: "#FFE1EC", c2: "#FF93BC", barcode: "7891234088016", sales30: 41 },
  { id: "p015", sku: "8802",   name: "Pincel Tigre 815 — n°12 chato",           cat: "c6", supplier: "s2", price: 14.50, cost:  7.10, stock: 14, min:  8, glyph: "P", c1: "#FFE1EC", c2: "#F95599", barcode: "7891234088023", sales30: 28 },
  { id: "p016", sku: "8810",   name: "Kit pincéis aquarela — 10 peças",         cat: "c6", supplier: "s2", price: 64.00, cost: 32.00, stock:  9, min:  4, glyph: "K", c1: "#FFE1EC", c2: "#E91E78", barcode: "7891234088108", sales30: 11 },
  { id: "p017", sku: "1099",   name: "Cola Tenaz 90g",                          cat: "c2", supplier: "s4", price:  7.50, cost:  3.40, stock: 41, min: 12, glyph: "C", c1: "#FFFFFF", c2: "#FCD34D", barcode: "7891234010991", sales30: 73 },
  { id: "p018", sku: "1100",   name: "Cola Glitter Acrilex — Rosa 23g",          cat: "c2", supplier: "s2", price:  6.50, cost:  3.10, stock: 28, min: 10, glyph: "G", c1: "#FFE1EC", c2: "#FF93BC", barcode: "7891234011004", sales30: 52 },
];

// Sales history (last few days)
const SALES = [
  { id: "v2451", date: "09/05/2026", time: "14:32", cashier: "Marina",  items: [
      { pid: "p001", qty: 4 }, { pid: "p018", qty: 2 }, { pid: "p006", qty: 1 },
    ], pay: "pix",       discount: 0,  total: 71.10, status: "concluida" },
  { id: "v2450", date: "09/05/2026", time: "14:08", cashier: "Marina",  items: [
      { pid: "p010", qty: 1 }, { pid: "p014", qty: 2 },
    ], pay: "credito",   discount: 0,  total: 50.40, status: "concluida" },
  { id: "v2449", date: "09/05/2026", time: "13:41", cashier: "Helena",  items: [
      { pid: "p007", qty: 2 }, { pid: "p005", qty: 1 },
    ], pay: "debito",    discount: 0,  total: 56.50, status: "concluida" },
  { id: "v2448", date: "09/05/2026", time: "12:55", cashier: "Marina",  items: [
      { pid: "p016", qty: 1 },
    ], pay: "credito",   discount: 4,  total: 60.00, status: "concluida" },
  { id: "v2447", date: "09/05/2026", time: "11:22", cashier: "Helena",  items: [
      { pid: "p009", qty: 2 }, { pid: "p017", qty: 3 },
    ], pay: "dinheiro",  discount: 0,  total: 59.50, status: "concluida" },
  { id: "v2446", date: "09/05/2026", time: "10:48", cashier: "Helena",  items: [
      { pid: "p011", qty: 1 }, { pid: "p010", qty: 1 },
    ], pay: "pix",       discount: 0,  total: 60.00, status: "concluida" },
  { id: "v2445", date: "09/05/2026", time: "10:14", cashier: "Marina",  items: [
      { pid: "p001", qty: 6 }, { pid: "p002", qty: 3 }, { pid: "p003", qty: 2 },
    ], pay: "credito",   discount: 0,  total:142.00, status: "concluida" },
  { id: "v2444", date: "09/05/2026", time: "09:38", cashier: "Marina",  items: [
      { pid: "p012", qty: 4 },
    ], pay: "dinheiro",  discount: 0,  total: 56.00, status: "concluida" },
  { id: "v2443", date: "08/05/2026", time: "18:52", cashier: "Helena",  items: [
      { pid: "p013", qty: 1 }, { pid: "p018", qty: 2 }, { pid: "p005", qty: 1 },
    ], pay: "pix",       discount: 0,  total: 59.50, status: "concluida" },
  { id: "v2442", date: "08/05/2026", time: "17:30", cashier: "Helena",  items: [
      { pid: "p015", qty: 2 },
    ], pay: "credito",   discount: 0,  total: 29.00, status: "cancelada" },
  { id: "v2441", date: "08/05/2026", time: "16:15", cashier: "Marina",  items: [
      { pid: "p008", qty: 3 }, { pid: "p006", qty: 2 },
    ], pay: "debito",    discount: 0,  total: 89.00, status: "concluida" },
  { id: "v2440", date: "08/05/2026", time: "15:02", cashier: "Marina",  items: [
      { pid: "p010", qty: 2 }, { pid: "p011", qty: 1 },
    ], pay: "pix",       discount: 0,  total: 92.00, status: "concluida" },
];

// Cash register sessions
const CAIXAS = [
  { id: "cx142", date: "09/05/2026", openTime: "08:12", closeTime: null,    operator: "Marina",  initial: 200.00, sales: 1432.50, withdraw:   0,    expected: 1632.50, counted: null,    status: "aberto" },
  { id: "cx141", date: "08/05/2026", openTime: "08:05", closeTime: "19:48", operator: "Marina",  initial: 200.00, sales: 2841.30, withdraw: 1000,    expected: 2041.30, counted: 2038.00, status: "fechado" },
  { id: "cx140", date: "07/05/2026", openTime: "08:18", closeTime: "19:32", operator: "Helena",  initial: 200.00, sales: 1972.40, withdraw:  500,    expected: 1672.40, counted: 1672.40, status: "fechado" },
  { id: "cx139", date: "06/05/2026", openTime: "08:02", closeTime: "19:15", operator: "Helena",  initial: 200.00, sales: 2210.00, withdraw:  800,    expected: 1610.00, counted: 1614.00, status: "fechado" },
  { id: "cx138", date: "05/05/2026", openTime: "08:11", closeTime: "19:40", operator: "Marina",  initial: 200.00, sales: 1840.50, withdraw:  500,    expected: 1540.50, counted: 1540.50, status: "fechado" },
];

// Daily revenue for the chart (last 14 days, R$)
const REVENUE_14D = [
  { d: "26/04", v: 1620 }, { d: "27/04", v: 1980 }, { d: "28/04", v: 1450 }, { d: "29/04", v: 2120 },
  { d: "30/04", v: 2380 }, { d: "01/05", v:  890 }, { d: "02/05", v: 2710 }, { d: "03/05", v: 3120 },
  { d: "04/05", v: 1840 }, { d: "05/05", v: 1841 }, { d: "06/05", v: 2210 }, { d: "07/05", v: 1972 },
  { d: "08/05", v: 2841 }, { d: "09/05", v: 1432 },
];

const PAYMENT_LABELS = { pix: "Pix", credito: "Crédito", debito: "Débito", dinheiro: "Dinheiro" };
const PAYMENT_COLORS = { pix: "#E91E78", credito: "#3B82F6", debito: "#16A34A", dinheiro: "#F59E0B" };

const USERS = [
  { id: "u1", name: "Marina Costa",   role: "Dono(a)",     avatar: "M", initials: "MC" },
  { id: "u2", name: "Helena Ribeiro", role: "Operadora",   avatar: "H", initials: "HR" },
  { id: "u3", name: "João Pedro",     role: "Operador",    avatar: "J", initials: "JP" },
];

// Helpers
const BRL = (n) => "R$ " + n.toFixed(2).replace(".", ",").replace(/\B(?=(\d{3})+(?!\d))/g, ".").replace("R$ -", "-R$ ");
const productById = (id) => PRODUCTS.find(p => p.id === id);
const supplierById = (id) => SUPPLIERS.find(s => s.id === id);
const categoryById = (id) => CATEGORIES.find(c => c.id === id);
const stockState = (p) => p.stock === 0 ? "esgotado" : (p.stock <= p.min ? "baixo" : "ok");

// Manual product codes (entered by the shopkeeper at cadastro). 5-digit codes
// used both as the human-readable identifier and as the barcode payload.
PRODUCTS.forEach((p, i) => { p.code = String(19001 + i); });

Object.assign(window, {
  SUPPLIERS, CATEGORIES, PRODUCTS, SALES, CAIXAS, REVENUE_14D,
  PAYMENT_LABELS, PAYMENT_COLORS, USERS,
  BRL, productById, supplierById, categoryById, stockState,
});
