diff --git a/app/controllers/admin/registrars_controller.rb b/app/controllers/admin/registrars_controller.rb index 119abf85b..eb9ae9bd7 100644 --- a/app/controllers/admin/registrars_controller.rb +++ b/app/controllers/admin/registrars_controller.rb @@ -79,7 +79,8 @@ module Admin :code, :test_registrar, :accounting_customer_code, - :language) + :language, + :vat_rate,) end end end diff --git a/app/models/registrar.rb b/app/models/registrar.rb index 5fb68fea2..393bd56f2 100644 --- a/app/models/registrar.rb +++ b/app/models/registrar.rb @@ -17,10 +17,22 @@ class Registrar < ActiveRecord::Base validates :name, :reg_no, :reference_no, :code, uniqueness: true validates :accounting_customer_code, presence: true validates :language, presence: true + validates :vat_rate, :vat_no, absence: true, if: :local_vat_payer? + validates :vat_rate, presence: true, if: 'foreign_vat_payer? && vat_no.blank?' + validates :vat_rate, absence: true, if: 'foreign_vat_payer? && vat_no?' + validates :vat_rate, numericality: { greater_than_or_equal_to: 0, less_than_or_equal_to: 99 }, allow_nil: true validate :forbidden_codes 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)) @@ -163,4 +175,12 @@ class Registrar < ActiveRecord::Base def set_defaults self.language = Setting.default_language unless language end + + def local_vat_payer? + country == Registry.instance.legal_address_country + end + + def foreign_vat_payer? + !local_vat_payer? + end end diff --git a/app/views/admin/registrars/_billing.html.erb b/app/views/admin/registrars/_billing.html.erb index f3960233e..7ba778d08 100644 --- a/app/views/admin/registrars/_billing.html.erb +++ b/app/views/admin/registrars/_billing.html.erb @@ -7,6 +7,9 @@