// Synthetic Chilean POS/DTE data — structure inspired by poseasydte, values are plausible
// All numbers are made up for prototyping. CLP currency.

const I18N = {
  es: {
    appName: "Datamin",
    tagline: "POS/DTE Intelligence",
    login: {
      title: "Acceso seguro a indicadores POS/DTE",
      subtitle: "Inicia sesión para consultar los datos de tu operación.",
      email: "Correo o usuario",
      password: "Contraseña",
      company: "Empresa / cliente",
      remember: "Mantener sesión",
      forgot: "¿Olvidaste tu contraseña?",
      submit: "Iniciar sesión",
      secure: "Conexión cifrada · 2FA disponible",
    },
    nav: {
      executive: "Ejecutivo",
      compras: "Compras DTE",
      proveedores: "Proveedores",
      productos: "Productos",
      inventario: "Inventario",
      calidad: "Calidad de datos",
      logout: "Cerrar sesión",
    },
    header: {
      company: "Empresa",
      period: "Período",
      export: "Exportar",
      lastUpdate: "Última carga",
      search: "Buscar facturas, proveedores, productos...",
    },
    reliability: {
      reliable: "Confiable",
      partial: "Parcial",
      unreliable: "No confiable",
      missing: "Sin datos",
    },
    common: {
      viewAll: "Ver todo",
      details: "Detalle",
      filters: "Filtros",
      reset: "Limpiar",
      apply: "Aplicar",
      from: "Desde",
      to: "Hasta",
      all: "Todos",
      empty: "Sin datos suficientes",
      partial: "Datos parciales",
    },
  },
  en: {
    appName: "Datamin",
    tagline: "POS/DTE Intelligence",
    login: {
      title: "Secure access to POS/DTE indicators",
      subtitle: "Sign in to review your operational data.",
      email: "Email or username",
      password: "Password",
      company: "Company / client",
      remember: "Keep me signed in",
      forgot: "Forgot your password?",
      submit: "Sign in",
      secure: "Encrypted connection · 2FA available",
    },
    nav: {
      executive: "Executive",
      compras: "DTE Purchases",
      proveedores: "Suppliers",
      productos: "Products",
      inventario: "Inventory",
      calidad: "Data quality",
      logout: "Sign out",
    },
    header: {
      company: "Company",
      period: "Period",
      export: "Export",
      lastUpdate: "Last sync",
      search: "Search invoices, suppliers, products...",
    },
    reliability: {
      reliable: "Reliable",
      partial: "Partial",
      unreliable: "Not reliable",
      missing: "No data",
    },
    common: {
      viewAll: "See all",
      details: "Details",
      filters: "Filters",
      reset: "Clear",
      apply: "Apply",
      from: "From",
      to: "To",
      all: "All",
      empty: "Not enough data",
      partial: "Partial data",
    },
  },
};

// ---------- Companies ----------
const COMPANIES = [
  { id: "pernia", name: "Minimarket Pernía Ltda.", rut: "76.412.998-2" },
  { id: "pernia-carnes", name: "Carnicería Pernía", rut: "76.412.999-0" },
];

// ---------- Suppliers (synthetic Chilean) ----------
const SUPPLIERS = [
  { rut: "96.591.040-9", razon: "Comercial CCU S.A.", short: "CCU", monto: 18420500, docs: 64, last: "2026-05-12", freq: "Semanal" },
  { rut: "91.041.000-8", razon: "Embotelladora Andina S.A.", short: "Andina", monto: 14820000, docs: 52, last: "2026-05-14", freq: "Semanal" },
  { rut: "92.011.000-3", razon: "Distribuidora Rabié Ltda.", short: "Rabié", monto: 12190200, docs: 78, last: "2026-05-15", freq: "Bisemanal" },
  { rut: "86.150.200-7", razon: "Carnes Lo Valledor SpA", short: "Lo Valledor", monto: 10980000, docs: 41, last: "2026-05-13", freq: "Semanal" },
  { rut: "76.124.890-1", razon: "Frutos del Maipo Ltda.", short: "Frutos Maipo", monto: 7340000, docs: 36, last: "2026-05-11", freq: "Bisemanal" },
  { rut: "78.500.000-5", razon: "Lácteos Soprole S.A.", short: "Soprole", monto: 6890200, docs: 29, last: "2026-05-10", freq: "Semanal" },
  { rut: "96.502.530-0", razon: "Nestlé Chile S.A.", short: "Nestlé", monto: 6320500, docs: 24, last: "2026-05-09", freq: "Mensual" },
  { rut: "92.519.000-3", razon: "Watts S.A.", short: "Watts", monto: 5520000, docs: 22, last: "2026-05-08", freq: "Mensual" },
  { rut: "79.999.123-K", razon: "Panificadora Castaño", short: "Castaño", monto: 4810000, docs: 58, last: "2026-05-15", freq: "Diaria" },
  { rut: "76.300.111-2", razon: "Cecinas San Jorge", short: "San Jorge", monto: 4320000, docs: 19, last: "2026-05-07", freq: "Mensual" },
  { rut: "76.789.001-3", razon: "Aseo Industrial Virutex", short: "Virutex", monto: 1820000, docs: 8, last: "2026-04-29", freq: "Mensual" },
  { rut: "77.456.789-0", razon: "Comercial Tres Montes", short: "3 Montes", monto: 1640000, docs: 11, last: "2026-04-28", freq: "Mensual" },
];

// ---------- Comunas (Región Metropolitana sample) ----------
const COMUNAS = [
  { name: "Maipú", region: "RM", clients: 142, share: 18.4 },
  { name: "Puente Alto", region: "RM", clients: 121, share: 15.6 },
  { name: "La Florida", region: "RM", clients: 98, share: 12.7 },
  { name: "San Bernardo", region: "RM", clients: 76, share: 9.8 },
  { name: "Peñalolén", region: "RM", clients: 58, share: 7.5 },
  { name: "Quilicura", region: "RM", clients: 51, share: 6.6 },
  { name: "Ñuñoa", region: "RM", clients: 44, share: 5.7 },
  { name: "Pudahuel", region: "RM", clients: 39, share: 5.0 },
  { name: "Santiago", region: "RM", clients: 36, share: 4.6 },
  { name: "Otros", region: "RM", clients: 109, share: 14.1 },
];

// ---------- Monthly purchases (Neto, IVA, Exento) ----------
const MONTHS = ["Jun 25","Jul 25","Ago 25","Sep 25","Oct 25","Nov 25","Dic 25","Ene 26","Feb 26","Mar 26","Abr 26","May 26"];
const PURCHASES_MONTHLY = [
  { neto: 58200000, iva: 11058000, exento: 4200000 },
  { neto: 62400000, iva: 11856000, exento: 4500000 },
  { neto: 59800000, iva: 11362000, exento: 4100000 },
  { neto: 64200000, iva: 12198000, exento: 4600000 },
  { neto: 71500000, iva: 13585000, exento: 5100000 },
  { neto: 84800000, iva: 16112000, exento: 6200000 },
  { neto: 92100000, iva: 17499000, exento: 6800000 },
  { neto: 68900000, iva: 13091000, exento: 4900000 },
  { neto: 66200000, iva: 12578000, exento: 4700000 },
  { neto: 72800000, iva: 13832000, exento: 5200000 },
  { neto: 75100000, iva: 14269000, exento: 5400000 },
  { neto: 70200000, iva: 13338000, exento: 5000000 },
];

// ---------- Invoices ----------
const INVOICES = [
  { folio: "F-184201", rut: "96.591.040-9", razon: "Comercial CCU S.A.", emision: "2026-05-14", venc: "2026-06-13", neto: 1842000, iva: 349980, total: 2191980, tipo: "33" },
  { folio: "F-002910", rut: "91.041.000-8", razon: "Embotelladora Andina S.A.", emision: "2026-05-14", venc: "2026-06-13", neto: 1280400, iva: 243276, total: 1523676, tipo: "33" },
  { folio: "F-552014", rut: "92.011.000-3", razon: "Distribuidora Rabié Ltda.", emision: "2026-05-13", venc: "2026-06-12", neto: 928000, iva: 176320, total: 1104320, tipo: "33" },
  { folio: "F-118803", rut: "86.150.200-7", razon: "Carnes Lo Valledor SpA", emision: "2026-05-13", venc: "2026-05-28", neto: 2410500, iva: 458000, total: 2868500, tipo: "33" },
  { folio: "F-008720", rut: "79.999.123-K", razon: "Panificadora Castaño", emision: "2026-05-13", venc: "2026-05-20", neto: 198400, iva: 37696, total: 236096, tipo: "39" },
  { folio: "F-031290", rut: "76.124.890-1", razon: "Frutos del Maipo Ltda.", emision: "2026-05-12", venc: "2026-05-26", neto: 690200, iva: 0, total: 690200, tipo: "34" },
  { folio: "F-184170", rut: "96.591.040-9", razon: "Comercial CCU S.A.", emision: "2026-05-12", venc: "2026-06-11", neto: 2130000, iva: 404700, total: 2534700, tipo: "33" },
  { folio: "F-712334", rut: "78.500.000-5", razon: "Lácteos Soprole S.A.", emision: "2026-05-10", venc: "2026-06-09", neto: 482000, iva: 91580, total: 573580, tipo: "33" },
  { folio: "F-100245", rut: "96.502.530-0", razon: "Nestlé Chile S.A.", emision: "2026-05-09", venc: "2026-06-08", neto: 612000, iva: 116280, total: 728280, tipo: "33" },
  { folio: "F-441880", rut: "92.519.000-3", razon: "Watts S.A.", emision: "2026-05-08", venc: "2026-06-07", neto: 410000, iva: 77900, total: 487900, tipo: "33" },
  { folio: "F-008812", rut: "79.999.123-K", razon: "Panificadora Castaño", emision: "2026-05-08", venc: "2026-05-15", neto: 184200, iva: 35000, total: 219200, tipo: "39" },
  { folio: "F-118791", rut: "86.150.200-7", razon: "Carnes Lo Valledor SpA", emision: "2026-05-07", venc: "2026-05-22", neto: 1980000, iva: 376200, total: 2356200, tipo: "33" },
  { folio: "F-552002", rut: "92.011.000-3", razon: "Distribuidora Rabié Ltda.", emision: "2026-05-06", venc: "2026-06-05", neto: 845000, iva: 160550, total: 1005550, tipo: "33" },
  { folio: "F-300119", rut: "76.300.111-2", razon: "Cecinas San Jorge", emision: "2026-05-05", venc: "2026-06-04", neto: 1240000, iva: 235600, total: 1475600, tipo: "33" },
  { folio: "F-184022", rut: "96.591.040-9", razon: "Comercial CCU S.A.", emision: "2026-05-05", venc: "2026-06-04", neto: 1620000, iva: 307800, total: 1927800, tipo: "33" },
];

// ---------- Top productos compradas (desde líneas DTE) ----------
const TOP_PRODUCTS_COMPRA = [
  { desc: "Cerveza Cristal 1L", cant: 1840, monto: 4920000, prov: "CCU" },
  { desc: "Bebida Coca-Cola 1.5L", cant: 1620, monto: 3450000, prov: "Andina" },
  { desc: "Pulpa Posta Negra Kg", cant: 920, monto: 6840000, prov: "Lo Valledor" },
  { desc: "Pan Hallulla 1Kg", cant: 2150, monto: 2380000, prov: "Castaño" },
  { desc: "Leche Entera 1L Soprole", cant: 1240, monto: 1290000, prov: "Soprole" },
  { desc: "Plátanos Kg", cant: 980, monto: 1180000, prov: "Frutos Maipo" },
  { desc: "Yoghurt Sachet 1Kg", cant: 720, monto: 1080000, prov: "Watts" },
  { desc: "Vienesa Súper Cerdo Kg", cant: 410, monto: 1680000, prov: "San Jorge" },
  { desc: "Café Nescafé Tradición 170g", cant: 220, monto: 980000, prov: "Nestlé" },
  { desc: "Detergente Líquido 3L", cant: 180, monto: 720000, prov: "Virutex" },
];

// ---------- Products catalog (with quality flags) ----------
const PRODUCTS = [
  { cod: "7800001", nombre: "Pulpa Posta Negra Kg", cat: "Carnes", fam: "Vacuno", marca: "Lo Valledor", costo: 7200, precio: 9990, margen: 28, estado: "Activo", pesable: true, sinCosto: false, sinMarca: false, sinCat: false },
  { cod: "7800002", nombre: "Asado de Tira Kg", cat: "Carnes", fam: "Vacuno", marca: "Lo Valledor", costo: 8400, precio: 11990, margen: 30, estado: "Activo", pesable: true, sinCosto: false, sinMarca: false, sinCat: false },
  { cod: "7800003", nombre: "Vienesa Súper Cerdo Kg", cat: "Cecinas", fam: "Cerdo", marca: "San Jorge", costo: 4100, precio: 5990, margen: 32, estado: "Activo", pesable: true, sinCosto: false, sinMarca: false, sinCat: false },
  { cod: "7800010", nombre: "Cerveza Cristal 1L", cat: "Bebidas", fam: "Cerveza", marca: "Cristal", costo: 2680, precio: 3490, margen: 23, estado: "Activo", pesable: false, sinCosto: false, sinMarca: false, sinCat: false },
  { cod: "7800011", nombre: "Coca-Cola 1.5L", cat: "Bebidas", fam: "Gaseosa", marca: "Coca-Cola", costo: 1380, precio: 1990, margen: 31, estado: "Activo", pesable: false, sinCosto: false, sinMarca: false, sinCat: false },
  { cod: "7800020", nombre: "Pan Hallulla 1Kg", cat: "Panadería", fam: "Pan", marca: "Castaño", costo: 1100, precio: 1690, margen: 35, estado: "Activo", pesable: true, sinCosto: false, sinMarca: false, sinCat: false },
  { cod: "7800021", nombre: "Marraqueta 1Kg", cat: "Panadería", fam: "Pan", marca: "—", costo: 0, precio: 1690, margen: null, estado: "Activo", pesable: true, sinCosto: true, sinMarca: true, sinCat: false },
  { cod: "7800030", nombre: "Leche Entera 1L", cat: "Lácteos", fam: "Leche", marca: "Soprole", costo: 1040, precio: 1290, margen: 19, estado: "Activo", pesable: false, sinCosto: false, sinMarca: false, sinCat: false },
  { cod: "7800031", nombre: "Yoghurt Sachet 1Kg", cat: "Lácteos", fam: "Yogurt", marca: "Watts", costo: 1180, precio: 1690, margen: 30, estado: "Activo", pesable: false, sinCosto: false, sinMarca: false, sinCat: false },
  { cod: "7800040", nombre: "Plátano Kg", cat: "Frutas y Verduras", fam: "Fruta", marca: "—", costo: 890, precio: 1290, margen: 31, estado: "Activo", pesable: true, sinCosto: false, sinMarca: true, sinCat: false },
  { cod: "7800041", nombre: "Manzana Roja Kg", cat: "Frutas y Verduras", fam: "Fruta", marca: "—", costo: 0, precio: 1490, margen: null, estado: "Activo", pesable: true, sinCosto: true, sinMarca: true, sinCat: false },
  { cod: "7800050", nombre: "Detergente Líquido 3L", cat: "Aseo", fam: "Lavandería", marca: "Virutex", costo: 4900, precio: 6990, margen: 30, estado: "Activo", pesable: false, sinCosto: false, sinMarca: false, sinCat: false },
  { cod: "7800099", nombre: "VARIOS / GENERICO", cat: "—", fam: "—", marca: "—", costo: 0, precio: 0, margen: null, estado: "Activo", pesable: false, sinCosto: true, sinMarca: true, sinCat: true },
  { cod: "7800100", nombre: "Caña de Lomo Cerdo Kg", cat: "Carnes", fam: "Cerdo", marca: "Lo Valledor", costo: 5800, precio: 7990, margen: 27, estado: "Activo", pesable: true, sinCosto: false, sinMarca: false, sinCat: false },
  { cod: "7800101", nombre: "Pollo Entero Kg", cat: "Carnes", fam: "Pollo", marca: "—", costo: 0, precio: 3990, margen: null, estado: "Activo", pesable: true, sinCosto: true, sinMarca: true, sinCat: false },
  { cod: "9999900", nombre: "PROD-TEST-001", cat: "—", fam: "—", marca: "—", costo: 0, precio: 0, margen: null, estado: "Inactivo", pesable: false, sinCosto: true, sinMarca: true, sinCat: true },
];

const CATALOG_HEALTH = {
  total: 3284,
  activos: 2918,
  sinMarca: 642,
  sinCategoria: 218,
  sinCosto: 1106,
  pesables: 412,
  completitud: {
    "Nombre": 100,
    "Código": 100,
    "Categoría": 93,
    "Familia": 86,
    "Marca": 80,
    "Costo": 66,
    "Precio": 99,
    "Imagen": 12,
  },
};

// ---------- Inventory ----------
const INVENTORY_KPI = {
  stockTotal: 28412,
  productosNegativo: 47,
  sinMovimiento: 318,
  ajustes30d: 124,
  mermas30d: 38,
  bodegas: 2,
  productosStockCero: 1842, // suspicious -> trigger warning
};

const INVENTORY_MOVES = [
  { fecha: "2026-05-15 09:42", prod: "Pulpa Posta Negra Kg", bodega: "Local 1", antes: 42, despues: 38, tipo: "Venta" },
  { fecha: "2026-05-15 09:30", prod: "Cerveza Cristal 1L", bodega: "Local 1", antes: 180, despues: 174, tipo: "Venta" },
  { fecha: "2026-05-15 08:10", prod: "Vienesa Súper Cerdo Kg", bodega: "Bodega central", antes: 24, despues: 30, tipo: "Ingreso DTE" },
  { fecha: "2026-05-14 17:55", prod: "Manzana Roja Kg", bodega: "Local 1", antes: 18, despues: 12, tipo: "Merma" },
  { fecha: "2026-05-14 14:21", prod: "Pan Hallulla 1Kg", bodega: "Local 1", antes: 80, despues: 78, tipo: "Ajuste" },
  { fecha: "2026-05-14 11:00", prod: "Coca-Cola 1.5L", bodega: "Local 1", antes: 120, despues: 96, tipo: "Venta" },
  { fecha: "2026-05-14 09:30", prod: "Leche Entera 1L", bodega: "Local 1", antes: 60, despues: 80, tipo: "Ingreso DTE" },
  { fecha: "2026-05-13 19:10", prod: "Plátano Kg", bodega: "Local 1", antes: 22, despues: 18, tipo: "Merma" },
  { fecha: "2026-05-13 12:45", prod: "Yoghurt Sachet 1Kg", bodega: "Local 1", antes: 40, despues: 36, tipo: "Venta" },
  { fecha: "2026-05-13 09:00", prod: "Caña de Lomo Cerdo Kg", bodega: "Bodega central", antes: 0, despues: 20, tipo: "Ingreso DTE" },
];

// ---------- Reliability map ----------
const RELIABILITY = {
  compras:     { level: "reliable",   coverage: 96, issues: 2, lastSync: "2026-05-15 06:00" },
  proveedores: { level: "reliable",   coverage: 92, issues: 4, lastSync: "2026-05-15 06:00" },
  clientes:    { level: "partial",    coverage: 71, issues: 14, lastSync: "2026-05-14 22:00" },
  productos:   { level: "partial",    coverage: 58, issues: 28, lastSync: "2026-05-14 22:00" },
  inventario:  { level: "unreliable", coverage: 38, issues: 41, lastSync: "2026-05-13 12:00" },
  ventas:      { level: "unreliable", coverage: 8,  issues: 60, lastSync: "—" },
  caja:        { level: "partial",    coverage: 64, issues: 9,  lastSync: "2026-05-15 02:00" },
};

const DATA_QUALITY_ISSUES = [
  { mod: "productos",  sev: "high",   desc: "1.106 productos sin costo registrado",         action: "Cargar costos desde compras DTE recientes" },
  { mod: "productos",  sev: "med",    desc: "642 productos sin marca",                       action: "Normalizar marcas a partir del catálogo maestro" },
  { mod: "inventario", sev: "high",   desc: "1.842 productos con stock cero (sospechoso)",   action: "Validar exportación de stock desde POS local" },
  { mod: "inventario", sev: "high",   desc: "47 productos con stock negativo",               action: "Revisar movimientos manuales y ajustes recientes" },
  { mod: "clientes",   sev: "med",    desc: "Cliente genérico recibe 38% de las boletas",    action: "Excluir RUT 11.111.111-1 de indicadores reales" },
  { mod: "ventas",     sev: "high",   desc: "Tabla ventas con menos del 10% de cobertura",   action: "Activar exportación diaria desde POS hacia ETL" },
  { mod: "caja",       sev: "med",    desc: "3 aperturas abiertas > 24h",                    action: "Forzar cierre y revisar con cajero responsable" },
];

// Object.assign(window, …) at the end to share across babel scripts
Object.assign(window, {
  I18N, COMPANIES, SUPPLIERS, COMUNAS, MONTHS, PURCHASES_MONTHLY,
  INVOICES, TOP_PRODUCTS_COMPRA, PRODUCTS, CATALOG_HEALTH,
  INVENTORY_KPI, INVENTORY_MOVES, RELIABILITY, DATA_QUALITY_ISSUES,
});
