Add UI to show and create financial transactions for the foodcoop

This commit is contained in:
Patrick Gansterer 2019-11-01 17:25:20 +01:00
parent 1a49bee42d
commit 602f663245
12 changed files with 66 additions and 29 deletions

View file

@ -18,7 +18,7 @@ class Finance::FinancialLinksController < Finance::BaseController
type: t('activerecord.models.financial_transaction'),
description: "#{ft.ordergroup_name}: #{ft.note}",
amount: ft.amount,
link_to: finance_ordergroup_transactions_path(ft.ordergroup),
link_to: finance_group_transactions_path(ft.ordergroup),
remove_path: remove_financial_transaction_finance_link_path(@financial_link, ft)
}
end

View file

@ -23,6 +23,7 @@ class Finance::FinancialTransactionsController < ApplicationController
@financial_transactions_all = @q.result(distinct: true).includes(:user).order(sort)
@financial_transactions_all = @financial_transactions_all.visible unless params[:show_hidden]
@financial_transactions_all = @financial_transactions_all.where(ordergroup_id: @ordergroup.id) if @ordergroup
@financial_transactions_all = @financial_transactions_all.where(ordergroup: nil) if @foodcoop
@financial_transactions = @financial_transactions_all.page(params[:page]).per(@per_page)
respond_to do |format|
@ -38,14 +39,22 @@ class Finance::FinancialTransactionsController < ApplicationController
end
def new
@financial_transaction = @ordergroup.financial_transactions.build
if @ordergroup
@financial_transaction = @ordergroup.financial_transactions.build
else
@financial_transaction = FinancialTransaction.new
end
end
def create
@financial_transaction = FinancialTransaction.new(params[:financial_transaction])
@financial_transaction.user = current_user
@financial_transaction.add_transaction!
redirect_to finance_ordergroup_transactions_url(@ordergroup), notice: I18n.t('finance.financial_transactions.controller.create.notice')
if @financial_transaction.ordergroup
@financial_transaction.add_transaction!
else
@financial_transaction.save!
end
redirect_to finance_group_transactions_path(@ordergroup), notice: I18n.t('finance.financial_transactions.controller.create.notice')
rescue ActiveRecord::RecordInvalid => error
flash.now[:alert] = error.message
render :action => :new
@ -54,7 +63,7 @@ class Finance::FinancialTransactionsController < ApplicationController
def destroy
transaction = FinancialTransaction.find(params[:id])
transaction.revert!(current_user)
redirect_to finance_ordergroup_transactions_url(transaction.ordergroup), notice: t('finance.financial_transactions.controller.destroy.notice')
redirect_to finance_group_transactions_path(transaction.ordergroup), notice: t('finance.financial_transactions.controller.destroy.notice')
end
def new_collection
@ -103,7 +112,11 @@ class Finance::FinancialTransactionsController < ApplicationController
protected
def find_ordergroup
@ordergroup = Ordergroup.include_transaction_class_sum.find(params[:ordergroup_id])
if params[:ordergroup_id]
@ordergroup = Ordergroup.include_transaction_class_sum.find(params[:ordergroup_id])
else
@foodcoop = true
end
end
end

View file

@ -2,6 +2,7 @@
#
# Methods added to this helper will be available to all templates in the application.
module ApplicationHelper
include PathHelper
def format_time(time = Time.now)
I18n.l(time, :format => "%d.%m.%Y %H:%M") unless time.nil?

View file

@ -0,0 +1,11 @@
module PathHelper
def finance_group_transactions_path(ordergroup)
if ordergroup
finance_ordergroup_transactions_path(ordergroup)
else
finance_foodcoop_financial_transactions_path
end
end
end

View file

@ -47,7 +47,7 @@ class FinancialTransaction < ApplicationRecord
rt.reverts = self
rt.user = user
rt.save!
ordergroup.update_balance!
ordergroup.update_balance! if ordergroup
end
end

View file

@ -34,7 +34,7 @@
- else
= format_time(t.created_on)
- if with_ordergroup
%td= h link_to t.ordergroup_name, finance_ordergroup_transactions_path(t.ordergroup)
%td= h link_to t.ordergroup_name, finance_group_transactions_path(t.ordergroup)
%td= h show_user(t.user)
- if FinancialTransactionType.has_multiple_types
%td= h t.financial_transaction_type.name
@ -50,7 +50,7 @@
- if with_hidden
%td.actions{style: 'width:1em'}
- unless t.hidden?
= link_to finance_ordergroup_transaction_path(t.ordergroup, t), method: :delete,
= link_to finance_transaction_path(t), method: :delete,
data: {confirm: t('.confirm_revert', name: t.note)}, title: t('.revert_title'),
class: 'btn btn-danger btn-mini' do
= glyph :remove

View file

@ -1,25 +1,27 @@
- title t('.title', name: @ordergroup.name)
- title @ordergroup ? t('.title', name: @ordergroup.name) : t('.title_foodcoop')
- content_for :actionbar do
= link_to t('.new_transaction'), new_finance_ordergroup_transaction_path(@ordergroup), class: 'btn btn-primary'
- url = @ordergroup ? new_finance_ordergroup_transaction_path(@ordergroup) : new_finance_foodcoop_financial_transaction_path
= link_to t('.new_transaction'), url, class: 'btn btn-primary'
- content_for :sidebar do
.well.well-small
%strong= t('.balance', balance: number_to_currency(@ordergroup.account_balance))
%br/
%small= t('.last_updated_at', when: distance_of_time_in_words(Time.now, @ordergroup.account_updated))
%p
- unless FoodsoftConfig[:charge_members_manually]
- if @ordergroup
- content_for :sidebar do
.well.well-small
%strong= t('.balance', balance: number_to_currency(@ordergroup.account_balance))
%br/
%small= t('.last_updated_at', when: distance_of_time_in_words(Time.now, @ordergroup.account_updated))
%p
%b= heading_helper(Ordergroup, :available_funds) + ':'
= number_to_currency(@ordergroup.get_available_funds)
- if FinancialTransactionClass.has_multiple_classes
- FinancialTransactionClass.sorted.each do |c|
- unless FoodsoftConfig[:charge_members_manually]
%p
%b= c.display + ':'
= number_to_currency(@ordergroup["sum_of_class_#{c.id}"])
%b= heading_helper(Ordergroup, :available_funds) + ':'
= number_to_currency(@ordergroup.get_available_funds)
- if FinancialTransactionClass.has_multiple_classes
- FinancialTransactionClass.sorted.each do |c|
%p
%b= c.display + ':'
= number_to_currency(@ordergroup["sum_of_class_#{c.id}"])
= render 'transactions_search', url: finance_ordergroup_transactions_path(@ordergroup)
= render 'transactions_search', url: finance_group_transactions_path(@ordergroup)
#transactions= render 'transactions', with_csv: true, with_hidden: true

View file

@ -1,8 +1,11 @@
- title t('.title')
%p!= t('.paragraph', name: @ordergroup.name)
- if @ordergroup
%p!= t('.paragraph', name: @ordergroup.name)
- else
%p!= t('.paragraph_foodcoop')
= simple_form_for @financial_transaction, :url => finance_ordergroup_transactions_path(@ordergroup),
= simple_form_for @financial_transaction, :url => finance_group_transactions_path(@ordergroup),
:validate => true do |f|
= f.hidden_field :ordergroup_id
- if FinancialTransactionType.has_multiple_types
@ -11,4 +14,4 @@
= f.input :note, :as => :text
.form-actions
= f.submit class: 'btn btn-primary'
= link_to t('ui.or_cancel'), finance_ordergroup_transactions_path(@ordergroup)
= link_to t('ui.or_cancel'), finance_group_transactions_path(@ordergroup)

View file

@ -2,6 +2,7 @@
- content_for :actionbar do
= link_to t('.show_all'), finance_transactions_path, class: 'btn'
= link_to t('.show_foodcoop'), finance_foodcoop_financial_transactions_path, class: 'btn'
= link_to t('.new_transaction'), finance_new_transaction_collection_path, class: 'btn btn-primary'
.well.well-small