fix: 手工结算合计费用行按计费方案规则补送税率
This commit is contained in:
+11
-5
@@ -408,7 +408,7 @@ public class KingdeeApBillSyncSupport {
|
||||
entry.setEPricetaxtotal(entryGroup.amount());
|
||||
// 金额(不含税):结算明细行结算金额(不含税),结算合计费用项行无不含税金额不传
|
||||
entry.setEAmount(entryGroup.amountNoTax());
|
||||
// 税率(%):合同计费方案规则税率(按税率拆行维度),未配置税率/结算合计费用项行不送,金蝶按默认带出
|
||||
// 税率(%):合同计费方案规则税率(按税率拆行维度),结算合计费用项行按费用项/费用类型匹配规则,未配置税率不送
|
||||
entry.setTaxrate(entryGroup.taxRate());
|
||||
// 税率编码(taxrateid_number):thirdparty.bfi.taxrate 配置 税率数值->编码,未维护该税率拦截报错
|
||||
entry.setTaxrateidNumber(taxrateCode(entryGroup.taxRate()));
|
||||
@@ -758,6 +758,7 @@ public class KingdeeApBillSyncSupport {
|
||||
/**
|
||||
* 单条手动添加的结算合计费用项生成一条分录:运费类按项目业务模式/运输方式映射(运输方式取结算明细首行),
|
||||
* 仓储大类(档案编码 A05)映射仓储物料,其余非运费类映射装卸物料;
|
||||
* 税率按费用项/费用类型匹配合同计费方案规则(与结算明细行同口径),规则未覆盖不送;
|
||||
* 非运费类数量默认 1,金额取合计行结算金额,运输货物/车号不传,分录标识取结算单号-费用类型-费用项拼接
|
||||
*/
|
||||
private void appendSummaryEntry(List<BfiEntryGroup> entryGroups, EntryResolveContext context,
|
||||
@@ -774,13 +775,18 @@ public class KingdeeApBillSyncSupport {
|
||||
BigDecimal quantity = BigDecimal.ONE;
|
||||
BigDecimal amount = money(summaryFee.getSettlementAmount());
|
||||
BigDecimal price = entryPrice(amount, quantity);
|
||||
// 税率:优先费用项匹配合同计费方案规则,费用项未命中回退费用类型(与结算明细行同口径)
|
||||
BigDecimal taxRate = context.taxRateByRule().get(feeItem);
|
||||
if (taxRate == null) {
|
||||
taxRate = context.taxRateByRule().get(feeType);
|
||||
}
|
||||
// 分录唯一标识(awrp_entry_code):结算单号-费用类型-费用项(费用项为空时仅拼结算单号-费用类型)
|
||||
String entryCode = settlement.getFormalSettlementNo() + "-"
|
||||
+ (Func.isBlank(feeItem) ? feeType : feeType + "-" + feeItem);
|
||||
entryGroups.add(new BfiEntryGroup(materialNumber, entryCode, quantity, price, amount,
|
||||
null, null, null, settlement.getId(), null));
|
||||
log.info("金蝶应付单分录生成:来源[{}],分录标识[{}],物料编码[{}],数量[{}],单价[{}],含税金额[{}]",
|
||||
sourceDesc, entryCode, materialNumber, quantity, price, amount);
|
||||
null, null, null, settlement.getId(), taxRate));
|
||||
log.info("金蝶应付单分录生成:来源[{}],分录标识[{}],物料编码[{}],数量[{}],单价[{}],含税金额[{}],税率[{}]",
|
||||
sourceDesc, entryCode, materialNumber, quantity, price, amount, taxRate);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1480,7 +1486,7 @@ public class KingdeeApBillSyncSupport {
|
||||
* @param transportGoods 运输货物(金蝶接口新字段 awrp_transport):结算明细货物名称,结算合计费用项行为 null 不传
|
||||
* @param vehicleNo 车号(金蝶接口新字段 awrp_lpn):结算明细车号,结算合计费用项行为 null 不传
|
||||
* @param formalSettlementId 分录所属正式结算单id(多结算单付款申请 A103-1 按结算单勾稽各自应付单)
|
||||
* @param taxRate 该行税率(%)(合同计费方案规则税率,按税率拆行维度),无税率组/结算合计费用项行为 null 不传
|
||||
* @param taxRate 该行税率(%)(合同计费方案规则税率,按税率拆行维度;结算合计费用项行按费用项/费用类型匹配规则),无税率组/规则未覆盖为 null 不传
|
||||
*/
|
||||
public record BfiEntryGroup(String materialNumber, String entryCode,
|
||||
BigDecimal quantity, BigDecimal price, BigDecimal amount, BigDecimal amountNoTax,
|
||||
|
||||
Reference in New Issue
Block a user