收款推凭证从弹性域获取值;客商账户名称处理;凭证号回写接口设置年份
This commit is contained in:
parent
f01baa5898
commit
fe1f7e1445
|
|
@ -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"));//利润中心_利润中心
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 处理金额
|
||||
|
|
|
|||
|
|
@ -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"));//合作银行类型
|
||||
|
|
|
|||
|
|
@ -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){
|
||||
|
|
|
|||
|
|
@ -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"));//合作银行类型
|
||||
|
|
|
|||
|
|
@ -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});
|
||||
// 可以添加更多的错误处理逻辑,如记录到数据库等
|
||||
|
|
|
|||
Loading…
Reference in New Issue