存储每增值税百分比的金额

时间:2014-05-01 09:31:11

标签: ruby-on-rails

我有一个带发票的应用。对于发票,它显示具有金额和增值税百分比的发票行。在发票摘要中,我需要显示按增值税百分比分组的增值税总额。 invoice_line记录具有rate,quatity和vat_id。因此,当显示发票行时,我会遍历它们并显示它们:

- @invoice.invoice_lines.each do |line|
  %td= line.rate
  %td= line.quanity
  %td= line.rate*line.quantity
  %td= Vat.find(line.vat_id).percentage

如何存储按增值税ID分组的金额?我想把它们存放在一个带有哈希的数组中,但这很复杂,也许有一个很好的选择,我忽略了?

编辑: 我想我找到了一种使用Hash的方法。首先,我迭代所有增值税记录并创建哈希:

    - vat_amounts = Hash.new
    - @vats.each do |vat|
      - vat_amounts[vat.percentage] = 0

然后,在迭代invoice_lines时,我将增值税金额添加到正确的哈希记录中:

        - invoice.invoice_lines.each do |line|
          - vat = Vat.find(line.vat_id)
          %tr
            %td= line.quantity
            %td= line.rate)
            %td= line.quantity*line.rate
            %td= vat.percentage
            - vat_amount = (line.quantity*line.rate)*vat.percentage
            - vat_amounts[vat.percentage] += vat_amount

最后,在创建摘要时,我会显示每增值税百分比的增值税总额:

  .summary
    - total_vat = 0
    - @vats.order(:percentage).each do |vat|
      = "VAT #{vat.percentage}:" 
      = vat_amounts[vat.percentage]

当然,要做出很多改进,但这似乎有效。

0 个答案:

没有答案