diff --git a/.gitignore b/.gitignore index 175f485fc..2eedfb5d0 100644 --- a/.gitignore +++ b/.gitignore @@ -13,6 +13,7 @@ config/initializers/secret_token.rb config/secrets.yml config/database.yml /export +/import /ca todo diff --git a/app/controllers/admin/bank_statements_controller.rb b/app/controllers/admin/bank_statements_controller.rb index 1997e88cb..ed68ef902 100644 --- a/app/controllers/admin/bank_statements_controller.rb +++ b/app/controllers/admin/bank_statements_controller.rb @@ -1,13 +1,15 @@ class Admin::BankStatementsController < AdminController load_and_authorize_resource + before_action :set_bank_statement, only: [:show, :download_import_file] + def index @q = BankStatement.search(params[:q]) + @q.sorts = 'id desc' if @q.sorts.empty? @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 @@ -28,8 +30,17 @@ class Admin::BankStatementsController < AdminController 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 + def set_bank_statement + @bank_statement = BankStatement.find(params[:id]) + end + def bank_statement_params params.require(:bank_statement).permit(:th6_file) end diff --git a/app/models/bank_statement.rb b/app/models/bank_statement.rb index daf62943f..547d3fefc 100644 --- a/app/models/bank_statement.rb +++ b/app/models/bank_statement.rb @@ -15,6 +15,9 @@ class BankStatement < ActiveRecord::Base next unless bt_params bank_transactions.build(bt_params) 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 def parse_th6_row(row) diff --git a/app/views/admin/bank_statements/show.haml b/app/views/admin/bank_statements/show.haml index 97d4eee63..ffe5df423 100644 --- a/app/views/admin/bank_statements/show.haml +++ b/app/views/admin/bank_statements/show.haml @@ -5,24 +5,52 @@ %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 +.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 .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'} + %th{class: 'col-xs-3'} = sort_link(@q, 'paid_at') - %th{class: 'col-xs-2'} - = sort_link(@q, 'sum', t('sum')) + %th{class: 'col-xs-3'} + = sort_link(@q, 'buyer_name') + %th{class: 'col-xs-3'} + = sort_link(@q, 'sum') + %th{class: 'col-xs-3'} + = sort_link(@q, 'currency') %tbody - @bank_transactions.each do |x| %tr - %td= link_to(x.buyer_name, [:admin, x]) - %td= l(x.paid_at) + %td= link_to(l(x.paid_at, format: :date_long), [:admin, x]) + %td= x.buyer_name %td= x.sum + %td= x.currency .row .col-md-12 = paginate @bank_transactions diff --git a/app/views/admin/bank_transactions/show.haml b/app/views/admin/bank_transactions/show.haml index eab236966..67a8860df 100644 --- a/app/views/admin/bank_transactions/show.haml +++ b/app/views/admin/bank_transactions/show.haml @@ -13,15 +13,15 @@ %h3.panel-title= t(:details) .panel-body %dl.dl-horizontal + %dt= t('document_no') + %dd= @bank_transaction.document_no + %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 @@ -31,14 +31,17 @@ %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('currency') + %dd= @bank_transaction.currency + %dt= t('reference_no') %dd= @bank_transaction.reference_no + + %dt= t('paid_at') + %dd= l(@bank_transaction.paid_at, format: :date_long) diff --git a/app/views/layouts/application.haml b/app/views/layouts/application.haml index 68629ec2c..73c55c1d7 100644 --- a/app/views/layouts/application.haml +++ b/app/views/layouts/application.haml @@ -42,6 +42,9 @@ = t('settings') %span.caret %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= link_to t('settings'), admin_settings_path %li= link_to t('zonefile'), admin_zonefile_settings_path diff --git a/config/deploy.rb b/config/deploy.rb index 4b8e32759..ba6f43b47 100644 --- a/config/deploy.rb +++ b/config/deploy.rb @@ -97,7 +97,8 @@ set :shared_paths, [ 'config/initializers/current_commit_hash.rb', 'log', 'public/system', - 'export/zonefiles' + 'export/zonefiles', + 'import/bank_statements' ] # Optional settings: @@ -133,6 +134,9 @@ task setup: :environment do queue! %(mkdir -p "#{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") deploy do invoke :'git:clone' diff --git a/config/locales/en.yml b/config/locales/en.yml index e24adad24..826584d0b 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -23,6 +23,7 @@ en: long: "%A, %e. %B %Y, %H:%M" short: "%d.%m.%y, %H:%M" date: "%d.%m.%y" + date_long: "%d. %B %Y" date: formats: @@ -677,5 +678,17 @@ en: back_to_bank_statement: 'Back to bank statement' imported_at: 'Imported at' bank_statement: 'Bank statement' + bank_transactions: 'Bank transactions' bank_transaction: 'Bank transaction' 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' diff --git a/config/routes.rb b/config/routes.rb index a8761dbb0..2dadee581 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -85,7 +85,10 @@ Rails.application.routes.draw do resources :keyrelays - resources :bank_statements + resources :bank_statements do + get 'download_import_file', on: :member + end + resources :bank_transactions resources :domains do