收款sap推送优化
This commit is contained in:
parent
1ef67760d7
commit
14f6f36b6b
|
|
@ -265,8 +265,7 @@ public class PaybillPushSapOperation extends AbstractOperationServicePlugIn impl
|
|||
hsxminfo = QueryServiceHelper.queryOne("bd_supplier", "id,name,number",
|
||||
new QFilter[]{new QFilter("id", QCP.equals, glassistbd.getLong("assval"))});//维度值
|
||||
IT_ITEMS.put("LIFNR",hsxminfo.getString("number"));//供应商
|
||||
}
|
||||
else if("f000012".equals(asstype)){
|
||||
}else if("f000012".equals(asstype)){
|
||||
//利润中心 f000012
|
||||
hsxminfo = QueryServiceHelper.queryOne("shjh_pc", "id,name,number",
|
||||
new QFilter[]{new QFilter("id", QCP.equals, glassistbd.getLong("assval"))});//维度值
|
||||
|
|
|
|||
|
|
@ -309,7 +309,6 @@ public class RecPushVoucherOperation extends AbstractOperationServicePlugIn impl
|
|||
|
||||
/**
|
||||
* 获取SAP凭证行项目信息
|
||||
*
|
||||
* @param recBill 收款单动态对象
|
||||
* @return 包含行项目信息的JSONArray
|
||||
*/
|
||||
|
|
@ -318,8 +317,8 @@ public class RecPushVoucherOperation extends AbstractOperationServicePlugIn impl
|
|||
//源单类型
|
||||
String sourceBillType = recBill.getString("sourcebilltype");
|
||||
// 1. 获取客户/供应商编号
|
||||
String payerType = recBill.getString("payertype");
|
||||
String cusOrSupNumber = getCustomerOrSupplierNumber(payerType, recBill);
|
||||
// String payerType = recBill.getString("payertype");
|
||||
// String cusOrSupNumber = getCustomerOrSupplierNumber(payerType, recBill);
|
||||
|
||||
// 2. 获取原因码和SAP行项目文本
|
||||
String RSTGR = "";
|
||||
|
|
@ -365,39 +364,44 @@ public class RecPushVoucherOperation extends AbstractOperationServicePlugIn impl
|
|||
DynamicObjectCollection entries = gl_voucher.getDynamicObjectCollection("entries");
|
||||
if (entries != null && !entries.isEmpty()) {
|
||||
//如果是客户拆分,则从凭证上获取客户编号
|
||||
boolean customersplit = recBill.getBoolean(RecFieldsInfo.CUSTOMER_SPLIT);
|
||||
// boolean customersplit = recBill.getBoolean(RecFieldsInfo.CUSTOMER_SPLIT);
|
||||
for (DynamicObject entry : entries) {
|
||||
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");
|
||||
if (account != null) {
|
||||
IT_ITEMS.put("HKONT", account.getString("number"));
|
||||
//查找核算维度
|
||||
DynamicObjectCollection checkItems = account.getDynamicObjectCollection("checkitementry");
|
||||
if (!customersplit && checkItems!=null && checkItems.size()!=0){
|
||||
//是否已经反写
|
||||
boolean isMark = false;
|
||||
for (DynamicObject checkItem : checkItems) {
|
||||
//核算维度
|
||||
String assTactItemName = checkItem.getString("asstactitem.name");
|
||||
if (assTactItemName != null){
|
||||
switch (assTactItemName){
|
||||
case "客户-获利段":
|
||||
case "客户编码":
|
||||
IT_ITEMS.put("KUNNR", cusOrSupNumber);
|
||||
isMark = true;
|
||||
break;
|
||||
case "供应商":
|
||||
IT_ITEMS.put("LIFNR", cusOrSupNumber);
|
||||
isMark = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (isMark){
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
// DynamicObjectCollection checkItems = account.getDynamicObjectCollection("checkitementry");
|
||||
// if (!customersplit && checkItems!=null && checkItems.size()!=0){
|
||||
// //是否已经反写
|
||||
// boolean isMark = false;
|
||||
// for (DynamicObject checkItem : checkItems) {
|
||||
// //核算维度
|
||||
// String assTactItemName = checkItem.getString("asstactitem.name");
|
||||
// if (assTactItemName != null){
|
||||
// switch (assTactItemName){
|
||||
// case "客户-获利段":
|
||||
// case "客户编码":
|
||||
// IT_ITEMS.put("KUNNR", cusOrSupNumber);
|
||||
// isMark = true;
|
||||
// break;
|
||||
// case "供应商":
|
||||
// IT_ITEMS.put("LIFNR", cusOrSupNumber);
|
||||
// isMark = true;
|
||||
// break;
|
||||
// }
|
||||
// }
|
||||
// if (isMark){
|
||||
// break;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
//从凭证弹性域获取客户编号
|
||||
// if(customersplit){
|
||||
// }
|
||||
|
|
@ -413,12 +417,25 @@ public class RecPushVoucherOperation extends AbstractOperationServicePlugIn impl
|
|||
//t_bas_flex_property 表中获取对应编号 客户-获利段 f0001 客户编码 f000057
|
||||
hsxminfo = QueryServiceHelper.queryOne(customerName, "id,name,number",
|
||||
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)){
|
||||
//供应商 f000005
|
||||
hsxminfo = QueryServiceHelper.queryOne("bd_supplier", "id,name,number",
|
||||
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 {
|
||||
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)) {
|
||||
IT_ITEMS.put("UMSKZ", "W");//特殊总账标识-汇票时需设置为W
|
||||
|
|
@ -482,7 +493,6 @@ public class RecPushVoucherOperation extends AbstractOperationServicePlugIn impl
|
|||
|
||||
/**
|
||||
* 生成收款清账凭证数据
|
||||
*
|
||||
* @param recBill 收款单动态对象
|
||||
* @return 清账凭证数据JSON数组
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -48,6 +48,7 @@ public class RecRedPushOperation extends AbstractOperationServicePlugIn implemen
|
|||
public void onPreparePropertys(PreparePropertysEventArgs e) {
|
||||
super.onPreparePropertys(e);
|
||||
//预处理单据属性,把后续校验会用到的字段,尤其是二开字段,在这里加载一下
|
||||
e.getFieldKeys().add(RedPushValidator.KEY_BILL_NUM);
|
||||
e.getFieldKeys().add(RedPushValidator.KEY_HOT_ACCOUNT);
|
||||
e.getFieldKeys().add(RedPushValidator.IS_PUSH_SAP);
|
||||
|
||||
|
|
@ -119,7 +120,7 @@ public class RecRedPushOperation extends AbstractOperationServicePlugIn implemen
|
|||
try {
|
||||
String response = ApiUtils.sendPost(responseHead, responseBody, API_URL);
|
||||
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){
|
||||
//sap红冲凭证成功,反写sap凭证号和推送标记
|
||||
JSONObject sapReturnData = JSONObject.parseObject(response);
|
||||
|
|
|
|||
|
|
@ -202,22 +202,22 @@ public class ApiUtils {
|
|||
switch (code) {
|
||||
case "0":
|
||||
isSuccess=true;
|
||||
EsbUtils.saveLog("收款处理"+billNumber, apiName, formattedBody, response, true, "ESBReversalApi", "推送成功");
|
||||
EsbUtils.saveLog(billNumber, apiName, formattedBody, response, true, "ESBReversalApi", "推送成功");
|
||||
break;
|
||||
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");
|
||||
break;
|
||||
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");
|
||||
break;
|
||||
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");
|
||||
break;
|
||||
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");
|
||||
break;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue