fix: 应收单推送金蝶补送分录税率编码并去除DTO重复序列化键

This commit is contained in:
刘泉佳
2026-11-05 16:14:45 +08:00
parent fd82d9604f
commit cbbc523c4b
3 changed files with 10 additions and 2 deletions
@@ -845,7 +845,7 @@ public class KingdeeApBillSyncSupport {
* @param taxRate 分录税率(百分数,来自合同计费方案规则)
* @return 金蝶税率.编码,无税率为 null
*/
private String taxrateCode(BigDecimal taxRate) {
public String taxrateCode(BigDecimal taxRate) {
if (taxRate == null) {
return null;
}
@@ -247,7 +247,8 @@ public class KingdeeArBillSyncSupport {
param.setCurrencyNumber(currency);
// 【必填】款项性质.编码
param.setPaypropertyNumber(KingdeeBfiConstant.BFI_AR_BILL_PAY_PROPERTY);
// TODO 待确认:结算方式编码(settlementtype_number)与税率编码(taxrateid_number)、到期日(duedate)需金蝶侧确认后补充,当前不传
// TODO 待确认:结算方式编码(settlementtype_number)、到期日(duedate)需金蝶侧确认后补充,当前不传;
// 税率编码(taxrateid_number)已按 thirdparty.bfi.taxrate 映射送出(与应付单同口径)
// 录入含税价(非必传)
param.setIsincludetax(true);
// 录入总价,为 true 后可不录入单价(非必传)
@@ -293,6 +294,8 @@ public class KingdeeArBillSyncSupport {
row.setERecamount(entryGroup.amount());
// 金额(不含税):结算明细行结算金额(不含税),结算合计费用项行无不含税金额不传
row.setEAmount(entryGroup.amountNoTax());
// 税率.编码:thirdparty.bfi.taxrate 配置 税率数值->编码(如 9 -> V9),与应付单同口径,未维护该税率拦截报错
row.setTaxrateidNumber(kingdeeApBillSyncSupport.taxrateCode(entryGroup.taxRate()));
// 【必填】项目.项目编码:开关开启取项目档案真实编码(金蝶档案须已存在且编码一致),未关联项目兜底 999
row.setProjectNumber(kingdeeApBillSyncSupport.kingdeeProjectNumber(settlement.getProjectId(), context));
// 【必填】外部系统来源分录标识(候选键):结算明细行取单据号,结算合计费用项行取结算单号-费用类型-费用项拼接
@@ -25,6 +25,7 @@
*/
package org.springblade.thirdparty.bfi.pojo.dto;
import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
@@ -35,11 +36,15 @@ import java.math.BigDecimal;
/**
* 业财融合(BFI)A302-2 财务应收单保存 明细分录
* <p>getter 可见性关闭:e 前缀字段(如 eQuantity)经 Lombok getter 推导的属性名(equantity)与字段名不一致,
* 会产生 e_quantity/equantity 重复键,统一以字段 + @JsonProperty 序列化</p>
*
* @author Chill
*/
@Data
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.ANY, getterVisibility = JsonAutoDetect.Visibility.NONE,
isGetterVisibility = JsonAutoDetect.Visibility.NONE)
public class BfiArBillSaveEntryDTO implements Serializable {
@Serial
private static final long serialVersionUID = 1L;