From b5b7ce6b8c496c9e957b92afd9e7be39d07d0133 Mon Sep 17 00:00:00 2001 From: wjh Date: Fri, 19 Apr 2024 05:04:54 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E7=BB=93=E7=AE=97=E5=8D=95=E5=BD=95?= =?UTF-8?q?=E5=8D=95=E6=A8=A1=E5=9D=97=E8=B0=83=E6=95=B4=E5=90=8E=E6=B2=A1?= =?UTF-8?q?=E6=9C=89=E6=98=BE=E7=A4=BA=E5=BD=95=E5=9C=A8=E6=98=8E=E7=BB=86?= =?UTF-8?q?=E4=B8=AD=E7=9A=84=E6=97=A0=E5=85=B3=E8=81=94=E8=B4=B9=E7=94=A8?= =?UTF-8?q?=20close=20#764=20(#765)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reviewed-on: https://git.daoyoucloud.com/daoyoucloud/tachybase/pulls/765 Co-authored-by: wjh Co-committed-by: wjh --- .changeset/odd-taxis-hope.md | 5 ++ .../src/server/services/settlement-service.ts | 75 +++++++++++++++++-- 2 files changed, 72 insertions(+), 8 deletions(-) create mode 100644 .changeset/odd-taxis-hope.md diff --git a/.changeset/odd-taxis-hope.md b/.changeset/odd-taxis-hope.md new file mode 100644 index 000000000..cf39c29c9 --- /dev/null +++ b/.changeset/odd-taxis-hope.md @@ -0,0 +1,5 @@ +--- +"@hera/plugin-rental": patch +--- + +录单模块调整后没有显示录在明细中的无关联费用 diff --git a/packages/plugins/@hera/plugin-rental/src/server/services/settlement-service.ts b/packages/plugins/@hera/plugin-rental/src/server/services/settlement-service.ts index 4072bd03e..768cf52ed 100644 --- a/packages/plugins/@hera/plugin-rental/src/server/services/settlement-service.ts +++ b/packages/plugins/@hera/plugin-rental/src/server/services/settlement-service.ts @@ -96,20 +96,45 @@ export class SettlementService { settlementAbout.end_date, ); const movement = item.movement === '-1' ? '1' : '-1'; + if (productLength > 1) { + createLeasDatas.push({ + settlement_id: settlementsId, //合同ID + movement: item.movement, //出入库状态 + date: item.date, //时间 + name: rule.comment ?? '', //名称 + label: rule.comment ?? '', + category: item.category, //费用类别 + //租赁天数 历史订单就存开始日期到结束日期 当前订单存储订单日期到结束日期 + days: day, + is_excluded: false, + item_count: product.count, + count: recordItem.weight * Number(movement), + unit_price: rule.unit_price * 1000, + amount: recordItem.weight * (rule.unit_price * 1000) * day * Number(movement), + unit_name: '吨', + productCategory, + }); + } createLeasDatas.push({ settlement_id: settlementsId, //合同ID movement: item.movement, //出入库状态 date: item.date, //时间 name: productLength > 1 ? rule.comment ?? '' : productName.name, //名称 - label: productLength > 1 ? rule.comment ?? '' : productName.label, //规格 + label: + productLength > 1 + ? `${rule.comment}-${productName.label}$$ ` ?? '' + `-${productName.label}$$ ` + : productName.label, //规格 category: item.category, //费用类别 //租赁天数 历史订单就存开始日期到结束日期 当前订单存储订单日期到结束日期 days: day, is_excluded: false, item_count: product.count, - count: recordItem.weight * Number(movement), + count: productLength > 1 ? 0 : recordItem.weight * Number(movement), unit_price: rule.unit_price * 1000, - amount: recordItem.weight * (rule.unit_price * 1000) * day * Number(movement), + amount: + productLength > 1 + ? 0 + : recordItem.weight * (rule.unit_price * 1000) * day * Number(movement), unit_name: '吨', productCategory, }); @@ -160,20 +185,42 @@ export class SettlementService { return prev + 0; } }, 0); + if (productLength > 1) { + createLeasDatas.push({ + settlement_id: settlementsId, //合同ID + movement: item.movement, //出入库状态 + date: item.date, //时间 + name: rule.comment ?? '', //名称 + label: rule.comment ?? '', //规格 + category: item.category, //费用类别 + //租赁天数 历史订单就存开始日期到结束日期 当前订单存储订单日期到结束日期 + days: day, + is_excluded: false, + item_count: productLength > 1 ? item_count : recordItem.count * Number(movement), + count: item.weight * Number(movement), + unit_price: rule.unit_price * 1000, + amount: item.weight * (rule.unit_price * 1000) * day * Number(movement), + unit_name: '吨', + productCategory, + }); + } createLeasDatas.push({ settlement_id: settlementsId, //合同ID movement: item.movement, //出入库状态 date: item.date, //时间 name: productLength > 1 ? rule.comment ?? '' : recordItem.product.name, //名称 - label: productLength > 1 ? rule.comment ?? '' : recordItem.product.name, //规格 + label: + productLength > 1 + ? `${rule.comment}-${recordItem.product.name}$$` ?? '' + `-${recordItem.product.name}$$` + : recordItem.product.name, //规格 category: item.category, //费用类别 //租赁天数 历史订单就存开始日期到结束日期 当前订单存储订单日期到结束日期 days: day, is_excluded: false, item_count: productLength > 1 ? item_count : recordItem.count * Number(movement), - count: item.weight * Number(movement), + count: productLength > 1 ? 0 : item.weight * Number(movement), unit_price: rule.unit_price * 1000, - amount: item.weight * (rule.unit_price * 1000) * day * Number(movement), + amount: productLength > 1 ? 0 : item.weight * (rule.unit_price * 1000) * day * Number(movement), unit_name: '吨', productCategory, }); @@ -498,6 +545,13 @@ export class SettlementService { dayjs(item.date).isBetween(ruleItem.start_date, ruleItem.end_date, 'day', '[]') && dayjs(item.date).isSameOrAfter(settlementAbout.start_date) ) { + const feeItem = item?.record_items.filter((value) => value.product_id === rule.fee_product_id); + if (feeItem.length) { + feeItem.forEach((value) => { + data.count = data.count + value.count; + conversion = true; + }); + } if (item.fee_item.length) { item.fee_item.forEach((value) => { if (value.product_id === rule.fee_product_id) { @@ -635,10 +689,12 @@ export class SettlementService { createDatas.sort((a, b) => { return new Date(a.date).getTime() - new Date(b.date).getTime(); }); - createDatas = createDatas.filter((value) => value.count); + createDatas = createDatas.filter((value) => value.name.includes('$$') || value.count); //筛选历史结存 createCategoryDatasItem.history = createCategoryDatasItem.history?.filter((value) => value.count); - createProductDatasItem.history = createProductDatasItem.history?.filter((value) => value.count); + createProductDatasItem.history = createProductDatasItem.history?.filter( + (value) => value.name.includes('$$') || value.count, + ); //汇总项信息 const summaryCategoryItems = []; for (const value in createCategoryDatasItem) { @@ -836,6 +892,9 @@ export class SettlementService { value.date = dayjs(valueItem.date).add(1, 'seconds'); } } + if (value.name.includes('$$')) { + value.name = value.name.replace('$$', ''); + } }); calc.list?.sort((a, b) => { return new Date(a.date).getTime() - new Date(b.date).getTime();