收款sap推送优化

This commit is contained in:
yuxueliang0813 2025-05-13 19:06:35 +08:00
parent 1ef67760d7
commit 14f6f36b6b
4 changed files with 56 additions and 46 deletions

View File

@ -265,8 +265,7 @@ public class PaybillPushSapOperation extends AbstractOperationServicePlugIn impl
hsxminfo = QueryServiceHelper.queryOne("bd_supplier", "id,name,number", hsxminfo = QueryServiceHelper.queryOne("bd_supplier", "id,name,number",
new QFilter[]{new QFilter("id", QCP.equals, glassistbd.getLong("assval"))});//维度值 new QFilter[]{new QFilter("id", QCP.equals, glassistbd.getLong("assval"))});//维度值
IT_ITEMS.put("LIFNR",hsxminfo.getString("number"));//供应商 IT_ITEMS.put("LIFNR",hsxminfo.getString("number"));//供应商
} }else if("f000012".equals(asstype)){
else if("f000012".equals(asstype)){
//利润中心 f000012 //利润中心 f000012
hsxminfo = QueryServiceHelper.queryOne("shjh_pc", "id,name,number", hsxminfo = QueryServiceHelper.queryOne("shjh_pc", "id,name,number",
new QFilter[]{new QFilter("id", QCP.equals, glassistbd.getLong("assval"))});//维度值 new QFilter[]{new QFilter("id", QCP.equals, glassistbd.getLong("assval"))});//维度值

View File

@ -309,7 +309,6 @@ public class RecPushVoucherOperation extends AbstractOperationServicePlugIn impl
/** /**
* 获取SAP凭证行项目信息 * 获取SAP凭证行项目信息
*
* @param recBill 收款单动态对象 * @param recBill 收款单动态对象
* @return 包含行项目信息的JSONArray * @return 包含行项目信息的JSONArray
*/ */
@ -318,8 +317,8 @@ public class RecPushVoucherOperation extends AbstractOperationServicePlugIn impl
//源单类型 //源单类型
String sourceBillType = recBill.getString("sourcebilltype"); String sourceBillType = recBill.getString("sourcebilltype");
// 1. 获取客户/供应商编号 // 1. 获取客户/供应商编号
String payerType = recBill.getString("payertype"); // String payerType = recBill.getString("payertype");
String cusOrSupNumber = getCustomerOrSupplierNumber(payerType, recBill); // String cusOrSupNumber = getCustomerOrSupplierNumber(payerType, recBill);
// 2. 获取原因码和SAP行项目文本 // 2. 获取原因码和SAP行项目文本
String RSTGR = ""; String RSTGR = "";
@ -365,39 +364,44 @@ public class RecPushVoucherOperation extends AbstractOperationServicePlugIn impl
DynamicObjectCollection entries = gl_voucher.getDynamicObjectCollection("entries"); DynamicObjectCollection entries = gl_voucher.getDynamicObjectCollection("entries");
if (entries != null && !entries.isEmpty()) { if (entries != null && !entries.isEmpty()) {
//如果是客户拆分则从凭证上获取客户编号 //如果是客户拆分则从凭证上获取客户编号
boolean customersplit = recBill.getBoolean(RecFieldsInfo.CUSTOMER_SPLIT); // boolean customersplit = recBill.getBoolean(RecFieldsInfo.CUSTOMER_SPLIT);
for (DynamicObject entry : entries) { for (DynamicObject entry : entries) {
JSONObject IT_ITEMS = new JSONObject(); JSONObject IT_ITEMS = new JSONObject();
// 设置其他字段
IT_ITEMS.put("SGTXT", SGTXT);
IT_ITEMS.put("RSTGR", RSTGR);
IT_ITEMS.put("KOSTL", KOSTL);
IT_ITEMS.put("PRCTR", PRCTR);
// 设置科目 // 设置科目
DynamicObject account = entry.getDynamicObject("account"); DynamicObject account = entry.getDynamicObject("account");
if (account != null) { if (account != null) {
IT_ITEMS.put("HKONT", account.getString("number")); IT_ITEMS.put("HKONT", account.getString("number"));
//查找核算维度 //查找核算维度
DynamicObjectCollection checkItems = account.getDynamicObjectCollection("checkitementry"); // DynamicObjectCollection checkItems = account.getDynamicObjectCollection("checkitementry");
if (!customersplit && checkItems!=null && checkItems.size()!=0){ // if (!customersplit && checkItems!=null && checkItems.size()!=0){
//是否已经反写 // //是否已经反写
boolean isMark = false; // boolean isMark = false;
for (DynamicObject checkItem : checkItems) { // for (DynamicObject checkItem : checkItems) {
//核算维度 // //核算维度
String assTactItemName = checkItem.getString("asstactitem.name"); // String assTactItemName = checkItem.getString("asstactitem.name");
if (assTactItemName != null){ // if (assTactItemName != null){
switch (assTactItemName){ // switch (assTactItemName){
case "客户-获利段": // case "客户-获利段":
case "客户编码": // case "客户编码":
IT_ITEMS.put("KUNNR", cusOrSupNumber); // IT_ITEMS.put("KUNNR", cusOrSupNumber);
isMark = true; // isMark = true;
break; // break;
case "供应商": // case "供应商":
IT_ITEMS.put("LIFNR", cusOrSupNumber); // IT_ITEMS.put("LIFNR", cusOrSupNumber);
isMark = true; // isMark = true;
break; // break;
} // }
} // }
if (isMark){ // if (isMark){
break; // break;
} // }
} // }
} // }
//从凭证弹性域获取客户编号 //从凭证弹性域获取客户编号
// if(customersplit){ // if(customersplit){
// } // }
@ -413,12 +417,25 @@ public class RecPushVoucherOperation extends AbstractOperationServicePlugIn impl
//t_bas_flex_property 表中获取对应编号 客户-获利段 f0001 客户编码 f000057 //t_bas_flex_property 表中获取对应编号 客户-获利段 f0001 客户编码 f000057
hsxminfo = QueryServiceHelper.queryOne(customerName, "id,name,number", hsxminfo = QueryServiceHelper.queryOne(customerName, "id,name,number",
new QFilter[]{new QFilter("id", QCP.equals, glassistbd.getLong("assval"))});//维度值 new QFilter[]{new QFilter("id", QCP.equals, glassistbd.getLong("assval"))});//维度值
IT_ITEMS.put("KUNNR",hsxminfo.getString("number"));//利润中心_利润中心 IT_ITEMS.put("KUNNR",hsxminfo.getString("number"));
}else if("f000005".equals(asstype)){ }else if("f000005".equals(asstype)){
//供应商 f000005 //供应商 f000005
hsxminfo = QueryServiceHelper.queryOne("bd_supplier", "id,name,number", hsxminfo = QueryServiceHelper.queryOne("bd_supplier", "id,name,number",
new QFilter[]{new QFilter("id", QCP.equals, glassistbd.getLong("assval"))});//维度值 new QFilter[]{new QFilter("id", QCP.equals, glassistbd.getLong("assval"))});//维度值
IT_ITEMS.put("LIFNR",hsxminfo.getString("number"));//供应商 IT_ITEMS.put("LIFNR",hsxminfo.getString("number"));
}else if("f000012".equals(asstype)){
//利润中心 f000012
hsxminfo = QueryServiceHelper.queryOne("shjh_pc", "id,name,number",
new QFilter[]{new QFilter("id", QCP.equals, glassistbd.getLong("assval"))});//维度值
IT_ITEMS.put("PRCTR",hsxminfo.getString("number"));
}else if("f000011".equals(asstype)){
//成本中心 f000011
hsxminfo = QueryServiceHelper.queryOne("bos_costcenter", "id,name,number",
new QFilter[]{new QFilter("id", QCP.equals, glassistbd.getLong("assval"))});//维度值
IT_ITEMS.put("KOSTL",hsxminfo.getString("number"));
}else if("f000054".equals(asstype)){
//原因码 f000054
IT_ITEMS.put("RSTGR",glassistbd.getString("assval"));
} }
} }
} }
@ -445,12 +462,6 @@ public class RecPushVoucherOperation extends AbstractOperationServicePlugIn impl
} else { } else {
logger.warn("凭证分录金额或方向为空"); logger.warn("凭证分录金额或方向为空");
} }
// 设置其他字段
IT_ITEMS.put("SGTXT", SGTXT);
IT_ITEMS.put("RSTGR", RSTGR);
IT_ITEMS.put("KOSTL", KOSTL);
IT_ITEMS.put("PRCTR", PRCTR);
//源单类型是收票登记时设置汇票字段 //源单类型是收票登记时设置汇票字段
if ("cdm_receivablebill".equals(sourceBillType)) { if ("cdm_receivablebill".equals(sourceBillType)) {
IT_ITEMS.put("UMSKZ", "W");//特殊总账标识-汇票时需设置为W IT_ITEMS.put("UMSKZ", "W");//特殊总账标识-汇票时需设置为W
@ -482,7 +493,6 @@ public class RecPushVoucherOperation extends AbstractOperationServicePlugIn impl
/** /**
* 生成收款清账凭证数据 * 生成收款清账凭证数据
*
* @param recBill 收款单动态对象 * @param recBill 收款单动态对象
* @return 清账凭证数据JSON数组 * @return 清账凭证数据JSON数组
*/ */

View File

@ -48,6 +48,7 @@ public class RecRedPushOperation extends AbstractOperationServicePlugIn implemen
public void onPreparePropertys(PreparePropertysEventArgs e) { public void onPreparePropertys(PreparePropertysEventArgs e) {
super.onPreparePropertys(e); super.onPreparePropertys(e);
//预处理单据属性把后续校验会用到的字段尤其是二开字段在这里加载一下 //预处理单据属性把后续校验会用到的字段尤其是二开字段在这里加载一下
e.getFieldKeys().add(RedPushValidator.KEY_BILL_NUM);
e.getFieldKeys().add(RedPushValidator.KEY_HOT_ACCOUNT); e.getFieldKeys().add(RedPushValidator.KEY_HOT_ACCOUNT);
e.getFieldKeys().add(RedPushValidator.IS_PUSH_SAP); e.getFieldKeys().add(RedPushValidator.IS_PUSH_SAP);
@ -119,7 +120,7 @@ public class RecRedPushOperation extends AbstractOperationServicePlugIn implemen
try { try {
String response = ApiUtils.sendPost(responseHead, responseBody, API_URL); String response = ApiUtils.sendPost(responseHead, responseBody, API_URL);
if (!EsbUtils.isEmpty(response)) { if (!EsbUtils.isEmpty(response)) {
boolean success = ApiUtils.parseResponse(response, billNumber, responseBody, INTERFACE_ID, message); boolean success = ApiUtils.parseResponse(response, billNumber, responseBody, "SAP反清账或冲销", message);
if (success){ if (success){
//sap红冲凭证成功反写sap凭证号和推送标记 //sap红冲凭证成功反写sap凭证号和推送标记
JSONObject sapReturnData = JSONObject.parseObject(response); JSONObject sapReturnData = JSONObject.parseObject(response);

View File

@ -202,22 +202,22 @@ public class ApiUtils {
switch (code) { switch (code) {
case "0": case "0":
isSuccess=true; isSuccess=true;
EsbUtils.saveLog("收款处理"+billNumber, apiName, formattedBody, response, true, "ESBReversalApi", "推送成功"); EsbUtils.saveLog(billNumber, apiName, formattedBody, response, true, "ESBReversalApi", "推送成功");
break; break;
case "1": case "1":
EsbUtils.saveLog("收款处理"+billNumber, apiName, formattedBody, response, false, "ESBReversalApi", "服务异常"); EsbUtils.saveLog(billNumber, apiName, formattedBody, response, false, "ESBReversalApi", "服务异常");
message.append("收款处理【").append(billNumber).append("】:").append("服务异常:").append(result.getString("msg")).append("\n"); message.append("收款处理【").append(billNumber).append("】:").append("服务异常:").append(result.getString("msg")).append("\n");
break; break;
case "2": case "2":
EsbUtils.saveLog("收款处理"+billNumber, apiName, formattedBody, response, false, "ESBReversalApi", "三方服务异常"); EsbUtils.saveLog(billNumber, apiName, formattedBody, response, false, "ESBReversalApi", "三方服务异常");
message.append("收款处理【").append(billNumber).append("】:").append("三方服务异常:").append(result.getString("msg")).append("\n"); message.append("收款处理【").append(billNumber).append("】:").append("三方服务异常:").append(result.getString("msg")).append("\n");
break; break;
case "3": case "3":
EsbUtils.saveLog("收款处理"+billNumber, apiName, formattedBody, response, false, "ESBReversalApi", "业务异常"); EsbUtils.saveLog(billNumber, apiName, formattedBody, response, false, "ESBReversalApi", "业务异常");
message.append("收款处理【").append(billNumber).append("】:").append("业务异常:").append(result.getString("msg")).append("\n"); message.append("收款处理【").append(billNumber).append("】:").append("业务异常:").append(result.getString("msg")).append("\n");
break; break;
default: default:
EsbUtils.saveLog("收款处理"+billNumber, apiName, formattedBody, response, false, "ESBReversalApi", "未知异常"); EsbUtils.saveLog(billNumber, apiName, formattedBody, response, false, "ESBReversalApi", "未知异常");
message.append("收款处理【").append(billNumber).append("】:").append("异常:").append(result.getString("msg")).append("\n"); message.append("收款处理【").append(billNumber).append("】:").append("异常:").append(result.getString("msg")).append("\n");
break; break;
} }