收款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",
|
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"))});//维度值
|
||||||
|
|
|
||||||
|
|
@ -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数组
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue