Files
ranaze-pos/server/services.js
T
2026-05-05 15:47:17 +00:00

36 lines
1.1 KiB
JavaScript

import { defaultMenu, defaultSettings } from "./defaults.js";
import { MenuItem } from "./models/MenuItem.js";
import { Order } from "./models/Order.js";
export function getSettings() {
return defaultSettings;
}
export async function ensureSeedMenu() {
const count = await MenuItem.countDocuments();
if (count === 0) {
await MenuItem.insertMany(defaultMenu);
}
}
export async function resetMenuToDefaults() {
await MenuItem.deleteMany({});
await MenuItem.insertMany(defaultMenu);
return MenuItem.find().sort({ category: 1, name: 1 });
}
export async function nextOrderNumber() {
const latest = await Order.findOne().sort({ number: -1 }).lean();
return (latest?.number ?? 1000) + 1;
}
export function computeOrderTotal(lines, settings = defaultSettings) {
return lines.reduce((sum, line) => {
const sizeDelta = settings.sizeOptions.find((option) => option.name === line.size)?.delta ?? 0;
const toppings = line.toppings.reduce((toppingSum, toppingName) => {
return toppingSum + (settings.toppings.find((item) => item.name === toppingName)?.price ?? 0);
}, 0);
return sum + line.basePrice + sizeDelta + toppings;
}, 0);
}