当前位置: 首页 > news >正文

[AX]AX2012 R2 出差申请和支出报告

AX2012中有个模块叫做出差和支出,用于管理出差以及相关的费用,用户只能在员工自助服务EP站点上提交出差申请、费用报销报告,在Client程序中做审核以及后续的支付动作等,最后形成相关的财务分录。

出差申请

在自助服务站点的Expense下用户可以新建一个“Travel requistion”,需要填写的内容包括出差原因、出差目的地、以及预计的出差费用行。

出差原因在“Travel and expense>Setup>Optional setup>Expense purpose”维护,出差的目的地在“Travel and expense>Setup>Optional setup>Travel locations”维护。费用行需要首先选择一个Expense category,支出类别在“Travel and expense>Setup>Travel and expense entry>Expense category”维护。支出类别不是表面看起来那样简单,根据支出类别类型的不同能设置的内容也不同。新建一个支出类别前需要新建一个共享类别(Travel and expense>Setup>Travel and expense entry>Shared categories),诚如其名,这个类别为多个模块共享,在Project management and accouting、Organization administration的设置中都能找到Shared categories。

一个共享类别可以用于项目、支出、或者生产,但是一个共享类别不能同时用于支出和生产,如果你同时选中“Can be used in expense”和“Can be used in production”,系统会给出警告提示。如果选择了用于支出,你必须选择一个支出类型(枚举TrvExpType),比如津贴、旅馆、航线等,而根据支出类型是否支持明细的不同(TrvExpenseType::supportsItemization()),你还可以设置子类别,比如上图中的Airline是可以有明细的。

有了可用于支出的共享分类,才能新建支出分类,新建支出分类时只能从可用于支出的共享分类中选择。

在支出分类中可以设置支付方式、是否强制明细、是否启用、统计组、以及财务主科目。有的支出类型是不能设置财务科目的,比如个人花费(Personal expenses)。其中有两个支出分类是比较特殊的,Mileage和Perdiem:

Mileage用于私车公用(瓷器国听到的多是公车私用啊)情况,后续在计算费用的时候是根据里程×费率来计算的,在“Travel and expense parameters”的“Standard rate of mileage”中可以维护标准费率(在Human resource中打开某个员工,Expense management>Mileage下可以维护年度费率,是否和支出有联系又是具体怎么用还没来得及研究)。

Perdiem中文叫做出差津贴,在Travel and expense>Setup>Per diems>Per diems维护,首先需要在Per diem locations中维护津贴地点,比如出差的城市,根据出差城市的不同在津贴维护中设置相应的酒店费用、餐费和其他费用、起止日期,在Per diem rate ties中还可以根据出差时长设置报销的比率。后续支出报告中根据选择的津贴城市、时长具体计算津贴的总费用。

回到出差申请的创建,在添加一些类型的支出行时,还可以选择相应的商业单位(Merchants),比如航空公司、酒店名称等,在“Travel and expense>Setup>Optional setup>Merchants”维护。编辑完支出行点击保存时会自动计算费用,完成所有支出行的编辑后就可以提交出差申请了。根据工作流的设置(Travel and expense>Setup>Travel and expense workflows)出差申请会为具有批准权限的用户创建工作事项,有意思的是在试图打开出差申请的工作项时会有错误(\Classes\WorkflowQueueDocumentView\main在打开工作项相关MenuItem的Form时因为菜单项名称空提示FormRun未初始化),原因在于在Client中没有一个Form来查看出差申请(支出报告是有的),出差申请的批准也只能在自助服务的审核中完成。审核完成的出差申请不能再编辑,在“Travel requisitions”列表中我们可以看到相应的审核状态,还有一个状态叫做Reconciliation status,显示的是出差申请费用是否结清,在操作板上有个“Close”的按钮可以用来手工关闭出差申请为结清状态。

支出报表

其实翻译成费用报销更为合适,同样也是在自助服务EP站点中创建,在新建一个Expense report时会弹出一个对话框,提示选择未结的费用:

这里显示的记录来自于Data set TrvUnreconciledExpenseTransaction,它基于视图TrvUnreconciledExpenseTransUnion,视图TrvUnreconciledExpenseTransUnion又来自于查询TrvUnreconciledExpenseTransUnion,查询TrvUnreconciledExpenseTransUnion是视图TrvUnreconciledCreditCardTrans和视图TrvUnreconciledExpenseTrans的联合,前者的数据来自于表TrvPBSMaindata,后者的数据来自于表TrvUnreconciledExpenseTransaction(这一长串的关系!)。

TrvPBSMaindata表示的是这样的数据-比如出差中使用了公司的信用卡付费,这些付费的记录就保存在表TrvPBSMaindata中,这些记录可以通过Travel and expense>Periodic>Credit card transactions查看,但是系统中是没有地方输入这些记录的,它们可以使用Travel and expense>Periodic>Credit cards>Credit card import from folder或者Travel and expense>Periodic>Credit cards>Import a specific credit card file,前者导入一个目录下的所有文件,后者导入一个指定的文件。那么文件是什么样的格式呢?在导入对话框中是需要选择一个导入格式的,其实是一个AIF的入口端口名称,我们需要使用服务TrvPBSMaindataService创建一个入站的文档服务,文件的格式则是文档服务描述的XML格式。导入功能会间接的调用TrvPBSMaindataService服务来导入数据,大致的执行路径(导入文件夹为例)是TrvSysImportFolderBatch.run()->SysImportBatchProcessor.run()->SysImportProcessor.processInput()->AifImportUtil::ProcessFile(sourceFile, _inputFileFormat),参数_inputFileFormat就是入站端口的名称。

还有一些费用报销凭据来自于消费的收据,收据数据(传真件,比如tif格式的图片)可以通过Travel and expense>Periodic>Receipts>Import faxed receipts for employee或者Travel and expense>Periodic>Receipts>Import faxed receipts for expense report导入,导入的结果就保存在表TrvUnreconciledExpenseTransaction中。导入文件通过文件名称来确定员工或者支出报告号,比如文件名“员工编号$01_20130618.tif”,员工编号必须在首位,使用“$”和“_”分离其他内容,在EP站点中选择一个支出报表我们可以通过操作板上的Employee cover page或者Expense report cover page打印传真的封面页(在我的系统中显示不出相应报表中的图片!)。导入传真的员工收据的执行路径TrvImportReceiptsBatch_Employee.main()->TrvImportReceiptsBatch.run()->TrvImportReceiptsBatch_Employee.importFile()->TrvReceiptsHelper.attachFileToEmployee(hcmWorker.RecId, _filename, _file),它在TrvUnreconciledExpenseTransaction表中查找/创建员工的记录,并将导入的文件作为附件保存到表docref中,在这一过程中看不到任何导入具体费用金额的地方;导入传真的支出报告收据的执行路径TrvImportReceiptsBatch_ExpenseReport.main()->TrvImportReceiptsBatch.run()->TrvImportReceiptsBatch_ExpenseReport.importFile()->TrvReceiptsHelper.attachFileToExpenseReport(TrvExpNumber _expNumber, Filename _filename, DocuValueFile _file, Description _documentDescription = ''),它只是简单的把导入的文件作为支出报表的附件创建相应的docref记录,也没看到具体导入金额的地方。那么具体如何导入消费的具体信息呢?同样可以使用AIF服务,这次用到的服务名称是TrvUnreconciledExpenseService,在系统中没有找到和导入信用卡记录类似的操作,看来只能手工调用这个服务来操作了,另外也没有看到任何窗口可以查看这些导入的TrvUnreconciledExpenseTransaction记录。

表TrvPBSMaindata和TrvUnreconciledExpenseTransaction数据的合集称为未结的支出消费,在创建支出报表时我们可以选择这些未结支出,它会自动为我们创建相应的支出行并做详细化(Itemization),我们也可以在支出报表中使用“Add unreconciled expenses”手工选择未结支出来创建支出行。

当然也可以使用New expense line手工创建支出行,这和出差申请的支出行类似,不再赘述。

在费用支出上,我们是可以设置策略的(Travel and expense>Setup>Polices>Expense report),比如在某个城市的酒店住宿费不能超过多少,如果超过限制金额则不运行提交。另外在支出报表的Travel requistion一栏可以选择一个出差申请,表示费用报销是基于哪次出差的,在Tranvel and expense parameters中有个设置叫做“Pre-authorization of travel is mandatory”,如果勾选这个选项,支出报表必须选择一个出差申请(Tables\TrvExpTable\validateSubmit中验证)。

同样,完成支出报表的编辑后提交到工作流,所有的支出报表在Travel and expense>Expense reports>All expense reports中看到,我们可以直接在这里批准,而不需要转到工作列表或者EP上的审核列表。已经批准的支出报表可以过账(Post)为财务分录,记账科目为支出类别以及支付方式的不同而不同(留待以后研究)。

更多相关内容可以参考http://technet.microsoft.com/en-us/library/hh242148.aspx、http://technet.microsoft.com/en-us/library/hh299217.aspx。

转载于:https://www.cnblogs.com/duanshuiliu/p/3143664.html

相关文章:

  • java 多线程简介
  • [置顶] Android下实现自动关机的方法总结
  • 谷歌苹果已“技穷”?移动操作系统2013无创新
  • 7.[Think in Java笔记]操作符
  • Apache httpd 2.4.4 与老版本的差异
  • ScrollView 简单出错
  • 用户态到内核态切换之奥秘解析
  • Squid代理服务基础篇
  • with…do语句的用法
  • 揭秘:是网线影响你的散热
  • JJ Ying:越来越跨界的界面设计
  • Ubuntu将新增磁盘挂载到home下
  • 【Win7网络延迟问题多种解决方法】
  • 第二章 java语言基本语法————流程控制
  • RHEL 6.2 X64 kvm 为虚机添加console
  • @jsonView过滤属性
  • angular2开源库收集
  • DOM的那些事
  • emacs初体验
  • ES2017异步函数现已正式可用
  • github从入门到放弃(1)
  • HTTP中的ETag在移动客户端的应用
  • Javascripit类型转换比较那点事儿,双等号(==)
  • JavaScript 无符号位移运算符 三个大于号 的使用方法
  • JSDuck 与 AngularJS 融合技巧
  • Linux编程学习笔记 | Linux IO学习[1] - 文件IO
  • node 版本过低
  • PHP的Ev教程三(Periodic watcher)
  • 从 Android Sample ApiDemos 中学习 android.animation API 的用法
  • 从零到一:用Phaser.js写意地开发小游戏(Chapter 3 - 加载游戏资源)
  • 基于axios的vue插件,让http请求更简单
  • 每个JavaScript开发人员应阅读的书【1】 - JavaScript: The Good Parts
  • 配置 PM2 实现代码自动发布
  • 少走弯路,给Java 1~5 年程序员的建议
  • 使用 QuickBI 搭建酷炫可视化分析
  • 一些基于React、Vue、Node.js、MongoDB技术栈的实践项目
  • MiKTeX could not find the script engine ‘perl.exe‘ which is required to execute ‘latexmk‘.
  • 好程序员大数据教程Hadoop全分布安装(非HA)
  • 湖北分布式智能数据采集方法有哪些?
  • ​【C语言】长篇详解,字符系列篇3-----strstr,strtok,strerror字符串函数的使用【图文详解​】
  • ​总结MySQL 的一些知识点:MySQL 选择数据库​
  • # 执行时间 统计mysql_一文说尽 MySQL 优化原理
  • #14vue3生成表单并跳转到外部地址的方式
  • #android不同版本废弃api,新api。
  • #define MODIFY_REG(REG, CLEARMASK, SETMASK)
  • #etcd#安装时出错
  • #Java第九次作业--输入输出流和文件操作
  • (06)金属布线——为半导体注入生命的连接
  • (6)添加vue-cookie
  • (C++20) consteval立即函数
  • (翻译)Quartz官方教程——第一课:Quartz入门
  • (附源码)ssm航空客运订票系统 毕业设计 141612
  • (理论篇)httpmoudle和httphandler一览
  • (力扣)循环队列的实现与详解(C语言)
  • (四)图像的%2线性拉伸