BIZ8-8 增强财务台账项目扫读

这个提交包含在:
2026-05-13 20:57:41 +08:00
父节点 8e7c96c094
当前提交 1c9d0dc612
共修改 7 个文件,包含 271 行新增和 4 行删除
+12
查看文件
@@ -67,6 +67,8 @@ function buildFinanceLedgerWhere(filters = {}) {
OR: [
{ form_number: { contains: query, mode: "insensitive" } },
{ description: { contains: query, mode: "insensitive" } },
{ project: { is: { project_no: { contains: query, mode: "insensitive" } } } },
{ project: { is: { name: { contains: query, mode: "insensitive" } } } },
{ owner: { name: { contains: query, mode: "insensitive" } } },
{ owner: { employee_no: { contains: query, mode: "insensitive" } } },
{ submitter: { name: { contains: query, mode: "insensitive" } } },
@@ -95,6 +97,7 @@ const FINANCE_LEDGER_SELECT = {
owner: { select: { id: true, employee_no: true, name: true } },
submitter: { select: { id: true, employee_no: true, name: true } },
department: { select: { id: true, name: true } },
project: { select: { id: true, project_no: true, name: true } },
paid_by_employee: { select: { id: true, employee_no: true, name: true } },
invoice_pool_items: {
select: {
@@ -162,6 +165,13 @@ function mapFinanceLedgerItem(item) {
owner: mapEmployee(item.owner),
submitter: mapEmployee(item.submitter),
department: item.department ? { id: item.department.id, name: item.department.name } : null,
project: item.project
? {
id: item.project.id,
projectNo: item.project.project_no,
name: item.project.name,
}
: null,
payment: {
status: item.status === "paid" ? "paid" : "unpaid",
paymentVoucherNo: item.payment_voucher_no ?? null,
@@ -243,6 +253,7 @@ const FINANCE_LEDGER_EXPORT_HEADERS = Object.freeze([
"报销单号",
"申请人",
"部门",
"项目",
"金额",
"审批状态",
"付款状态",
@@ -262,6 +273,7 @@ function mapFinanceLedgerExportRow(item) {
item.formNumber ?? item.id,
item.owner?.name ?? item.submitter?.name ?? "",
item.department?.name ?? "",
item.project ? [item.project.projectNo, item.project.name].filter(Boolean).join(" ") : "",
item.totalAmount,
reimbursementStatusLabel(item.status),
paymentStatusLabel(item.payment.status),
@@ -106,6 +106,7 @@ function buildFinanceLedgerItem(overrides = {}) {
owner: { id: ACTOR_ID, employee_no: "E001", name: "张三" },
submitter: { id: ACTOR_ID, employee_no: "E001", name: "张三" },
department: { id: "dept-1", name: "财务部" },
project: { id: "project-1", project_no: "PJ-001", name: "交付项目" },
paid_by_employee: { id: ACTOR_ID, employee_no: "F001", name: "财务" },
invoice_pool_items: [{ id: "invoice-1", status: "archived", archived_reason: "used_complete" }],
_count: { attachments: 1, invoice_pool_items: 1 },
@@ -217,6 +218,7 @@ describe("ap operations export route", () => {
expect(response.body).toContain("待付款批次");
expect(response.body).toContain("财务台账");
expect(response.body).toContain("BX-20260406-001");
expect(response.body).toContain("交付项目");
expect(response.body).toContain("异常付款项");
expect(response.body).toContain("风险标记");
expect(response.body).toContain("对账异常");
@@ -0,0 +1,22 @@
const {
FINANCE_LEDGER_EXPORT_HEADERS,
buildFinanceLedgerWhere,
} = require("../../../src/services/financeLedger");
describe("finance ledger service", () => {
it("includes project fields in keyword search and export headers", () => {
const where = buildFinanceLedgerWhere({ q: "交付项目" });
expect(where).toEqual({
AND: [
{
OR: expect.arrayContaining([
{ project: { is: { project_no: { contains: "交付项目", mode: "insensitive" } } } },
{ project: { is: { name: { contains: "交付项目", mode: "insensitive" } } } },
]),
},
],
});
expect(FINANCE_LEDGER_EXPORT_HEADERS).toContain("项目");
});
});