mirror of
https://github.com/internetee/registry.git
synced 2025-08-04 08:52:04 +02:00
Merge branch 'registry-765' into registry-623
# Conflicts: # app/models/registrar.rb # config/locales/en.yml # spec/models/registrar_spec.rb # test/models/registrar_test.rb
This commit is contained in:
commit
4f51f6c736
35 changed files with 464 additions and 482 deletions
|
@ -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,22 +36,15 @@ 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
|
||||
else
|
||||
flash.now[:alert] = I18n.t('failed_to_delete_registrar')
|
||||
render 'show'
|
||||
end
|
||||
@registrar.destroy!
|
||||
redirect_to admin_registrars_url, notice: t('.deleted')
|
||||
end
|
||||
|
||||
private
|
||||
|
|
|
@ -24,7 +24,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
|
||||
|
@ -39,38 +39,11 @@ class Registrar < ActiveRecord::Base
|
|||
validates :vat_rate, presence: true, if: 'foreign_vat_payer? && vat_no.blank?'
|
||||
validates :vat_rate, absence: true, if: 'foreign_vat_payer? && vat_no?'
|
||||
validates :vat_rate, numericality: { greater_than_or_equal_to: 0, less_than_or_equal_to: 99 }, allow_nil: true
|
||||
validate :forbidden_codes
|
||||
validate :forbid_special_code
|
||||
|
||||
attribute :vat_rate, VATRateType.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 },
|
||||
|
@ -211,6 +184,31 @@ class Registrar < ActiveRecord::Base
|
|||
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 local_vat_payer?
|
||||
country == Registry.instance.legal_address_country
|
||||
end
|
||||
|
|
17
app/views/admin/registrars/_billing.html.erb
Normal file
17
app/views/admin/registrars/_billing.html.erb
Normal file
|
@ -0,0 +1,17 @@
|
|||
<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 :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>
|
|
@ -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>
|
||||
|
||||
|
|
|
@ -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' %>
|
||||
|
|
|
@ -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">
|
||||
|
|
|
@ -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,15 +1,31 @@
|
|||
<% 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 %>
|
||||
|
||||
<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>
|
||||
|
||||
<% if @registrar.errors.any? %>
|
||||
<% @registrar.errors.each do |attr, err| %>
|
||||
<%= err %>
|
||||
|
@ -41,12 +57,6 @@
|
|||
<dd>
|
||||
<%= @registrar.reg_no %>
|
||||
</dd>
|
||||
<dt>
|
||||
<%= t(:vat_no) %>
|
||||
</dt>
|
||||
<dd>
|
||||
<%= @registrar.vat_no %>
|
||||
</dd>
|
||||
<dt>
|
||||
<%= t(:reference_no) %>
|
||||
</dt>
|
||||
|
@ -71,12 +81,6 @@
|
|||
<dd>
|
||||
<%= @registrar.website %>
|
||||
</dd>
|
||||
<dt>
|
||||
<%= Registrar.human_attribute_name :accounting_customer_code %>
|
||||
</dt>
|
||||
<dd>
|
||||
<%= @registrar.accounting_customer_code %>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -120,21 +124,16 @@
|
|||
<dd>
|
||||
<%= @registrar.billing_address %>
|
||||
</dd>
|
||||
<dt>
|
||||
<%= t(:billing_email) %>
|
||||
</dt>
|
||||
<dd>
|
||||
<%= @registrar.billing_email %>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
</div>
|
||||
<%= render 'billing', registrar: @registrar %>
|
||||
<%= render 'admin/registrars/show/preferences', registrar: registrar %>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<div class="panel panel-default" id="epp-users">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading clearfix">
|
||||
<div class="pull-left">
|
||||
<%= t('.api_users') %>
|
||||
|
@ -174,7 +173,7 @@
|
|||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<div class="panel panel-default" id="epp-users">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading clearfix">
|
||||
<div class="pull-left">
|
||||
<%= t(:white_ips) %>
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
%dt= t(:reg_no)
|
||||
%dd= @registrar.reg_no
|
||||
|
||||
%dt= t(:vat_no)
|
||||
%dt= Registrar.human_attribute_name :vat_no
|
||||
%dd= @registrar.vat_no
|
||||
|
||||
%dt= t(:id)
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue