From fe1f7e1445a3a31285a538291812fedc2c553cb7 Mon Sep 17 00:00:00 2001 From: yuxueliang0813 <407010292@qq.com> Date: Mon, 12 May 2025 15:21:00 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=B6=E6=AC=BE=E6=8E=A8=E5=87=AD=E8=AF=81?= =?UTF-8?q?=E4=BB=8E=E5=BC=B9=E6=80=A7=E5=9F=9F=E8=8E=B7=E5=8F=96=E5=80=BC?= =?UTF-8?q?=EF=BC=9B=E5=AE=A2=E5=95=86=E8=B4=A6=E6=88=B7=E5=90=8D=E7=A7=B0?= =?UTF-8?q?=E5=A4=84=E7=90=86=EF=BC=9B=E5=87=AD=E8=AF=81=E5=8F=B7=E5=9B=9E?= =?UTF-8?q?=E5=86=99=E6=8E=A5=E5=8F=A3=E8=AE=BE=E7=BD=AE=E5=B9=B4=E4=BB=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../operate/RecPushVoucherOperation.java | 40 ++++++++++++++++--- .../plugin/operate/SupplierInitOperation.java | 7 +++- .../jhzj7/fi/fi/webapi/CustomerControler.java | 13 ++++-- .../jhzj7/fi/fi/webapi/SupplierControler.java | 7 +++- .../fi/fi/webapi/VouchernumControler.java | 4 ++ 5 files changed, 59 insertions(+), 12 deletions(-) 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}); // 可以添加更多的错误处理逻辑,如记录到数据库等