金蝶EAS8.2,二次开发单据关联费用预算,新预算接口
2017-06-02 11:09
696 查看
EAS8.2版本中,可以通过后台插入数据的方式实现二次开发单据关联费用预算。
二次开发单据关联费用预算之后,相应的预算扣减、返还、查询等操作可以通过调用新预算接口来实现,以下代码仅供参考。
文末附加了如何通过插入数据的方式实现二次开发单据参与费用预算,数据库脚本Sql语句供参考。
通过插入数据的方式关联费用预算,脚本如下:
二次开发单据关联费用预算之后,相应的预算扣减、返还、查询等操作可以通过调用新预算接口来实现,以下代码仅供参考。
文末附加了如何通过插入数据的方式实现二次开发单据参与费用预算,数据库脚本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
相关文章推荐
- 金蝶EAS8.2,WAF2,F7数据过滤(单据头、分录均有F7字段)
- 分享做过的金蝶项目用到的宝贵资料!金蝶webservice接口、金蝶dep动态扩展平台、金蝶 EAS开发伙伴认证试题及答案
- 二次开发接口(API)与插件(Addin)
- 自动化(Automation)基础概念:二次开发接口(API)与插件(Addin)
- YbSoftwareFactory 代码生成插件【三】:二次开发之 IPlugInRepository 接口的实现
- 短信猫二次开发接口函数及规范
- vtiger CRM 二次开发接口Webservice调用实例
- 自动化(Automation)基础概念:二次开发接口(API)与插件(Addin)
- 二次开发单据在“特殊数据权限”的业务对象授权列表中不显示
- 企业Unix Shell行为审计系统——基于Enterprise Audit Shell(EAS)的二次开发
- eas bos二次开发总结[第三方jar、jcom、二次开发包放置]
- 联通spApi.jar短信接口二次开发
- 自动化(Automation)基础概念:二次开发接口(API)与插件(Addin)
- 二次开发WinWebMail邮件系统接口 - 企业邮件服务器解决方案
- 金蝶实习(十一)——简单的二次开发
- YbSoftwareFactory 代码生成插件【二】:二次开发之 IPlugInGroupRepository 接口的实现
- 自动化(Automation)基础概念:二次开发接口(API)与插件(Addin)
- color值存入数据库中,或二次开发接口使用问题
- 二次开发WinWebMail邮件系统接口
- LED显示屏二次开发接口的设计方案