收款推凭证从弹性域获取值;客商账户名称处理;凭证号回写接口设置年份

This commit is contained in:
yuxueliang0813 2025-05-12 15:21:00 +08:00
parent f01baa5898
commit fe1f7e1445
5 changed files with 59 additions and 12 deletions

View File

@ -19,6 +19,7 @@ import kd.bos.logging.LogFactory;
import kd.bos.orm.query.QCP;
import kd.bos.orm.query.QFilter;
import kd.bos.servicehelper.BusinessDataServiceHelper;
import kd.bos.servicehelper.QueryServiceHelper;
import kd.bos.servicehelper.operation.SaveServiceHelper;
import kd.sdk.plugin.Plugin;
import shjh.jhzj7.fi.fi.plugin.form.info.RecFieldsInfo;
@ -40,6 +41,8 @@ import static shjh.jhzj7.fi.fi.utils.SapUtils.sap_accounVoucher;
public class RecPushVoucherOperation extends AbstractOperationServicePlugIn implements Plugin {
private final static Log logger = LogFactory.getLog(RecPushVoucherOperation.class);
private static final String glbdName = "gl_assist_bd";//核算项目组合纵表
private static final String customerName = "bd_customer";//客户标识
/**
@ -336,13 +339,19 @@ public class RecPushVoucherOperation extends AbstractOperationServicePlugIn impl
QFilter voucherFilters = new QFilter("sourcebill", QCP.equals, recBill.getPkValue());
voucherFilters.and(new QFilter("billstatus",QCP.equals,"C"));//已审核
DynamicObject gl_voucher = BusinessDataServiceHelper.loadSingle("gl_voucher",
"id,sourcebill,entries,entries.account,entries.debitlocal,entries.creditlocal,entries.entrydc,vouchertype",
"id,sourcebill,entries,entries.account,entries.assgrp,entries.debitlocal,entries.creditlocal,entries.entrydc,vouchertype",
voucherFilters.toArray());
if (gl_voucher != null) {
DynamicObject assgrpinfo;
String asstype;
DynamicObject glassistbd;
DynamicObject hsxminfo;
json_HEADER.put("BLART", gl_voucher.getString("vouchertype.number"));//凭证类型
DynamicObjectCollection entries = gl_voucher.getDynamicObjectCollection("entries");
if (entries != null && !entries.isEmpty()) {
//如果是客户拆分则从凭证上获取客户编号
boolean customersplit = recBill.getBoolean(RecFieldsInfo.CUSTOMER_SPLIT);
for (DynamicObject entry : entries) {
JSONObject IT_ITEMS = new JSONObject();
// 设置科目
@ -351,22 +360,22 @@ public class RecPushVoucherOperation extends AbstractOperationServicePlugIn impl
IT_ITEMS.put("HKONT", account.getString("number"));
//查找核算维度
DynamicObjectCollection checkItems = account.getDynamicObjectCollection("checkitementry");
if (checkItems!=null && checkItems.size()!=0){
if (!customersplit && checkItems!=null && checkItems.size()!=0){
//是否已经反写
boolean isMark=false;
boolean isMark = false;
for (DynamicObject checkItem : checkItems) {
//核算维度
String assTactItemName = checkItem.getString("asstactitem.name");
if (assTactItemName!=null){
if (assTactItemName != null){
switch (assTactItemName){
case "客户-获利段":
case "客户编码":
IT_ITEMS.put("KUNNR", cusOrSupNumber);
isMark=true;
isMark = true;
break;
case "供应商":
IT_ITEMS.put("LIFNR", cusOrSupNumber);
isMark=true;
isMark = true;
break;
}
}
@ -375,6 +384,25 @@ public class RecPushVoucherOperation extends AbstractOperationServicePlugIn impl
}
}
}
//从凭证弹性域获取客户编号
if(customersplit){
assgrpinfo = entry.getDynamicObject("assgrp");//核算维度(弹性域)
if(assgrpinfo != null){
DynamicObjectCollection gl_assist_bd = QueryServiceHelper.query(glbdName, "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("f0001".equals(asstype) || "f000057".equals(asstype)){
//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"));//利润中心_利润中心
}
}
}
}
}
// 处理金额

View File

@ -161,7 +161,12 @@ public class SupplierInitOperation extends AbstractOperationServicePlugIn implem
}
bankinfo = doc_bank.addNew();
bankinfo.set("bankaccount",json_bank.getString("banknumber"));//银行账号
bankinfo.set("accountname",json_bank.getString("acctname"));//账户名称
if(EsbUtils.isEmpty(json_bank.getString("acctname"))){
//如果入参中没有账户名称则使用当前名称
bankinfo.set("accountname",supname);//账户名称
}else{
bankinfo.set("accountname",json_bank.getString("acctname"));//账户名称
}
bankinfo.set("bank",bebankinfo.getLong("id"));//开户银行-行名行号 根据入参查找
bankinfo.set("currency",JhzjUtils.CNY);//币别 默认人民币
bankinfo.set("shjh_banktype",json_bank.getString("banktype"));//合作银行类型

View File

@ -130,7 +130,7 @@ public class CustomerControler {
currentCus.set("masterid",currentSupId);
//处理银行-新增-员工类客户不需要处理
if(!"M400".equals(type)){
handleBank(banksJson,currentCus.getDynamicObjectCollection("entry_bank"),cusnumber);
handleBank(banksJson,currentCus.getDynamicObjectCollection("entry_bank"),cusnumber,cusname);
}else{
//如果是个人则伙伴类型字段为个人
currentCus.set("type","4");//伙伴类型
@ -158,7 +158,7 @@ public class CustomerControler {
handleFive(customerfivesJson,currentCus.getDynamicObjectCollection("shjh_entry_five"),cusnumber);
//处理银行-新增-员工类客户不需要处理
if(!"M400".equals(type)){
handleBank(banksJson,currentCus.getDynamicObjectCollection("entry_bank"),cusnumber);
handleBank(banksJson,currentCus.getDynamicObjectCollection("entry_bank"),cusnumber,cusname);
}
SaveServiceHelper.save(new DynamicObject[]{currentCus});
}
@ -225,7 +225,7 @@ public class CustomerControler {
return null;
}
private void handleBank(JSONArray banksJson,DynamicObjectCollection doc_bank,String cusnumber){
private void handleBank(JSONArray banksJson,DynamicObjectCollection doc_bank,String cusnumber,String cusname){
if(banksJson == null){
return;
}
@ -240,7 +240,12 @@ public class CustomerControler {
bankinfo = doc_bank.addNew();
}
bankinfo.set("bankaccount",json_body.getString("banknumber"));//银行账号
bankinfo.set("accountname",json_body.getString("acctname"));//账户名称
if(EsbUtils.isEmpty(json_body.getString("acctname"))){
//如果入参中没有账户名称则使用当前名称
bankinfo.set("accountname",cusname);//账户名称
}else{
bankinfo.set("accountname",json_body.getString("acctname"));//账户名称
}
//根据详细分机银行 查找对应的行名行号
bebankinfo = BusinessDataServiceHelper.loadSingleFromCache(bebankName,"id,name",new QFilter[]{new QFilter("name","=",json_body.getString("bankname"))});
if(bebankinfo != null){

View File

@ -187,7 +187,12 @@ public class SupplierControler {
bankinfo = doc_bank.addNew();
}
bankinfo.set("bankaccount",json_bank.getString("banknumber"));//银行账号
bankinfo.set("accountname",json_bank.getString("acctname"));//账户名称
if(EsbUtils.isEmpty(json_bank.getString("acctname"))){
//如果入参中没有账户名称则使用当前名称
bankinfo.set("accountname",supname);//账户名称
}else{
bankinfo.set("accountname",json_bank.getString("acctname"));//账户名称
}
bankinfo.set("bank",bebankinfo.getLong("id"));//开户银行-行名行号 根据入参查找
bankinfo.set("currency",JhzjUtils.CNY);//币别 默认人民币
bankinfo.set("shjh_banktype",json_bank.getString("banktype"));//合作银行类型

View File

@ -105,6 +105,10 @@ public class VouchernumControler {
paybill.set("shjh_credentialnum",voucherNum);//SAP付款凭证号
paybill.set("shjh_voucherdate",formattedDateAsDate);//SAP凭证过账日期
if(formattedDate != null && formattedDate.length() > 4){
paybill.set("shjh_sapfiscalyear",formattedDate.substring(0,4));//SAP的会计年度-过账日期的年份
}
fkBillNum = paybill.getString("billno");
SaveServiceHelper.save(new DynamicObject[]{paybill});
// 可以添加更多的错误处理逻辑如记录到数据库等