class Invoice < ApplicationRecord belongs_to :user belongs_to :user_firm belongs_to :customer has_many :invoice_products, inverse_of: :invoice, dependent: :destroy accepts_nested_attributes_for :invoice_products, allow_destroy: true def netto_amount invoice_products.sum('invoice_products.netto_price * invoice_products.qty') end def products_with_tax(vat_id) self.invoice_products.joins(:product => :vat).where('vats.id = ?',vat_id) end def products_with_tax_sum_arr(vat_id) sum = 0.0 vat = 0.0 total = 0.0 for invoice_product in self.invoice_products.joins(:product => :vat).where('vats.id = ?',vat_id) sum += invoice_product.netto_price * invoice_product.qty vat += (invoice_product.netto_price * (invoice_product.product.vat.tax_rate/100)) * invoice_product.qty total += (invoice_product.netto_price * (invoice_product.product.vat.tax_rate/100 + 1)) * invoice_product.qty end return [sum,vat,total] end end