has_accounts_engine 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- data/MIT-LICENSE +20 -0
- data/README.md +24 -0
- data/app/controllers/accounts_controller.rb +52 -0
- data/app/controllers/bank_accounts_controller.rb +3 -0
- data/app/controllers/banks_controller.rb +3 -0
- data/app/controllers/bookings_controller.rb +67 -0
- data/app/helpers/account_helper.rb +6 -0
- data/app/views/accounts/_account.html.haml +12 -0
- data/app/views/accounts/_booking_item.html.haml +15 -0
- data/app/views/accounts/_booking_list_footer.html.haml +2 -0
- data/app/views/accounts/_booking_list_header.html.haml +8 -0
- data/app/views/accounts/_booking_list_paginate.html.haml +5 -0
- data/app/views/accounts/_booking_list_saldo.html.haml +8 -0
- data/app/views/accounts/_booking_list_turnover.html.haml +8 -0
- data/app/views/accounts/_carry_booking.html.haml +9 -0
- data/app/views/accounts/_edit_booking.html.haml +14 -0
- data/app/views/accounts/_edit_bookings.html.haml +15 -0
- data/app/views/accounts/_form.html.haml +7 -0
- data/app/views/accounts/_list_footer.html.haml +2 -0
- data/app/views/accounts/_list_header.html.haml +5 -0
- data/app/views/accounts/_show.html.haml +9 -0
- data/app/views/accounts/_show_bookings.html.haml +19 -0
- data/app/views/accounts/edit_bookings.html.haml +5 -0
- data/app/views/accounts/edit_bookings.js.erb +2 -0
- data/app/views/accounts/index.html.haml +9 -0
- data/app/views/accounts/show.html.haml +10 -0
- data/app/views/bank_accounts/_bank_account.html.haml +1 -0
- data/app/views/bank_accounts/_form.html.haml +10 -0
- data/app/views/banks/_bank.html.haml +3 -0
- data/app/views/banks/_form.html.haml +12 -0
- data/app/views/bookings/_booking.html.haml +17 -0
- data/app/views/bookings/_form.html.haml +28 -0
- data/app/views/bookings/_list.html.haml +16 -0
- data/app/views/bookings/_new_form.html.haml +5 -0
- data/app/views/bookings/_sidebar.html.haml +6 -0
- data/app/views/bookings/_simple_form.html.haml +25 -0
- data/app/views/bookings/new.html.haml +8 -0
- data/app/views/bookings/select.html.haml +11 -0
- data/app/views/bookings/show.html.haml +7 -0
- data/app/views/bookings/simple_edit.html.haml +4 -0
- data/config/locales/de.yml +83 -0
- data/config/locales/en.yml +65 -0
- data/config/routes.rb +44 -0
- data/lib/has_accounts_engine.rb +1 -0
- data/lib/has_accounts_engine/railtie.rb +8 -0
- data/lib/has_accounts_engine/version.rb +3 -0
- metadata +192 -0
data/MIT-LICENSE
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright (c) 2008 [name of plugin creator]
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
has_accounts_engine
|
2
|
+
===================
|
3
|
+
|
4
|
+
[![Build Status](https://secure.travis-ci.org/huerlisi/has_accounts_engine.png)](http://travis-ci.org/huerlisi/has_accounts_engine)
|
5
|
+
|
6
|
+
HasAccountsEngine is a full featured Rails 3 gem accompinying has_accounts with controllers, views...
|
7
|
+
|
8
|
+
|
9
|
+
Install
|
10
|
+
=======
|
11
|
+
|
12
|
+
In Rails 3 simply add
|
13
|
+
|
14
|
+
gem 'has_accounts_engine'
|
15
|
+
|
16
|
+
License
|
17
|
+
=======
|
18
|
+
|
19
|
+
* Copyright (c) 2008 Agrabah <http://www.agrabah.ch>
|
20
|
+
* Copyright (c) 2008-2013 Simon Hürlimann <simon.huerlimann@cyt.ch>
|
21
|
+
* Copyright (c) 2010-2013 CyT <http://www.cyt.ch>
|
22
|
+
* Copyright (c) 2008-2010 ZytoLabor <http://www.zyto-labor.com>
|
23
|
+
|
24
|
+
Released under the MIT license.
|
@@ -0,0 +1,52 @@
|
|
1
|
+
class AccountsController < AuthorizedController
|
2
|
+
# Scopes
|
3
|
+
has_scope :by_value_period, :using => [:from, :to], :default => proc { |c| c.session[:has_scope] }
|
4
|
+
has_scope :by_text
|
5
|
+
|
6
|
+
has_scope :page, :only => :index
|
7
|
+
|
8
|
+
def index
|
9
|
+
@accounts = apply_scopes(Account).includes(:account_type).includes(:credit_bookings, :credit_bookings)
|
10
|
+
end
|
11
|
+
|
12
|
+
def show
|
13
|
+
@account = Account.find(params[:id])
|
14
|
+
@bookings = apply_scopes(Booking).includes(:debit_account => :account_type, :credit_account => :account_type).by_account(@account)
|
15
|
+
@bookings = @bookings.page(params[:page]) || 1
|
16
|
+
|
17
|
+
if params[:only_credit_bookings]
|
18
|
+
@bookings = @bookings.where(:credit_account_id => @account.id)
|
19
|
+
end
|
20
|
+
if params[:only_debit_bookings]
|
21
|
+
@bookings = @bookings.where(:debit_account_id => @account.id)
|
22
|
+
end
|
23
|
+
@bookings = @bookings
|
24
|
+
@carry_booking = @bookings.all.first
|
25
|
+
|
26
|
+
show!
|
27
|
+
end
|
28
|
+
|
29
|
+
def csv_bookings
|
30
|
+
@account = Account.find(params[:id])
|
31
|
+
@bookings = apply_scopes(Booking).by_account(@account)
|
32
|
+
send_csv @bookings, :only => [:value_date, :title, :comments, :amount, 'credit_account.code', 'debit_account.code'], :filename => "%s-%s.csv" % [@account.code, @account.title]
|
33
|
+
end
|
34
|
+
|
35
|
+
def edit_bookings
|
36
|
+
@account = Account.find(params[:id])
|
37
|
+
@bookings = apply_scopes(Booking).by_account(@account)
|
38
|
+
end
|
39
|
+
|
40
|
+
def update_bookings
|
41
|
+
bookings = params[:bookings]
|
42
|
+
|
43
|
+
bookings.each do |id, attributes|
|
44
|
+
attributes.merge!({:credit_account_id => Account.find_by_code(attributes[:credit_account_code]).id})
|
45
|
+
attributes.merge!({:debit_account_id => Account.find_by_code(attributes[:debit_account_code]).id})
|
46
|
+
Booking.find(id).update_attributes(attributes)
|
47
|
+
end
|
48
|
+
|
49
|
+
account = Account.find(params[:id])
|
50
|
+
redirect_to account
|
51
|
+
end
|
52
|
+
end
|
@@ -0,0 +1,67 @@
|
|
1
|
+
class BookingsController < AuthorizedController
|
2
|
+
# Scopes
|
3
|
+
has_scope :by_value_period, :using => [:from, :to], :default => proc { |c| c.session[:has_scope] }
|
4
|
+
has_scope :by_text
|
5
|
+
|
6
|
+
# Actions
|
7
|
+
def index
|
8
|
+
# @bookings = apply_scopes(Booking).accessible_by(current_ability, :list).includes(:credit_account, :debit_account).paginate(:page => params[:page], :per_page => params[:per_page])
|
9
|
+
index!
|
10
|
+
end
|
11
|
+
|
12
|
+
def new
|
13
|
+
@booking = Booking.new(:value_date => Date.today)
|
14
|
+
# Only include base class records
|
15
|
+
@booking_templates = BookingTemplate.where(:type => [nil, 'BookingTemplate']).where("NOT(code LIKE '%:%')").paginate(:page => params[:page])
|
16
|
+
new!
|
17
|
+
end
|
18
|
+
|
19
|
+
def select_booking
|
20
|
+
@booking = Booking.find(params[:id]).dup
|
21
|
+
|
22
|
+
# Clear reference
|
23
|
+
@booking.reference = nil
|
24
|
+
|
25
|
+
increment_booking_code
|
26
|
+
# Take value date from form
|
27
|
+
@booking.value_date = params[:booking][:value_date]
|
28
|
+
|
29
|
+
render :action => 'simple_edit'
|
30
|
+
end
|
31
|
+
|
32
|
+
def simple_edit
|
33
|
+
new!
|
34
|
+
end
|
35
|
+
|
36
|
+
def select
|
37
|
+
@booking = Booking.new(params[:booking])
|
38
|
+
increment_booking_code
|
39
|
+
@booking_templates = BookingTemplate.where(:type => [nil, 'BookingTemplate']).where("NOT(code LIKE '%:%')").paginate(:page => params[:page])
|
40
|
+
@bookings = Booking.where("title LIKE ?", '%' + @booking.title + '%').order('value_date DESC').paginate(:page => params[:page])
|
41
|
+
end
|
42
|
+
|
43
|
+
def create
|
44
|
+
@booking = Booking.new(params[:booking])
|
45
|
+
|
46
|
+
create! do |success, failure|
|
47
|
+
success.html do
|
48
|
+
redirect_to new_booking_path
|
49
|
+
end
|
50
|
+
failure.html {render 'edit'}
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
def copy
|
55
|
+
original_booking = Booking.find(params[:id])
|
56
|
+
|
57
|
+
@booking = original_booking.dup
|
58
|
+
|
59
|
+
render 'edit'
|
60
|
+
end
|
61
|
+
|
62
|
+
private
|
63
|
+
|
64
|
+
def increment_booking_code
|
65
|
+
@booking.code = (Booking.maximum(:code) || 0) + 1
|
66
|
+
end
|
67
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
%tr[account]
|
2
|
+
%td= account.code
|
3
|
+
%td= link_to account.title, url_for(account), {'data-href-container' => 'tr'}, :by_value_period => params[:by_value_period]
|
4
|
+
- if @date
|
5
|
+
%td{:style => "text-align: right"}= currency_fmt(account.saldo(@date))
|
6
|
+
- elsif params[:by_value_period]
|
7
|
+
%td{:style => "text-align: right"}= currency_fmt(account.saldo(params[:by_value_period][:from]..params[:by_value_period][:to]))
|
8
|
+
- else
|
9
|
+
%td{:style => "text-align: right"}= currency_fmt(account.saldo)
|
10
|
+
%td.action-links
|
11
|
+
= list_link_for(:edit, account)
|
12
|
+
= list_link_for(:delete, account)
|
@@ -0,0 +1,15 @@
|
|
1
|
+
%tr[@booking]
|
2
|
+
%td= @booking.value_date
|
3
|
+
%td
|
4
|
+
= link_to @booking.title, @booking, {'data-href-container' => 'tr'}
|
5
|
+
- if @booking.comments.present?
|
6
|
+
%hr{:style => "height: 1px; margin: 0"}/
|
7
|
+
%i= @booking.comments
|
8
|
+
%td= link_to @booking.reference.to_s(:reference), @booking.reference unless @booking.reference.nil?
|
9
|
+
%td.currency= (@booking.credit_account == @account) ? currency_fmt(@booking.amount) : content_tag('i', link_to(@booking.credit_account.code, account_path(@booking.credit_account), :title => @booking.credit_account.title))
|
10
|
+
%td.currency= (@booking.debit_account == @account) ? currency_fmt(@booking.amount) : content_tag('i', link_to(@booking.debit_account.code, account_path(@booking.debit_account), :title => @booking.debit_account.title))
|
11
|
+
%td.currency= currency_fmt(@saldo)
|
12
|
+
%td.action-links
|
13
|
+
= list_link_for(:edit, [@account, @booking])
|
14
|
+
= list_link_for(:delete, [@account, @booking], :remote => true)
|
15
|
+
= list_link_for(:copy, @booking)
|
@@ -0,0 +1,5 @@
|
|
1
|
+
%tr
|
2
|
+
- ## TODO: See http://groups.google.com/group/will_paginate/browse_thread/thread/5d702999d78e47e5
|
3
|
+
- url_params = {:controller => 'accounts', :action => 'show', :id => params[:account_id] || params[:id]}
|
4
|
+
%th{:colspan => "6", :style => "text-align: right"}= will_paginate @bookings, :params => url_params.merge(:query => params[:query])
|
5
|
+
%th
|
@@ -0,0 +1,8 @@
|
|
1
|
+
- credit_turnover, debit_turnover = @account.turnover(@bookings)
|
2
|
+
%tr#booking_list_turnover{:style => "border-top: double 2px black"}
|
3
|
+
%td{:colspan => "3"}
|
4
|
+
Umsatz (#{h @bookings.first.value_date} bis #{h @bookings.last.value_date})
|
5
|
+
%td{:style => "text-align: right"}= currency_fmt(credit_turnover)
|
6
|
+
%td{:style => "text-align: right"}= currency_fmt(debit_turnover)
|
7
|
+
%td
|
8
|
+
%td
|
@@ -0,0 +1,14 @@
|
|
1
|
+
%tr
|
2
|
+
= f.fields_for "", edit_booking do |f|
|
3
|
+
%td.span2= f.text_field :value_date, :style => 'width: 96%'
|
4
|
+
%td.span6
|
5
|
+
= f.text_field :title, :style => 'width: 98%'
|
6
|
+
= f.text_field :comments, :style => 'width: 98%'
|
7
|
+
= f.hidden_field :reference_type, :value => 'Invoice'
|
8
|
+
= f.select :reference_id, suggested_invoices_for_booking(f.object), :include_blank => true, :style => 'width: 98%', :class => 'combobox'
|
9
|
+
%td.span1= f.text_field :amount, :style => 'width: 94%'
|
10
|
+
|
11
|
+
%td.span1= f.association :credit_account, :collection => accounts_as_collection(Account.all), :as => :combobox, :style => 'width: 94%', :wrapper => :inline
|
12
|
+
%td.span1= f.association :debit_account, :collection => accounts_as_collection(Account.all), :as => :combobox, :style => 'width: 94%', :wrapper => :inline
|
13
|
+
|
14
|
+
%td{:style => 'display:none'}= f.hidden_field :id
|
@@ -0,0 +1,15 @@
|
|
1
|
+
- url_params = {:controller => 'accounts', :action => 'show', :id => params[:account_id] || params[:id]}
|
2
|
+
= paginated_section @bookings, :params => url_params.merge(:query => params[:query]) do
|
3
|
+
= simple_form_for :bookings, :url => update_bookings_account_path do |f|
|
4
|
+
%table.table.table-striped
|
5
|
+
%thead
|
6
|
+
%tr
|
7
|
+
%th= t_attr :value_date, Booking
|
8
|
+
%th= t_attr :title, Booking
|
9
|
+
%th= t_attr :amount, Booking
|
10
|
+
%th= t_attr :credit_account, Booking
|
11
|
+
%th= t_attr :debit_account, Booking
|
12
|
+
%tbody
|
13
|
+
= render :partial => 'edit_booking', :collection => @bookings, :locals => {:f => f}
|
14
|
+
|
15
|
+
= f.button :submit
|
@@ -0,0 +1,9 @@
|
|
1
|
+
.tabbable
|
2
|
+
%ul.nav.nav-tabs
|
3
|
+
%li.active= link_to t_title(:journal, Account), '#tab-bookings', {:data => {:toggle => 'tab'}}
|
4
|
+
%li= link_to t_title(:info, Account), '#tab-info', {:data => {:toggle => 'tab'}}
|
5
|
+
%li= link_to t_title(:list, Attachment), '#tab-attachments', {:data => {:toggle => 'tab'}}
|
6
|
+
|
7
|
+
.tab-content
|
8
|
+
#tab-bookings.tab-pane.active= render 'show_bookings'
|
9
|
+
#tab-info.tab-pane= render "form"
|
@@ -0,0 +1,19 @@
|
|
1
|
+
- url_params = {:controller => 'accounts', :action => 'show', :id => params[:account_id] || params[:id]}
|
2
|
+
|
3
|
+
%table.table.table-striped.bookings.collection
|
4
|
+
%thead
|
5
|
+
= render 'accounts/booking_list_header'
|
6
|
+
- @saldo = @account.saldo(@carry_booking, false)
|
7
|
+
%tbody
|
8
|
+
= render 'accounts/carry_booking' unless @saldo == 0
|
9
|
+
|
10
|
+
- for @booking in @bookings
|
11
|
+
- amount = @booking.amount
|
12
|
+
- amount = -(amount) if @account.is_liability_account?
|
13
|
+
- @saldo -= amount if @booking.debit_account == @account
|
14
|
+
- @saldo += amount if @booking.credit_account == @account
|
15
|
+
= render 'accounts/booking_item'
|
16
|
+
%tfoot
|
17
|
+
= render 'accounts/booking_list_footer' unless @bookings.empty?
|
18
|
+
= paginate @bookings
|
19
|
+
|
@@ -0,0 +1,10 @@
|
|
1
|
+
.contextual
|
2
|
+
= icon_link_to 'only_credit_bookings', url_for(:only_credit_bookings => true) unless params[:only_credit_bookings]
|
3
|
+
= icon_link_to 'only_debit_bookings', url_for(:only_debit_bookings => true) unless params[:only_debit_bookings]
|
4
|
+
= icon_link_to 'all_bookings', @account if params[:only_credit_bookings] || params[:only_debit_bookings]
|
5
|
+
= contextual_links_for
|
6
|
+
|
7
|
+
= boot_page_title
|
8
|
+
= render 'show'
|
9
|
+
|
10
|
+
= render 'bookings/sidebar'
|
@@ -0,0 +1 @@
|
|
1
|
+
= render 'accounts/account', :account => bank_account
|
@@ -0,0 +1,17 @@
|
|
1
|
+
- item_action ||= lambda{|object| url_for(object)}
|
2
|
+
|
3
|
+
%tr[booking]
|
4
|
+
%td= booking.value_date
|
5
|
+
%td
|
6
|
+
= link_to booking.title, item_action.call(booking), 'data-href-container' => 'tr'
|
7
|
+
- if booking.comments.present?
|
8
|
+
%hr{:style => "height: 1px; margin: 0"}/
|
9
|
+
%i= booking.comments
|
10
|
+
%td= link_to booking.reference.to_s(:reference), booking.reference unless booking.reference.nil?
|
11
|
+
%td= link_to booking.credit_account.code, account_path(booking.credit_account), :title => booking.credit_account.title unless booking.credit_account.nil?
|
12
|
+
%td= link_to booking.debit_account.code, account_path(booking.debit_account), :title => booking.debit_account.title unless booking.debit_account.nil?
|
13
|
+
%td.currency= currency_fmt(booking.amount)
|
14
|
+
%td.action-links
|
15
|
+
= list_link_for(:edit, booking)
|
16
|
+
= list_link_for(:delete, booking, :remote => true)
|
17
|
+
= list_link_for(:copy, booking)
|
@@ -0,0 +1,28 @@
|
|
1
|
+
= simple_form_for @booking do |f|
|
2
|
+
.row-fluid
|
3
|
+
.span6
|
4
|
+
= f.input :title, :input_html => {"data-autofocus" => true}
|
5
|
+
.span6
|
6
|
+
= f.input :value_date, :as => :date_field
|
7
|
+
.row-fluid
|
8
|
+
.span6
|
9
|
+
= f.input :amount, :as => :string, :input_html => {:size => 12}
|
10
|
+
.span6
|
11
|
+
= f.input :code
|
12
|
+
|
13
|
+
.row-fluid
|
14
|
+
.span6
|
15
|
+
= f.association :credit_account, :collection => accounts_as_collection(Account.all), :as => :combobox
|
16
|
+
.span6
|
17
|
+
= f.association :debit_account, :collection => accounts_as_collection(Account.all), :as => :combobox
|
18
|
+
|
19
|
+
.row-fluid
|
20
|
+
.span12
|
21
|
+
= f.input :comments, :input_html => {:rows => 4, :class => 'span12'}
|
22
|
+
|
23
|
+
.row-fluid
|
24
|
+
.span12
|
25
|
+
= f.input :reference_type, :as => :hidden, :input_html => {:value => 'Invoice'}
|
26
|
+
//= f.association :reference, :collection => suggested_invoices_for_booking(@booking, :include_all => true), :as => :combobox, :include_blank => true
|
27
|
+
|
28
|
+
= f.button :submit
|
@@ -0,0 +1,16 @@
|
|
1
|
+
%table.table.table-striped.bookings.collection
|
2
|
+
%thead
|
3
|
+
%tr
|
4
|
+
%th= t_attr :valuta
|
5
|
+
%th= t_attr :title
|
6
|
+
%th= t_attr :reference
|
7
|
+
%th= t_attr :credit_account
|
8
|
+
%th= t_attr :debit_account
|
9
|
+
%th.currency= t_attr 'amount'
|
10
|
+
%th.action-links
|
11
|
+
%tbody
|
12
|
+
= render collection, :item_action => (item_action ||= nil)
|
13
|
+
|
14
|
+
= paginate collection
|
15
|
+
|
16
|
+
= render 'bookings/sidebar'
|
@@ -0,0 +1,5 @@
|
|
1
|
+
= simple_form_for @booking, :url => select_bookings_path do |f|
|
2
|
+
= hidden_field_tag :stage, 'select'
|
3
|
+
= f.input :title, :input_html => {'data-autofocus' => true}
|
4
|
+
= f.input :value_date, :as => :date_field, :input_html => {:size => 10, :style => 'text-align: right'}
|
5
|
+
= f.button :submit
|
@@ -0,0 +1,6 @@
|
|
1
|
+
- filter_name = :by_value_period
|
2
|
+
- content_for :sidebar do
|
3
|
+
- filters = current_tenant.fiscal_years.reverse.map do |period|
|
4
|
+
- value = {"from" => period[:from].to_s(:db), "to" => period[:to].to_s(:db)}
|
5
|
+
- {:value => value, :title => period[:to].year}
|
6
|
+
= boot_nav_filter(filter_name, [{:title => :all, :value => nil}] + filters)
|
@@ -0,0 +1,25 @@
|
|
1
|
+
= simple_form_for @booking do |f|
|
2
|
+
|
3
|
+
.row-fluid
|
4
|
+
.span6
|
5
|
+
= f.input :title, :input_html => {"data-autofocus" => true}
|
6
|
+
.span6
|
7
|
+
= f.input :value_date, :as => :date_field
|
8
|
+
.row-fluid
|
9
|
+
.span6
|
10
|
+
= f.input :amount, :as => :string, :input_html => {:size => 12}
|
11
|
+
.span6
|
12
|
+
= f.input :code
|
13
|
+
|
14
|
+
.row-fluid
|
15
|
+
.span6
|
16
|
+
= f.association :credit_account, :collection => accounts_as_collection(Account.all), :as => :combobox
|
17
|
+
.span6
|
18
|
+
= f.association :debit_account, :collection => accounts_as_collection(Account.all), :as => :combobox
|
19
|
+
|
20
|
+
.row-fluid
|
21
|
+
.span12
|
22
|
+
= f.input :comments, :input_html => {:rows => 4}
|
23
|
+
|
24
|
+
= f.button :submit
|
25
|
+
|
@@ -0,0 +1,11 @@
|
|
1
|
+
= contextual_links
|
2
|
+
|
3
|
+
= boot_page_title :new
|
4
|
+
|
5
|
+
= render 'form'
|
6
|
+
|
7
|
+
%h3= t_model(BookingTemplate)
|
8
|
+
= render 'booking_templates/list', :item_action => lambda{|object| new_booking_booking_template_path(object)}
|
9
|
+
|
10
|
+
%h3= t_model(Booking)
|
11
|
+
= render 'bookings/list', :item_action => lambda{|object| select_booking_booking_path(object, :booking => params[:booking])}
|
@@ -0,0 +1,83 @@
|
|
1
|
+
# German locale
|
2
|
+
de:
|
3
|
+
activerecord:
|
4
|
+
models:
|
5
|
+
account: Konto
|
6
|
+
bank_account: Bankkonto
|
7
|
+
bank: Bank
|
8
|
+
account_type: Kontentyp
|
9
|
+
booking: Buchung
|
10
|
+
|
11
|
+
attributes:
|
12
|
+
account:
|
13
|
+
code: Nr.
|
14
|
+
title: Titel
|
15
|
+
saldo: Saldo
|
16
|
+
account_type: Kontentyp
|
17
|
+
bank_account:
|
18
|
+
number: Kontokorrent-Nr.
|
19
|
+
iban: IBAN
|
20
|
+
pc_id: VESR-Teilnehmer-Nr.
|
21
|
+
esr_id: VESR-Identifikations-Nr.
|
22
|
+
bank:
|
23
|
+
clearing: Clearing-Nr.
|
24
|
+
swift: SWIFT-Nr.
|
25
|
+
account_type:
|
26
|
+
name: Name
|
27
|
+
title: Titel
|
28
|
+
booking:
|
29
|
+
code: Belegnr.
|
30
|
+
value_date: Valutadatum
|
31
|
+
title: Titel
|
32
|
+
amount: Betrag
|
33
|
+
comments: Bemerkungen
|
34
|
+
credit_account: Soll
|
35
|
+
debit_account: Haben
|
36
|
+
reference: Referenz
|
37
|
+
reference_type: Referenz Typ
|
38
|
+
reference_id: Referenz ID
|
39
|
+
text: Text
|
40
|
+
date: Datum
|
41
|
+
balance: Saldo
|
42
|
+
edit: Editieren
|
43
|
+
destroy: Löschen
|
44
|
+
valuta: Valuta
|
45
|
+
value: Betrag
|
46
|
+
|
47
|
+
form:
|
48
|
+
bank:
|
49
|
+
money_transfer: Bankverbindung
|
50
|
+
|
51
|
+
# Title customizations
|
52
|
+
accounts:
|
53
|
+
index:
|
54
|
+
title: Kontenplan
|
55
|
+
edit_bookings:
|
56
|
+
title: Buchungen
|
57
|
+
info:
|
58
|
+
title: Kontodaten
|
59
|
+
journal:
|
60
|
+
title: Auszug
|
61
|
+
attachments:
|
62
|
+
list:
|
63
|
+
title: Dokumente
|
64
|
+
bank_accounts:
|
65
|
+
index:
|
66
|
+
title: Bankkonti
|
67
|
+
banks:
|
68
|
+
index:
|
69
|
+
title: Banken
|
70
|
+
account_types:
|
71
|
+
index:
|
72
|
+
title: Kontentypen
|
73
|
+
bookings:
|
74
|
+
index:
|
75
|
+
title: Buchungsjournal
|
76
|
+
copy:
|
77
|
+
title: Buchung kopieren
|
78
|
+
|
79
|
+
crud:
|
80
|
+
action:
|
81
|
+
copy: Kopieren
|
82
|
+
only_credit_bookings: "Nur Soll"
|
83
|
+
only_debit_bookings: "Nur Haben"
|
@@ -0,0 +1,65 @@
|
|
1
|
+
# English locale
|
2
|
+
en:
|
3
|
+
activerecord:
|
4
|
+
models:
|
5
|
+
account: Account
|
6
|
+
bank_account: Bank account
|
7
|
+
bank: Bank
|
8
|
+
account_type: Account type
|
9
|
+
booking: Booking
|
10
|
+
|
11
|
+
attributes:
|
12
|
+
account:
|
13
|
+
code: No.
|
14
|
+
title: Title
|
15
|
+
saldo: Saldo
|
16
|
+
account_type: Acocunt type
|
17
|
+
bank_account:
|
18
|
+
number: Account no.
|
19
|
+
iban: IBAN
|
20
|
+
pc_id: VESR no.
|
21
|
+
esr_id: VESR identifier
|
22
|
+
bank:
|
23
|
+
clearing: Clearing no.
|
24
|
+
swift: SWIFT no.
|
25
|
+
account_type:
|
26
|
+
name: Name
|
27
|
+
title: Title
|
28
|
+
booking:
|
29
|
+
code: Booking no.
|
30
|
+
value_date: Value date
|
31
|
+
title: Title
|
32
|
+
amount: Amount
|
33
|
+
comments: Remarks
|
34
|
+
credit_account: Credit
|
35
|
+
debit_account: Debit
|
36
|
+
reference: Reference
|
37
|
+
reference_type: Reference type
|
38
|
+
reference_id: Reference ID
|
39
|
+
text: Text
|
40
|
+
date: Date
|
41
|
+
balance: Saldo
|
42
|
+
edit: Edit
|
43
|
+
destroy: Delete
|
44
|
+
valuta: Valuta
|
45
|
+
value: Amount
|
46
|
+
|
47
|
+
# Title customizations
|
48
|
+
account:
|
49
|
+
index:
|
50
|
+
title: Accounts
|
51
|
+
bank_account:
|
52
|
+
index:
|
53
|
+
title: Bank Accounts
|
54
|
+
bank:
|
55
|
+
index:
|
56
|
+
title: Banks
|
57
|
+
account_type:
|
58
|
+
index:
|
59
|
+
title: Account Types
|
60
|
+
booking:
|
61
|
+
index:
|
62
|
+
title: Booking Journal
|
63
|
+
crud:
|
64
|
+
action:
|
65
|
+
copy: Kopieren
|
data/config/routes.rb
ADDED
@@ -0,0 +1,44 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
|
3
|
+
# Routes
|
4
|
+
Rails.application.routes.draw do
|
5
|
+
# Bookings
|
6
|
+
resources :bookings do
|
7
|
+
collection do
|
8
|
+
post :select
|
9
|
+
get :simple_edit
|
10
|
+
end
|
11
|
+
member do
|
12
|
+
get :select_booking
|
13
|
+
get :copy
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
resources :accounts do
|
18
|
+
member do
|
19
|
+
get :csv_bookings
|
20
|
+
get :edit_bookings
|
21
|
+
post :update_bookings
|
22
|
+
end
|
23
|
+
resources :bookings
|
24
|
+
resources :attachments
|
25
|
+
end
|
26
|
+
|
27
|
+
resources :banks do
|
28
|
+
resources :phone_numbers
|
29
|
+
member do
|
30
|
+
get :new_phone_number
|
31
|
+
end
|
32
|
+
collection do
|
33
|
+
get :new_phone_number
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
resources :bank_accounts do
|
38
|
+
member do
|
39
|
+
get :csv_bookings
|
40
|
+
end
|
41
|
+
resources :bookings
|
42
|
+
resources :attachments
|
43
|
+
end
|
44
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
require 'has_accounts_engine/railtie' if defined?(::Rails::Railtie)
|
metadata
ADDED
@@ -0,0 +1,192 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: has_accounts_engine
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.0
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Simon Hürlimann (CyT)
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2013-06-18 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: rails
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ~>
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '3.1'
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ~>
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '3.1'
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: has_accounts
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ! '>='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '0'
|
38
|
+
type: :runtime
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0'
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: has_vcards
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ! '>='
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0'
|
54
|
+
type: :runtime
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: i18n_rails_helpers
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
66
|
+
requirements:
|
67
|
+
- - ! '>='
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0'
|
70
|
+
type: :runtime
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '0'
|
78
|
+
- !ruby/object:Gem::Dependency
|
79
|
+
name: validates_timeliness
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
82
|
+
requirements:
|
83
|
+
- - ! '>='
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: '0'
|
86
|
+
type: :runtime
|
87
|
+
prerelease: false
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ! '>='
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: '0'
|
94
|
+
- !ruby/object:Gem::Dependency
|
95
|
+
name: inherited_resources
|
96
|
+
requirement: !ruby/object:Gem::Requirement
|
97
|
+
none: false
|
98
|
+
requirements:
|
99
|
+
- - ! '>='
|
100
|
+
- !ruby/object:Gem::Version
|
101
|
+
version: '0'
|
102
|
+
type: :runtime
|
103
|
+
prerelease: false
|
104
|
+
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
106
|
+
requirements:
|
107
|
+
- - ! '>='
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '0'
|
110
|
+
description: HasAccountsEngine is a full featured Rails 3 gem accompanying has_accounts
|
111
|
+
with controllers, views...
|
112
|
+
email:
|
113
|
+
- simon.huerlimann@cyt.ch
|
114
|
+
executables: []
|
115
|
+
extensions: []
|
116
|
+
extra_rdoc_files:
|
117
|
+
- MIT-LICENSE
|
118
|
+
- README.md
|
119
|
+
files:
|
120
|
+
- app/controllers/accounts_controller.rb
|
121
|
+
- app/controllers/bank_accounts_controller.rb
|
122
|
+
- app/controllers/banks_controller.rb
|
123
|
+
- app/controllers/bookings_controller.rb
|
124
|
+
- app/helpers/account_helper.rb
|
125
|
+
- app/views/accounts/_account.html.haml
|
126
|
+
- app/views/accounts/_booking_item.html.haml
|
127
|
+
- app/views/accounts/_booking_list_footer.html.haml
|
128
|
+
- app/views/accounts/_booking_list_header.html.haml
|
129
|
+
- app/views/accounts/_booking_list_paginate.html.haml
|
130
|
+
- app/views/accounts/_booking_list_saldo.html.haml
|
131
|
+
- app/views/accounts/_booking_list_turnover.html.haml
|
132
|
+
- app/views/accounts/_carry_booking.html.haml
|
133
|
+
- app/views/accounts/_edit_booking.html.haml
|
134
|
+
- app/views/accounts/_edit_bookings.html.haml
|
135
|
+
- app/views/accounts/_form.html.haml
|
136
|
+
- app/views/accounts/_list_footer.html.haml
|
137
|
+
- app/views/accounts/_list_header.html.haml
|
138
|
+
- app/views/accounts/_show.html.haml
|
139
|
+
- app/views/accounts/_show_bookings.html.haml
|
140
|
+
- app/views/accounts/edit_bookings.html.haml
|
141
|
+
- app/views/accounts/edit_bookings.js.erb
|
142
|
+
- app/views/accounts/index.html.haml
|
143
|
+
- app/views/accounts/show.html.haml
|
144
|
+
- app/views/bank_accounts/_bank_account.html.haml
|
145
|
+
- app/views/bank_accounts/_form.html.haml
|
146
|
+
- app/views/banks/_bank.html.haml
|
147
|
+
- app/views/banks/_form.html.haml
|
148
|
+
- app/views/bookings/_booking.html.haml
|
149
|
+
- app/views/bookings/_form.html.haml
|
150
|
+
- app/views/bookings/_list.html.haml
|
151
|
+
- app/views/bookings/_new_form.html.haml
|
152
|
+
- app/views/bookings/_sidebar.html.haml
|
153
|
+
- app/views/bookings/_simple_form.html.haml
|
154
|
+
- app/views/bookings/new.html.haml
|
155
|
+
- app/views/bookings/select.html.haml
|
156
|
+
- app/views/bookings/show.html.haml
|
157
|
+
- app/views/bookings/simple_edit.html.haml
|
158
|
+
- config/locales/de.yml
|
159
|
+
- config/locales/en.yml
|
160
|
+
- config/routes.rb
|
161
|
+
- lib/has_accounts_engine.rb
|
162
|
+
- lib/has_accounts_engine/railtie.rb
|
163
|
+
- lib/has_accounts_engine/version.rb
|
164
|
+
- MIT-LICENSE
|
165
|
+
- README.md
|
166
|
+
homepage: https://github.com/huerlisi/has_accounts_engine
|
167
|
+
licenses:
|
168
|
+
- MIT
|
169
|
+
post_install_message:
|
170
|
+
rdoc_options: []
|
171
|
+
require_paths:
|
172
|
+
- lib
|
173
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
174
|
+
none: false
|
175
|
+
requirements:
|
176
|
+
- - ! '>='
|
177
|
+
- !ruby/object:Gem::Version
|
178
|
+
version: '0'
|
179
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
180
|
+
none: false
|
181
|
+
requirements:
|
182
|
+
- - ! '>='
|
183
|
+
- !ruby/object:Gem::Version
|
184
|
+
version: '0'
|
185
|
+
requirements: []
|
186
|
+
rubyforge_project:
|
187
|
+
rubygems_version: 1.8.23
|
188
|
+
signing_key:
|
189
|
+
specification_version: 3
|
190
|
+
summary: HasAccountsEngine provides controllers, views for has_accounts.
|
191
|
+
test_files: []
|
192
|
+
has_rdoc:
|