您的位置:首页 > 其它

金蝶EAS8.2,二次开发单据关联费用预算,新预算接口

2017-06-02 11:09 696 查看
EAS8.2版本中,可以通过后台插入数据的方式实现二次开发单据关联费用预算。

二次开发单据关联费用预算之后,相应的预算扣减、返还、查询等操作可以通过调用新预算接口来实现,以下代码仅供参考。

文末附加了如何通过插入数据的方式实现二次开发单据参与费用预算,数据库脚本Sql语句供参考。

package com.kingdee.eas.custom.cnodc.util;

import java.math.BigDecimal;
import java.util.List;
import com.kingdee.bos.BOSException;
import com.kingdee.bos.Context;
import com.kingdee.bos.dao.IObjectValue;
import com.kingdee.bos.dao.ormapping.ObjectUuidPK;
import com.kingdee.bos.metadata.entity.SelectorItemCollection;
import com.kingdee.bos.metadata.entity.SelectorItemInfo;
import com.kingdee.bos.util.BOSUuid;
import com.kingdee.eas.common.EASBizException;
import com.kingdee.eas.custom.cnodc.OversPayFactory;
import com.kingdee.eas.custom.cnodc.OversPayInfo;
import com.kingdee.eas.ma.budget.BgCtrlResultCollection;
import com.kingdee.eas.ma.budget.BudgetCtrlFacadeFactory;
import com.kingdee.eas.ma.control.BgControlFacadeFactory;
import com.kingdee.eas.ma.nbudget.BgControlCaller;
import com.kingdee.eas.ma.nbudget.face.IBalance;
import com.kingdee.eas.ma.nbudget.face.IBudgetBalance;
import com.kingdee.eas.ma.nbudget.face.IControlResult;

/**
* 预算控制(新预算)工具类
* @author 郭旭
*
*/
public class BgUtil extends BgControlCaller{

/**
* 获取工具实例
* 用于调用标准产品提供的相关预算操作
*/
public static BgUtil getInstance(){
BgUtil instance = new BgUtil();
return instance;
}

/**
* 预算余额查询,用于前端
*/
public static BigDecimal getBalance(IObjectValue model) throws EASBizException, BOSException{

BigDecimal balance = BigDecimal.ZERO;
IBudgetBalance service = BgUtil.getInstance().queryBalance(model); //预算余额查询
List<IBalance> data = service.getBalance();
if(!data.isEmpty()){
IBalance bal = data.get(0);
balance = bal.getBalance();
}

return balance;

}

/**
* 预算余额查询,用于后台
*/
public static BigDecimal getBalance(Context ctx, IObjectValue model) throws EASBizException, BOSException{

BigDecimal balance = BigDecimal.ZERO;
IBudgetBalance service = BgUtil.getInstance().queryBalance(ctx, model); //预算余额查询
List<IBalance> data = service.getBalance();
if(!data.isEmpty()){
IBalance bal = data.get(0);
balance = bal.getBalance();
}

return balance;

}

/**
* 预算扣减,用于前端
*/
public static boolean deductBg(String billId) throws EASBizException, BOSException{

boolean flag = false;
IControlResult rs = BgUtil.getInstance().requestBudget(BOSUuid.read(billId));
int result = rs.getResult();
if(result == 1){
flag = true;
}

return flag;

}

/**
* 预算扣减,用于后台
*/
public static boolean deductBg(Context ctx, String billId) throws EASBizException, BOSException{

boolean flag = false;
IControlResult rs = BgUtil.getInstance().requestBudget(ctx, BOSUuid.read(billId));
int result = rs.getResult();
if(result == 1){
flag = true;
}

return flag;

}

/**
* 预算返还,用于前端
*/
public static boolean returnBg(String billId) throws EASBizException, BOSException{

boolean flag = false;
IControlResult rs = BgUtil.getInstance().returnBudget(BOSUuid.read(billId));
if(rs.getResult() == 1){
flag = true;
}

return flag;

}

/**
* 预算返还,用于后台
*/
public static boolean returnBg(Context ctx, String billId) throws EASBizException, BOSException{

boolean flag = false;
IControlResult rs = BgUtil.getInstance().returnBudget(ctx, BOSUuid.read(billId));
if(rs.getResult() == 1){
flag = true;
}

return flag;

}

/**
* 查询预算,用于前端
* 重写标准产品对应方法
*/
@Override
public IBudgetBalance queryBalance(IObjectValue model) throws BOSException, EASBizException {

if (model == null) return null;
IBudgetBalance balance = null;
// if (checkControl()) { //直接走新预算接口
if (true) {
com.kingdee.eas.ma.control.face.IBudgetBalance _balance = BgControlFacadeFactory.getRemoteInstance().queryBalance(model);
balance = transBudgetBalance(_balance);
} else {
BgCtrlResultCollection colls = BudgetCtrlFacadeFactory.getRemoteInstance().getBudget(model);
balance = transBudgetBalance(colls);
}

return balance;

}

/**
* 查询预算,用于后台
* 重写标准产品对应方法
*/
@Override
public IBudgetBalance queryBalance(Context ctx, IObjectValue model) throws BOSException, EASBizException {

if ((ctx == null) || (model == null)) return null;
IBudgetBalance balance = null;
// if (checkControl(ctx)) { //直接走新预算接口
if (true) {
com.kingdee.eas.ma.control.face.IBudgetBalance _balance = BgControlFacadeFactory.getLocalInstance(ctx).queryBalance(model);
balance = transBudgetBalance(_balance);
} else {
BgCtrlResultCollection colls = BudgetCtrlFacadeFactory.getLocalInstance(ctx).getBudget(model);
balance = transBudgetBalance(colls);
}

return balance;

}

/**
* 预算扣减,用于前端
* 解决二次开发单据无法进行预算扣减的问题
*/
@Override
public IControlResult requestBudget(BOSUuid billId) throws BOSException, EASBizException {

if (billId == null) return null;
IControlResult result = null;
com.kingdee.eas.ma.control.face.IControlResult _result = null;
// if (checkControl()) { //直接走新预算接口
if (true) {

// 海外工资单需要特殊逻辑分支
if(billId.getType().toString().equals("E98E8C79")){

SelectorItemCollection selectors = new SelectorItemCollection();
selectors.add(new SelectorItemInfo("*"));
selectors.add(new SelectorItemInfo("costCenter.id")); //成本中心
selectors.add(new SelectorItemInfo("costCenter.number"));
selectors.add(new SelectorItemInfo("feeType.id")); //费用类型
selectors.add(new SelectorItemInfo("feeType.number"));
selectors.add(new SelectorItemInfo("currency.id")); //币别
selectors.add(new SelectorItemInfo("currency.number"));
OversPayInfo billModel = OversPayFactory.getRemoteInstance().getOversPayInfo(new ObjectUuidPK(billId), selectors);
_result = BgControlFacadeFactory.getRemoteInstance().requestBudget(billModel);

} else {
_result = BgControlFacadeFactory.getRemoteInstance().requestBudget(billId);
}

result = transResult(_result);

} else {
result = requestOldBudget(billId);
}

return result;

}

/**
* 预算扣减,用于后台
* 解决二次开发单据无法进行预算扣减的问题
*/
@Override
public IControlResult requestBudget(Context ctx, BOSUuid billId) throws BOSException, EASBizException {

if ((ctx == null) || (billId == null)) return null;

IControlResult result = null;
com.kingdee.eas.ma.control.face.IControlResult _result = null;
// if (checkControl(ctx)) { //直接走新预算接口
if (true) {

// 海外工资单需要特殊逻辑分支
if(billId.getType().toString().equals("E98E8C79")){

SelectorItemCollection selectors = new SelectorItemCollection();
selectors.add(new SelectorItemInfo("*"));
selectors.add(new SelectorItemInfo("costCenter.id")); //成本中心
selectors.add(new SelectorItemInfo("costCenter.number"));
selectors.add(new SelectorItemInfo("feeType.id")); //费用类型
selectors.add(new SelectorItemInfo("feeType.number"));
selectors.add(new SelectorItemInfo("currency.id")); //币别
selectors.add(new SelectorItemInfo("currency.number"));
OversPayInfo billModel = OversPayFactory.getLocalInstance(ctx).getOversPayInfo(new ObjectUuidPK(billId), selectors);
_result = BgControlFacadeFactory.getLocalInstance(ctx).requestBudget(billModel);

} else {
_result = BgControlFacadeFactory.getLocalInstance(ctx).requestBudget(billId);
}

result = transResult(ctx, _result);
} else {
result = requestOldBudget(ctx, billId);
}

return result;

}

/**
* 预算返还,用于前端
* 重写标准产品对应方法
*/
@Override
public IControlResult returnBudget(BOSUuid billId) throws BOSException, EASBizException {

if (billId == null) return null;
IControlResult result = null;
// if (checkControl()) {
if (true) {
com.kingdee.eas.ma.control.face.IControlResult _result = BgControlFacadeFactory.getRemoteInstance().returnBudget(billId);
result = transResult(_result);
} else {
result = returnOldBudget(billId);
}

return result;

}

/**
* 预算返还,用于后台
* 重写标准产品对应方法
*/
@Override
public IControlResult returnBudget(Context ctx, BOSUuid billId) throws BOSException, EASBizException {

if ((ctx == null) || (billId == null)) return null;
IControlResult result = null;
// if (checkControl(ctx)) {
if (true) {
com.kingdee.eas.ma.control.face.IControlResult _result = BgControlFacadeFactory.getLocalInstance(ctx).returnBudget(billId);
result = transResult(ctx, _result);
} else {
result = returnOldBudget(ctx, billId);
}

return result;

}

}


通过插入数据的方式关联费用预算,脚本如下:

--业务类型字段说明
业务组织,1
业务项目及组合,2
币别,3
业务日期,4
预算扣减项,5
适用条件,6

--生成INSERT语句,需运行服务器端脚本
geninsert select * from T_MBG_BgControlData where fid = 'GG+f9Tbj/Ue9whbR3fTpiIoa948='

--删除海外工资单相关的注册信息
--delete from T_MBG_BgControlData where FBIZUNIT = 'com.kingdee.eas.custom.cnodc.app.OversPay';
--备份数据表
select * into T_MBG_BgControlData_bak from T_MBG_BgControlData
select * from T_MBG_BgControlData_bak

--查询海外工资单相关的注册信息
select * from T_MBG_BgControlData where FBIZUNIT = 'com.kingdee.eas.custom.cnodc.app.OversPay';

--业务组织
insert into t_mbg_bgcontroldata(FID, FCREATORID, FCREATETIME, FLASTUPDATEUSERID, FLASTUPDATETIME, FCONTROLUNITID,
FBIZSYSTEM, FBIZSYSTEMALIAS_L1, FBIZSYSTEMALIAS_L2, FBIZSYSTEMALIAS_L3, FBIZUNIT,
FBIZUNITALIAS_L1, FBIZUNITALIAS_L2, FBIZUNITALIAS_L3, FBIZ,
FBIZALIAS_L1, FBIZALIAS_L2, FBIZALIAS_L3, FBIZTYPE, FISDEFAULT, FISSYSTEMDEFAULT)
values
(NEWBOSID('8A1AF78F'), null, null, null, null, null,
'com.kingdee.eas.cp.bc', null, '费用管理', '費用管理', 'com.kingdee.eas.custom.cnodc.app.OversPay',
null, '海外工资单', '海外工资单', 'costCenter.number',
null, '成本中心.编码', '成本中心.编码', 1, 0, 1);

--业务项目及组合
insert into t_mbg_bgcontroldata(FID, FCREATORID, FCREATETIME, FLASTUPDATEUSERID, FLASTUPDATETIME, FCONTROLUNITID,
FBIZSYSTEM, FBIZSYSTEMALIAS_L1, FBIZSYSTEMALIAS_L2, FBIZSYSTEMALIAS_L3, FBIZUNIT,
FBIZUNITALIAS_L1, FBIZUNITALIAS_L2, FBIZUNITALIAS_L3, FBIZ,
FBIZALIAS_L1, FBIZALIAS_L2, FBIZALIAS_L3, FBIZTYPE, FISDEFAULT, FISSYSTEMDEFAULT)
values
(NEWBOSID('8A1AF78F'), null, null, null, null, null,
'com.kingdee.eas.cp.bc', null, '费用管理', '費用管理', 'com.kingdee.eas.custom.cnodc.app.OversPay',
null, '海外工资单', '海外工资单', 'feeType.number',
null, '费用类别.编码', '费用类别.编码', 2, 0, 1);

--币别
insert into t_mbg_bgcontroldata(FID, FCREATORID, FCREATETIME, FLASTUPDATEUSERID, FLASTUPDATETIME, FCONTROLUNITID,
FBIZSYSTEM, FBIZSYSTEMALIAS_L1, FBIZSYSTEMALIAS_L2, FBIZSYSTEMALIAS_L3, FBIZUNIT,
FBIZUNITALIAS_L1, FBIZUNITALIAS_L2, FBIZUNITALIAS_L3, FBIZ,
FBIZALIAS_L1, FBIZALIAS_L2, FBIZALIAS_L3, FBIZTYPE, FISDEFAULT, FISSYSTEMDEFAULT)
values
(NEWBOSID('8A1AF78F'), null, null, null, null, null,
'com.kingdee.eas.cp.bc', null, '费用管理', '費用管理', 'com.kingdee.eas.custom.cnodc.app.OversPay',
null, '海外工资单', '海外工资单', 'currency.number',
null, '币别.编码', '币别.编码', 3, 0, 1);

--业务日期
insert into t_mbg_bgcontroldata(FID, FCREATORID, FCREATETIME, FLASTUPDATEUSERID, FLASTUPDATETIME, FCONTROLUNITID,
FBIZSYSTEM, FBIZSYSTEMALIAS_L1, FBIZSYSTEMALIAS_L2, FBIZSYSTEMALIAS_L3, FBIZUNIT,
FBIZUNITALIAS_L1, FBIZUNITALIAS_L2, FBIZUNITALIAS_L3, FBIZ,
FBIZALIAS_L1, FBIZALIAS_L2, FBIZALIAS_L3, FBIZTYPE, FISDEFAULT, FISSYSTEMDEFAULT)
values
(NEWBOSID('8A1AF78F'), null, null, null, null, null,
'com.kingdee.eas.cp.bc', null, '费用管理', '費用管理', 'com.kingdee.eas.custom.cnodc.app.OversPay',
null, '海外工资单', '海外工资单', 'bizDate',
null, '业务日期', '业务日期', 4, 1, 1);

--预算扣减项
insert into t_mbg_bgcontroldata(FID, FCREATORID, FCREATETIME, FLASTUPDATEUSERID, FLASTUPDATETIME, FCONTROLUNITID,
FBIZSYSTEM, FBIZSYSTEMALIAS_L1, FBIZSYSTEMALIAS_L2, FBIZSYSTEMALIAS_L3, FBIZUNIT,
FBIZUNITALIAS_L1, FBIZUNITALIAS_L2, FBIZUNITALIAS_L3, FBIZ,
FBIZALIAS_L1, FBIZALIAS_L2, FBIZALIAS_L3, FBIZTYPE, FISDEFAULT, FISSYSTEMDEFAULT)
values
(NEWBOSID('8A1AF78F'), null, null, null, null, null,
'com.kingdee.eas.cp.bc', null, '费用管理', '費用管理', 'com.kingdee.eas.custom.cnodc.app.OversPay',
null, '海外工资单', '海外工资单', 'accountSumUSD',
null, '实发合计USD', '实发合计USD', 5, 0, 1);

--适用条件
insert into t_mbg_bgcontroldata(FID, FCREATORID, FCREATETIME, FLASTUPDATEUSERID, FLASTUPDATETIME, FCONTROLUNITID,
FBIZSYSTEM, FBIZSYSTEMALIAS_L1, FBIZSYSTEMALIAS_L2, FBIZSYSTEMALIAS_L3, FBIZUNIT,
FBIZUNITALIAS_L1, FBIZUNITALIAS_L2, FBIZUNITALIAS_L3, FBIZ,
FBIZALIAS_L1, FBIZALIAS_L2, FBIZALIAS_L3, FBIZTYPE, FISDEFAULT, FISSYSTEMDEFAULT)
values
(NEWBOSID('8A1AF78F'), null, null, null, null, null,
'com.kingdee.eas.cp.bc', null, '费用管理', '費用管理', 'com.kingdee.eas.custom.cnodc.app.OversPay',
null, '海外工资单', '海外工资单', 'costCenter.number',
null, '成本中心.编码', '成本中心.编码', 6, 0, 1);

--调用预算接口分析
select FBiz from T_MBG_BgControlData
where FBizUnit = 'com.kingdee.eas.custom.cnodc.app.OversPay' and FBizType = 4 and FIsDefault = 1 order by FBiz
select * from T_MBG_BgControlData
where FBizUnit = 'com.kingdee.eas.custom.cnodc.app.OversPay' and FBizType = 4 and FIsDefault = 1 order by FBiz
update T_MBG_BgControlData set FIsDefault = 1 where FBizUnit = 'com.kingdee.eas.custom.cnodc.app.OversPay' and FBizType = 4
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐