Compare commits

...

24 commits

Author SHA1 Message Date
Philipp Rothmann
362728fd51 grou order index narrower tables 2023-02-23 16:44:41 +01:00
Philipp Rothmann
376148f8e5 group order switch view next iteration 2023-02-23 14:32:18 +01:00
Philipp Rothmann
7347bff156 grou order edit show less infos 2023-02-23 14:05:50 +01:00
Philipp Rothmann
d0147986d9 group order edit title more clear 2023-02-23 13:29:58 +01:00
Philipp Rothmann
6cec721d4d group order show window with some explanations 2023-02-22 14:31:17 +01:00
Philipp Rothmann
dd7beab9bd group order switch menu use show view 2023-02-22 14:30:23 +01:00
Philipp Rothmann
c3761095e7 group order fix dancing quantity buttons 2023-02-22 14:29:46 +01:00
Philipp Rothmann
9dca57dcef group order package indication uses more color-blind friendly color 2023-02-22 14:28:17 +01:00
Philipp Rothmann
8b86959f13 dashboard make show edit current order action more precise 2023-02-22 12:39:57 +01:00
Philipp Rothmann
fead6a1c0d rework group order show view 2023-02-22 12:12:16 +01:00
Philipp Rothmann
a0d62f7948 wip: rework group order details
tried to reduce the amount of informations shown. but needs some user feedback, what information are actually relevant
2023-02-22 12:12:16 +01:00
Philipp Rothmann
657b3e63bc rework group order edit form
* make switch order a menu list
* table more slim
* alert when balance negative instead of making everything red
* search to the right
2023-02-22 12:12:16 +01:00
Philipp Rothmann
fec94f9683 fix switch menu 2023-02-21 14:07:02 +01:00
Philipp Rothmann
5e9bd17606 group order make 'current orders' more obvious 2023-02-20 22:33:42 +01:00
Philipp Rothmann
ae09bbaced group order pull search to the right 2023-02-20 22:32:33 +01:00
Philipp Rothmann
a847d86121 group order make order details collapse 2023-02-20 22:32:07 +01:00
Philipp Rothmann
2530535244 roup order swap plus and minus buttons
because it's more naturally intuitive like this
2023-02-20 19:35:26 +01:00
Philipp Rothmann
fbe3799c97 order article disabled button should be gray 2023-02-20 19:17:36 +01:00
Philipp Rothmann
3fa8dba5df remove group order panel close buttons
things shouldn't just disapear
2023-02-20 18:57:23 +01:00
Philipp Rothmann
4150403a33 order article colors more friendly and more responsive 2023-02-20 18:52:13 +01:00
86708f6f8d solve hover problem for ordering articles 2023-02-20 17:43:27 +01:00
37743d4586 fix behavior - when link is provided in article details not clickable due to hover property 2023-02-20 17:42:57 +01:00
91a38bc73b move BigDecimal.new to BigDecimal() 2023-02-17 13:16:28 +01:00
782194cd08 change .search to .ransack for updated ransack gem 2023-02-17 13:16:19 +01:00
18 changed files with 402 additions and 301 deletions

View file

@ -179,17 +179,13 @@ function updateBalance() {
var balance = groupBalance - total; var balance = groupBalance - total;
$('#new_balance').html(I18n.l("currency", balance)); $('#new_balance').html(I18n.l("currency", balance));
$('#total_balance').val(I18n.l("currency", balance)); $('#total_balance').val(I18n.l("currency", balance));
// determine bgcolor and submit button state according to balance
var bgcolor = '';
if (balance < minimumBalance) { if (balance < minimumBalance) {
bgcolor = '#FF0000';
$('#submit_button').attr('disabled', 'disabled') $('#submit_button').attr('disabled', 'disabled')
$('#balance-alert').css('display', 'block')
} else { } else {
$('#submit_button').removeAttr('disabled') $('#submit_button').removeAttr('disabled')
} $('#balance-alert').css('display', 'none')
// update bgcolor
for (i in itemTotal) {
$('#td_price_' + i).css('background-color', bgcolor);
} }
} }

View file

@ -230,7 +230,7 @@ table {
margin: .5em 0; margin: .5em 0;
input:disabled { input:disabled {
background-color: red; } background-color: gray; }
} }
} }
} }
@ -241,6 +241,9 @@ table {
tr.order-article:hover .article-info { tr.order-article:hover .article-info {
display: none; display: none;
} }
tr.order-article:focus .article-info {
display: none;
}
} }
#order-footer { #order-footer {
@ -275,10 +278,13 @@ tr.order-article .article-info {
display: none; display: none;
} }
tr.order-article:hover .article-info { tr.order-article:focus .article-info {
display: block; display: block;
} }
tr.order-article:focus {
background-color: #E9E9E9;
}
// ********* Articles // ********* Articles

View file

@ -1,11 +1,23 @@
.list .missing-many td, .list .missing-many:hover td { .missing-many td {
background-color: #ebbebe; background-color: #ffc590aa;
} }
.list .missing-few td, .list .missing-few:hover td { .missing-many:hover td, .missing-many:focus td {
background-color: #ffee75; background-color: #ffc590;
} }
.list .missing-none td, .list .missing-none:hover td { .missing-few td {
background-color: #E4EED6; background-color: #fcf488aa;
}
.missing-few:hover td, .missing-few:focus td {
background-color: #fcf488;
}
.missing-none td {
background-color: #d0f6ffaa;
}
.missing-none:hover td, .missing-none:focus td {
background-color: #d0f6ff;
} }

View file

@ -18,7 +18,7 @@ class Finance::FinancialTransactionsController < ApplicationController
sort = "created_on DESC" sort = "created_on DESC"
end end
@q = FinancialTransaction.search(params[:q]) @q = FinancialTransaction.ransack(params[:q])
@financial_transactions_all = @q.result(distinct: true).includes(:user).order(sort) @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.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_id: @ordergroup.id) if @ordergroup

View file

@ -32,8 +32,8 @@ class GroupOrder < ApplicationRecord
# Generate some data for the javascript methods in ordering view # Generate some data for the javascript methods in ordering view
def load_data def load_data
data = {} data = {}
data[:account_balance] = ordergroup.nil? ? BigDecimal.new('+Infinity') : ordergroup.account_balance data[:account_balance] = ordergroup.nil? ? BigDecimal('+Infinity') : ordergroup.account_balance
data[:available_funds] = ordergroup.nil? ? BigDecimal.new('+Infinity') : ordergroup.get_available_funds(self) data[:available_funds] = ordergroup.nil? ? BigDecimal('+Infinity') : ordergroup.get_available_funds(self)
# load prices and other stuff.... # load prices and other stuff....
data[:order_articles] = {} data[:order_articles] = {}

View file

@ -0,0 +1,15 @@
%h4= t '.title'
%hr
%table.table-condensed
%thead
%th= t '.package_fill_level'
%tbody
%tr{class: "missing-none"}
%td= t '.missing_none'
%tr{class: "missing-few"}
%td= t '.missing_few'
%tr{class: "missing-many"}
%td= t '.missing_many'
%hr
%b= t('.tolerance') + ':'
= t '.tolerance_explained'

View file

@ -11,170 +11,140 @@
var listjsResetPlugin = ['reset', {highlightClass: 'btn-primary'}]; var listjsResetPlugin = ['reset', {highlightClass: 'btn-primary'}];
var listjsDelayPlugin = ['delay', {delayedSearchTime: 500}]; var listjsDelayPlugin = ['delay', {delayedSearchTime: 500}];
new List(document.body, { new List(document.body, {
valueNames: ['name'], valueNames: ['name'],
engine: 'unlist', engine: 'unlist',
plugins: [listjsResetPlugin, listjsDelayPlugin], plugins: [listjsResetPlugin, listjsDelayPlugin],
// make large pages work too (as we don't have paging - articles may disappear!) // make large pages work too (as we don't have paging - articles may disappear!)
page: 10000, page: 10000,
indexAsync: true indexAsync: true
}); });
}); });
- title t('.title'), false - title t('.title'), false
.alert.alert-error#balance-alert{style: ('display:none')}
=t 'group_orders.errors.balance_alert'
.row-fluid .row-fluid
.well.pull-left .span2
= close_button :alert .well
%h2= @order.name = render 'switch_order', current_order: @order
%dl.dl-horizontal .well
- unless @order.note.blank? = render 'explanations'
%dt= heading_helper Order, :note .well.span9
%dd= @order.note %h2.span9= t '.sub_title', order_name: @order.name
%dt= heading_helper Order, :created_by .span3
%dd= show_user_link(@order.created_by) %table.table-condensed
%dt= heading_helper Order, :ends -if @order.ends
%dd= format_time(@order.ends) %tr
%dt= heading_helper Order, :pickup %td= heading_helper(Order, :ends) + ': '
%dd= format_date(@order.pickup) %td= format_time(@order.ends)
- unless @order.stockit? or @order.supplier.min_order_quantity.blank? - unless @order.stockit? or @order.supplier.min_order_quantity.blank?
%dt= heading_helper Supplier, :min_order_quantity, short: true %tr
%dd= @order.supplier.min_order_quantity %td= heading_helper(Supplier, :min_order_quantity)
%dt= t '.sum_amount' %td= number_to_currency(@order.supplier.min_order_quantity)
%dd= number_to_currency @order.sum %tr
- unless @group_order.new_record? %td= t('group_orders.form.sum_amount') + ':'
%dt= heading_helper GroupOrder, :updated_by %td= number_to_currency(@order.sum)
%dd %hr
= show_user(@group_order.updated_by) .form-search.pull-right
(#{format_time(@group_order.updated_on)})
%dt= heading_helper Ordergroup, :account_balance
%dd= number_to_currency(@ordering_data[:account_balance])
- unless FoodsoftConfig[:charge_members_manually]
%dt= heading_helper Ordergroup, :available_funds
%dd= number_to_currency(@ordering_data[:available_funds])
.well.pull-right
= close_button :alert
= render 'switch_order', current_order: @order
.row-fluid
.well.clear
.form-search
.input-append .input-append
= text_field_tag :article, params[:article], placeholder: t('.search_article'), class: 'search-query delayed-search resettable' = text_field_tag :article, params[:article], placeholder: t('.search_article'), class: 'search-query delayed-search resettable'
%button.add-on.btn.reset-search{:type => :button, :title => t('.reset_article_search')} %button.add-on.btn.reset-search{:type => :button, :title => t('.reset_article_search')}
%i.icon.icon-remove %i.icon.icon-remove
= form_for @group_order do |f|
= form_for @group_order do |f| = f.hidden_field :lock_version
= f.hidden_field :lock_version = f.hidden_field :order_id
= f.hidden_field :order_id = f.hidden_field :updated_by_user_id
= f.hidden_field :updated_by_user_id = f.hidden_field :ordergroup_id
= f.hidden_field :ordergroup_id %table.table
%table.table.table-hover %thead
%thead %tr
%tr %th= heading_helper Article, :name
%th= heading_helper Article, :name
- if @order.stockit?
%th{style: 'width:120px'}= heading_helper StockArticle, :supplier
%th{style: "width:13px;"}
%th{style: "width:4.5em;"}= t '.price'
%th{style: "width:4.5em;"}= heading_helper Article, :unit
- unless @order.stockit?
%th{style: "width:70px;"}= heading_helper OrderArticle, :missing_units, short: true
%th#col_required= heading_helper GroupOrderArticle, :quantity
%th#col_tolerance= heading_helper GroupOrderArticle, :tolerance
- else
%th(style="width:20px")= heading_helper StockArticle, :available
%th#col_required= heading_helper GroupOrderArticle, :quantity
%th{style: "width:15px;"}= heading_helper GroupOrderArticle, :total_price
%tbody.list
- @order.articles_grouped_by_category.each do |category, order_articles|
%tr.list-heading.article-category
%td
= category
%i.icon-tag
%td{colspan: "9"}
- order_articles.each do |order_article|
%tr{class: "#{cycle('even', 'odd', name: 'articles')} order-article #{get_missing_units_css_class(@ordering_data[:order_articles][order_article.id][:missing_units])}", valign: "top"}
%td.name= order_article.article.name
- if @order.stockit? - if @order.stockit?
%td= truncate order_article.article.supplier.name, length: 15 %th{style: 'width:120px'}= heading_helper StockArticle, :supplier
%td= h order_article.article.origin %th{style: "width:13px;"}
%td= number_to_currency(@ordering_data[:order_articles][order_article.id][:price]) %th{style: "width:4.5em;"}= t '.price'
%td= order_article.article.unit %th{style: "width:4.5em;"}= heading_helper Article, :unit
%td - unless @order.stockit?
- if @order.stockit? %th{style: "width:70px;"}= heading_helper OrderArticle, :missing_units, short: true
= @ordering_data[:order_articles][order_article.id][:quantity_available] %th#col_required= heading_helper GroupOrderArticle, :quantity
- else %th#col_tolerance= heading_helper GroupOrderArticle, :tolerance
%span{id: "missing_units_#{order_article.id}"}= @ordering_data[:order_articles][order_article.id][:missing_units] - else
%th(style="width:20px")= heading_helper StockArticle, :available
%th#col_required= heading_helper GroupOrderArticle, :quantity
%th{style: "width:15px;"}= heading_helper GroupOrderArticle, :total_price
%tbody.list
- @order.articles_grouped_by_category.each do | category, order_articles|
%tr.list-heading.article-category
%td
= category
%i.icon-tag
%td{colspan: "9"}
- order_articles.each do |order_article|
%tr{class: "#{cycle('even', 'odd', name: 'articles')} order-article #{get_missing_units_css_class(@ordering_data[:order_articles][order_article.id][:missing_units])}", valign: "top", tabindex: "0"}
%td.name= order_article.article.name
- if @order.stockit?
%td= truncate order_article.article.supplier.name, length: 15
%td= h order_article.article.origin
%td= number_to_currency(@ordering_data[:order_articles][order_article.id][:price])
%td= order_article.article.unit
%td
- if @order.stockit?
= @ordering_data[:order_articles][order_article.id][:quantity_available]
- else
%span{id: "missing_units_#{order_article.id}"}= @ordering_data[:order_articles][order_article.id][:missing_units]
%td.quantity %td.quantity
%input{id: "q_#{order_article.id}", name: "group_order[group_order_articles_attributes][#{order_article.id}][quantity]", type: "hidden", value: @ordering_data[:order_articles][order_article.id][:quantity], 'data-min' => (@ordering_data[:order_articles][order_article.id][:quantity] if @order.boxfill?), 'data-max' => (@ordering_data[:order_articles][order_article.id][:quantity]+@ordering_data[:order_articles][order_article.id][:missing_units] if @order.boxfill?)}/ .outer{style: "diyplay: inline-block; float: left; width: 50px;"}
%span.used{id: "q_used_#{order_article.id}"}= @ordering_data[:order_articles][order_article.id][:used_quantity] %input{id: "q_#{order_article.id}", name: "group_order[group_order_articles_attributes][#{order_article.id}][quantity]", type: "hidden", value: @ordering_data[:order_articles][order_article.id][:quantity], 'data-min' => (@ordering_data[:order_articles][order_article.id][:quantity] if @order.boxfill?), 'data-max' => (@ordering_data[:order_articles][order_article.id][:quantity]+@ordering_data[:order_articles][order_article.id][:missing_units] if @order.boxfill?)}/
+ %span.used{id: "q_used_#{order_article.id}"}= @ordering_data[:order_articles][order_article.id][:used_quantity]
%span.unused{id: "q_unused_#{order_article.id}"}= @ordering_data[:order_articles][order_article.id][:quantity] - @ordering_data[:order_articles][order_article.id][:used_quantity] +
.btn-group %span.unused{id: "q_unused_#{order_article.id}"}= @ordering_data[:order_articles][order_article.id][:quantity] - @ordering_data[:order_articles][order_article.id][:used_quantity]
%a.btn.btn-ordering{'data-increase_quantity' => order_article.id} .btn-group
%i.icon-plus %a.btn.btn-ordering{'data-decrease_quantity' => order_article.id}
%a.btn.btn-ordering{'data-decrease_quantity' => order_article.id} %i.icon-minus
%i.icon-minus %a.btn.btn-ordering{'data-increase_quantity' => order_article.id}
%i.icon-plus
%td.tolerance{style: ('display:none' if @order.stockit?)} %td.tolerance{style: ('display:none' if @order.stockit?)}
%input{id: "t_#{order_article.id}", name: "group_order[group_order_articles_attributes][#{order_article.id}][tolerance]", type: "hidden", value: @ordering_data[:order_articles][order_article.id][:tolerance], 'data-min' => (@ordering_data[:order_articles][order_article.id][:tolerance] if @order.boxfill?)}/ %input{id: "t_#{order_article.id}", name: "group_order[group_order_articles_attributes][#{order_article.id}][tolerance]", type: "hidden", value: @ordering_data[:order_articles][order_article.id][:tolerance], 'data-min' => (@ordering_data[:order_articles][order_article.id][:tolerance] if @order.boxfill?)}/
- if (@ordering_data[:order_articles][order_article.id][:unit] > 1) - if (@ordering_data[:order_articles][order_article.id][:unit] > 1)
%span.used{id: "t_used_#{order_article.id}"}= @ordering_data[:order_articles][order_article.id][:used_tolerance] %span.used{id: "t_used_#{order_article.id}"}= @ordering_data[:order_articles][order_article.id][:used_tolerance]
+ +
%span.unused{id: "t_unused_#{order_article.id}"}= @ordering_data[:order_articles][order_article.id][:tolerance] - @ordering_data[:order_articles][order_article.id][:used_tolerance] %span.unused{id: "t_unused_#{order_article.id}"}= @ordering_data[:order_articles][order_article.id][:tolerance] - @ordering_data[:order_articles][order_article.id][:used_tolerance]
.btn-group .btn-group
%a.btn.btn-ordering{'data-increase_tolerance' => order_article.id} %a.btn.btn-ordering{'data-decrease_tolerance' => order_article.id}
%i.icon-plus %i.icon-minus
%a.btn.btn-ordering{'data-decrease_tolerance' => order_article.id} %a.btn.btn-ordering{'data-increase_tolerance' => order_article.id}
%i.icon-minus %i.icon-plus
%td{id: "td_price_#{order_article.id}", style: "text-align:right; padding-right:10px; width:4em"} %td{id: "td_price_#{order_article.id}", style: "text-align:right; padding-right:10px; width:4em"}
%span{id: "price_#{order_article.id}_display"}= number_to_currency(@ordering_data[:order_articles][order_article.id][:total_price]) %span{id: "price_#{order_article.id}_display"}= number_to_currency(@ordering_data[:order_articles][order_article.id][:total_price])
.article-info .article-info
.article-name= order_article.article.name .article-name= order_article.article.name
.pull-right .pull-right
= t('.units_full') + ':' = t('.units_full') + ':'
%span{id: "units_#{order_article.id}"}= order_article.units_to_order %span{id: "units_#{order_article.id}"}= order_article.units_to_order
%br/ %br/
= t('.units_total') + ':' = t('.units_total') + ':'
%span{id: "q_total_#{order_article.id}"}= @ordering_data[:order_articles][order_article.id][:quantity] + @ordering_data[:order_articles][order_article.id][:others_quantity] %span{id: "q_total_#{order_article.id}"}= @ordering_data[:order_articles][order_article.id][:quantity] + @ordering_data[:order_articles][order_article.id][:others_quantity]
%br/ %br/
= t('.total_tolerance') + ':' = t('.total_tolerance') + ':'
%span{id: "t_total_#{order_article.id}"}= @ordering_data[:order_articles][order_article.id][:tolerance] + @ordering_data[:order_articles][order_article.id][:others_tolerance] %span{id: "t_total_#{order_article.id}"}= @ordering_data[:order_articles][order_article.id][:tolerance] + @ordering_data[:order_articles][order_article.id][:others_tolerance]
%br/ %br/
.pull-left .pull-left
#{heading_helper Article, :manufacturer}: #{order_article.article.manufacturer} #{heading_helper Article, :manufacturer}: #{order_article.article.manufacturer}
%br/ %br/
#{heading_helper Article, :units}: #{@order.stockit? ? order_article.article.quantity_available : @ordering_data[:order_articles][order_article.id][:unit]} * #{h order_article.article.unit} #{heading_helper Article, :units}: #{@order.stockit? ? order_article.article.quantity_available : @ordering_data[:order_articles][order_article.id][:unit]} * #{h order_article.article.unit}
%br/ %br/
#{heading_helper Article, :note}: #{order_article.article.note} #{heading_helper Article, :note}: #{order_article.article.note}
%br/ %br/
#order-footer #order-footer
#info-box #info-box
#total-sum #total-sum
%table = render 'total_sum'
%tr #order-button
%td= t('.total_sum_amount') + ':' = submit_tag( t('.action_save'), id: 'submit_button', class: 'btn btn-primary' )
%td.currency #{link_to t('ui.or_cancel'), group_orders_path}
%span#total_price= number_to_currency(@group_order.price) %input#total_balance{name: "total_balance", type: "hidden", value: @ordergroup.account_balance - @group_order.price}/
%tr %input{name: "version", type: "hidden", value: @version}/
- if FoodsoftConfig[:charge_members_manually]
- old_balance = @ordering_data[:account_balance]
%td= heading_helper(Ordergroup, :account_balance) + ':'
%td.currency= number_to_currency(@ordering_data[:account_balance])
- else
- old_balance = @ordering_data[:available_funds]
%td= heading_helper(Ordergroup, :available_funds) + ':'
%td.currency= number_to_currency(@ordering_data[:available_funds])
%tr
%td= t('.new_funds') + ':'
%td.currency
%strong
%span#new_balance= number_to_currency(old_balance - @group_order.price)
#order-button
= submit_tag( t('.action_save'), id: 'submit_button', class: 'btn btn-primary' )
#{link_to t('ui.or_cancel'), group_orders_path}
%input#total_balance{name: "total_balance", type: "hidden", value: @ordergroup.account_balance - @group_order.price}/
%input{name: "version", type: "hidden", value: @version}/

View file

@ -0,0 +1,62 @@
%dl.dl-horizontal
// GENERAL ORDER DETAILS FOR ALL
// Name
%dt= heading_helper Order, :name
%dd= @order.name
// Order Ends
%dt= heading_helper Order, :ends
%dd= format_time(@order.ends)
// Pickup
- unless @order.pickup.blank?
%dt= heading_helper Order, :pickup
%dd= format_date(@order.pickup)
// Min Order Quantity
- unless @order.stockit? or @order.supplier.min_order_quantity.blank?
%dt= heading_helper Supplier, :min_order_quantity, short: true
%dd= @order.supplier.min_order_quantity
// Group Order Sum Amount
%dt= t 'group_orders.form.sum_amount'
%dd= number_to_currency @order.sum
// Created By
%dt= heading_helper Order, :created_by
%dd= show_user_link(@order.created_by)
// Updated By
- unless @group_order.new_record?
%dt= heading_helper GroupOrder, :updated_by
%dd
= show_user(@group_order.updated_by)
(#{format_time(@group_order.updated_on)})
// Closed By
- if @order.closed?
%dt= heading_helper Order, :closed_by
%dd= show_user_link @order.updated_by
// Note
- unless @order.note.blank?
%dt= heading_helper Order, :note
%dd= @order.note
-# // YOUR ORDER DETAILS
-# // TODO What do users want to see here?
-# %dl.dl-horizontal
-# // YOUR CREDIT
-# - if @ordering_data
-# %dt= heading_helper Ordergroup, :account_balance
-# %dd= number_to_currency(@ordering_data[:account_balance])
-# - unless FoodsoftConfig[:charge_members_manually]
-# %dt= heading_helper Ordergroup, :available_funds
-# %dd= number_to_currency(@ordering_data[:available_funds])
-# // Price of this order
-# %dt= heading_helper GroupOrder, :price
-# %dd
-# - if @group_order
-# = number_to_currency(@group_order.price)
-# - else
-# = t '.not_ordered'
-# // Order Transport Costs
-# - if @group_order && @group_order.transport
-# %dt= heading_helper GroupOrder, :transport
-# %dd= number_to_currency(@group_order.transport)
-# %dt= heading_helper GroupOrder, :total
-# %dd= number_to_currency(@group_order.total)

View file

@ -1,9 +1,10 @@
- orders = Order.open.started.reject{ |order| order == current_order } - orders = Order.open.started
- unless orders.empty? - unless orders.empty?
%h2= t '.title' %ul.nav.nav-pills.nav-stacked
%ul.unstyled .nav-header= t '.title'
%li= link_to t('ui.overview'), :group_orders
- orders.each do |order| - orders.each do |order|
%li .btn-small.pull-right
= link_to_ordering(order, 'data-confirm_switch_order' => true) =link_to_ordering(order, style: (order == current_order ? 'color: white' : '' ), 'data-confirm_switch_order' => true){ t 'ui.edit' }
- if order.ends %li( class="#{ order == current_order ? 'active' : ''}")
= t '.remaining', remaining: time_ago_in_words(order.ends) =link_to_ordering(order, show: true, 'data-confirm_switch_order' => true)

View file

@ -0,0 +1,19 @@
%table
%tr
%td= t('group_orders.form.total_sum_amount') + ':'
%td.currency
%span#total_price= number_to_currency(@group_order.price)
%tr
- if FoodsoftConfig[:charge_members_manually]
- old_balance = @ordering_data[:account_balance]
%td= heading_helper(Ordergroup, :account_balance) + ':'
%td.currency= number_to_currency(@ordering_data[:account_balance])
- else
- old_balance = @ordering_data[:available_funds]
%td= heading_helper(Ordergroup, :available_funds) + ':'
%td.currency= number_to_currency(@ordering_data[:available_funds])
%tr
%td= t('group_orders.form.new_funds') + ':'
%td.currency
%strong
%span#new_balance= number_to_currency(old_balance - @group_order.price)

View file

@ -18,22 +18,27 @@
%th= heading_helper Ordergroup, :available_funds %th= heading_helper Ordergroup, :available_funds
%th.numeric= number_to_currency(@ordergroup.get_available_funds) %th.numeric= number_to_currency(@ordergroup.get_available_funds)
= render :partial => "shared/open_orders", :locals => {:ordergroup => @ordergroup} .row-fluid
.span9
// finished orders = render :partial => "shared/open_orders", :locals => {:ordergroup => @ordergroup}
// finished orders
- unless @finished_not_closed_orders_including_group_order.empty? - unless @finished_not_closed_orders_including_group_order.empty?
%section .row-fluid
%h2= t '.finished_orders.title' .span9
= render partial: 'orders', locals: {orders: @finished_not_closed_orders_including_group_order, pagination: false} %section
- if @ordergroup.value_of_finished_orders > 0 %h2= t '.finished_orders.title'
%p = render partial: 'orders', locals: {orders: @finished_not_closed_orders_including_group_order, pagination: false}
= t('.finished_orders.total_sum') + ':' - if @ordergroup.value_of_finished_orders > 0
%b= number_to_currency(@ordergroup.value_of_finished_orders) %p
= t('.finished_orders.total_sum') + ':'
%b= number_to_currency(@ordergroup.value_of_finished_orders)
// closed orders // closed orders
- unless @closed_orders_including_group_order.empty? - unless @closed_orders_including_group_order.empty?
%section .row-fluid
%h2= t '.closed_orders.title' .span9
= render partial: 'orders', locals: {orders: @closed_orders_including_group_order, pagination: false} %section
%br/ %h2= t '.closed_orders.title'
= link_to t('.closed_orders.more'), archive_group_orders_path = render partial: 'orders', locals: {orders: @closed_orders_including_group_order, pagination: false}
%br/
= link_to t('.closed_orders.more'), archive_group_orders_path

View file

@ -7,107 +7,81 @@
- title t('.title', order: @order.name) - title t('.title', order: @order.name)
.row-fluid .row-fluid
.well.pull-left
// Order summary
%dl.dl-horizontal
%dt= heading_helper Order, :name
%dd= @order.name
%dt= heading_helper Order, :note
%dd= @order.note
%dt= heading_helper Order, :ends
%dd= format_time(@order.ends)
%dt= heading_helper Order, :pickup
%dd= format_date(@order.pickup)
%dt= heading_helper GroupOrder, :price
%dd
- if @group_order
= number_to_currency(@group_order.price)
- else
= t '.not_ordered'
- if @group_order && @group_order.transport
%dt= heading_helper GroupOrder, :transport
%dd= number_to_currency(@group_order.transport)
%dt= heading_helper GroupOrder, :total
%dd= number_to_currency(@group_order.total)
- if @order.closed?
%dt= heading_helper Order, :closed_by
%dd= show_user_link @order.updated_by
%p= link_to t('.comment'), "#comments"
.well.pull-right .well.span2
= close_button :alert
= render 'switch_order', current_order: @order = render 'switch_order', current_order: @order
.well.span9
%h2= t '.articles.title'
=render 'order_details'
// Article box // Article box
%section %section
%h2= t '.articles.title' .column_content#result
.column_content#result - if @group_order
- if @group_order %p= link_to t('.articles.show_hide'), '#', 'data-toggle-this' => 'tr.ignored'
%p.pull-right= link_to t('.articles.show_hide'), '#', 'data-toggle-this' => 'tr.ignored' %table.table.table-hover
%p= link_to(t('.articles.edit_order'), edit_group_order_path(@group_order, order_id: @order.id), class: 'btn btn-primary') if @order.open? %thead
%table.table.table-hover %tr
%thead %th{style: "width:40%"}= heading_helper Article, :name
%tr %th= heading_helper Article, :units
%th{style: "width:40%"}= heading_helper Article, :name %th= t '.articles.unit_price'
%th= heading_helper Article, :units %th
%th= t '.articles.unit_price' %abbr{title: t('.articles.ordered_title')}= t '.articles.ordered'
%th %th
%abbr{title: t('.articles.ordered_title')}= t '.articles.ordered' %abbr{title: t('.articles.order_nopen_title')}
%th - if @order.open?
%abbr{title: t('.articles.order_nopen_title')} = t '.articles.order_open'
- if @order.open? - else
= t '.articles.order_open' = t '.articles.order_not_open'
- else %th= heading_helper GroupOrderArticle, :total_price
= t '.articles.order_not_open' %tbody
%th= heading_helper GroupOrderArticle, :total_price - for category_name, order_articles in @order.articles_grouped_by_category
%tbody %tr.article-category
- for category_name, order_articles in @order.articles_grouped_by_category %td
%tr.article-category = category_name
%td %i.icon-tag
= category_name %td{colspan: "9"}
%i.icon-tag - order_articles.each do |oa|
%td{colspan: "9"} - # get the order-results for the ordergroup
- order_articles.each do |oa| - r = get_order_results(oa, @group_order.id)
- # get the order-results for the ordergroup %tr{class: cycle('even', 'odd', name: 'articles') + " " + order_article_class_name(r[:quantity], r[:tolerance], r[:result])}
- r = get_order_results(oa, @group_order.id) %td{style: "width:40%"}
%tr{class: cycle('even', 'odd', name: 'articles') + " " + order_article_class_name(r[:quantity], r[:tolerance], r[:result])} = oa.article.name
%td{style: "width:40%"} - unless oa.article.note.blank?
= oa.article.name = image_tag("lamp_grey.png", {alt: t('.articles.show_note'), size: "15x16", border: "0", onmouseover: "$('#note_#{oa.id}').show();", onmouseout: "$('#note_#{oa.id}').hide();"})
%td= "#{oa.price.unit_quantity} x #{oa.article.unit}"
%td= number_to_currency(oa.price.fc_price)
%td
= r[:quantity]
= "+ #{r[:tolerance]}" if oa.price.unit_quantity > 1
%td= r[:result] > 0 ? r[:result] : "0"
%td= number_to_currency(r[:sub_total])
- unless oa.article.note.blank? - unless oa.article.note.blank?
= image_tag("lamp_grey.png", {alt: t('.articles.show_note'), size: "15x16", border: "0", onmouseover: "$('#note_#{oa.id}').show();", onmouseout: "$('#note_#{oa.id}').hide();"}) %tr{id: "note_#{oa.id}", class: "note even", style: "display:none"}
%td= "#{oa.price.unit_quantity} x #{oa.article.unit}" %td{colspan: "6"}=h oa.article.note
%td= number_to_currency(oa.price.fc_price) %tr{class: cycle('even', 'odd', name: 'articles')}
%td %th{colspan: "5"}= heading_helper GroupOrder, :price
= r[:quantity] %th= number_to_currency(@group_order.price)
= "+ #{r[:tolerance]}" if oa.price.unit_quantity > 1 - if @group_order.transport
%td= r[:result] > 0 ? r[:result] : "0" %tr{class: cycle('even', 'odd', name: 'articles')}
%td= number_to_currency(r[:sub_total]) %td{colspan: "5"}= heading_helper GroupOrder, :transport
- unless oa.article.note.blank? %td= number_to_currency(@group_order.transport)
%tr{id: "note_#{oa.id}", class: "note even", style: "display:none"} %tr{class: cycle('even', 'odd', name: 'articles')}
%td{colspan: "6"}=h oa.article.note %th{colspan: "5"}= heading_helper GroupOrder, :total
%tr{class: cycle('even', 'odd', name: 'articles')} %th= number_to_currency(@group_order.total)
%th{colspan: "5"}= heading_helper GroupOrder, :price %br/
%th= number_to_currency(@group_order.price) = link_to_top
- if @group_order.transport %p.pull-right= link_to(t('.articles.edit_order'), edit_group_order_path(@group_order, order_id: @order.id), class: 'btn btn-primary') if @order.open?
%tr{class: cycle('even', 'odd', name: 'articles')} - else
%td{colspan: "5"}= heading_helper GroupOrder, :transport - if @order.open?
%td= number_to_currency(@group_order.transport) = t '.articles.not_ordered_msg'
%tr{class: cycle('even', 'odd', name: 'articles')} = link_to t('.articles.order_now'), action: "order", id: @order
%th{colspan: "5"}= heading_helper GroupOrder, :total - else
%th= number_to_currency(@group_order.total) = t '.articles.order_closed_msg'
%br/
= link_to_top
- else
- if @order.open?
= t '.articles.not_ordered_msg'
= link_to t('.articles.order_now'), action: "order", id: @order
- else
= t '.articles.order_closed_msg'
// Comments box // Comments box
%section %hr
%h2= t '.comments.title' %h2= t '.comments.title'
#comments #comments
= render 'shared/comments', comments: @order.comments = render 'shared/comments', comments: @order.comments
#new_comment= render 'order_comments/form', order_comment: @order.comments.build(user: current_user) #new_comment= render 'order_comments/form', order_comment: @order.comments.build(user: current_user)
= link_to_top = link_to_top

View file

@ -9,6 +9,7 @@
%thead %thead
%tr %tr
%th= heading_helper Order, :name %th= heading_helper Order, :name
%th
%th= heading_helper Order, :pickup %th= heading_helper Order, :pickup
%th= heading_helper Order, :ends %th= heading_helper Order, :ends
%th= t '.who_ordered' %th= t '.who_ordered'
@ -17,21 +18,23 @@
- total = 0 - total = 0
- orders.each do |order| - orders.each do |order|
%tr %tr
%td= link_to_ordering(order) %td
= link_to_ordering(order, show: true)
%td
.btn-small= link_to_ordering(order){ t 'ui.edit' }
%td= format_date(order.pickup) unless order.pickup.nil? %td= format_date(order.pickup) unless order.pickup.nil?
%td= format_time(order.ends) unless order.ends.nil? %td= format_time(order.ends) unless order.ends.nil?
- if group_order = order.group_order(ordergroup) - if group_order = order.group_order(ordergroup)
- total += group_order.price - total += group_order.price
%td= "#{show_user group_order.updated_by} (#{format_time(group_order.updated_on)})" %td= "#{show_user group_order.updated_by} (#{format_time(group_order.updated_on)})"
%td.numeric %td.numeric
= link_to_ordering(order, show: true) do = number_to_currency(group_order.price)
= number_to_currency(group_order.price)
- else - else
%td{:colspan => 2} %td{:colspan => 2}
- if total > 0 - if total > 0
%tfooter %tfooter
%tr %tr
%th(colspan="3") %th(colspan="4")
%th= t('.total_sum') + ':' %th= t('.total_sum') + ':'
%th.numeric= number_to_currency(total) %th.numeric= number_to_currency(total)
- else - else

View file

@ -3,7 +3,7 @@ class String
# remove comma from decimal inputs # remove comma from decimal inputs
def self.delocalized_decimal(string) def self.delocalized_decimal(string)
if !string.blank? and string.is_a?(String) if !string.blank? and string.is_a?(String)
BigDecimal.new(string.sub(',', '.')) BigDecimal(string.sub(',', '.'))
else else
string string
end end

View file

@ -1045,9 +1045,23 @@ de:
error_stale: In der Zwischenzeit hat jemand anderes auch bestellt, daher konnte die Bestellung nicht aktualisiert werden. error_stale: In der Zwischenzeit hat jemand anderes auch bestellt, daher konnte die Bestellung nicht aktualisiert werden.
notice: Die Bestellung wurde gespeichert. notice: Die Bestellung wurde gespeichert.
errors: errors:
balance_alert: Kontostand im Minus
closed: Diese Bestellung ist bereits abgeschlossen. closed: Diese Bestellung ist bereits abgeschlossen.
no_member: Du bist kein Mitglieder einer Bestellgruppe. no_member: Du bist kein Mitglieder einer Bestellgruppe.
notfound: Fehlerhafte URL, das ist nicht Deine Bestellung. notfound: Fehlerhafte URL, das ist nicht Deine Bestellung.
explanations:
package_fill_level: |
Gebindefüllstand
missing_none: |
Voll
missing_few: |
Wenig fehlt
missing_many: |
Viel fehlt
title: Erklärungen
tolerance_explained: |
Zusätzliche Menge die du bestellen würdest, damit das Gebinde voll wird.
tolerance: Toleranz
form: form:
action_save: Bestellung speichern action_save: Bestellung speichern
new_funds: Neuer Kontostand new_funds: Neuer Kontostand
@ -1056,6 +1070,7 @@ de:
search_article: Artikel suchen... search_article: Artikel suchen...
sum_amount: Gesamtbestellmenge bisher sum_amount: Gesamtbestellmenge bisher
title: Bestellen title: Bestellen
sub_title: Bestellung für %{order_name} aufgeben
total_sum_amount: Gesamtbetrag total_sum_amount: Gesamtbetrag
total_tolerance: Gesamt-Toleranz total_tolerance: Gesamt-Toleranz
units: Gebinde units: Gebinde
@ -1099,8 +1114,10 @@ de:
sum: Summe sum: Summe
title: Dein Bestellergebnis für %{order} title: Dein Bestellergebnis für %{order}
switch_order: switch_order:
remaining: "noch %{remaining}" remaining: "%{remaining} bis Bestellschluss"
title: Laufende Bestellungen title: Laufende Bestellungen
order_details:
details: Details anzeigen
update: update:
error_general: Die Bestellung konnte nicht aktualisiert werden, da ein Fehler auftrat. error_general: Die Bestellung konnte nicht aktualisiert werden, da ein Fehler auftrat.
error_stale: In der Zwischenzeit hat jemand anderes auch bestellt, daher konnte die Bestellung nicht aktualisiert werden. error_stale: In der Zwischenzeit hat jemand anderes auch bestellt, daher konnte die Bestellung nicht aktualisiert werden.

View file

@ -1047,9 +1047,23 @@ en:
error_stale: Someone else has ordered in the meantime, couldn't update the order. error_stale: Someone else has ordered in the meantime, couldn't update the order.
notice: The order was saved. notice: The order was saved.
errors: errors:
balance_alert: Negative account balance
closed: This order is already closed. closed: This order is already closed.
no_member: You are not a member of an ordergroup. no_member: You are not a member of an ordergroup.
notfound: Incorrect URL, this is not your order. notfound: Incorrect URL, this is not your order.
explanations:
title: Explanations
tolerance: Tolerance
package_fill_level: |
Package Fill Level
missing_none: |
No more missing
missing_few: |
Few missing
missing_many: |
Many missing
tolerance_explained: |
Additional amount you would buy to fill a wholesale package
form: form:
action_save: Save order action_save: Save order
new_funds: New account balance new_funds: New account balance
@ -1058,6 +1072,7 @@ en:
search_article: Search for articles... search_article: Search for articles...
sum_amount: Current amount sum_amount: Current amount
title: Orders title: Orders
sub_title: Place order for %{order_name}
total_sum_amount: Total amount total_sum_amount: Total amount
total_tolerance: Total tolerance total_tolerance: Total tolerance
units: Units units: Units
@ -1101,8 +1116,10 @@ en:
sum: Sum sum: Sum
title: Your order result for %{order} title: Your order result for %{order}
switch_order: switch_order:
remaining: "%{remaining} remaining" remaining: "%{remaining} until order closes"
title: Current orders title: Current orders
order_details:
details: Show Details
update: update:
error_general: The order couldnt be updated due to a bug. error_general: The order couldnt be updated due to a bug.
error_stale: Someone else has ordered in the meantime, couldn't update the order. error_stale: Someone else has ordered in the meantime, couldn't update the order.

View file

@ -1017,6 +1017,7 @@ nl:
error_stale: In de tussentijd heeft iemand anders ook bestelt, daarom kon de bestelling niet bijgewerkt worden. error_stale: In de tussentijd heeft iemand anders ook bestelt, daarom kon de bestelling niet bijgewerkt worden.
notice: Bestelling opgeslagen. notice: Bestelling opgeslagen.
errors: errors:
balance_alert: Accountsaldo in het rood
closed: Deze bestelling is al gesloten. closed: Deze bestelling is al gesloten.
no_member: Je bent geen lid van dit huishouden. no_member: Je bent geen lid van dit huishouden.
notfound: Foute URL, dit is niet jouw bestelling. notfound: Foute URL, dit is niet jouw bestelling.
@ -1028,6 +1029,7 @@ nl:
search_article: Artikelen zoeken... search_article: Artikelen zoeken...
sum_amount: Huidig totaalbedrag sum_amount: Huidig totaalbedrag
title: Bestellen title: Bestellen
sub_title: Plaats bestelling voor %{order_name}
total_sum_amount: Totalbedrag total_sum_amount: Totalbedrag
total_tolerance: Totale tolerantie total_tolerance: Totale tolerantie
units: Eenheden units: Eenheden
@ -1071,8 +1073,10 @@ nl:
sum: Som sum: Som
title: Jouw bestelling voor %{order} title: Jouw bestelling voor %{order}
switch_order: switch_order:
remaining: "nog %{remaining}" remaining: "%{remaining} tot bestelling sluit"
title: Lopende bestellingen title: Lopende bestellingen
order_details:
details: Bekijk details
update: update:
error_general: Er is een probleem opgetreden, de bestelling kon niet bijgewerkt worden. error_general: Er is een probleem opgetreden, de bestelling kon niet bijgewerkt worden.
error_stale: In de tussentijd heeft iemand anders ook bestelt, daarom kon je bestelling niet opgeslagen worden. Sorry! error_stale: In de tussentijd heeft iemand anders ook bestelt, daarom kon je bestelling niet opgeslagen worden. Sorry!

View file

@ -32,7 +32,7 @@ class CurrentOrders::ArticlesController < ApplicationController
else else
@order_articles = OrderArticle.where(order_id: @current_orders.all.map(&:id)) @order_articles = OrderArticle.where(order_id: @current_orders.all.map(&:id))
end end
@q = OrderArticle.search(params[:q]) @q = OrderArticle.ransack(params[:q])
@order_articles = @order_articles.ordered.merge(@q.result).includes(:article, :article_price) @order_articles = @order_articles.ordered.merge(@q.result).includes(:article, :article_price)
@order_article = @order_articles.where(id: params[:id]).first @order_article = @order_articles.where(id: params[:id]).first
end end