Commit 808df810fb7925da44e52ca8e97a11294b6b8921
Exists in
master
and in
29 other branches
Merge commit 'refs/merge-requests/177' of git://gitorious.org/noosfero/noosfero …
…into merge-requests/177
Showing
6 changed files
with
45 additions
and
15 deletions
Show diff stats
plugins/shopping_cart/controllers/shopping_cart_plugin_myprofile_controller.rb
... | ... | @@ -33,9 +33,9 @@ class ShoppingCartPluginMyprofileController < MyProfileController |
33 | 33 | |
34 | 34 | @products = {} |
35 | 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 | 39 | end |
40 | 40 | end |
41 | 41 | end | ... | ... |
plugins/shopping_cart/controllers/shopping_cart_plugin_profile_controller.rb
... | ... | @@ -228,7 +228,8 @@ class ShoppingCartPluginProfileController < ProfileController |
228 | 228 | def register_order(custumer, items) |
229 | 229 | new_items = {} |
230 | 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 | 233 | end |
233 | 234 | ShoppingCartPlugin::PurchaseOrder.create!( |
234 | 235 | :seller => profile, | ... | ... |
plugins/shopping_cart/lib/shopping_cart_plugin/line_item.rb
0 → 100644
... | ... | @@ -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 | 77 | end |
78 | 78 | |
79 | 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 | 85 | po1 = ShoppingCartPlugin::PurchaseOrder.create!(:seller => enterprise, :products_list => po1_products, :status => ShoppingCartPlugin::PurchaseOrder::Status::OPENED) |
86 | 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 | 91 | :to => (Time.now + 1.day).strftime(TIME_FORMAT), |
92 | 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 | 102 | assert_equal hash, assigns(:products) |
97 | 103 | end | ... | ... |
plugins/shopping_cart/views/shopping_cart_plugin_myprofile/_orders_list.html.erb
... | ... | @@ -38,14 +38,14 @@ |
38 | 38 | </ul> |
39 | 39 | <ul class="order-products"> |
40 | 40 | <% order.products_list.each do |id, qp| %> |
41 | - <% | |
41 | + <% | |
42 | 42 | begin |
43 | 43 | product = Product.find(id) |
44 | 44 | rescue |
45 | 45 | product = nil |
46 | 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 | 49 | × <%= qp[:quantity] %> = <%= float_to_currency_cart( qp[:quantity] * qp[:price], environment ) %></li> |
50 | 50 | <% end %> |
51 | 51 | </ul> | ... | ... |
plugins/shopping_cart/views/shopping_cart_plugin_myprofile/_products_list.html.erb
... | ... | @@ -6,10 +6,10 @@ |
6 | 6 | <th><%= _('Product') %></th> |
7 | 7 | <th><%= _('Quantity') %></th> |
8 | 8 | </tr> |
9 | - <% @products.each do |id, quantity|%> | |
9 | + <% @products.each do |id, item|%> | |
10 | 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 | 13 | </tr> |
14 | 14 | <% end %> |
15 | 15 | </table> | ... | ... |