我有一张表Invoice和InvoiceItems,我自己处理付款。客户可以用不同的货币付款,但我卖的服务价格是单一货币,比如欧元。或者此刻,至少。 我的问题是:
a)我是否应再创建一个表InvoicePayments,我将以支付货币的信息存储为currency_id字段
b)或者我应该将currency_id字段保留在表格Invoices中吗?
在#a的情况下,每当客户改变他们想要支付的货币时,我会在InvoicePayments中生成新记录,同时在发票中保留单个记录
在#b的情况下,每次客户改变他们想要支付的货币时,我都会在Invoice中生成新记录。
哪一个更好?对我来说,他们或多或少都是一样的。但是......也许还有我还不知道的东西。
请不要说出短语"这取决于你需要什么" - 一切都取决于我需要的东西。
答案 0 :(得分:0)
首先,如果有任何方式购买会计软件而不是构建它,那么就这样做。我的第一份专业编程工作是编写涉及国际会计的应用程序。这让人头脑麻木。我看到副总统之间就如何应用外汇汇率进行了实际的争斗。
但是如果你必须建立它,你不仅需要存储支付全部或部分发票的货币,还需要存储适用于该支付的汇率或有效价值。日常用户不应该更新汇率或有效价值。
汇率随时间而变化。因此,看似这样的付款行并不能告诉您2016年10月3日的100欧元发票是否已全额付清。
invoice pmt_date pmt_currency pmt_amount -- 10132 2016-10-03 USD 89.00
今天汇率为1欧元= 1.0681美元。 2016年10月3日的汇率为1 EUR = 1.1236 USD。以下表格中的任何一个都可以存储这类事实。
invoice pmt_date pmt_currency pmt_amount exchange_rate -- 10132 2016-10-03 USD 89.00 1.1236
invoice pmt_date pmt_currency pmt_amount pmt_amount_eur -- 10132 2016-10-03 USD 89.00 100.00
有关哪种汇率适用于每笔付款的规则取决于申请。