91 lines
3.6 KiB
JavaScript
91 lines
3.6 KiB
JavaScript
const db = require('./backend/db-sqlite');
|
|
async function fix() {
|
|
const fixes = [
|
|
// Customers table
|
|
"ALTER TABLE customers ADD COLUMN is_default INTEGER DEFAULT 0",
|
|
"ALTER TABLE customers ADD COLUMN category TEXT DEFAULT ''",
|
|
"ALTER TABLE customers ADD COLUMN remark TEXT DEFAULT ''",
|
|
// Purchase orders
|
|
"ALTER TABLE purchase_orders ADD COLUMN supplier_country TEXT DEFAULT ''",
|
|
"ALTER TABLE purchase_orders ADD COLUMN supplier_contact TEXT DEFAULT ''",
|
|
"ALTER TABLE purchase_orders ADD COLUMN supplier_phone TEXT DEFAULT ''",
|
|
// Payment plans
|
|
"ALTER TABLE payment_plans ADD COLUMN stage TEXT DEFAULT ''",
|
|
"ALTER TABLE payment_plans ADD COLUMN payment_date TEXT DEFAULT ''",
|
|
"ALTER TABLE payment_plans ADD COLUMN status TEXT DEFAULT 'pending'",
|
|
// Products
|
|
"ALTER TABLE products ADD COLUMN model TEXT DEFAULT ''",
|
|
"ALTER TABLE products ADD COLUMN brand TEXT DEFAULT ''",
|
|
"ALTER TABLE products ADD COLUMN specification TEXT DEFAULT ''",
|
|
"ALTER TABLE products ADD COLUMN category_id INTEGER",
|
|
"ALTER TABLE products ADD COLUMN unit TEXT DEFAULT '个'",
|
|
"ALTER TABLE products ADD COLUMN description TEXT DEFAULT ''",
|
|
// Create missing tables
|
|
`CREATE TABLE IF NOT EXISTS purchase_requests (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
title TEXT NOT NULL,
|
|
amount REAL DEFAULT 0,
|
|
currency TEXT DEFAULT 'CNY',
|
|
status TEXT DEFAULT 'pending',
|
|
description TEXT DEFAULT '',
|
|
requester TEXT DEFAULT '',
|
|
department TEXT DEFAULT '',
|
|
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
|
|
)`,
|
|
`CREATE TABLE IF NOT EXISTS category_tree (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
name TEXT NOT NULL,
|
|
parent_id INTEGER,
|
|
level INTEGER DEFAULT 0,
|
|
sort_order INTEGER DEFAULT 0,
|
|
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
|
|
)`,
|
|
`CREATE TABLE IF NOT EXISTS payment_records (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
payment_plan_id INTEGER,
|
|
amount REAL DEFAULT 0,
|
|
currency TEXT DEFAULT 'CNY',
|
|
payment_method TEXT DEFAULT '',
|
|
payment_date TEXT DEFAULT '',
|
|
status TEXT DEFAULT 'pending',
|
|
remark TEXT DEFAULT '',
|
|
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
|
|
)`,
|
|
`CREATE TABLE IF NOT EXISTS payment_nodes (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
project_id INTEGER,
|
|
name TEXT NOT NULL,
|
|
amount REAL DEFAULT 0,
|
|
currency TEXT DEFAULT 'CNY',
|
|
planned_date TEXT DEFAULT '',
|
|
actual_date TEXT DEFAULT '',
|
|
status TEXT DEFAULT 'pending',
|
|
remark TEXT DEFAULT '',
|
|
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
|
|
)`,
|
|
// Reimbursements
|
|
"ALTER TABLE reimbursements ADD COLUMN description TEXT DEFAULT ''",
|
|
"ALTER TABLE reimbursements ADD COLUMN applicant TEXT DEFAULT ''",
|
|
"ALTER TABLE reimbursements ADD COLUMN department TEXT DEFAULT ''",
|
|
// Budget projects
|
|
"ALTER TABLE budget_projects ADD COLUMN status TEXT DEFAULT 'draft'",
|
|
"ALTER TABLE budget_projects ADD COLUMN description TEXT DEFAULT ''",
|
|
];
|
|
|
|
for (const sql of fixes) {
|
|
try { await db.query(sql); console.log('OK:', sql.substring(0, 80)); }
|
|
catch(e) {
|
|
const msg = e.message || '';
|
|
if (msg.includes('duplicate') || msg.includes('already exists')) {
|
|
console.log('SKIP:', sql.substring(0, 80));
|
|
} else {
|
|
console.log('ERR:', msg.substring(0, 100));
|
|
}
|
|
}
|
|
}
|
|
process.exit();
|
|
}
|
|
fix(); |