const db = require('./db-sqlite'); // 测试报销申请功能 async function testReimbursements() { console.log('=== 测试报销申请功能 ==='); try { // 测试创建公司支出报销 console.log('1. 测试创建公司支出报销'); const companyResult = await db.query( `INSERT INTO reimbursements (user_id, project_id, amount, currency, amount_cny, reason, reimbursement_date, reimbursement_code, status, applicant, expense_type, detail_items, attachments) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`, [1, null, 1000, 'CNY', 1000, '测试公司报销', new Date().toISOString().split('T')[0], 'REIM' + Date.now(), 'pending', '测试申请人', 'company', JSON.stringify([{ description: '测试明细', amount: 1000, category: 'general_operations' }]), JSON.stringify([])] ); console.log('✓ 公司支出报销创建成功'); // 测试创建项目支出报销 console.log('2. 测试创建项目支出报销'); const projectResult = await db.query( `INSERT INTO reimbursements (user_id, project_id, amount, currency, amount_cny, reason, reimbursement_date, reimbursement_code, status, applicant, expense_type, detail_items, attachments) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`, [1, 1, 1000, 'CNY', 1000, '测试项目报销', new Date().toISOString().split('T')[0], 'REIM' + Date.now(), 'pending', '测试申请人', 'project', JSON.stringify([{ description: '测试明细', amount: 1000, category: 'accommodation' }]), JSON.stringify([])] ); console.log('✓ 项目支出报销创建成功'); // 测试查询报销列表 console.log('3. 测试查询报销列表'); const listResult = await db.query('SELECT * FROM reimbursements ORDER BY created_at DESC LIMIT 5'); console.log('✓ 报销列表查询成功,共', listResult.rows.length, '条记录'); // 测试撤回功能 if (listResult.rows.length > 0) { console.log('4. 测试撤回功能'); const reimbursementId = listResult.rows[0].id; await db.query('UPDATE reimbursements SET status = ? WHERE id = ?', ['withdrawn', reimbursementId]); console.log('✓ 报销撤回成功'); } } catch (error) { console.error('✗ 测试失败:', error.message); } } // 测试付款申请功能 async function testPaymentRequests() { console.log('\n=== 测试付款申请功能 ==='); try { // 测试创建付款申请 console.log('1. 测试创建付款申请'); const result = await db.query( `INSERT INTO payment_requests (request_code, applicant, payee, bank_account, bank_name, amount, amount_cny, currency, payment_date, reason, detail_items, attachments, status) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`, ['PAY' + Date.now(), '测试申请人', '测试收款人', '1234567890', '测试银行', 1000, 1000, 'CNY', new Date().toISOString().split('T')[0], '测试付款', JSON.stringify([{ description: '测试明细', amount: 1000, category: 'general_operations' }]), JSON.stringify([]), 'pending'] ); console.log('✓ 付款申请创建成功'); // 测试查询付款申请列表 console.log('2. 测试查询付款申请列表'); const listResult = await db.query('SELECT * FROM payment_requests ORDER BY created_at DESC LIMIT 5'); console.log('✓ 付款申请列表查询成功,共', listResult.rows.length, '条记录'); } catch (error) { console.error('✗ 测试失败:', error.message); } } // 测试核销申请功能 async function testVerifications() { console.log('\n=== 测试核销申请功能 ==='); try { // 测试创建核销申请 console.log('1. 测试创建核销申请'); const result = await db.query( `INSERT INTO verifications (verification_code, applicant, advance_code, advance_amount, amount, amount_cny, currency, verification_date, reason, detail_items, attachments, status) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`, ['VER' + Date.now(), '测试申请人', 'ADV20240101001', 1000, 800, 800, 'CNY', new Date().toISOString().split('T')[0], '测试核销', JSON.stringify([{ description: '测试明细', amount: 800, category: 'general_operations' }]), JSON.stringify([]), 'pending'] ); console.log('✓ 核销申请创建成功'); // 测试查询核销申请列表 console.log('2. 测试查询核销申请列表'); const listResult = await db.query('SELECT * FROM verifications ORDER BY created_at DESC LIMIT 5'); console.log('✓ 核销申请列表查询成功,共', listResult.rows.length, '条记录'); } catch (error) { console.error('✗ 测试失败:', error.message); } } // 测试支出分类 async function testExpenseCategories() { console.log('\n=== 测试支出分类 ==='); try { // 测试项目支出分类 console.log('1. 测试项目支出分类'); const projectCategories = [ '住宿', '餐饮', '加油', '零散材料', '客户关系', '分包关系', 'EDL关系', '额外施工', '其他' ]; console.log('✓ 项目支出分类:', projectCategories.join(', ')); // 测试公司支出分类 console.log('2. 测试公司支出分类'); const companyCategories = [ '通用运营(房租/耗材)', '交通通勤', '业扩营销', '电力系统关系', '员工福利', '快递物流', '其他' ]; console.log('✓ 公司支出分类:', companyCategories.join(', ')); } catch (error) { console.error('✗ 测试失败:', error.message); } } // 运行所有测试 async function runAllTests() { console.log('开始测试轻远电力老挝ERP财务功能...\n'); await testExpenseCategories(); await testReimbursements(); await testPaymentRequests(); await testVerifications(); console.log('\n=== 测试完成 ==='); console.log('所有功能测试已完成,请检查测试结果。'); // 关闭数据库连接 db.close(); } // 运行测试 runAllTests();