差旅报销单二开指南
## 元数据介绍
差旅报销单 分为 卡片式和表格式。通过系统参数控制使用哪一种![1680080224037.webp](/download/0100b541875e4cd041b0a10e0652d1a4c9b1.webp)
### 卡片式
##### PC端
第一屏 er_tripreimbursebill (财务云 > 费用核算 > 人人差旅单据)
行程信息 er_tripentryedit (财务云 >人人差旅 > 差旅费报销单)
##### 移动端
第一屏 er_tripreimbursebill (财务云 > 费用核算 > 人人差旅单据)
添加行程明细(第二屏) er_tripreimconsumer_mb (财务云 >费用核算 > 组件-> 人人差旅类)
费用明细(第三屏) er_tripreimexpenseitem_m (财务云 >费用核算 > 组件->人人差旅类)
![Image_20230802134627.webp](/download/0100832bfa9d12f04fb0a4ee9eaf803d9c5a.webp)
### 表格式
##### pc端
er_tripreimbill_grid (财务云 > 费用核算 > 人人差旅单据)
##### 移动端
第一屏 er_tripreim_grid_mb (财务云 > 费用核算 > 差旅移动端)
差旅明细(第二屏) er_tripitem_edit_mb (财务云 > 费用核算 > 差旅移动端)
## 插件介绍
因er_tripreimbursebill 中的插件过多,特此说明。
| 插件 | 描述 |
| :----------------------------------------------------------- | ------------------------------------------------------------ |
| kd.fi.er.formplugin.web.TripReimburseBillEdit | 此类有继承结构,注意父类也有一部分业务逻辑。 此类包含页面初始化、f7的过滤条件、绝大部分单头字段、汇总金额类的值联动。 |
| kd.fi.er.formplugin.web.ReimburseReceiveEntry | 金额变化导致付现金额、收款分录金额的变化 |
| kd.fi.er.formplugin.daily.web.DailyReimburseBillForWriteoffmoney | 实现冲借款分录折叠操作的插件 |
| kd.fi.er.formplugin.web.ErTripReimburseBillTripEntryFormPlugin | 行程信息分录,费用明细金额联动 |
| kd.fi.er.formplugin.botp.up.ErTripReimburseBotpUpPlugin | 上拉借款单、申请单的逻辑 |
| kd.fi.er.formplugin.web.tripstandard.TripStdCtrlForCardStylePcPlugin | 差旅标准的表单逻辑 |
| kd.fi.er.formplugin.entryimport.EntryImportBillFormPlugin | 分录导入功能 |
| kd.fi.er.formplugin.daily.web.workflow.ErDailyWorkflowFlexEdit | 单据右边的审批详情 |
| kd.fi.er.formplugin.web.tips.ReimburseTipsPlugin | 报销提醒逻辑 |
| kd.fi.er.formplugin.billnewcheck.CheckCurrentUserInfoPlugin | 新增单据时校验当前用户部门、公司等信息 |
| kd.fi.er.formplugin.web.TrackdownCheckPlugin | 设置当前是否是全员应用 |
| kd.fi.er.formplugin.billnewcheck.CheckExchangeratePlugin | 对于币别的汇率进行校验。汇率必须要有值 |
| kd.fi.er.formplugin.trial.TrialOrgPlugin | 试点组织功能 |
| kd.fi.er.formplugin.web.MultiTripReimburserPlugin | 多出差人收款功能 |
| kd.fi.er.formplugin.daily.web.PublicRBSReceiveEntryPlugin | 收款信息上的非金额字段联动 |
| kd.fi.er.formplugin.web.projectcostshare .ProjectCostShareForTripReimbursePlugin | 项目综合成本分摊 |
| kd.fi.er.formplugin.web.ErBotpTripCurrencyHandlerFormPlugin | botp下推若没配置汇率则带出最新汇率 |
| kd.fi.er.formplugin.web.TripBillMulitCurrencyAutoPayPlugin | 多币别收款 |
| kd.fi.er.formplugin.web.view.TripBillLookUpVisiblePlugin | 隐藏修改行程按钮 |
| kd.fi.er.formplugin.invoicecloud.v2.ImportInvoiceForTripReimPCPlugin | 单头的导入发票功能 |
| kd.fi.er.formplugin.invoicecloud.v2 .clearold.RemoveOldInvoiceForTripReimPlugin | 发票用来兼容历史数据的 |
| kd.fi.er.formplugin.invoicecloud.v2 .ImportInvoiceForTripReimPCByTripItemEntry | 按行导入发票 |
| kd.fi.er.formplugin.invoicecloud.v2 .ImportInvoiceForTripReimPCWithoutExpenseItem | 非智能导入发票 |
| kd.fi.er.formplugin.invoicecloud.v2.botpctl.ErBillOpControlPlugin | 费用池下推场景的一些控制 |
| kd.fi.er.formplugin.invoicecloud.v2.collection.one4one .ImportInvoiceForTripReimPCOne4One | 一张发票对应一条明细,不按合并规则合并 |
| kd.fi.er.formplugin.invoicecloud.invoicetype.InvoiceTypeComboBoxPlugin | 发票类型 下拉列表 插件 |
## 二次开发场景
差旅报销单存在多个页面之间来回跳转,比如 卡片式的录入行程信息, 还有移动端的第二屏、第三屏。所以若在差旅报销单上增加字段,可能不仅只是在差旅报销单本身的元数据上加,还需要考虑第二屏、第三屏的数据展示和回填。
##### 下面以卡片式差旅报销单,在行程分录增加一个二开字段 “费用承担公司2” 来举例。
1. 在 er_tripreimbursebill 的扩展元数据里增加 字段 “费用承担公司2”
![1680247787049.webp](/download/0100f2450265f1554fadb1188273854bda80.webp)
2. 在er_tripentryedit 的扩展元数据里增加 字段“费用承担公司2”(注意标识要相同)
![1680247765351.webp](/download/0100b59d6a9570ac4590b75e89dc1ebe379f.webp)
3. 只要标识相同,在pc端场景下即可自动完成数据回传、再次打开行程编辑页的数据展现。
4. 处理移动端,第二屏元数据是er_tripreimconsumer_mb,在设计器里可以看到这个元数据的页面类型是“移动单据”,如果是移动单据的话,那么在pc端加了字段,是可以直接选到的。在实体视图里可以直接把这个字段添加到移动的页面上。 添加后即可自动完成数据回传、再次打开时的数据展现。
![1680248968962.webp](/download/0100e675132256664b35b73c63f964d17c0c.webp)
![1680248372058.webp](/download/010081efadabd2b74af5ae5867edea3673ac.webp)
举例是行程信息上加字段,那么如果是在 差旅明细上加字段,移动端则涉及到第三屏的元数据修改。第三屏元数据是er_tripreimexpenseitem_m,在设计器里可以看到页面类型是“移动表单”。 移动表单就是移动端的动态表单,所以在pc端加了字段,动态表单里也不会有,需要自行添加(标识也一样要相同)
![1680248674685.webp](/download/0100fc62fcd97c92485f8e9119ac49e7bdeb.webp)
##### 以上描述的是扩展了差旅报销单的场景,其他单据的扩展场景也按此思路来展开。 对于移动端来说,主要是区分是“移动表单”还是“移动单据”。 移动单据上会有实体,但是移动表单需要自行增加字段。
##### 接下来描述需要继承差旅报销单的场景
1.请参考 [《费用报销二次开发 ----- 当继承了一张标准单据,需要进行哪些配置》](https://vip.kingdee.com/article/429671340304722688)来进行继承了费用单据后的一些基本设置。
2. 对于卡片式差旅报销单的行程信息编辑页,以及移动端有第二屏、第三屏的场景来说, 继承的单由于逻辑还复用了标准产品的逻辑,所以继承的单其实还是要沿用 标准产品的行程信息编辑页、移动端第二屏第三屏的页面的。 打开自定义或继承的第二屏页面,以及修改回调逻辑,,已开放SDK,请在https://dev.kingdee.com/open查看。
## 常见问题
1. 卡片式,在行程编辑页新加了字段,如何回写到单据页面?
答: 在单据和编辑页都要增加该字段,注意标识需要相同,标准逻辑即可自动完成回传。
2. 行程编辑页的必录字段能否取消必录?
答:不可以,必录字段不允许取消是规范。若业务上不需要,可给默认值后隐藏。注意隐藏是指把可见性都去掉,并不是元数据里勾选“隐藏元素”。
3. PC端配置了业务规则、界面规则等,移动端是否可以同步生效?
答: 对于业务规则来说,移动端不生效。**需要自行写代码实现**。 而页面规则,则是每个页面单独配置的。
4. 在行程编辑页、或者移动端第二屏上加了二开字段,打开了必录,但是不生效怎么办?
答: 因平台默认的必录控制无法在动态表单上生效,所以需要使用二开代码实现行程编辑页、移动端第二屏的必录校验。 实现思路: 在当前页面的插件里,beforeClick事件中校验二开字段的必录, 如果未录则取消这次点击事件的执行。 示例代码:
```java
@Override
public void beforeClick(BeforeClickEvent evt) {
super.beforeClick(evt);
Control source = (Control) evt.getSource();
String key = source.getKey();
if (StringUtils.equals(key, "btn_save")) {
if(getModel().getValue("textfield") == null){//判断字段是否没录,若是基础资料则判空的同时也要判断是否为0
evt.setCancel(true);
getView().showTipNotification("请填写“xx字段”"); //提示语记得用多语言处理ResManager.loadKDString,示例里忽略
}
}
}
```
差旅报销单二开指南
## 元数据介绍差旅报销单 分为 卡片式和表格式。通过系统参数控制使用哪一种![1680080224037.webp](/download/0100b541875e4cd041b0a10e...
点击下载文档
本文2024-09-22 22:35:30发表“云星瀚知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-xinghan-127583.html
您需要登录后才可以发表评论, 登录登录 或者 注册
最新文档
热门文章