推送凭证(付款)__核算维度可配置优化

--s
This commit is contained in:
weiyunlong 2025-06-26 17:15:34 +08:00
parent da79adb2d3
commit 4718f5f05e
1 changed files with 18 additions and 8 deletions

View File

@ -26,10 +26,7 @@ import shjh.jhzj7.fi.fi.utils.domin.ResponseData;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.ArrayList; import java.util.*;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.concurrent.atomic.AtomicReference; import java.util.concurrent.atomic.AtomicReference;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -93,18 +90,25 @@ public class PaybillPushSapOperation extends AbstractOperationServicePlugIn impl
bill = BusinessDataServiceHelper.loadSingle(bill.getPkValue(), "cas_paybill"); bill = BusinessDataServiceHelper.loadSingle(bill.getPkValue(), "cas_paybill");
String shjhSourcesystem = bill.getString("shjh_sourcesystem");//来源系统 String shjhSourcesystem = bill.getString("shjh_sourcesystem");//来源系统
//主动:{1.fk:不清帐,直传付款凭证给sap;2.SAP:要清账,都传} 被动:{不用传清账} FKZJ2025030040 //主动:{1.fk:不清帐,直传付款凭证给sap;2.SAP:要清账,都传} 被动:{不用传清账} FKZJ2025030040
//todo:付款单是由票据直接生成,凭证如何推送
JSONObject data = new JSONObject(); JSONObject data = new JSONObject();
//抬头 //抬头
JSONObject isHeader = getIS_HEADER(bill); JSONObject isHeader = getIS_HEADER(bill);
//组装核算维度map
Map<String, String> sapMap = new HashMap<>();
QFilter filter1 = new QFilter("enable", QCP.equals, "1");
QFilter filter2 = new QFilter("shjh_sap", QCP.not_equals, "");
DynamicObject[] bdAsstacttypes = BusinessDataServiceHelper.load("bd_asstacttype", "id,shjh_sap,enable,flexfield", new QFilter[]{filter1, filter2});
for (DynamicObject bdAsstacttype : bdAsstacttypes) {
sapMap.put(bdAsstacttype.getString("flexfield"), bdAsstacttype.getString("shjh_sap"));
}
// 时间问题代码未优化提取公共方法
// 前提:若无凭证,校验 // 前提:若无凭证,校验
// : // :
// 1.遍历付款单明细分录,若任意一行中存在SAP凭证号:组装明细XX,拿号调方法(W);遍历票据分录,拿票据号,查收款单(将表头凭证信息)_无行编号,SAP会计科目(从收款单对应凭证取借方),清张金额取票据(转让金额) // 1.遍历付款单明细分录,若任意一行中存在SAP凭证号:组装明细XX,拿号调方法(W);遍历票据分录,拿票据号,查收款单(将表头凭证信息)_无行编号,SAP会计科目(从收款单对应凭证取借方),清张金额取票据(转让金额)
// 2.若无SAP凭证号:联查凭证(遍历,借方iteam{SGTXT:凭证行摘要},遍历票_查收款单(将表头凭证信息):行没有) // 2.若无SAP凭证号:联查凭证(遍历,借方iteam{SGTXT:凭证行摘要},遍历票_查收款单(将表头凭证信息):行没有)
// 非票: // 非票:
// 1.来源SAP :(iteam{}) // 1.来源SAP :(付款单查凭证:遍历分录:if贷iteam{钱取贷方} 遍历明细clear{})
// 2.else // 2.else(item:付款单联查凭证:遍历分录{原逻辑})
QFilter q1 = new QFilter("sourcebill", QCP.equals, bill.getPkValue()); QFilter q1 = new QFilter("sourcebill", QCP.equals, bill.getPkValue());
QFilter q2 = new QFilter("billstatus",QCP.equals,"C"); QFilter q2 = new QFilter("billstatus",QCP.equals,"C");
DynamicObject gl_voucher = BusinessDataServiceHelper.loadSingle("gl_voucher", DynamicObject gl_voucher = BusinessDataServiceHelper.loadSingle("gl_voucher",
@ -343,6 +347,8 @@ public class PaybillPushSapOperation extends AbstractOperationServicePlugIn impl
}else if("f000060".equals(asstype)){ }else if("f000060".equals(asstype)){
//行项目的参考码 //行项目的参考码
IT_ITEMS.put("XREF3",glassistbd.getString("assval")); IT_ITEMS.put("XREF3",glassistbd.getString("assval"));
}else if(sapMap.containsKey(asstype)){
IT_ITEMS.put(sapMap.get(asstype),glassistbd.getString("assval"));
} }
} }
} }
@ -532,6 +538,8 @@ public class PaybillPushSapOperation extends AbstractOperationServicePlugIn impl
}else if("f000060".equals(asstype)){ }else if("f000060".equals(asstype)){
//行项目的参考码 //行项目的参考码
IT_ITEMS.put("XREF3",glassistbd.getString("assval")); IT_ITEMS.put("XREF3",glassistbd.getString("assval"));
}else if(sapMap.containsKey(asstype)){
IT_ITEMS.put(sapMap.get(asstype),glassistbd.getString("assval"));
} }
} }
} }
@ -679,6 +687,8 @@ public class PaybillPushSapOperation extends AbstractOperationServicePlugIn impl
}else if("f000060".equals(asstype)){ }else if("f000060".equals(asstype)){
//行项目的参考码 //行项目的参考码
IT_ITEMS.put("XREF3",glassistbd.getString("assval")); IT_ITEMS.put("XREF3",glassistbd.getString("assval"));
}else if(sapMap.containsKey(asstype)){
IT_ITEMS.put(sapMap.get(asstype),glassistbd.getString("assval"));
} }
} }
} }