Merge branch 'tolerance_not_costly'

This commit is contained in:
Benjamin Meichsner 2009-08-05 17:02:12 +02:00
commit f45509fc07
5 changed files with 51 additions and 9 deletions

View file

@ -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?
total += article.order_article.article.fc_price * (article.quantity + article.tolerance)
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

View file

@ -78,7 +78,10 @@
- tolerance = goa.tolerance
- result = goa.result
- if @order.open?
- sub_total = oa.price.fc_price * (quantity + tolerance)
- 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

View file

@ -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,13 +110,22 @@
<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();

View file

@ -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

View file

@ -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
itemTotal[item] = price[item] * (Number(quantity) + Number(tolerance));
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