diff --git a/main/java/shjh/jhzj7/fi/fi/plugin/operate/RecPushVoucherOperation.java b/main/java/shjh/jhzj7/fi/fi/plugin/operate/RecPushVoucherOperation.java index 8d05d08..02b19a2 100644 --- a/main/java/shjh/jhzj7/fi/fi/plugin/operate/RecPushVoucherOperation.java +++ b/main/java/shjh/jhzj7/fi/fi/plugin/operate/RecPushVoucherOperation.java @@ -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"));//利润中心_利润中心 + } + } + } + } } // 处理金额 diff --git a/main/java/shjh/jhzj7/fi/fi/plugin/operate/SupplierInitOperation.java b/main/java/shjh/jhzj7/fi/fi/plugin/operate/SupplierInitOperation.java index 9b6826c..674a863 100644 --- a/main/java/shjh/jhzj7/fi/fi/plugin/operate/SupplierInitOperation.java +++ b/main/java/shjh/jhzj7/fi/fi/plugin/operate/SupplierInitOperation.java @@ -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"));//合作银行类型 diff --git a/main/java/shjh/jhzj7/fi/fi/webapi/CustomerControler.java b/main/java/shjh/jhzj7/fi/fi/webapi/CustomerControler.java index 5429144..8bea18b 100644 --- a/main/java/shjh/jhzj7/fi/fi/webapi/CustomerControler.java +++ b/main/java/shjh/jhzj7/fi/fi/webapi/CustomerControler.java @@ -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){ diff --git a/main/java/shjh/jhzj7/fi/fi/webapi/SupplierControler.java b/main/java/shjh/jhzj7/fi/fi/webapi/SupplierControler.java index 631bb65..f06653c 100644 --- a/main/java/shjh/jhzj7/fi/fi/webapi/SupplierControler.java +++ b/main/java/shjh/jhzj7/fi/fi/webapi/SupplierControler.java @@ -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"));//合作银行类型 diff --git a/main/java/shjh/jhzj7/fi/fi/webapi/VouchernumControler.java b/main/java/shjh/jhzj7/fi/fi/webapi/VouchernumControler.java index d8141e1..60a2e28 100644 --- a/main/java/shjh/jhzj7/fi/fi/webapi/VouchernumControler.java +++ b/main/java/shjh/jhzj7/fi/fi/webapi/VouchernumControler.java @@ -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}); // 可以添加更多的错误处理逻辑,如记录到数据库等