Commit 269bdeca8dfbdf20307a63a2f4e7472c4f088b00

Authored by Rodrigo Souto
1 parent 2c7248fa

[purchase-order] Adding products list on the report

plugins/shopping_cart/controllers/shopping_cart_plugin_myprofile_controller.rb
@@ -30,6 +30,14 @@ class ShoppingCartPluginMyprofileController < MyProfileController @@ -30,6 +30,14 @@ class ShoppingCartPluginMyprofileController < MyProfileController
30 30
31 conditions = [condition] + condition_parameters 31 conditions = [condition] + condition_parameters
32 @orders = profile.orders.find(:all, :conditions => conditions) 32 @orders = profile.orders.find(:all, :conditions => conditions)
  33 +
  34 + @products = {}
  35 + @orders.each do |order|
  36 + order.products_list.each do |id, qp|
  37 + @products[id] ||= 0
  38 + @products[id] += qp[:quantity]
  39 + end
  40 + end
33 end 41 end
34 42
35 def update_order_status 43 def update_order_status
plugins/shopping_cart/public/style.css
@@ -196,3 +196,19 @@ label.error { @@ -196,3 +196,19 @@ label.error {
196 .action-shopping_cart_plugin_myprofile-reports .order-products li { 196 .action-shopping_cart_plugin_myprofile-reports .order-products li {
197 padding-left: 5px; 197 padding-left: 5px;
198 } 198 }
  199 +
  200 +#order-filter {
  201 + background-color: #ccc;
  202 + border: 1px solid #aaa;
  203 + border-radius: 5px;
  204 + padding: 3px 8px;
  205 + margin-bottom: 10px;
  206 +}
  207 +
  208 +th {
  209 + text-align: center;
  210 +}
  211 +
  212 +td {
  213 + text-align: left;
  214 +}
plugins/shopping_cart/views/shopping_cart_plugin_myprofile/_orders_list.html.erb 0 → 100644
@@ -0,0 +1,60 @@ @@ -0,0 +1,60 @@
  1 +<% if @orders.empty? %>
  2 + <p><i><%= _("No results.") %></i></p>
  3 +<% else %>
  4 + <table>
  5 + <tr>
  6 + <th><%= _('Date') %></th>
  7 + <th><%= _('Customer') %></th>
  8 + <th><%= _('Purchase value') %></th>
  9 + <th><%= _('Status')%></th>
  10 + <th>&nbsp;</th>
  11 + </tr>
  12 + <% status_collection.delete_at(0) %>
  13 + <% @orders.each do |order|%>
  14 + <tr>
  15 + <td><%= order.created_at.strftime("%Y-%m-%d")%></td>
  16 + <td><%= order.customer_name %></td>
  17 + <td style="text-align: right"><%= float_to_currency_cart(order.products_list.sum {|id, qp| qp[:price]*qp[:quantity]}, environment) %></td>
  18 + <td>
  19 + <% form_tag :action => 'update_order_status' do %>
  20 + <%= hidden_field_tag(:order_id, order.id) +
  21 + hidden_field_tag(:context_from, @from) +
  22 + hidden_field_tag(:context_to, @to) +
  23 + hidden_field_tag(:context_status, @status) +
  24 + select_tag( :order_status, options_from_collection_for_select(status_collection, :first, :last, order.status),
  25 + :onchange => "if(confirm(#{_('Are you sure about changing this order status?').to_json}))" +
  26 + " this.form.submit(); else this.selectedIndex = #{order.status}" )
  27 + %>
  28 + <% end %>
  29 + </td>
  30 + <td><button class="view-order-details" data-order="<%=order.id%>"><%=_('View details')%></button></td>
  31 + </tr>
  32 + <tr id="order-details-<%=order.id%>" style="display:none">
  33 + <td class="order-info" colspan="5">
  34 + <div style="display:none">
  35 + <ul class="customer-details">
  36 + <% { 'name' =>_('Name'), 'email' => _('E-mail'), 'contact_phone' => _('Contact phone'), 'address' => _('Address'), 'city' => _('City'), 'zip_code' => _('Zip code')}.each do |attribute, name| %>
  37 + <%= content_tag('li', content_tag('strong', name+': ') + order.send('customer_'+attribute)) if order.send('customer_'+attribute) %>
  38 + <% end %>
  39 + </ul>
  40 + <ul class="order-products">
  41 + <% order.products_list.each do |id, qp| %>
  42 + <%
  43 + begin
  44 + product = Product.find(id)
  45 + rescue
  46 + product = nil
  47 + end
  48 + %>
  49 + <li><%= product ? link_to(product.name, product.url) : _("Pruduct unavailable")%>
  50 + &times; <%= qp[:quantity] %> = <%= float_to_currency_cart( qp[:quantity] * qp[:price], environment ) %></li>
  51 + <% end %>
  52 + </ul>
  53 + <br style="clear:both"/>
  54 + </div>
  55 + </td>
  56 + </tr>
  57 + <% end %>
  58 + </table>
  59 +<% end %>
  60 +
plugins/shopping_cart/views/shopping_cart_plugin_myprofile/_products_list.html.erb 0 → 100644
@@ -0,0 +1,17 @@ @@ -0,0 +1,17 @@
  1 +<% if @products.empty? %>
  2 + <p><i><%= _("No results.") %></i></p>
  3 +<% else %>
  4 + <table>
  5 + <tr>
  6 + <th><%= _('Product') %></th>
  7 + <th><%= _('Quantity') %></th>
  8 + </tr>
  9 + <% @products.each do |id, quantity|%>
  10 + <tr>
  11 + <td><%= Product.find(id).name %></td>
  12 + <td style="text-align: center"><%= quantity %></td>
  13 + </tr>
  14 + <% end %>
  15 + </table>
  16 +<% end %>
  17 +
plugins/shopping_cart/views/shopping_cart_plugin_myprofile/reports.html.erb
1 <h1> <%= _('Purchase Reports') %> </h1> 1 <h1> <%= _('Purchase Reports') %> </h1>
2 2
  3 +<% extend ProfileHelper %>
  4 +
3 <% status = ShoppingCartPlugin::PurchaseOrder::Status.name; pos=-1 %> 5 <% status = ShoppingCartPlugin::PurchaseOrder::Status.name; pos=-1 %>
4 <% status_collection = [[nil, _('All')]] %> 6 <% status_collection = [[nil, _('All')]] %>
5 <% status_collection += status.map{|s| [pos+=1, s] } %> 7 <% status_collection += status.map{|s| [pos+=1, s] } %>
6 8
7 -<% form_tag do %> 9 +<% form_tag({}, {:id => 'order-filter'}) do %>
8 <%= labelled_text_field(_('From')+' ', :from, @from.strftime("%Y-%m-%d"), :id => 'from', :size => 9) %> 10 <%= labelled_text_field(_('From')+' ', :from, @from.strftime("%Y-%m-%d"), :id => 'from', :size => 9) %>
9 <%= labelled_text_field(_('to')+' ', :to, @to.strftime("%Y-%m-%d"), :id => 'to', :size => 9) %> 11 <%= labelled_text_field(_('to')+' ', :to, @to.strftime("%Y-%m-%d"), :id => 'to', :size => 9) %>
10 - <%= labelled_select(_('Status')+' ', :filter_status, :first, :last, @status, status_collection)%> 12 + <span style="white-space:nowrap"><%= labelled_select(_('Status')+' ', :filter_status, :first, :last, @status, status_collection)%></span>
11 &nbsp; 13 &nbsp;
12 <%= submit_button('save', _('Filter')) %> 14 <%= submit_button('save', _('Filter')) %>
13 <% end %> 15 <% end %>
14 16
15 -<% if @orders.empty? %>  
16 - <p><i><%= _("No results.") %></i></p>  
17 -<% else %>  
18 - <table>  
19 - <tr>  
20 - <th><%= _('Date') %></th>  
21 - <th><%= _('Customer') %></th>  
22 - <th><%= _('Purchase value') %></th>  
23 - <th><%= _('Status')%></th>  
24 - <th>&nbsp;</th>  
25 - </tr>  
26 - <% status_collection.delete_at(0) %>  
27 - <% @orders.each do |order|%>  
28 - <tr>  
29 - <td><%= order.created_at.strftime("%Y-%m-%d")%></td>  
30 - <td><%= order.customer_name %></td>  
31 - <td><%= float_to_currency_cart(order.products_list.sum {|id, qp| qp[:price]*qp[:quantity]}, environment) %></td>  
32 - <td>  
33 - <% form_tag :action => 'update_order_status' do %>  
34 - <%= hidden_field_tag(:order_id, order.id) +  
35 - hidden_field_tag(:context_from, @from) +  
36 - hidden_field_tag(:context_to, @to) +  
37 - hidden_field_tag(:context_status, @status) +  
38 - select_tag( :order_status, options_from_collection_for_select(status_collection, :first, :last, order.status),  
39 - :onchange => "if(confirm(#{_('Are you sure about changing this order status?').to_json}))" +  
40 - " this.form.submit(); else this.selectedIndex = #{order.status}" )  
41 - %>  
42 - <% end %>  
43 - </td>  
44 - <td><button class="view-order-details" data-order="<%=order.id%>"><%=_('View details')%></button></td>  
45 - </tr>  
46 - <tr id="order-details-<%=order.id%>" style="display:none">  
47 - <td class="order-info" colspan="5">  
48 - <div style="display:none">  
49 - <ul class="customer-details">  
50 - <% { 'name' =>_('Name'), 'email' => _('E-mail'), 'contact_phone' => _('Contact phone'), 'address' => _('Address'), 'city' => _('City'), 'zip_code' => _('Zip code')}.each do |attribute, name| %>  
51 - <%= content_tag('li', content_tag('strong', name+': ') + order.send('customer_'+attribute)) if order.send('customer_'+attribute) %>  
52 - <% end %>  
53 - </ul>  
54 - <ul class="order-products">  
55 - <% order.products_list.each do |id, qp| %>  
56 - <%  
57 - begin  
58 - product = Product.find(id)  
59 - rescue  
60 - product = nil  
61 - end  
62 - %>  
63 - <li><%= product ? link_to(product.name, product.url) : _("Pruduct unavailable")%>  
64 - &times; <%= qp[:quantity] %> = <%= float_to_currency_cart( qp[:quantity] * qp[:price], environment ) %></li>  
65 - <% end %>  
66 - </ul>  
67 - <br style="clear:both"/>  
68 - </div>  
69 - </td>  
70 - </tr>  
71 - <% end %>  
72 - </table>  
73 -<% end %> 17 +<% tabs = [] %>
  18 +<% tabs << {:title => _('Products list'), :id => 'products_list', :content => (render :partial => 'products_list')} %>
  19 +<% tabs << {:title => _('Orders list'), :id => 'orders_list', :content => (render :partial => 'orders_list', :locals => {:status_collection => status_collection})} %>
  20 +<%= render_tabs(tabs) %>
74 21
75 <script> 22 <script>
76 var dates = jQuery( "#from, #to" ).datepicker({ 23 var dates = jQuery( "#from, #to" ).datepicker({