Jose Miguel Ledon Nieblas преди 8 години
родител
ревизия
8a70e125d9

+ 30 - 0
app/controllers/sales_controller.rb

@@ -396,6 +396,36 @@ class SalesController < ApplicationController
     end
   end
 
+  def sales_per_month_report
+    @pointsales = Pointsale.vigentes
+  end
+
+  def sales_per_month
+    respond_to do |format|
+      start_date = DateTime.parse(params[:start_date])
+      end_date = DateTime.parse(params[:end_date])
+      @cash_sales_total = 0
+      @reserved_sales_total = 0
+      @credit_sales_total = 0
+
+      if params[:pointsale_id].present?
+        @pointsale = Pointsale.find(params[:pointsale_id])
+        @sales = @pointsale.sales.activas.where(date_sale: start_date..end_date).includes(:sales_details).order("id DESC")
+      else
+        @sales = Sale.activas.where(date_sale: start_date..end_date).includes(:sales_details).order("id DESC")
+      end
+
+      @sales_total = CashRegistersMove.activos.where("sale_id IN (?)", @sales.pluck(:id)).sum(:quantity)
+      @sales_quantity = @sales.size
+      @prods_total = SalesDetail.where("sale_id IN (?)", @sales.pluck(:id)).sum(:quantity).round
+      @cash_sales_total = CashRegistersMove.activos.where("sale_id IN (?)", @sales.where(saletype: 1).pluck(:id)).sum(:quantity)
+      @reserved_sales_total = CashRegistersMove.activos.where("sale_id IN (?)", @sales.where(saletype: 2).pluck(:id)).sum(:quantity)
+      @credit_sales_total = CashRegistersMove.activos.where("sale_id IN (?)", @sales.where(saletype: 0).pluck(:id)).sum(:quantity)
+
+      format.js
+    end
+  end
+
   private
 
   # Use callbacks to share common setup or constraints between actions.

+ 35 - 0
app/views/sales/_sale_for_report.html.erb

@@ -0,0 +1,35 @@
+<tr>
+  <td><%= l(sale.date_sale, :format => '%d/%m/%Y') %></td>
+  <td><%= sale.sale_code %> </td>
+  <td><%= @pointsale.present? ? @pointsale.name : sale.get_pointsale.name %> </td>
+  <td><%= sale.seller.name %> </td>
+  <td><%= sale.sales_details.sum(:quantity).round %> </td>
+  <td>
+    <% if sale.saletype == "credit" && sale.credit_note.blank? %>
+    Crédito
+    <% elsif sale.saletype == "credit" && sale.credit_note.present? %>
+    Crédito/vale
+    <% elsif sale.saletype == "cash"%>
+    Contado
+    <% elsif sale.saletype == "reserved"%>
+    Apartado
+    <% end %>
+  </td>
+  <td>
+    <% case sale.status %>
+    <% when "paid"%>
+      <span class="label label-success"> PAGADA </span>
+    <% when "cancelled"%>
+      <span class="label label-danger"> CANCELADO </span>
+    <% when "parcial"%>
+      <span class="label label-warning"> ABONADA </span>
+
+    <% when "notpaid"%>
+      <span class="label label-default">PAGO PENDIENTE</span>
+    <% end %>
+  </td>
+  <td><%= number_to_currency(sale.amount, precision: 2) %></td>
+  <td><%= number_to_currency(sale.tax, precision: 2) %></td>
+  <td><%= number_to_currency(sale.discount, precision: 2) %></td>
+  <td><%= number_to_currency(sale.total, precision: 2) %></td>
+</tr>

+ 14 - 0
app/views/sales/sales_per_month.js.erb

@@ -0,0 +1,14 @@
+var table = $('#sales_table').DataTable();
+$('#sales_table').dataTable().fnClearTable();
+<% @sales.each_with_index do |sale, key| %>
+  var row = $('<%= j render partial: "sale_for_report", locals: {sale: sale} %>');
+  table.row.add(row).draw();
+<% end %>
+
+$('#sales_total').html(accounting.formatMoney('<%= @sales_total %>'));
+$('#prods_total').html('<%= @prods_total %>');
+$('#sales_quantity').html('<%= @sales_quantity %>');
+
+$('#cash_sales_total').html(accounting.formatMoney('<%= @cash_sales_total %>'));
+$('#reserved_sales_total').html(accounting.formatMoney('<%= @reserved_sales_total %>'));
+$('#credit_sales_total').html(accounting.formatMoney('<%= @credit_sales_total %>'));

+ 203 - 0
app/views/sales/sales_per_month_report.html.erb

@@ -0,0 +1,203 @@
+  <!-- BEGIN CONTAINER -->
+  <div class="page-container">
+    <!-- BEGIN CONTENT -->
+    <div class="page-content-wrapper">
+      <!-- BEGIN CONTENT BODY -->
+      <!-- BEGIN PAGE HEAD-->
+      <div class="page-head">
+        <div class="container-fluid">
+          <!-- BEGIN PAGE TITLE -->
+          <div class="page-title">
+            <h1>Reporte ventas por mes </h1>
+          </div>
+          <!-- END PAGE TITLE -->
+        </div>
+      </div>
+      <!-- END PAGE HEAD-->
+      <!-- BEGIN PAGE CONTENT BODY -->
+      <div class="page-content">
+        <div class="container-fluid">
+          <!-- BEGIN PAGE BREADCRUMBS -->
+          <ul class="page-breadcrumb breadcrumb">
+            <%= render_breadcrumbs :tag => :li, :separator => ' <i class="fa fa-circle"></i> ' %>
+          </ul>
+          <!-- END PAGE BREADCRUMBS -->
+          <div class="search-page search-content-3">
+            <div class="row">
+              <div class="col-md-12">
+                <div class="search-filter bordered">
+                <!-- <h4 class=" uppercase form-section"> Búsqueda de producto </h4> <hr> -->
+                  <div class="form-group">
+                    <div class="row">
+                      <div class="col-md-3">
+                        <div class="search-label uppercase">Punto de venta</div>
+                        <div class="col-md-12">
+                          <%= select_tag "pointsale", options_from_collection_for_select(Pointsale.vigentes, :id, :name), :include_blank => "Todas",  class: "form-control  input-medium" %>
+                        </div>
+                      </div>
+                      <div class="col-md-3">
+                        <div class="search-label uppercase"> Del </div>
+                        <div class="col-md-6">
+                          <div class="input-group input-medium date date-picker" data-date-format="dd/mm/yyyy">
+                            <input id="start" type='text' class="form-control"/>
+                            <span class="input-group-addon">
+                              <span class="glyphicon glyphicon-calendar"></span>
+                            </span>
+                          </div>
+                        </div>
+                      </div>
+                      <div class="col-md-3">
+                        <div class="search-label uppercase"> Al </div>
+                        <div class="col-md-6">
+                          <div class="input-group input-medium date date-picker" data-date-format="dd/mm/yyyy">
+                            <input id="end" type='text' class="form-control"/>
+                            <span class="input-group-addon">
+                              <span class="glyphicon glyphicon-calendar"></span>
+                            </span>
+                          </div>
+                        </div>
+                      </div>
+                      <div class="col-md-3" style="margin-top: 20px">
+                        <button class="btn green bold  btn-block" onclick="findSalesByPeriod()" style="margin:0px">Buscar <i class="m-icon-swapright m-icon-white"></i> </button>
+                      </div>
+                    </div>
+                  </div>
+                </div>
+              </div>
+            </div>
+          </div>
+          <!-- BEGIN PAGE CONTENT INNER -->
+          <div class="page-content-inner">
+            <div class="row ">
+              <div class="portlet light">
+                <div class="portlet-title">
+                  <div class="caption">
+                    <span class="caption-subject font-blue-dark bold uppercase">Ventas</span>
+                  </div>
+                </div>
+                <div class="portlet-body form" id="sales_content">
+                  <div class="product_track_search">
+                    <div class="row">
+                      <div class="col-md-12">
+                        <div class="note note-success hidden" id="note_info">
+                          <h4 class="block">Detalle de ventas del periodo: <strong><span id="start_date_display"></span></strong> al <strong><span id="end_date_display"></span></strong> en <strong><span id="pointsale_display"></span></strong></h4>
+                        </div>
+
+                        <div class="col-xs-4">
+                          <div class="text-center well" id="container_total_prods" style="margin-bottom: 0px">
+                            <div class="font-grey-mint font-sm">NUMERO DE VENTAS</div>
+                            <div class="uppercase font-hg font-blue-sharp" id="sales_quantity">0</div>
+                          </div>
+                        </div>
+                        <div class="col-xs-4">
+                          <div class="text-center well" id="container_total_prods" style="margin-bottom: 0px">
+                            <div class="font-grey-mint font-sm">PRODUCTOS VENDIDOS</div>
+                            <div class="uppercase font-hg font-blue-sharp" id="prods_total">0</div>
+                          </div>
+                        </div>
+                        <div class="col-xs-4">
+                          <div class="text-center well" id="container_total_prods" style="margin-bottom: 0px">
+                            <div class="font-grey-mint font-sm">TOTAL DE INGRESOS</div>
+                            <div class="uppercase font-hg font-green" id="sales_total">$0.00</div>
+                          </div>
+                        </div>
+                      </div>
+                    </div>
+                    <div class="row" style="margin-top:20px">
+                      <div class="col-xs-1"></div>
+                      <div class="col-md-3 col-sm-3 col-xs-6">
+                        <div class="text-center well" id="container_total_prods" style="margin-bottom: 0px">
+                          <div class="font-grey-mint font-sm">ingresos por ventas a contado </div>
+                          <div class="uppercase font-hg font-blue-sharp" id="cash_sales_total"> $0.00</div>
+                        </div>
+                      </div>
+                      <div class="col-md-3 col-sm-3 col-xs-6">
+                        <div class="text-center well" id="container_total_prods" style="margin-bottom: 0px">
+                          <div class="font-grey-mint font-sm">ingresos por apartados</div>
+                          <div class="uppercase font-hg font-blue-sharp" id="reserved_sales_total"> $0.00</div>
+                        </div>
+                      </div>
+                      <div class="col-md-3 col-sm-3 col-xs-6">
+                        <div class="text-center well" id="container_total_prods" style="margin-bottom: 0px">
+                          <div class="font-grey-mint font-sm">ingresos por ventas a crédito </div>
+                          <div class="uppercase font-hg font-blue-sharp" id="credit_sales_total"> $0.00</div>
+                        </div>
+                      </div>
+                      <div class="col-xs-1"></div>
+                    </div>
+                    <br>
+                    <div class="row">
+                      <div class="col-md-12">
+                        <table class="table table-striped table-bordered table-hover tableadvanced" id="sales_table">
+                          <thead>
+                            <tr>
+                              <th>Fecha</th>
+                              <th>Folio</th>
+                              <th>Punto de venta</th>
+                              <th>Vendido por</th>
+                              <th>Productos</th>
+                              <th>Tipo</th>
+                              <th>Status</th>
+                              <th>subtotal</th>
+                              <th>IVA</th>
+                              <th>Descto.</th>
+                              <th>Total</th>
+                            </tr>
+                          </thead>
+                          <tbody>
+                          </tbody>
+                        </table>
+                      </div>
+                    </div>
+                  </div>
+                </div>
+              </div>
+            </div>
+          </div>
+          <!-- END PAGE CONTENT INNER -->
+        </div>
+      </div>
+      <!-- END PAGE CONTENT BODY -->
+      <!-- END CONTENT BODY -->
+    </div>
+    <!-- END CONTENT -->
+  </div>
+  <!-- END CONTAINER -->
+  <script type="text/javascript">
+    var rows_selected = [];
+
+    //buscar ventas por periodo de tiempo
+    function findSalesByPeriod() {
+      var pointsale = $('#pointsale').val();
+      var start = moment($("#start").val(), "DD-MM-YYYY").format('YYYY-MM-DD');
+      var end = moment($("#end").val(), "DD-MM-YYYY").format('YYYY-MM-DD');
+
+      if ($("#start").val() && $("#end").val()) {
+        App.blockUI({
+          target: $("#sales_content"),
+          animate: true
+        });
+
+        $.ajax({
+          type: "get",
+          url:  '/sales_per_month/',
+          data: {
+            start_date: start,
+            end_date: end,
+            pointsale_id: pointsale
+          },
+          dataType: 'script',
+          success: function(data) {
+            App.unblockUI($("#sales_content"));
+            $('#start_date_display').html(moment($("#start").val(), "DD-MM-YYYY").format('DD/MM/YYYY'));
+            $('#end_date_display').html(moment($("#end").val(), "DD-MM-YYYY").format('DD/MM/YYYY'));
+            $('#pointsale_display').html(pointsale ? $('#pointsale').find("option:selected").text() : 'TODOS los puntos de venta');
+            $('#note_info').removeClass('hidden');
+          }
+        });
+      }else{
+        toastr["error"]("Es necesario seleccionar fechas.");
+      }
+    }
+
+  </script>

+ 258 - 256
config/navigation.rb

@@ -3,291 +3,293 @@
 module SimpleNavigationn
   module Renderer
     class BootstrapBreadcrumbs < SimpleNavigation::Renderer::Base
-
       def render(item_container)
-        content_tag(:ul, li_tags(item_container).join(join_with), { id: item_container.dom_id, class: "page-breadcrumb breadcrumb" })
+        content_tag(:ul, li_tags(item_container).join(join_with), id: item_container.dom_id, class: "page-breadcrumb breadcrumb")
       end
 
       protected
 
       def li_tags(item_container)
         item_container.items.inject([]) do |list, item|
+          # rubocop:disable Style/IfInsideElse
           if item.selected?
             if include_sub_navigation?(item)
-              list << content_tag(:li, link_to(item.name[:text], item.url, {method: item.method}.merge(item.html_options.except(:class,:id)))) if item.selected?
+              list << content_tag(:li, link_to(item.name[:text], item.url, { method: item.method }.merge(item.html_options.except(:class, :id)))) if item.selected?
               list.concat li_tags(item.sub_navigation)
+            elsif item.name.is_a? String
+              list << content_tag(:li, item.name, class: 'active ') if item.selected?
             else
-            	if item.name.is_a? String
-            		list << content_tag(:li, item.name, { class: 'active ' }) if item.selected?
-            	else
-              		list << content_tag(:li, item.name[:text], { class: 'active ' }) if item.selected?
-          		end
+              list << content_tag(:li, item.name[:text], class: 'active ') if item.selected?
             end
           end
-          list
+          # rubocop:enable Style/IfInsideElse
         end
+        list
       end
+    end
 
-      def join_with
-        @join_with ||= options[:join_with] || ' <i class="fa fa-circle"></i> '
-        content_tag(:li, content_tag(:span, @join_with, :class => 'divider') )
-      end
+    def join_with
+      @join_with ||= options[:join_with] || ' <i class="fa fa-circle"></i> '
+      content_tag(:li, content_tag(:span, @join_with, class: 'divider'))
     end
   end
 end
-SimpleNavigation.register_renderer :bootstrap_breadcrumbs => SimpleNavigationn::Renderer::BootstrapBreadcrumbs
-
+SimpleNavigation.register_renderer bootstrap_breadcrumbs: SimpleNavigationn::Renderer::BootstrapBreadcrumbs
+# rubocop:disable Metrics/BlockLength
 SimpleNavigation::Configuration.run do |navigation|
-	
-	navigation.renderer = SimpleNavigationRenderers::Bootstrap3
-	navigation.items do |primary|
-
-		primary.item :home, {icon: "fa fa-fw fa-home", text: "Inicio"}, root_path, :class => 'menu-dropdown classic-menu-dropdown'
-
-		if current_user.usertype == 'A' 
-			# clientes
-			primary.item :customers, {icon: "fa fa-fw fa-smile-o", text: "Clientes"}, customers_path, :class => 'menu-dropdown classic-menu-dropdown' do |sub_nav|
-				sub_nav.dom_attributes = {class: 'dropdown-menu pull-left'}
-				sub_nav.item :new_customer, 'Nuevo Cliente', new_customer_path
-				sub_nav.item :list_customers, 'Lista de clientes', customers_path
-				sub_nav.item :divider_after_list_customers, '#', divider: true
-				sub_nav.item :special_prices, 'Descuentos especiales por cliente', new_special_price_path
-			end		
-			# proveedores
-			primary.item :suppliers, {icon: "fa fa-fw fa-suitcase", text: "Proveedores"}, suppliers_path, :class => 'menu-dropdown classic-menu-dropdown' do |sub_nav|
-				sub_nav.dom_attributes = {class: 'dropdown-menu pull-left'}
-				sub_nav.item :new_supplier, 'Nuevo Proveedor', new_supplier_path
-				sub_nav.item :list_suppliers, 'Lista de proveedores', suppliers_path
-			end
-			# productos
-			primary.item :products, {icon: "fa fa-fw fa-cubes", text: "Productos"}, products_path, :class => 'menu-dropdown classic-menu-dropdown' do |sub_nav|
-				sub_nav.dom_attributes = {class: 'dropdown-menu pull-left'}
-				sub_nav.item :units, 'Unidades de medida', units_path
-				sub_nav.item :divider_before_categories, '#', divider: true
-				sub_nav.item :new_category, 'Nueva línea de producto', new_category_path
-				sub_nav.item :list_categories, 'Lista de líneas de producto', categories_path
-				sub_nav.item :divider_before_products, '#', divider: true
-				sub_nav.item :new_product, 'Nuevo Producto', new_product_path
-				sub_nav.item :list_products, 'Lista de productos', products_path
-				sub_nav.item :stock_by_pointsale, 'Existencias', stock_by_pointsale_path
-				sub_nav.item :list_waste_of_products, 'Lista de mermas de productos', product_wastes_path				
-				sub_nav.item :divider_before_purchases, '#', divider: true
-				sub_nav.item :new_product, 'Nueva Compra', new_purchase_path
-				sub_nav.item :list_products, 'Lista de compras', purchases_path
-				sub_nav.item :divider_before_purchases, '#', divider: true
-				sub_nav.item :product_track, 'Seguimiento de productos', product_track_path
-			end
-			# puntos de venta y caja registradora
-			primary.item :pointsales, {icon: "fa fa-fw fa-cart-plus", text: "Puntos de venta"}, pointsales_path, :class => 'menu-dropdown classic-menu-dropdown' do |sub_nav|
-				sub_nav.dom_attributes = {class: 'dropdown-menu pull-left'}
-				sub_nav.item :new_pointsale, 'Nuevo Punto de venta', new_pointsale_path
-				sub_nav.item :list_pointsales, 'Lista de puntos de venta', pointsales_path
-				sub_nav.item :divider_before_pointsales, '#', divider: true
-				sub_nav.item :list_cash_registers, 'Lista de cajas', cash_registers_path
-				sub_nav.item :list_cash_outs, 'Lista de cortes de caja', cash_outs_path
-				sub_nav.item :divider_before_sellers, '#', divider: true				
-				sub_nav.item :new_seller, 'Nuevo vendedor', new_seller_path				
-				sub_nav.item :list_sellers, 'Lista de vendedores', sellers_path
-				sub_nav.item :divider_after_sellers, '#', divider: true
-				sub_nav.item :new_transfer, 'Nuevo traspaso', new_transfer_path
-				sub_nav.item :list_transfers, 'Lista de traspasos', transfers_path
-				sub_nav.item :divider_after_list_users, '#', divider: true
-				sub_nav.item :list_warehouse, 'Almacenes', warehouses_path	
-			end
-			#ventas
-			primary.item :sales, {icon: "fa fa-fw fa-money", text:"Ventas" }, sales_path, :class => 'menu-dropdown classic-menu-dropdown' do |sub_nav|
-				sub_nav.dom_attributes = {class: 'dropdown-menu pull-left'}
-				sub_nav.item :list_sales, 'Lista de ventas', sales_path
-				sub_nav.item :divider_after_list_sales, '#', divider: true
-				sub_nav.item :list_sales_reserved, 'Lista de apartados', sales_reserved_path				
-				sub_nav.item :commission, "Lista de comisiones", commissions_path
-			end				
-			# egresos	
-			primary.item :expensesconcepts, {icon: "fa fa-fw fa-dollar", text:"Egresos" }, expensesconcepts_path, :class => 'menu-dropdown classic-menu-dropdown' do |sub_nav|
-				sub_nav.dom_attributes = {class: 'dropdown-menu pull-left'}
-				sub_nav.item :new_expensesconcept, 'Nuevo Concepto de egreso', new_expensesconcept_path
-				sub_nav.item :list_expensesconcepts, 'Lista de conceptos de egreso', expensesconcepts_path
-				sub_nav.item :divider_after_list_expensesconcepts, '#', divider: true
-				sub_nav.item :new_expense, 'Nuevo egreso', new_expense_path
-				sub_nav.item :list_expenses, 'Lista de egresos', expenses_path
-			end	
-			# configuracion	
-			primary.item :config, {icon: "fa fa-fw fa-cog", text:"Configuración" }, '#', :class => 'menu-dropdown classic-menu-dropdown' do |sub_nav|
-				sub_nav.dom_attributes = {class: 'dropdown-menu pull-left'}
-				sub_nav.item :pos_configs, 'Configurar parametros generales', pos_configs_path
-				sub_nav.item :divider_after_list_transfers, '#', divider: true
-				sub_nav.item :list_users, 'Usuarios del sistema', users_path				
-			end						
-		end
-
-		if current_user.usertype == 'G' 
-			# clientes	
-			primary.item :customers, {icon: "fa fa-fw fa-smile-o", text: "Clientes"}, customers_path, :class => 'menu-dropdown classic-menu-dropdown' do |sub_nav|
-				sub_nav.dom_attributes = {class: 'dropdown-menu pull-left'}
-				sub_nav.item :new_customer, 'Nuevo Cliente', new_customer_path
-				sub_nav.item :list_customers, 'Lista de clientes', customers_path
-				sub_nav.item :debtor_customers, 'Clientes deudores', debtors_path
-			end			
-			# proveedores
-			primary.item :suppliers, {icon: "fa fa-fw fa-suitcase", text: "Proveedores"}, suppliers_path, :class => 'menu-dropdown classic-menu-dropdown' do |sub_nav|
-				sub_nav.dom_attributes = {class: 'dropdown-menu pull-left'}
-				sub_nav.item :new_supplier, 'Nuevo Proveedor', new_supplier_path
-				sub_nav.item :list_suppliers, 'Lista de proveedores', suppliers_path
-			end
-			# productos
-			primary.item :products, {icon: "fa fa-fw fa-cubes", text: "Productos"}, products_path, :class => 'menu-dropdown classic-menu-dropdown' do |sub_nav|
-				sub_nav.dom_attributes = {class: 'dropdown-menu pull-left'}
-				sub_nav.item :units, 'Unidades de medida', units_path
-				sub_nav.item :list_categories, 'Lista de líneas de productos', categories_path
-				sub_nav.item :list_products, 'Lista de productos', products_path
-				sub_nav.item :divider_after_list_products, '#', divider: true
-				sub_nav.item :stock_by_pointsale, 'Existencias', stock_by_pointsale_path
-				sub_nav.item :divider_after_stock_by_pointsale, '#', divider: true
-				sub_nav.item :list_waste, 'Nueva merma de productos', new_product_waste_path
-				sub_nav.item :list_waste_of_products, 'Lista de mermas de productos', product_wastes_path
-				sub_nav.item :divider_before_purchases, '#', divider: true
-				sub_nav.item :new_purchase, 'Nueva Compra', new_purchase_path
-				sub_nav.item :purchases_list, 'Lista de compras', purchases_path				
-			end			
-			#ventas
-			primary.item :sales, {icon: "fa fa-fw fa-money", text:"Ventas" }, sales_path, :class => 'menu-dropdown classic-menu-dropdown' do |sub_nav|
-				sub_nav.dom_attributes = {class: 'dropdown-menu pull-left'}
-				sub_nav.item :new_sale, 'Nueva venta', new_sale_path
-				sub_nav.item :list_sales, 'Lista de ventas', sales_path
-				sub_nav.item :divider_after_list_sales, '#', divider: true
-				sub_nav.item :list_sales_reserved, 'Lista de apartados', sales_reserved_path	
-				sub_nav.item :divider_after_list_sales_reserved, '#', divider: true
-				sub_nav.item :commission, "Lista de comisiones", commissions_path
-				sub_nav.item :divider_after_list_comissions, '#', divider: true	
-				sub_nav.item :list_products_return, 'Lista de devoluciones', products_returns_path							
-
-			end	
-			# punto de venta, caja registradora y vendedores
-			primary.item :pointsales, {icon: "fa fa-fw fa-cart-plus", text: "Puntos de venta"}, pointsales_path, :class => 'menu-dropdown classic-menu-dropdown' do |sub_nav|
-				sub_nav.dom_attributes = {class: 'dropdown-menu pull-left'}
-				sub_nav.item :new_product, 'Nueva Caja', new_cash_register_path
-				sub_nav.item :list_products, 'Lista de cajas ', cash_registers_path
-				sub_nav.item :divider_after_list_products, '#', divider: true
-				sub_nav.item :list_cash_outs, 'Lista de cortes de caja', cash_outs_path
-				sub_nav.item :divider_after_list_cash_outs, '#', divider: true
-				sub_nav.item :new_seller, 'Nuevo vendedor', new_seller_path
-				sub_nav.item :list_sellers, 'Lista de vendedores', sellers_path
-				sub_nav.item :divider_after_list_sellers, '#', divider: true		
-				sub_nav.item :new_transfer, 'Nuevo traspaso', new_transfer_path
-				sub_nav.item :list_transfers, 'Lista de traspasos', transfers_path	
-				sub_nav.item :divider_after_list_transfers, '#', divider: true
-				sub_nav.item :list_users, 'Usuarios del sistema', users_path
-				sub_nav.item :divider_after_list_users, '#', divider: true
-				sub_nav.item :list_warehouse, 'Almacenes', warehouses_path					
-			end		
-			# coneptos de egresos
-			primary.item :expensesconcepts, {icon: "fa fa-fw fa-dollar", text:"Egresos" }, expensesconcepts_path, :class => 'menu-dropdown classic-menu-dropdown' do |sub_nav|
-				sub_nav.dom_attributes = {class: 'dropdown-menu pull-left'}
-				sub_nav.item :new_expensesconcept, 'Nuevo egreso', new_expense_path
-				sub_nav.item :list_expensesconcepts, 'Lista de egresos', expenses_path
-				sub_nav.item :divider_after_expenses, '#', divider: true
-				sub_nav.item :list_expensesconcepts, 'Lista de conceptos de egreso', expensesconcepts_path
-			end	
-			# configuracion	
-			primary.item :config, {icon: "fa fa-fw fa-cog", text:"Configuración" }, '#', :class => 'menu-dropdown classic-menu-dropdown' do |sub_nav|
-				sub_nav.dom_attributes = {class: 'dropdown-menu pull-left'}
-				sub_nav.item :list_products_initial_stock, 'Stock inicial de productos', products_initial_stock_path(current_user.pointsale_id)
-				sub_nav.item :list_products_stock, 'Stock minimo y maximo de productos',products_stock_path(current_user.pointsale_id)
-				sub_nav.item :divider_after_list_transfers, '#', divider: true
-				sub_nav.item :list_users, 'Usuarios del sistema', users_path				
-			end								
-		end
+  navigation.renderer = SimpleNavigationRenderers::Bootstrap3
+  navigation.items do |primary|
+    if current_user.usertype == 'A'
+      # clientes
+      primary.item :customers, { icon: "fa fa-fw fa-smile-o", text: "Clientes" }, customers_path, class: 'menu-dropdown classic-menu-dropdown' do |sub_nav|
+        sub_nav.dom_attributes = { class: 'dropdown-menu pull-left' }
+        sub_nav.item :new_customer, 'Nuevo Cliente', new_customer_path
+        sub_nav.item :list_customers, 'Lista de clientes', customers_path
+        sub_nav.item :divider_after_list_customers, '#', divider: true
+        sub_nav.item :special_prices, 'Descuentos especiales por cliente', new_special_price_path
+      end
+      # proveedores
+      primary.item :suppliers, { icon: "fa fa-fw fa-suitcase", text: "Proveedores" }, suppliers_path, class: 'menu-dropdown classic-menu-dropdown' do |sub_nav|
+        sub_nav.dom_attributes = { class: 'dropdown-menu pull-left' }
+        sub_nav.item :new_supplier, 'Nuevo Proveedor', new_supplier_path
+        sub_nav.item :list_suppliers, 'Lista de proveedores', suppliers_path
+      end
+      # productos
+      primary.item :products, { icon: "fa fa-fw fa-cubes", text: "Productos" }, products_path, class: 'menu-dropdown classic-menu-dropdown' do |sub_nav|
+        sub_nav.dom_attributes = { class: 'dropdown-menu pull-left' }
+        sub_nav.item :units, 'Unidades de medida', units_path
+        sub_nav.item :divider_before_categories, '#', divider: true
+        sub_nav.item :new_category, 'Nueva línea de producto', new_category_path
+        sub_nav.item :list_categories, 'Lista de líneas de producto', categories_path
+        sub_nav.item :divider_before_products, '#', divider: true
+        sub_nav.item :new_product, 'Nuevo Producto', new_product_path
+        sub_nav.item :list_products, 'Lista de productos', products_path
+        sub_nav.item :stock_by_pointsale, 'Existencias', stock_by_pointsale_path
+        sub_nav.item :list_waste_of_products, 'Lista de mermas de productos', product_wastes_path
+        sub_nav.item :divider_before_purchases, '#', divider: true
+        sub_nav.item :new_product, 'Nueva Compra', new_purchase_path
+        sub_nav.item :list_products, 'Lista de compras', purchases_path
+        sub_nav.item :divider_before_purchases, '#', divider: true
+        sub_nav.item :product_track, 'Seguimiento de productos', product_track_path
+      end
+      # puntos de venta y caja registradora
+      primary.item :pointsales, { icon: "fa fa-fw fa-cart-plus", text: "Puntos de venta" }, pointsales_path, class: 'menu-dropdown classic-menu-dropdown' do |sub_nav|
+        sub_nav.dom_attributes = { class: 'dropdown-menu pull-left' }
+        sub_nav.item :new_pointsale, 'Nuevo Punto de venta', new_pointsale_path
+        sub_nav.item :list_pointsales, 'Lista de puntos de venta', pointsales_path
+        sub_nav.item :divider_before_pointsales, '#', divider: true
+        sub_nav.item :list_cash_registers, 'Lista de cajas', cash_registers_path
+        sub_nav.item :list_cash_outs, 'Lista de cortes de caja', cash_outs_path
+        sub_nav.item :divider_before_sellers, '#', divider: true
+        sub_nav.item :new_seller, 'Nuevo vendedor', new_seller_path
+        sub_nav.item :list_sellers, 'Lista de vendedores', sellers_path
+        sub_nav.item :divider_after_sellers, '#', divider: true
+        sub_nav.item :new_transfer, 'Nuevo traspaso', new_transfer_path
+        sub_nav.item :list_transfers, 'Lista de traspasos', transfers_path
+        sub_nav.item :divider_after_list_users, '#', divider: true
+        sub_nav.item :list_warehouse, 'Almacenes', warehouses_path
+      end
+      # ventas
+      primary.item :sales, { icon: "fa fa-fw fa-money", text: "Ventas" }, sales_path, class: 'menu-dropdown classic-menu-dropdown' do |sub_nav|
+        sub_nav.dom_attributes = { class: 'dropdown-menu pull-left' }
+        sub_nav.item :list_sales, 'Lista de ventas', sales_path
+        sub_nav.item :divider_after_list_sales, '#', divider: true
+        sub_nav.item :list_sales_reserved, 'Lista de apartados', sales_reserved_path
+        sub_nav.item :commission, "Lista de comisiones", commissions_path
+      end
+      # egresos
+      primary.item :expensesconcepts, { icon: "fa fa-fw fa-dollar", text: "Egresos" }, expensesconcepts_path, class: 'menu-dropdown classic-menu-dropdown' do |sub_nav|
+        sub_nav.dom_attributes = { class: 'dropdown-menu pull-left' }
+        sub_nav.item :new_expensesconcept, 'Nuevo Concepto de egreso', new_expensesconcept_path
+        sub_nav.item :list_expensesconcepts, 'Lista de conceptos de egreso', expensesconcepts_path
+        sub_nav.item :divider_after_list_expensesconcepts, '#', divider: true
+        sub_nav.item :new_expense, 'Nuevo egreso', new_expense_path
+        sub_nav.item :list_expenses, 'Lista de egresos', expenses_path
+      end
+      # reportes
+      primary.item :reports, { icon: "fa fa-bar-chart", text: "Reportes" }, '#', class: 'menu-dropdown classic-menu-dropdown' do |sub_nav|
+        sub_nav.dom_attributes = { class: 'dropdown-menu pull-left' }
+        sub_nav.item :sales_per_month, 'Ventas por mes', sales_per_month_report_path
+      end
+      # configuracion
+      primary.item :config, { icon: "fa fa-fw fa-cog", text: "Configuración" }, '#', class: 'menu-dropdown classic-menu-dropdown' do |sub_nav|
+        sub_nav.dom_attributes = { class: 'dropdown-menu pull-left' }
+        sub_nav.item :pos_configs, 'Configurar parametros generales', pos_configs_path
+        sub_nav.item :divider_after_list_transfers, '#', divider: true
+        sub_nav.item :list_users, 'Usuarios del sistema', users_path
+      end
+    end
 
-		if current_user.usertype == 'C'
-			# clientes	
-			primary.item :customers, {icon: "fa fa-fw fa-smile-o", text: "Clientes"}, customers_path, :class => 'menu-dropdown classic-menu-dropdown' do |sub_nav|
-				sub_nav.dom_attributes = {class: 'dropdown-menu pull-left'}
-				sub_nav.item :new_customer, 'Nuevo Cliente', new_customer_path
-				sub_nav.item :list_customers, 'Lista de clientes', customers_path
-				sub_nav.item :divider_after_list_customers, '#', divider: true
-				sub_nav.item :debtor_customers, 'Clientes deudores', debtors_path
-			end
+    if current_user.usertype == 'G'
+      primary.item :home, { icon: "fa fa-fw fa-home", text: "Inicio" }, root_path, class: 'menu-dropdown classic-menu-dropdown'
+      # clientes
+      primary.item :customers, { icon: "fa fa-fw fa-smile-o", text: "Clientes" }, customers_path, class: 'menu-dropdown classic-menu-dropdown' do |sub_nav|
+        sub_nav.dom_attributes = { class: 'dropdown-menu pull-left' }
+        sub_nav.item :new_customer, 'Nuevo Cliente', new_customer_path
+        sub_nav.item :list_customers, 'Lista de clientes', customers_path
+        sub_nav.item :debtor_customers, 'Clientes deudores', debtors_path
+      end
+      # proveedores
+      primary.item :suppliers, { icon: "fa fa-fw fa-suitcase", text: "Proveedores" }, suppliers_path, class: 'menu-dropdown classic-menu-dropdown' do |sub_nav|
+        sub_nav.dom_attributes = { class: 'dropdown-menu pull-left' }
+        sub_nav.item :new_supplier, 'Nuevo Proveedor', new_supplier_path
+        sub_nav.item :list_suppliers, 'Lista de proveedores', suppliers_path
+      end
+      # productos
+      primary.item :products, { icon: "fa fa-fw fa-cubes", text: "Productos" }, products_path, class: 'menu-dropdown classic-menu-dropdown' do |sub_nav|
+        sub_nav.dom_attributes = { class: 'dropdown-menu pull-left' }
+        sub_nav.item :units, 'Unidades de medida', units_path
+        sub_nav.item :list_categories, 'Lista de líneas de productos', categories_path
+        sub_nav.item :list_products, 'Lista de productos', products_path
+        sub_nav.item :divider_after_list_products, '#', divider: true
+        sub_nav.item :stock_by_pointsale, 'Existencias', stock_by_pointsale_path
+        sub_nav.item :divider_after_stock_by_pointsale, '#', divider: true
+        sub_nav.item :list_waste, 'Nueva merma de productos', new_product_waste_path
+        sub_nav.item :list_waste_of_products, 'Lista de mermas de productos', product_wastes_path
+        sub_nav.item :divider_before_purchases, '#', divider: true
+        sub_nav.item :new_purchase, 'Nueva Compra', new_purchase_path
+        sub_nav.item :purchases_list, 'Lista de compras', purchases_path
+      end
+      # ventas
+      primary.item :sales, { icon: "fa fa-fw fa-money", text: "Ventas" }, sales_path, class: 'menu-dropdown classic-menu-dropdown' do |sub_nav|
+        sub_nav.dom_attributes = { class: 'dropdown-menu pull-left' }
+        sub_nav.item :new_sale, 'Nueva venta', new_sale_path
+        sub_nav.item :list_sales, 'Lista de ventas', sales_path
+        sub_nav.item :divider_after_list_sales, '#', divider: true
+        sub_nav.item :list_sales_reserved, 'Lista de apartados', sales_reserved_path
+        sub_nav.item :divider_after_list_sales_reserved, '#', divider: true
+        sub_nav.item :commission, "Lista de comisiones", commissions_path
+        sub_nav.item :divider_after_list_comissions, '#', divider: true
+        sub_nav.item :list_products_return, 'Lista de devoluciones', products_returns_path
+      end
+      # punto de venta, caja registradora y vendedores
+      primary.item :pointsales, { icon: "fa fa-fw fa-cart-plus", text: "Puntos de venta" }, pointsales_path, class: 'menu-dropdown classic-menu-dropdown' do |sub_nav|
+        sub_nav.dom_attributes = { class: 'dropdown-menu pull-left' }
+        sub_nav.item :new_product, 'Nueva Caja', new_cash_register_path
+        sub_nav.item :list_products, 'Lista de cajas ', cash_registers_path
+        sub_nav.item :divider_after_list_products, '#', divider: true
+        sub_nav.item :list_cash_outs, 'Lista de cortes de caja', cash_outs_path
+        sub_nav.item :divider_after_list_cash_outs, '#', divider: true
+        sub_nav.item :new_seller, 'Nuevo vendedor', new_seller_path
+        sub_nav.item :list_sellers, 'Lista de vendedores', sellers_path
+        sub_nav.item :divider_after_list_sellers, '#', divider: true
+        sub_nav.item :new_transfer, 'Nuevo traspaso', new_transfer_path
+        sub_nav.item :list_transfers, 'Lista de traspasos', transfers_path
+        sub_nav.item :divider_after_list_transfers, '#', divider: true
+        sub_nav.item :list_users, 'Usuarios del sistema', users_path
+        sub_nav.item :divider_after_list_users, '#', divider: true
+        sub_nav.item :list_warehouse, 'Almacenes', warehouses_path
+      end
+      # coneptos de egresos
+      primary.item :expensesconcepts, { icon: "fa fa-fw fa-dollar", text: "Egresos" }, expensesconcepts_path, class: 'menu-dropdown classic-menu-dropdown' do |sub_nav|
+        sub_nav.dom_attributes = { class: 'dropdown-menu pull-left' }
+        sub_nav.item :new_expensesconcept, 'Nuevo egreso', new_expense_path
+        sub_nav.item :list_expensesconcepts, 'Lista de egresos', expenses_path
+        sub_nav.item :divider_after_expenses, '#', divider: true
+        sub_nav.item :list_expensesconcepts, 'Lista de conceptos de egreso', expensesconcepts_path
+      end
+      # configuracion
+      primary.item :config, { icon: "fa fa-fw fa-cog", text: "Configuración" }, '#', class: 'menu-dropdown classic-menu-dropdown' do |sub_nav|
+        sub_nav.dom_attributes = { class: 'dropdown-menu pull-left' }
+        sub_nav.item :list_products_initial_stock, 'Stock inicial de productos', products_initial_stock_path(current_user.pointsale_id)
+        sub_nav.item :list_products_stock, 'Stock minimo y maximo de productos', products_stock_path(current_user.pointsale_id)
+        sub_nav.item :divider_after_list_transfers, '#', divider: true
+        sub_nav.item :list_users, 'Usuarios del sistema', users_path
+      end
+    end
 
-			#productos
-			primary.item :products, {icon: "fa fa-fw fa-cubes", text: "Productos"}, products_path, :class => 'menu-dropdown classic-menu-dropdown' do |sub_nav|
-				sub_nav.item :stock_by_pointsale, 'Existencias', stock_by_pointsale_path				
-			end
-			#ventas
-			primary.item :sales, {icon: "fa fa-fw fa-money", text:"Ventas" }, sales_path, :class => 'menu-dropdown classic-menu-dropdown' do |sub_nav|
-				sub_nav.dom_attributes = {class: 'dropdown-menu pull-left'}
-				sub_nav.item :new_sale, 'Nueva venta', new_sale_path
-				sub_nav.item :list_sales, 'Lista de ventas', sales_path
-				sub_nav.item :divider_after_list_sales, '#', divider: true
-				sub_nav.item :list_sales_reserved, 'Lista de apartados', sales_reserved_path
-				sub_nav.item :divider_after_list_comissions, '#', divider: true	
-				sub_nav.item :list_products_return, 'Lista de devoluciones', products_returns_path								
-			end	
-			# caja y cortes de caja
-			primary.item :cash_register, {icon: "fa fa-shopping-cart", text:"Caja" }, '#', :class => 'menu-dropdown classic-menu-dropdown' do |sub_nav|
-				sub_nav.dom_attributes = {class: 'dropdown-menu pull-left'}
-				sub_nav.item :cash_out, 'Corte de caja', new_cash_out_path
-				# sub_nav.item :list_cash_outs, 'Lista de cortes de caja', cash_outs_path
-			end
-			# conceptos de egresos	
-			primary.item :expenses, {icon: "fa fa-fw fa-dollar", text:"Egresos" }, expenses_path, :class => 'menu-dropdown classic-menu-dropdown' do |sub_nav|
-				sub_nav.dom_attributes = {class: 'dropdown-menu pull-left'}
-				sub_nav.item :new_expense, 'Nuevo egreso', new_expense_path
-				sub_nav.item :list_expenses, 'Lista de egresos', expenses_path
-			end	
-			# conceptos de egresos	
-			primary.item :transfers, {icon: "fa fa-fw fa-dollar", text:"Traspasos" }, transfers_path, :class => 'menu-dropdown classic-menu-dropdown' do |sub_nav|
-				sub_nav.dom_attributes = {class: 'dropdown-menu pull-left'}
-				sub_nav.item :list_expenses, 'Lista de traspasos', transfers_path
-			end				
-		end
+    if current_user.usertype == 'C'
+      primary.item :home, { icon: "fa fa-fw fa-home", text: "Inicio" }, root_path, class: 'menu-dropdown classic-menu-dropdown'
+      # clientes
+      primary.item :customers, { icon: "fa fa-fw fa-smile-o", text: "Clientes" }, customers_path, class: 'menu-dropdown classic-menu-dropdown' do |sub_nav|
+        sub_nav.dom_attributes = { class: 'dropdown-menu pull-left' }
+        sub_nav.item :new_customer, 'Nuevo Cliente', new_customer_path
+        sub_nav.item :list_customers, 'Lista de clientes', customers_path
+        sub_nav.item :divider_after_list_customers, '#', divider: true
+        sub_nav.item :debtor_customers, 'Clientes deudores', debtors_path
+      end
 
-		if current_user.usertype == 'S'
-			#existencias
-			primary.item :products, {icon: "fa fa-fw fa-cubes", text: "Existencias"}, stock_by_pointsale_path, :class => 'menu-dropdown classic-menu-dropdown'
-			#traspasos
-			primary.item :transfers, {icon: "fa fa-fw fa-exchange", text: "Traspasos"}, '#', :class => 'menu-dropdown classic-menu-dropdown' do |sub_nav|		
-				sub_nav.item :new_transfer, 'Nuevo traspaso', new_transfer_path
-				sub_nav.item :list_transfers, 'Lista de traspasos', transfers_path	
-			end			
-			#mermas
-			primary.item :product_wastes, {icon: "fa fa-fw fa-arrow-down", text: "Mermas"}, '#', :class => 'menu-dropdown classic-menu-dropdown' do |sub_nav|
-				sub_nav.item :list_waste, 'Nueva merma de productos', new_product_waste_path
-				sub_nav.item :list_waste_of_products, 'Lista de mermas de productos', product_wastes_path				
-			end			
-			#inventario
-			primary.item :stock, {icon: "fa fa-fw fa-database", text: "Inventario"}, '#', :class => 'menu-dropdown classic-menu-dropdown' do |sub_nav|
-				sub_nav.item :initial_stock, 'Inventario inicial', products_initial_stock_path(current_user.warehouse_id)
-				sub_nav.item :stock_adjustment, 'Ajuste de inventario', products_stock_path(current_user.warehouse_id)
-			end							
-		end
+      # productos
+      primary.item :products, { icon: "fa fa-fw fa-cubes", text: "Productos" }, products_path, class: 'menu-dropdown classic-menu-dropdown' do |sub_nav|
+        sub_nav.item :stock_by_pointsale, 'Existencias', stock_by_pointsale_path
+      end
+      # ventas
+      primary.item :sales, { icon: "fa fa-fw fa-money", text: "Ventas" }, sales_path, class: 'menu-dropdown classic-menu-dropdown' do |sub_nav|
+        sub_nav.dom_attributes = { class: 'dropdown-menu pull-left' }
+        sub_nav.item :new_sale, 'Nueva venta', new_sale_path
+        sub_nav.item :list_sales, 'Lista de ventas', sales_path
+        sub_nav.item :divider_after_list_sales, '#', divider: true
+        sub_nav.item :list_sales_reserved, 'Lista de apartados', sales_reserved_path
+        sub_nav.item :divider_after_list_comissions, '#', divider: true
+        sub_nav.item :list_products_return, 'Lista de devoluciones', products_returns_path
+      end
+      # caja y cortes de caja
+      primary.item :cash_register, { icon: "fa fa-shopping-cart", text: "Caja" }, '#', class: 'menu-dropdown classic-menu-dropdown' do |sub_nav|
+        sub_nav.dom_attributes = { class: 'dropdown-menu pull-left' }
+        sub_nav.item :cash_out, 'Corte de caja', new_cash_out_path
+        # sub_nav.item :list_cash_outs, 'Lista de cortes de caja', cash_outs_path
+      end
+      # conceptos de egresos
+      primary.item :expenses, { icon: "fa fa-fw fa-dollar", text: "Egresos" }, expenses_path, class: 'menu-dropdown classic-menu-dropdown' do |sub_nav|
+        sub_nav.dom_attributes = { class: 'dropdown-menu pull-left' }
+        sub_nav.item :new_expense, 'Nuevo egreso', new_expense_path
+        sub_nav.item :list_expenses, 'Lista de egresos', expenses_path
+      end
+      # conceptos de egresos
+      primary.item :transfers, { icon: "fa fa-fw fa-dollar", text: "Traspasos" }, transfers_path, class: 'menu-dropdown classic-menu-dropdown' do |sub_nav|
+        sub_nav.dom_attributes = { class: 'dropdown-menu pull-left' }
+        sub_nav.item :list_expenses, 'Lista de traspasos', transfers_path
+      end
+    end
 
-class BootstrapBreadcrumbs < SimpleNavigation::Renderer::Base
+    if current_user.usertype == 'S'
+      primary.item :home, { icon: "fa fa-fw fa-home", text: "Inicio" }, root_path, class: 'menu-dropdown classic-menu-dropdown'
+      # existencias
+      primary.item :products, { icon: "fa fa-fw fa-cubes", text: "Existencias" }, stock_by_pointsale_path, class: 'menu-dropdown classic-menu-dropdown'
+      # traspasos
+      primary.item :transfers, { icon: "fa fa-fw fa-exchange", text: "Traspasos" }, '#', class: 'menu-dropdown classic-menu-dropdown' do |sub_nav|
+        sub_nav.item :new_transfer, 'Nuevo traspaso', new_transfer_path
+        sub_nav.item :list_transfers, 'Lista de traspasos', transfers_path
+      end
+      # mermas
+      primary.item :product_wastes, { icon: "fa fa-fw fa-arrow-down", text: "Mermas" }, '#', class: 'menu-dropdown classic-menu-dropdown' do |sub_nav|
+        sub_nav.item :list_waste, 'Nueva merma de productos', new_product_waste_path
+        sub_nav.item :list_waste_of_products, 'Lista de mermas de productos', product_wastes_path
+      end
+      # inventario
+      primary.item :stock, { icon: "fa fa-fw fa-database", text: "Inventario" }, '#', class: 'menu-dropdown classic-menu-dropdown' do |sub_nav|
+        sub_nav.item :initial_stock, 'Inventario inicial', products_initial_stock_path(current_user.warehouse_id)
+        sub_nav.item :stock_adjustment, 'Ajuste de inventario', products_stock_path(current_user.warehouse_id)
+      end
+    end
 
-  def render(item_container)
-      content_tag(:ul, li_tags(item_container).join(join_with), { id: item_container.dom_id, class: "#{item_container.dom_class} breadcrumb" })
-  end
+    class BootstrapBreadcrumbs < SimpleNavigation::Renderer::Base
+      def render(item_container)
+        content_tag(:ul, li_tags(item_container).join(join_with), id: item_container.dom_id, class: "#{item_container.dom_class} breadcrumb")
+      end
 
-  protected
+      protected
 
-  def li_tags(item_container)
-    item_container.items.inject([]) do |list, item|
-      if item.selected?
-        if include_sub_navigation?(item)
-          list << content_tag(:li, link_to(item.name, item.url, {method: item.method}.merge(item.html_options.except(:class,:id)))) if item.selected?
-          list.concat li_tags(item.sub_navigation)
-        else
-          list << content_tag(:li, item.name, { class: 'active' }) if item.selected?
+      def li_tags(item_container)
+        item_container.items.inject([]) do |list, item|
+          # rubocop:disable Style/IfInsideElse
+          if item.selected?
+            if include_sub_navigation?(item)
+              list << content_tag(:li, link_to(item.name, item.url, { method: item.method }.merge(item.html_options.except(:class, :id)))) if item.selected?
+              list.concat li_tags(item.sub_navigation)
+            else
+              list << content_tag(:li, item.name, class: 'active') if item.selected?
+            end
+          end
+          # rubocop:enable Style/IfInsideElse
+          list
         end
       end
-      list
-    end
-  end
 
-  def join_with
-    @join_with ||= options[:join_with] || '<span class="divider">/</span>'.html_safe
+      def join_with
+        @join_with ||= options[:join_with] || '<span class="divider">/</span>'.html_safe
+      end
+    end
   end
 end
-
-
-	end
-end
+# rubocop:enable Metrics/BlockLength

+ 2 - 0
config/routes.rb

@@ -148,6 +148,8 @@ Rails.application.routes.draw do
   patch 'sale_create_haggle/:pre_sale' => 'sales#create_haggle', :as => 'create_haggle'
   get 'cancel_reserved_sale/:sale_id' => 'sales#cancel_reserved_sale', :as => 'cancel_reserved_sale'
   get 'find_sales_by_dates_or_code' => 'sales#find_sales_by_dates_or_code', defaults: { format: 'js' }
+  get 'sales_per_month_report' => 'sales#sales_per_month_report'
+  get 'sales_per_month' => 'sales#sales_per_month', defaults: { format: 'js' }
 
   resources :pre_sales, except: [:new, :show] do
     post 'create' => 'pre_sales#create', defaults: { format: 'js' }