BIZ8-8 增强财务台账项目扫读
这个提交包含在:
@@ -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("项目");
|
||||
});
|
||||
});
|
||||
在新工单中引用
屏蔽一个用户