Add configurable invoice due date #2775

This commit is contained in:
Martin Lensment 2015-07-27 18:08:13 +03:00
parent 48af3e77cd
commit 95a73327db
9 changed files with 18 additions and 11 deletions

View file

@ -53,6 +53,7 @@ class Admin::SettingsController < AdminController
:transfer_wait_time, :transfer_wait_time,
:invoice_number_min, :invoice_number_min,
:invoice_number_max, :invoice_number_max,
:days_to_keep_invoices_active,
:days_to_keep_overdue_invoices_active, :days_to_keep_overdue_invoices_active,
:days_to_renew_domain_before_expire, :days_to_renew_domain_before_expire,
:expire_warning_period, :expire_warning_period,

View file

@ -72,10 +72,11 @@ class Registrar < ActiveRecord::Base
end end
# rubocop:disable Metrics/MethodLength # rubocop:disable Metrics/MethodLength
# rubocop:disable Metrics/AbcSize
def issue_prepayment_invoice(amount, description = nil) def issue_prepayment_invoice(amount, description = nil)
invoices.create( invoices.create(
invoice_type: 'DEB', invoice_type: 'DEB',
due_date: Time.zone.now.to_date + 1.day, due_date: (Time.zone.now.to_date + Setting.days_to_keep_invoices_active.days).end_of_day,
payment_term: 'prepayment', payment_term: 'prepayment',
description: description, description: description,
currency: 'EUR', currency: 'EUR',
@ -117,6 +118,7 @@ class Registrar < ActiveRecord::Base
] ]
) )
end end
# rubocop:enable Metrics/AbcSize
# rubocop:enable Metrics/MethodLength # rubocop:enable Metrics/MethodLength
def cash_account def cash_account

View file

@ -24,10 +24,10 @@
- if x.cancelled? - if x.cancelled?
%td.text-grey= t(:cancelled) %td.text-grey= t(:cancelled)
- else - else
%td= l(x.due_date) %td= l(x.due_date, format: :date_long)
- if x.binded? - if x.binded?
%td= l(x.receipt_date) %td= l(x.receipt_date, format: :date_long)
- elsif x.cancelled? - elsif x.cancelled?
%td.text-grey= t(:cancelled) %td.text-grey= t(:cancelled)
- else - else

View file

@ -65,6 +65,7 @@
%tbody %tbody
= render 'setting_row', var: :invoice_number_min = render 'setting_row', var: :invoice_number_min
= render 'setting_row', var: :invoice_number_max = render 'setting_row', var: :invoice_number_max
= render 'setting_row', var: :days_to_keep_invoices_active
= render 'setting_row', var: :days_to_keep_overdue_invoices_active = render 'setting_row', var: :days_to_keep_overdue_invoices_active
= render 'setting_row', var: :registry_billing_email = render 'setting_row', var: :registry_billing_email
= render 'setting_row', var: :registry_invoice_contact = render 'setting_row', var: :registry_invoice_contact

View file

@ -61,13 +61,13 @@
%tr %tr
%td= link_to(x, [:registrar, x]) %td= link_to(x, [:registrar, x])
- if x.receipt_date - if x.receipt_date
%td= l(x.receipt_date) %td= l(x.receipt_date, format: :date_long)
- elsif x.cancelled? - elsif x.cancelled?
%td.text-grey= t(:cancelled) %td.text-grey= t(:cancelled)
- else - else
%td{class: 'text-danger'}= t(:unpaid) %td{class: 'text-danger'}= t(:unpaid)
%td= l(x.due_date) %td= l(x.due_date, format: :date_long)
%td= x.sum %td= x.sum
.row .row
.col-md-12 .col-md-12

View file

@ -2,21 +2,21 @@
%hr %hr
%dl.dl-horizontal %dl.dl-horizontal
%dt= t(:issue_date) %dt= t(:issue_date)
%dd= l(@invoice.created_at) %dd= l(@invoice.created_at, format: :date_long)
- if @invoice.cancelled? - if @invoice.cancelled?
%dt= t(:cancel_date) %dt= t(:cancel_date)
%dd= l(@invoice.cancelled_at) %dd= l(@invoice.cancelled_at, format: :date_long)
%dt= t(:due_date) %dt= t(:due_date)
- if @invoice.cancelled? - if @invoice.cancelled?
%dd.text-grey= t(:cancelled) %dd.text-grey= t(:cancelled)
- else - else
%dd= l(@invoice.due_date) %dd= l(@invoice.due_date, format: :date_long)
%dt= t(:receipt_date) %dt= t(:receipt_date)
- if @invoice.binded? - if @invoice.binded?
%dd= l(@invoice.receipt_date) %dd= l(@invoice.receipt_date, format: :date_long)
- elsif @invoice.cancelled? - elsif @invoice.cancelled?
%dd.text-grey= t(:cancelled) %dd.text-grey= t(:cancelled)
- else - else

View file

@ -27,6 +27,7 @@ if con.present? && con.table_exists?('settings')
Setting.save_default(:invoice_number_min, 131050) Setting.save_default(:invoice_number_min, 131050)
Setting.save_default(:invoice_number_max, 149999) Setting.save_default(:invoice_number_max, 149999)
Setting.save_default(:days_to_keep_invoices_active, 30)
Setting.save_default(:days_to_keep_overdue_invoices_active, 30) Setting.save_default(:days_to_keep_overdue_invoices_active, 30)
Setting.save_default(:days_to_renew_domain_before_expire, 90) Setting.save_default(:days_to_renew_domain_before_expire, 90)
Setting.save_default(:expire_warning_period, 15) Setting.save_default(:expire_warning_period, 15)

View file

@ -122,11 +122,13 @@ describe Registrar do
end end
it 'should be able to issue a prepayment invoice' do it 'should be able to issue a prepayment invoice' do
Setting.days_to_keep_invoices_active = 30
Fabricate(:registrar, name: 'EIS', reg_no: '90010019') Fabricate(:registrar, name: 'EIS', reg_no: '90010019')
@registrar.issue_prepayment_invoice(200, 'add some money') @registrar.issue_prepayment_invoice(200, 'add some money')
@registrar.invoices.count.should == 1 @registrar.invoices.count.should == 1
i = @registrar.invoices.first i = @registrar.invoices.first
i.sum.should == BigDecimal.new('240.0') i.sum.should == BigDecimal.new('240.0')
i.due_date.should be_within(0.1).of((Time.zone.now + 30.days).end_of_day)
i.description.should == 'add some money' i.description.should == 'add some money'
end end

View file

@ -49,8 +49,8 @@ def create_settings
Setting.client_side_status_editing_enabled = true Setting.client_side_status_editing_enabled = true
# speedup and easier to create fabrications # speedup and easier to create fabrications
@fixed_registrar = @fixed_registrar =
Registrar.find_by_name('fixed registrar') || Registrar.find_by_name('fixed registrar') ||
Fabricate(:registrar, name: 'fixed registrar', code: 'FIXED') Fabricate(:registrar, name: 'fixed registrar', code: 'FIXED')
end end