informe-comercial-alfa/app/lib/metas.js

35 lines
1.1 KiB
JavaScript
Raw Normal View History

2026-09-21 23:11:53 +00:00
import db from "./db";
// Metas mensuales — SQLite (Etapa 4). Clave: correo del vendedor, resuelto en vivo
// contra systemusers (no hay una lista fija de correos confirmados — ver migration.md §11.5).
// La tabla arranca vacía: un administrador las carga desde /admin/metas.
export function getMetas() {
const rows = db.prepare("SELECT email, monto FROM metas").all();
const map = {};
rows.forEach((r) => {
map[r.email] = r.monto;
});
return map;
}
export function getMetaGlobal() {
const row = db.prepare("SELECT valor FROM config WHERE clave = 'meta_global'").get();
if (row) return Number(row.valor);
return Object.values(getMetas()).reduce((a, v) => a + v, 0);
}
export function setMeta(email, monto) {
db.prepare(
`INSERT INTO metas (email, monto, updated_at) VALUES (?, ?, datetime('now'))
ON CONFLICT(email) DO UPDATE SET monto = excluded.monto, updated_at = excluded.updated_at`
).run(email.toLowerCase(), monto);
}
export function setMetaGlobal(monto) {
db.prepare(
`INSERT INTO config (clave, valor) VALUES ('meta_global', ?)
ON CONFLICT(clave) DO UPDATE SET valor = excluded.valor`
).run(String(monto));
}