Merge branch 'tolerance_not_costly'
This commit is contained in:
commit
f45509fc07
5 changed files with 51 additions and 9 deletions
|
@ -29,13 +29,18 @@ class GroupOrder < ActiveRecord::Base
|
|||
named_scope :finished, lambda { {:conditions => ["order_id IN (?)", Order.finished_not_closed.collect(&:id)]} }
|
||||
|
||||
# Updates the "price" attribute.
|
||||
# This will be the maximum value of an open order or
|
||||
# the value depending of the article results.
|
||||
# Until the order is finished this will be the maximum price or
|
||||
# the minimum price depending on configuration. When the order is finished it
|
||||
# will be the value depending of the article results.
|
||||
def update_price!
|
||||
total = 0
|
||||
for article in group_order_articles.find(:all, :include => :order_article)
|
||||
unless order.finished?
|
||||
if Foodsoft.config[:tolerance_is_costly]
|
||||
total += article.order_article.article.fc_price * (article.quantity + article.tolerance)
|
||||
else
|
||||
total += article.order_article.article.fc_price * article.quantity
|
||||
end
|
||||
else
|
||||
total += article.order_article.price.fc_price * article.result
|
||||
end
|
||||
|
|
|
@ -78,7 +78,10 @@
|
|||
- tolerance = goa.tolerance
|
||||
- result = goa.result
|
||||
- if @order.open?
|
||||
- if Foodsoft.config[:tolerance_is_costly]
|
||||
- sub_total = oa.price.fc_price * (quantity + tolerance)
|
||||
- else
|
||||
- sub_total = oa.price.fc_price * quantity
|
||||
- else
|
||||
- sub_total = oa.price.fc_price * result
|
||||
- else
|
||||
|
|
|
@ -32,9 +32,12 @@
|
|||
</tr>
|
||||
<%-
|
||||
order_articles.each do |order_article|
|
||||
article_total = @price[i] * (@tolerance[i] + @quantity[i]);
|
||||
if Foodsoft.config[:tolerance_is_costly]
|
||||
article_total = @price[i] * (@tolerance[i] + @quantity[i])
|
||||
else
|
||||
article_total = @price[i] * @quantity[i]
|
||||
end
|
||||
total += article_total
|
||||
|
||||
-%>
|
||||
<tr class="<%= cycle('even', 'odd', :name => 'articles') %>" valign="top">
|
||||
<td class="name">
|
||||
|
@ -107,14 +110,23 @@
|
|||
<script type="text/javascript">
|
||||
//<![CDATA[
|
||||
// preset data
|
||||
<% for i in 0...@price.size -%>
|
||||
<% if Foodsoft.config[:tolerance_is_costly]
|
||||
for i in 0...@price.size -%>
|
||||
addData(<%= @price[i] %>, <%= @unit[i] %>, <%= @price[i] * (@tolerance[i] + @quantity[i])%>, <%= @others_quantity[i] %>, <%= @others_tolerance[i] %>, <%= @used_quantity[i] %>, 0);
|
||||
<% end -%>
|
||||
<% end
|
||||
else
|
||||
for j in 0...@price.size -%>
|
||||
addData(<%= @price[j] %>, <%= @unit[j] %>, <%= @price[j] * @quantity[j]%>, <%= @others_quantity[j] %>, <%= @others_tolerance[j] %>, <%= @used_quantity[j] %>, 0);
|
||||
<% end
|
||||
end%>
|
||||
setGroupBalance(<%= @availableFunds %>);
|
||||
|
||||
// localization
|
||||
setDecimalSeparator(",");
|
||||
|
||||
// configuration
|
||||
setToleranceBehaviour(<%= Foodsoft.config[:tolerance_is_costly] %>);
|
||||
|
||||
// initialize javascript
|
||||
updateBalance();
|
||||
//]]>
|
||||
|
|
|
@ -11,25 +11,37 @@ development: &defaults
|
|||
country: Deutschland
|
||||
email: foodsoft@myfoodcoop.org
|
||||
phone: "030 323 23249"
|
||||
|
||||
# base URL for this installation
|
||||
base_url: http://foodsoft.fctest.de
|
||||
|
||||
# Homepage
|
||||
homepage: http://www.fctest.de
|
||||
|
||||
# foodsoft documentation URL
|
||||
help_url: http://foodsoft.fcschinke09.de/trac/wiki/FoodsoftDoku
|
||||
|
||||
# price markup in percent
|
||||
price_markup: 2.0
|
||||
|
||||
# tolerance order option: If set to false, article tolerance values do not count
|
||||
# for total article price as long as the order is not finished.
|
||||
tolerance_is_costly: false
|
||||
|
||||
# email address to be used as sender
|
||||
email_sender: foodsoft@myfoodcoop.org
|
||||
|
||||
# If your foodcoop uses a mailing list instead of internal messaging system
|
||||
#mailing_list: list@myfoodcoop.org
|
||||
#mailing_list_subscribe: list-subscribe@myfoodcoop.org
|
||||
|
||||
# Config for the exception_notification plugin
|
||||
notification:
|
||||
error_recipients:
|
||||
- admin@myfoodcoop.org
|
||||
sender_address: "\"FoodSoft Error\" <foodsoft@myfoodcoop.org>"
|
||||
email_prefix: "[FoodSoft]"
|
||||
|
||||
# Access to sharedLists, the external article-database
|
||||
shared_lists:
|
||||
adapter: mysql
|
||||
|
@ -39,6 +51,7 @@ development: &defaults
|
|||
password:
|
||||
encoding: utf8
|
||||
socket: /opt/lampp/var/mysql/mysql.sock
|
||||
|
||||
# auto-units-conversion
|
||||
# this is used for automatic article-synchronization to handle different units
|
||||
# e.g. when foodcoop-unit should be 500g and supplier-unit is 1kg
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
var modified = false // indicates if anything has been clicked on this page
|
||||
var groupBalance = 0; // available group money
|
||||
var decimalSeparator = "."; // default decimal separator
|
||||
var toleranceIsCostly = true; // default tolerance behaviour
|
||||
|
||||
// Article data arrays:
|
||||
var price = new Array();
|
||||
|
@ -22,6 +23,10 @@ function setDecimalSeparator(character) {
|
|||
decimalSeparator = character;
|
||||
}
|
||||
|
||||
function setToleranceBehaviour(value) {
|
||||
toleranceIsCostly = value;
|
||||
}
|
||||
|
||||
function setGroupBalance(amount) {
|
||||
groupBalance = amount;
|
||||
}
|
||||
|
@ -98,7 +103,11 @@ function update(item, quantity, tolerance) {
|
|||
}
|
||||
|
||||
// update total price
|
||||
if(toleranceIsCostly == true) {
|
||||
itemTotal[item] = price[item] * (Number(quantity) + Number(tolerance));
|
||||
} else {
|
||||
itemTotal[item] = price[item] * (Number(quantity));
|
||||
}
|
||||
$('price_' + item + '_display').update(asMoney(itemTotal[item]));
|
||||
|
||||
// update balance
|
||||
|
|
Loading…
Reference in a new issue