Files
yunhaifinance/fix-all-remaining.js
T

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();