mirror of
https://github.com/internetee/registry.git
synced 2025-06-10 14:44:47 +02:00
Merge branch 'master' into remove-unused-cron-task
This commit is contained in:
commit
b1209f7078
121 changed files with 1401 additions and 814 deletions
2
.reek
2
.reek
|
@ -191,7 +191,6 @@ DuplicateMethodCall:
|
|||
- Registrant::SessionsController#mid_status
|
||||
- Registrant::WhoisController#index
|
||||
- Registrar::AccountActivitiesController#index
|
||||
- Registrar::BaseController#check_ip
|
||||
- Registrar::ContactsController#download_list
|
||||
- Registrar::ContactsController#index
|
||||
- Registrar::ContactsController#normalize_search_parameters
|
||||
|
@ -666,7 +665,6 @@ TooManyStatements:
|
|||
- Registrant::SessionsController#mid
|
||||
- Registrant::SessionsController#mid_status
|
||||
- Registrar::AccountActivitiesController#index
|
||||
- Registrar::BaseController#check_ip
|
||||
- Registrar::ContactsController#download_list
|
||||
- Registrar::ContactsController#index
|
||||
- Registrar::ContactsController#normalize_search_parameters
|
||||
|
|
|
@ -1,3 +1,12 @@
|
|||
03.04.2018
|
||||
* BUG: Fixed bug with sometimes failing bank-link payments [#642](https://github.com/internetee/registry/issues/642)
|
||||
* EPP: Domain and associated objects are now validated on domain renew [#678](https://github.com/internetee/registry/issues/678)
|
||||
* Admin: drop uniqueness requirement from registrar's registry number field [#776](https://github.com/internetee/registry/issues/776)
|
||||
* Security: Loofah gem update to 2.2.2 [#783](https://github.com/internetee/registry/pull/783)
|
||||
* Disabled spellcheck for browsers to cleanup UI [#759](https://github.com/internetee/registry/issues/759)
|
||||
* Admin: refactored registrar management [#770](https://github.com/internetee/registry/pull/770)
|
||||
* Fix structure.sql [#796](https://github.com/internetee/registry/pull/796)
|
||||
|
||||
19.03.2018
|
||||
* EPP transfer and REPP bulk transfer reuses contact objects [#746](https://github.com/internetee/registry/issues/746)
|
||||
* Gems: Rack (1.6.9) and Rack-protection (1.5.5) update [#768](https://github.com/internetee/registry/issues/768)
|
||||
|
|
|
@ -160,6 +160,7 @@ GEM
|
|||
unicode_utils (~> 1.4)
|
||||
crack (0.4.3)
|
||||
safe_yaml (~> 1.0.0)
|
||||
crass (1.0.3)
|
||||
daemons (1.2.4)
|
||||
daemons-rails (1.2.1)
|
||||
daemons
|
||||
|
@ -247,7 +248,8 @@ GEM
|
|||
activesupport (>= 3.0.0)
|
||||
libxml-ruby (3.0.0)
|
||||
liquid (3.0.6)
|
||||
loofah (2.0.3)
|
||||
loofah (2.2.2)
|
||||
crass (~> 1.0.2)
|
||||
nokogiri (>= 1.5.9)
|
||||
mail (2.6.6)
|
||||
mime-types (>= 1.16, < 4)
|
||||
|
|
|
@ -9,6 +9,7 @@
|
|||
#= require select2
|
||||
#= require jquery.doubleScroll
|
||||
#= require datepicker
|
||||
#= require spell_check
|
||||
#= require admin/application
|
||||
#= require admin/app
|
||||
#= require_tree ./admin
|
||||
|
|
|
@ -4,4 +4,5 @@
|
|||
#= require jquery-ui/datepicker
|
||||
#= require select2
|
||||
#= require datepicker
|
||||
#= require spell_check
|
||||
#= require shared/general
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
#= require jquery-ui/datepicker
|
||||
#= require select2
|
||||
#= require datepicker
|
||||
#= require spell_check
|
||||
#= require shared/general
|
||||
#= require registrar/autocomplete
|
||||
#= require registrar/application
|
||||
|
|
12
app/assets/javascripts/spell_check.js
Normal file
12
app/assets/javascripts/spell_check.js
Normal file
|
@ -0,0 +1,12 @@
|
|||
(function() {
|
||||
function disableSpellCheck() {
|
||||
let selector = 'input[type=text], textarea';
|
||||
let textFields = document.querySelectorAll(selector);
|
||||
|
||||
for (let field of textFields) {
|
||||
field.spellcheck = false;
|
||||
}
|
||||
}
|
||||
|
||||
disableSpellCheck();
|
||||
})();
|
|
@ -24,7 +24,7 @@ module Admin
|
|||
@invoice = Invoice.find_by(id: params[:invoice_id])
|
||||
@bank_transaction = @bank_statement.bank_transactions.build(
|
||||
description: @invoice.to_s,
|
||||
sum: @invoice.sum,
|
||||
sum: @invoice.total,
|
||||
reference_no: @invoice.reference_no,
|
||||
paid_at: Time.zone.now.to_date,
|
||||
currency: 'EUR'
|
||||
|
|
|
@ -19,17 +19,15 @@ module Admin
|
|||
def create
|
||||
@registrar = Registrar.new(registrar_params)
|
||||
|
||||
begin
|
||||
if @registrar.valid?
|
||||
@registrar.transaction do
|
||||
@registrar.save!
|
||||
@registrar.accounts.create!(account_type: Account::CASH, currency: 'EUR')
|
||||
end
|
||||
|
||||
flash[:notice] = t('.created')
|
||||
redirect_to [:admin, @registrar]
|
||||
rescue ActiveRecord::RecordInvalid
|
||||
flash.now[:alert] = t('.not_created')
|
||||
render 'new'
|
||||
redirect_to [:admin, @registrar], notice: t('.created')
|
||||
else
|
||||
render :new
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -38,21 +36,19 @@ module Admin
|
|||
|
||||
def update
|
||||
if @registrar.update(registrar_params)
|
||||
flash[:notice] = t('.updated')
|
||||
redirect_to [:admin, @registrar]
|
||||
redirect_to [:admin, @registrar], notice: t('.updated')
|
||||
else
|
||||
flash.now[:alert] = t('.not_updated')
|
||||
render 'edit'
|
||||
render :edit
|
||||
end
|
||||
end
|
||||
|
||||
def destroy
|
||||
if @registrar.destroy
|
||||
flash[:notice] = I18n.t('registrar_deleted')
|
||||
redirect_to admin_registrars_path
|
||||
flash[:notice] = t('.deleted')
|
||||
redirect_to admin_registrars_url
|
||||
else
|
||||
flash.now[:alert] = I18n.t('failed_to_delete_registrar')
|
||||
render 'show'
|
||||
flash[:alert] = @registrar.errors.full_messages.first
|
||||
redirect_to admin_registrar_url(@registrar)
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -65,7 +61,6 @@ module Admin
|
|||
def registrar_params
|
||||
params.require(:registrar).permit(:name,
|
||||
:reg_no,
|
||||
:vat_no,
|
||||
:street,
|
||||
:city,
|
||||
:state,
|
||||
|
@ -74,10 +69,12 @@ module Admin
|
|||
:email,
|
||||
:phone,
|
||||
:website,
|
||||
:billing_email,
|
||||
:code,
|
||||
:test_registrar,
|
||||
:vat_no,
|
||||
:vat_rate,
|
||||
:accounting_customer_code,
|
||||
:billing_email,
|
||||
:language)
|
||||
end
|
||||
end
|
||||
|
|
|
@ -55,8 +55,8 @@ class Registrar
|
|||
end
|
||||
|
||||
def normalize_search_parameters
|
||||
params[:q][:sum_cache_gteq].gsub!(',', '.') if params[:q][:sum_cache_gteq]
|
||||
params[:q][:sum_cache_lteq].gsub!(',', '.') if params[:q][:sum_cache_lteq]
|
||||
params[:q][:total_gteq].gsub!(',', '.') if params[:q][:total_gteq]
|
||||
params[:q][:total_lteq].gsub!(',', '.') if params[:q][:total_lteq]
|
||||
|
||||
ca_cache = params[:q][:due_date_lteq]
|
||||
begin
|
||||
|
|
|
@ -3,7 +3,7 @@ class Registrar
|
|||
protect_from_forgery except: :back
|
||||
|
||||
skip_authorization_check # actually anyone can pay, no problems at all
|
||||
skip_before_action :authenticate_user!, :check_ip, only: [:back]
|
||||
skip_before_action :authenticate_user!, :check_ip_restriction, only: [:back]
|
||||
before_action :check_bank
|
||||
|
||||
# to handle existing model we should
|
||||
|
|
|
@ -29,7 +29,7 @@ class BankLink
|
|||
hash["VK_VERSION"] = "008"
|
||||
hash["VK_SND_ID"] = ENV["payments_#{type}_seller_account"]
|
||||
hash["VK_STAMP"] = invoice.number
|
||||
hash["VK_AMOUNT"] = number_with_precision(invoice.sum_cache, :precision => 2, :separator => ".")
|
||||
hash["VK_AMOUNT"] = number_with_precision(invoice.total, :precision => 2, :separator => ".")
|
||||
hash["VK_CURR"] = invoice.currency
|
||||
hash["VK_REF"] = ""
|
||||
hash["VK_MSG"] = invoice.order
|
||||
|
@ -140,7 +140,7 @@ class BankLink
|
|||
|
||||
def validate_amount
|
||||
source = number_with_precision(BigDecimal.new(params["VK_AMOUNT"].to_s), precision: 2, separator: ".")
|
||||
target = number_with_precision(invoice.sum_cache, precision: 2, separator: ".")
|
||||
target = number_with_precision(invoice.total, precision: 2, separator: ".")
|
||||
|
||||
source == target
|
||||
end
|
||||
|
|
|
@ -47,7 +47,7 @@ class BankTransaction < ActiveRecord::Base
|
|||
return if invoice.binded?
|
||||
return if invoice.cancelled?
|
||||
|
||||
return if invoice.sum != sum
|
||||
return if invoice.total != sum
|
||||
create_activity(registrar, invoice)
|
||||
end
|
||||
# rubocop: enable Metrics/PerceivedComplexity
|
||||
|
@ -76,7 +76,7 @@ class BankTransaction < ActiveRecord::Base
|
|||
return
|
||||
end
|
||||
|
||||
if invoice.sum != sum
|
||||
if invoice.total != sum
|
||||
errors.add(:base, I18n.t('invoice_and_transaction_sums_do_not_match'))
|
||||
return
|
||||
end
|
||||
|
@ -88,7 +88,7 @@ class BankTransaction < ActiveRecord::Base
|
|||
create_account_activity(
|
||||
account: registrar.cash_account,
|
||||
invoice: invoice,
|
||||
sum: invoice.sum_without_vat,
|
||||
sum: invoice.subtotal,
|
||||
currency: currency,
|
||||
description: description,
|
||||
activity_type: AccountActivity::ADD_CREDIT
|
||||
|
|
|
@ -3,7 +3,7 @@ class Directo < ActiveRecord::Base
|
|||
belongs_to :item, polymorphic: true
|
||||
|
||||
def self.send_receipts
|
||||
new_trans = Invoice.where(invoice_type: "DEB", in_directo: false).where(cancelled_at: nil)
|
||||
new_trans = Invoice.where(in_directo: false).where(cancelled_at: nil)
|
||||
total = new_trans.count
|
||||
counter = 0
|
||||
Rails.logger.info("[DIRECTO] Will try to send #{total} invoices")
|
||||
|
@ -15,7 +15,7 @@ class Directo < ActiveRecord::Base
|
|||
group.each do |invoice|
|
||||
|
||||
if invoice.account_activity.nil? || invoice.account_activity.bank_transaction.nil? ||
|
||||
invoice.account_activity.bank_transaction.sum.nil? || invoice.account_activity.bank_transaction.sum != invoice.sum_cache
|
||||
invoice.account_activity.bank_transaction.sum.nil? || invoice.account_activity.bank_transaction.sum != invoice.total
|
||||
Rails.logger.info("[DIRECTO] Invoice #{invoice.number} has been skipped")
|
||||
next
|
||||
end
|
||||
|
@ -29,12 +29,14 @@ class Directo < ActiveRecord::Base
|
|||
"InvoiceDate" => invoice.created_at.strftime("%Y-%m-%dT%H:%M:%S"),
|
||||
"PaymentTerm" => Setting.directo_receipt_payment_term,
|
||||
"Currency" => invoice.currency,
|
||||
"CustomerCode"=> invoice.buyer.accounting_customer_code
|
||||
"CustomerCode"=> invoice.buyer.accounting_customer_code,
|
||||
'TotalVAT' => ActionController::Base.helpers.number_with_precision(invoice.vat_amount, precision: 2, separator: '.')
|
||||
){
|
||||
xml.line(
|
||||
"ProductID" => Setting.directo_receipt_product_name,
|
||||
"Quantity" => 1,
|
||||
"UnitPriceWoVAT" => ActionController::Base.helpers.number_with_precision(invoice.sum_cache/(1+invoice.vat_prc), precision: 2, separator: "."),
|
||||
"UnitPriceWoVAT" => ActionController::Base.helpers.number_with_precision(invoice.subtotal, precision: 2, separator: '.'),
|
||||
'VATCode' => invoice.buyer_vat_no,
|
||||
"ProductName" => invoice.order
|
||||
)
|
||||
}
|
||||
|
|
|
@ -18,7 +18,7 @@ class Epp::Domain < Domain
|
|||
|
||||
after_validation :validate_contacts
|
||||
def validate_contacts
|
||||
return true if is_renewal || is_transfer
|
||||
return true if is_transfer
|
||||
|
||||
ok = true
|
||||
active_admins = admin_domain_contacts.select { |x| !x.marked_for_destruction? }
|
||||
|
|
|
@ -27,12 +27,18 @@ class Invoice < ActiveRecord::Base
|
|||
attr_accessor :billing_email
|
||||
validates :billing_email, email_format: { message: :invalid }, allow_blank: true
|
||||
|
||||
validates :invoice_type, :due_date, :currency, :seller_name,
|
||||
:seller_iban, :buyer_name, :invoice_items, :vat_prc, presence: true
|
||||
validates :due_date, :currency, :seller_name,
|
||||
:seller_iban, :buyer_name, :invoice_items, presence: true
|
||||
validates :vat_rate, numericality: { greater_than_or_equal_to: 0, less_than: 100 },
|
||||
allow_nil: true
|
||||
|
||||
before_create :set_invoice_number, :check_vat
|
||||
before_create :set_invoice_number
|
||||
before_create :apply_default_vat_rate, unless: :vat_rate?
|
||||
before_create :calculate_total, unless: :total?
|
||||
before_create :apply_default_buyer_vat_no, unless: :buyer_vat_no?
|
||||
|
||||
before_save :check_vat
|
||||
attribute :vat_rate, ::Type::VATRate.new
|
||||
attr_readonly :vat_rate
|
||||
|
||||
def set_invoice_number
|
||||
last_no = Invoice.order(number: :desc).where('number IS NOT NULL').limit(1).pluck(:number).first
|
||||
|
@ -50,14 +56,6 @@ class Invoice < ActiveRecord::Base
|
|||
false
|
||||
end
|
||||
|
||||
def check_vat
|
||||
if buyer.country_code != 'EE' && buyer.vat_no.present?
|
||||
self.vat_prc = 0
|
||||
end
|
||||
end
|
||||
|
||||
before_save -> { self.sum_cache = sum }
|
||||
|
||||
class << self
|
||||
def cancel_overdue_invoices
|
||||
STDOUT << "#{Time.zone.now.utc} - Cancelling overdue invoices\n" unless Rails.env.test?
|
||||
|
@ -106,12 +104,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
|
||||
|
@ -152,15 +150,31 @@ class Invoice < ActiveRecord::Base
|
|||
invoice_items
|
||||
end
|
||||
|
||||
def sum_without_vat
|
||||
(items.map(&:item_sum_without_vat).sum).round(2)
|
||||
def subtotal
|
||||
invoice_items.map(&:item_sum_without_vat).reduce(:+)
|
||||
end
|
||||
|
||||
def vat
|
||||
(sum_without_vat * vat_prc).round(2)
|
||||
def vat_amount
|
||||
return 0 unless vat_rate
|
||||
subtotal * vat_rate / 100
|
||||
end
|
||||
|
||||
def sum
|
||||
(sum_without_vat + vat).round(2)
|
||||
def total
|
||||
calculate_total unless total?
|
||||
read_attribute(:total)
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def apply_default_vat_rate
|
||||
self.vat_rate = buyer.effective_vat_rate
|
||||
end
|
||||
|
||||
def apply_default_buyer_vat_no
|
||||
self.buyer_vat_no = buyer.vat_no
|
||||
end
|
||||
|
||||
def calculate_total
|
||||
self.total = subtotal + vat_amount
|
||||
end
|
||||
end
|
||||
|
|
|
@ -6,7 +6,7 @@ class Registrar < ActiveRecord::Base
|
|||
has_many :api_users, dependent: :restrict_with_error
|
||||
has_many :messages
|
||||
has_many :invoices, foreign_key: 'buyer_id'
|
||||
has_many :accounts
|
||||
has_many :accounts, dependent: :destroy
|
||||
has_many :nameservers, through: :domains
|
||||
has_many :whois_records
|
||||
has_many :white_ips, dependent: :destroy
|
||||
|
@ -17,37 +17,19 @@ class Registrar < ActiveRecord::Base
|
|||
validates :name, :reference_no, :code, uniqueness: true
|
||||
validates :accounting_customer_code, presence: true
|
||||
validates :language, presence: true
|
||||
validate :forbidden_codes
|
||||
validate :forbid_special_code
|
||||
|
||||
validates :vat_rate, presence: true, if: 'foreign_vat_payer? && vat_no.blank?'
|
||||
validates :vat_rate, absence: true, if: :home_vat_payer?
|
||||
validates :vat_rate, absence: true, if: 'foreign_vat_payer? && vat_no?'
|
||||
validates :vat_rate, numericality: { greater_than_or_equal_to: 0, less_than: 100 },
|
||||
allow_nil: true
|
||||
|
||||
validate :forbid_special_code
|
||||
|
||||
attribute :vat_rate, ::Type::VATRate.new
|
||||
after_initialize :set_defaults
|
||||
|
||||
def forbidden_codes
|
||||
return true unless ['CID'].include? code
|
||||
errors.add(:code, I18n.t(:forbidden_code))
|
||||
false
|
||||
end
|
||||
|
||||
before_validation :generate_iso_11649_reference_no
|
||||
def generate_iso_11649_reference_no
|
||||
return if reference_no.present?
|
||||
|
||||
loop do
|
||||
base = nil
|
||||
loop do
|
||||
base = SecureRandom.random_number.to_s.last(8)
|
||||
break if base.to_i != 0 && base.length == 8
|
||||
end
|
||||
|
||||
control_base = (base + '2715' + '00').to_i
|
||||
reminder = control_base % 97
|
||||
check_digits = 98 - reminder
|
||||
|
||||
check_digits = check_digits < 10 ? "0#{check_digits}" : check_digits.to_s
|
||||
|
||||
self.reference_no = "RF#{check_digits}#{base}"
|
||||
break unless self.class.exists?(reference_no: reference_no)
|
||||
end
|
||||
end
|
||||
|
||||
validates :email, :billing_email,
|
||||
email_format: { message: :invalid },
|
||||
|
@ -76,12 +58,10 @@ class Registrar < ActiveRecord::Base
|
|||
# rubocop:disable Metrics/AbcSize
|
||||
def issue_prepayment_invoice(amount, description = nil)
|
||||
invoices.create(
|
||||
invoice_type: 'DEB',
|
||||
due_date: (Time.zone.now.to_date + Setting.days_to_keep_invoices_active.days).end_of_day,
|
||||
payment_term: 'prepayment',
|
||||
description: description,
|
||||
currency: 'EUR',
|
||||
vat_prc: Setting.registry_vat_prc,
|
||||
seller_name: Setting.registry_juridical_name,
|
||||
seller_reg_no: Setting.registry_reg_no,
|
||||
seller_iban: Setting.registry_iban,
|
||||
|
@ -97,7 +77,7 @@ class Registrar < ActiveRecord::Base
|
|||
seller_url: Setting.registry_url,
|
||||
seller_email: Setting.registry_email,
|
||||
seller_contact_name: Setting.registry_invoice_contact,
|
||||
buyer_id: id,
|
||||
buyer: self,
|
||||
buyer_name: name,
|
||||
buyer_reg_no: reg_no,
|
||||
buyer_country_code: country_code,
|
||||
|
@ -132,11 +112,6 @@ class Registrar < ActiveRecord::Base
|
|||
cash_account.account_activities.create!(args)
|
||||
end
|
||||
|
||||
def credit!(args)
|
||||
args[:currency] = 'EUR'
|
||||
cash_account.account_activities.create!(args)
|
||||
end
|
||||
|
||||
def address
|
||||
[street, city, state, zip].reject(&:blank?).compact.join(', ')
|
||||
end
|
||||
|
@ -172,9 +147,50 @@ class Registrar < ActiveRecord::Base
|
|||
end
|
||||
end
|
||||
|
||||
def effective_vat_rate
|
||||
if home_vat_payer?
|
||||
Registry.instance.vat_rate
|
||||
else
|
||||
vat_rate
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def set_defaults
|
||||
self.language = Setting.default_language unless language
|
||||
end
|
||||
|
||||
def forbid_special_code
|
||||
errors.add(:code, :forbidden) if code == 'CID'
|
||||
end
|
||||
|
||||
def generate_iso_11649_reference_no
|
||||
return if reference_no.present?
|
||||
|
||||
loop do
|
||||
base = nil
|
||||
loop do
|
||||
base = SecureRandom.random_number.to_s.last(8)
|
||||
break if base.to_i != 0 && base.length == 8
|
||||
end
|
||||
|
||||
control_base = (base + '2715' + '00').to_i
|
||||
reminder = control_base % 97
|
||||
check_digits = 98 - reminder
|
||||
|
||||
check_digits = check_digits < 10 ? "0#{check_digits}" : check_digits.to_s
|
||||
|
||||
self.reference_no = "RF#{check_digits}#{base}"
|
||||
break unless self.class.exists?(reference_no: reference_no)
|
||||
end
|
||||
end
|
||||
|
||||
def home_vat_payer?
|
||||
country == Registry.instance.legal_address_country
|
||||
end
|
||||
|
||||
def foreign_vat_payer?
|
||||
!home_vat_payer?
|
||||
end
|
||||
end
|
||||
|
|
11
app/models/registry.rb
Normal file
11
app/models/registry.rb
Normal file
|
@ -0,0 +1,11 @@
|
|||
class Registry
|
||||
include Singleton
|
||||
|
||||
def vat_rate
|
||||
Setting.registry_vat_prc.to_d * 100
|
||||
end
|
||||
|
||||
def legal_address_country
|
||||
Country.new(Setting.registry_country_code)
|
||||
end
|
||||
end
|
11
app/models/type/vat_rate.rb
Normal file
11
app/models/type/vat_rate.rb
Normal file
|
@ -0,0 +1,11 @@
|
|||
module Type
|
||||
class VATRate < ActiveRecord::Type::Decimal
|
||||
def type_cast_from_database(value)
|
||||
super * 100 if value
|
||||
end
|
||||
|
||||
def type_cast_for_database(value)
|
||||
super / 100.0 if value
|
||||
end
|
||||
end
|
||||
end
|
|
@ -41,7 +41,7 @@
|
|||
%dt= t(:currency)
|
||||
%dd= @bank_transaction.currency
|
||||
|
||||
%dt= t(:reference_no)
|
||||
%dt= BankTransaction.human_attribute_name :reference_no
|
||||
%dd= @bank_transaction.reference_no
|
||||
|
||||
%dt= t(:paid_at)
|
||||
|
|
|
@ -37,7 +37,7 @@
|
|||
= f.email_field :bcc, class: 'form-control'
|
||||
.form-group
|
||||
.col-md-12
|
||||
= f.label :body, t(:html_body)
|
||||
= f.label :body, t('admin.mail_templates.html_body')
|
||||
= liquid_help
|
||||
.col-md-12
|
||||
= f.text_area(:body, class: 'form-control', size: '15x15')
|
||||
|
@ -48,7 +48,7 @@
|
|||
.col-md-12
|
||||
= f.text_area(:text_body, class: 'form-control', size: '15x15')
|
||||
|
||||
%hr
|
||||
%hr
|
||||
.row
|
||||
.col-md-12.text-right
|
||||
= button_tag(t(:save), class: 'btn btn-primary')
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
= render 'shared/title', name: t(:new_mail_template)
|
||||
= render 'shared/title', name: t('admin.mail_templates.new_mail_template')
|
||||
|
||||
= render 'form', mail_template: @mail_template
|
||||
|
|
20
app/views/admin/registrars/_billing.html.erb
Normal file
20
app/views/admin/registrars/_billing.html.erb
Normal file
|
@ -0,0 +1,20 @@
|
|||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<%= t '.header' %>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<dl class="dl-horizontal">
|
||||
<dt><%= Registrar.human_attribute_name :vat_no %></dt>
|
||||
<dd><%= registrar.vat_no %></dd>
|
||||
|
||||
<dt><%= Registrar.human_attribute_name :vat_rate %></dt>
|
||||
<dd><%= number_to_percentage(registrar.vat_rate, precision: 1) %></dd>
|
||||
|
||||
<dt><%= Registrar.human_attribute_name :accounting_customer_code %></dt>
|
||||
<dd><%= registrar.accounting_customer_code %></dd>
|
||||
|
||||
<dt><%= Registrar.human_attribute_name :billing_email %></dt>
|
||||
<dd><%= registrar.billing_email %></dd>
|
||||
</dl>
|
||||
</div>
|
||||
</div>
|
24
app/views/admin/registrars/_contacts.html.erb
Normal file
24
app/views/admin/registrars/_contacts.html.erb
Normal file
|
@ -0,0 +1,24 @@
|
|||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<%= t '.header' %>
|
||||
</div>
|
||||
|
||||
<div class="panel-body">
|
||||
<dl class="dl-horizontal">
|
||||
<dt><%= t(:country) %></dt>
|
||||
<dd><%= @registrar.country %></dd>
|
||||
|
||||
<dt><%= t(:address) %></dt>
|
||||
<dd><%= @registrar.address %></dd>
|
||||
|
||||
<dt><%= t(:contact_phone) %></dt>
|
||||
<dd><%= @registrar.phone %></dd>
|
||||
|
||||
<dt><%= t(:contact_email) %></dt>
|
||||
<dd><%= @registrar.email %></dd>
|
||||
|
||||
<dt><%= Registrar.human_attribute_name :billing_email %></dt>
|
||||
<dd><%= @registrar.billing_email %></dd>
|
||||
</dl>
|
||||
</div>
|
||||
</div>
|
27
app/views/admin/registrars/_details.html.erb
Normal file
27
app/views/admin/registrars/_details.html.erb
Normal file
|
@ -0,0 +1,27 @@
|
|||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<%= t '.header' %>
|
||||
</div>
|
||||
|
||||
<div class="panel-body">
|
||||
<dl class="dl-horizontal">
|
||||
<dt><%= Registrar.human_attribute_name :name %></dt>
|
||||
<dd><%= registrar.name %></dd>
|
||||
|
||||
<dt><%= Registrar.human_attribute_name :reg_no %></dt>
|
||||
<dd><%= registrar.reg_no %></dd>
|
||||
|
||||
<dt><%= Registrar.human_attribute_name :reference_no %></dt>
|
||||
<dd><%= registrar.reference_no %></dd>
|
||||
|
||||
<dt><%= Registrar.human_attribute_name :code %></dt>
|
||||
<dd><%= registrar.code %></dd>
|
||||
|
||||
<dt><%= Registrar.human_attribute_name :balance %></dt>
|
||||
<dd><%= registrar.balance %></dd>
|
||||
|
||||
<dt><%= Registrar.human_attribute_name :website %></dt>
|
||||
<dd><%= registrar.website %></dd>
|
||||
</dl>
|
||||
</div>
|
||||
</div>
|
|
@ -1,5 +1,6 @@
|
|||
<%= form_for([:admin, @registrar], html: { class: 'form-horizontal' }) do |f| %>
|
||||
<%= render 'shared/full_errors', object: @registrar %>
|
||||
<%= render 'form_errors', target: @registrar %>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-8">
|
||||
<div class="panel panel-default">
|
||||
|
@ -133,7 +134,9 @@
|
|||
<%= f.label :code %>
|
||||
</div>
|
||||
<div class="col-md-7">
|
||||
<%= f.text_field :code, required: f.object.new_record?, class: 'form-control', disabled: !f.object.new_record? %>
|
||||
<%= f.text_field :code, required: f.object.new_record?,
|
||||
disabled: f.object.persisted?,
|
||||
class: 'form-control' %>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
28
app/views/admin/registrars/_users.html.erb
Normal file
28
app/views/admin/registrars/_users.html.erb
Normal file
|
@ -0,0 +1,28 @@
|
|||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<%= t '.header' %>
|
||||
</div>
|
||||
|
||||
<table class="table table-hover table-bordered table-condensed">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="col-xs-6"><%= ApiUser.human_attribute_name :username %></th>
|
||||
<th class="col-xs-6"><%= ApiUser.human_attribute_name :active %></th>
|
||||
</tr>
|
||||
</thead>
|
||||
|
||||
<tbody>
|
||||
<% registrar.api_users.each do |user| %>
|
||||
<tr>
|
||||
<td><%= link_to(user, [:admin, user]) %></td>
|
||||
<td><%= user.active %></td>
|
||||
</tr>
|
||||
<% end %>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<div class="panel-footer text-right">
|
||||
<%= link_to t('.new_btn'), new_admin_registrar_api_user_path(registrar),
|
||||
class: 'btn btn-default btn-xs' %>
|
||||
</div>
|
||||
</div>
|
38
app/views/admin/registrars/_white_ips.html.erb
Normal file
38
app/views/admin/registrars/_white_ips.html.erb
Normal file
|
@ -0,0 +1,38 @@
|
|||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<%= t '.header' %>
|
||||
</div>
|
||||
|
||||
<table class="table table-hover table-bordered table-condensed">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="col-xs-4"><%= WhiteIp.human_attribute_name :ipv4 %></th>
|
||||
<th class="col-xs-6"><%= WhiteIp.human_attribute_name :ipv6 %></th>
|
||||
<th class="col-xs-2"><%= WhiteIp.human_attribute_name :interfaces %></th>
|
||||
</tr>
|
||||
</thead>
|
||||
|
||||
<tbody>
|
||||
<% registrar.white_ips.each do |white_ip| %>
|
||||
<tr>
|
||||
<td>
|
||||
<% if white_ip.ipv4.present? %>
|
||||
<%= link_to(white_ip.ipv4, [:admin, registrar, white_ip]) %>
|
||||
<% end %>
|
||||
</td>
|
||||
<td>
|
||||
<% if white_ip.ipv6.present? %>
|
||||
<%= link_to(white_ip.ipv6, [:admin, registrar, white_ip]) %>
|
||||
<% end %>
|
||||
</td>
|
||||
<td><%= white_ip.interfaces.join(', ').upcase %></td>
|
||||
</tr>
|
||||
<% end %>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<div class="panel-footer text-right">
|
||||
<%= link_to t('.new_btn'), new_admin_registrar_white_ip_path(registrar),
|
||||
class: 'btn btn-default btn-xs' %>
|
||||
</div>
|
||||
</div>
|
|
@ -1,5 +1,10 @@
|
|||
<% content_for :actions do %>
|
||||
<%= link_to(t(:back_to_registrar), [:admin, @registrar], class: 'btn btn-default') %>
|
||||
<% end %>
|
||||
<%= render 'shared/title', name: "#{t(:edit)}: #{@registrar.name}" %>
|
||||
<ol class="breadcrumb">
|
||||
<li><%= link_to t('admin.registrars.index.header'), admin_registrars_path %></li>
|
||||
<li><%= link_to @registrar.name, admin_registrar_path(@registrar) %></li>
|
||||
</ol>
|
||||
|
||||
<div class="page-header">
|
||||
<h1><%= t '.header' %></h1>
|
||||
</div>
|
||||
|
||||
<%= render 'form' %>
|
||||
|
|
|
@ -17,6 +17,19 @@
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<div class="col-md-4 control-label">
|
||||
<%= f.label :vat_rate %>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<div class="input-group">
|
||||
<%= f.number_field :vat_rate, min: 0, max: 99.9, step: 0.1,
|
||||
class: 'form-control' %>
|
||||
<div class="input-group-addon">%</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<div class="col-md-4 control-label">
|
||||
<%= f.label :accounting_customer_code %>
|
||||
|
|
|
@ -1,7 +1,15 @@
|
|||
<% content_for :actions do %>
|
||||
<%= link_to(t('.new_btn'), new_admin_registrar_path, class: 'btn btn-primary') %>
|
||||
<% end %>
|
||||
<%= render 'shared/title', name: t(:registrars) %>
|
||||
<div class="page-header">
|
||||
<div class="row">
|
||||
<div class="col-sm-10">
|
||||
<h1><%= t '.header' %></h1>
|
||||
</div>
|
||||
|
||||
<div class="col-sm-2 text-right">
|
||||
<%= link_to t('.new_btn'), new_admin_registrar_path, class: 'btn btn-primary' %>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<div class="table-responsive">
|
||||
|
@ -12,10 +20,10 @@
|
|||
<%= sort_link(@q, 'name') %>
|
||||
</th>
|
||||
<th class="col-xs-4">
|
||||
<%= sort_link(@q, 'reg_no', t(:reg_no)) %>
|
||||
<%= sort_link(@q, 'reg_no', Registrar.human_attribute_name(:reg_no)) %>
|
||||
</th>
|
||||
<th class="col-xs-4">
|
||||
<%= t(:credit_balance) %>
|
||||
<%= Registrar.human_attribute_name :balance %>
|
||||
</th>
|
||||
<th class="col-xs-4">
|
||||
<%= t(:test_registrar) %>
|
||||
|
|
|
@ -1,2 +1,9 @@
|
|||
<%= render 'shared/title', name: t(:new_registrar) %>
|
||||
<ol class="breadcrumb">
|
||||
<li><%= link_to t('admin.registrars.index.header'), admin_registrars_path %></li>
|
||||
</ol>
|
||||
|
||||
<div class="page-header">
|
||||
<h1><%= t '.header' %></h1>
|
||||
</div>
|
||||
|
||||
<%= render 'form' %>
|
||||
|
|
|
@ -1,218 +1,50 @@
|
|||
<% registrar = RegistrarPresenter.new(registrar: @registrar, view: self) %>
|
||||
<% content_for :actions do %>
|
||||
<%= link_to(t(:edit), edit_admin_registrar_path(@registrar), class: 'btn btn-primary') %>
|
||||
<%= link_to(t(:delete), admin_registrar_path(@registrar), method: :delete, data: { confirm: t(:are_you_sure) }, class: 'btn btn-danger') %>
|
||||
<% end %>
|
||||
<% content_for :page_name do %>
|
||||
<%= @registrar.name %>
|
||||
<% if @registrar.test_registrar? %>
|
||||
<span style="color: #c9302c;">(test)</span>
|
||||
<% end %>
|
||||
<% end %>
|
||||
<%= render 'shared/title', name: @registrar.name %>
|
||||
<% if @registrar.errors.any? %>
|
||||
<% @registrar.errors.each do |attr, err| %>
|
||||
<%= err %>
|
||||
<br/>
|
||||
<% end %>
|
||||
<% end %>
|
||||
<% if @registrar.errors.any? %>
|
||||
<hr/>
|
||||
<% end %>
|
||||
|
||||
<ol class="breadcrumb">
|
||||
<li><%= link_to t('admin.registrars.index.header'), admin_registrars_path %></li>
|
||||
</ol>
|
||||
|
||||
<div class="page-header">
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<h1>
|
||||
<%= @registrar.name %>
|
||||
<% if @registrar.test_registrar? %>
|
||||
<span class="text-danger"> (test)</span>
|
||||
<% end %>
|
||||
</h1>
|
||||
</div>
|
||||
|
||||
<div class="col-md-6 text-right">
|
||||
<%= link_to t('.edit_btn'), edit_admin_registrar_path(@registrar),
|
||||
class: 'btn btn-primary' %>
|
||||
<%= link_to t('.delete_btn'), admin_registrar_path(@registrar),
|
||||
method: :delete,
|
||||
data: { confirm: t('.delete_btn_confirm') },
|
||||
class: 'btn btn-default' %>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title">
|
||||
<%= t(:general) %>
|
||||
</h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<dl class="dl-horizontal">
|
||||
<dt>
|
||||
<%= t(:name) %>
|
||||
</dt>
|
||||
<dd>
|
||||
<%= @registrar.name %>
|
||||
</dd>
|
||||
<dt>
|
||||
<%= t(:reg_no) %>
|
||||
</dt>
|
||||
<dd>
|
||||
<%= @registrar.reg_no %>
|
||||
</dd>
|
||||
<dt>
|
||||
<%= t(:vat_no) %>
|
||||
</dt>
|
||||
<dd>
|
||||
<%= @registrar.vat_no %>
|
||||
</dd>
|
||||
<dt>
|
||||
<%= t(:reference_no) %>
|
||||
</dt>
|
||||
<dd>
|
||||
<%= @registrar.reference_no %>
|
||||
</dd>
|
||||
<dt>
|
||||
<%= t(:id) %>
|
||||
</dt>
|
||||
<dd>
|
||||
<%= @registrar.code %>
|
||||
</dd>
|
||||
<dt>
|
||||
<%= t(:credit_balance) %>
|
||||
</dt>
|
||||
<dd>
|
||||
<%= @registrar.balance %>
|
||||
</dd>
|
||||
<dt>
|
||||
<%= Registrar.human_attribute_name :website %>
|
||||
</dt>
|
||||
<dd>
|
||||
<%= @registrar.website %>
|
||||
</dd>
|
||||
<dt>
|
||||
<%= Registrar.human_attribute_name :accounting_customer_code %>
|
||||
</dt>
|
||||
<dd>
|
||||
<%= @registrar.accounting_customer_code %>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
</div>
|
||||
<%= render 'details', registrar: @registrar %>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title">
|
||||
<%= t(:contact) %>
|
||||
</h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<dl class="dl-horizontal">
|
||||
<dt>
|
||||
<%= t(:country) %>
|
||||
</dt>
|
||||
<dd>
|
||||
<%= @registrar.country %>
|
||||
</dd>
|
||||
<dt>
|
||||
<%= t(:address) %>
|
||||
</dt>
|
||||
<dd>
|
||||
<%= @registrar.address %>
|
||||
</dd>
|
||||
<dt>
|
||||
<%= t(:contact_phone) %>
|
||||
</dt>
|
||||
<dd>
|
||||
<%= @registrar.phone %>
|
||||
</dd>
|
||||
<dt>
|
||||
<%= t(:contact_email) %>
|
||||
</dt>
|
||||
<dd>
|
||||
<%= @registrar.email %>
|
||||
</dd>
|
||||
<dt>
|
||||
<%= t(:billing_email) %>
|
||||
</dt>
|
||||
<dd>
|
||||
<%= @registrar.billing_email %>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
</div>
|
||||
<%= render 'admin/registrars/show/preferences', registrar: registrar %>
|
||||
<%= render 'contacts', registrar: @registrar %>
|
||||
<%= render 'billing', registrar: @registrar %>
|
||||
<%= render 'preferences', registrar: registrar %>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<div class="panel panel-default" id="epp-users">
|
||||
<div class="panel-heading clearfix">
|
||||
<div class="pull-left">
|
||||
<%= t('.api_users') %>
|
||||
</div>
|
||||
<div class="pull-right">
|
||||
<%= link_to(t('.new_api_use_btn'), new_admin_registrar_api_user_path(@registrar), class: 'btn btn-default btn-xs') %>
|
||||
</div>
|
||||
</div>
|
||||
<div class="table-responsive">
|
||||
<table class="table table-hover table-bordered table-condensed">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="col-xs-6">
|
||||
<%= t(:username) %>
|
||||
</th>
|
||||
<th class="col-xs-6">
|
||||
<%= t('.active') %>
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<% @registrar.api_users.each do |x| %>
|
||||
<tr>
|
||||
<td>
|
||||
<%= link_to(x, [:admin, x]) %>
|
||||
</td>
|
||||
<td>
|
||||
<%= x.active %>
|
||||
</td>
|
||||
</tr>
|
||||
<% end %>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<%= render 'users', registrar: @registrar %>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<div class="panel panel-default" id="epp-users">
|
||||
<div class="panel-heading clearfix">
|
||||
<div class="pull-left">
|
||||
<%= t(:white_ips) %>
|
||||
</div>
|
||||
<div class="pull-right">
|
||||
<%= link_to(t(:create_new_white_ip), new_admin_registrar_white_ip_path(@registrar), class: 'btn btn-default btn-xs') %>
|
||||
</div>
|
||||
</div>
|
||||
<div class="table-responsive">
|
||||
<table class="table table-hover table-bordered table-condensed">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="col-xs-4">
|
||||
<%= t(:ipv4) %>
|
||||
</th>
|
||||
<th class="col-xs-6">
|
||||
<%= t(:ipv6) %>
|
||||
</th>
|
||||
<th class="col-xs-2">
|
||||
<%= t(:interfaces) %>
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<% @registrar.white_ips.each do |x| %>
|
||||
<tr>
|
||||
<td>
|
||||
<% if x.ipv4.present? %>
|
||||
<%= link_to(x.ipv4, [:admin, @registrar, x]) %>
|
||||
<% end %>
|
||||
</td>
|
||||
<td>
|
||||
<% if x.ipv6.present? %>
|
||||
<%= link_to(x.ipv6, [:admin, @registrar, x]) %>
|
||||
<% end %>
|
||||
</td>
|
||||
<td>
|
||||
<%= x.interfaces.join(', ').upcase %>
|
||||
</td>
|
||||
</tr>
|
||||
<% end %>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<%= render 'white_ips', registrar: @registrar %>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
- content_for :actions do
|
||||
= link_to(t(:back_to_registrar), admin_registrar_path(@registrar), class: 'btn btn-default')
|
||||
|
||||
= render 'shared/title', name: t(:create_new_white_ip)
|
||||
= render 'shared/title', name: t('.header')
|
||||
= render 'form'
|
||||
|
|
|
@ -14,11 +14,11 @@
|
|||
%dt= t(:registrar_name)
|
||||
%dd= link_to(@registrar, [:admin, @registrar])
|
||||
|
||||
%dt= t(:ipv4)
|
||||
%dt= WhiteIp.human_attribute_name :ipv4
|
||||
%dd= @white_ip.ipv4
|
||||
|
||||
%dt= t(:ipv6)
|
||||
%dt= WhiteIp.human_attribute_name :ipv6
|
||||
%dd= @white_ip.ipv6
|
||||
|
||||
%dt= t(:interfaces)
|
||||
%dt= WhiteIp.human_attribute_name :interfaces
|
||||
%dd= @white_ip.interfaces.join(', ').upcase
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
%th{class: 'col-xs-6'}
|
||||
= sort_link(@q, 'name')
|
||||
%th{class: 'col-xs-6'}
|
||||
= sort_link(@q, 'reg_no', t(:reg_no))
|
||||
= sort_link(@q, 'reg_no', Registrar.human_attribute_name(:reg_no))
|
||||
%tbody
|
||||
- @registrars.each do |x|
|
||||
%tr
|
||||
|
|
|
@ -16,10 +16,10 @@
|
|||
%dt= t(:name)
|
||||
%dd= @registrar.name
|
||||
|
||||
%dt= t(:reg_no)
|
||||
%dt= Registrar.human_attribute_name :reg_no
|
||||
%dd= @registrar.reg_no
|
||||
|
||||
%dt= t(:vat_no)
|
||||
%dt= Registrar.human_attribute_name :vat_no
|
||||
%dd= @registrar.vat_no
|
||||
|
||||
%dt= t(:id)
|
||||
|
|
|
@ -33,11 +33,11 @@
|
|||
.col-md-3
|
||||
.form-group
|
||||
= f.label t(:minimum_total)
|
||||
= f.search_field :sum_cache_gteq, class: 'form-control', placeholder: t(:minimum_total), autocomplete: 'off'
|
||||
= f.search_field :total_gteq, class: 'form-control', placeholder: t(:minimum_total), autocomplete: 'off'
|
||||
.col-md-3
|
||||
.form-group
|
||||
= f.label t(:maximum_total)
|
||||
= f.search_field :sum_cache_lteq, class: 'form-control', placeholder: t(:maximum_total), autocomplete: 'off'
|
||||
= f.search_field :total_lteq, class: 'form-control', placeholder: t(:maximum_total), autocomplete: 'off'
|
||||
.col-md-3{style: 'padding-top: 25px;'}
|
||||
%button.btn.btn-default
|
||||
|
||||
|
@ -67,7 +67,7 @@
|
|||
%td{class: 'text-danger'}= t(:unpaid)
|
||||
|
||||
%td= l(x.due_date, format: :date_long)
|
||||
%td= currency(x.sum)
|
||||
%td= currency(x.total)
|
||||
.row
|
||||
.col-md-12
|
||||
= paginate @invoices
|
||||
|
|
|
@ -32,5 +32,5 @@
|
|||
%dt= t(:description)
|
||||
%dd=@invoice.description
|
||||
|
||||
%dt= t(:reference_no)
|
||||
%dt= Invoice.human_attribute_name :reference_no
|
||||
%dd= @invoice.reference_no
|
||||
|
|
|
@ -20,13 +20,13 @@
|
|||
%tfoot
|
||||
%tr
|
||||
%th{colspan: 3}
|
||||
%th= t(:total_without_vat)
|
||||
%td= currency(@invoice.sum_without_vat)
|
||||
%th= Invoice.human_attribute_name :subtotal
|
||||
%td= number_to_currency @invoice.subtotal
|
||||
%tr
|
||||
%th.no-border{colspan: 3}
|
||||
%th= t('vat', vat_prc: (@invoice.vat_prc * 100).round)
|
||||
%td= currency(@invoice.vat)
|
||||
%th= "VAT #{number_to_percentage(@invoice.vat_rate, precision: 1)}"
|
||||
%td= number_to_currency @invoice.vat_amount
|
||||
%tr
|
||||
%th.no-border{colspan: 3}
|
||||
%th= t(:total)
|
||||
%td= currency(@invoice.sum)
|
||||
%td= number_to_currency @invoice.total
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
%dt= t(:name)
|
||||
%dd= @invoice.seller_name
|
||||
|
||||
%dt= t(:reg_no)
|
||||
%dt= Registrar.human_attribute_name :reg_no
|
||||
%dd= @invoice.seller_reg_no
|
||||
|
||||
%dt= t(:iban)
|
||||
|
@ -16,7 +16,7 @@
|
|||
%dt= t(:swift)
|
||||
%dd= @invoice.seller_swift
|
||||
|
||||
%dt= t(:vat_no)
|
||||
%dt= Registrar.human_attribute_name :vat_no
|
||||
%dd= @invoice.seller_vat_no
|
||||
|
||||
%dt= t(:address)
|
||||
|
|
|
@ -182,7 +182,7 @@
|
|||
%dt= t(:description)
|
||||
%dd=@invoice.description
|
||||
|
||||
%dt= t(:reference_no)
|
||||
%dt= Invoice.human_attribute_name :reference_no
|
||||
%dd= @invoice.reference_no
|
||||
|
||||
.col-md-6.right
|
||||
|
@ -238,16 +238,16 @@
|
|||
%tfoot
|
||||
%tr
|
||||
%th{colspan: 3}
|
||||
%th= t(:total_without_vat)
|
||||
%td= "#{currency(@invoice.sum_without_vat)} #{@invoice.currency}"
|
||||
%th= Invoice.human_attribute_name :subtotal
|
||||
%td= number_to_currency @invoice.subtotal
|
||||
%tr
|
||||
%th.no-border{colspan: 3}
|
||||
%th= t('vat', vat_prc: (@invoice.vat_prc * 100).round)
|
||||
%td= "#{currency(@invoice.vat)} #{@invoice.currency}"
|
||||
%th= "VAT #{number_to_percentage(@invoice.vat_rate, precision: 1)}"
|
||||
%td= number_to_currency @invoice.vat_amount
|
||||
%tr
|
||||
%th.no-border{colspan: 3}
|
||||
%th= t(:total)
|
||||
%td= "#{currency(@invoice.sum)} #{@invoice.currency}"
|
||||
%td= number_to_currency @invoice.total
|
||||
|
||||
#footer
|
||||
%hr
|
||||
|
@ -261,7 +261,7 @@
|
|||
%br
|
||||
= "#{t('reg_no')} #{@invoice.seller_reg_no}"
|
||||
%br
|
||||
= "#{t('vat_no')} #{@invoice.seller_vat_no}"
|
||||
= "#{Registrar.human_attribute_name :vat_no} #{@invoice.seller_vat_no}"
|
||||
|
||||
.col-md-3.left
|
||||
= @invoice.seller_phone
|
||||
|
|
|
@ -7,7 +7,6 @@
|
|||
<div class="col-md-5">
|
||||
<%= text_field_tag :old_hostname, params[:old_hostname], autofocus: true,
|
||||
required: true,
|
||||
spellcheck: false,
|
||||
class: 'form-control' %>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -19,7 +18,6 @@
|
|||
|
||||
<div class="col-md-5">
|
||||
<%= text_field_tag :new_hostname, params[:new_hostname], required: true,
|
||||
spellcheck: false,
|
||||
class: 'form-control' %>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -30,7 +28,7 @@
|
|||
</div>
|
||||
|
||||
<div class="col-md-3">
|
||||
<%= text_area_tag :ipv4, params[:ipv4], spellcheck: false, class: 'form-control' %>
|
||||
<%= text_area_tag :ipv4, params[:ipv4], class: 'form-control' %>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
@ -40,7 +38,7 @@
|
|||
</div>
|
||||
|
||||
<div class="col-md-3">
|
||||
<%= text_area_tag :ipv6, params[:ipv6], spellcheck: false, class: 'form-control' %>
|
||||
<%= text_area_tag :ipv6, params[:ipv6], class: 'form-control' %>
|
||||
<span class="help-block"><%= t '.ip_hint' %></span>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -15,7 +15,7 @@ require 'rails/all'
|
|||
# you've limited to :test, :development, or :production.
|
||||
Bundler.require(*Rails.groups)
|
||||
|
||||
module Registry
|
||||
module DomainNameRegistry
|
||||
class Application < Rails::Application
|
||||
# Settings in config/environments/* take precedence over those specified here.
|
||||
# Application configuration should go into files in config/initializers
|
||||
|
|
|
@ -43,6 +43,7 @@ Rails.application.configure do
|
|||
config.log_level = :debug
|
||||
config.active_job.queue_adapter = :test
|
||||
config.logger = ActiveSupport::Logger.new(nil)
|
||||
config.active_support.test_order = :random # :random is the default in Rails 5
|
||||
end
|
||||
|
||||
# In this mode, any jobs you queue will be run in the same thread, synchronously
|
||||
|
|
5
config/locales/admin/mail_templates.en.yml
Normal file
5
config/locales/admin/mail_templates.en.yml
Normal file
|
@ -0,0 +1,5 @@
|
|||
en:
|
||||
admin:
|
||||
mail_templates:
|
||||
html_body: HTML body
|
||||
new_mail_template: New mail template
|
|
@ -2,23 +2,37 @@ en:
|
|||
admin:
|
||||
registrars:
|
||||
index:
|
||||
header: Registrars
|
||||
new_btn: New registrar
|
||||
|
||||
show:
|
||||
new_api_use_btn: New API user
|
||||
active: Active
|
||||
api_users: API users
|
||||
new:
|
||||
header: New registrar
|
||||
|
||||
preferences:
|
||||
header: Preferences
|
||||
show:
|
||||
edit_btn: Edit
|
||||
delete_btn: Delete
|
||||
delete_btn_confirm: Are you sure you want delete registrar?
|
||||
|
||||
edit:
|
||||
header: Edit registrar
|
||||
|
||||
billing:
|
||||
header: Billing
|
||||
|
||||
edit:
|
||||
header: Edit registrar
|
||||
|
||||
billing:
|
||||
header: Billing
|
||||
|
||||
create:
|
||||
created: Registrar has been successfully created
|
||||
not_created: Unable to create registrar
|
||||
|
||||
update:
|
||||
updated: Registrar has been successfully updated
|
||||
not_updated: Unable to update registrar
|
||||
|
||||
destroy:
|
||||
deleted: Registrar has been successfully deleted
|
||||
|
||||
form:
|
||||
misc: Miscellaneous
|
||||
|
@ -30,3 +44,20 @@ en:
|
|||
|
||||
preferences:
|
||||
header: Preferences
|
||||
|
||||
details:
|
||||
header: Details
|
||||
|
||||
contacts:
|
||||
header: Contacts
|
||||
|
||||
preferences:
|
||||
header: Preferences
|
||||
|
||||
users:
|
||||
header: API Users
|
||||
new_btn: New API user
|
||||
|
||||
white_ips:
|
||||
header: Whitelisted IPs
|
||||
new_btn: New whitelisted IP
|
||||
|
|
5
config/locales/admin/white_ips.en.yml
Normal file
5
config/locales/admin/white_ips.en.yml
Normal file
|
@ -0,0 +1,5 @@
|
|||
en:
|
||||
admin:
|
||||
white_ips:
|
||||
new:
|
||||
header: New whitelisted IP
|
|
@ -197,15 +197,11 @@ en:
|
|||
alg: 'Algorithm'
|
||||
public_key: 'Public key'
|
||||
registrar:
|
||||
billing_email: 'Billing e-mail'
|
||||
phone: 'Contact phone'
|
||||
email: 'Contact e-mail'
|
||||
state: 'State / Province'
|
||||
deposit:
|
||||
amount: 'Amount'
|
||||
white_ip:
|
||||
ipv4: 'IPv4'
|
||||
ipv6: 'IPv6'
|
||||
|
||||
errors:
|
||||
messages:
|
||||
|
@ -302,7 +298,6 @@ en:
|
|||
reg_no: 'Reg. no'
|
||||
status: 'Status'
|
||||
contact: 'Contact'
|
||||
credit_balance: 'Credit balance'
|
||||
starting_balance: 'Starting balance'
|
||||
destroyed: 'Destroyed'
|
||||
|
||||
|
@ -313,13 +308,7 @@ en:
|
|||
edit_statuses: 'Edit statuses'
|
||||
history: 'History'
|
||||
|
||||
new_registrar: 'New registrar'
|
||||
registrar_details: 'Registrar details'
|
||||
vat_no: 'VAT no'
|
||||
edit_registrar: 'Edit registrar'
|
||||
back_to_registrar: 'Back to registrar'
|
||||
registrar_deleted: 'Registrar deleted'
|
||||
failed_to_delete_registrar: 'Failed to delete registrar'
|
||||
|
||||
users: 'Users'
|
||||
user_details: 'User details'
|
||||
|
@ -393,7 +382,6 @@ en:
|
|||
choose: 'Choose...'
|
||||
created_before: 'Created before'
|
||||
created_after: 'Created after'
|
||||
billing_email: 'Billing e-mail'
|
||||
contact_phone: 'Contact phone'
|
||||
contact_email: 'Contact e-mail'
|
||||
address_help: 'Street name, house no - apartment no, city, county, country, zip'
|
||||
|
@ -550,7 +538,6 @@ en:
|
|||
invoice_number: Invoice no.
|
||||
seller: 'Seller'
|
||||
prepayment: 'Prepayment'
|
||||
vat: 'VAT (%{vat_prc}%)'
|
||||
unpaid: 'Unpaid'
|
||||
your_current_account_balance_is: 'Your current account balance is %{balance} %{currency}'
|
||||
billing: 'Billing'
|
||||
|
@ -568,7 +555,6 @@ en:
|
|||
unit: 'Unit'
|
||||
price: 'Price'
|
||||
total: 'Total'
|
||||
total_without_vat: 'Total without VAT'
|
||||
paid_at: 'Paid at'
|
||||
invoice: 'Invoice'
|
||||
bank_statements: 'Bank statements'
|
||||
|
@ -584,7 +570,6 @@ en:
|
|||
queried_at: 'Queried at'
|
||||
import_file_path: 'Import file path'
|
||||
bank_code: 'Bank code'
|
||||
reference_no: 'Reference no'
|
||||
currency: 'Currency'
|
||||
buyer_name: 'Buyer name'
|
||||
buyer_iban: 'Buyer IBAN'
|
||||
|
@ -649,7 +634,6 @@ en:
|
|||
due_date_until: 'Due date until'
|
||||
minimum_total: 'Minimum total'
|
||||
maximum_total: 'Maximum total'
|
||||
forbidden_code: 'is forbidden to use'
|
||||
unimplemented_object_service: 'Unimplemented object service'
|
||||
contact_email_update_subject: 'Teie domeenide kontakt epostiaadress on muutunud / Contact e-mail addresses of your domains have changed'
|
||||
object_status_prohibits_operation: 'Object status prohibits operation'
|
||||
|
@ -662,8 +646,6 @@ en:
|
|||
not_valid_domain_verification_body: This could mean your verification has been expired or done already.<br><br>Please contact us if you think something is wrong.
|
||||
upload_crt: 'Upload CRT'
|
||||
crt_or_csr_must_be_present: 'CRT or CSR must be present'
|
||||
white_ips: 'White IP-s'
|
||||
create_new_white_ip: 'Create new white IP'
|
||||
ipv4_or_ipv6_must_be_present: 'IPv4 or IPv6 must be present'
|
||||
white_ip: 'White IP'
|
||||
edit_white_ip: 'Edit white IP'
|
||||
|
@ -747,11 +729,9 @@ en:
|
|||
is_registrant: 'Is registrant'
|
||||
force_delete_set_on_domain: 'Force delete set on domain %{domain_name}'
|
||||
mail_templates: Mail Templates
|
||||
new_mail_template: New mail template
|
||||
failure: "It was not saved"
|
||||
contact_is_not_valid: 'Contact %{value} is not valid, please fix the invalid contact'
|
||||
welcome_to_eis_registrar_portal: 'Welcome to EIS Registrar portal'
|
||||
interfaces: 'Interfaces'
|
||||
next: 'Next'
|
||||
previous: 'Previous'
|
||||
personal_domain_verification_url: 'Personal domain verification url'
|
||||
|
@ -777,3 +757,9 @@ en:
|
|||
delimiter: " "
|
||||
precision: 2
|
||||
unit: €
|
||||
|
||||
attributes:
|
||||
vat_no: VAT number
|
||||
vat_rate: VAT rate
|
||||
ipv4: IPv4
|
||||
ipv6: IPv6
|
||||
|
|
8
config/locales/registrars.en.yml
Normal file
8
config/locales/registrars.en.yml
Normal file
|
@ -0,0 +1,8 @@
|
|||
en:
|
||||
activerecord:
|
||||
errors:
|
||||
models:
|
||||
registrar:
|
||||
attributes:
|
||||
code:
|
||||
forbidden: is forbidden
|
|
@ -97,7 +97,6 @@ Rails.application.routes.draw do
|
|||
get 'pay/go/:bank' => 'payments#pay', as: 'payment_with'
|
||||
end
|
||||
|
||||
# REGISTRANT ROUTES
|
||||
namespace :registrant do
|
||||
root 'domains#index'
|
||||
|
||||
|
@ -111,17 +110,6 @@ Rails.application.routes.draw do
|
|||
end
|
||||
end
|
||||
|
||||
# resources :invoices do
|
||||
# member do
|
||||
# get 'download_pdf'
|
||||
# match 'forward', via: [:post, :get]
|
||||
# patch 'cancel'
|
||||
# end
|
||||
# end
|
||||
|
||||
# resources :deposits
|
||||
# resources :account_activities
|
||||
|
||||
resources :domain_update_confirms
|
||||
resources :domain_delete_confirms
|
||||
|
||||
|
@ -150,8 +138,6 @@ Rails.application.routes.draw do
|
|||
end
|
||||
|
||||
resources :registrars do
|
||||
resources :api_users
|
||||
resources :white_ips
|
||||
collection do
|
||||
get :search
|
||||
end
|
||||
|
|
5
db/migrate/20180228055259_add_registrars_vat_rate.rb
Normal file
5
db/migrate/20180228055259_add_registrars_vat_rate.rb
Normal file
|
@ -0,0 +1,5 @@
|
|||
class AddRegistrarsVatRate < ActiveRecord::Migration
|
||||
def change
|
||||
add_column :registrars, :vat_rate, :decimal, precision: 4, scale: 3
|
||||
end
|
||||
end
|
|
@ -0,0 +1,5 @@
|
|||
class RenameInvoicesVatPrcToVatRate < ActiveRecord::Migration
|
||||
def change
|
||||
rename_column :invoices, :vat_prc, :vat_rate
|
||||
end
|
||||
end
|
|
@ -0,0 +1,5 @@
|
|||
class ChangeInvoicesVatRateType < ActiveRecord::Migration
|
||||
def change
|
||||
change_column :invoices, :vat_rate, :decimal, precision: 4, scale: 3
|
||||
end
|
||||
end
|
|
@ -0,0 +1,5 @@
|
|||
class ChangeInvoiceVatRateToNull < ActiveRecord::Migration
|
||||
def change
|
||||
change_column_null :invoices, :vat_rate, true
|
||||
end
|
||||
end
|
5
db/migrate/20180228074442_remove_registrars_vat.rb
Normal file
5
db/migrate/20180228074442_remove_registrars_vat.rb
Normal file
|
@ -0,0 +1,5 @@
|
|||
class RemoveRegistrarsVat < ActiveRecord::Migration
|
||||
def change
|
||||
remove_column :registrars, :vat, :boolean
|
||||
end
|
||||
end
|
|
@ -0,0 +1,17 @@
|
|||
class AddRegistrarsUniqueConstraints < ActiveRecord::Migration
|
||||
def up
|
||||
execute <<-SQL
|
||||
ALTER TABLE registrars ADD CONSTRAINT unique_name UNIQUE (name);
|
||||
ALTER TABLE registrars ADD CONSTRAINT unique_reference_no UNIQUE (reference_no);
|
||||
ALTER TABLE registrars ADD CONSTRAINT unique_code UNIQUE (code);
|
||||
SQL
|
||||
end
|
||||
|
||||
def down
|
||||
execute <<-SQL
|
||||
ALTER TABLE registrars DROP CONSTRAINT unique_name;
|
||||
ALTER TABLE registrars DROP CONSTRAINT unique_reference_no;
|
||||
ALTER TABLE registrars DROP CONSTRAINT unique_code;
|
||||
SQL
|
||||
end
|
||||
end
|
6
db/migrate/20180309053921_remove_registrars_indexes.rb
Normal file
6
db/migrate/20180309053921_remove_registrars_indexes.rb
Normal file
|
@ -0,0 +1,6 @@
|
|||
class RemoveRegistrarsIndexes < ActiveRecord::Migration
|
||||
def change
|
||||
remove_index :registrars, name: :index_registrars_on_code
|
||||
remove_index :registrars, name: :index_registrars_on_legacy_id
|
||||
end
|
||||
end
|
|
@ -0,0 +1,9 @@
|
|||
class AddRegistrarsNotNullConstraints < ActiveRecord::Migration
|
||||
def change
|
||||
change_column_null :registrars, :name, false
|
||||
change_column_null :registrars, :reg_no, false
|
||||
change_column_null :registrars, :country_code, false
|
||||
change_column_null :registrars, :email, false
|
||||
change_column_null :registrars, :code, false
|
||||
end
|
||||
end
|
|
@ -0,0 +1,5 @@
|
|||
class RemoveInvoicesInvoiceType < ActiveRecord::Migration
|
||||
def change
|
||||
remove_column :invoices, :invoice_type, :string
|
||||
end
|
||||
end
|
|
@ -0,0 +1,5 @@
|
|||
class RenameInvoicesSumCacheToTotal < ActiveRecord::Migration
|
||||
def change
|
||||
rename_column :invoices, :sum_cache, :total
|
||||
end
|
||||
end
|
|
@ -0,0 +1,5 @@
|
|||
class ChangeInvoicesTotalToNotNull < ActiveRecord::Migration
|
||||
def change
|
||||
change_column_null :invoices, :total, false
|
||||
end
|
||||
end
|
5
db/migrate/20180314122722_add_invoices_buyer_vat_no.rb
Normal file
5
db/migrate/20180314122722_add_invoices_buyer_vat_no.rb
Normal file
|
@ -0,0 +1,5 @@
|
|||
class AddInvoicesBuyerVatNo < ActiveRecord::Migration
|
||||
def change
|
||||
add_column :invoices, :buyer_vat_no, :string
|
||||
end
|
||||
end
|
|
@ -998,13 +998,12 @@ CREATE TABLE invoices (
|
|||
id integer NOT NULL,
|
||||
created_at timestamp without time zone NOT NULL,
|
||||
updated_at timestamp without time zone NOT NULL,
|
||||
invoice_type character varying NOT NULL,
|
||||
due_date timestamp without time zone NOT NULL,
|
||||
payment_term character varying,
|
||||
currency character varying NOT NULL,
|
||||
description character varying,
|
||||
reference_no character varying,
|
||||
vat_prc numeric(10,2) NOT NULL,
|
||||
vat_rate numeric(4,3),
|
||||
paid_at timestamp without time zone,
|
||||
seller_id integer,
|
||||
seller_name character varying NOT NULL,
|
||||
|
@ -1037,8 +1036,9 @@ CREATE TABLE invoices (
|
|||
updator_str character varying,
|
||||
number integer,
|
||||
cancelled_at timestamp without time zone,
|
||||
sum_cache numeric(10,2),
|
||||
in_directo boolean DEFAULT false
|
||||
total numeric(10,2) NOT NULL,
|
||||
in_directo boolean DEFAULT false,
|
||||
buyer_vat_no character varying
|
||||
);
|
||||
|
||||
|
||||
|
@ -2136,29 +2136,29 @@ ALTER SEQUENCE registrant_verifications_id_seq OWNED BY registrant_verifications
|
|||
|
||||
CREATE TABLE registrars (
|
||||
id integer NOT NULL,
|
||||
name character varying,
|
||||
reg_no character varying,
|
||||
name character varying NOT NULL,
|
||||
reg_no character varying NOT NULL,
|
||||
vat_no character varying,
|
||||
created_at timestamp without time zone,
|
||||
updated_at timestamp without time zone,
|
||||
creator_str character varying,
|
||||
updator_str character varying,
|
||||
phone character varying,
|
||||
email character varying,
|
||||
email character varying NOT NULL,
|
||||
billing_email character varying,
|
||||
country_code character varying,
|
||||
country_code character varying NOT NULL,
|
||||
state character varying,
|
||||
city character varying,
|
||||
street character varying,
|
||||
zip character varying,
|
||||
code character varying,
|
||||
code character varying NOT NULL,
|
||||
website character varying,
|
||||
accounting_customer_code character varying NOT NULL,
|
||||
vat boolean,
|
||||
legacy_id integer,
|
||||
reference_no character varying,
|
||||
test_registrar boolean DEFAULT false,
|
||||
language character varying NOT NULL
|
||||
language character varying NOT NULL,
|
||||
vat_rate numeric(4,3)
|
||||
);
|
||||
|
||||
|
||||
|
@ -3243,6 +3243,14 @@ ALTER TABLE ONLY settings
|
|||
ADD CONSTRAINT settings_pkey PRIMARY KEY (id);
|
||||
|
||||
|
||||
--
|
||||
-- Name: unique_code; Type: CONSTRAINT; Schema: public; Owner: -; Tablespace:
|
||||
--
|
||||
|
||||
ALTER TABLE ONLY registrars
|
||||
ADD CONSTRAINT unique_code UNIQUE (code);
|
||||
|
||||
|
||||
--
|
||||
-- Name: unique_contact_code; Type: CONSTRAINT; Schema: public; Owner: -; Tablespace:
|
||||
--
|
||||
|
@ -3251,6 +3259,22 @@ ALTER TABLE ONLY contacts
|
|||
ADD CONSTRAINT unique_contact_code UNIQUE (code);
|
||||
|
||||
|
||||
--
|
||||
-- Name: unique_name; Type: CONSTRAINT; Schema: public; Owner: -; Tablespace:
|
||||
--
|
||||
|
||||
ALTER TABLE ONLY registrars
|
||||
ADD CONSTRAINT unique_name UNIQUE (name);
|
||||
|
||||
|
||||
--
|
||||
-- Name: unique_reference_no; Type: CONSTRAINT; Schema: public; Owner: -; Tablespace:
|
||||
--
|
||||
|
||||
ALTER TABLE ONLY registrars
|
||||
ADD CONSTRAINT unique_reference_no UNIQUE (reference_no);
|
||||
|
||||
|
||||
--
|
||||
-- Name: unique_session_id; Type: CONSTRAINT; Schema: public; Owner: -; Tablespace:
|
||||
--
|
||||
|
@ -3853,20 +3877,6 @@ CREATE INDEX index_registrant_verifications_on_created_at ON registrant_verifica
|
|||
CREATE INDEX index_registrant_verifications_on_domain_id ON registrant_verifications USING btree (domain_id);
|
||||
|
||||
|
||||
--
|
||||
-- Name: index_registrars_on_code; Type: INDEX; Schema: public; Owner: -; Tablespace:
|
||||
--
|
||||
|
||||
CREATE INDEX index_registrars_on_code ON registrars USING btree (code);
|
||||
|
||||
|
||||
--
|
||||
-- Name: index_registrars_on_legacy_id; Type: INDEX; Schema: public; Owner: -; Tablespace:
|
||||
--
|
||||
|
||||
CREATE INDEX index_registrars_on_legacy_id ON registrars USING btree (legacy_id);
|
||||
|
||||
|
||||
--
|
||||
-- Name: index_settings_on_thing_type_and_thing_id_and_var; Type: INDEX; Schema: public; Owner: -; Tablespace:
|
||||
--
|
||||
|
@ -4659,6 +4669,16 @@ INSERT INTO schema_migrations (version) VALUES ('20180214213743');
|
|||
|
||||
INSERT INTO schema_migrations (version) VALUES ('20180218004148');
|
||||
|
||||
INSERT INTO schema_migrations (version) VALUES ('20180228055259');
|
||||
|
||||
INSERT INTO schema_migrations (version) VALUES ('20180228064342');
|
||||
|
||||
INSERT INTO schema_migrations (version) VALUES ('20180228070102');
|
||||
|
||||
INSERT INTO schema_migrations (version) VALUES ('20180228070431');
|
||||
|
||||
INSERT INTO schema_migrations (version) VALUES ('20180228074442');
|
||||
|
||||
INSERT INTO schema_migrations (version) VALUES ('20180306180401');
|
||||
|
||||
INSERT INTO schema_migrations (version) VALUES ('20180306181538');
|
||||
|
@ -4679,3 +4699,17 @@ INSERT INTO schema_migrations (version) VALUES ('20180306183549');
|
|||
|
||||
INSERT INTO schema_migrations (version) VALUES ('20180308123240');
|
||||
|
||||
INSERT INTO schema_migrations (version) VALUES ('20180309053424');
|
||||
|
||||
INSERT INTO schema_migrations (version) VALUES ('20180309053921');
|
||||
|
||||
INSERT INTO schema_migrations (version) VALUES ('20180309054510');
|
||||
|
||||
INSERT INTO schema_migrations (version) VALUES ('20180310142630');
|
||||
|
||||
INSERT INTO schema_migrations (version) VALUES ('20180313090437');
|
||||
|
||||
INSERT INTO schema_migrations (version) VALUES ('20180313124751');
|
||||
|
||||
INSERT INTO schema_migrations (version) VALUES ('20180314122722');
|
||||
|
||||
|
|
|
@ -492,7 +492,6 @@
|
|||
<polyline fill="none" stroke="black" points="-300,-378 -124,-378 "/>
|
||||
<polyline fill="none" stroke="black" points="-300,-354 -124,-354 "/>
|
||||
<text text-anchor="start" x="-292" y="-338.8" font-family="Times,serif" font-size="14.00">_layout</text>
|
||||
<text text-anchor="start" x="-292" y="-323.8" font-family="Times,serif" font-size="14.00">check_ip</text>
|
||||
<text text-anchor="start" x="-292" y="-308.8" font-family="Times,serif" font-size="14.00">role_base_root_url</text>
|
||||
</g>
|
||||
<!-- Registrar::PollsController -->
|
||||
|
|
Before Width: | Height: | Size: 67 KiB After Width: | Height: | Size: 67 KiB |
|
@ -1489,7 +1489,6 @@
|
|||
<text text-anchor="start" x="1600.5" y="-2399.3" font-family="Times,serif" font-size="14.00">zip :string</text>
|
||||
<text text-anchor="start" x="1600.5" y="-2384.3" font-family="Times,serif" font-size="14.00">code :string</text>
|
||||
<text text-anchor="start" x="1600.5" y="-2369.3" font-family="Times,serif" font-size="14.00">url :string</text>
|
||||
<text text-anchor="start" x="1600.5" y="-2339.3" font-family="Times,serif" font-size="14.00">vat :boolean</text>
|
||||
<text text-anchor="start" x="1600.5" y="-2324.3" font-family="Times,serif" font-size="14.00">legacy_id :integer</text>
|
||||
<text text-anchor="start" x="1600.5" y="-2309.3" font-family="Times,serif" font-size="14.00">reference_no :string</text>
|
||||
</g>
|
||||
|
@ -1614,13 +1613,12 @@
|
|||
<text text-anchor="start" x="121.5" y="-1571.3" font-family="Times,serif" font-size="14.00">id :integer</text>
|
||||
<text text-anchor="start" x="121.5" y="-1556.3" font-family="Times,serif" font-size="14.00">created_at :datetime</text>
|
||||
<text text-anchor="start" x="121.5" y="-1541.3" font-family="Times,serif" font-size="14.00">updated_at :datetime</text>
|
||||
<text text-anchor="start" x="121.5" y="-1526.3" font-family="Times,serif" font-size="14.00">invoice_type :string</text>
|
||||
<text text-anchor="start" x="121.5" y="-1511.3" font-family="Times,serif" font-size="14.00">due_date :datetime</text>
|
||||
<text text-anchor="start" x="121.5" y="-1496.3" font-family="Times,serif" font-size="14.00">payment_term :string</text>
|
||||
<text text-anchor="start" x="121.5" y="-1481.3" font-family="Times,serif" font-size="14.00">currency :string</text>
|
||||
<text text-anchor="start" x="121.5" y="-1466.3" font-family="Times,serif" font-size="14.00">description :string</text>
|
||||
<text text-anchor="start" x="121.5" y="-1451.3" font-family="Times,serif" font-size="14.00">reference_no :string</text>
|
||||
<text text-anchor="start" x="121.5" y="-1436.3" font-family="Times,serif" font-size="14.00">vat_prc :decimal</text>
|
||||
<text text-anchor="start" x="121.5" y="-1436.3" font-family="Times,serif" font-size="14.00">vat_rate :decimal</text>
|
||||
<text text-anchor="start" x="121.5" y="-1421.3" font-family="Times,serif" font-size="14.00">paid_at :datetime</text>
|
||||
<text text-anchor="start" x="121.5" y="-1406.3" font-family="Times,serif" font-size="14.00">seller_id :integer</text>
|
||||
<text text-anchor="start" x="121.5" y="-1391.3" font-family="Times,serif" font-size="14.00">seller_name :string</text>
|
||||
|
@ -1653,7 +1651,7 @@
|
|||
<text text-anchor="start" x="121.5" y="-986.3" font-family="Times,serif" font-size="14.00">updator_str :string</text>
|
||||
<text text-anchor="start" x="121.5" y="-971.3" font-family="Times,serif" font-size="14.00">number :integer</text>
|
||||
<text text-anchor="start" x="121.5" y="-956.3" font-family="Times,serif" font-size="14.00">cancelled_at :datetime</text>
|
||||
<text text-anchor="start" x="121.5" y="-941.3" font-family="Times,serif" font-size="14.00">sum_cache :decimal</text>
|
||||
<text text-anchor="start" x="121.5" y="-941.3" font-family="Times,serif" font-size="14.00">total :decimal</text>
|
||||
</g>
|
||||
<!-- Registrar->Invoice -->
|
||||
<g id="edge64" class="edge"><title>Registrar->Invoice</title>
|
||||
|
|
Before Width: | Height: | Size: 220 KiB After Width: | Height: | Size: 220 KiB |
|
@ -87,7 +87,6 @@ namespace :import do
|
|||
zip: x.postalcode.try(:strip),
|
||||
url: x.url.try(:strip),
|
||||
accounting_customer_code: x.directo_handle.try(:strip),
|
||||
vat: x.vat,
|
||||
legacy_id: x.id,
|
||||
creator_str: user,
|
||||
updator_str: user,
|
||||
|
@ -100,7 +99,7 @@ namespace :import do
|
|||
puts "-----> Generating reference numbers"
|
||||
|
||||
Registrar.all.each do |x|
|
||||
x.generate_iso_11649_reference_no
|
||||
x.send(:generate_iso_11649_reference_no)
|
||||
x.save(validate: false)
|
||||
end
|
||||
|
||||
|
|
|
@ -3,12 +3,11 @@ FactoryBot.define do
|
|||
buyer_name 'Registrar 1'
|
||||
currency { 'EUR' }
|
||||
due_date { Time.zone.now.to_date + 1.day }
|
||||
invoice_type 'DEB'
|
||||
seller_iban { '123' }
|
||||
seller_name { 'EIS' }
|
||||
seller_city { 'Tallinn' }
|
||||
seller_street { 'Paldiski mnt. 123' }
|
||||
vat_prc 0.2
|
||||
vat_rate 0.2
|
||||
buyer { FactoryBot.create(:registrar) }
|
||||
|
||||
after :build do |invoice|
|
||||
|
|
|
@ -13,10 +13,8 @@ describe Invoice do
|
|||
"Currency is missing",
|
||||
"Due date is missing",
|
||||
"Invoice items is missing",
|
||||
"Invoice type is missing",
|
||||
"Seller iban is missing",
|
||||
"Seller name is missing",
|
||||
"Vat prc is missing"
|
||||
])
|
||||
end
|
||||
|
||||
|
@ -52,20 +50,6 @@ describe Invoice do
|
|||
@invoice.seller_address.should == 'Paldiski mnt. 123, Tallinn'
|
||||
end
|
||||
|
||||
it 'should calculate sums correctly' do
|
||||
@invoice = create(:invoice)
|
||||
@invoice.vat_prc.should == BigDecimal.new('0.2')
|
||||
@invoice.sum_without_vat.should == BigDecimal.new('300.0')
|
||||
@invoice.vat.should == BigDecimal.new('60.0')
|
||||
@invoice.sum.should == BigDecimal.new('360.0')
|
||||
|
||||
ii = @invoice.items.first
|
||||
ii.item_sum_without_vat.should == BigDecimal.new('150.0')
|
||||
|
||||
ii = @invoice.items.last
|
||||
ii.item_sum_without_vat.should == BigDecimal.new('150.0')
|
||||
end
|
||||
|
||||
it 'should cancel overdue invoices' do
|
||||
create(:invoice, created_at: Time.zone.now - 35.days, due_date: Time.zone.now - 30.days)
|
||||
Invoice.cancel_overdue_invoices
|
||||
|
|
|
@ -1,118 +0,0 @@
|
|||
require 'rails_helper'
|
||||
|
||||
describe Registrar do
|
||||
context 'with invalid attribute' do
|
||||
before :all do
|
||||
@registrar = Registrar.new
|
||||
end
|
||||
|
||||
it 'is not valid' do
|
||||
@registrar.valid?
|
||||
@registrar.errors.full_messages.should include(*[
|
||||
'Contact e-mail is missing',
|
||||
'Country code is missing',
|
||||
'Name is missing',
|
||||
'Reg no is missing',
|
||||
'Code is missing'
|
||||
])
|
||||
end
|
||||
|
||||
it 'returns an error with invalid email' do
|
||||
@registrar.email = 'bla'
|
||||
@registrar.billing_email = 'bla'
|
||||
|
||||
@registrar.valid?
|
||||
@registrar.errors[:email].should == ['is invalid']
|
||||
@registrar.errors[:billing_email].should == ['is invalid']
|
||||
end
|
||||
|
||||
it 'should not have valid code' do
|
||||
@registrar.code.should == nil
|
||||
end
|
||||
|
||||
it 'should generate reference number' do
|
||||
@registrar.generate_iso_11649_reference_no
|
||||
@registrar.reference_no.should_not be_blank
|
||||
@registrar.reference_no.last(10).to_i.should_not == 0
|
||||
end
|
||||
end
|
||||
|
||||
context 'with valid attributes' do
|
||||
before :all do
|
||||
@registrar = create(:registrar)
|
||||
end
|
||||
|
||||
it 'should be valid' do
|
||||
@registrar.valid?
|
||||
@registrar.errors.full_messages.should match_array([])
|
||||
end
|
||||
|
||||
it 'should be valid twice' do
|
||||
@registrar = create(:registrar)
|
||||
@registrar.valid?
|
||||
@registrar.errors.full_messages.should match_array([])
|
||||
end
|
||||
|
||||
it 'should remove blank from code' do
|
||||
registrar = build(:registrar, code: 'with blank')
|
||||
registrar.valid?
|
||||
registrar.errors.full_messages.should match_array([
|
||||
])
|
||||
registrar.code.should == 'WITHBLANK'
|
||||
end
|
||||
|
||||
it 'should remove colon from code' do
|
||||
registrar = build(:registrar, code: 'with colon:and:blank')
|
||||
registrar.valid?
|
||||
registrar.errors.full_messages.should match_array([
|
||||
])
|
||||
registrar.code.should == 'WITHCOLONANDBLANK'
|
||||
end
|
||||
|
||||
it 'should allow dot in code' do
|
||||
registrar = build(:registrar, code: 'with.dot')
|
||||
registrar.valid?
|
||||
registrar.errors.full_messages.should match_array([
|
||||
])
|
||||
registrar.code.should == 'WITH.DOT'
|
||||
end
|
||||
|
||||
it 'should have one version' do
|
||||
with_versioning do
|
||||
@registrar.versions.should == []
|
||||
@registrar.name = 'New name'
|
||||
@registrar.save
|
||||
@registrar.errors.full_messages.should match_array([])
|
||||
@registrar.versions.size.should == 1
|
||||
end
|
||||
end
|
||||
|
||||
it 'should return full address' do
|
||||
registrar = described_class.new(street: 'Street 999', city: 'Town', state: 'County', zip: 'Postal')
|
||||
registrar.address.should == 'Street 999, Town, County, Postal'
|
||||
end
|
||||
|
||||
it 'should not be able to change code' do
|
||||
registrar = create(:registrar, code: 'TEST')
|
||||
registrar.code = 'new-code'
|
||||
expect(registrar.code).to eq('TEST')
|
||||
end
|
||||
|
||||
it 'should be able to issue a prepayment invoice' do
|
||||
Setting.days_to_keep_invoices_active = 30
|
||||
create(:registrar, name: 'EIS', reg_no: '90010019')
|
||||
@registrar.issue_prepayment_invoice(200, 'add some money')
|
||||
@registrar.invoices.count.should == 1
|
||||
i = @registrar.invoices.first
|
||||
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'
|
||||
end
|
||||
|
||||
it 'should not allaw to use CID as code for leagcy reasons' do
|
||||
registrar = build(:registrar, code: 'CID')
|
||||
registrar.valid?
|
||||
registrar.errors.full_messages.should == ['Code is forbidden to use']
|
||||
end
|
||||
end
|
||||
end
|
|
@ -1,42 +0,0 @@
|
|||
require 'rails_helper'
|
||||
|
||||
RSpec.describe 'admin registrar update' do
|
||||
before :example do
|
||||
sign_in_to_admin_area
|
||||
end
|
||||
|
||||
it 'updates website' do
|
||||
registrar = create(:registrar, website: 'test')
|
||||
|
||||
patch admin_registrar_path(registrar), registrar: attributes_for(:registrar, website: 'new-website')
|
||||
registrar.reload
|
||||
|
||||
expect(registrar.website).to eq('new-website')
|
||||
end
|
||||
|
||||
it 'updates email' do
|
||||
registrar = create(:registrar, email: 'test@test.com')
|
||||
|
||||
patch admin_registrar_path(registrar), registrar: attributes_for(:registrar, email: 'new-test@test.com')
|
||||
registrar.reload
|
||||
|
||||
expect(registrar.email).to eq('new-test@test.com')
|
||||
end
|
||||
|
||||
it 'updates billing email' do
|
||||
registrar = create(:registrar, billing_email: 'test@test.com')
|
||||
|
||||
patch admin_registrar_path(registrar), registrar: attributes_for(:registrar, billing_email: 'new-test@test.com')
|
||||
registrar.reload
|
||||
|
||||
expect(registrar.billing_email).to eq('new-test@test.com')
|
||||
end
|
||||
|
||||
it 'redirects to :show' do
|
||||
registrar = create(:registrar)
|
||||
|
||||
patch admin_registrar_path(registrar), { registrar: attributes_for(:registrar) }
|
||||
|
||||
expect(response).to redirect_to admin_registrar_path(registrar)
|
||||
end
|
||||
end
|
|
@ -1,33 +0,0 @@
|
|||
require 'rails_helper'
|
||||
|
||||
RSpec.describe Admin::RegistrarsController do
|
||||
describe 'routing' do
|
||||
it 'routes to #index' do
|
||||
expect(get: '/admin/registrars').to route_to('admin/registrars#index')
|
||||
end
|
||||
|
||||
it 'routes to #new' do
|
||||
expect(get: '/admin/registrars/new').to route_to('admin/registrars#new')
|
||||
end
|
||||
|
||||
it 'routes to #show' do
|
||||
expect(get: '/admin/registrars/1').to route_to('admin/registrars#show', id: '1')
|
||||
end
|
||||
|
||||
it 'routes to #edit' do
|
||||
expect(get: '/admin/registrars/1/edit').to route_to('admin/registrars#edit', id: '1')
|
||||
end
|
||||
|
||||
it 'routes to #create' do
|
||||
expect(post: '/admin/registrars').to route_to('admin/registrars#create')
|
||||
end
|
||||
|
||||
it 'routes to #update' do
|
||||
expect(patch: '/admin/registrars/1').to route_to('admin/registrars#update', id: '1')
|
||||
end
|
||||
|
||||
it 'routes to #destroy' do
|
||||
expect(delete: '/admin/registrars/1').to route_to('admin/registrars#destroy', id: '1')
|
||||
end
|
||||
end
|
||||
end
|
|
@ -1,19 +0,0 @@
|
|||
require 'rails_helper'
|
||||
|
||||
RSpec.describe 'admin/registrars/_form' do
|
||||
let(:registrar) { build_stubbed(:registrar) }
|
||||
|
||||
before :example do
|
||||
assign(:registrar, registrar)
|
||||
stub_template 'shared/_full_errors' => ''
|
||||
|
||||
without_partial_double_verification do
|
||||
allow(view).to receive(:available_languages).and_return({})
|
||||
end
|
||||
end
|
||||
|
||||
it 'has website' do
|
||||
render
|
||||
expect(rendered).to have_css('[name="registrar[website]"]')
|
||||
end
|
||||
end
|
|
@ -1,19 +0,0 @@
|
|||
require 'rails_helper'
|
||||
|
||||
RSpec.describe 'admin/registrars/show' do
|
||||
let(:registrar) { build_stubbed(:registrar, website: 'test website') }
|
||||
|
||||
before :example do
|
||||
assign(:registrar, registrar)
|
||||
stub_template 'shared/_title' => ''
|
||||
|
||||
without_partial_double_verification do
|
||||
allow(view).to receive(:available_languages).and_return({})
|
||||
end
|
||||
end
|
||||
|
||||
it 'has website' do
|
||||
render
|
||||
expect(rendered).to have_text('test website')
|
||||
end
|
||||
end
|
|
@ -1,30 +0,0 @@
|
|||
require 'test_helper'
|
||||
|
||||
class RegistrarsControllerTest < ActionDispatch::IntegrationTest
|
||||
def setup
|
||||
login_as users(:admin)
|
||||
@registrar = registrars(:bestnames)
|
||||
end
|
||||
|
||||
def test_updates_website
|
||||
patch admin_registrar_path(@registrar), registrar: @registrar.attributes.merge(website: 'new.example.com')
|
||||
@registrar.reload
|
||||
|
||||
assert_equal 'new.example.com', @registrar.website
|
||||
end
|
||||
|
||||
def test_updates_email
|
||||
patch admin_registrar_path(@registrar), registrar: @registrar.attributes.merge(email: 'new@example.com')
|
||||
@registrar.reload
|
||||
|
||||
assert_equal 'new@example.com', @registrar.email
|
||||
end
|
||||
|
||||
def test_updates_billing_email
|
||||
patch admin_registrar_path(@registrar),
|
||||
registrar: @registrar.attributes.merge(billing_email: 'new-billing@example.com')
|
||||
@registrar.reload
|
||||
|
||||
assert_equal 'new-billing@example.com', @registrar.billing_email
|
||||
end
|
||||
end
|
6
test/fixtures/accounts.yml
vendored
6
test/fixtures/accounts.yml
vendored
|
@ -3,3 +3,9 @@ cash:
|
|||
balance: 100
|
||||
currency: EUR
|
||||
registrar: bestnames
|
||||
|
||||
not_in_use_cash:
|
||||
account_type: cash
|
||||
balance: 0
|
||||
currency: EUR
|
||||
registrar: not_in_use
|
||||
|
|
30
test/fixtures/billing/prices.yml
vendored
30
test/fixtures/billing/prices.yml
vendored
|
@ -1,7 +1,31 @@
|
|||
cash:
|
||||
duration: 1 year
|
||||
price_cents: 500
|
||||
create_one_month:
|
||||
duration: 1 month
|
||||
price_cents: 100
|
||||
operation_category: create
|
||||
valid_from: 2010-07-05
|
||||
valid_to: 2010-07-05
|
||||
zone: test
|
||||
|
||||
renew_one_month:
|
||||
duration: 1 month
|
||||
price_cents: 100
|
||||
operation_category: renew
|
||||
valid_from: 2010-07-05
|
||||
valid_to: 2010-07-05
|
||||
zone: test
|
||||
|
||||
create_one_year:
|
||||
duration: 1 year
|
||||
price_cents: 1000
|
||||
operation_category: create
|
||||
valid_from: 2010-07-05
|
||||
valid_to: 2010-07-05
|
||||
zone: test
|
||||
|
||||
renew_one_year:
|
||||
duration: 1 year
|
||||
price_cents: 1000
|
||||
operation_category: renew
|
||||
valid_from: 2010-07-05
|
||||
valid_to: 2010-07-05
|
||||
zone: test
|
||||
|
|
4
test/fixtures/domains.yml
vendored
4
test/fixtures/domains.yml
vendored
|
@ -40,7 +40,7 @@ metro:
|
|||
|
||||
invalid:
|
||||
name: invalid.test
|
||||
transfer_code: any
|
||||
valid_to: 2010-07-05
|
||||
transfer_code: 1438d6
|
||||
valid_to: <%= Time.zone.parse('2010-07-05').utc.to_s(:db) %>
|
||||
registrar: bestnames
|
||||
registrant: invalid
|
||||
|
|
18
test/fixtures/invoice_items.yml
vendored
18
test/fixtures/invoice_items.yml
vendored
|
@ -1,13 +1,13 @@
|
|||
DEFAULTS: &DEFAULTS
|
||||
one:
|
||||
description: Acme services
|
||||
price: 5
|
||||
amount: 1
|
||||
unit: pc
|
||||
invoice: valid
|
||||
|
||||
two:
|
||||
description: Acme services
|
||||
price: 5
|
||||
amount: 2
|
||||
unit: pc
|
||||
price: 5
|
||||
|
||||
valid:
|
||||
<<: *DEFAULTS
|
||||
invoice: valid
|
||||
|
||||
another:
|
||||
<<: *DEFAULTS
|
||||
invoice: valid
|
||||
|
|
7
test/fixtures/invoices.yml
vendored
7
test/fixtures/invoices.yml
vendored
|
@ -1,12 +1,13 @@
|
|||
DEFAULTS: &DEFAULTS
|
||||
created_at: <%= Date.parse '2010-07-05' %>
|
||||
due_date: <%= Date.parse '2010-07-06' %>
|
||||
invoice_type: DEB
|
||||
currency: EUR
|
||||
seller_name: John Doe
|
||||
seller_iban: 1234
|
||||
buyer: bestnames
|
||||
buyer_name: Jane Doe
|
||||
vat_prc: 0.2
|
||||
vat_rate: 0.1
|
||||
total: 16.50
|
||||
|
||||
valid:
|
||||
<<: *DEFAULTS
|
||||
|
@ -21,7 +22,7 @@ cancelled:
|
|||
|
||||
paid:
|
||||
<<: *DEFAULTS
|
||||
sum_cache: 1
|
||||
total: 1
|
||||
|
||||
outstanding:
|
||||
<<: *DEFAULTS
|
||||
|
|
36
test/fixtures/registrars.yml
vendored
36
test/fixtures/registrars.yml
vendored
|
@ -3,6 +3,10 @@ bestnames:
|
|||
reg_no: 1234
|
||||
code: bestnames
|
||||
email: info@bestnames.test
|
||||
street: Main Street
|
||||
zip: 12345
|
||||
city: New York
|
||||
state: New York
|
||||
country_code: US
|
||||
accounting_customer_code: bestnames
|
||||
language: en
|
||||
|
@ -13,6 +17,36 @@ goodnames:
|
|||
reg_no: 12345
|
||||
code: goodnames
|
||||
email: info@goodnames.test
|
||||
country_code: US
|
||||
country_code: DE
|
||||
vat_no: DE123456789
|
||||
accounting_customer_code: goodnames
|
||||
language: en
|
||||
|
||||
not_in_use:
|
||||
name: any
|
||||
reg_no: any
|
||||
code: any
|
||||
email: any@example.com
|
||||
country_code: US
|
||||
accounting_customer_code: any
|
||||
language: en
|
||||
|
||||
complete:
|
||||
name: Complete Names
|
||||
reg_no: 123456
|
||||
code: completenames
|
||||
email: completenames@example.com
|
||||
country_code: US
|
||||
accounting_customer_code: US0001
|
||||
language: en
|
||||
vat_no: US12345
|
||||
vat_rate: 0.05
|
||||
|
||||
not_in_use:
|
||||
name: any
|
||||
reg_no: any
|
||||
code: any
|
||||
email: any@example.com
|
||||
country_code: US
|
||||
accounting_customer_code: any
|
||||
language: en
|
||||
|
|
|
@ -3,7 +3,7 @@ require 'test_helper'
|
|||
class AdminAreaDomainForceDeleteTest < ActionDispatch::IntegrationTest
|
||||
include ActionMailer::TestHelper
|
||||
|
||||
def setup
|
||||
setup do
|
||||
login_as users(:admin)
|
||||
@domain = domains(:shop)
|
||||
ActionMailer::Base.deliveries.clear
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
require 'test_helper'
|
||||
|
||||
class AdminDomainsTestTest < ActionDispatch::IntegrationTest
|
||||
def setup
|
||||
setup do
|
||||
login_as users(:admin)
|
||||
end
|
||||
|
||||
|
|
14
test/integration/admin/mail_templates/new_test.rb
Normal file
14
test/integration/admin/mail_templates/new_test.rb
Normal file
|
@ -0,0 +1,14 @@
|
|||
require 'test_helper'
|
||||
|
||||
class AdminAreaNewMailTemplateTest < ActionDispatch::IntegrationTest
|
||||
setup do
|
||||
login_as users(:admin)
|
||||
end
|
||||
|
||||
def test_new_mail_template_does_not_throw_template_error
|
||||
visit admin_mail_templates_url
|
||||
click_link_or_button 'New'
|
||||
assert_text "HTML body"
|
||||
assert_text "New mail template"
|
||||
end
|
||||
end
|
30
test/integration/admin/registrars/delete_test.rb
Normal file
30
test/integration/admin/registrars/delete_test.rb
Normal file
|
@ -0,0 +1,30 @@
|
|||
require 'test_helper'
|
||||
|
||||
class AdminAreaDeleteRegistrarTest < ActionDispatch::IntegrationTest
|
||||
setup do
|
||||
login_as users(:admin)
|
||||
end
|
||||
|
||||
def test_can_be_deleted_when_not_in_use
|
||||
visit admin_registrar_url(registrars(:not_in_use))
|
||||
|
||||
assert_difference 'Registrar.count', -1 do
|
||||
click_link_or_button 'Delete'
|
||||
end
|
||||
|
||||
assert_current_path admin_registrars_path
|
||||
assert_text 'Registrar has been successfully deleted'
|
||||
end
|
||||
|
||||
def test_cannot_be_deleted_when_in_use
|
||||
registrar = registrars(:bestnames)
|
||||
visit admin_registrar_url(registrar)
|
||||
|
||||
assert_no_difference 'Registrar.count' do
|
||||
click_link_or_button 'Delete'
|
||||
end
|
||||
|
||||
assert_current_path admin_registrar_path(registrar)
|
||||
assert_text 'Cannot delete record because dependent domains exist'
|
||||
end
|
||||
end
|
18
test/integration/admin/registrars/details_test.rb
Normal file
18
test/integration/admin/registrars/details_test.rb
Normal file
|
@ -0,0 +1,18 @@
|
|||
require 'test_helper'
|
||||
|
||||
class AdminAreaRegistrarDetailsTest < ActionDispatch::IntegrationTest
|
||||
include ActionView::Helpers::NumberHelper
|
||||
|
||||
setup do
|
||||
login_as users(:admin)
|
||||
@registrar = registrars(:complete)
|
||||
end
|
||||
|
||||
def test_registrar_details
|
||||
visit admin_registrar_path(@registrar)
|
||||
assert_text 'Accounting customer code US0001'
|
||||
assert_text 'VAT number US12345'
|
||||
assert_text 'VAT rate 5.0%'
|
||||
assert_text 'Language English'
|
||||
end
|
||||
end
|
|
@ -1,17 +0,0 @@
|
|||
require 'test_helper'
|
||||
|
||||
class EditRegistrarTest < ActionDispatch::IntegrationTest
|
||||
def setup
|
||||
login_as users(:admin)
|
||||
@registrar = registrars(:bestnames)
|
||||
end
|
||||
|
||||
def test_updates_registrar
|
||||
visit admin_registrar_path(@registrar)
|
||||
click_link_or_button 'Edit'
|
||||
click_link_or_button 'Update registrar'
|
||||
|
||||
assert_current_path admin_registrar_path(@registrar)
|
||||
assert_text 'Registrar has been successfully updated'
|
||||
end
|
||||
end
|
69
test/integration/admin/registrars/edit_test.rb
Normal file
69
test/integration/admin/registrars/edit_test.rb
Normal file
|
@ -0,0 +1,69 @@
|
|||
require 'test_helper'
|
||||
|
||||
class AdminAreaEditRegistrarTest < ActionDispatch::IntegrationTest
|
||||
setup do
|
||||
login_as users(:admin)
|
||||
@registrar = registrars(:bestnames)
|
||||
end
|
||||
|
||||
def test_attributes_update
|
||||
visit admin_registrar_path(@registrar)
|
||||
click_link_or_button 'Edit'
|
||||
|
||||
fill_in 'Name', with: 'new name'
|
||||
fill_in 'Reg no', with: '4727673'
|
||||
fill_in 'Contact phone', with: '2570937'
|
||||
fill_in 'Website', with: 'http://new.example.com'
|
||||
fill_in 'Contact e-mail', with: 'new@example.com'
|
||||
|
||||
fill_in 'Street', with: 'new street'
|
||||
fill_in 'Zip', with: 'new zip'
|
||||
fill_in 'City', with: 'new city'
|
||||
fill_in 'State / Province', with: 'new state'
|
||||
select 'Germany', from: 'Country'
|
||||
|
||||
fill_in 'VAT number', with: '2386449'
|
||||
fill_in 'Accounting customer code', with: '866477'
|
||||
fill_in 'Billing email', with: 'new-billing@example.com'
|
||||
|
||||
select 'Estonian', from: 'Language'
|
||||
click_link_or_button 'Update registrar'
|
||||
|
||||
@registrar.reload
|
||||
assert_equal 'new name', @registrar.name
|
||||
assert_equal '4727673', @registrar.reg_no
|
||||
assert_equal '2570937', @registrar.phone
|
||||
assert_equal 'http://new.example.com', @registrar.website
|
||||
assert_equal 'new@example.com', @registrar.email
|
||||
|
||||
assert_equal 'new street', @registrar.street
|
||||
assert_equal 'new zip', @registrar.zip
|
||||
assert_equal 'new city', @registrar.city
|
||||
assert_equal 'new state', @registrar.state
|
||||
assert_equal Country.new('DE'), @registrar.country
|
||||
|
||||
assert_equal '2386449', @registrar.vat_no
|
||||
assert_equal '866477', @registrar.accounting_customer_code
|
||||
assert_equal 'new-billing@example.com', @registrar.billing_email
|
||||
|
||||
assert_equal 'et', @registrar.language
|
||||
assert_current_path admin_registrar_path(@registrar)
|
||||
assert_text 'Registrar has been successfully updated'
|
||||
end
|
||||
|
||||
def test_code_cannot_be_changed
|
||||
visit admin_registrar_path(@registrar)
|
||||
click_link_or_button 'Edit'
|
||||
assert_no_field 'Code'
|
||||
end
|
||||
|
||||
def test_fails_gracefully
|
||||
visit admin_registrar_path(@registrar)
|
||||
click_link_or_button 'Edit'
|
||||
fill_in 'Name', with: 'Good Names'
|
||||
click_link_or_button 'Update registrar'
|
||||
|
||||
assert_field 'Name', with: 'Good Names'
|
||||
assert_text 'Name has already been taken'
|
||||
end
|
||||
end
|
|
@ -1,23 +0,0 @@
|
|||
require 'test_helper'
|
||||
|
||||
class NewRegistrarTest < ActionDispatch::IntegrationTest
|
||||
def setup
|
||||
login_as users(:admin)
|
||||
end
|
||||
|
||||
def test_creates_registrar
|
||||
visit admin_registrars_path
|
||||
click_link_or_button 'New registrar'
|
||||
|
||||
fill_in 'registrar[name]', with: 'John Doe'
|
||||
fill_in 'registrar[reg_no]', with: '1234567'
|
||||
fill_in 'registrar[email]', with: 'test@test.com'
|
||||
fill_in 'registrar[code]', with: 'test'
|
||||
fill_in 'registrar[accounting_customer_code]', with: 'test'
|
||||
click_link_or_button 'Create registrar'
|
||||
|
||||
assert_current_path admin_registrar_path(Registrar.last)
|
||||
assert_text 'Registrar has been successfully created'
|
||||
assert_text 'John Doe'
|
||||
end
|
||||
end
|
50
test/integration/admin/registrars/new_test.rb
Normal file
50
test/integration/admin/registrars/new_test.rb
Normal file
|
@ -0,0 +1,50 @@
|
|||
require 'test_helper'
|
||||
|
||||
class AdminAreaNewRegistrarTest < ActionDispatch::IntegrationTest
|
||||
setup do
|
||||
login_as users(:admin)
|
||||
end
|
||||
|
||||
def test_new_registrar_creation_with_required_params
|
||||
visit admin_registrars_url
|
||||
click_link_or_button 'New registrar'
|
||||
|
||||
fill_in 'Name', with: 'Brand new names'
|
||||
fill_in 'Reg no', with: '55555555'
|
||||
fill_in 'Contact e-mail', with: 'test@example.com'
|
||||
select 'United States', from: 'Country'
|
||||
fill_in 'Accounting customer code', with: 'test'
|
||||
fill_in 'Code', with: 'test'
|
||||
|
||||
assert_difference 'Registrar.count' do
|
||||
click_link_or_button 'Create registrar'
|
||||
end
|
||||
|
||||
assert_current_path admin_registrar_path(Registrar.last)
|
||||
assert_text 'Registrar has been successfully created'
|
||||
end
|
||||
|
||||
def test_fails_gracefully
|
||||
visit admin_registrars_url
|
||||
click_link_or_button 'New registrar'
|
||||
|
||||
fill_in 'Name', with: 'Best Names'
|
||||
fill_in 'Reg no', with: '55555555'
|
||||
fill_in 'Contact e-mail', with: 'test@example.com'
|
||||
fill_in 'Accounting customer code', with: 'test'
|
||||
fill_in 'Code', with: 'test'
|
||||
|
||||
assert_no_difference 'Registrar.count' do
|
||||
click_link_or_button 'Create registrar'
|
||||
end
|
||||
assert_field 'Name', with: 'Best Names'
|
||||
assert_text 'Name has already been taken'
|
||||
end
|
||||
|
||||
def test_pre_populated_default_language
|
||||
Setting.default_language = 'en'
|
||||
visit admin_registrars_url
|
||||
click_link_or_button 'New registrar'
|
||||
assert_field 'Language', with: 'en'
|
||||
end
|
||||
end
|
|
@ -1,19 +0,0 @@
|
|||
require 'test_helper'
|
||||
|
||||
class ShowRegistrarTest < ActionDispatch::IntegrationTest
|
||||
include ActionView::Helpers::NumberHelper
|
||||
|
||||
def setup
|
||||
login_as users(:admin)
|
||||
@registrar = registrars(:bestnames)
|
||||
visit admin_registrar_path(@registrar)
|
||||
end
|
||||
|
||||
def test_accounting_customer_code
|
||||
assert_text 'bestnames'
|
||||
end
|
||||
|
||||
def test_language
|
||||
assert_text 'Language English'
|
||||
end
|
||||
end
|
|
@ -1,7 +1,7 @@
|
|||
require 'test_helper'
|
||||
|
||||
class APIDomainTransfersTest < ActionDispatch::IntegrationTest
|
||||
def setup
|
||||
setup do
|
||||
@domain = domains(:shop)
|
||||
@new_registrar = registrars(:goodnames)
|
||||
Setting.transfer_wait_time = 0 # Auto-approval
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
require 'test_helper'
|
||||
|
||||
class EppDomainCreateTransferCodeTest < ActionDispatch::IntegrationTest
|
||||
def setup
|
||||
setup do
|
||||
travel_to Time.zone.parse('2010-07-05')
|
||||
end
|
||||
|
||||
|
|
32
test/integration/epp/domain/domain_renew_test.rb
Normal file
32
test/integration/epp/domain/domain_renew_test.rb
Normal file
|
@ -0,0 +1,32 @@
|
|||
require 'test_helper'
|
||||
|
||||
class EppDomainRenewTest < ActionDispatch::IntegrationTest
|
||||
self.use_transactional_fixtures = false
|
||||
|
||||
setup do
|
||||
travel_to Time.zone.parse('2010-07-05')
|
||||
end
|
||||
|
||||
def test_domain_cannot_be_renewed_when_invalid
|
||||
request_xml = <<-XML
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<epp xmlns="https://epp.tld.ee/schema/epp-ee-1.0.xsd">
|
||||
<command>
|
||||
<renew>
|
||||
<domain:renew xmlns:domain="https://epp.tld.ee/schema/domain-eis-1.0.xsd">
|
||||
<domain:name>invalid.test</domain:name>
|
||||
<domain:curExpDate>2010-07-05</domain:curExpDate>
|
||||
<domain:period unit="m">1</domain:period>
|
||||
</domain:renew>
|
||||
</renew>
|
||||
</command>
|
||||
</epp>
|
||||
XML
|
||||
|
||||
assert_no_changes -> { domains(:invalid).valid_to } do
|
||||
post '/epp/command/renew', { frame: request_xml }, 'HTTP_COOKIE' => 'session=api_bestnames'
|
||||
end
|
||||
assert_equal '2304', Nokogiri::XML(response.body).at_css('result')[:code],
|
||||
Nokogiri::XML(response.body).css('result').text
|
||||
end
|
||||
end
|
|
@ -1,7 +1,7 @@
|
|||
require 'test_helper'
|
||||
|
||||
class EppDomainTransferRequestTest < ActionDispatch::IntegrationTest
|
||||
def setup
|
||||
setup do
|
||||
@domain = domains(:shop)
|
||||
@new_registrar = registrars(:goodnames)
|
||||
Setting.transfer_wait_time = 0
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
require 'test_helper'
|
||||
|
||||
class EppLoginSessionLimitTest < ActionDispatch::IntegrationTest
|
||||
def setup
|
||||
setup do
|
||||
travel_to Time.zone.parse('2010-07-05')
|
||||
EppSession.delete_all
|
||||
end
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
require 'test_helper'
|
||||
|
||||
class RegistrantDomainsTest < ActionDispatch::IntegrationTest
|
||||
def setup
|
||||
setup do
|
||||
login_as users(:registrant)
|
||||
|
||||
Setting.days_to_keep_business_registry_cache = 1
|
||||
|
|
25
test/integration/registrar/billing/balance_top_up_test.rb
Normal file
25
test/integration/registrar/billing/balance_top_up_test.rb
Normal file
|
@ -0,0 +1,25 @@
|
|||
require 'test_helper'
|
||||
|
||||
class BalanceTopUpTest < ActionDispatch::IntegrationTest
|
||||
setup do
|
||||
login_as users(:api_bestnames)
|
||||
end
|
||||
|
||||
def test_creates_new_invoice
|
||||
Setting.registry_vat_prc = 0.1
|
||||
|
||||
visit registrar_invoices_url
|
||||
click_link_or_button 'Add deposit'
|
||||
fill_in 'Amount', with: '25.5'
|
||||
|
||||
assert_difference 'Invoice.count' do
|
||||
click_link_or_button 'Add'
|
||||
end
|
||||
|
||||
invoice = Invoice.last
|
||||
|
||||
assert_equal BigDecimal(10), invoice.vat_rate
|
||||
assert_equal BigDecimal('28.05'), invoice.total
|
||||
assert_text 'Please pay the following invoice'
|
||||
end
|
||||
end
|
|
@ -1,7 +1,7 @@
|
|||
require 'test_helper'
|
||||
|
||||
class RegistrarDomainTransfersTest < ActionDispatch::IntegrationTest
|
||||
def setup
|
||||
setup do
|
||||
WebMock.reset!
|
||||
login_as users(:api_goodnames)
|
||||
end
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue