diff --git a/Gemfile b/Gemfile
index 91b52a8a..9762297a 100644
--- a/Gemfile
+++ b/Gemfile
@@ -7,6 +7,7 @@ gem 'mysql'
gem "fastercsv"
gem "prawn", '<=0.6.3'
gem 'haml'
+gem 'sass'
gem "will_paginate", "~> 3.0.pre2"
gem 'jquery-rails'
gem 'client_side_validations'
diff --git a/Gemfile.lock b/Gemfile.lock
index b5725d29..f8bee640 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -102,6 +102,7 @@ GEM
thor (~> 0.14.4)
rake (0.8.7)
responders (0.6.4)
+ sass (3.1.1)
simple_form (1.3.1)
thor (0.14.6)
treetop (1.4.9)
@@ -128,5 +129,6 @@ DEPENDENCIES
prawn (<= 0.6.3)
rails (= 3.0.7)
rails3_acts_as_paranoid
+ sass
simple_form
will_paginate (~> 3.0.pre2)
diff --git a/app/controllers/finance/financial_transactions_controller.rb b/app/controllers/finance/financial_transactions_controller.rb
new file mode 100644
index 00000000..02c15188
--- /dev/null
+++ b/app/controllers/finance/financial_transactions_controller.rb
@@ -0,0 +1,67 @@
+class Finance::FinancialTransactionsController < ApplicationController
+ before_filter :authenticate_finance
+ before_filter :find_ordergroup, :except => [:new_collection, :create_collection]
+ inherit_resources
+# belongs_to :ordergroup
+
+ def index
+ if params['sort']
+ sort = case params['sort']
+ when "date" then "created_on"
+ when "note" then "note"
+ when "amount" then "amount"
+ when "date_reverse" then "created_on DESC"
+ when "note_reverse" then "note DESC"
+ when "amount_reverse" then "amount DESC"
+ end
+ else
+ sort = "created_on DESC"
+ end
+
+ @financial_transactions = @ordergroup.financial_transactions.order(sort)
+ @financial_transactions = @financial_transactions.where(:note.matches => "%#{params[:query]}%") unless params[:query].nil?
+
+ @financial_transactions = @financial_transactions.paginate :page => params[:page], :per_page => 10
+
+ respond_to do |format|
+ format.html
+ format.js { render :layout => false }
+ end
+ end
+
+ def new
+ @financial_transaction = @ordergroup.financial_transactions.build
+ 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 => "Die Transaktion wurde gespeichert."
+ rescue
+ render :action => :new
+ end
+
+ def new_collection
+ end
+
+ def create_collection
+ raise "Notiz wird benötigt!" if params[:note].blank?
+ params[:financial_transactions].each do |trans|
+ # ignore empty amount fields ...
+ unless trans[:amount].blank?
+ Ordergroup.find(trans[:ordergroup_id]).add_financial_transaction!(trans[:amount], params[:note], @current_user)
+ end
+ end
+ redirect_to finance_ordergroups_url, :notice => "Alle Transaktionen wurden gespeichert."
+ rescue => error
+ redirect_to :action => 'new_collection', :alert => "Ein Fehler ist aufgetreten: " + error.to_s
+ end
+
+ protected
+
+ def find_ordergroup
+ @ordergroup = Ordergroup.find(params[:ordergroup_id])
+ end
+
+end
diff --git a/app/controllers/finance/ordergroups_controller.rb b/app/controllers/finance/ordergroups_controller.rb
new file mode 100644
index 00000000..16f53383
--- /dev/null
+++ b/app/controllers/finance/ordergroups_controller.rb
@@ -0,0 +1,31 @@
+class Finance::OrdergroupsController < ApplicationController
+ before_filter :authenticate_finance
+
+ def index
+ if (params[:per_page] && params[:per_page].to_i > 0 && params[:per_page].to_i <= 100)
+ @per_page = params[:per_page].to_i
+ else
+ @per_page = 20
+ end
+ if params["sort"]
+ sort = case params["sort"]
+ when "name" then "name"
+ when "account_balance" then "account_balance"
+ when "name_reverse" then "name DESC"
+ when "account_balance_reverse" then "account_balance DESC"
+ end
+ else
+ sort = "name"
+ end
+
+ @ordergroups = Ordergroup.order(sort)
+ @ordergroups = @ordergroups.where(:name.matches => "%#{params[:query]}%") unless params[:query].nil?
+
+ @ordergroups = @ordergroups.paginate :page => params[:page], :per_page => @per_page
+
+ respond_to do |format|
+ format.html
+ format.js { render :layout => false }
+ end
+ end
+end
diff --git a/app/controllers/finance/transactions_controller.rb b/app/controllers/finance/transactions_controller.rb
deleted file mode 100644
index 91380ade..00000000
--- a/app/controllers/finance/transactions_controller.rb
+++ /dev/null
@@ -1,103 +0,0 @@
-class Finance::TransactionsController < ApplicationController
- before_filter :authenticate_finance
-
- def index
- if (params[:per_page] && params[:per_page].to_i > 0 && params[:per_page].to_i <= 100)
- @per_page = params[:per_page].to_i
- else
- @per_page = 20
- end
- if params["sort"]
- sort = case params["sort"]
- when "name" then "name"
- when "account_balance" then "account_balance"
- when "name_reverse" then "name DESC"
- when "account_balance_reverse" then "account_balance DESC"
- end
- else
- sort = "name"
- end
-
- conditions = "name LIKE '%#{params[:query]}%'" unless params[:query].nil?
-
- @total = Ordergroup.without_deleted.count(:conditions => conditions)
- @groups = Ordergroup.without_deleted.paginate :conditions => conditions,
- :page => params[:page], :per_page => @per_page, :order => sort
-
- respond_to do |format|
- format.html
- format.js { render :partial => "ordergroups" }
- end
- end
-
- def list
- @group = Ordergroup.find(params[:id])
-
- if params['sort']
- sort = case params['sort']
- when "date" then "created_on"
- when "note" then "note"
- when "amount" then "amount"
- when "date_reverse" then "created_on DESC"
- when "note_reverse" then "note DESC"
- when "amount_reverse" then "amount DESC"
- end
- else
- sort = "created_on DESC"
- end
-
- conditions = ["note LIKE ?", "%#{params[:query]}%"] unless params[:query].nil?
-
- @total = @group.financial_transactions.count(:conditions => conditions)
- @financial_transactions = @group.financial_transactions.paginate(
- :page => params[:page],
- :per_page => 10,
- :conditions => conditions,
- :order => sort)
-
- respond_to do |format|
- format.html
- format.js { render :partial => "list" }
- end
- end
-
- def new
- @group = Ordergroup.find(params[:id])
- @financial_transaction = @group.financial_transactions.build
- end
-
- def create
- @group = Ordergroup.find(params[:financial_transaction][:ordergroup_id])
- amount = params[:financial_transaction][:amount]
- note = params[:financial_transaction][:note]
- begin
- @group.add_financial_transaction(amount, note, @current_user)
- flash[:notice] = 'Transaktion erfolgreich angelegt.'
- redirect_to :action => 'list', :id => @group
- rescue => e
- @financial_transaction = FinancialTransaction.new(params[:financial_transaction])
- flash.now[:error] = 'Transaktion konnte nicht angelegt werden!' + ' (' + e.message + ')'
- render :action => 'new'
- end
- end
-
- def new_collection
- end
-
- def create_collection
- note = params[:note]
- raise "Notiz wird benötigt!" if note.blank?
- params[:financial_transactions].each do |trans|
- # ignore empty amount fields ...
- unless trans[:amount].blank?
- Ordergroup.find(trans[:ordergroup_id]).add_financial_transaction trans[:amount], note, @current_user
- end
- end
- flash[:notice] = "Alle Transaktionen wurden gespeichert."
- redirect_to :action => 'index'
- rescue => error
- flash[:error] = "Ein Fehler ist aufgetreten: " + error.to_s
- redirect_to :action => 'new_collection'
- end
-
-end
diff --git a/app/helpers/finance/ordergroups_helper.rb b/app/helpers/finance/ordergroups_helper.rb
new file mode 100644
index 00000000..65ddd6f2
--- /dev/null
+++ b/app/helpers/finance/ordergroups_helper.rb
@@ -0,0 +1,2 @@
+module Finance::OrdergroupsHelper
+end
diff --git a/app/models/financial_transaction.rb b/app/models/financial_transaction.rb
index c1b8165d..540f03c5 100644
--- a/app/models/financial_transaction.rb
+++ b/app/models/financial_transaction.rb
@@ -4,14 +4,15 @@ class FinancialTransaction < ActiveRecord::Base
belongs_to :ordergroup
belongs_to :user
- validates_presence_of :note, :user_id, :ordergroup_id
+ validates_presence_of :amount, :note, :user_id, :ordergroup_id
validates_numericality_of :amount
- # Custom attribute setter that accepts decimal numbers using localized decimal separator.
- def amount=(amount)
- self[:amount] = String.delocalized_decimal(amount)
- end
+ localize_input_of :amount
+ # Use this save method instead of simple save and after callback
+ def add_transaction!
+ ordergroup.add_financial_transaction! amount, note, user
+ end
end
# == Schema Information
diff --git a/app/models/order.rb b/app/models/order.rb
index eaf20ea9..93cabc57 100644
--- a/app/models/order.rb
+++ b/app/models/order.rb
@@ -178,7 +178,7 @@ class Order < ActiveRecord::Base
transaction do # Start updating account balances
for group_order in gos
price = group_order.price * -1 # decrease! account balance
- group_order.ordergroup.add_financial_transaction(price, transaction_note, user)
+ group_order.ordergroup.add_financial_transaction!(price, transaction_note, user)
end
if stockit? # Decreases the quantity of stock_articles
diff --git a/app/models/ordergroup.rb b/app/models/ordergroup.rb
index de5190c7..34242fb7 100644
--- a/app/models/ordergroup.rb
+++ b/app/models/ordergroup.rb
@@ -38,11 +38,11 @@ class Ordergroup < Group
# Creates a new FinancialTransaction for this Ordergroup and updates the account_balance accordingly.
# Throws an exception if it fails.
- def add_financial_transaction(amount, note, user)
+ def add_financial_transaction!(amount, note, user)
transaction do
trans = FinancialTransaction.new(:ordergroup => self, :amount => amount, :note => note, :user => user)
trans.save!
- self.account_balance += trans.amount
+ self.account_balance = financial_transactions.sum('amount')
self.account_updated = trans.created_on
save!
notify_negative_balance(trans)
diff --git a/app/views/finance/balancing/index.haml b/app/views/finance/balancing/index.haml
index 46e0020d..93542e3a 100644
--- a/app/views/finance/balancing/index.haml
+++ b/app/views/finance/balancing/index.haml
@@ -23,7 +23,7 @@
%h2 letzte Überweisungen
.column_content
%p
- = link_to "Bestellgruppen", :controller => 'finance/transactions'
+ = link_to "Bestellgruppen", :controller => 'financial_transactions'
%table.list
%thead
%tr
diff --git a/app/views/finance/financial_transactions/_ordergroup.haml b/app/views/finance/financial_transactions/_ordergroup.haml
new file mode 100644
index 00000000..f4578661
--- /dev/null
+++ b/app/views/finance/financial_transactions/_ordergroup.haml
@@ -0,0 +1,6 @@
+%tr.transaction
+ %td
+ = select_tag 'financial_transactions[][ordergroup_id]',
+ options_for_select(Ordergroup.order(:name).all.map { |g| [ g.name, g.id ] })
+ %td= text_field_tag 'financial_transactions[][amount]'
+ %td= link_to icon(:delete), "#", :title => "Gruppe enfernen", 'data-remove-transaction' => true
\ No newline at end of file
diff --git a/app/views/finance/financial_transactions/_transactions.html.haml b/app/views/finance/financial_transactions/_transactions.html.haml
new file mode 100644
index 00000000..5b45ea71
--- /dev/null
+++ b/app/views/finance/financial_transactions/_transactions.html.haml
@@ -0,0 +1,26 @@
+- if @total == 0
+ %p Keine gefunden
+- else
+ %p
+ Anzahl gefundener Transaktionen:
+ %b= @total
+ %p
+ = pagination_links_remote @financial_transactions, :update => 'transactions', |
+ :params => {:sort => params[:sort], :query => params['query']} |
+ %table
+ %thead
+ %tr
+
+ \#{sort_link_helper "Datum", "date"}
+ %td Wer
+ |
+ \#{sort_link_helper "Notiz", "note"}
+ |
+ \#{sort_link_helper "Betrag", "amount"}
+ %tbody
+ - @financial_transactions.each do |t|
+ %tr{:class => cycle("even","odd")}
+ %td= format_time(t.created_on)
+ %td= h t.user.nil? ? '??' : t.user.nick
+ %td= h t.note
+ %td.currency{:style => "color:#{t.amount < 0 ? 'red' : 'black'}; width:5em"}= number_to_currency(t.amount)
diff --git a/app/views/finance/financial_transactions/index.html.haml b/app/views/finance/financial_transactions/index.html.haml
new file mode 100644
index 00000000..0e21a97b
--- /dev/null
+++ b/app/views/finance/financial_transactions/index.html.haml
@@ -0,0 +1,18 @@
+- title "Kontoauszug für #{@ordergroup.name}"
+%p
+ %b
+ Kontostand: #{number_to_currency(@ordergroup.account_balance)}
+ %span{:style => "color:grey"}
+ (zuletzt aktualisiert vor #{distance_of_time_in_words(Time.now, @ordergroup.account_updated)})
+.left_column{:style => "width:100%"}
+ .box_title
+ %h2 Überweisungen
+ .column_content
+ = form_tag finance_ordergroup_transactions_path(@ordergroup), :method => :get, :style=>"display:inline;", :id => 'ordergroup_search',
+ :remote => true, 'data-submit-onchange' => true do
+ %label{:for => 'article_name'} Suche in Notiz:
+ = text_field_tag :query, params[:query], :size => 10
+ #transactions
+ = render :partial => "transactions"
+ %p= link_to 'Neue Transaktion', new_finance_ordergroup_transaction_path(@ordergroup)
+ = link_to 'Gruppenübersicht', finance_ordergroups_path
diff --git a/app/views/finance/financial_transactions/index.js.erb b/app/views/finance/financial_transactions/index.js.erb
new file mode 100644
index 00000000..5fd8de68
--- /dev/null
+++ b/app/views/finance/financial_transactions/index.js.erb
@@ -0,0 +1 @@
+$('#transactions').html('<%= escape_javascript(render("transactions")) %>');
\ No newline at end of file
diff --git a/app/views/finance/financial_transactions/new.html.haml b/app/views/finance/financial_transactions/new.html.haml
new file mode 100644
index 00000000..d675f91a
--- /dev/null
+++ b/app/views/finance/financial_transactions/new.html.haml
@@ -0,0 +1,9 @@
+- title "Neue Transaktion"
+
+= simple_form_for @financial_transaction, :url => finance_ordergroup_transactions_path(@ordergroup),
+ :validate => true do |f|
+ = f.association :ordergroup
+ = f.input :amount
+ = f.input :note, :as => :text
+ = f.submit
+ = link_to "oder abbrechen", finance_ordergroup_transactions_path(@ordergroup)
\ No newline at end of file
diff --git a/app/views/finance/financial_transactions/new_collection.html.haml b/app/views/finance/financial_transactions/new_collection.html.haml
new file mode 100644
index 00000000..b3d2aa4b
--- /dev/null
+++ b/app/views/finance/financial_transactions/new_collection.html.haml
@@ -0,0 +1,34 @@
+- title "Mehrer Konten aktualisieren"
+
+- content_for :head do
+ :javascript
+ var ordergroup = "#{escape_javascript(render('ordergroup'))}"
+
+ $(function() {
+ $('a[data-remove-transaction]').live('click', function() {
+ $(this).parents('tr').remove();
+ return false;
+ });
+
+ $('a[data-add-transaction]').click(function() {
+ $('#ordergroups').append(ordergroup);
+ return false;
+ });
+ });
+
+- form_tag finance_create_transaction_collection_path do
+ %p
+ %b Notiz
+ = text_field_tag :note
+ %p
+ %table#ordergroups{:style => "width:20em"}
+ %tr
+ %th Bestellgruppe
+ %th Betrag
+ = render :partial => 'ordergroup', :collection => [1, 2, 3]
+
+ %p
+ = link_to "Neue Bestellgruppe hinzufügen", '#', 'data-add-transaction' => true
+ %p
+ = submit_tag "Transaktionen speichern"
+ = link_to "oder abbrechen", finance_ordergroups_path
\ No newline at end of file
diff --git a/app/views/finance/ordergroups/_ordergroups.html.haml b/app/views/finance/ordergroups/_ordergroups.html.haml
new file mode 100644
index 00000000..7167da4c
--- /dev/null
+++ b/app/views/finance/ordergroups/_ordergroups.html.haml
@@ -0,0 +1,30 @@
+%p
+ Gefunden:
+ = @ordergroups.size
+%p
+ %table{:style => "width:100%"}
+ %tr
+ %td
+ = pagination_links_remote @ordergroups, :update => :ordergroups, :params => {:sort => params[:sort]}
+ %td{:style => "text-align:right"}
+ - if @ordergroups.size > 20
+ = items_per_page
+%table.list
+ %thead
+ %tr
+ %th= sort_link_helper "Name", "name", :per_page => @per_page
+ %th Kontakt
+ %th= sort_link_helper "Kontostand", "account_balance", :per_page => @per_page
+ %th
+ %tbody
+ - for ordergroup in @ordergroups
+ %tr{:class => cycle('even','odd', :name => 'ordergroups')}
+ %td= ordergroup.name
+ %td= ordergroup.contact
+ %td{:class => "currency", :style => "width:5em"}= number_to_currency(ordergroup.account_balance)
+ %td{:class => "actions"}
+ = link_to image_tag("euro_new.png", :size => "16x16", :alt => "Neue Transaktion", :border => "0"),
+ new_finance_ordergroup_transaction_path(ordergroup), :title => "Neue Transaktion"
+ = link_to image_tag("b_browse.png", :size => "16x16", :border => "0", :alt => 'Kontoauszug'),
+ finance_ordergroup_transactions_path(ordergroup), :title => "Kontoauszug"
+
\ No newline at end of file
diff --git a/app/views/finance/ordergroups/index.html.haml b/app/views/finance/ordergroups/index.html.haml
new file mode 100644
index 00000000..c1420b29
--- /dev/null
+++ b/app/views/finance/ordergroups/index.html.haml
@@ -0,0 +1,20 @@
+- title "Konten verwalten"
+%p
+ %i
+ Um mehrer Transaktionen auf einmal anzulegen folge bitte diesem
+ = link_to "Link", finance_new_transaction_collection_path
+
+.left_column{:style=>"width:50em"}
+ .box_title
+ %h2 Bestellgruppen
+ .column_content
+ #group_filter
+ = form_tag finance_ordergroups_path, :method => :get, :style=>"display:inline;", :id => 'ordergroup_search',
+ :remote => true, 'data-submit-onchange' => true do
+ %label{:for => 'article_name'} Suche nach Name:
+ = text_field_tag :query, params[:query], :size => 10
+ #ordergroups
+ = render :partial => "ordergroups"
+ %br/
+ - if @current_user.role_admin?
+ = link_to "Neue Bestellgruppe anlegen", new_admin_ordergroup_path
\ No newline at end of file
diff --git a/app/views/finance/ordergroups/index.js.erb b/app/views/finance/ordergroups/index.js.erb
new file mode 100644
index 00000000..97537932
--- /dev/null
+++ b/app/views/finance/ordergroups/index.js.erb
@@ -0,0 +1 @@
+$('#ordergroups').html('<%= escape_javascript(render("ordergroups")) %>');
\ No newline at end of file
diff --git a/app/views/finance/transactions/_list.rhtml b/app/views/finance/transactions/_list.rhtml
deleted file mode 100644
index 5b84e606..00000000
--- a/app/views/finance/transactions/_list.rhtml
+++ /dev/null
@@ -1,42 +0,0 @@
-<% if @total == 0 %>
-
- Keine gefunden
-
-<% else %>
-
-Anzahl gefundener Transaktionen: <%= @total %>
-
-
-<%= pagination_links_remote @financial_transactions, :update => 'transactions',
- :params => {:sort => params[:sort], :query => params['query']}%>
-
-
-
-
-
-
- >
- <%= sort_link_helper "Datum", "date" %>
- |
- Wer |
- >
- <%= sort_link_helper "Notiz", "note" %>
- |
- >
- <%= sort_link_helper "Betrag", "amount" %>
- |
-
-
-
- <% @financial_transactions.each do |t| %>
- ">
- <%= format_time(t.created_on) %> |
- <%=h t.user.nil? ? '??' : t.user.nick %> |
- <%=h t.note %> |
- <%= number_to_currency(t.amount) %> |
-
- <% end %>
-
-
-
-<% end %>
\ No newline at end of file
diff --git a/app/views/finance/transactions/_ordergroup.haml b/app/views/finance/transactions/_ordergroup.haml
deleted file mode 100644
index f8f895ea..00000000
--- a/app/views/finance/transactions/_ordergroup.haml
+++ /dev/null
@@ -1,6 +0,0 @@
-%tr.transaction
- %td
- %select{:name => 'financial_transactions[][ordergroup_id]'}
- = options_for_select Ordergroup.without_deleted.all(:order => 'name').collect { |g| [ g.name, g.id ] }
- %td= text_field_tag 'financial_transactions[][amount]'
- %td= link_to_function icon(:delete), "$(this).up('.transaction').remove()", {:title => "Gruppe enfernen"}
\ No newline at end of file
diff --git a/app/views/finance/transactions/_ordergroups.html.haml b/app/views/finance/transactions/_ordergroups.html.haml
deleted file mode 100644
index daa37180..00000000
--- a/app/views/finance/transactions/_ordergroups.html.haml
+++ /dev/null
@@ -1,28 +0,0 @@
-%p
- Gefunden:
- = @total
-%p
- %table{:style => "width:100%"}
- %tr
- %td
- = pagination_links_remote @groups, :update => :ordergroups, :params => {:sort => params[:sort]}
- %td{:style => "text-align:right"}
- - if @total > 20
- = items_per_page :update => :ordergroups
-%table.list
- %thead
- %tr
- %th= sort_link_helper "Name", "name", :per_page => @per_page
- %th Kontakt
- %th= sort_link_helper "Kontostand", "account_balance", :per_page => @per_page
- %th
- %tbody
- - for group in @groups
- %tr{:class => cycle('even','odd', :name => 'groups')}
- %td= group.name
- %td= group.contact
- %td{:class => "currency", :style => "width:5em"}= number_to_currency(group.account_balance)
- %td{:class => "actions"}
- = link_to image_tag("euro_new.png", :size => "16x16", :alt => "Neue Transaktion", :border => "0"), {:action => 'new', :id => group}, {:title => "Neue Transaktion"}
- = link_to image_tag("b_browse.png", :size => "16x16", :border => "0", :alt => 'Kontoauszug'), {:action => 'list', :id => group}, {:title => "Kontoauszug"}
-
\ No newline at end of file
diff --git a/app/views/finance/transactions/index.html.haml b/app/views/finance/transactions/index.html.haml
deleted file mode 100644
index 85faa83f..00000000
--- a/app/views/finance/transactions/index.html.haml
+++ /dev/null
@@ -1,27 +0,0 @@
-- title "Konten verwalten"
-%p
- %i
- Um mehrer Transaktionen auf einmal anzulegen folge bitte diesem
- = link_to _("Link"), :action => 'new_collection'
-
-.left_column{:style=>"width:50em"}
- .box_title
- %h2 Bestellgruppen
- .column_content
- #group_filter
- %form{:name=>"sform", :action=>"", :style=>"display:inline;"}
- Suchen im Namen:
- = text_field_tag("query", params['query'], :size => 10 )
-
- = observe_field 'query', :frequency => 2, |
- :before => "Element.show('loader')", |
- :success => "Element.hide('loader')", |
- :url => {:action => 'index'}, |
- :with => 'query', |
- :update => 'ordergroups', |
- :method => :get |
- #ordergroups
- = render :partial => "ordergroups"
- %br/
- - if @current_user.role_admin?
- = link_to "Neue Bestellgruppe anlegen", new_admin_ordergroup_path
\ No newline at end of file
diff --git a/app/views/finance/transactions/list.html.erb b/app/views/finance/transactions/list.html.erb
deleted file mode 100644
index ba82160d..00000000
--- a/app/views/finance/transactions/list.html.erb
+++ /dev/null
@@ -1,26 +0,0 @@
-<% title "Kontoauszug für #{@group.name}" %>
-
-
- Kontostand: <%= number_to_currency(@group.account_balance) -%>
- (zuletzt aktualisiert vor <%= distance_of_time_in_words(Time.now, @group.account_updated) -%>)
-
-
- Überweisungen
-
-
- <%= observe_field 'query', :frequency => 2,
- :before => "Element.show('loader')",
- :success => "Element.hide('loader')",
- :url => {:action => 'list'},
- :with => 'query',
- :update => 'transactions' %>
-
- <%= render :partial => "list" %>
-
- <%= link_to 'Neue Transaktion', :action => 'new', :id => @group %>
-
- <%= link_to 'Gruppenübersicht', :action => 'index' %>
-
diff --git a/app/views/finance/transactions/new.html.haml b/app/views/finance/transactions/new.html.haml
deleted file mode 100644
index 5180527d..00000000
--- a/app/views/finance/transactions/new.html.haml
+++ /dev/null
@@ -1,21 +0,0 @@
-- title "Neue Transaktion"
-
-.edit_form{ :style => "width:30em" }
- - form_for @financial_transaction, :url => {:action => 'create'} do |f|
- = f.error_messages
- = f.hidden_field :ordergroup_id
- %p
- Bestellgruppe:
- %b=h @group.name
- %p
- Betrag
- %br/
- = f.text_field :amount, :size => 10
- %p
- Notiz
- %br/
- = f.text_area :note, :cols => 40, :rows => 5
- %p
- = submit_tag "Speichern"
- |
- = link_to "Abbrechen", :controller => 'transactions'
\ No newline at end of file
diff --git a/app/views/finance/transactions/new_collection.html.haml b/app/views/finance/transactions/new_collection.html.haml
deleted file mode 100644
index a2cb0ada..00000000
--- a/app/views/finance/transactions/new_collection.html.haml
+++ /dev/null
@@ -1,20 +0,0 @@
-- title "Mehrer Konten aktualisieren"
-
-- form_tag :action => "create_collection" do
- %p
- %b Notiz
- = text_field_tag "note"
- %p
- %table#Ordergroups{:style => "width:20em"}
- %tr
- %th Bestellgruppe
- %th Betrag
- = render :partial => 'ordergroup', :collection => [1, 2, 3]
-
- %p
- = link_to_function "Neue Bestellgruppe hinzufügen" do |page|
- - page.insert_html :bottom, :Ordergroups, :partial => 'ordergroup'
- %p
- = submit_tag "Transaktionen speichern"
- |
- = link_to "Abbrechen", :controller => 'finance/transactions'
\ No newline at end of file
diff --git a/app/views/home/_start_nav.haml b/app/views/home/_start_nav.haml
index 657fab35..789a0c4b 100644
--- a/app/views/home/_start_nav.haml
+++ b/app/views/home/_start_nav.haml
@@ -32,7 +32,7 @@
%li
Finanzbereich
%ul
- %li= link_to "Konten aktualisieren", new_collection_finance_transactions_path
+ %li= link_to "Konten aktualisieren", finance_new_transaction_collection_path
%li= link_to "Bestellungen abrechnen", finance_root_path
// Administration
diff --git a/app/views/layouts/_main_tabnav.html.erb b/app/views/layouts/_main_tabnav.html.erb
index f2897eef..1778582a 100644
--- a/app/views/layouts/_main_tabnav.html.erb
+++ b/app/views/layouts/_main_tabnav.html.erb
@@ -43,10 +43,10 @@
]
},
{ :name => "Finanzen", :url => finance_root_path,
- :active => ["finance/invoices", "finance/transactions", "finance/balancing"],
+ :active => ["finance/"],
:access_denied? => (!u.role_finance?),
:subnav => [
- { :name => "Konten verwalten", :url => finance_transactions_path },
+ { :name => "Konten verwalten", :url => finance_ordergroups_path },
{ :name => "Bestellungen abrechnen", :url => finance_balancing_path },
{ :name => "Rechnungen", :url => finance_invoices_path }
]
diff --git a/app/views/pages/_body.html.haml b/app/views/pages/_body.html.haml
index 49fb353a..3f06f54d 100644
--- a/app/views/pages/_body.html.haml
+++ b/app/views/pages/_body.html.haml
@@ -1,9 +1,10 @@
- content = wikified_body @page.body, @page.title
- toc = generate_toc @page.body
+
- unless toc.blank?
#wikitoc
- %h2
+ %h2
Inhaltsverzeichnis
%span= link_to_function "[verstecken]", "Element.toggle('wikitoc-content')"
#wikitoc-content= toc
-#wiki_content= content
\ No newline at end of file
+= content
\ No newline at end of file
diff --git a/app/views/pages/show.html.haml b/app/views/pages/show.html.haml
index 470de1f4..f84ebb26 100644
--- a/app/views/pages/show.html.haml
+++ b/app/views/pages/show.html.haml
@@ -10,9 +10,6 @@
%span.wikiSeparator >
= @page.title
- %h1
- = @page.title
-
#sidebar
#sidebar-links
= link_to "Bearbeiten", edit_page_path(@page)
@@ -38,7 +35,10 @@
- for page in @page.children
%li= link_to_wikipage(page)
- = render :partial => 'body'
+ #wiki_content
+ %h1
+ = @page.title
+ = render :partial => 'body'
%hr.clear/
%p
diff --git a/config/locales/de.yml b/config/locales/de.yml
index c8a57967..758f33b6 100644
--- a/config/locales/de.yml
+++ b/config/locales/de.yml
@@ -163,6 +163,7 @@ de:
stock_article: Lagerartikel
delivery: Lieferung
stock_taking: Inventur
+ financial_transaction: Kontotransaktion
attributes:
article:
price: Nettopreis
@@ -215,6 +216,8 @@ de:
email: 'E-Mail'
note: 'Notiz'
date: 'Datum'
+ ordergroup: 'Bestellgruppe'
+ amount: 'Betrag'
workgroup:
weekly_task: 'Monatlichen Job definieren?'
weekday: 'Wochentag'
diff --git a/config/routes.rb b/config/routes.rb
index 1c0d0b01..fc864351 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -115,12 +115,12 @@ Foodsoft::Application.routes.draw do
resources :invoices
- resources :transactions do
- collection do
- get :new_collection
- post :create_collection
- end
+ resources :ordergroups, :only => [:index] do
+ resources :financial_transactions, :as => :transactions
end
+
+ get 'transactions/new_collection' => 'financial_transactions#new_collection', :as => 'new_transaction_collection'
+ post 'transactions/create_collection' => 'financial_transactions#create_collection', :as => 'create_transaction_collection'
end
########### Administration
diff --git a/public/stylesheets/main.css b/public/stylesheets/main.css
index 8cac5be0..5b8943ec 100644
--- a/public/stylesheets/main.css
+++ b/public/stylesheets/main.css
@@ -1,6 +1,6 @@
/* General rules ... */
body {
- background-color: #fff;
+ background-color: white;
color: black;
margin: 0;
padding: 1% 0 0 0;
@@ -12,7 +12,7 @@ body {
position: fixed;
top: 1px;
right: 1px;
- background: #FFF;
+ background: white;
padding: 10px;
color: black;
border-width: 2px;
@@ -40,7 +40,7 @@ h1 {
h2 {
font-size: 1.4em;
- margin-top: .5em; }
+ margin-top: 0.5em; }
h3 {
font-size: 1em;
@@ -53,18 +53,18 @@ abbr, acronym {
cursor: help; }
input, textarea, select {
- border: 1px solid #D7D7D7;
+ border: 1px solid #d7d7d7;
font-family: verdana, arial, helvetica, sans-serif;
font-size: 0.9em;
- padding-left: .2em;
- padding-right: .2em; }
+ padding-left: 0.2em;
+ padding-right: 0.2em; }
input:focus, textarea:focus, select:focus {
- border-color: #000; }
+ border-color: black; }
input[type="button"], input[type="submit"], input[type="reset"] {
- background: #EEEEEE none repeat scroll 0%;
- border: 1px outset #CCCCCC;
+ background: #eeeeee none repeat scroll 0%;
+ border: 1px outset #cccccc;
color: #222222;
padding: 0.1em 0.5em;
font-size: 1em;
@@ -75,18 +75,12 @@ select {
max-width: 15em; }
option {
- border-top: 1px solid #D7D7D7;
- margin: .2em 0; }
+ border-top: 1px solid #d7d7d7;
+ margin: 0.2em 0; }
span.click-me {
cursor: pointer; }
-.left {
- float: left; }
-
-.right {
- float: right; }
-
.clear {
clear: both; }
@@ -94,9 +88,6 @@ span.click-me {
color: grey;
font-size: 0.9em; }
-.hidden {
- display: none; }
-
#login {
margin: auto;
width: 27em;
@@ -104,8 +95,8 @@ span.click-me {
#login #meta {
margin-top: 2em;
- padding-top: .3em;
- border-top: 1px dotted #ED0606;
+ padding-top: 0.3em;
+ border-top: 1px dotted #ed0606;
color: #2e2e2e; }
#header {
@@ -129,7 +120,7 @@ span.click-me {
text-decoration: none; }
#logo a span {
color: #ed0606;
- background: #FFF;
+ background: white;
padding-right: 0.1em;
font-weight: bold;
border-top-width: 2px;
@@ -153,7 +144,7 @@ span.click-me {
color: #ed0606; }
#main {
- background: #FFF;
+ background: white;
padding: 0;
margin: 0 15px 0 15px; }
@@ -163,14 +154,14 @@ span.click-me {
float: right;
padding: 2.6em 1em;
margin: 3em 0 0 0;
- border-left: 1px dotted #ED0606;
+ border-left: 1px dotted #ed0606;
font-size: 1.2em; }
#infobar h3 {
- color: #ED0606; }
+ color: #ed0606; }
#infobar ul {
list-style: none; }
#infobar li {
- margin: .3em 0 0 -3em; }
+ margin: 0.3em 0 0 -3em; }
.menu, #start_nav {
border: 2px solid #e3e3e3;
@@ -183,7 +174,7 @@ span.click-me {
padding: 0; }
.menu ul li, #start_nav ul li {
border-bottom: 1px solid #dedede;
- color: #666;
+ color: #666666;
margin: 0.8em 0 0 0;
font-weight: bold; }
.menu ul li a:link, .menu ul li a:visited, #start_nav ul li a:link, #start_nav ul li a:visited {
@@ -213,14 +204,14 @@ span.click-me {
right: 1px; }
#content {
- padding: .5em 0 2.5em 0;
+ padding: 0.5em 0 2.5em 0;
margin: 0;
- background: #FFF;
+ background: white;
font-size: 1.3em;
width: 100%;
float: left; }
-/* *********************************** tables */
+/*********************************** tables */
table {
border-collapse: collapse;
text-align: left;
@@ -233,35 +224,29 @@ table {
table th {
color: black; }
table tr.odd, table tr.even {
- border-top: 1px solid #DDDDDD; }
+ border-top: 1px solid #dddddd; }
table tr.odd, table tr.odd input {
- background-color: #F6F6F6; }
+ background-color: #f6f6f6; }
table tr.even {
- background-color: #FBFBFB; }
+ background-color: #fbfbfb; }
table tr.unavailable, table tr.unavailable a {
color: grey; }
table tr.unavailable a:hover {
- color: #ED0606; }
+ color: #ed0606; }
table tr.just_updated {
- color: #008000; }
+ color: green; }
table tr.selected, table tr.active {
background-color: #ffffc2; }
- table tr.click-me, table td.click-me {
+ table tr.click-me {
cursor: pointer; }
- table tr.ignored {
- color: grey; }
- table tr.success {
- color: green; }
- table tr.failed {
- color: red; }
table.list tr {
border: 1px solid #e3e3e3; }
table.list tbody tr:hover {
- background-color: #EEEEDD; }
+ background-color: #eeeedd; }
table tfoot tr {
- background-color: #fff; }
+ background-color: white; }
table tfoot tr td {
padding-top: 0.8em; }
@@ -272,16 +257,16 @@ tr.edit_inline {
div.legend, div.legend table th {
color: grey;
- font-size: .8em;
+ font-size: 0.8em;
background: none; }
form table {
border: none; }
table.ordered_articles {
- background-color: #fff; }
+ background-color: white; }
table.ordered_articles tbody tr:hover {
- background-color: #EEEEDD; }
+ background-color: #eeeedd; }
table.ordered_articles a {
display: block; }
table.ordered_articles tr.results:hover {
@@ -315,7 +300,7 @@ div.edit_form {
top: 5em;
left: 10em;
width: 55em;
- background: #FBFBFB;
+ background: #fbfbfb;
padding: 3em;
padding-top: 1em;
border-width: 3px;
@@ -347,7 +332,7 @@ div.box_title {
background: #78b74e;
padding: 5px 10px; }
div.box_title h2, div.box_title h2 a {
- color: #FFF;
+ color: white;
margin: 0; }
div.box_title h2 {
font-size: 1.3em; }
@@ -382,7 +367,7 @@ span.used, span.unused {
font-weight: bold; }
span.used {
- color: #008000; }
+ color: green; }
span.unused {
color: #ed0606; }
@@ -393,91 +378,41 @@ span.total {
table#order {
text-align: center; }
table#order input {
- font-size: 0.9em;
- font-weight: bolder;
- background-color: #78B74E;
- color: #fff;
- -moz-border-radius: 3px;
- -webkit-border-radius: 3px;
- padding: 0; }
+ font-size: 80%; }
table#order th#col_required, table#order th#col_tolerance {
- width: 140px; }
+ width: 145px; }
table#order th#col_packages, table#order th#col_left_units {
width: 50px; }
- table#order td.quantity, table#order td.tolerance {
- text-align: right; }
table#order td#col_left_units {
color: #ed0606; }
table#order td {
padding: 0.6em; }
- table#order td.name {
+ table#order td.name, table#order tr.note td {
text-align: left;
padding-left: 10px; }
table#order tfoot tr {
background-color: #e4eed6; }
table#order tfoot td {
padding-right: 10px; }
-
-#order-footer, .article-info {
- text-align: left;
- z-index: 1;
- position: fixed;
- bottom: 0;
- background-color: #E4EED6;
- border-top: 2px solid #78B74E; }
- #order-footer #total-sum, .article-info #total-sum {
- width: 22em;
- margin: .5em 2em 0 0;
- float: right; }
- #order-footer #total-sum #order-button, .article-info #total-sum #order-button {
- margin: .5em 0; }
- #order-footer #total-sum #order-button input, .article-info #total-sum #order-button input {
- background-color: #78B74E;
- color: #fff;
- -moz-border-radius: 3px;
- -webkit-border-radius: 3px; }
- #order-footer #total-sum #order-button input:disabled, .article-info #total-sum #order-button input:disabled {
- background-color: red; }
-
-#order-footer {
- width: 100%;
- right: 0;
- left: 0; }
-
-.article-info {
- z-index: 2;
- width: 45em;
- height: 8em;
- border: none;
- left: 30px; }
- .article-info h3 {
- text-align: center;
- margin: 0;
- margin-bottom: 5px;
- width: 100%; }
- .article-info .right {
- width: 35%; }
- .article-info .left {
- width: 60%; }
-
-tr.order-article .article-info {
- display: none; }
-
-tr.order-article:hover .article-info {
- display: block; }
+ table#order tr.note {
+ background-color: #fbfbfb;
+ font-size: 0.9em;
+ border-bottom: 1px solid #dddddd; }
+ table#order tr.note td {
+ padding-left: 20px; }
#newComment {
margin: 1em; }
.comment {
border-bottom: 1px dotted black;
- padding: .5em 0 1em .5em; }
+ padding: 0.5em 0 1em 0.5em; }
.comment .timestamp {
font-size: 0.8em;
color: grey; }
#editOrderNav a {
- color: #fff;
+ color: white;
font-weight: bold; }
#editOrderNav ul {
margin: 0;
@@ -511,35 +446,34 @@ ul.autocomplete .informal {
.stats-bar {
height: 20px;
min-width: 10px;
- border: 1px solid #DDDDDD;
- background-color: #fff;
+ border: 1px solid #dddddd;
+ background-color: white;
text-align: center;
margin: 0 10px 10px 0; }
-#wiki_content {
- border-style: none;
- color: black;
- line-height: 1.5em; }
-
.wiki_show, .wiki_version, .wiki_new, .wiki_edit, .wiki_all {
margin-top: 30px;
padding: 10px; }
- .wiki_show h1, .wiki_version h1, .wiki_new h1, .wiki_edit h1, .wiki_all h1 {
- padding-left: 0;
- padding-top: 10px;
- border-bottom-style: solid; }
- .wiki_show .column_content, .wiki_version .column_content, .wiki_new .column_content, .wiki_edit .column_content, .wiki_all .column_content {
- margin-bottom: 0; }
#wiki_content {
+ border: 1px solid grey;
+ margin-right: 300px;
+ padding: 10px;
+ color: black;
+ line-height: 1.5em;
min-height: 400px; }
#wiki_content span.editsection {
display: none; }
+ #wiki_content h1 {
+ padding-left: 0;
+ padding-top: 10px;
+ border: none;
+ margin-bottom: 10px; }
#wiki_content h2, #wiki_content h3, #wiki_content h4, #wiki_content h5, #wiki_content h6 {
background: transparent none repeat scroll 0 0;
- border-bottom: 1px solid #AAAAAA;
- padding-bottom: 0,17em;
- padding-top: 0,5em;
+ border-bottom: 1px solid #aaaaaa;
+ padding-bottom: 0, 17em;
+ padding-top: 0, 5em;
font-weight: normal;
font-size: 150%;
color: black; }
@@ -559,6 +493,8 @@ ul.autocomplete .informal {
margin: 0.3em 0 0 3.2em;
padding: 0;
list-style-image: none; }
+ #wiki_content li {
+ margin-bottom: 0.1em; }
a.new_wiki_link {
color: grey; }
@@ -581,10 +517,10 @@ a.new_wiki_link {
color: grey; }
#breadcrump {
- font-size: 0.8em;
- margin-bottom: 3px;
+ font-size: 0.5em;
+ margin-bottom: 5px;
height: 1em;
- color: #ED0606; }
+ color: #ed0606; }
#breadcrump a {
color: #ed0606;
text-decoration: none; }
@@ -593,8 +529,7 @@ a.new_wiki_link {
#sidebar {
float: right;
- width: 290px;
- margin-top: -60px; }
+ width: 290px; }
#sidebar #sidebar-links {
margin-bottom: 18px;
text-align: right; }
diff --git a/public/stylesheets/print.css b/public/stylesheets/print.css
index acafac47..a8192ed4 100644
--- a/public/stylesheets/print.css
+++ b/public/stylesheets/print.css
@@ -516,25 +516,24 @@ ul.autocomplete .informal {
text-align: center;
margin: 0 10px 10px 0; }
-#wiki_content {
- border-style: none;
- color: black;
- line-height: 1.5em; }
-
.wiki_show, .wiki_version, .wiki_new, .wiki_edit, .wiki_all {
margin-top: 30px;
padding: 10px; }
- .wiki_show h1, .wiki_version h1, .wiki_new h1, .wiki_edit h1, .wiki_all h1 {
- padding-left: 0;
- padding-top: 10px;
- border-bottom-style: solid; }
- .wiki_show .column_content, .wiki_version .column_content, .wiki_new .column_content, .wiki_edit .column_content, .wiki_all .column_content {
- margin-bottom: 0; }
#wiki_content {
+ border: 1px solid grey;
+ margin-right: 300px;
+ padding: 10px;
+ color: black;
+ line-height: 1.5em;
min-height: 400px; }
#wiki_content span.editsection {
display: none; }
+ #wiki_content h1 {
+ padding-left: 0;
+ padding-top: 10px;
+ border: none;
+ margin-bottom: 10px; }
#wiki_content h2, #wiki_content h3, #wiki_content h4, #wiki_content h5, #wiki_content h6 {
background: transparent none repeat scroll 0 0;
border-bottom: 1px solid #AAAAAA;
@@ -593,8 +592,7 @@ a.new_wiki_link {
#sidebar {
float: right;
- width: 290px;
- margin-top: -60px; }
+ width: 290px; }
#sidebar #sidebar-links {
margin-bottom: 18px;
text-align: right; }
diff --git a/public/stylesheets/sass/main.sass b/public/stylesheets/sass/main.sass
new file mode 100644
index 00000000..f627b5a5
--- /dev/null
+++ b/public/stylesheets/sass/main.sass
@@ -0,0 +1,599 @@
+// colors which are used in the foodsoft
+$main_red: #ED0606
+$hover_yellow: #ffff72
+$boxContent: #e4eed6
+$lightGrey: #efefef
+$darkGreen: #78b74e
+$lightGreen: #e4eed6
+
+/* General rules ... */
+body
+ :background-color #fff
+ :color black
+ :margin 0
+ :padding 1% 0 0 0
+ :min-width 990px
+ :font-size 62.5%
+ :font-family verdana, arial, sans-serif
+
+#loader
+ :position fixed
+ :top 1px
+ :right 1px
+ :background #FFF
+ :padding 10px
+ :color black
+ :border
+ :width 2px
+ :style solid
+ :color $main_red
+
+a, a:visited
+ :text-decoration underline
+ :color black
+
+a:hover
+ :color $main_red
+
+h1, h2
+ :color $main_red
+
+h1
+ :font-size 2.2em
+ :line-height 0.8em
+ :padding 1em 0 5px 5%
+ :margin 0 0 1em 0
+ :border-bottom
+ :width 1px
+ :style dotted
+ :color $main_red
+
+h2
+ :font-size 1.4em
+ :margin-top .5em
+
+h3
+ :font-size 1em
+ :margin-top 1.5em
+
+input
+ :color #2e2e2e
+
+abbr, acronym
+ :cursor help
+
+input, textarea, select
+ border: 1px solid #D7D7D7
+ font-family: verdana, arial, helvetica, sans-serif
+ font-size: 0.9em
+ padding-left: .2em
+ padding-right: .2em
+
+input:focus, textarea:focus, select:focus
+ border-color: #000
+
+input[type="button"], input[type="submit"], input[type="reset"]
+ background: #EEEEEE none repeat scroll 0%
+ border: 1px outset #CCCCCC
+ color: #222222
+ padding: 0.1em 0.5em
+ font-size: 1em
+ font-weight: bold
+ min-width: 34px
+
+select
+ max-width: 15em
+
+option
+ border-top: 1px solid #D7D7D7
+ margin: .2em 0
+
+span.click-me
+ cursor: pointer
+
+.clear
+ clear: both
+
+.description
+ color: grey
+ font-size: 0.9em
+
+// ********************************* loginpage
+#login
+ :margin auto
+ :width 27em
+ :font-size 1.2em
+
+#login #meta
+ :margin-top 2em
+ :padding-top .3em
+ :border-top 1px dotted #ED0606
+ :color #2e2e2e
+
+
+// ******************************** - Logo - head
+#header
+ :margin 0
+ :padding 0
+
+
+#logo
+ :background $main_red
+ :height 1.1em
+ :width 8em
+ :padding 0 20px
+ :text-align left
+ :line-height 54px
+ :font-size 54px
+ :overflow hidden
+ :letter-spacing -3px
+ :margin 0
+ a, a:hover
+ :color white
+ :background-color $main_red
+ :text-decoration none
+ a span
+ :color $main_red
+ :background #FFF
+ :padding-right 0.1em
+ :font-weight bold
+ :border-top
+ :width 2px
+ :style dotted
+ :color $main_red
+
+#logininfo
+ :position absolute
+ :top 3px
+ :right 10px
+ :font-size 1em
+ ul
+ :list-style none
+ li
+ :margin 0 0 0 5px
+ :float left
+ a
+ :color #737272
+ :font-weight bold
+ a:hover
+ :color $main_red
+
+// ************************************* box structure
+#main
+ :background #FFF
+ :padding 0
+ :margin 0 15px 0 15px
+
+// ************************************* infobar
+#infobar
+ :width 10%
+ :min-width 5em
+ :float right
+ :padding 2.6em 1em
+ :margin 3em 0 0 0
+ :border-left 1px dotted #ED0606
+ :font-size 1.2em
+ h3
+ :color #ED0606
+ ul
+ :list-style none
+ li
+ :margin .3em 0 0 -3em
+
+// ************************************ embedded menu
+.menu, #start_nav
+ :border 2px solid #e3e3e3
+ :background #f5f5f5
+ :padding 0 10px 0px 5px
+ :float left
+
+ ul
+ :list-style-type none
+ :margin 0 0 0.2em 0
+ :padding 0
+
+ li
+ :border-bottom 1px solid #dedede
+ :color #666
+ :margin 0.8em 0 0 0
+ :font-weight bold
+ a:link, a:visited
+ :display block
+ :padding 0.25em 1em
+ :text-decoration none
+ :width 12em
+ a:hover, a:focus
+ :background-color #e3e3e3
+
+ ul
+ :margin 0
+ :padding 0
+ li
+ :border-top 1px solid #dedede
+ :border-bottom none
+ :margin 0
+ :font-weight normal
+ a:link, a:visited
+ :width 11.5em
+ :padding 0 1em 0.1em 1.5em
+ :font-weight normal
+ :text-decoration none
+.menu
+ :position absolute
+ :top 100px
+ :right 1px
+
+// ************************************** content
+#content
+ :padding .5em 0 2.5em 0
+ :margin 0
+ :background #FFF
+ :font-size 1.3em
+ :width 100%
+ :float left
+
+
+/************************************ tables
+table
+ :border-collapse collapse
+ // border2px solid #e3e3e3
+ :text-align left
+ :width 100%
+ :margin 0
+
+ thead th, tbody td, th, td
+ :padding 0.3em
+
+ thead tr
+ :background-color #efefef
+ th
+ :color black
+ tr.odd, tr.even
+ :border-top 1px solid #DDDDDD
+ tr.odd, tr.odd input
+ :background-color #F6F6F6
+ tr.even
+ :background-color #FBFBFB
+ tr.unavailable, tr.unavailable a
+ :color grey
+ tr.unavailable a:hover
+ :color #ED0606
+ tr.just_updated
+ :color #008000
+ tr.selected, tr.active
+ :background-color #ffffc2
+ tr.click-me
+ :cursor pointer
+
+table.list
+ //:border 2px solid #78b74e
+ tr
+ :border 1px solid #e3e3e3
+ tbody tr:hover
+ :background-color #EEEEDD
+
+table tfoot tr
+ :background-color #fff
+ td
+ :padding-top 0.8em
+
+tr.edit_inline
+ :background-color $hover_yellow
+ td, span
+ :padding 0.5em 0.2em
+
+div.legend, div.legend table th
+ :color grey
+ :font-size .8em
+ :background none
+
+form table
+ :border none
+
+table.ordered_articles
+ :background-color #fff
+ tbody tr:hover
+ :background-color #EEEEDD
+ a
+ :display block
+ tr.results:hover
+ :background-color none
+ table
+ tfoot
+ :font-weight bold
+
+td.currency, td.actions
+ :text-align right
+ :padding-right 0.5em
+td.closed
+ background: url(/images/arrow_right_red.png) no-repeat center left
+ a
+ display: block
+ text-decoration: none
+ padding-left: 20px
+td.open
+ background: url(/images/arrow_down_red.png) no-repeat center left
+
+// ************************************* for edit formulars */
+div.edit_form
+ :border 2px solid #e3e3e3
+ :background #f5f5f5
+ :padding 0 0.8em 0.8em 0.8em
+ :margin 5px 0
+ :color black
+
+#edit_article, #edit_box, #ajax_box
+ :position fixed
+ :top 5em
+ :left 10em
+ :width 55em
+ :background #FBFBFB
+ :padding 3em
+ :padding-top 1em
+ :border
+ :width 3px
+ :style solid
+ :color $main_red
+
+// ***************************************** other boxes */
+
+// *********boxes in columns ****/
+div.box
+ :border-left 2px solid #78b74e
+ :padding-left 5px
+
+div.single_column
+ :width 100%
+
+div.left_column
+ :width 40%
+ :float left
+
+div.middle_column
+ :width 40%
+ :margin-left 10px
+ :float left
+
+div.right_column
+ :margin-bottom 3em
+ :width 55%
+ :float right
+
+// *********** content of boxes ******/
+
+div.box_title
+ :background #78b74e
+ :padding 5px 10px
+
+ h2, h2 a
+ :color #FFF
+ :margin 0
+ h2
+ :font-size 1.3em
+
+div.column_content
+ :background $boxContent
+ :color black
+ :padding 10px
+ margin-bottom: 2em
+ h2
+ :color black
+ :font-size 1.3em
+ :margin 1em 0 0 0
+ #links
+ :float right
+
+// for special pages
+// index-page
+
+
+
+
+// * article show
+tr.current_price
+ :background #cdee9e
+
+
+// **** maybe later for the very little spinner
+li.check div.spinner
+ :display block
+ :height 5px
+ :width 21px
+ :background-image url(/images/dots-white.gif)
+ :line-height 16px
+ :float left
+ :margin-right 5px
+ :background-position center center
+ :background-repeat no-repeat
+
+
+// ************************************* the order page */
+span.used, span.unused
+ :font-weight bold
+span.used
+ :color #008000
+span.unused
+ :color #ed0606
+span.total
+ :font-size 80%
+table#order
+ :text-align center
+ input
+ :font-size 80%
+ th#col_required, th#col_tolerance
+ :width 145px
+ th#col_packages, th#col_left_units
+ :width 50px
+ td#col_left_units
+ :color #ed0606
+ td
+ :padding 0.6em
+ td.name, tr.note td
+ :text-align left
+ :padding-left 10px
+ tfoot
+ tr
+ :background-color $lightGreen
+ td
+ :padding-right 10px
+ tr.note
+ :background-color #FBFBFB
+ :font-size 0.9em
+ :border-bottom 1px solid #DDDDDD
+ td
+ :padding-left 20px
+
+// ********* Comments
+#newComment
+ :margin 1em
+.comment
+ :border-bottom 1px dotted black
+ :padding .5em 0 1em .5em
+ .timestamp
+ :font-size 0.8em
+ :color grey
+
+// *************** Clearing Order Page ..
+#editOrderNav
+ a
+ :color #fff
+ :font-weight bold
+ ul
+ :margin 0
+ :padding 0
+ li
+ :display inline
+ :list-style none
+ :margin-right 1em
+
+// *************** Tasks ...
+.accepted
+ color: green
+ font-weight: bold
+.done, .done a, .done .accepted
+ color: grey
+ font-weight: normal
+
+// ************** auto_complete
+ul.autocomplete
+ .nick, .informal
+ margin: auto
+ .nick
+ font-weight: bold
+ .informal
+ color: grey
+ margin-left: 1em
+
+// ******* to navigate easy to the next element, e.g. next order
+#element_navigation
+ position: relative
+ top: -1em
+ left: 5%
+
+// group stats
+.stats-bar
+ height: 20px
+ min-width: 10px
+ border: 1px solid #DDDDDD
+ background-color: #fff
+ text-align: center
+ margin: 0 10px 10px 0
+
+// *** wiki
+.wiki_show, .wiki_version, .wiki_new, .wiki_edit, .wiki_all
+ margin-top: 30px
+ padding: 10px
+ .column_content
+
+#wiki_content
+ border: 1px solid grey
+ margin-right: 300px
+ padding: 10px
+ color: black
+ line-height: 1.5em
+ min-height: 400px
+ span.editsection
+ display: none
+ h1
+ padding-left: 0
+ padding-top: 10px
+ border: none
+ margin-bottom: 10px
+ h2, h3, h4, h5, h6
+ background: transparent none repeat scroll 0 0
+ border-bottom: 1px solid #AAAAAA
+ padding-bottom: 0,17em
+ padding-top: 0,5em
+ font-weight: normal
+ font-size: 150%
+ color: black
+ h3, h4, h5, h6
+ border-bottom: medium none
+ font-weight: bold
+ h3
+ font-size: 132%
+ h4
+ font-size: 116%
+ ul
+ line-height: 1.5em
+ margin: 0.3em 0 0 1.5em
+ padding: 0
+ ol
+ line-height: 1.5em
+ margin: 0.3em 0 0 3.2em
+ padding: 0
+ list-style-image: none
+ li
+ margin-bottom: 0.1em
+
+a.new_wiki_link
+ color: grey
+#preview
+ border: 1px dotted grey
+ padding: 0 1em
+#wikitoc
+ padding: 5px
+ margin-bottom: 2em
+ width: 25em
+ border: 1px solid grey
+ background-color: $lightGrey
+ h2
+ font-size: 1em
+ color: black
+ span a
+ font-size: 0.5em
+ color: grey
+
+#breadcrump
+ font-size: 0.5em
+ margin-bottom: 5px
+ height: 1em
+ color: #ED0606
+ a
+ :color $main_red
+ :text-decoration none
+ a:hover
+ :text-decoration underline
+#sidebar
+ float: right
+ width: 290px
+ #sidebar-links
+ margin-bottom: 18px
+ text-align: right
+ #subpages
+ border: 1px solid #78b74e
+ margin-top: 10px
+ padding: 0 0 0 0
+ #versions
+ margin-top: 10px
+ border: 1px solid #78b74e
+
+#wiki-syntax-help
+ float: right
+ table
+ border-color: #78b74e
+
+.wiki_version
+ #sidebar
+ margin-top: -23px
+ border: 1px solid #78b74e
\ No newline at end of file
diff --git a/test/functional/finance/financial_transactions_controller_test.rb b/test/functional/finance/financial_transactions_controller_test.rb
new file mode 100644
index 00000000..7d95690e
--- /dev/null
+++ b/test/functional/finance/financial_transactions_controller_test.rb
@@ -0,0 +1,8 @@
+require 'test_helper'
+
+class Finance::FinancialTransactionsControllerTest < ActionController::TestCase
+ # Replace this with your real tests.
+ test "the truth" do
+ assert true
+ end
+end
diff --git a/test/functional/finance/transactions_controller_test.rb b/test/functional/finance/ordergroups_controller_test.rb
similarity index 60%
rename from test/functional/finance/transactions_controller_test.rb
rename to test/functional/finance/ordergroups_controller_test.rb
index e580421a..4c82eddc 100644
--- a/test/functional/finance/transactions_controller_test.rb
+++ b/test/functional/finance/ordergroups_controller_test.rb
@@ -1,6 +1,6 @@
require 'test_helper'
-class Finance::TransactionsControllerTest < ActionController::TestCase
+class Finance::OrdergroupsControllerTest < ActionController::TestCase
# Replace this with your real tests.
test "the truth" do
assert true
diff --git a/test/unit/helpers/finance/ordergroups_helper_test.rb b/test/unit/helpers/finance/ordergroups_helper_test.rb
new file mode 100644
index 00000000..c1fc1825
--- /dev/null
+++ b/test/unit/helpers/finance/ordergroups_helper_test.rb
@@ -0,0 +1,4 @@
+require 'test_helper'
+
+class Finance::OrdergroupsHelperTest < ActionView::TestCase
+end
|