const db = require('./backend/db-sqlite'); async function fix() { const fixes = [ // logistics_companies - add missing columns "ALTER TABLE logistics_companies ADD COLUMN code TEXT DEFAULT ''", "ALTER TABLE logistics_companies ADD COLUMN status TEXT DEFAULT 'active'", "ALTER TABLE logistics_companies ADD COLUMN type TEXT DEFAULT ''", "ALTER TABLE logistics_companies ADD COLUMN country TEXT DEFAULT ''", // payment_plans - add missing columns "ALTER TABLE payment_plans ADD COLUMN planned_date TEXT DEFAULT ''", "ALTER TABLE payment_plans ADD COLUMN actual_date TEXT DEFAULT ''", "ALTER TABLE payment_plans ADD COLUMN description TEXT DEFAULT ''", "ALTER TABLE payment_plans ADD COLUMN status TEXT DEFAULT 'pending'", "ALTER TABLE payment_plans ADD COLUMN name TEXT DEFAULT ''", "ALTER TABLE payment_plans ADD COLUMN amount REAL DEFAULT 0", "ALTER TABLE payment_plans ADD COLUMN payee TEXT DEFAULT ''", "ALTER TABLE payment_plans ADD COLUMN payer TEXT DEFAULT ''", "ALTER TABLE payment_plans ADD COLUMN currency TEXT DEFAULT 'CNY'", // return_records table `CREATE TABLE IF NOT EXISTS return_records ( id INTEGER PRIMARY KEY AUTOINCREMENT, return_id INTEGER, product_name TEXT DEFAULT '', quantity REAL DEFAULT 0, unit TEXT DEFAULT '', unit_price REAL DEFAULT 0, amount REAL DEFAULT 0, remark TEXT DEFAULT '', created_at DATETIME DEFAULT CURRENT_TIMESTAMP )`, // returns - add missing columns "ALTER TABLE returns ADD COLUMN total_amount REAL DEFAULT 0", "ALTER TABLE returns ADD COLUMN items TEXT DEFAULT '[]'", "ALTER TABLE returns ADD COLUMN return_date TEXT DEFAULT ''", "ALTER TABLE returns ADD COLUMN type TEXT DEFAULT ''", // payment_nodes - add missing columns "ALTER TABLE payment_nodes ADD COLUMN project_id INTEGER", "ALTER TABLE payment_nodes ADD COLUMN planned_amount REAL DEFAULT 0", "ALTER TABLE payment_nodes ADD COLUMN actual_amount REAL DEFAULT 0", "ALTER TABLE payment_nodes ADD COLUMN status TEXT DEFAULT 'pending'", "ALTER TABLE payment_nodes ADD COLUMN planned_date TEXT DEFAULT ''", "ALTER TABLE payment_nodes ADD COLUMN actual_date TEXT DEFAULT ''", "ALTER TABLE payment_nodes ADD COLUMN description TEXT DEFAULT ''", "ALTER TABLE payment_nodes ADD COLUMN contract_id INTEGER", "ALTER TABLE payment_nodes ADD COLUMN payment_request_id INTEGER", // payment_records - add missing columns "ALTER TABLE payment_records ADD COLUMN project_id INTEGER", "ALTER TABLE payment_records ADD COLUMN payment_node_id INTEGER", "ALTER TABLE payment_records ADD COLUMN amount REAL DEFAULT 0", "ALTER TABLE payment_records ADD COLUMN amount_cny REAL DEFAULT 0", "ALTER TABLE payment_records ADD COLUMN currency TEXT DEFAULT 'CNY'", "ALTER TABLE payment_records ADD COLUMN exchange_rate REAL DEFAULT 1", "ALTER TABLE payment_records ADD COLUMN payee TEXT DEFAULT ''", "ALTER TABLE payment_records ADD COLUMN payer TEXT DEFAULT ''", "ALTER TABLE payment_records ADD COLUMN method TEXT DEFAULT ''", "ALTER TABLE payment_records ADD COLUMN status TEXT DEFAULT 'completed'", "ALTER TABLE payment_records ADD COLUMN remark TEXT DEFAULT ''", "ALTER TABLE payment_records ADD COLUMN payment_date TEXT DEFAULT ''", "ALTER TABLE payment_records ADD COLUMN voucher_no TEXT DEFAULT ''", // finance_stats - ensure table `CREATE TABLE IF NOT EXISTS finance_stats ( id INTEGER PRIMARY KEY AUTOINCREMENT, type TEXT DEFAULT '', amount REAL DEFAULT 0, month TEXT DEFAULT '', year INTEGER DEFAULT 0, created_at DATETIME DEFAULT CURRENT_TIMESTAMP )`, // purchase_orders - add more missing columns "ALTER TABLE purchase_orders ADD COLUMN items TEXT DEFAULT '[]'", "ALTER TABLE purchase_orders ADD COLUMN total_amount REAL DEFAULT 0", "ALTER TABLE purchase_orders ADD COLUMN status TEXT DEFAULT 'pending'", "ALTER TABLE purchase_orders ADD COLUMN order_date TEXT DEFAULT ''", "ALTER TABLE purchase_orders ADD COLUMN description TEXT DEFAULT ''", "ALTER TABLE purchase_orders ADD COLUMN supplier_name TEXT DEFAULT ''", "ALTER TABLE purchase_orders ADD COLUMN created_by INTEGER", // budget_quotations - add missing columns "ALTER TABLE budget_quotations ADD COLUMN project_id INTEGER", "ALTER TABLE budget_quotations ADD COLUMN status TEXT DEFAULT 'draft'", "ALTER TABLE budget_quotations ADD COLUMN total_amount REAL DEFAULT 0", "ALTER TABLE budget_quotations ADD COLUMN items TEXT DEFAULT '[]'", "ALTER TABLE budget_quotations ADD COLUMN description TEXT DEFAULT ''", "ALTER TABLE budget_quotations ADD COLUMN created_by INTEGER", "ALTER TABLE budget_quotations ADD COLUMN name TEXT DEFAULT ''", "ALTER TABLE budget_quotations ADD COLUMN version TEXT DEFAULT '1.0'", ]; 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();