Check if Directo counter is in range

See #277
This commit is contained in:
Alex Sherman 2020-02-10 14:35:48 +05:00
parent 5fc8b37236
commit d6dd4eccf5
2 changed files with 17 additions and 3 deletions

View file

@ -65,7 +65,7 @@ class Directo < ApplicationRecord
def self.send_monthly_invoices(debug: false)
I18n.locale = :et
I18n.locale = :et unless Rails.env.test?
month = Time.now - 1.month
invoices_until = month.end_of_month
date_format = "%Y-%m-%d"
@ -74,8 +74,9 @@ class Directo < ApplicationRecord
min_directo = Setting.directo_monthly_number_min.presence.try(:to_i)
max_directo = Setting.directo_monthly_number_max.presence.try(:to_i)
last_directo = [Setting.directo_monthly_number_last.presence.try(:to_i), min_directo].compact.max || 0
if max_directo && max_directo <= last_directo
raise "Directo counter is out of period (max allowed number is smaller than last counter number)"
if max_directo && (max_directo <= last_directo + Registrar.count)
raise 'Directo counter is out of period (max allowed number is smaller than last counter'\
'number plus Registrar\'s count)'
end
directo_next = last_directo

View file

@ -5,6 +5,19 @@ class DirectoTest < ActiveSupport::TestCase
@invoice = invoices(:one)
end
def test_monthly_invoices_max_range_raises_if_overlaps
Setting.directo_monthly_number_max = Setting.directo_monthly_number_last.to_i + Registrar.count - 1
error_message = 'Directo counter is out of period (max allowed number is smaller than last '\
'counternumber plus Registrar\'s count)'
error = assert_raises RuntimeError do
Directo.send_monthly_invoices
end
assert_equal error_message, error.message
end
def test_xml_is_include_transaction_date
@invoice.update(total: @invoice.account_activity.bank_transaction.sum)
@invoice.account_activity.bank_transaction.update(paid_at: Time.zone.now)