收款单、预提记账单、定期预提、上划、下拨核算维度传值sap优化

This commit is contained in:
yuxueliang0813 2025-06-27 11:19:54 +08:00
parent 22e9e10298
commit 595d59dd59
5 changed files with 92 additions and 19 deletions

View File

@ -28,6 +28,7 @@ import shjh.jhzj7.fi.fi.utils.domin.ResponseData;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Map;
/**
* 定期预提记账处理 shjh_cim_depositprein_ext-单据推送sap操作插件
@ -75,13 +76,15 @@ public class DepositpreintSapOperation extends AbstractOperationServicePlugIn im
DynamicObject prinfo;//定期预提记账处理单
JSONObject sapReturnData;
ResponseData respdata;
//组装核算维度与sap凭证item字段对应关系map
Map<String, String> sapMap = SapUtils.getAsstacttypeMap();
for (int i = 0; i < dos.length; i++) {
prinfo = BusinessDataServiceHelper.loadSingle(dos[i].getPkValue(), dos[i].getDataEntityType().getName());
if(prinfo.getBoolean("shjh_needvoucher") && !prinfo.getBoolean("shjh_sendsap")){
//如果预提记账处理单需要生成凭证且未推送sap的才推送sap
//判断原蓝单和红单调用sap不同接口 操作类别 冲销预提收益-红单 预提收益-蓝单
if("preint".equals(prinfo.getString("operatetype"))){
sapReturnData = sendBlueVoucher(prinfo);//蓝单
sapReturnData = sendBlueVoucher(prinfo,sapMap);//蓝单
if(sapReturnData != null && "0".equals(sapReturnData.getString("code"))){
//解析sap凭证接口返回值
respdata = ApiUtils.getResponseData(sapReturnData);
@ -169,7 +172,7 @@ public class DepositpreintSapOperation extends AbstractOperationServicePlugIn im
return sapReturnData;
}
private JSONObject sendBlueVoucher(DynamicObject prinfo){
private JSONObject sendBlueVoucher(DynamicObject prinfo, Map<String, String> sapMap){
//SAP定期预提收益凭证接口入参组装和调用
JSONObject IS_HEADER = new JSONObject();//抬头
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");//日期格式化工具
@ -252,11 +255,39 @@ public class DepositpreintSapOperation extends AbstractOperationServicePlugIn im
hsxminfo = QueryServiceHelper.queryOne(ccName, "id,name,number",
new QFilter[]{new QFilter("id", QCP.equals, glassistbd.getLong("assval"))});//维度值
item.put("KOSTL",hsxminfo.getString("number"));//成本中心_成本中心
}else if("f000054".equals(asstype) || "f000014".equals(asstype)){
//原因码 f000014
//付款原因代码 f000054
hsxminfo = QueryServiceHelper.queryOne("gl_cashflowitem", "id,name,number",
new QFilter[]{new QFilter("id", QCP.equals, glassistbd.getLong("assval"))});//维度值
item.put("RSTGR",hsxminfo.getString("number"));
}
}
gl_assist_bd = QueryServiceHelper.query("gl_assist_txt", "asstype,assval",
new QFilter[]{new QFilter("hg.id", QCP.equals, assgrpinfo.getPkValue())});//核算项目组合纵表-文本
for (int j = 0; j < gl_assist_bd.size(); j++) {
glassistbd = gl_assist_bd.get(j);
asstype = glassistbd.getString("asstype");//核算项目类型-对应核算维度的字段名
if("f000054".equals(asstype)){
//原因码 f000054
item.put("RSTGR",glassistbd.getString("assval"));
}else if("f000056".equals(asstype)){
//分配编号 f000056
item.put("ZUONR",glassistbd.getString("assval"));
}else if("f000023".equals(asstype)){
//税码 f000023
item.put("MWSKZ",glassistbd.getString("assval"));
}else if("f000031".equals(asstype)){
//税基 f000031
item.put("FWBAS",glassistbd.getString("assval"));
}else if("f000060".equals(asstype)){
//行项目的参考码
item.put("XREF3",glassistbd.getString("assval"));
}else if(sapMap.containsKey(asstype)){
item.put(sapMap.get(asstype),glassistbd.getString("assval"));
}
}
}
// item.put("RSTGR", "014");//原因代码_原因码
// item.put("SGTXT", SGTXT);//行项目文本_SAP会计科目行项目号
IT_ITEM.add(item);
}
}else{

View File

@ -32,7 +32,9 @@ import shjh.jhzj7.fi.fi.utils.domin.ResponseData;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Map;
import static shjh.jhzj7.fi.fi.utils.SapUtils.getAsstacttypeMap;
import static shjh.jhzj7.fi.fi.utils.SapUtils.sap_accounVoucher;
/**
@ -152,6 +154,8 @@ public class RecPushVoucherOperation extends AbstractOperationServicePlugIn impl
if (StringUtils.equals(KEY_PUSH_VOUCHER, operationKey)) {
DynamicObject[] dataEntities = e.getDataEntities();
if (dataEntities != null && dataEntities.length >= 1) {
//组装核算维度与sap凭证item字段对应关系map
Map<String, String> sapMap = getAsstacttypeMap();
for (DynamicObject dataEntity : dataEntities) {
DynamicObject recBill = BusinessDataServiceHelper.loadSingle(dataEntity.getLong("id"), "cas_recbill");
if (null != recBill) {
@ -160,14 +164,15 @@ public class RecPushVoucherOperation extends AbstractOperationServicePlugIn impl
JSONObject json_HEADER = getIS_HEADER(recBill);
data.put("IS_HEADER", json_HEADER);
//详细参考IT_ITEM
JSONArray itItem = getIT_ITEM(recBill,json_HEADER);
JSONArray itItem = getIT_ITEM(recBill,json_HEADER,sapMap);
if (itItem == null){
this.getOperationResult().setSuccess(false);//成功true;失败false
this.getOperationResult().setMessage("金蝶凭证不存在或未审核"); // 提示内容
this.getOperationResult().setShowMessage(true); // 是否显示提示消息
continue;
}
data.put("IT_ITEM", getIT_ITEM(recBill,json_HEADER));
// data.put("IT_ITEM", getIT_ITEM(recBill,json_HEADER));
data.put("IT_ITEM", itItem);
//收款类型=推预付款员工还款需要传清账数据
String receivingType = recBill.getString("receivingtype.number");
if ("103".equals(receivingType) || "109".equals(receivingType)) {
@ -340,7 +345,7 @@ public class RecPushVoucherOperation extends AbstractOperationServicePlugIn impl
* @param recBill 收款单动态对象
* @return 包含行项目信息的JSONArray
*/
private JSONArray getIT_ITEM(DynamicObject recBill , JSONObject json_HEADER) {
private JSONArray getIT_ITEM(DynamicObject recBill , JSONObject json_HEADER, Map<String, String> sapMap) {
JSONArray IT_ITEM = new JSONArray();
//源单类型
String sourceBillType = recBill.getString("sourcebilltype");
@ -467,6 +472,8 @@ public class RecPushVoucherOperation extends AbstractOperationServicePlugIn impl
}else if("f000060".equals(asstype)){
//行项目的参考码 f000031
IT_ITEMS.put("XREF3",glassistbd.getString("assval"));
}else if(sapMap.containsKey(asstype)){
IT_ITEMS.put(sapMap.get(asstype),glassistbd.getString("assval"));
}
}
}

View File

@ -27,6 +27,7 @@ import shjh.jhzj7.fi.fi.utils.domin.ResponseData;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Map;
/**
* 理财预提记账处理 shjh_cim_intbill_reve_ext-单据推送sap操作插件
@ -75,13 +76,15 @@ public class RevenueBillOperation extends AbstractOperationServicePlugIn impleme
DynamicObject prinfo;//预提记账处理单
JSONObject sapReturnData;
ResponseData respdata;
//组装核算维度与sap凭证item字段对应关系map
Map<String, String> sapMap = SapUtils.getAsstacttypeMap();
for (int i = 0; i < dos.length; i++) {
prinfo = BusinessDataServiceHelper.loadSingle(dos[i].getPkValue(), dos[i].getDataEntityType().getName());
if(prinfo.getBoolean("shjh_needvoucher") && !prinfo.getBoolean("shjh_sendsap")){
//如果预提记账处理单需要生成凭证且未推送sap的才推送sap
//判断原蓝单和红单调用sap不同接口 操作类别 冲销预提收益-红单 预提收益-蓝单
if("interestrev".equals(prinfo.getString("operatype"))){
sapReturnData = sendBlueVoucher(prinfo);//蓝单
sapReturnData = sendBlueVoucher(prinfo,sapMap);//蓝单
if(sapReturnData != null && "0".equals(sapReturnData.getString("code"))){
//解析sap凭证接口返回值
respdata = ApiUtils.getResponseData(sapReturnData);
@ -176,7 +179,7 @@ public class RevenueBillOperation extends AbstractOperationServicePlugIn impleme
return sapReturnData;
}
private JSONObject sendBlueVoucher(DynamicObject prinfo){
private JSONObject sendBlueVoucher(DynamicObject prinfo, Map<String, String> sapMap){
//SAP预提收益凭证接口入参组装和调用
JSONObject IS_HEADER = new JSONObject();//抬头
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");//日期格式化工具
@ -259,11 +262,39 @@ public class RevenueBillOperation extends AbstractOperationServicePlugIn impleme
hsxminfo = QueryServiceHelper.queryOne(ccName, "id,name,number",
new QFilter[]{new QFilter("id", QCP.equals, glassistbd.getLong("assval"))});//维度值
item.put("KOSTL",hsxminfo.getString("number"));//成本中心_成本中心
}else if("f000054".equals(asstype) || "f000014".equals(asstype)){
//原因码 f000014
//付款原因代码 f000054
hsxminfo = QueryServiceHelper.queryOne("gl_cashflowitem", "id,name,number",
new QFilter[]{new QFilter("id", QCP.equals, glassistbd.getLong("assval"))});//维度值
item.put("RSTGR",hsxminfo.getString("number"));
}
}
gl_assist_bd = QueryServiceHelper.query("gl_assist_txt", "asstype,assval",
new QFilter[]{new QFilter("hg.id", QCP.equals, assgrpinfo.getPkValue())});//核算项目组合纵表-文本
for (int j = 0; j < gl_assist_bd.size(); j++) {
glassistbd = gl_assist_bd.get(j);
asstype = glassistbd.getString("asstype");//核算项目类型-对应核算维度的字段名
if("f000054".equals(asstype)){
//原因码 f000054
item.put("RSTGR",glassistbd.getString("assval"));
}else if("f000056".equals(asstype)){
//分配编号 f000056
item.put("ZUONR",glassistbd.getString("assval"));
}else if("f000023".equals(asstype)){
//税码 f000023
item.put("MWSKZ",glassistbd.getString("assval"));
}else if("f000031".equals(asstype)){
//税基 f000031
item.put("FWBAS",glassistbd.getString("assval"));
}else if("f000060".equals(asstype)){
//行项目的参考码
item.put("XREF3",glassistbd.getString("assval"));
}else if(sapMap.containsKey(asstype)){
item.put(sapMap.get(asstype),glassistbd.getString("assval"));
}
}
}
// item.put("RSTGR", "014");//原因代码_原因码
// item.put("SGTXT", SGTXT);//行项目文本_SAP会计科目行项目号
IT_ITEM.add(item);
}
}else{

View File

@ -42,6 +42,7 @@ public class TransdownbillOperation extends AbstractOperationServicePlugIn imple
private static final String glbdName = "gl_assist_bd";//核算项目组合纵表
private final static Log logger = LogFactory.getLog(TransdownbillOperation.class);
@Override
public void beforeExecuteOperationTransaction(BeforeOperationArgs e) {
super.beforeExecuteOperationTransaction(e);
@ -73,11 +74,13 @@ public class TransdownbillOperation extends AbstractOperationServicePlugIn imple
DynamicObject prinfo;//下拨处理单
JSONObject sapReturnData;
ResponseData respdata;
//组装核算维度与sap凭证item字段对应关系map
Map<String, String> sapMap = SapUtils.getAsstacttypeMap();
for (int i = 0; i < dos.length; i++) {
prinfo = BusinessDataServiceHelper.loadSingle(dos[i].getPkValue(), dos[i].getDataEntityType().getName());
if(!prinfo.getBoolean("shjh_sendsap")){
//如果下拨处理单需要生成凭证且未推送sap的才推送sap
sapReturnData = sendBlueVoucher(prinfo);//蓝单
sapReturnData = sendBlueVoucher(prinfo,sapMap);
if(sapReturnData != null && "0".equals(sapReturnData.getString("code"))){
//解析sap凭证接口返回值
respdata = ApiUtils.getResponseData(sapReturnData);
@ -97,7 +100,8 @@ public class TransdownbillOperation extends AbstractOperationServicePlugIn imple
}
}
}
private JSONObject sendBlueVoucher(DynamicObject prinfo){
private JSONObject sendBlueVoucher(DynamicObject prinfo, Map<String, String> sapMap){
//SAP下拨处理单凭证接口入参组装和调用
JSONObject IS_HEADER = new JSONObject();//抬头
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");//日期格式化工具
@ -139,8 +143,7 @@ public class TransdownbillOperation extends AbstractOperationServicePlugIn imple
String asstype;
DynamicObject glassistbd;
DynamicObject hsxminfo;
//组装核算维度map
Map<String, String> sapMap = SapUtils.getAsstacttypeMap();
for (DynamicObject entry : entries) {
item = new JSONObject();
account = entry.getDynamicObject("account");//科目

View File

@ -43,6 +43,7 @@ public class TransupbillOperation extends AbstractOperationServicePlugIn impleme
private static final String glbdName = "gl_assist_bd";//核算项目组合纵表
private final static Log logger = LogFactory.getLog(TransdownbillOperation.class);
@Override
public void beforeExecuteOperationTransaction(BeforeOperationArgs e) {
super.beforeExecuteOperationTransaction(e);
@ -74,11 +75,13 @@ public class TransupbillOperation extends AbstractOperationServicePlugIn impleme
DynamicObject prinfo;//上划处理单
JSONObject sapReturnData;
ResponseData respdata;
//组装核算维度与sap凭证item字段对应关系map
Map<String, String> sapMap = SapUtils.getAsstacttypeMap();
for (int i = 0; i < dos.length; i++) {
prinfo = BusinessDataServiceHelper.loadSingle(dos[i].getPkValue(), dos[i].getDataEntityType().getName());
if(!prinfo.getBoolean("shjh_sendsap")){
//如果上划处理单需要生成凭证且未推送sap的才推送sap
sapReturnData = sendBlueVoucher(prinfo);
sapReturnData = sendBlueVoucher(prinfo,sapMap);
if(sapReturnData != null && "0".equals(sapReturnData.getString("code"))){
//解析sap凭证接口返回值
respdata = ApiUtils.getResponseData(sapReturnData);
@ -99,7 +102,7 @@ public class TransupbillOperation extends AbstractOperationServicePlugIn impleme
}
}
private JSONObject sendBlueVoucher(DynamicObject prinfo){
private JSONObject sendBlueVoucher(DynamicObject prinfo, Map<String, String> sapMap){
//SAP上划处理单凭证接口入参组装和调用
JSONObject IS_HEADER = new JSONObject();//抬头
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");//日期格式化工具
@ -141,8 +144,6 @@ public class TransupbillOperation extends AbstractOperationServicePlugIn impleme
String asstype;
DynamicObject glassistbd;
DynamicObject hsxminfo;
//组装核算维度map
Map<String, String> sapMap = SapUtils.getAsstacttypeMap();
for (DynamicObject entry : entries) {
item = new JSONObject();
account = entry.getDynamicObject("account");//科目