金蝶BOS开发指南_BOTP
5.3 其它接口
有时业务逻辑需要判断单据是否已经生成过凭证, 这时候可以通过存在单据里面的一个boolean型自有属性值来判断, 如果是自定义的单据, 则需要自己增加一个同名属性:
//是否已经生成凭证 boolean fiVouchered ;
单据转换完成, 源单已生成凭证后, 该属性值会被反写逻辑自动设置为true;
业务开发中可以调用如下代码获取此属性值, 如果属性值不为true则表示单据未生成过凭证: CoreBillBaseInfo srcBillInfo; ……
Boolean bIsVouchered = srcBillInfo.getBoolean(\ouchered\
41 / 59
金蝶BOS开发指南_BOTP
6 BOTP编程要点
6.1 规则定义
6.1.1 组织隔离
BOTP定义的转换规则都是按照组织隔离的, 其具体选择方式如下: a. 只能看到当前组织和上级组织定义的规则
b. 如果当前组织下有定义转换规则, 则只能使用当前组织下的规则 c. 如果当前组织下没有定义转换规则, 则使用根CU组织定义的规则 d. 只能修改在当前组织下定义的规则, 不能跨组织修改
6.1.2 属性是否可修改
规则定义界面有一个\属性是否可以修改\的属性:
该属性定义后, 在BOTP单据转换过程中不产生任何影响, BOTP引擎只保存此配置信息供业务系统使用, 如果业务系统需要对生成后的目标单做相关控制,可以读取BOTRuleSegmentInfo::isCanModify()方法获取目标属性是否允许修改,然后自行在代码中控制。
6.2 保存模式
6.2.1 不保存单据
当BOTP的单据转换规则配置为“不保存单据”时, 在单据转换完成后不会将目标单据及关联关系保存到数据库, 而是将关系序列化传到前台的某个域中, 直到单据被保存或提交为止; 在此期间,由于单据和关系还未保存到数据库, 因此该单据不能进行上/下查;
当转换规则设置为不暂存时, 关系会传到客户端保存到 CoreBillEditUI的makeRelations 属性上, 保存/提交单据时通过getMakeRelations读出并保存到数据库;
42 / 59
金蝶BOS开发指南_BOTP
6.2.2
暂存单据
当BOTP的单据转换规则配置为“暂存单据”时, 在单据转换完成后自动调用单据的保存(save)方法,将目标单据及关联关系保存到数据库, 当编辑界面打开后该单据可以进行上/下查;
6.2.3
提交单据
当BOTP的单据转换规则配置为“提交单据”时, 在单据转换完成后自动调用单据的提交(submit)方法,将目标单据及关联关系保存到数据库, 当编辑界面打开后该单据可以进行上/下查;
6.3 推式生成
6.3.1 界面操作
单据编辑界面基类CoreBillEditUI和序时薄CoreBillListUI定义了“推式生成”操作, 即根据当前单据生成指定类型的目标单据;在单据编辑界面表现为“推式生成”,在序时薄上则表现为“关联生成”:
对应UI的Action为 /**
* 关联生成单据,也叫推式生成。 */
public void actionCreateTo_actionPerformed(ActionEvent e) throws Exception {
43 / 59
金蝶BOS开发指南_BOTP
6.3.2 规则选择
点击“确定”后系统会弹出目标单据类型和规则选择界面, 然后根据用户的选择结果执行单据转换:
注意这里的目标单据类型和转换规则列表是受前文描述的“规则过滤”设置影响的,如果不满足过滤条件的规则,将不会出现在规则列表中;
6.4 拉式生成
6.4.1
界面操作
单据编辑界面基类CoreBillEditUI定义了“拉式生成”操作, 即根据指定的源单据生成当前类型单据;
对应UI的Action为 /**
* 拉式生成。 */
public void actionCreateFrom_actionPerformed(ActionEvent e) throws Exception {
44 / 59
金蝶BOS开发指南_BOTP
6.4.2
规则选择
点击“确定”后系统会弹出目标单据类型和规则选择界面, 然后根据用户的选择结果执行单据转换:
与推式生成类似, 这里的目标单据类型和转换规则列表是受“规则过滤”设置影响的,如果不满足过滤条件的规则,将不会出现在规则列表中; 6.4.3
源单列表
选好规则,点击“确定”后系统会弹出源单选择界面:
此界面的上半部分是当前待选择的源单列表,下半部分是已经选择的源单列表; 增加: 将当前待选单据/分录加入已选; 移除: 将当前已选单据/分录移除;
整单选取:将当前单据整单加入已选,如果当前选择的是分录,则将分录对应的单据所有分录全部加入; 整单移除:将当前单据整单移除,如果当前选择的是分录,则将分录对应的单据所有分录全部移除;
选定源单后,点击“确定”后BOTP引擎会根据用户的选择结果开始执行单据转换:
45 / 59