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

View file

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

View file

@ -54,7 +54,7 @@ class Registrar < ApplicationRecord
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
invoice = invoices.create!(
@ -90,7 +90,6 @@ class Registrar < ApplicationRecord
buyer_email: email,
reference_no: reference_no,
vat_rate: vat_rate,
total: total,
items_attributes: [
{
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 lock_timeout = 0;
SET client_encoding = 'UTF8';
@ -371,7 +367,6 @@ CREATE TABLE public.bank_statements (
id integer NOT NULL,
bank_code character varying,
iban character varying,
import_file_path character varying,
queried_at timestamp without time zone,
created_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,
unit character varying NOT NULL,
quantity integer NOT NULL,
price numeric(10,2) NOT NULL,
price numeric(10,3) NOT NULL,
created_at timestamp without time zone,
updated_at timestamp without time zone,
creator_str character varying,
@ -4850,4 +4845,8 @@ INSERT INTO "schema_migrations" (version) VALUES
('20200807110611'),
('20200811074839'),
('20200812090409'),
('20200812125810');
('20200812125810'),
('20200908131554'),
('20200910085157');