From de082bb637520293c9db4f022b711b400fdf2536 Mon Sep 17 00:00:00 2001 From: Martin Lensment Date: Fri, 26 Jun 2015 14:53:49 +0300 Subject: [PATCH] Add form for bank statements #2733 --- .../admin/bank_statements_controller.rb | 18 ++++++++++++++++- app/models/bank_statement.rb | 2 +- app/views/admin/bank_statements/_form.haml | 19 ++++++++++++++++++ app/views/admin/bank_statements/import.haml | 20 +++++++++++++++++++ app/views/admin/bank_statements/index.haml | 3 ++- app/views/admin/bank_statements/new.haml | 20 +++---------------- app/views/admin/bank_statements/show.haml | 9 +++++---- config/locales/en.yml | 1 + config/routes.rb | 5 +++++ 9 files changed, 73 insertions(+), 24 deletions(-) create mode 100644 app/views/admin/bank_statements/_form.haml create mode 100644 app/views/admin/bank_statements/import.haml diff --git a/app/controllers/admin/bank_statements_controller.rb b/app/controllers/admin/bank_statements_controller.rb index b667d0fb6..1e69aa1af 100644 --- a/app/controllers/admin/bank_statements_controller.rb +++ b/app/controllers/admin/bank_statements_controller.rb @@ -22,6 +22,22 @@ class Admin::BankStatementsController < AdminController def create @bank_statement = BankStatement.new(bank_statement_params) + if @bank_statement.save + 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 + + def import + @bank_statement = BankStatement.new + end + + def create_from_import + @bank_statement = BankStatement.new(bank_statement_params) + if @bank_statement.import flash[:notice] = I18n.t('record_created') redirect_to [:admin, @bank_statement] @@ -53,6 +69,6 @@ class Admin::BankStatementsController < AdminController end def bank_statement_params - params.require(:bank_statement).permit(:th6_file) + params.require(:bank_statement).permit(:th6_file, :bank_code, :iban) end end diff --git a/app/models/bank_statement.rb b/app/models/bank_statement.rb index bb670d227..a5102ce78 100644 --- a/app/models/bank_statement.rb +++ b/app/models/bank_statement.rb @@ -4,7 +4,7 @@ class BankStatement < ActiveRecord::Base attr_accessor :th6_file - validates :bank_code, :iban, :queried_at, presence: true + validates :bank_code, :iban, presence: true FULLY_BINDED = 'fully_binded' PARTIALLY_BINDED = 'partially_binded' diff --git a/app/views/admin/bank_statements/_form.haml b/app/views/admin/bank_statements/_form.haml new file mode 100644 index 000000000..158d69e89 --- /dev/null +++ b/app/views/admin/bank_statements/_form.haml @@ -0,0 +1,19 @@ += form_for([:admin, @bank_statement], html: { class: 'form-horizontal' }) do |f| + = render 'shared/full_errors', object: @bank_statement + + .row + .col-md-8 + .form-group + .col-md-4.control-label + = f.label :bank_code + .col-md-8 + = f.text_field(:bank_code, class: 'form-control') + .form-group + .col-md-4.control-label + = f.label :iban + .col-md-8 + = f.text_field(:iban, class: 'form-control') + %hr + .row + .col-md-8.text-right + = button_tag(t(:save), class: 'btn btn-warning') diff --git a/app/views/admin/bank_statements/import.haml b/app/views/admin/bank_statements/import.haml new file mode 100644 index 000000000..e432abdf1 --- /dev/null +++ b/app/views/admin/bank_statements/import.haml @@ -0,0 +1,20 @@ +- content_for :actions do + = link_to(t(:back_to_bank_statements), admin_bank_statements_path, class: 'btn btn-default') += render 'shared/title', name: t(:import_th6_bank_statement) + += form_for(@bank_statement, url: { action: :create_from_import }, multipart: true) do |f| + = render 'shared/full_errors', object: @bank_statement + + .row + .col-md-8 + .form-group + .col-md-4.control-label + = f.label :th6_file + .col-md-8 + = f.file_field :th6_file + .col-md-4 + %p= t(:bank_statement_desc).html_safe + %hr + .row + .col-md-8.text-right + = button_tag(t(:save), class: 'btn btn-primary') diff --git a/app/views/admin/bank_statements/index.haml b/app/views/admin/bank_statements/index.haml index afb3a7be1..0810c15fe 100644 --- a/app/views/admin/bank_statements/index.haml +++ b/app/views/admin/bank_statements/index.haml @@ -1,5 +1,6 @@ - content_for :actions do - = link_to(t(:import), new_admin_bank_statement_path, class: 'btn btn-primary') + = link_to(t(:add), new_admin_bank_statement_path, class: 'btn btn-primary') + = link_to(t(:import), import_admin_bank_statements_path, class: 'btn btn-primary') = render 'shared/title', name: t(:bank_statements) .row diff --git a/app/views/admin/bank_statements/new.haml b/app/views/admin/bank_statements/new.haml index 452ffd264..4e5ff09d3 100644 --- a/app/views/admin/bank_statements/new.haml +++ b/app/views/admin/bank_statements/new.haml @@ -1,20 +1,6 @@ - content_for :actions do - = link_to(t(:back_to_bank_statements), admin_bank_statements_path, class: 'btn btn-default') -= render 'shared/title', name: t(:import_th6_bank_statement) + = link_to(t(:back), admin_bank_statements_path, class: 'btn btn-default') -= form_for([:admin, @bank_statement], multipart: true) do |f| - = render 'shared/full_errors', object: @bank_statement += render 'shared/title', name: t(:create_bank_statement) - .row - .col-md-8 - .form-group - .col-md-4.control-label - = f.label :th6_file - .col-md-8 - = f.file_field :th6_file - .col-md-4 - %p= t(:bank_statement_desc).html_safe - %hr - .row - .col-md-8.text-right - = button_tag(t(:save), class: 'btn btn-primary') += render 'form' diff --git a/app/views/admin/bank_statements/show.haml b/app/views/admin/bank_statements/show.haml index 6eb808515..c0051d447 100644 --- a/app/views/admin/bank_statements/show.haml +++ b/app/views/admin/bank_statements/show.haml @@ -1,5 +1,5 @@ - content_for :actions do - = link_to(t(:bind_invoices), bind_invoices_admin_bank_statement_path, + = link_to(t(:bind_invoices), bind_invoices_admin_bank_statement_path, class: 'btn btn-primary', method: :post) = link_to(t(:back_to_bank_statements), admin_bank_statements_path, class: 'btn btn-default') = render 'shared/title', name: t(:bank_statement) @@ -23,10 +23,11 @@ - sc = 'text-danger' if @bank_statement.not_binded? %dd{class: sc}= t(@bank_statement.status) - %dt= t(:queried_at) - %dd= l(@bank_statement.queried_at) + - if @bank_statement.queried_at + %dt= t(:queried_at) + %dd= l(@bank_statement.queried_at) - %dt= t(:imported_at) + %dt= t(:created_at) %dd= l(@bank_statement.created_at) - if @bank_statement.import_file_path diff --git a/config/locales/en.yml b/config/locales/en.yml index 2275b13b1..d46aa048e 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -831,3 +831,4 @@ en: domain_expiring: 'Domain expiring' domain_validation_rules: 'Domain validation rules' bank_statement_desc: 'Import file row will match only when matching following attributes:
ref number
payment amount
invoice number (the very first number in comment field)
.' + create_bank_statement: 'Create bank statement' diff --git a/config/routes.rb b/config/routes.rb index 5986f213f..7b7025179 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -161,6 +161,11 @@ Rails.application.routes.draw do resources :pricelists resources :bank_statements do + collection do + get 'import' + post 'create_from_import' + end + post 'bind_invoices', on: :member get 'download_import_file', on: :member end