目录一、扩展注意事项..........................................................................................................................2二、gui扩展.....................................................................................................................................41费用报销主要元数据............................................................................................................4三、web扩展...................................................................................................................................81费用功能扩展.......................................................................................................................81.1web增加打回功能.....................................................................................................81.2反审核功能扩展.......................................................................................................121.3查看影像扩展..........................................................................................................142报销平台.............................................................................................................................162.1带申请中页签报销平台扩展...................................................................................162.1.1扩展需求:报销平台列表页需要增加字段................................................162.1.2报销平台列表页设置过滤和排序................................................................162.1.3报销平台增加二开单据列表........................................................................182.2.4报销平台默认选中页签扩展........................................................................192.2.5报销平台自助报销服务区域扩展................................................................192.2.6.切换报销平台按钮隐藏...............................................................................232.2左树右表报销平台扩展...........................................................................................242.2.1.切换报销平台报销平台隐藏.......................................................................242.2.2扩展需求:隐藏标准列表页面,增加二开列表页面................................253费用业务单据页面扩展......................................................................................................293.1费用报销单..............................................................................................................293.1.1扩展标准js的_public方法...........................................................................293.1.2页面二开控件初始化扩展............................................................................303.1.3分录扩展.......................................................................................................323.1.4扩展单据增加冲申请和冲借款分录............................................................343.1.5分录字段弹框实现........................................................................................353.1.6提交单据相关扩展........................................................................................363.1.7审批、核定单据相关扩展............................................................................393.2差旅报销单..............................................................................................................403.2.1分录扩展金额字段,计算合计金额............................................................403.3web端金额精度及金额计算...................................................................................413.4费用单据类型名称扩展...........................................................................................424基础资料扩展.....................................................................................................................454.1费用类型扩展..........................................................................................................454.1.1费用类型绑定增加单据类型........................................................................454.1.2业务单据费用类型扩展................................................................................474.2收款信息..................................................................................................................54一、扩展注意事项1、扩展开发注意事项:一定要采用兼容标准产品、兼容后续补丁的方式二开。(1)对于元数据、•不兼容扩展方式:bos工具中采用直接修改元数据,然后用私包形式部署。这种方式如果标准产品补丁中对元数据有更改,打补丁后就会造成冲突。•兼容扩展方式:通过dep扩展元数据。这样后续才能持续更新补丁,不会因扩展开发引起冲突。只有dep不支持扩展的元数据,才采用直接修改元数据的方式扩展,比如枚举类型等。这种元数据标准产品基本不修改,所以影响较小。但也还是有冲突风险,要少用。(2)对于代码•不兼容扩展方式:采用直接修改标准代码,私包形式部署。会造成补丁冲突。•兼容扩展方式:采用eas提供的扩展类去扩展代码。如客户端页面扩展类xxCTEx、服务端扩展类XXControllerBeanEx、js在扩展平台的扩展js中扩展代码。如何使用扩展类进行扩展,可参考以下文档《EAS扩展类开发介绍》。(3)对于代码•不兼容扩展方式:虽然是采用eas提供的扩展类去扩展,但在扩展方法或事件中,直接复制的标准产品代码,在该代码上直接进行的修改。这种方式同样会造成补丁冲突。因为标准的这些方法在后续补丁中是会随着需求变动等因素而更改的。因为方法被重写了,而扩展的该方法还是以前的代码,就会造成补丁的这种更改无法生效。•兼容扩展方式:扩展方法时,先调用标准产品该方法,再做二开业务代码的修改。类似java继承类直接,用super先调用父类方法,在做子类的扩展处理。这样即使标准产品后续补丁更改了该方法,扩展的方法同样能够生效,不会存在冲突情况。注意:web端页面的before、after这些事件,在扩展页面重写不会覆盖标准的事件,所以扩展这些事件不需要再调用标准事件。(4)二开过程中遇到标准产品不兼容,扩展开发困难,比如方法私有无法调用,没有扩展点,只能复制标准产品代码或直接更改标准产品代码才能实现二开时,可以提单给费用报销模块,注明遇到的二开问题,与标准产品的冲突点。我们会评估二开需求,合理优化产品,提高产品兼容性2、费用报销业务扩展注意事项:•1、费用模块所有单据,在单据提交后,不允许再保存单据(比如前台将隐藏的save按钮放出以及后台调save)。如果有修改,只能通过单据提交来更新单据数据。原因详见3.1.5章节。•2、费用模块所有单据,不允许在单据提交过程中,同时再调单据保存或提交方法。原因详见3.1.5章节。•3、费用单据的状态变化往往都伴随着相关业务的处理,如预算及相关金额反写、上游单据状态及金额反写等。比如单据废弃、审批不通过就要返还预算和上游单据余额。所以一般不允许二开直接反写或通过后台事务等方式直接改单据状态。如果一定要二开,也要在完全清楚标准产品相关业务的情况下二开。•4、费用的预算、额度业务不建议进行二开,因为这些业务往往很复杂,牵连很广。扩展开发难度大,很难完全把握业务点。付款和生成凭证业务因为需要保证安全可靠性,也不建议二开。二、gui扩展1费用报销主要元数据gui扩展时注意:(1)gui费用报销和费用核算下列表页为不同页面,具体如下表。(2)gui费用报销和费用核算下列表页,除了还款单外,页面所加载的query,都受CP014(是否在客户端序时簿显示分录明细信息)参数控制,页面加载时,动态绑定的。CP014为否,就为页面绑定的query,该query只有单头字段;CP014为是,query为带分录query。所以要根据扩展需求,扩展不同的query。具体如下表。(3)套打各单据,各分录的query都可以在com.kingdee.eas.cp.bc.util.BizCollBillDataProvider类中找到。单据元数据费用申请单bosType:E76173ADbillTypeCode:70实体:com.kingdee.eas.cp.bc.app.OtherExpenseBill实体表:com.kingdee.eas.cp.bc.app.T_BC_OtherExpenseBill分录表:com.kingdee.eas.cp.bc.app.T_BC_OtherExpenseBillEntryGUI编辑页:com.kingdee.eas.cp.bc.client.OtherExpenseEditUI1.gui费用报销下GUI列表页:com.kingdee.eas.cp.bc.client.OtherExpenseReqListUIGUI列表页query:com.kingdee.eas.cp.bc.app.OtherExpBillQueryGUI带分录query:com.kingdee.eas.cp.bc.app.OtherExpBillWithEntryQuery2.gui费用核算下(eas8.2、8.5才有核算)GUI核算下列表页:com.kingdee.eas.cp.bc.client.OtherExpenseReqShareListUIGUI核算下列表页query:com.kingdee.eas.cp.bc.app.OtherExpBillSharingQueryGUI核算下带分录query:com.kingdee.eas.cp.bc.app.OtherExpBillWithEntrySharingQuery3.套打queryReportQuery:com.kingdee.eas.cp.bc.app.OtherExpBillForPrintQueryR1ReportBillQuery:com.kingdee.eas.cp.bc.app.OtherExpenseBillForR1PrintQueryR1ReportEntryQuery:com.kingdee.eas.cp.bc.app.OtherExpenseBillEntryForPrintQuery出差申请单bosType:DE853384billTypeCode:10实体:com.kingdee.eas.cp.bc.app.EvectionReqBill实体表:com.kingdee.eas.cp.bc.app.T_BC_EvectionReqBillGUI编辑页:com.kingdee.eas.cp.bc.client.EvectionReqBillEditUI1.gui费用报销下GUI列表页:com.kingdee.eas.cp.bc.client.EvectionReqBillListUIGUI列表页query:com.kingdee.eas.cp.bc.app.EvectionReqQueryGUI带分录query:com.kingdee.eas.cp.bc.app.EvectionReqWithEntryQuery2.gui费用核算下(eas8.2、8.5才有核算)GUI核算下列表页:com.kingdee.eas.cp.bc.client.EvectionReqBillShareListUIGUI核算下列表页query:com.kingdee.eas.cp.bc.app.EvectionReqSharingQueryGUI核算下带分录query:com.kingdee.eas.cp.bc.app.EvectionReqWithEntrySharingQuery3.套打queryReportQuery:com.kingdee.eas.cp.bc.app.EvectionReqForPrintQueryR1ReportBillQuery:com.kingdee.eas.cp.bc.app.EvectionReqBillForR1PrintQueryR1ReportEntryQuery:com.kingdee.eas.cp.bc.app.EvectionReqBillEntryForPrintQuery借款单bosType:8110AAB2billTypeCode:30实体:com.kingdee.eas.cp.bc.app.DailyLoanBill实体表:com.kingdee.eas.cp.bc.app.T_BC_DailyLoanBill冲销申请分录表:com.kingdee.eas.cp.bc.app.T_BC_DailyLBRCEGUI编辑页:com.kingdee.eas.cp.bc.client.DailyLoanBillEditUI1.gui费用报销下GUI列表页:com.kingdee.eas.cp.bc.client.LoanReqListUIGUI列表query:com.kingdee.eas.cp.bc.app.DailyLoanBillQueryGUI带分录query:com.kingdee.eas.cp.bc.app.DailyLoanWithEntryBillQuery2.gui费用核算下(eas8.2、8.5才有核算)GUI核算下列表页:com.kingdee.eas.cp.bc.client.LoanReqShareListUIGUI核算下列表query:com.kingdee.eas.cp.bc.app.DailyLoanBillSharingQueryGU核算下带分录query:com.kingdee.eas.cp.bc.app.DailyLoanWithEntryBillSharingQuery查看付款明细UI:com.kingdee.eas.cp.bc.client.DailyLoanBillPayEntryListUI3.套打queryReportQuery:com.kingdee.eas.cp.bc.app.DialyLoadBillQueryForPrintQueryR1ReportBillQuery:com.kingdee.eas.cp.bc.app.DailyLoanBillForR1PrintQueryR1ReportEntryQuery:com.kingdee.eas.cp.bc.app.DailyLoanBillEntryForPrintQueryR1ReportCollectionEntryQuery:com.kingdee.eas.cp.bc.app.DailyLoanBillAccountEntryForPrintQuery出差借款单bosType:7AE53B38billTypeCode:20实体:com.kingdee.eas.cp.bc.app.EvectionLoanBill实体表:com.kingdee.eas.cp.bc.app.T_BC_EvectionLoanBillGUI编辑页:com.kingdee.eas.cp.bc.client.EvectionLoanBillEditUI1.gui费用报销下GUI列表页:com.kingdee.eas.cp.bc.client.EvectionLoanBillListUIGUI列表query:com.kingdee.eas.cp.bc.app.EvectionLoanBillQueryGUI带分录query:com.kingdee.eas.cp.bc.app.EvectionLoanWithEntryBillQuery2.gui费用核算下(eas8.2、8.5才有核算)GUI核算下列表页:com.kingdee.eas.cp.bc.client.EvectionLoanBillShareListUIGUI核算下列表query:com.kingdee.eas.cp.bc.app.EvectionLoanBillSharingQueryGUI核算下带分录query:com.kingdee.eas.cp.bc.app.EvectionLoanWithEntryBillSharingQuery查看付款明细UI:com.kingdee.eas.cp.bc.client.EvectionLoanBillPayEntryListUI3.套打queryReportQuery:com.kingdee.eas.cp.bc.app.EvectionLoanForPrintQueryR1ReportBillQuery:com.kingdee.eas.cp.bc.app.EvectionLoanBillForR1PrintQueryR1ReportEntryQuery:com.kingdee.eas.cp.bc.app.EvectionLoanBillEntryForPrintQuery费用报销单bosType:4A44F49FbillTypeCode:90实体:com.kingdee.eas.cp.bc.app.BizAccountBill实体表:com.kingdee.eas.cp.bc.app.T_BC_BizAccountBillGUI编辑页:com.kingdee.eas.cp.bc.client.BizAccountEditUI1.gui费用报销下GUI列表页:com.kingdee.eas.cp.bc.client.BizExpenseAccountListUIGUI列表query:com.kingdee.eas.cp.bc.app.BizAccountQueryGUI带分录query:com.kingdee.eas.cp.bc.app.BizAccountWithEntryQuery2.gui费用核算下(eas8.2、8.5才有核算)GUI核算下列表页:com.kingdee.eas.cp.bc.client.BizExpenseAccountShareListUIGUI核算下列表query:com.kingdee.eas.cp.bc.app.BizAccountSharingQueryGUI核算下带分录query:com.kingdee.eas.cp.bc.app.BizAccountWithEntrySharingQuery查看付款明细UI:com.kingdee.eas.cp.bc.client.BizAccountBillPayEntryListUI3.套打queryReportQuery:com.kingdee.eas.cp.bc.app.BizAccountForPrintQueryR1ReportBillQuery:com.kingdee.eas.cp.bc.app.BizAccountBillForR1PrintQueryR1ReportEntryQuery:com.kingdee.eas.cp.bc.app.BizAccountBillEntryForPrintQueryR1ReportCollectionEntryQuery:com.kingdee.eas.cp.bc.app.BizAccountBillAccountEntryForPrintQuery差旅费报销单bosType:C57003BCbillTypeCode:110实体:com.kingdee.eas.cp.bc.app.TravelAccountBill实体表:com.kingdee.eas.cp.bc.app.T_BC_TravelAccountBillGUI编辑页:com.kingdee.eas.cp.bc.client.TravelAccountEditUI1.gui费用报销下GUI列表页:com.kingdee.eas.cp.bc.client.TravelExpenseAccountListUIGUI列表query:com.kingdee.eas.cp.bc.app.TravelAccountQueryGUI带分录query:com.kingdee.eas.cp.bc.app.TravelAccountWithEntryQuery2.gui费用核算下(eas8.2、8.5才有核算)GUI核算下列表页:com.kingdee.eas.cp.bc.client.TravelExpenseAccountShareListUIGUI核算下列表query:com.kingdee.eas.cp.bc.app.TravelAccountSharingQueryGUI核算下带分录query:com.kingdee.eas.cp.bc.app.TravelAccountWithEntrySharingQuery查看付款明细UI:com.kingdee.eas.cp.bc.client.TravelAccountBillPayEntryListUI3.套打queryReportQuery:com.kingdee.eas.cp.bc.app.TravelAccountForPrintQueryR1ReportBillQuery:com.kingdee.eas.cp.bc.app.TravelAccountBillForR1PrintQueryR1ReportEntryQuery:com.kingdee.eas.cp.bc.app.TravelAccountBillEntryForPrintQueryR1ReportEntrySumQuery:com.kingdee.eas.cp.bc.app.TravelAccountBillEntrySumForPrintQueryR1ReportCollectionEntryQuery:com.kingdee.eas.cp.bc.app.TravelAccountBillAccountEntryForPrintQuery物品采购报销单bosType:30BD2798billTypeCode:100实体:com.kingdee.eas.cp.bc.app.DailyPurchaseAccountBill实体表:com.kingdee.eas.cp.bc.app.T_BC_DailyPurchaseAccountBillGUI编辑页:com.kingdee.eas.cp.bc.client.DailyAccountEditUI1.gui费用报销下GUI列表页:com.kingdee.eas.cp.bc.client.DailyExpenseAccountListUIGUI列表query:com.kingdee.eas.cp.bc.app.DailyPurAccountQueryGUI带分录query:com.kingdee.eas.cp.bc.app.DailyPurAccountWithEntryQuery2.gui费用核算下(eas8.2、8.5才有核算)GUI核算下列表页:com.kingdee.eas.cp.bc.client.DailyExpenseAccountListShareUIGUI核算下列表query:com.kingdee.eas.cp.bc.app.DailyPurAccountSharingQueryGUI核算下带分录query:com.kingdee.eas.cp.bc.app.DailyPurAccountWithEntrySharingQuery查看付款明细UI:com.kingdee.eas.cp.bc.client.DailyPurchaseAccountBillPayEntryListUI3.套打queryReportQuery:com.kingdee.eas.cp.bc.app.DailyPurAccountForPrintQueryR1ReportBillQuery:com.kingdee.eas.cp.bc.app.DailyPurchaseAccountBillForR1PrintQueryR1ReportEntryQuery:com.kingdee.eas.cp.bc.app.DailyPurchaseAccountBillEntryForPrintQuery对公费用报销单bosType:92F938DDbillTypeCode:40实体:com.kingdee.eas.cp.bc.app.DailyPurchaseAccountBill实体表:com.kingdee.eas.cp.bc.app.T_BC_BizAccountOutBill1.套打queryReportQuery:com.kingdee.eas.cp.bc.app.BizAccountOutForPrintQueryR1ReportBillQuery:com.kingdee.eas.cp.bc.app.BizAccountOutBillForR1PrintQueryR1ReportEntryQuery:com.kingdee.eas.cp.bc.app.BizAccountOutBillEntryForPrintQuery还款单bosType:0B104F5CbillTypeCode:108实体:com.kingdee.eas.cp.bc.app.RePaymentBillGUI编辑页:com.kingdee.eas.cp.bc.client.RePaymentBillEditUI1.gui费用报销下GUI列表页:com.kingdee.eas.cp.bc.client.RePaymentBillListUIGUI列表页query:com.kingdee.eas.cp.bc.app.RePaymentBillQuery2.gui费用核算下(eas8.2、8.5才有核算)GUI列表页:com.kingdee.eas.cp.bc.client.RePaymentBillSharingListUIGUI列表页:com.kingdee.eas.cp.bc.app.RePaymentBillSharingQuery收款帐号维护bosType:A62F9111实体:com.kingdee.eas.cp.bc.app.CollectionAccount实体表:com.kingdee.eas.cp.bc.app.T_BC_CollectionAccountGUI编辑页:com.kingdee.eas.cp.bc.client.CollectionAccountListUIGUI列表页:com.kingdee.eas.cp.bc.client.CollectionAccountEditUI三、web扩展1费用功能扩展1.1web增加打回功能需求背景:gui支持单据打回功能,希望在web端也实现该功能。1.错误扩展案例:只看到了表面现象,以为打回就是将单据设置为暂存状态,所以web扩展增加了打回按钮,直接将单据设置为了暂存。造成的问题:正常单据提交时,是有扣减预算和上游单据余额的。所以打回单据变为暂存状态时,需要返还预算和上游单据余额。否则,这张单再次提交,重新扣减预算和上游单据余额,就会造成预算和上游单据余额多扣减一次;每次打回再提交,都会多扣减一次。2.正确的扩展流程:先必须理清楚标准产品打回功能业务,都做了什么处理。(1)找到标准产品打回业务处理代码Alt+shift+D:查看easgui当前界面uipk在扩展平台导入该页面,通过工具栏定位到按钮绑定的功能。eas费用报销包路径:私包:\eas\server\deploy\fileserver.ear\easWebClient\lib\sp\*.jar补丁包:\eas\server\deploy\fileserver.ear\easWebClient\lib\patch\sp-cp_bc-client.jar发版包(未打过费用补丁):\eas\server\deploy\fileserver.ear\easWebClient\lib\client\eas\cp_bc-client.jar若类在以上三个包都有,包加载优先级为,私包——补丁包——发版包。(2)web开发实现打回功能增加打回按钮的功能callBack,并注册后台打回事件和handler增加打回按钮,并绑定上面增加的callBack功能扩展js注册页面事件,并在事件中调用后台Handler方法生成CallBackEvent事件在CallBackHandler中做打回反写的业务处理。3.最好的解决方法因为打回功能直接在gui页面实现的,没法在别的地方直接调用该方法。所以可以给标准产品提单(提单注意写清楚二开需求及需要标准产品做什么,这样我们能更好的评估),建议把打回功能封装到controlBean的方法中,这样二开扩展,就可以直接调用。如果还要增加别的个性化需求,如在打回时反写一些二开字段,也可以直接扩展该方法。注意:二开类型的提单要写清楚二开需求及遇到的难点,以及需要标准产品做什么,这样我们能够更快的了解意图,并进行评估,若需求合理,就会出补丁处理。1.2反审核功能扩展扩展需求:反审核单据,需要增加二开字段的反写。扩展实现:1.可以在前端js找到,费用业务单据(不包括还款单)反审批都统一在基类bizCollBillSharingList.js的disAudit方法处理,前端主要处理单据合理性校验、权限校验、向后端发送反写请求等。费用大部分按钮功能都发起了“/cp/bc/bill.do?”请求,其服务端处理类为com.kingdee.eas.cp.bc.dynamic.web.BizCollBillBaseController服务端处理类和反写方法,8.5版本gui和web的反审核反写都统一在disAuditAddMessage处理。反审核反写分为两种场景:(1)审核通过状态之前的单据反审核,这时的反写走流程图中的反审批节点(2)审核通过的单据反审核,代码中反写单据信息、及返还预算。二开根据扩展需要去扩展相应方法。注意:扩展重写方法一定不要直接覆盖,会让标准产品功能失效。需要先super调用标准功能后,再处理二开的反写逻辑1.3查看影像扩展查看影像功能前端实现方法为bizCollBillBase.js中的viewImage方法,后端调用类为com.kingdee.eas.cp.bc.dynamic.handler.ViewImageHandler。如果要在二开页面增加查看影像功能,可以直接调用viewImage方法。标准控制了只有流程的审批、核定页面查看影像时,能够退回重扫。对应请求中的参数isAudit和isApproved,这两个参数任意一个为true时,查看影像支持退回重扫ViewImageHandler2报销平台2.1带申请中页签报销平台扩展2.1.1扩展需求:报销平台列表页需要增加字段由于dep不支持扩展联合查询query、而费用报销工作台申请中、待报销、报销中、已完成列表都为联合查询,所以不能直接通过dep在query增加字段。只能通过bos开发工具直接扩展query,然后以私包形式部署。以扩展“报销中”页签列表为例,联合查询query为:com.kingdee.eas.cp.bc.app.ExpensingQuery1.需要bos工具中导入query,在以下4个子query中增加扩展字段2.部署元数据因为query元数据没有源码,所以直接将发布的元数据部署到元数据私包路径即可。部署路径:服务端元数据私包路径:eas\server\metas\sp客户端元数据私包路径:eas\server\deploy\fileserver.ear\easWebClient\metas\sp由于是以私包部署,会存在和补丁冲突的可能。不过这些query标准产品一般不改动,所以冲突可能行很小,标准产品也会探讨dep支持联合查询扩展或业务去掉联合查询的可能。2.1.2报销平台列表页设置过滤和排序(1)8.5版本扩展直接在方案表格过滤条件和排序字段上进行设置即可。设置排序时,要先清除已设置的排序字段,才能选到所有可排序字段。(2)8.0、8.2版本扩展实际是在报销平台页面DynamicMainPage_Open.js中的页签选中事件tabIndexSelectAction中设置的表格过滤条件,如_public.reqOfFilterItem、_public.watingFilterItem等。而_public.reqOfFilterIte这些变量,是在页面渲染事件pageOnRenderAfter中的initFilterItems方法设置被初始化的。所以需要在该事件之后,再重新初始化这些过滤条件。注意:尽量在标准过滤条件之上,再增加二开需要的过滤条件,不要直接修改这些过滤条件,兼容标准补丁可能对这些过滤条件的修改。2.1.3报销平台增加二开单据列表扩展需求:二开了非报销模块的单据,需要将这些单据显示在报销平台中。带有申请中,待报销页签的报销平台方案uipk为:com.kingdee.eas.cp.bc.DynamicMainPage_Open,需要扩展该方案。在方案中增加其他页签控件,在其他页签上增加显示表格控件,表格控件绑定相应query.。要更新8.5补丁PT138286,才支持该扩展,扩展的页签列表才能查出数据。注意:增加的页签控件id和显示表格id,保持前缀一样,后缀分别为“Tab”和“Grid”。例如页签控件id为“otherTab”,则显示表格id为“otherGrid”,在js中会由页签id,通过gridId=tabId.replace("Tab","Grid")替换的方式直接获取到表格id。扩展后效果2.2.4报销平台默认选中页签扩展1.在方案中设置默认选中页签,如设置默认选中页签为”已完成”。2.扩展js,将gridSelectName设置为默认选中页签中表格控件的id,DynamicMainPage_Open.gridSelectName="closedGrid"。要更新8.5补丁PT138286才能生效2.2.5报销平台自助报销服务区域扩展1.隐藏报销平台标准新增单据图标直接在方案中隐藏即可,如隐藏出差申请、出差借款通用修改图标名称样式等都可以在方案中修改。2.自助报销服务区域增加二开单据扩展需求:报销平台增加收款信息维护新增按钮。扩展实现:(1)方案中增加列和按钮(2)调整按钮样式,设置样式类buttonArea,与标准按钮样式保持一致(3)绑定图标,可以选系统自带图标,也可以通过加样式,设置自定义图标。如以下设置自定义图标方式。注意:自定义图标,需要放在扩展方案(extend)下的正确路径才能显示。一般放在:extend/cp/bc/image/效果:(4)新增页面功能绑定(5)实现页面功能事件,如下图addCollection的实现。可以参考标准产品,调用DynamicMainPage_Open.mainPageCommonAction()方法,传入页面的url和标题即可。注意:mainPageCommonAction在8.5补丁PT138286才放开为_public方法,可以直接调用;之前的补丁,只能二开自己实现该方法。最终实现效果:点击图标,打开收款信息新增页面2.2.6.切换报销平台按钮隐藏(1)实现:该按钮在DynamicMainPage_Open.js中pageOnRenderAfter事件的initChangeIndex方法动态创建的,需要在该事件之后隐藏按钮。隐藏代码:$("#wafpagemain",parent.document).children().children("#changeIndex").hide();(2)8.5补丁PT138286增加了是否显示切换报销平台按钮标识isShowChangeIndexBtn,二开可通过设置该标识控制是否隐藏。设置按钮隐藏代码:mod.useSync("cp/bc/js/DynamicMainPage_Open").isShowChangeIndexBtn=false2.2左树右表报销平台扩展2.2.1.切换报销平台报销平台隐藏(1)实现:该按钮在TreeDynamicMainListPage.js中pageOnLoadAfter方法动态创建的,需要在该事件之后隐藏按钮。隐藏代码:$("#wafpagemain",parent.document).children().children("#changeIndex").hide();(2)8.5补丁PT138286增加了是否显示切换报销平台按钮标识isShowChangeIndexBtn,二开可通过设置该标识控制是否隐藏。设置按钮隐藏代码:mod.useSync("cp/bc/js/TreeDynamicMainListPage").isShowChangeIndexBtn=false2.2.2扩展需求:隐藏标准列表页面,增加二开列表页面如下图的客户扩展需求扩展需求:隐藏对公报销单和物品采购报销单页签,增加借还款页签,点击该页签,能打开借还款列表。扩展实现:1.左树右表的报销平台方案为com.kingdee.eas.cp.bc.TreeDynamicMainListPage,在该方案中隐藏需要隐藏的单据页签,添加二开单据页签。隐藏标准页签增加二开页签“借还款”,实际为一个按钮,样式和标准保持一致,自定义样式类btnlink。2.扩展js中设置二开页签的列表页url标准实际是在TreeDynamicMainListPage.js的setUrl方法中设置的每个按钮对应的url。8.5补丁PT139008中增加了setUrlExt扩展接口,可以通过重写该接口,返回二开页签的url(实际为页面uipk)标准产品setUrlExt接口扩展setUrlExt接口,设置借还款页签url最终实现效果3费用业务单据页面扩展主要以扩展最多的费用报销单和差旅费报销单为例,介绍单据常用的扩展点和扩展方法。3.1费用报销单3.1.1扩展标准js的_public方法以扩展报销单编辑页面BizAccountBill_Edit_Open.js中setInitComponentOpt方法为例,说明二开扩展标准产品_public实现:扩展时注意:扩展重写_public实际为覆盖重写,执行时将不会再执行到标准js的该方法,而是直接执行扩展_public方法。所以,在扩展重写的_public方法里,不能仅实现二开业务处理,这会造成标准该方法的处理失效,造成二开和补丁的冲突;也不能直接将标准js该方法的代码复制过来,然后加上二开扩展代码,这样如果后续标准产品有更改,会导致更新补丁后标准更改不生效,造成二开和补丁的冲突。如没有特殊情况,要采用兼容标准产品的方式扩展,即在重写的_public方法里,先调用标准产品的该方法,然后再做二开处理。类似java继续类重写方法时,通过super调用父类方法一样。举例如下:(1)在重写的_public方法调用前,要先缓存标准产品方法,可在扩展js的_public域做缓存super_setInitComponentOpt:_self.setInitComponentOpt。缓存后super_setInitComponentOpt即为标准js方法setInitComponentOpt(2)重写BizAccountBill_Edit_Open.setInitComponentOpt=function(type,option,com){},在重写方法里,先调缓存的标准js该方法setInitComponentOpt即_public.super_setInitComponentOpt(type,option,com),再做二开扩展处理。具体扩展代码如下:3.1.2页面二开控件初始化扩展对二开控件动态更改配置,设置过滤条件等。有两种方式实现:方式1:页面所有控件都能初始化标准产品主要在页面控件初始化回调函数_public.setInitComponentOpt()中处理控件的初始化,包括单头控件报销人f7、部门、职位、承担公司部门;分录承担公司、部门等控件。所以二开可扩展该方法。二开扩展标准产品_public.setInitComponentOpt实现:(1)在重写的_public方法调用前,要先缓存标准产品方法,可在扩展js的_public域做缓存super_setInitComponentOpt:_self.setInitComponentOpt(2)重写BizAccountBill_Edit_Open.setInitComponentOpt=function(type,option,com){},在重写方法里,先调标准方法_public.super_setInitComponentOpt(type,option,com),再做二开扩展。8.5补丁中,为方便二开扩展,在标准产品setInitComponentOpt方法增加了二开扩展接口setInitComponentOpt_Ext,,重写该方法即可方式2:只能初始化分录控件(1)标准产品分录初始化控件也在afterInsertRow事件中处理,实现方法为editGridRowAdd。该事件在每次分录新增时调用。二开需要在方案上重写该事件。注意:重写后会覆盖标准产品的初始化,所以需要在重写事件里面调用标准的该方法,兼容标准产品。方案重写:代码实现:3.1.3分录扩展1.分录扩展字段后,新增,复制等分录操作时进行值初始化分录按钮新增、复制、删除分别在以下方法中处理以新增分录为例:appendEntryRow处理所有分录的新增操作。_public.appendEntryRow_EX为扩展接口,若有二开新分录,那新分录的新增可以在此处理,重写该方法即可。新增分录、插入分录获取的_public.entryInitData对象做为初始值,进行的分录初始化。可以找到_public.entryInitData是在页面数据装载事件fieldOnLoadBefore的initEntryData中被初始化的。所以若要在给二开字段设置初始值,需要该事件后重新初始化改值。标准产品_public.entryInitData初始化扩展注册数据装载的after事件在扩展事件中初始化二开字段。注意:扩展时,一定要在标准产品的基础上去增加,而不是覆盖掉,要兼容标准产品以后可能的更改。复制分录在_public.entryAddCopyData中初始化,这是一个_puiblic方法,可以直接重写扩展。3.1.4扩展单据增加冲申请和冲借款分录以冲借款分录为例,冲销分录弹出框页面为com.kingdee.eas.cp.bc.CheckEntriesList,在冲借款分录新增按钮事件中打开该页面。以参数sourceBillType区分是那种冲销分录,"dailyLoan"为冲借款分录,"otherExpense"为冲申请分录。回调函数doAppendReqRow将冲销页面选中的记录添加到单据冲借款分录,并做一些联动处理。3.1.5分录字段弹框实现以分录承担部门/公司为例,效果如下图实现:1.分录添加自定义列:费用承担部门/公司,绑定格式化函数_self.companyCostFormatter和编辑器类型companyCostEditor。增加列布局中需要弹出的部门、公司字段列companyCostColumn。编辑器类型companyCostEditor实现点击分录字段打开弹出列companyCostColumnJs中注册页面区域的点击事件,点击弹出列companyCostColumn以外的区域时,隐藏该列格式化函数companyCostFormatter实现将弹出列数据设置到分录费用承担部门/公司字段3.1.6提交单据相关扩展单据提交,标准产品重写框架的submit事件,在js里面做前端校验和业务处理。1.提交前对二开字段做相关校验和处理。方案上增加submit提交的前置(before)事件,在该事件方法中做处理。可参考标准产品submitBefore的实现。注意:扩展save,submit的before事件不会覆盖掉标准产品的submitBefor...