fix: A303-1 开票申请推送放开来源单据字段

This commit is contained in:
刘泉佳
2026-10-08 19:59:04 +08:00
parent 36c264bfab
commit ef0f9e6e36
2 changed files with 13 additions and 13 deletions
@@ -580,9 +580,9 @@ public class InvoiceApplicationServiceImpl extends BaseServiceImpl<InvoiceApplic
+ "]财务应收单未在金蝶生成,请先在正式付款单页面同步金蝶"); + "]财务应收单未在金蝶生成,请先在正式付款单页面同步金蝶");
} }
} }
// 上游来源单据号(awrp_src_con_no):首张关联结算单的金蝶应收单单据编号(金蝶确认传单据编号口径), // 上游来源单据号(awrp_src_con_no):首张关联结算单的金蝶应收单防重键 awrp_src_code
// 以 A302-4 查询结果为准(存量本地单号缺失也能取到),多张结算单取第一张 // (联调确认金蝶源单校验按防重键匹配,传单据编号会报「源单编号不存在」),多张结算单取第一张
String firstArBillNo = existArNos.get(arSrcCodes.get(0)); String firstArSrcCode = arSrcCodes.get(0);
// 加载发票张次与商品行:每张发票张次对应一张金蝶开票申请单(按张次拆分开票) // 加载发票张次与商品行:每张发票张次对应一张金蝶开票申请单(按张次拆分开票)
List<InvoiceApplicationSheet> sheets = sheetMapper.selectList(Wrappers.<InvoiceApplicationSheet>lambdaQuery() List<InvoiceApplicationSheet> sheets = sheetMapper.selectList(Wrappers.<InvoiceApplicationSheet>lambdaQuery()
.eq(InvoiceApplicationSheet::getInvoiceApplicationId, id).orderByAsc(InvoiceApplicationSheet::getSheetNo)); .eq(InvoiceApplicationSheet::getInvoiceApplicationId, id).orderByAsc(InvoiceApplicationSheet::getSheetNo));
@@ -680,7 +680,7 @@ public class InvoiceApplicationServiceImpl extends BaseServiceImpl<InvoiceApplic
+ "]无商品行,无法组装分录"); + "]无商品行,无法组装分录");
} }
BfiInvoiceApplySaveDTO param = this.buildInvoiceApplyParam(entity, sheetBillNo, seller, salerAddr, salerBank, BfiInvoiceApplySaveDTO param = this.buildInvoiceApplyParam(entity, sheetBillNo, seller, salerAddr, salerBank,
dept, customer, firstArBillNo, money(sheet.getInvoiceAmount()), items); dept, customer, firstArSrcCode, money(sheet.getInvoiceAmount()), items);
log.info("金蝶开票申请推送:开票申请[{}]发票张[{}],billno=[{}],价税合计=[{}],分录{}条", log.info("金蝶开票申请推送:开票申请[{}]发票张[{}],billno=[{}],价税合计=[{}],分录{}条",
entity.getApplicationNo(), sheet.getSheetNo(), sheetBillNo, sheet.getInvoiceAmount(), items.size()); entity.getApplicationNo(), sheet.getSheetNo(), sheetBillNo, sheet.getInvoiceAmount(), items.size());
BfiBillSaveResultVO saveResult = bfiService.saveInvoiceApply(param); BfiBillSaveResultVO saveResult = bfiService.saveInvoiceApply(param);
@@ -729,11 +729,11 @@ public class InvoiceApplicationServiceImpl extends BaseServiceImpl<InvoiceApplic
* 组装 A303-1 单张开票申请单入参(字段映射见设计文档 6.3/6.4), * 组装 A303-1 单张开票申请单入参(字段映射见设计文档 6.3/6.4),
* 购销方等主表公共字段随开票申请取数,价税合计与单据体分录取本张发票 * 购销方等主表公共字段随开票申请取数,价税合计与单据体分录取本张发票
* *
* @param firstArBillNo 上游来源单据号:首张关联结算单的金蝶应收单单据编号(多张结算单取第一张) * @param firstArSrcCode 上游来源单据号:首张关联结算单的金蝶应收单防重键 awrp_src_code(多张结算单取第一张)
*/ */
private BfiInvoiceApplySaveDTO buildInvoiceApplyParam(InvoiceApplication entity, String billNo, private BfiInvoiceApplySaveDTO buildInvoiceApplyParam(InvoiceApplication entity, String billNo,
CustomerArchive seller, String salerAddr, String salerBank, Dept dept, CustomerArchive customer, CustomerArchive seller, String salerAddr, String salerBank, Dept dept, CustomerArchive customer,
String firstArBillNo, BigDecimal sheetAmount, List<BfiInvoiceApplySaveEntryDTO> items) { String firstArSrcCode, BigDecimal sheetAmount, List<BfiInvoiceApplySaveEntryDTO> items) {
BfiInvoiceApplySaveDTO param = new BfiInvoiceApplySaveDTO(); BfiInvoiceApplySaveDTO param = new BfiInvoiceApplySaveDTO();
// ==================== 以下为【必填】字段(BfiInvoiceApplySaveDTO 标注),非必填字段先注释保留 ==================== // ==================== 以下为【必填】字段(BfiInvoiceApplySaveDTO 标注),非必填字段先注释保留 ====================
// 【必填】组织.编码:申请部门 deptId → 金蝶组织编码 // 【必填】组织.编码:申请部门 deptId → 金蝶组织编码
@@ -780,8 +780,8 @@ public class InvoiceApplicationServiceImpl extends BaseServiceImpl<InvoiceApplic
param.setTotalamount(sheetAmount); param.setTotalamount(sheetAmount);
// 是否含税:金蝶要求统一按不含税口径送(联调反馈),固定 0 不含税 // 是否含税:金蝶要求统一按不含税口径送(联调反馈),固定 0 不含税
param.setHsbz("0"); param.setHsbz("0");
// 特殊票种:金蝶要求映射(联调反馈)——本张发票商品行全部为货物运输(运费/货物运输)送 E04,其余(其他、非货物运输的运输类等)送 00 非特殊票种 // todo 特殊票种:金蝶要求映射(联调反馈)——本张发票商品行全部为货物运输(运费/货物运输)送 E04,其余(其他、非货物运输的运输类等)送 00 非特殊票种
param.setSpecialtype(this.specialTypeOf(items)); // param.setSpecialtype(this.specialTypeOf(items));
// 【必填】客户.编码:受票方客商档案客商编码 // 【必填】客户.编码:受票方客商档案客商编码
param.setCustomnameidNumber(customer.getCustomerCode()); param.setCustomnameidNumber(customer.getCustomerCode());
// 【必填】项目.项目编码(联调期临时传金蝶测试档案值 999) // 【必填】项目.项目编码(联调期临时传金蝶测试档案值 999)
@@ -794,9 +794,9 @@ public class InvoiceApplicationServiceImpl extends BaseServiceImpl<InvoiceApplic
// 数据来源:固定 3 // 数据来源:固定 3
// param.setBillsource("3"); // param.setBillsource("3");
// 来源单据:ar_finarbill 财务应收单(金蝶联调确认开票申请须挂上游应收单) // 来源单据:ar_finarbill 财务应收单(金蝶联调确认开票申请须挂上游应收单)
param.setAwrpSrcBt(KingdeeBfiConstant.BFI_AR_BILL_SRC_BT); // param.setAwrpSrcBt(KingdeeBfiConstant.BFI_AR_BILL_SRC_BT);
// 上游单据号:首张关联结算单的金蝶应收单单据编号(金蝶确认传单据编号口径,A302-4 预检已确认存在) // 上游单据号:首张关联结算单的金蝶应收单防重键 awrp_src_code(联调确认金蝶按防重键匹配源单,A302-4 预检已确认存在)
param.setAwrpSrcConNo(firstArBillNo); // param.setAwrpSrcConNo(firstArSrcCode);
// 数据来源系统 // 数据来源系统
param.setSystemsource(bfiProperties.getSrcSys()); param.setSystemsource(bfiProperties.getSrcSys());
@@ -4,7 +4,7 @@
> 对接系统:金蝶云·星瀚(业财融合 BFI,经 iPaaS 网关) > 对接系统:金蝶云·星瀚(业财融合 BFI,经 iPaaS 网关)
> 覆盖接口:A302-2 财务应收单保存、A302-4 财务应收单查询、A303-1 开票申请单新增、A303-4 开票申请单查询、A303-5 开票申请发票查询 > 覆盖接口:A302-2 财务应收单保存、A302-4 财务应收单查询、A303-1 开票申请单新增、A303-4 开票申请单查询、A303-5 开票申请发票查询
> 关联文档:`2026-09-20-应收结算与开票申请同步金蝶设计.md`(设计口径与遗留清单)、`2026-09-20-应付单与付款申请同步金蝶全链路业务流程(A102-2保存-A102-4查询-A103-1下推-A103-2回写).md`(应付侧对称链路) > 关联文档:`2026-09-20-应收结算与开票申请同步金蝶设计.md`(设计口径与遗留清单)、`2026-09-20-应付单与付款申请同步金蝶全链路业务流程(A102-2保存-A102-4查询-A103-1下推-A103-2回写).md`(应付侧对称链路)
> 最后更新:2026-10-01(A303-1 上游来源单据放开传值:awrp_src_bt=ar_finarbill + awrp_src_con_no=首张结算单金蝶应收单编号;2026-09-21 按当前代码梳理,销方名称/销方税号/税收分类编码随单据取数) > 最后更新:2026-10-08(联调纠偏:A303-1 awrp_src_con_no 改传首张结算单金蝶应收单防重键 awrp_src_code,传单据编号会报「源单编号不存在」;2026-10-01 上游来源单据放开传值 awrp_src_bt=ar_finarbill;2026-09-21 按当前代码梳理,销方名称/销方税号/税收分类编码随单据取数)
--- ---
@@ -156,7 +156,7 @@ kingdeeSyncStatus:unsynced ──A302-2成功──> synced(终态)
| customnameid_number | 客户.编码 | 是 | 受票方客商档案客商编码(未维护报错) | 客商档案「客商编号」 | | customnameid_number | 客户.编码 | 是 | 受票方客商档案客商编码(未维护报错) | 客商档案「客商编号」 |
| awrp_project_number | 项目.项目编码 | 是 | 联调期 999 | — | | awrp_project_number | 项目.项目编码 | 是 | 联调期 999 | — |
| billsource | 数据来源 | 是 | 固定 3 | 无 | | billsource | 数据来源 | 是 | 固定 3 | 无 |
| awrp_src_bt / awrp_src_con_no | 上游来源单据/单号 | 是 | ar_finarbill / 首张关联结算单的金蝶应收单**单据编号**(金蝶联调确认传单据编号,取 A302-4 预检查询结果为准,多张取第一张) | 环节一回写的「金蝶单据编号」 | | awrp_src_bt / awrp_src_con_no | 上游来源单据/单号 | 是 | ar_finarbill / 首张关联结算单的金蝶应收单**防重键 awrp_src_code**(联调确认金蝶按防重键匹配源单,2026-10-08 纠偏:传单据编号报「源单编号不存在」;多张取第一张) | `结算单号_结算明细单据号拼接`(与 A302-2 防重键同源) |
| systemsource | 系统来源 | 否 | thirdParty.bfi.srcSys(默认 WLTMS) | 无(后端配置) | | systemsource | 系统来源 | 否 | thirdParty.bfi.srcSys(默认 WLTMS) | 无(后端配置) |
分录(sim_original_bill_item,逐「开票内容」商品行一条,按发票张次+张内行号平铺):取数口径即商品行落库值,**不回查开票项目主数据、不按开票明细→费用行展开分摊**(实现见 `InvoiceApplicationServiceImpl.resolveInvoiceApplyEntries`,仅查张次与商品行两张表): 分录(sim_original_bill_item,逐「开票内容」商品行一条,按发票张次+张内行号平铺):取数口径即商品行落库值,**不回查开票项目主数据、不按开票明细→费用行展开分摊**(实现见 `InvoiceApplicationServiceImpl.resolveInvoiceApplyEntries`,仅查张次与商品行两张表):