fix: 收款流水收款金额改取A301-1主单入账金额inneraccountamount
This commit is contained in:
+1
-1
@@ -89,7 +89,7 @@ public class KingdeeReceiptFlow extends TenantEntity {
|
||||
*/
|
||||
private String payerName;
|
||||
/**
|
||||
* 收款金额(A301-1 流水分录 bei_creditamount,兜底主单 actrecamt)
|
||||
* 收款金额(A301-1 主单入账金额 inneraccountamount)
|
||||
*/
|
||||
private BigDecimal receiptAmount;
|
||||
/**
|
||||
|
||||
+6
-19
@@ -471,13 +471,14 @@ public class ReceiptFlowServiceImpl extends BaseServiceImpl<KingdeeReceiptFlowMa
|
||||
if (validRows.containsKey(detailSerialNo)) {
|
||||
throw new ServiceException("明细流水号" + detailSerialNo + "重复");
|
||||
}
|
||||
BigDecimal receiptAmount = parseEntryAmount(flowEntry.getBeiCreditamount(), recBill.getActrecamt());
|
||||
// 收款金额取主单入账金额 inneraccountamount(金蝶口径,非流水分录 bei_creditamount)
|
||||
BigDecimal receiptAmount = money(recBill.getInneraccountAmount());
|
||||
if (receiptAmount.compareTo(BigDecimal.ZERO) <= 0) {
|
||||
log.warn("收款流水同步跳过:收款单[{}]流水分录收款金额为空或小于0", recBill.getBillno());
|
||||
log.warn("收款流水同步跳过:收款单[{}]收款金额(inneraccountamount)为空或小于0", recBill.getBillno());
|
||||
skippedCount++;
|
||||
continue;
|
||||
}
|
||||
validRows.put(detailSerialNo, new BfiRecBillRow(recBill, flowEntry, detailSerialNo, receiptAmount));
|
||||
validRows.put(detailSerialNo, new BfiRecBillRow(recBill, detailSerialNo, receiptAmount));
|
||||
}
|
||||
}
|
||||
log.info("收款流水数据校验完成:有效 {} 条,跳过 {} 条", validRows.size(), skippedCount);
|
||||
@@ -579,7 +580,7 @@ public class ReceiptFlowServiceImpl extends BaseServiceImpl<KingdeeReceiptFlowMa
|
||||
/**
|
||||
* A301-1 收款单查询返回的收款单 + 流水分录展开行(同步过程传递用)
|
||||
*/
|
||||
private record BfiRecBillRow(BfiRecBillVO recBill, BfiRecBillFlowVO flowEntry,
|
||||
private record BfiRecBillRow(BfiRecBillVO recBill,
|
||||
String detailSerialNo, BigDecimal receiptAmount) {
|
||||
}
|
||||
|
||||
@@ -816,7 +817,7 @@ public class ReceiptFlowServiceImpl extends BaseServiceImpl<KingdeeReceiptFlowMa
|
||||
target.setPayerName(trimToEmpty(source.getPayername()));
|
||||
// 收款人(收款公司名称)
|
||||
target.setPayeeName(trimToNull(source.getOrgName()));
|
||||
// 收款金额(流水分录金额)
|
||||
// 收款金额(主单入账金额 inneraccountamount)
|
||||
target.setReceiptAmount(row.receiptAmount());
|
||||
// 对方单位名称(取付款人名称)
|
||||
target.setCounterpartyName(trimToEmpty(source.getPayername()));
|
||||
@@ -859,20 +860,6 @@ public class ReceiptFlowServiceImpl extends BaseServiceImpl<KingdeeReceiptFlowMa
|
||||
return KingdeeBfiConstant.KINGDEE_STATUS_FAILED;
|
||||
}
|
||||
|
||||
/**
|
||||
* 流水分录收款金额解析:bei_creditamount 为字符串,空或非法时回退主单收款金额
|
||||
*/
|
||||
private BigDecimal parseEntryAmount(String entryAmount, BigDecimal fallbackAmount) {
|
||||
if (Func.isNotEmpty(entryAmount)) {
|
||||
try {
|
||||
return new BigDecimal(entryAmount.trim());
|
||||
} catch (NumberFormatException exception) {
|
||||
log.warn("解析金蝶流水分录收款金额失败,原始值:{},回退主单收款金额", entryAmount);
|
||||
}
|
||||
}
|
||||
return money(fallbackAmount);
|
||||
}
|
||||
|
||||
private String firstNonBlank(String... values) {
|
||||
for (String value : values) {
|
||||
if (Func.isNotEmpty(value)) {
|
||||
|
||||
+5
@@ -135,6 +135,11 @@ public class BfiRecBillVO implements Serializable {
|
||||
*/
|
||||
@JsonProperty("txt_description")
|
||||
private String txtDescription;
|
||||
/**
|
||||
* 收款金额(入账金额,收款流水收款金额取此字段)
|
||||
*/
|
||||
@JsonProperty("inneraccountamount")
|
||||
private BigDecimal inneraccountAmount;
|
||||
/**
|
||||
* 收款金额
|
||||
*/
|
||||
|
||||
+1
-1
@@ -74,7 +74,7 @@ A301-1 收款单查询(业务日期窗口取 `thirdParty.bfi.recBillSync.days`
|
||||
| receipt_notice_no / kingdee_bill_no | `billno` | 金蝶收款单号(两处同值) |
|
||||
| kingdee_bill_status | `billstatus` 映射 | A/B已提交→pushed、C已审核→approved、D已收款→received、其余(含G退单)→failed |
|
||||
| detail_serial_no | `infoentry[].bei_detailid`,兜底 `bei_bankdetailno` | **幂等键**;每条流水分录展开为一行流水 |
|
||||
| receipt_amount | `infoentry[].bei_creditamount`,兜底主单 `actrecamt` | 流水分录收款金额 |
|
||||
| receipt_amount | 主单 `inneraccountamount` | 收款金额(入账金额口径,非流水分录 bei_creditamount) |
|
||||
| unclaimed_amount | `unmatchamountrec` | 未匹配收款金额,**认领上限口径** |
|
||||
| payer_name / counterparty_name | `payername` | 付款人名称 |
|
||||
| payee_name | `org_name` | 收款公司名称 |
|
||||
|
||||
Reference in New Issue
Block a user