mirror of
https://github.com/internetee/registry.git
synced 2025-08-05 01:11:43 +02:00
parent
c47ca77ca6
commit
6a01226138
8 changed files with 126 additions and 20 deletions
|
@ -29,6 +29,7 @@ class Invoice < ActiveRecord::Base
|
|||
|
||||
validates :invoice_type, :due_date, :currency, :seller_name,
|
||||
:seller_iban, :buyer_name, :invoice_items, :vat_rate, presence: true
|
||||
validates :vat_rate, numericality: { greater_than_or_equal_to: 0, less_than_or_equal_to: 99 }, allow_nil: true
|
||||
|
||||
before_create :set_invoice_number, :check_vat
|
||||
|
||||
|
@ -106,12 +107,12 @@ class Invoice < ActiveRecord::Base
|
|||
def buyer_country
|
||||
Country.new(buyer_country_code)
|
||||
end
|
||||
|
||||
|
||||
# order is used for directo/banklink description
|
||||
def order
|
||||
"Order nr. #{number}"
|
||||
end
|
||||
|
||||
|
||||
def pdf(html)
|
||||
kit = PDFKit.new(html)
|
||||
kit.to_pdf
|
||||
|
|
|
@ -1,3 +1,21 @@
|
|||
class VATRateType < ActiveRecord::Type::Value
|
||||
def type_cast_from_user(value)
|
||||
if value.blank?
|
||||
nil
|
||||
else
|
||||
super
|
||||
end
|
||||
end
|
||||
|
||||
def type_cast_from_database(value)
|
||||
BigDecimal.new(value) * 100 if value
|
||||
end
|
||||
|
||||
def type_cast_for_database(value)
|
||||
BigDecimal.new(value) / 100 if value
|
||||
end
|
||||
end
|
||||
|
||||
class Registrar < ActiveRecord::Base
|
||||
include Versions # version/registrar_version.rb
|
||||
|
||||
|
@ -23,16 +41,9 @@ class Registrar < ActiveRecord::Base
|
|||
validates :vat_rate, numericality: { greater_than_or_equal_to: 0, less_than_or_equal_to: 99 }, allow_nil: true
|
||||
validate :forbidden_codes
|
||||
|
||||
attribute :vat_rate, VATRateType.new
|
||||
after_initialize :set_defaults
|
||||
|
||||
before_save do
|
||||
self.vat_rate = vat_rate / 100.0 if vat_rate
|
||||
end
|
||||
|
||||
after_find do |registrar|
|
||||
registrar.vat_rate = registrar.vat_rate * 100 if registrar.vat_rate
|
||||
end
|
||||
|
||||
def forbidden_codes
|
||||
return true unless ['CID'].include? code
|
||||
errors.add(:code, I18n.t(:forbidden_code))
|
||||
|
@ -87,6 +98,16 @@ class Registrar < ActiveRecord::Base
|
|||
# rubocop:disable Metrics/MethodLength
|
||||
# rubocop:disable Metrics/AbcSize
|
||||
def issue_prepayment_invoice(amount, description = nil)
|
||||
vat_rate = if local_vat_payer?
|
||||
Setting.registry_vat_prc
|
||||
else
|
||||
if vat_no.blank?
|
||||
self.vat_rate
|
||||
else
|
||||
nil
|
||||
end
|
||||
end
|
||||
|
||||
invoices.create(
|
||||
invoice_type: 'DEB',
|
||||
due_date: (Time.zone.now.to_date + Setting.days_to_keep_invoices_active.days).end_of_day,
|
||||
|
@ -94,6 +115,7 @@ class Registrar < ActiveRecord::Base
|
|||
description: description,
|
||||
currency: 'EUR',
|
||||
vat_rate: Setting.registry_vat_prc,
|
||||
vat_rate: vat_rate,
|
||||
seller_name: Setting.registry_juridical_name,
|
||||
seller_reg_no: Setting.registry_reg_no,
|
||||
seller_iban: Setting.registry_iban,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue