mirror of
https://github.com/internetee/registry.git
synced 2025-05-17 17:59:47 +02:00
Add views for bank items
This commit is contained in:
parent
b5521594ce
commit
3398bcd845
16 changed files with 248 additions and 22 deletions
36
app/controllers/admin/bank_statements_controller.rb
Normal file
36
app/controllers/admin/bank_statements_controller.rb
Normal 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
|
7
app/controllers/admin/bank_transactions_controller.rb
Normal file
7
app/controllers/admin/bank_transactions_controller.rb
Normal file
|
@ -0,0 +1,7 @@
|
|||
class Admin::BankTransactionsController < AdminController
|
||||
load_and_authorize_resource
|
||||
|
||||
def show
|
||||
|
||||
end
|
||||
end
|
|
@ -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
|
||||
|
|
47
app/models/bank_statement.rb
Normal file
47
app/models/bank_statement.rb
Normal 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
|
3
app/models/bank_transaction.rb
Normal file
3
app/models/bank_transaction.rb
Normal file
|
@ -0,0 +1,3 @@
|
|||
class BankTransaction < ActiveRecord::Base
|
||||
belongs_to :bank_statement
|
||||
end
|
28
app/views/admin/bank_statements/index.haml
Normal file
28
app/views/admin/bank_statements/index.haml
Normal 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
|
21
app/views/admin/bank_statements/new.haml
Normal file
21
app/views/admin/bank_statements/new.haml
Normal 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')
|
||||
|
28
app/views/admin/bank_statements/show.haml
Normal file
28
app/views/admin/bank_statements/show.haml
Normal 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
|
44
app/views/admin/bank_transactions/show.haml
Normal file
44
app/views/admin/bank_transactions/show.haml
Normal 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
|
|
@ -671,3 +671,11 @@ en:
|
|||
total_without_vat: 'Total without VAT'
|
||||
paid_at: 'Paid at'
|
||||
invoice: 'Invoice'
|
||||
bank_statements: 'Bank statements'
|
||||
import_th6_bank_statement: 'Import TH6 bank statement'
|
||||
back_to_bank_statements: 'Back to bank statements'
|
||||
back_to_bank_statement: 'Back to bank statement'
|
||||
imported_at: 'Imported at'
|
||||
bank_statement: 'Bank statement'
|
||||
bank_transaction: 'Bank transaction'
|
||||
sum: 'Sum'
|
||||
|
|
|
@ -85,6 +85,9 @@ Rails.application.routes.draw do
|
|||
|
||||
resources :keyrelays
|
||||
|
||||
resources :bank_statements
|
||||
resources :bank_transactions
|
||||
|
||||
resources :domains do
|
||||
resources :domain_versions
|
||||
end
|
||||
|
|
|
@ -3,7 +3,7 @@ class CreateAccountActivities < ActiveRecord::Migration
|
|||
create_table :account_activites do |t|
|
||||
t.integer :account_id
|
||||
t.integer :invoice_id
|
||||
t.decimal :amount
|
||||
t.decimal :sum
|
||||
t.string :currency
|
||||
t.integer :bank_transaction_id
|
||||
|
||||
|
|
|
@ -2,19 +2,21 @@ class CreateBankTransactions < ActiveRecord::Migration
|
|||
def change
|
||||
create_table :bank_transactions do |t|
|
||||
t.integer :bank_statement_id
|
||||
t.string :subject_code
|
||||
# t.string :subject_code (VV)
|
||||
# record_code # kirjetunnus - ei kasuta? # impordime ainult tehingud nagunii
|
||||
t.string :bank_reference # panga viide
|
||||
t.string :tr_code # tehingu liik (MK / MV)
|
||||
# t.string :tr_code # tehingu liik (MK / MV)
|
||||
t.string :iban # own bank account no.
|
||||
t.string :currency
|
||||
t.string :other_party_bank
|
||||
t.string :other_party_name
|
||||
t.string :doc_no
|
||||
t.string :buyer_bank_code
|
||||
t.string :buyer_iban
|
||||
t.string :buyer_name
|
||||
t.string :document_no
|
||||
t.string :description
|
||||
#tr_type # C/D # impordime ainult cre nagunii
|
||||
t.decimal :amount
|
||||
t.decimal :sum
|
||||
t.string :reference_no
|
||||
t.datetime :paid_at
|
||||
|
||||
t.timestamps
|
||||
end
|
||||
|
|
|
@ -1,12 +1,11 @@
|
|||
class CreateBankStatements < ActiveRecord::Migration
|
||||
def change
|
||||
create_table :bank_statements do |t|
|
||||
t.string :subject_code
|
||||
# t.string :subject_code
|
||||
t.string :bank_code
|
||||
t.string :account_number
|
||||
t.date :date
|
||||
t.time :time
|
||||
t.string :iban
|
||||
t.string :import_file_path
|
||||
t.datetime :queried_at
|
||||
|
||||
t.timestamps
|
||||
end
|
||||
|
|
0
db/migrate/bank_statements.rb
Normal file
0
db/migrate/bank_statements.rb
Normal file
20
db/schema.rb
20
db/schema.rb
|
@ -19,7 +19,7 @@ ActiveRecord::Schema.define(version: 20150413115829) do
|
|||
create_table "account_activites", force: :cascade do |t|
|
||||
t.integer "account_id"
|
||||
t.integer "invoice_id"
|
||||
t.decimal "amount"
|
||||
t.decimal "sum"
|
||||
t.string "currency"
|
||||
t.integer "bank_transaction_id"
|
||||
t.datetime "created_at"
|
||||
|
@ -64,29 +64,27 @@ ActiveRecord::Schema.define(version: 20150413115829) do
|
|||
end
|
||||
|
||||
create_table "bank_statements", force: :cascade do |t|
|
||||
t.string "subject_code"
|
||||
t.string "bank_code"
|
||||
t.string "account_number"
|
||||
t.date "date"
|
||||
t.time "time"
|
||||
t.string "iban"
|
||||
t.string "import_file_path"
|
||||
t.datetime "queried_at"
|
||||
t.datetime "created_at"
|
||||
t.datetime "updated_at"
|
||||
end
|
||||
|
||||
create_table "bank_transactions", force: :cascade do |t|
|
||||
t.integer "bank_statement_id"
|
||||
t.string "subject_code"
|
||||
t.string "bank_reference"
|
||||
t.string "tr_code"
|
||||
t.string "iban"
|
||||
t.string "currency"
|
||||
t.string "other_party_bank"
|
||||
t.string "other_party_name"
|
||||
t.string "doc_no"
|
||||
t.string "buyer_bank_code"
|
||||
t.string "buyer_iban"
|
||||
t.string "buyer_name"
|
||||
t.string "document_no"
|
||||
t.string "description"
|
||||
t.decimal "amount"
|
||||
t.decimal "sum"
|
||||
t.string "reference_no"
|
||||
t.datetime "paid_at"
|
||||
t.datetime "created_at"
|
||||
t.datetime "updated_at"
|
||||
end
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue