MySQL存储每张发票的增值税税率和金额

时间:2015-03-05 17:28:31

标签: mysql triggers sum storage store

我有基于MySQL数据库的计费软件中的表invoice_header,invoice_rows和vat_codes。我需要添加自己的表invoice_vat。 对于每个新发票(或更新的发票),我需要将增值税率,净额和增值税金额存储(或更新)到表格invoice_vat中,并由增值税代码分组。 我有几个vate代码和费率。例如,我有:

ABC tax rate 5%
DEF tax rate 10%
GHI tax rate 22% etc.

对于每张发票,我可以与ABC大桶一起销售一些产品,一些产品带有DEF大桶和一些其他带GHI大桶的产品。通常我们不会在一张发票中使用超过5种不同的增值税率。 例如,我的一张发票如下:

product1, quantity 2pcs, unit_net_price 100.00, row_net_amount 200.00, vat ABC.
product2, quantity 3pcs, unit_net_price 50.00, row_net_amount 150.00, vat ABC.
product3, quantity 1pcs, unit_net_price 90.00, row_net_amount 90.00, vat DEF.
product4, quantity 4pcs, unit_net_price 25.00, row_net_amount 100.00, vat GHI.

对于此发票,我需要将值存储到表invoice_vat:

vat1_code ABC, vat1_rate 5, vat1_net_total_amount 350.00
vat2_code DEF, vat2_rate 10, vat2_net_total_amount 90.00
vat3_code GHI, vat3_rate 22, vat3_net_total_amount 100.00
vat4_code NIL, vat4_rate 0, vat4_net_total_amount 0.00
vat5_code NIL, vat5_rate 0, vat5_net_total_amount 0.00

我可以执行以下查询:

SELECT invoice_rows.vat, sum(invoice_rows.row_net_amount) AS mysum 
WHERE invoice_rows.id=655 
group by invoice_rows.vat;

现在我需要存储我从查询中获得的值,每次创建新发票或修改/更新旧发票。 我应该使用扳机吗?应该如何看待触发器? 朱塞佩

1 个答案:

答案 0 :(得分:0)

拥有逐项列出发票组件的表格。另一张表格显示发送给客户的发票金额 。对于会计和商业以及可能的法律原因,此表应该是"写一次"。也就是说,一旦完成,你永远不应该改变它。此时,您正在记录您发送给客户的内容;它不是一些可以添加/更改/删除内容的便笺簿。

请注意,特别是,如果商品的价格发生变化,或增值税金额发生变化,则新计算会导致发票与您发送给客户的内容不一致。不好。