Merge pull request #1524 from internetee/277-check-monthly-invoice-number-in-range

Check if Directo counter is in range
This commit is contained in:
Timo Võhmar 2020-02-20 20:42:25 +02:00 committed by GitHub
commit f41289cfa8
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 17 additions and 3 deletions

View file

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

View file

@ -5,6 +5,19 @@ class DirectoTest < ActiveSupport::TestCase
@invoice = invoices(:one) @invoice = invoices(:one)
end 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 def test_xml_is_include_transaction_date
@invoice.update(total: @invoice.account_activity.bank_transaction.sum) @invoice.update(total: @invoice.account_activity.bank_transaction.sum)
@invoice.account_activity.bank_transaction.update(paid_at: Time.zone.now) @invoice.account_activity.bank_transaction.update(paid_at: Time.zone.now)