我正在开发一个会计应用程序,用户可以在其中拥有带有货币的产品
A
。产品的价值可以使用货币B
的支票付款进行托管,并且该支票付款可以用货币C
以现金支付。每当为该产品创建支票/现金付款时,如果是现金,则 paid_amount
以及如果是该产品的支票,则 escrow_amount
应增加此值。每当通过现金支付支票付款时,付款和产品的 paid_amount
应递增,产品的 escrow_amount
应随付款金额递减。向表中添加“CHECK”约束,其中 paid_amount >= 0 && <= amount AND escrow_amount >= 0 && <= amount
以下是两个表之间的关系。
我在尝试通过货币兑换支付/托管金额时遇到问题。
假设我们有一个产品,
amount
为“4000.00”,货币为A
。使用货币 B
创建支票付款,应支付产品的全额金额(“4000.00”A
)。该应用程序将要求以货币A
支付的金额,并根据输入的兑换率应用换算并将结果保存在付款中amount
。 IE。 "4000.00" A
≈ "1066.67" B
,因此将创建带有 amount
"1066.67" B
的付款,并且产品的 escrow_amount
将增加“4000.00”。现在创建现金支付来支付支票的全额。该应用程序将要求以货币支付的金额B
。 IE。 "1066.67" B
≈ "996.89" C
,因此将创建包含 amount
"996.89" C
的付款。现在支票付款paid_amount
列将增加“1066.67”,这是输入值。现在产品的 paid_amount
列应该递增。使用以下计算1066.67 * 3.75 ≈ 4000.01
。这将引发错误,因为最大允许值为“4000.00”。
A
= 3.75 B
B
= 1.07 C
我问的是,即使采用正确的计算方法或提示客户输入的方式,如何解决这个问题。
首先,您可以创建一个存储函数,负责将货币 X 转换为货币 Y。
其次,为您的计算选择一种货币,并使用您的参考货币存储所有内容,并始终将原始货币、最终货币和金额(以原始货币计)传递到您的计算中。
第三,确保您的限制以您的参考货币进行引用和计算。
简而言之,您应该在计算中始终应用一种货币,并将计算空间中的每个输入转换为该货币,然后将其转换回用户感兴趣的货币以进行表示。