Add reference numbers to registrars

This commit is contained in:
Martin Lensment 2015-04-14 12:48:45 +03:00
parent d61ea17fea
commit 065df13805
7 changed files with 48 additions and 4 deletions

View file

@ -11,6 +11,29 @@ class Registrar < ActiveRecord::Base
validates :name, :reg_no, :country_code, :email, presence: true validates :name, :reg_no, :country_code, :email, presence: true
validates :name, :reg_no, uniqueness: true validates :name, :reg_no, uniqueness: true
validate :set_code, if: :new_record? validate :set_code, if: :new_record?
before_create :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.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
after_save :touch_domains_version after_save :touch_domains_version
validates :email, :billing_email, format: /@/, allow_blank: true validates :email, :billing_email, format: /@/, allow_blank: true

View file

@ -30,6 +30,9 @@
%dt= t('vat_no') %dt= t('vat_no')
%dd= @registrar.vat_no %dd= @registrar.vat_no
%dt= t('reference_no')
%dd= @registrar.reference_no
.col-md-6 .col-md-6
.panel.panel-default .panel.panel-default
.panel-heading .panel-heading

View file

@ -369,7 +369,7 @@ en:
registrar_added: 'Registrar added!' registrar_added: 'Registrar added!'
failed_to_add_registrar: 'Failed to add registrar' failed_to_add_registrar: 'Failed to add registrar'
registrar_details: 'Registrar details' registrar_details: 'Registrar details'
vat_no: 'Vat no' vat_no: 'VAT no'
edit_registrar: 'Edit registrar' edit_registrar: 'Edit registrar'
back_to_registrar: 'Back to registrar' back_to_registrar: 'Back to registrar'
registrar_updated: 'Registrar updated' registrar_updated: 'Registrar updated'
@ -684,11 +684,11 @@ en:
queried_at: 'Queried at' queried_at: 'Queried at'
import_file_path: 'Import file path' import_file_path: 'Import file path'
bank_code: 'Bank code' bank_code: 'Bank code'
reference_no: 'Reference number' reference_no: 'Reference no'
currency: 'Currency' currency: 'Currency'
buyer_name: 'Buyer name' buyer_name: 'Buyer name'
buyer_iban: 'Buyer IBAN' buyer_iban: 'Buyer IBAN'
buyer_bank_code: 'Buyer bank code' buyer_bank_code: 'Buyer bank code'
bank_reference: 'Bank reference' bank_reference: 'Bank reference'
document_no: 'Document number' document_no: 'Document no'
import_file: 'Import file' import_file: 'Import file'

View file

@ -0,0 +1,10 @@
class AddReferenceNoToRegistrar < ActiveRecord::Migration
def change
add_column :registrars, :reference_no, :string
Registrar.all.each do |x|
x.generate_iso_11649_reference_no
x.save
end
end
end

View file

@ -11,7 +11,7 @@
# #
# It's strongly recommended that you check this file into your version control system. # It's strongly recommended that you check this file into your version control system.
ActiveRecord::Schema.define(version: 20150413115829) do ActiveRecord::Schema.define(version: 20150414092249) do
# These are extensions that must be enabled in order to support this database # These are extensions that must be enabled in order to support this database
enable_extension "plpgsql" enable_extension "plpgsql"
@ -699,6 +699,7 @@ ActiveRecord::Schema.define(version: 20150413115829) do
t.string "directo_handle" t.string "directo_handle"
t.boolean "vat" t.boolean "vat"
t.integer "legacy_id" t.integer "legacy_id"
t.string "reference_no"
end end
add_index "registrars", ["code"], name: "index_registrars_on_code", using: :btree add_index "registrars", ["code"], name: "index_registrars_on_code", using: :btree

View file

@ -92,6 +92,13 @@ namespace :import do
Registrar.import registrars, validate: false Registrar.import registrars, validate: false
puts "-----> Generating reference numbers"
Registrar.all.each do |x|
x.generate_iso_11649_reference_no
x.save(validate: false)
end
puts "-----> Imported #{count} new registrars in #{(Time.zone.now.to_f - start).round(2)} seconds" puts "-----> Imported #{count} new registrars in #{(Time.zone.now.to_f - start).round(2)} seconds"
end end