From 269bdeca8dfbdf20307a63a2f4e7472c4f088b00 Mon Sep 17 00:00:00 2001 From: Rodrigo Souto Date: Fri, 2 Sep 2011 16:46:21 -0300 Subject: [PATCH] [purchase-order] Adding products list on the report --- plugins/shopping_cart/controllers/shopping_cart_plugin_myprofile_controller.rb | 8 ++++++++ plugins/shopping_cart/public/style.css | 16 ++++++++++++++++ plugins/shopping_cart/views/shopping_cart_plugin_myprofile/_orders_list.html.erb | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ plugins/shopping_cart/views/shopping_cart_plugin_myprofile/_products_list.html.erb | 17 +++++++++++++++++ plugins/shopping_cart/views/shopping_cart_plugin_myprofile/reports.html.erb | 69 ++++++++------------------------------------------------------------- 5 files changed, 109 insertions(+), 61 deletions(-) create mode 100644 plugins/shopping_cart/views/shopping_cart_plugin_myprofile/_orders_list.html.erb create mode 100644 plugins/shopping_cart/views/shopping_cart_plugin_myprofile/_products_list.html.erb diff --git a/plugins/shopping_cart/controllers/shopping_cart_plugin_myprofile_controller.rb b/plugins/shopping_cart/controllers/shopping_cart_plugin_myprofile_controller.rb index dd96ea3..34fe00d 100644 --- a/plugins/shopping_cart/controllers/shopping_cart_plugin_myprofile_controller.rb +++ b/plugins/shopping_cart/controllers/shopping_cart_plugin_myprofile_controller.rb @@ -30,6 +30,14 @@ class ShoppingCartPluginMyprofileController < MyProfileController conditions = [condition] + condition_parameters @orders = profile.orders.find(:all, :conditions => conditions) + + @products = {} + @orders.each do |order| + order.products_list.each do |id, qp| + @products[id] ||= 0 + @products[id] += qp[:quantity] + end + end end def update_order_status diff --git a/plugins/shopping_cart/public/style.css b/plugins/shopping_cart/public/style.css index 4b79273..7d77e88 100644 --- a/plugins/shopping_cart/public/style.css +++ b/plugins/shopping_cart/public/style.css @@ -196,3 +196,19 @@ label.error { .action-shopping_cart_plugin_myprofile-reports .order-products li { padding-left: 5px; } + +#order-filter { + background-color: #ccc; + border: 1px solid #aaa; + border-radius: 5px; + padding: 3px 8px; + margin-bottom: 10px; +} + +th { + text-align: center; +} + +td { + text-align: left; +} diff --git a/plugins/shopping_cart/views/shopping_cart_plugin_myprofile/_orders_list.html.erb b/plugins/shopping_cart/views/shopping_cart_plugin_myprofile/_orders_list.html.erb new file mode 100644 index 0000000..c2cda44 --- /dev/null +++ b/plugins/shopping_cart/views/shopping_cart_plugin_myprofile/_orders_list.html.erb @@ -0,0 +1,60 @@ +<% if @orders.empty? %> +

<%= _("No results.") %>

+<% else %> + + + + + + + + + <% status_collection.delete_at(0) %> + <% @orders.each do |order|%> + + + + + + + + + + + <% end %> +
<%= _('Date') %><%= _('Customer') %><%= _('Purchase value') %><%= _('Status')%> 
<%= order.created_at.strftime("%Y-%m-%d")%><%= order.customer_name %><%= float_to_currency_cart(order.products_list.sum {|id, qp| qp[:price]*qp[:quantity]}, environment) %> + <% form_tag :action => 'update_order_status' do %> + <%= hidden_field_tag(:order_id, order.id) + + hidden_field_tag(:context_from, @from) + + hidden_field_tag(:context_to, @to) + + hidden_field_tag(:context_status, @status) + + select_tag( :order_status, options_from_collection_for_select(status_collection, :first, :last, order.status), + :onchange => "if(confirm(#{_('Are you sure about changing this order status?').to_json}))" + + " this.form.submit(); else this.selectedIndex = #{order.status}" ) + %> + <% end %> +
+<% end %> + diff --git a/plugins/shopping_cart/views/shopping_cart_plugin_myprofile/_products_list.html.erb b/plugins/shopping_cart/views/shopping_cart_plugin_myprofile/_products_list.html.erb new file mode 100644 index 0000000..f3f33aa --- /dev/null +++ b/plugins/shopping_cart/views/shopping_cart_plugin_myprofile/_products_list.html.erb @@ -0,0 +1,17 @@ +<% if @products.empty? %> +

<%= _("No results.") %>

+<% else %> + + + + + + <% @products.each do |id, quantity|%> + + + + + <% end %> +
<%= _('Product') %><%= _('Quantity') %>
<%= Product.find(id).name %><%= quantity %>
+<% end %> + diff --git a/plugins/shopping_cart/views/shopping_cart_plugin_myprofile/reports.html.erb b/plugins/shopping_cart/views/shopping_cart_plugin_myprofile/reports.html.erb index 3f913ae..a0a41aa 100644 --- a/plugins/shopping_cart/views/shopping_cart_plugin_myprofile/reports.html.erb +++ b/plugins/shopping_cart/views/shopping_cart_plugin_myprofile/reports.html.erb @@ -1,76 +1,23 @@

<%= _('Purchase Reports') %>

+<% extend ProfileHelper %> + <% status = ShoppingCartPlugin::PurchaseOrder::Status.name; pos=-1 %> <% status_collection = [[nil, _('All')]] %> <% status_collection += status.map{|s| [pos+=1, s] } %> -<% form_tag do %> +<% form_tag({}, {:id => 'order-filter'}) do %> <%= labelled_text_field(_('From')+' ', :from, @from.strftime("%Y-%m-%d"), :id => 'from', :size => 9) %> <%= labelled_text_field(_('to')+' ', :to, @to.strftime("%Y-%m-%d"), :id => 'to', :size => 9) %> - <%= labelled_select(_('Status')+' ', :filter_status, :first, :last, @status, status_collection)%> + <%= labelled_select(_('Status')+' ', :filter_status, :first, :last, @status, status_collection)%>   <%= submit_button('save', _('Filter')) %> <% end %> -<% if @orders.empty? %> -

<%= _("No results.") %>

-<% else %> - - - - - - - - - <% status_collection.delete_at(0) %> - <% @orders.each do |order|%> - - - - - - - - - - - <% end %> -
<%= _('Date') %><%= _('Customer') %><%= _('Purchase value') %><%= _('Status')%> 
<%= order.created_at.strftime("%Y-%m-%d")%><%= order.customer_name %><%= float_to_currency_cart(order.products_list.sum {|id, qp| qp[:price]*qp[:quantity]}, environment) %> - <% form_tag :action => 'update_order_status' do %> - <%= hidden_field_tag(:order_id, order.id) + - hidden_field_tag(:context_from, @from) + - hidden_field_tag(:context_to, @to) + - hidden_field_tag(:context_status, @status) + - select_tag( :order_status, options_from_collection_for_select(status_collection, :first, :last, order.status), - :onchange => "if(confirm(#{_('Are you sure about changing this order status?').to_json}))" + - " this.form.submit(); else this.selectedIndex = #{order.status}" ) - %> - <% end %> -
-<% end %> +<% tabs = [] %> +<% tabs << {:title => _('Products list'), :id => 'products_list', :content => (render :partial => 'products_list')} %> +<% tabs << {:title => _('Orders list'), :id => 'orders_list', :content => (render :partial => 'orders_list', :locals => {:status_collection => status_collection})} %> +<%= render_tabs(tabs) %>