Add views for bank items

This commit is contained in:
Martin Lensment 2015-04-13 18:36:08 +03:00
parent b5521594ce
commit 3398bcd845
16 changed files with 248 additions and 22 deletions

View file

@ -0,0 +1,36 @@
class Admin::BankStatementsController < AdminController
load_and_authorize_resource
def index
@q = BankStatement.search(params[:q])
@bank_statements = @q.result.page(params[:page])
end
def show
@bank_statement = BankStatement.find(params[:id])
@q = @bank_statement.bank_transactions.search(params[:q])
@bank_transactions = @q.result.page(params[:page])
end
def new
@bank_statement = BankStatement.new
end
def create
@bank_statement = BankStatement.new(bank_statement_params)
if @bank_statement.import
flash[:notice] = I18n.t('record_created')
redirect_to [:admin, @bank_statement]
else
flash.now[:alert] = I18n.t('failed_to_create_record')
render 'new'
end
end
private
def bank_statement_params
params.require(:bank_statement).permit(:th6_file)
end
end

View file

@ -0,0 +1,7 @@
class Admin::BankTransactionsController < AdminController
load_and_authorize_resource
def show
end
end

View file

@ -81,6 +81,8 @@ class Ability
can :manage, Certificate
can :manage, Keyrelay
can :manage, LegalDocument
can :manage, BankStatement
can :manage, BankTransaction
can :read, ApiLog::EppLog
can :read, ApiLog::ReppLog
# can :index, :delayed_job

View file

@ -0,0 +1,47 @@
class BankStatement < ActiveRecord::Base
has_many :bank_transactions
attr_accessor :th6_file
def import
import_th6_file && save
end
def import_th6_file
return false unless th6_file
th6_file.open.each_line do |row|
bt_params = parse_th6_row(row)
next unless bt_params
bank_transactions.build(bt_params)
end
end
def parse_th6_row(row)
return parse_th6_header(row) if row[4, 3].strip == '000'
return if row[4, 3].strip == '999' # skip footer
return unless row[4, 1].strip == '1' # import only transactions
return unless row[266, 2].strip == 'C' # import only Credit transactions
{
paid_at: DateTime.strptime(row[5, 8].strip, '%Y%m%d'),
bank_reference: row[5, 16].strip,
iban: row[25, 20].strip,
currency: row[45, 3].strip,
buyer_bank_code: row[48, 3].strip,
buyer_iban: row[51, 32].strip,
buyer_name: row[83, 35].strip,
document_no: row[118, 8].strip,
description: row[126, 140].strip,
sum: BigDecimal.new(row[268, 12].strip) / BigDecimal.new('100.0'),
reference_no: row[280, 35].strip
}
end
def parse_th6_header(row)
self.bank_code = row[7, 3].strip
self.iban = row[10, 20].strip
self.queried_at = DateTime.strptime(row[30, 10].strip, '%y%m%d%H%M')
nil
end
end

View file

@ -0,0 +1,3 @@
class BankTransaction < ActiveRecord::Base
belongs_to :bank_statement
end

View file

@ -0,0 +1,28 @@
.row
.col-sm-6
%h2.text-center-xs= t('bank_statements')
.col-sm-6
%h2.text-right.text-center-xs
= link_to(t('import'), new_admin_bank_statement_path, class: 'btn btn-primary')
%hr
.row
.col-md-12
.table-responsive
%table.table.table-hover.table-bordered.table-condensed
%thead
%tr
%th{class: 'col-xs-2'}
= sort_link(@q, 'created_at', t('imported_at'))
%th{class: 'col-xs-2'}
= sort_link(@q, 'bank_code')
%th{class: 'col-xs-2'}
= sort_link(@q, 'iban', t('iban').upcase)
%tbody
- @bank_statements.each do |x|
%tr
%td= link_to(l(x.created_at), admin_bank_statement_path(x))
%td= x.bank_code
%td= x.iban
.row
.col-md-12
= paginate @bank_statements

View file

@ -0,0 +1,21 @@
.row
.col-sm-6
%h2.text-center-xs= t('import_th6_bank_statement')
.col-sm-6
%h2.text-right.text-center-xs
= link_to(t('back_to_bank_statements'), admin_bank_statements_path, class: 'btn btn-primary')
%hr
= form_for([:admin, @bank_statement], multipart: true) do |f|
= render 'shared/full_errors', object: @bank_statement
.row
.col-md-12.text-left
.form-group
= f.label :th6_file
= f.file_field :th6_file
%hr
.row
.col-md-12.text-right
= button_tag(t('save'), class: 'btn btn-primary')

View file

@ -0,0 +1,28 @@
.row
.col-sm-6
%h2.text-center-xs= t('bank_statement')
.col-sm-6
%h2.text-right.text-center-xs
= link_to(t('back_to_bank_statements'), admin_bank_statements_path, class: 'btn btn-primary')
%hr
.row
.col-md-12
.table-responsive
%table.table.table-hover.table-bordered.table-condensed
%thead
%tr
%th{class: 'col-xs-2'}
= sort_link(@q, 'buyer_name')
%th{class: 'col-xs-2'}
= sort_link(@q, 'paid_at')
%th{class: 'col-xs-2'}
= sort_link(@q, 'sum', t('sum'))
%tbody
- @bank_transactions.each do |x|
%tr
%td= link_to(x.buyer_name, [:admin, x])
%td= l(x.paid_at)
%td= x.sum
.row
.col-md-12
= paginate @bank_transactions

View file

@ -0,0 +1,44 @@
.row
.col-sm-6
%h2.text-center-xs
= t('bank_transaction')
.col-sm-6
%h2.text-right.text-center-xs
= link_to(t('back_to_bank_statement'), admin_bank_statement_path(@bank_transaction.bank_statement), class: 'btn btn-primary')
%hr
%row
.col-md-12
.panel.panel-default
.panel-heading
%h3.panel-title= t(:details)
.panel-body
%dl.dl-horizontal
%dt= t('bank_reference')
%dd= @bank_transaction.bank_reference
%dt= t('iban').upcase
%dd= @bank_transaction.iban
%dt= t('currency')
%dd= @bank_transaction.currency
%dt= t('buyer_bank_code')
%dd= @bank_transaction.buyer_bank_code
%dt= t('buyer_iban')
%dd= @bank_transaction.buyer_iban
%dt= t('buyer_name')
%dd= @bank_transaction.buyer_name
%dt= t('document_no')
%dd= @bank_transaction.document_no
%dt= t('description')
%dd= @bank_transaction.description
%dt= t('sum')
%dd= @bank_transaction.sum
%dt= t('reference_no')
%dd= @bank_transaction.reference_no