Add CSV downloads for BankTransaction and Invoice
This commit is contained in:
parent
e0c0834690
commit
9f2e630266
6 changed files with 96 additions and 6 deletions
|
@ -17,9 +17,16 @@ class Finance::BankTransactionsController < ApplicationController
|
||||||
end
|
end
|
||||||
|
|
||||||
@bank_account = BankAccount.find(params[:bank_account_id])
|
@bank_account = BankAccount.find(params[:bank_account_id])
|
||||||
@bank_transactions = @bank_account.bank_transactions.order(sort).includes(:financial_link)
|
@bank_transactions_all = @bank_account.bank_transactions.order(sort).includes(:financial_link)
|
||||||
@bank_transactions = @bank_transactions.where('reference LIKE ? OR text LIKE ?', "%#{params[:query]}%", "%#{params[:query]}%") unless params[:query].nil?
|
@bank_transactions_all = @bank_transactions_all.where('reference LIKE ? OR text LIKE ?', "%#{params[:query]}%", "%#{params[:query]}%") unless params[:query].nil?
|
||||||
@bank_transactions = @bank_transactions.page(params[:page]).per(@per_page)
|
@bank_transactions = @bank_transactions_all.page(params[:page]).per(@per_page)
|
||||||
|
|
||||||
|
respond_to do |format|
|
||||||
|
format.js; format.html { render }
|
||||||
|
format.csv do
|
||||||
|
send_data BankTransactionsCsv.new(@bank_transactions_all).to_csv, filename: 'transactions.csv', type: 'text/csv'
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def show
|
def show
|
||||||
|
|
|
@ -5,7 +5,15 @@ class Finance::InvoicesController < ApplicationController
|
||||||
before_action :ensure_can_edit, only: [:edit, :update, :destroy]
|
before_action :ensure_can_edit, only: [:edit, :update, :destroy]
|
||||||
|
|
||||||
def index
|
def index
|
||||||
@invoices = Invoice.includes(:supplier, :deliveries, :orders).order('date DESC').page(params[:page]).per(@per_page)
|
@invoices_all = Invoice.includes(:supplier, :deliveries, :orders).order('date DESC')
|
||||||
|
@invoices = @invoices_all.page(params[:page]).per(@per_page)
|
||||||
|
|
||||||
|
respond_to do |format|
|
||||||
|
format.js; format.html { render }
|
||||||
|
format.csv do
|
||||||
|
send_data InvoicesCsv.new(@invoices_all).to_csv, filename: 'invoices.csv', type: 'text/csv'
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def unpaid
|
def unpaid
|
||||||
|
|
|
@ -1,4 +1,8 @@
|
||||||
.pull-right
|
.pull-right
|
||||||
|
.btn-group
|
||||||
|
= link_to url_for(query: params[:query], format: :csv), class: 'btn' do
|
||||||
|
= glyph :download
|
||||||
|
CSV
|
||||||
- if @bank_transactions.total_pages > 1
|
- if @bank_transactions.total_pages > 1
|
||||||
.btn-group= items_per_page wrap: false
|
.btn-group= items_per_page wrap: false
|
||||||
= pagination_links_remote @bank_transactions
|
= pagination_links_remote @bank_transactions
|
||||||
|
|
|
@ -1,4 +1,9 @@
|
||||||
- if Invoice.count > 20
|
.pull-right
|
||||||
|
.btn-group
|
||||||
|
= link_to url_for(query: params[:query], format: :csv), class: 'btn' do
|
||||||
|
= glyph :download
|
||||||
|
CSV
|
||||||
|
- if @invoices.total_pages > 1
|
||||||
= items_per_page
|
= items_per_page
|
||||||
= pagination_links_remote @invoices
|
= pagination_links_remote @invoices
|
||||||
|
|
||||||
|
|
29
lib/bank_transactions_csv.rb
Normal file
29
lib/bank_transactions_csv.rb
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
require 'csv'
|
||||||
|
|
||||||
|
class BankTransactionsCsv < RenderCSV
|
||||||
|
include ApplicationHelper
|
||||||
|
|
||||||
|
def header
|
||||||
|
[
|
||||||
|
BankTransaction.human_attribute_name(:external_id),
|
||||||
|
BankTransaction.human_attribute_name(:date),
|
||||||
|
BankTransaction.human_attribute_name(:amount),
|
||||||
|
BankTransaction.human_attribute_name(:iban),
|
||||||
|
BankTransaction.human_attribute_name(:reference),
|
||||||
|
BankTransaction.human_attribute_name(:text)
|
||||||
|
]
|
||||||
|
end
|
||||||
|
|
||||||
|
def data
|
||||||
|
@object.each do |t|
|
||||||
|
yield [
|
||||||
|
t.external_id,
|
||||||
|
t.date,
|
||||||
|
t.amount,
|
||||||
|
t.iban,
|
||||||
|
t.reference,
|
||||||
|
t.text
|
||||||
|
]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
37
lib/invoices_csv.rb
Normal file
37
lib/invoices_csv.rb
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
require 'csv'
|
||||||
|
|
||||||
|
class InvoicesCsv < RenderCSV
|
||||||
|
include ApplicationHelper
|
||||||
|
|
||||||
|
def header
|
||||||
|
[
|
||||||
|
Invoice.human_attribute_name(:created_at),
|
||||||
|
Invoice.human_attribute_name(:created_by),
|
||||||
|
Invoice.human_attribute_name(:date),
|
||||||
|
Invoice.human_attribute_name(:supplier),
|
||||||
|
Invoice.human_attribute_name(:number),
|
||||||
|
Invoice.human_attribute_name(:amount),
|
||||||
|
Invoice.human_attribute_name(:deposit),
|
||||||
|
Invoice.human_attribute_name(:deposit_credit),
|
||||||
|
Invoice.human_attribute_name(:paid_on),
|
||||||
|
Invoice.human_attribute_name(:note)
|
||||||
|
]
|
||||||
|
end
|
||||||
|
|
||||||
|
def data
|
||||||
|
@object.each do |t|
|
||||||
|
yield [
|
||||||
|
t.created_at,
|
||||||
|
show_user(t.created_by),
|
||||||
|
t.date,
|
||||||
|
t.supplier.name,
|
||||||
|
t.number,
|
||||||
|
t.amount,
|
||||||
|
t.deposit,
|
||||||
|
t.deposit_credit,
|
||||||
|
t.paid_on,
|
||||||
|
t.note,
|
||||||
|
]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
Loading…
Reference in a new issue