Commit 808df810fb7925da44e52ca8e97a11294b6b8921

Authored by Daniela Feitosa
2 parents 2db73350 dbf169ee

Merge commit 'refs/merge-requests/177' of git://gitorious.org/noosfero/noosfero …

…into merge-requests/177
plugins/shopping_cart/controllers/shopping_cart_plugin_myprofile_controller.rb
@@ -33,9 +33,9 @@ class ShoppingCartPluginMyprofileController < MyProfileController @@ -33,9 +33,9 @@ class ShoppingCartPluginMyprofileController < MyProfileController
33 33
34 @products = {} 34 @products = {}
35 @orders.each do |order| 35 @orders.each do |order|
36 - order.products_list.each do |id, qp|  
37 - @products[id] ||= 0  
38 - @products[id] += qp[:quantity] 36 + order.products_list.each do |id, qp|
  37 + @products[id] ||= ShoppingCartPlugin::LineItem.new(id, qp[:name])
  38 + @products[id].quantity += qp[:quantity]
39 end 39 end
40 end 40 end
41 end 41 end
plugins/shopping_cart/controllers/shopping_cart_plugin_profile_controller.rb
@@ -228,7 +228,8 @@ class ShoppingCartPluginProfileController < ProfileController @@ -228,7 +228,8 @@ class ShoppingCartPluginProfileController < ProfileController
228 def register_order(custumer, items) 228 def register_order(custumer, items)
229 new_items = {} 229 new_items = {}
230 items.each do |id, quantity| 230 items.each do |id, quantity|
231 - new_items[id] = {:quantity => quantity, :price => Product.find(id).price} 231 + product = Product.find(id)
  232 + new_items[id] = {:quantity => quantity, :price => product.price, :name => product.name}
232 end 233 end
233 ShoppingCartPlugin::PurchaseOrder.create!( 234 ShoppingCartPlugin::PurchaseOrder.create!(
234 :seller => profile, 235 :seller => profile,
plugins/shopping_cart/lib/shopping_cart_plugin/line_item.rb 0 → 100644
@@ -0,0 +1,23 @@ @@ -0,0 +1,23 @@
  1 +class ShoppingCartPlugin::LineItem
  2 +
  3 + attr_accessor :product_id, :quantity
  4 +
  5 + def initialize(product_id, name)
  6 + @product_id = product_id
  7 + @name = name
  8 + @quantity = 0
  9 + end
  10 +
  11 + def product
  12 + @product ||= Product.find_by_id(product_id)
  13 + end
  14 +
  15 + def name
  16 + product && product.name || @name
  17 + end
  18 +
  19 + def ==(other)
  20 + self.product == other.product && self.name == other.name && self.quantity == other.quantity
  21 + end
  22 +
  23 +end
plugins/shopping_cart/test/functional/shopping_cart_plugin_myprofile_controller_test.rb
@@ -77,11 +77,11 @@ class ShoppingCartPluginMyprofileControllerTest < ActionController::TestCase @@ -77,11 +77,11 @@ class ShoppingCartPluginMyprofileControllerTest < ActionController::TestCase
77 end 77 end
78 78
79 should 'group filtered orders products and quantities' do 79 should 'group filtered orders products and quantities' do
80 - p1 = fast_create(Product, :enterprise_id => enterprise.id, :price => 1)  
81 - p2 = fast_create(Product, :enterprise_id => enterprise.id, :price => 2)  
82 - p3 = fast_create(Product, :enterprise_id => enterprise.id, :price => 3)  
83 - po1_products = {p1.id => {:quantity => 1, :price => p1.price}, p2.id => {:quantity => 2, :price => p2.price }}  
84 - po2_products = {p2.id => {:quantity => 1, :price => p2.price}, p3.id => {:quantity => 2, :price => p3.price }} 80 + p1 = fast_create(Product, :enterprise_id => enterprise.id, :price => 1, :name => 'p1')
  81 + p2 = fast_create(Product, :enterprise_id => enterprise.id, :price => 2, :name => 'p2')
  82 + p3 = fast_create(Product, :enterprise_id => enterprise.id, :price => 3, :name => 'p3')
  83 + po1_products = {p1.id => {:quantity => 1, :price => p1.price, :name => p1.name}, p2.id => {:quantity => 2, :price => p2.price, :name => p2.name }}
  84 + po2_products = {p2.id => {:quantity => 1, :price => p2.price, :name => p2.name }, p3.id => {:quantity => 2, :price => p3.price, :name => p3.name}}
85 po1 = ShoppingCartPlugin::PurchaseOrder.create!(:seller => enterprise, :products_list => po1_products, :status => ShoppingCartPlugin::PurchaseOrder::Status::OPENED) 85 po1 = ShoppingCartPlugin::PurchaseOrder.create!(:seller => enterprise, :products_list => po1_products, :status => ShoppingCartPlugin::PurchaseOrder::Status::OPENED)
86 po2 = ShoppingCartPlugin::PurchaseOrder.create!(:seller => enterprise, :products_list => po2_products, :status => ShoppingCartPlugin::PurchaseOrder::Status::OPENED) 86 po2 = ShoppingCartPlugin::PurchaseOrder.create!(:seller => enterprise, :products_list => po2_products, :status => ShoppingCartPlugin::PurchaseOrder::Status::OPENED)
87 87
@@ -91,7 +91,13 @@ class ShoppingCartPluginMyprofileControllerTest < ActionController::TestCase @@ -91,7 +91,13 @@ class ShoppingCartPluginMyprofileControllerTest < ActionController::TestCase
91 :to => (Time.now + 1.day).strftime(TIME_FORMAT), 91 :to => (Time.now + 1.day).strftime(TIME_FORMAT),
92 :filter_status => ShoppingCartPlugin::PurchaseOrder::Status::OPENED 92 :filter_status => ShoppingCartPlugin::PurchaseOrder::Status::OPENED
93 93
94 - hash = {p1.id => 1, p2.id => 3, p3.id => 2} 94 + lineitem1 = ShoppingCartPlugin::LineItem.new(p1.id, p1.name)
  95 + lineitem1.quantity = 1
  96 + lineitem2 = ShoppingCartPlugin::LineItem.new(p2.id, p2.name)
  97 + lineitem2.quantity = 3
  98 + lineitem3 = ShoppingCartPlugin::LineItem.new(p3.id, p3.name)
  99 + lineitem3.quantity = 2
  100 + hash = {p1.id => lineitem1, p2.id => lineitem2, p3.id => lineitem3}
95 101
96 assert_equal hash, assigns(:products) 102 assert_equal hash, assigns(:products)
97 end 103 end
plugins/shopping_cart/views/shopping_cart_plugin_myprofile/_orders_list.html.erb
@@ -38,14 +38,14 @@ @@ -38,14 +38,14 @@
38 </ul> 38 </ul>
39 <ul class="order-products"> 39 <ul class="order-products">
40 <% order.products_list.each do |id, qp| %> 40 <% order.products_list.each do |id, qp| %>
41 - <% 41 + <%
42 begin 42 begin
43 product = Product.find(id) 43 product = Product.find(id)
44 rescue 44 rescue
45 product = nil 45 product = nil
46 end 46 end
47 %> 47 %>
48 - <li><%= product ? link_to(product.name, product.url) : _("Pruduct unavailable")%> 48 + <li><%= product ? link_to(product.name, product.url) : qp[:name]%>
49 &times; <%= qp[:quantity] %> = <%= float_to_currency_cart( qp[:quantity] * qp[:price], environment ) %></li> 49 &times; <%= qp[:quantity] %> = <%= float_to_currency_cart( qp[:quantity] * qp[:price], environment ) %></li>
50 <% end %> 50 <% end %>
51 </ul> 51 </ul>
plugins/shopping_cart/views/shopping_cart_plugin_myprofile/_products_list.html.erb
@@ -6,10 +6,10 @@ @@ -6,10 +6,10 @@
6 <th><%= _('Product') %></th> 6 <th><%= _('Product') %></th>
7 <th><%= _('Quantity') %></th> 7 <th><%= _('Quantity') %></th>
8 </tr> 8 </tr>
9 - <% @products.each do |id, quantity|%> 9 + <% @products.each do |id, item|%>
10 <tr> 10 <tr>
11 - <td><%= link_to(Product.find(id).name, Product.find(id).url) %></td>  
12 - <td style="text-align: center"><%= quantity %></td> 11 + <td><%= item.product ? link_to(item.name, item.product.url) : item.name %></td>
  12 + <td style="text-align: center"><%= item.quantity %></td>
13 </tr> 13 </tr>
14 <% end %> 14 <% end %>
15 </table> 15 </table>