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