1a49bee42d
This will allow us to add accounting for the foodcoop itself, to support listing for spendings independent of the order (e.g. rent, electricity).
101 lines
3.5 KiB
Ruby
101 lines
3.5 KiB
Ruby
class Finance::FinancialLinksController < Finance::BaseController
|
|
before_action :find_financial_link, except: [:create]
|
|
|
|
def show
|
|
@items = @financial_link.bank_transactions.map do |bt|
|
|
{
|
|
date: bt.date,
|
|
type: t('activerecord.models.bank_transaction'),
|
|
description: bt.text,
|
|
amount: bt.amount,
|
|
link_to: finance_bank_transaction_path(bt),
|
|
remove_path: remove_bank_transaction_finance_link_path(@financial_link, bt)
|
|
}
|
|
end
|
|
@items += @financial_link.financial_transactions.map do |ft|
|
|
{
|
|
date: ft.created_on,
|
|
type: t('activerecord.models.financial_transaction'),
|
|
description: "#{ft.ordergroup_name}: #{ft.note}",
|
|
amount: ft.amount,
|
|
link_to: finance_ordergroup_transactions_path(ft.ordergroup),
|
|
remove_path: remove_financial_transaction_finance_link_path(@financial_link, ft)
|
|
}
|
|
end
|
|
@items += @financial_link.invoices.includes(:supplier).map do |invoice|
|
|
{
|
|
date: invoice.date || invoice.created_at,
|
|
type: t('activerecord.models.invoice'),
|
|
description: "#{invoice.supplier.name}: #{invoice.number}",
|
|
amount: invoice.amount,
|
|
link_to: finance_invoice_path(invoice),
|
|
remove_path: remove_invoice_finance_link_path(@financial_link, invoice)
|
|
}
|
|
end
|
|
@items.sort_by! { |item| item[:date] }
|
|
end
|
|
|
|
def create
|
|
@financial_link = FinancialLink.new
|
|
if params[:bank_transaction] then
|
|
bank_transaction = BankTransaction.find(params[:bank_transaction])
|
|
bank_transaction.update_attribute :financial_link, @financial_link
|
|
end
|
|
redirect_to finance_link_url(@financial_link), notice: t('.notice')
|
|
end
|
|
|
|
def index_bank_transaction
|
|
@bank_transactions = BankTransaction.without_financial_link
|
|
end
|
|
|
|
def add_bank_transaction
|
|
bank_transaction = BankTransaction.find(params[:bank_transaction])
|
|
bank_transaction.update_attribute :financial_link, @financial_link
|
|
redirect_to finance_link_url(@financial_link), notice: t('.notice')
|
|
end
|
|
|
|
def remove_bank_transaction
|
|
bank_transaction = BankTransaction.find(params[:bank_transaction])
|
|
bank_transaction.update_attribute :financial_link, nil
|
|
redirect_to finance_link_url(@financial_link), notice: t('.notice')
|
|
end
|
|
|
|
def index_financial_transaction
|
|
@financial_transactions = FinancialTransaction.without_financial_link.includes(:financial_transaction_type, :ordergroup)
|
|
end
|
|
|
|
def add_financial_transaction
|
|
financial_transaction = FinancialTransaction.find(params[:financial_transaction])
|
|
financial_transaction.update_attribute :financial_link, @financial_link
|
|
redirect_to finance_link_url(@financial_link), notice: t('.notice')
|
|
end
|
|
|
|
def remove_financial_transaction
|
|
financial_transaction = FinancialTransaction.find(params[:financial_transaction])
|
|
financial_transaction.update_attribute :financial_link, nil
|
|
redirect_to finance_link_url(@financial_link), notice: t('.notice')
|
|
end
|
|
|
|
def index_invoice
|
|
@invoices = Invoice.without_financial_link.includes(:supplier)
|
|
end
|
|
|
|
def add_invoice
|
|
invoice = Invoice.find(params[:invoice])
|
|
invoice.update_attribute :financial_link, @financial_link
|
|
redirect_to finance_link_url(@financial_link), notice: t('.notice')
|
|
end
|
|
|
|
def remove_invoice
|
|
invoice = Invoice.find(params[:invoice])
|
|
invoice.update_attribute :financial_link, nil
|
|
redirect_to finance_link_url(@financial_link), notice: t('.notice')
|
|
end
|
|
|
|
protected
|
|
|
|
def find_financial_link
|
|
@financial_link = FinancialLink.find(params[:id])
|
|
end
|
|
|
|
end
|