Better views for bank statements

This commit is contained in:
Martin Lensment 2015-04-14 11:22:38 +03:00
parent 3398bcd845
commit d61ea17fea
9 changed files with 85 additions and 16 deletions

1
.gitignore vendored
View file

@ -13,6 +13,7 @@ config/initializers/secret_token.rb
config/secrets.yml config/secrets.yml
config/database.yml config/database.yml
/export /export
/import
/ca /ca
todo todo

View file

@ -1,13 +1,15 @@
class Admin::BankStatementsController < AdminController class Admin::BankStatementsController < AdminController
load_and_authorize_resource load_and_authorize_resource
before_action :set_bank_statement, only: [:show, :download_import_file]
def index def index
@q = BankStatement.search(params[:q]) @q = BankStatement.search(params[:q])
@q.sorts = 'id desc' if @q.sorts.empty?
@bank_statements = @q.result.page(params[:page]) @bank_statements = @q.result.page(params[:page])
end end
def show def show
@bank_statement = BankStatement.find(params[:id])
@q = @bank_statement.bank_transactions.search(params[:q]) @q = @bank_statement.bank_transactions.search(params[:q])
@bank_transactions = @q.result.page(params[:page]) @bank_transactions = @q.result.page(params[:page])
end end
@ -28,8 +30,17 @@ class Admin::BankStatementsController < AdminController
end end
end end
def download_import_file
filename = @bank_statement.import_file_path.split('/').last
send_data File.open(@bank_statement.import_file_path, 'r').read, filename: filename
end
private private
def set_bank_statement
@bank_statement = BankStatement.find(params[:id])
end
def bank_statement_params def bank_statement_params
params.require(:bank_statement).permit(:th6_file) params.require(:bank_statement).permit(:th6_file)
end end

View file

@ -15,6 +15,9 @@ class BankStatement < ActiveRecord::Base
next unless bt_params next unless bt_params
bank_transactions.build(bt_params) bank_transactions.build(bt_params)
end end
self.import_file_path = "#{ENV['bank_statement_import_dir']}/#{Time.zone.now.to_formatted_s(:number)}.txt"
File.open(import_file_path, 'w') { |f| f.write(th6_file.open.read) }
end end
def parse_th6_row(row) def parse_th6_row(row)

View file

@ -5,24 +5,52 @@
%h2.text-right.text-center-xs %h2.text-right.text-center-xs
= link_to(t('back_to_bank_statements'), admin_bank_statements_path, class: 'btn btn-primary') = link_to(t('back_to_bank_statements'), admin_bank_statements_path, class: 'btn btn-primary')
%hr %hr
%row
.col-md-12
.panel.panel-default
.panel-heading
%h3.panel-title= t(:details)
.panel-body
%dl.dl-horizontal
%dt= t('bank_code')
%dd= @bank_statement.bank_code
%dt= t('iban').upcase
%dd= @bank_statement.iban
%dt= t('queried_at')
%dd= l(@bank_statement.queried_at)
%dt= t('imported_at')
%dd= l(@bank_statement.created_at)
- if @bank_statement.import_file_path
%dt= t('import_file')
%dd= link_to(t('download'), download_import_file_admin_bank_statement_path(@bank_statement))
%h2.text-center-xs= t('bank_transactions')
%hr
.row .row
.col-md-12 .col-md-12
.table-responsive .table-responsive
%table.table.table-hover.table-bordered.table-condensed %table.table.table-hover.table-bordered.table-condensed
%thead %thead
%tr %tr
%th{class: 'col-xs-2'} %th{class: 'col-xs-3'}
= sort_link(@q, 'buyer_name')
%th{class: 'col-xs-2'}
= sort_link(@q, 'paid_at') = sort_link(@q, 'paid_at')
%th{class: 'col-xs-2'} %th{class: 'col-xs-3'}
= sort_link(@q, 'sum', t('sum')) = sort_link(@q, 'buyer_name')
%th{class: 'col-xs-3'}
= sort_link(@q, 'sum')
%th{class: 'col-xs-3'}
= sort_link(@q, 'currency')
%tbody %tbody
- @bank_transactions.each do |x| - @bank_transactions.each do |x|
%tr %tr
%td= link_to(x.buyer_name, [:admin, x]) %td= link_to(l(x.paid_at, format: :date_long), [:admin, x])
%td= l(x.paid_at) %td= x.buyer_name
%td= x.sum %td= x.sum
%td= x.currency
.row .row
.col-md-12 .col-md-12
= paginate @bank_transactions = paginate @bank_transactions

View file

@ -13,15 +13,15 @@
%h3.panel-title= t(:details) %h3.panel-title= t(:details)
.panel-body .panel-body
%dl.dl-horizontal %dl.dl-horizontal
%dt= t('document_no')
%dd= @bank_transaction.document_no
%dt= t('bank_reference') %dt= t('bank_reference')
%dd= @bank_transaction.bank_reference %dd= @bank_transaction.bank_reference
%dt= t('iban').upcase %dt= t('iban').upcase
%dd= @bank_transaction.iban %dd= @bank_transaction.iban
%dt= t('currency')
%dd= @bank_transaction.currency
%dt= t('buyer_bank_code') %dt= t('buyer_bank_code')
%dd= @bank_transaction.buyer_bank_code %dd= @bank_transaction.buyer_bank_code
@ -31,14 +31,17 @@
%dt= t('buyer_name') %dt= t('buyer_name')
%dd= @bank_transaction.buyer_name %dd= @bank_transaction.buyer_name
%dt= t('document_no')
%dd= @bank_transaction.document_no
%dt= t('description') %dt= t('description')
%dd= @bank_transaction.description %dd= @bank_transaction.description
%dt= t('sum') %dt= t('sum')
%dd= @bank_transaction.sum %dd= @bank_transaction.sum
%dt= t('currency')
%dd= @bank_transaction.currency
%dt= t('reference_no') %dt= t('reference_no')
%dd= @bank_transaction.reference_no %dd= @bank_transaction.reference_no
%dt= t('paid_at')
%dd= l(@bank_transaction.paid_at, format: :date_long)

View file

@ -42,6 +42,9 @@
= t('settings') = t('settings')
%span.caret %span.caret
%ul.dropdown-menu{role: "menu"} %ul.dropdown-menu{role: "menu"}
%li.dropdown-header= t('accounting')
%li= link_to t('bank_statements'), admin_bank_statements_path
%li.divider
%li.dropdown-header= t('system') %li.dropdown-header= t('system')
%li= link_to t('settings'), admin_settings_path %li= link_to t('settings'), admin_settings_path
%li= link_to t('zonefile'), admin_zonefile_settings_path %li= link_to t('zonefile'), admin_zonefile_settings_path

View file

@ -97,7 +97,8 @@ set :shared_paths, [
'config/initializers/current_commit_hash.rb', 'config/initializers/current_commit_hash.rb',
'log', 'log',
'public/system', 'public/system',
'export/zonefiles' 'export/zonefiles',
'import/bank_statements'
] ]
# Optional settings: # Optional settings:
@ -133,6 +134,9 @@ task setup: :environment do
queue! %(mkdir -p "#{deploy_to}/shared/export/zonefiles") queue! %(mkdir -p "#{deploy_to}/shared/export/zonefiles")
queue! %(chmod g+rx,u+rwx "#{deploy_to}/shared/export/zonefiles") queue! %(chmod g+rx,u+rwx "#{deploy_to}/shared/export/zonefiles")
queue! %(mkdir -p "#{deploy_to}/shared/import/bank_statements")
queue! %(chmod g+rx,u+rwx "#{deploy_to}/shared/import/bank_statements")
queue! %(touch "#{deploy_to}/shared/config/database.yml") queue! %(touch "#{deploy_to}/shared/config/database.yml")
deploy do deploy do
invoke :'git:clone' invoke :'git:clone'

View file

@ -23,6 +23,7 @@ en:
long: "%A, %e. %B %Y, %H:%M" long: "%A, %e. %B %Y, %H:%M"
short: "%d.%m.%y, %H:%M" short: "%d.%m.%y, %H:%M"
date: "%d.%m.%y" date: "%d.%m.%y"
date_long: "%d. %B %Y"
date: date:
formats: formats:
@ -677,5 +678,17 @@ en:
back_to_bank_statement: 'Back to bank statement' back_to_bank_statement: 'Back to bank statement'
imported_at: 'Imported at' imported_at: 'Imported at'
bank_statement: 'Bank statement' bank_statement: 'Bank statement'
bank_transactions: 'Bank transactions'
bank_transaction: 'Bank transaction' bank_transaction: 'Bank transaction'
sum: 'Sum' sum: 'Sum'
queried_at: 'Queried at'
import_file_path: 'Import file path'
bank_code: 'Bank code'
reference_no: 'Reference number'
currency: 'Currency'
buyer_name: 'Buyer name'
buyer_iban: 'Buyer IBAN'
buyer_bank_code: 'Buyer bank code'
bank_reference: 'Bank reference'
document_no: 'Document number'
import_file: 'Import file'

View file

@ -85,7 +85,10 @@ Rails.application.routes.draw do
resources :keyrelays resources :keyrelays
resources :bank_statements resources :bank_statements do
get 'download_import_file', on: :member
end
resources :bank_transactions resources :bank_transactions
resources :domains do resources :domains do