From 37c9e2aeaf9743140d886ff954b9932325422929 Mon Sep 17 00:00:00 2001 From: Benjamin Meichsner Date: Wed, 11 Mar 2009 16:34:36 +0100 Subject: [PATCH] Fixed wrong price value of GroupOrder when finishing an order. --- app/models/group_order.rb | 11 ++++++++--- app/models/order.rb | 3 +++ 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/app/models/group_order.rb b/app/models/group_order.rb index 73d73787..becb7879 100644 --- a/app/models/group_order.rb +++ b/app/models/group_order.rb @@ -30,12 +30,17 @@ class GroupOrder < ActiveRecord::Base named_scope :finished, lambda { {:conditions => ["order_id IN (?)", Order.finished.collect(&:id)]} } # Updates the "price" attribute. - # This will be the maximum value of an order + # This will be the maximum value of an open order or + # the value depending of the article results. def update_price! total = 0 for article in group_order_articles.find(:all, :include => :order_article) - total += article.order_article.article.fc_price * (article.quantity + article.tolerance) - end + unless order.finished? + total += article.order_article.article.fc_price * (article.quantity + article.tolerance) + else + total += article.order_article.price.fc_price * article.result + end + end update_attribute(:price, total) end diff --git a/app/models/order.rb b/app/models/order.rb index b3a8dee4..8e3f3c00 100644 --- a/app/models/order.rb +++ b/app/models/order.rb @@ -170,6 +170,9 @@ class Order < ActiveRecord::Base oa.update_attribute(:article_price, oa.article.article_prices.first) oa.group_order_articles.each { |goa| goa.save_results! } end + # Update GroupOrder prices + group_orders.each { |go| go.update_price! } + # set new order state (needed by notify_order_finished) update_attributes(:state => 'finished', :ends => Time.now, :updated_by => user)