Files
yunhaifinance/company-finance-system/backend/test-finance-simple.js
T

134 lines
5.8 KiB
JavaScript

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