135 lines
5.7 KiB
JavaScript
135 lines
5.7 KiB
JavaScript
const db = require('./backend/db-sqlite');
|
|||
|
|
async function fix() {
|
||
|
|
const fixes = [
|
||
|
|
// Missing tables
|
||
|
|
`CREATE TABLE IF NOT EXISTS supplier_payment_infos (
|
||
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||
|
|
supplier_id INTEGER,
|
||
|
|
bank_name TEXT DEFAULT '',
|
||
|
|
account_name TEXT DEFAULT '',
|
||
|
|
account_number TEXT DEFAULT '',
|
||
|
|
is_default INTEGER DEFAULT 0,
|
||
|
|
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
|
||
|
|
)`,
|
||
|
|
`CREATE TABLE IF NOT EXISTS customer_payment_infos (
|
||
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||
|
|
customer_id INTEGER,
|
||
|
|
bank_name TEXT DEFAULT '',
|
||
|
|
account_name TEXT DEFAULT '',
|
||
|
|
account_number TEXT DEFAULT '',
|
||
|
|
is_default INTEGER DEFAULT 0,
|
||
|
|
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
|
||
|
|
)`,
|
||
|
|
`CREATE TABLE IF NOT EXISTS logistics_contacts (
|
||
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||
|
|
logistics_company_id INTEGER,
|
||
|
|
name TEXT DEFAULT '',
|
||
|
|
phone TEXT DEFAULT '',
|
||
|
|
email TEXT DEFAULT '',
|
||
|
|
position TEXT DEFAULT '',
|
||
|
|
is_primary INTEGER DEFAULT 0,
|
||
|
|
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
|
||
|
|
)`,
|
||
|
|
`CREATE TABLE IF NOT EXISTS logistics_records (
|
||
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||
|
|
logistics_company_id INTEGER,
|
||
|
|
order_no TEXT DEFAULT '',
|
||
|
|
amount REAL DEFAULT 0,
|
||
|
|
status TEXT DEFAULT '',
|
||
|
|
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
|
||
|
|
)`,
|
||
|
|
`CREATE TABLE IF NOT EXISTS supplier_contacts (
|
||
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||
|
|
supplier_id INTEGER,
|
||
|
|
name TEXT DEFAULT '',
|
||
|
|
phone TEXT DEFAULT '',
|
||
|
|
email TEXT DEFAULT '',
|
||
|
|
position TEXT DEFAULT '',
|
||
|
|
is_primary INTEGER DEFAULT 0,
|
||
|
|
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
|
||
|
|
)`,
|
||
|
|
`CREATE TABLE IF NOT EXISTS customer_contacts (
|
||
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||
|
|
customer_id INTEGER,
|
||
|
|
name TEXT DEFAULT '',
|
||
|
|
phone TEXT DEFAULT '',
|
||
|
|
email TEXT DEFAULT '',
|
||
|
|
position TEXT DEFAULT '',
|
||
|
|
is_primary INTEGER DEFAULT 0,
|
||
|
|
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
|
||
|
|
)`,
|
||
|
|
|
||
|
|
// Missing columns
|
||
|
|
"ALTER TABLE purchase_orders ADD COLUMN remark TEXT DEFAULT ''",
|
||
|
|
"ALTER TABLE purchase_orders ADD COLUMN order_code TEXT DEFAULT ''",
|
||
|
|
"ALTER TABLE purchase_orders ADD COLUMN supplier_name TEXT DEFAULT ''",
|
||
|
|
"ALTER TABLE payment_plans ADD COLUMN remark TEXT DEFAULT ''",
|
||
|
|
"ALTER TABLE return_records ADD COLUMN code TEXT DEFAULT ''",
|
||
|
|
"ALTER TABLE return_records ADD COLUMN product_name TEXT DEFAULT ''",
|
||
|
|
"ALTER TABLE return_records ADD COLUMN quantity REAL DEFAULT 0",
|
||
|
|
"ALTER TABLE return_records ADD COLUMN unit TEXT DEFAULT ''",
|
||
|
|
"ALTER TABLE return_records ADD COLUMN unit_price REAL DEFAULT 0",
|
||
|
|
"ALTER TABLE return_records ADD COLUMN amount REAL DEFAULT 0",
|
||
|
|
"ALTER TABLE returns ADD COLUMN reason TEXT DEFAULT ''",
|
||
|
|
"ALTER TABLE returns ADD COLUMN status TEXT DEFAULT 'pending'",
|
||
|
|
"ALTER TABLE returns ADD COLUMN code TEXT DEFAULT ''",
|
||
|
|
|
||
|
|
// Projects - add missing columns
|
||
|
|
"ALTER TABLE projects ADD COLUMN code TEXT DEFAULT ''",
|
||
|
|
"ALTER TABLE projects ADD COLUMN status TEXT DEFAULT 'active'",
|
||
|
|
"ALTER TABLE projects ADD COLUMN description TEXT DEFAULT ''",
|
||
|
|
"ALTER TABLE projects ADD COLUMN start_date TEXT DEFAULT ''",
|
||
|
|
"ALTER TABLE projects ADD COLUMN end_date TEXT DEFAULT ''",
|
||
|
|
"ALTER TABLE projects ADD COLUMN manager TEXT DEFAULT ''",
|
||
|
|
"ALTER TABLE projects ADD COLUMN budget REAL DEFAULT 0",
|
||
|
|
|
||
|
|
// Exchange rates - add missing columns
|
||
|
|
"ALTER TABLE exchange_rates ADD COLUMN currency TEXT DEFAULT ''",
|
||
|
|
"ALTER TABLE exchange_rates ADD COLUMN rate REAL DEFAULT 1",
|
||
|
|
"ALTER TABLE exchange_rates ADD COLUMN date TEXT DEFAULT ''",
|
||
|
|
"ALTER TABLE exchange_rates ADD COLUMN source TEXT DEFAULT ''",
|
||
|
|
|
||
|
|
// Budget projects - add missing columns
|
||
|
|
"ALTER TABLE budget_projects ADD COLUMN name TEXT DEFAULT ''",
|
||
|
|
"ALTER TABLE budget_projects ADD COLUMN status TEXT DEFAULT 'draft'",
|
||
|
|
"ALTER TABLE budget_projects ADD COLUMN total_amount REAL DEFAULT 0",
|
||
|
|
"ALTER TABLE budget_projects ADD COLUMN description TEXT DEFAULT ''",
|
||
|
|
"ALTER TABLE budget_projects ADD COLUMN created_by INTEGER",
|
||
|
|
"ALTER TABLE budget_projects ADD COLUMN version TEXT DEFAULT '1.0'",
|
||
|
|
|
||
|
|
// Customers - add missing columns
|
||
|
|
"ALTER TABLE customers ADD COLUMN type TEXT DEFAULT ''",
|
||
|
|
"ALTER TABLE customers ADD COLUMN email TEXT DEFAULT ''",
|
||
|
|
"ALTER TABLE customers ADD COLUMN address TEXT DEFAULT ''",
|
||
|
|
"ALTER TABLE customers ADD COLUMN contact TEXT DEFAULT ''",
|
||
|
|
"ALTER TABLE customers ADD COLUMN phone TEXT DEFAULT ''",
|
||
|
|
"ALTER TABLE customers ADD COLUMN remark TEXT DEFAULT ''",
|
||
|
|
"ALTER TABLE customers ADD COLUMN status TEXT DEFAULT 'active'",
|
||
|
|
|
||
|
|
// Suppliers - add missing columns
|
||
|
|
"ALTER TABLE suppliers ADD COLUMN type TEXT DEFAULT ''",
|
||
|
|
"ALTER TABLE suppliers ADD COLUMN email TEXT DEFAULT ''",
|
||
|
|
"ALTER TABLE suppliers ADD COLUMN address TEXT DEFAULT ''",
|
||
|
|
"ALTER TABLE suppliers ADD COLUMN contact TEXT DEFAULT ''",
|
||
|
|
"ALTER TABLE suppliers ADD COLUMN phone TEXT DEFAULT ''",
|
||
|
|
"ALTER TABLE suppliers ADD COLUMN remark TEXT DEFAULT ''",
|
||
|
|
"ALTER TABLE suppliers ADD COLUMN status TEXT DEFAULT 'active'",
|
||
|
|
];
|
||
|
|
|
||
|
|
for (const sql of fixes) {
|
||
|
|
try {
|
||
|
|
await db.query(sql);
|
||
|
|
console.log('OK:', sql.substring(0, 70));
|
||
|
|
} catch(e) {
|
||
|
|
const msg = e.message || '';
|
||
|
|
if (msg.includes('duplicate') || msg.includes('already exists')) {
|
||
|
|
console.log('SKIP:', sql.substring(0, 70));
|
||
|
|
} else {
|
||
|
|
console.log('ERR:', msg.substring(0, 100));
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
console.log('\nAll remaining fixes applied!');
|
||
|
|
process.exit();
|
||
|
|
}
|
||
|
|
fix();
|