Change Invoice::Item price scale to 3 places

This commit is contained in:
Karl Erik Õunapuu 2020-09-10 12:00:13 +03:00
parent 3decec8b02
commit d62e55e6a1
No known key found for this signature in database
GPG key ID: C9DD647298A34764
5 changed files with 18 additions and 16 deletions

View file

@ -82,7 +82,7 @@ class Invoice < ApplicationRecord
end end
def vat_amount def vat_amount
subtotal * vat_rate / 100 (subtotal * vat_rate / 100)
end end
def total def total
@ -118,9 +118,8 @@ class Invoice < ApplicationRecord
vat = VatRateCalculator.new(registrar: registrar_user).calculate vat = VatRateCalculator.new(registrar: registrar_user).calculate
wo_vat = (transaction.sum / (1 + (vat / 100))) wo_vat = (transaction.sum / (1 + (vat / 100)))
registrar_user.issue_prepayment_invoice(wo_vat, 'Direct top-up via bank transfer', registrar_user.issue_prepayment_invoice(wo_vat, 'Direct top-up via bank transfer',
payable: false, total: transaction.sum) payable: false)
end end
private private
@ -130,6 +129,6 @@ class Invoice < ApplicationRecord
end end
def calculate_total def calculate_total
self.total = subtotal + vat_amount self.total = (subtotal + vat_amount).round(3)
end end
end end

View file

@ -5,7 +5,7 @@ class InvoiceItem < ApplicationRecord
delegate :vat_rate, to: :invoice delegate :vat_rate, to: :invoice
def item_sum_without_vat def item_sum_without_vat
(price * quantity).round(2) (price * quantity).round(3)
end end
alias_method :subtotal, :item_sum_without_vat alias_method :subtotal, :item_sum_without_vat
@ -14,6 +14,6 @@ class InvoiceItem < ApplicationRecord
end end
def total def total
subtotal + vat_amount (subtotal + vat_amount)
end end
end end

View file

@ -54,7 +54,7 @@ class Registrar < ApplicationRecord
end end
end end
def issue_prepayment_invoice(amount, description = nil, payable: true, total: nil) def issue_prepayment_invoice(amount, description = nil, payable: true)
vat_rate = ::Invoice::VatRateCalculator.new(registrar: self).calculate vat_rate = ::Invoice::VatRateCalculator.new(registrar: self).calculate
invoice = invoices.create!( invoice = invoices.create!(
@ -90,7 +90,6 @@ class Registrar < ApplicationRecord
buyer_email: email, buyer_email: email,
reference_no: reference_no, reference_no: reference_no,
vat_rate: vat_rate, vat_rate: vat_rate,
total: total,
items_attributes: [ items_attributes: [
{ {
description: 'prepayment', description: 'prepayment',

View file

@ -0,0 +1,5 @@
class ChangeInvoiceItemPriceScaleToThreePlaces < ActiveRecord::Migration[6.0]
def change
change_column :invoice_items, :price, :decimal, precision: 10, scale: 3
end
end

View file

@ -1,7 +1,3 @@
---
--- PostgreSQL database dump
---
SET statement_timeout = 0; SET statement_timeout = 0;
SET lock_timeout = 0; SET lock_timeout = 0;
SET client_encoding = 'UTF8'; SET client_encoding = 'UTF8';
@ -371,7 +367,6 @@ CREATE TABLE public.bank_statements (
id integer NOT NULL, id integer NOT NULL,
bank_code character varying, bank_code character varying,
iban character varying, iban character varying,
import_file_path character varying,
queried_at timestamp without time zone, queried_at timestamp without time zone,
created_at timestamp without time zone, created_at timestamp without time zone,
updated_at timestamp without time zone, updated_at timestamp without time zone,
@ -963,7 +958,7 @@ CREATE TABLE public.invoice_items (
description character varying NOT NULL, description character varying NOT NULL,
unit character varying NOT NULL, unit character varying NOT NULL,
quantity integer NOT NULL, quantity integer NOT NULL,
price numeric(10,2) NOT NULL, price numeric(10,3) NOT NULL,
created_at timestamp without time zone, created_at timestamp without time zone,
updated_at timestamp without time zone, updated_at timestamp without time zone,
creator_str character varying, creator_str character varying,
@ -4850,4 +4845,8 @@ INSERT INTO "schema_migrations" (version) VALUES
('20200807110611'), ('20200807110611'),
('20200811074839'), ('20200811074839'),
('20200812090409'), ('20200812090409'),
('20200812125810'); ('20200812125810'),
('20200908131554'),
('20200910085157');