94 lines
3.5 KiB
JavaScript
94 lines
3.5 KiB
JavaScript
const db = require('./backend/db-sqlite');
|
|||
|
|
async function fix() {
|
||
|
|
const fixes = [
|
||
|
|
// logistics_companies
|
||
|
|
"ALTER TABLE logistics_companies ADD COLUMN quotation_description TEXT DEFAULT ''",
|
||
|
|
|
||
|
|
// return_records
|
||
|
|
"ALTER TABLE return_records ADD COLUMN project_id INTEGER",
|
||
|
|
"ALTER TABLE return_records ADD COLUMN product_id INTEGER",
|
||
|
|
"ALTER TABLE return_records ADD COLUMN return_id INTEGER",
|
||
|
|
|
||
|
|
// returns
|
||
|
|
"ALTER TABLE returns ADD COLUMN project_name TEXT DEFAULT ''",
|
||
|
|
|
||
|
|
// payment_nodes - check route for required columns
|
||
|
|
"ALTER TABLE payment_nodes ADD COLUMN node_name TEXT DEFAULT ''",
|
||
|
|
"ALTER TABLE payment_nodes ADD COLUMN name TEXT DEFAULT ''",
|
||
|
|
"ALTER TABLE payment_nodes ADD COLUMN amount REAL DEFAULT 0",
|
||
|
|
"ALTER TABLE payment_nodes ADD COLUMN percentage REAL DEFAULT 0",
|
||
|
|
"ALTER TABLE payment_nodes ADD COLUMN planned_amount_cny REAL DEFAULT 0",
|
||
|
|
"ALTER TABLE payment_nodes ADD COLUMN actual_amount_cny REAL DEFAULT 0",
|
||
|
|
"ALTER TABLE payment_nodes ADD COLUMN currency TEXT DEFAULT 'CNY'",
|
||
|
|
"ALTER TABLE payment_nodes ADD COLUMN exchange_rate REAL DEFAULT 1",
|
||
|
|
"ALTER TABLE payment_nodes ADD COLUMN payee TEXT DEFAULT ''",
|
||
|
|
"ALTER TABLE payment_nodes ADD COLUMN category TEXT DEFAULT ''",
|
||
|
|
|
||
|
|
// payment_records
|
||
|
|
"ALTER TABLE payment_records ADD COLUMN node_id INTEGER",
|
||
|
|
"ALTER TABLE payment_records ADD COLUMN request_id INTEGER",
|
||
|
|
"ALTER TABLE payment_records ADD COLUMN payment_name TEXT DEFAULT ''",
|
||
|
|
"ALTER TABLE payment_records ADD COLUMN category TEXT DEFAULT ''",
|
||
|
|
|
||
|
|
// logistics bank accounts table
|
||
|
|
`CREATE TABLE IF NOT EXISTS logistics_bank_accounts (
|
||
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||
|
|
logistics_company_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
|
||
|
|
)`,
|
||
|
|
|
||
|
|
// logistics orders table
|
||
|
|
`CREATE TABLE IF NOT EXISTS logistics_orders (
|
||
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||
|
|
logistics_company_id INTEGER,
|
||
|
|
order_code TEXT DEFAULT '',
|
||
|
|
project_id INTEGER,
|
||
|
|
origin TEXT DEFAULT '',
|
||
|
|
destination TEXT DEFAULT '',
|
||
|
|
weight REAL DEFAULT 0,
|
||
|
|
freight_amount REAL DEFAULT 0,
|
||
|
|
freight_currency TEXT DEFAULT 'CNY',
|
||
|
|
status TEXT DEFAULT 'pending',
|
||
|
|
order_date TEXT DEFAULT '',
|
||
|
|
remark TEXT DEFAULT '',
|
||
|
|
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
||
|
|
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
|
||
|
|
)`,
|
||
|
|
|
||
|
|
// logistics freight payments
|
||
|
|
`CREATE TABLE IF NOT EXISTS logistics_freight_payments (
|
||
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||
|
|
logistics_order_id INTEGER,
|
||
|
|
amount REAL DEFAULT 0,
|
||
|
|
amount_cny REAL DEFAULT 0,
|
||
|
|
currency TEXT DEFAULT 'CNY',
|
||
|
|
exchange_rate REAL DEFAULT 1,
|
||
|
|
payment_date TEXT DEFAULT '',
|
||
|
|
status TEXT DEFAULT 'pending',
|
||
|
|
remark TEXT DEFAULT '',
|
||
|
|
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
|
||
|
|
)`,
|
||
|
|
];
|
||
|
|
|
||
|
|
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('\nFinal fixes applied!');
|
||
|
|
process.exit();
|
||
|
|
}
|
||
|
|
fix();
|