foodsoft/app/controllers/finance/financial_links_controller.rb
Patrick Gansterer 1a49bee42d Adopt model to allow FinancialTransaction without an ordergroup
This will allow us to add accounting for the foodcoop itself, to support
listing for spendings independent of the order (e.g. rent, electricity).
2020-07-29 11:43:31 +02:00

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