如何处理数据库中的现金预支差旅费用?

时间:2019-01-25 22:17:12

标签: database database-design

我正在为一家公司实施软件解决方案。作为其业务流程的一部分,他们会在员工出差时给其现金垫款,比如说1000美元。从可用的一个收银机中取出那1000美元,并将该交易作为费用注册到数据库中,以便收银员在转帐结束时就能够证明丢失1000美元是合理的。

然后,有时出差的雇员只花了他所得到的钱的一部分,比方说,500用来购买汽油,200用来住宿酒店,100来餐饮,所以在他得到的1000的钱中有800。

这就是我要处理的情况:当员工从旅行中回来时,由于以下两个原因,这三个费用(汽油,酒店和伙食)也需要分别进行注册:

  1. 要将费用存储在正确的费用概念下,以便我们可以查询数据库,并查看公司在每个概念上花费了多少。
  2. 使给予雇员的差旅费现金预付款与实际费用相匹配。因此,总共要执行四笔交易:三笔费用和一笔收入(员工未使用的200笔收入),以匹配原始的1K。

到目前为止,关于现金透支交易,一切都很好:给了1000美元,证明有正当理由为1000美元,支出为800,退款为200。问题是,原来的1000K仍然作为支出存在,因此总余额将为-600:花费1800和收入200,这显然是不正确的。

我想到了两种选择:

  1. 从原始现金预支费用(1000)中减去差旅费用(800)。这样,最终余额是正确的(0)。但这意味着修改旧的费用分录,如果将来出于某种原因需要咨询,则会影响当日的现金结算。我不确定这是否真的是一件坏事,因为最终余额是否会与实际金额匹配,将旧的条目弄乱,将不再代表当天实际发生的事情,这感觉很不对。
  2. 应收现金预付款是一个特殊的实体,而不是实际费用。这个新实体将具有以下字段:withdrawn_money,money_back和花钱_money。在计算当天的现金结算时,结果将是支出之和加上预支现金预提款的总和withdrawed_money,因此现金结算保持不变。稍后,在显示实际费用时,它们将直接转到费用表,但同时被注册为cash_advance paid_money新条目。这样,我们可以控制退还多少取款,同时将实际费用保存在正确的费用概念下,以备将来查询。

现金预付款不被视为实际费用对我来说很有意义,因为这笔钱掌握在员工手中,因此从技术上来说还不是费用。

对我来说,替代2听起来更好,但我仍在尝试找到最合适的实现。在这样的主题上获得经验丰富的开发人员和数据库设计师的意见将有很大的帮助。

预先感谢您的时间,如果我不太清楚,我很乐意澄清。

1 个答案:

答案 0 :(得分:0)

如果您熟悉重复输入会计,这种情况如下所示:

  1. 从使用货币作为参考/条款的账户501(指现金)到使用员工作为参考/条款的账户422(指公司职员)进行交易< / p>

  2. 当员工回来时:

    • 如果他仅使用信用卡付款并且未使用现金-您进行反向交易(从帐户422到帐户501)
    • 否则,对于他带回的每张收据/发票,您都从帐户422(使用员工作为参考/条款)到609(这是其他费用,然后引用适当的费用)进行交易
    • 如果员工没有一些钱的收据/发票-它保留在帐户422中,并且在下一次发薪时,您会为他的薪水进行较小的交易,并用从帐户422到帐户604的交易进行补偿(这是工资单)以清除剩余物