Author: Exson Qu

小额现金管理系统
员工可以直接在系统里提交费用申报--然后由他们的直接上司批准。
以友好的方式进行小额现金费用控制，因此每个员工(没有任何的会计知识）可以输入他们的费用，得到付款，等等。
这包含在一个临时的GL（总账）表pcashdetails里,它包含关于付款和费用以小额现金的形式出现的所有的信息. 一旦主管批准（现金分派或者费用），它就会被过账到总账并且做相关标识。
小额现金系统一旦过账，就无法更改，编辑或者删除。一旦过账，就是木已成舟。
设置基本参数

设置费用

定义小额现金系统中可以使用的费用。这个表用来将非会计用户（工人/webERP的大多数用户)与会计使用的技术细节和名称隔离。
描述： 用于访问顾客的商业旅行的汽车用燃料。
会计科目：12345678-商务车费用
因此当系统向总账表过账小额现金费用时，它将过账到选定的总账账户。
脚本PcExpenses.php用来维护这个表(pcexpenses).
设置标签种类

不同的用户有不同的特权. CEO花费小额现金与货车司机是不同的（这并非不敬，对他们任何人而言-:). 系统在表pctypetabs中维护了不同的标签组。
脚本PcTypeTabs.php用来定义此种不同的标签。
例如：总监，职员，卡车司机等等。
设置标签种类对应的费用
它连接了标签和费用
这里我们需要去定义哪种费用对于某种标签（用户角色）来说是允许的。这个表用来防止用户选择了不允许的费用。例如，担负"国会成员"角色的用户可以有一种费用类型为"所有费用,包括在公共场合的晚宴”，而一个角色为"体力工人"的用户可以仅有一种费用类型即"工作通勤”，因此系统可以对每个人的费用进行良好的控制。
每个公司必须定义小额现金支付的政策。
脚本PcExpensesTypeTab.php管理这个方面。
设置标签

脚本PcTabs.php用来设置小额现金标签。
小额现金标签包含：

- 标签代码

- 用户：使用标签的人. 它花钱/从小额现金花费中收钱。他必须是webERP用户。

- 标签的种类：如同以前定义。

- 货币：一个标签只能处理一种货币。因此被允许使用两种或者两种以上的货币（例如国际商业团队)的用户,每种货币都必须有一个标签。

- 限额：为了更好的管理，指定用户可以花费的最大金额。现在，它仅仅向主管发出警告，但是可以更好方式运作。

- 授权人：小额现金用户的主管。它批准或者否决已花费用，确保钱花得明智并安排现金给用户。

- 安排现金的总账科目：是指安排的现金所出自的账户。它必然是银行账户，因此将现金对应标签时，系统会从银行账户减少并且增加小额现金账户。

- 总账账户小额现金标签。 在总帐中，我们应该有一个账户（每种货币一个）来反映＂员工掌握的金额＂或者＂小额现金金额＂．这个账户反映当员工预支现金时，现金去了哪里；或者当过账费用之后，现金来自哪里。

现在我们已经有了一个可以工作的系统了。
工作流程
付给现金

主管(授权人)将钱付给员工作为小额现金使用. 我们用脚本PcAssignCashToTab.php记录下这个事实。
主管只可以选择它管辖的标签.
必须注明金额, 日期
还有有两个附加的字段：

- 备注：记录需要记住的细节。

- 收据：如果公司有实物收据或者任何的凭证，这个收据的代码, 编号等等, 以便将来处理争议。

在现阶段, 没有交易过账到gltrans表, 只在表pcashdetails中，我们记录了：“主管给了用户X（真正标签),Y美元于日期D".
在批准之前,现金支付可以编辑和删除. 一旦批准及过账, 就无法更改了。
费用申报

员工会外出并且花钱. 然后他们会向webERP报告他们的费用。 负责处理的脚本为PcClaimExpensesFromTab.php
员工将选择一个标签(从他们自己的标签中). 然后记录所有产生费用的细节

- 日期

- 费用代码（从他自己的标签列表中，这取决于它涉及的标签).

- 金额

- 备注： 记录需要记住的细节。

- 收据：如果公司有实物收据或者任何的凭证，这个收据的代码, 编号等等, 以便将来处理争议。

在现阶段, 没有交易过账到gltrans表, 只有在表pcashdetails中，我们记录了：“用户U报告花费了金额X, 归类为C于日期D".
在批准之前,费用报告可以编辑和删除. 一旦批准及过账, 就无法更改了。
费用审批

主管需要审批申报的费用和预付现金.
在脚本PcAuthorizeExpenses.php中，主管必须选择一个他/她正负责管辖的标签。
如果有任何的预付现金或者费用尚未授权, 可以核对, 如果正确, 在选项后打V. 如果不正确, 或者有疑问(一个员工申报10000000美元燃油费),主管可以打电话/电邮/书面通知他并且将它分拣出来. 因为尚未授权,因此可以修改(到100USB...).
一旦按下了更新按钮并且选择了某些输入，那么就会过账.
过账流程

如果需要过账预支现金
在gltransb表中

在标签中定义的预支现金总账会减少预支的金额。
在标签定义中指定的小额现金总账会增加相应的金额。

在banktrans表中

银行交易可以方便地报告金额从“预支现金总账"账户的流出。

如果需要过账费用：
在gltrans 表中

定义的小额现金总账减少相应的费用金额
定义的费用账户中的金额会增加。

备注：
用户
所有的用户必须是webERP用户
安全设置6被启用以允许用户使用此模块。
在许可的情况下, 员工仅仅被允许登录到webERP来申请/报告他们的费用.

关于预付款

关于预付款或者退款, 我们总是运行"open tabs", 这样员工可以首先申请款项, 然后他们会花掉(我们希望是用合适的方式)然后我们报告实际发生色费用. 任何的差异会被转入"下张报告"或者“下个现金预支＂处理．这是将费用报告和现金预支分开的理念，这样会非常灵活并且适应所有的情况：
例如预支了500USD，然后申报480USD。;
1) 预支 500USD
2)申报480USD
3) 批准480USD(状态：员工欠公司20USD)
4)根据公司的文化,有两个选择：
1. 返回20USD(预支负数款, 就是500-480-20=0）（注：也就是退回给公司).
2. 员工保留着20USD，用于下张报告. 系统将持续跟踪以前的费用/预付款,以及时更新余额.
例子 预支了500USD, 申报530USD。
1) 预支500USD
2) 申报530USD
3) 批准530USD (状态: 公司欠员工30 USD)
4) 根据公司的文化有两个选择：
1. 支付员工30 USD(正数现金预付款， 即 500-530+30=0 无余额)
2. 下次的现金预付款500USD,会显示他仅仅得到了470元，因为我们欠他30元).