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