Feature: Order tracking with IDs, 30% deposit calculation, PayID support, and post-submission instructions

This commit is contained in:
Quintine committed 2026-05-20 13:48:27 +10:00
1 parent 108184ba68
commit fd1d7c0025
12 files changed
+621 -116

No files matched your search

+14 -9
View File
@@ -25,16 +25,21 @@ model StockItem {
}
model Order {
id Int @id @default(autoincrement())
name String
phone String
totalWeight Float
estimatedTotal Float
timestamp DateTime @default(now())
items String // Storing items as a JSON string for simplicity with SQLite
id Int @id @default(autoincrement())
orderNumber String?
name String
phone String
items String
totalWeight Float
estimatedTotal Float
status String @default("Pending")
timestamp DateTime @default(now())
}
model Config {
id Int @id @default(autoincrement())
adminCode String @default("1234")
id Int @id @default(1)
adminCode String @default("1234")
finalDepositDate String?
cookDay String?
payIdInfo String? @default("Your PayID Here")
}
+34 -4
View File
@@ -36,13 +36,21 @@ app.get('/api/data', async (req, res) => {
app.post('/api/orders', async (req, res) => {
try {
const { name, phone, items, totalWeight, estimatedTotal } = req.body;
// Generate simple order number
const lastOrder = await prisma.order.findFirst({ orderBy: { id: 'desc' } });
const nextId = (lastOrder?.id || 0) + 1;
const orderNumber = `#${nextId + 1000}`;
const order = await prisma.order.create({
data: {
orderNumber,
name,
phone,
totalWeight,
estimatedTotal,
items: JSON.stringify(items)
items: JSON.stringify(items),
status: 'Pending'
}
});
res.json(order);
@@ -52,6 +60,22 @@ app.post('/api/orders', async (req, res) => {
}
});
// Update Order Status
app.patch('/api/orders/:id/status', async (req, res) => {
try {
const { id } = req.params;
const { status } = req.body;
const order = await prisma.order.update({
where: { id: parseInt(id) },
data: { status }
});
res.json(order);
} catch (error) {
console.error(error);
res.status(500).json({ error: 'Failed to update order status' });
}
});
// Delete an order
app.delete('/api/orders/:id', async (req, res) => {
try {
@@ -113,15 +137,21 @@ app.delete('/api/stock/:id', async (req, res) => {
// Update Config
app.post('/api/config', async (req, res) => {
try {
const { adminCode } = req.body;
const { adminCode, finalDepositDate, cookDay, payIdInfo } = req.body;
const config = await prisma.config.findFirst();
const data: any = {};
if (adminCode !== undefined) data.adminCode = adminCode;
if (finalDepositDate !== undefined) data.finalDepositDate = finalDepositDate;
if (cookDay !== undefined) data.cookDay = cookDay;
if (payIdInfo !== undefined) data.payIdInfo = payIdInfo;
if (config) {
await prisma.config.update({
where: { id: config.id },
data: { adminCode }
data
});
} else {
await prisma.config.create({ data: { adminCode } });
await prisma.config.create({ data });
}
res.sendStatus(200);
} catch (error) {