chemi ledon 7 年之前
父节点
当前提交
bfb37c58c2

+ 19 - 14
app/controllers/products_controller.rb

@@ -165,20 +165,22 @@ class ProductsController < ApplicationController
   end
 
   def edit_from_purchase
+    purchase_in_dollars = params[:is_in_dollars]
+    exchange = params[:exchange].to_f
+    if purchase_in_dollars == "true"
+      @product.price_base_dollars = params[:product][:price_base].to_f
+      price_in_peso = @product.price_base_dollars * exchange
+      @product.price_base = @product.price_base.present? ? price_in_peso : nil
+      @suggested_price_sale = (price_in_peso * (@pos_config.gain_margin / 100)) + price_in_peso
+    else
+      @product.price_base = params[:product][:price_base].to_f
+      price_in_dollars = @product.price_base / exchange if exchange != 0
+      @product.price_base_dollars = @product.price_base_dollars.present? ? price_in_dollars : nil
+      @suggested_price_sale = (@product.price_base * (@pos_config.gain_margin / 100)) + @product.price_base
+    end
+    @suggested_price_sale = 0 if @suggested_price_sale.nil?
+
     respond_to do |format|
-      purchase_in_dollars = params[:is_in_dollars]
-      exchange = params[:exchange].to_f
-      if purchase_in_dollars == "true"
-        @product.price_base_dollars = params[:product][:price_base].to_f
-        price_in_peso = @product.price_base_dollars * exchange
-        @product.price_base = @product.price_base.present? ? price_in_peso : nil
-        @suggested_price_sale = (price_in_peso * (@pos_config.gain_margin / 100)) + price_in_peso
-      else
-        @product.price_base = params[:product][:price_base].to_f
-        price_in_dollars = @product.price_base / exchange if exchange != 0
-        @product.price_base_dollars = @product.price_base_dollars.present? ? price_in_dollars : nil
-        @suggested_price_sale = (@product.price_base * (@pos_config.gain_margin / 100)) + @product.price_base
-      end
       @product.audit_comment = 'El producto ' + @product.sku + ' fue modificado.'
       @product.save
       format.json { head :no_content }
@@ -191,10 +193,12 @@ class ProductsController < ApplicationController
     unless @product.parent_id.nil?
       @product = Product.find(@product.parent_id)
     end
+    @product.price_base = params[:product][:price_base].to_f
+    @product.price_sale = params[:product][:price_sale].to_f
 
     message = "Se ha modificado el precio de venta base del producto " + @product.name
     respond_to do |format|
-      if @product.update(product_params)
+      if @product.save
         @product.children.each do |variant|
           variant.update_attributes(product_params)
           variant.save
@@ -203,6 +207,7 @@ class ProductsController < ApplicationController
         format.json { head :no_content }
         format.js { flash[:success] = message }
       else
+        @suggested_price_sale = params[:suggested_price_sale].to_f
         format.js { render :edit_from_purchase }
         format.json { render json: @available_product.errors, status: :unprocessable_entity }
       end

+ 1 - 1
app/controllers/purchases_controller.rb

@@ -70,7 +70,7 @@ class PurchasesController < ApplicationController
     @pre_purchases = PrePurchase.where(user_id: current_user.id)
 
     respond_to do |format|
-      message = "compra #{@purchase.purchase_code} por #{@purchase.total} creada."
+      message = "Compra #{@purchase.purchase_code} por $ #{@purchase.total} #{@purchase.exchange.present? ? "USD" : "MXN"} creada."
       @purchase.audit_comment = message
       if @purchase.save
         @pre_purchases.each do |pre_purchase|

+ 9 - 1
app/controllers/reports_controller.rb

@@ -45,8 +45,16 @@ class ReportsController < ApplicationController
           end
       end
       @total_prods = 0
+      @total_purchased = 0
+      @total_dollars = 0
       @purchases.each do |purchase|
+        next if purchase.cancelled?
         @total_prods += purchase.purchase_details.sum(:quantity)
+        if purchase.exchange.present?
+          @total_dollars += purchase.total
+        else
+          @total_purchased += purchase.total
+        end
       end
       respond_to do |format|
         format.js
@@ -72,7 +80,7 @@ class ReportsController < ApplicationController
         @total_prods += sale.sales_details.sum(:quantity)
         cost = 0
         sale.sales_details.each do |detail|
-          cost += (detail.product.price_base * detail.quantity)
+          cost += !detail.product.price_base.nil? ? (detail.product.price_base * detail.quantity) : 0
         end
         utility = sale.total - cost
         @total_utility += utility

+ 1 - 1
app/helpers/sales_helper.rb

@@ -26,7 +26,7 @@ module SalesHelper
   def sale_utility(details)
     total = 0
     details.each do |detail|
-      total += (detail.product.price_base * detail.quantity)
+      total += !detail.product.price_base.nil? ? (detail.product.price_base * detail.quantity) : 0
     end
     total
   end

+ 27 - 25
app/models/pre_purchase.rb

@@ -1,29 +1,31 @@
 class PrePurchase < ActiveRecord::Base
-	belongs_to :supplier
-	belongs_to :user
-	belongs_to :pointsale
-	belongs_to :product
-	belongs_to :warehouse	
+  belongs_to :supplier
+  belongs_to :user
+  belongs_to :pointsale
+  belongs_to :product
+  belongs_to :warehouse
 
-	validates :supplier_id , :presence => { message: "Debe seleccionar proveedor para la compra." }, :on => [:create, :update]
-	validates :product_id , :presence => { message: "Debe seleccionar producto para la compra." }, :on => [:create, :update]
-    validates :pointsale_id , presence: { message: "Debe seleccionar un almacén o un punto de venta." }, :if => Proc.new {|c| c.warehouse_id.blank?} , :on => [:create, :update]
-    validates :warehouse_id , presence: { message: "Debe seleccionar un almacén o un punto de venta." }, :if => Proc.new {|c| c.pointsale_id.blank?} , :on => [:create, :update]
+  validates :supplier_id, presence: { message: "Debe seleccionar proveedor para la compra." }, on: [:create, :update]
+  validates :product_id, presence: { message: "Debe seleccionar producto para la compra." }, on: [:create, :update]
+  validates :pointsale_id, presence: { message: "Debe seleccionar un almacén o un punto de venta." }, if: Proc.new { |c| c.warehouse_id.blank? }, on: [:create, :update]
+  validates :warehouse_id, presence: { message: "Debe seleccionar un almacén o un punto de venta." }, if: Proc.new { |c| c.pointsale_id.blank? }, on: [:create, :update]
 
-	def get_totals
-		if self.exchange.present? 
-			self.price_base = self.product.price_base_dollars
-		else
-			self.price_base = self.product.price_base
-		end
-		self.price_base = self.price_base.blank? ? 0 : self.price_base
-		self.amount = self.quantity * self.price_base
-		self.tax = 0.0
-		if self.product.include_purchase_tax == 1 && self.exchange.blank?
-			tax_percent = PosConfig.first.tax_percent
-	        self.tax = (((tax_percent / 100)  * self.amount) / ((100 + tax_percent) / 100)).round(2)	
-		end
-		self.total = self.amount
-		return true
-	end 
+  def get_totals
+    self.price_base =
+      if exchange.present?
+        product.price_base_dollars
+      else
+        product.price_base
+      end
+    self.price_base = 0 if price_base.nil?
+
+    self.amount = quantity * price_base
+    self.tax = 0.0
+    if product.include_purchase_tax? && exchange.blank?
+      tax_percent = PosConfig.first.tax_percent
+      self.tax = (((tax_percent / 100)  * amount) / ((100 + tax_percent) / 100)).round(2)
+    end
+    self.total = tax + amount
+    true
+  end
 end

+ 3 - 1
app/models/product.rb

@@ -40,7 +40,9 @@ class Product < ActiveRecord::Base
   validates_presence_of :category_ids, message: "Debe elegir por lo menos una línea de producto relacionada al producto."
   validates :barcode, uniqueness: { message: "El código de barras ya fue utilizado, favor de especificar otro." }, allow_blank: true
   validates_presence_of :name, message: "Debe capturar el nombre del producto."
-  validates_presence_of :price_sale, message: "Debe capturar el precio de venta del producto."
+  validates :price_sale,
+            presence: { message: "Debe capturar el precio de venta del producto." },
+            numericality: { greater_than: 0.00 }
 
   def valid_categories
     categories.count > 0

+ 3 - 7
app/views/pre_purchases/_pre_purchase.html.erb

@@ -14,15 +14,11 @@
     <%= pre_purchase.product.display_attributes %>
   </td>
   <td>
-    <input type="number" min="1" id="quantity_<%= pre_purchase.id %>" class="form-control" id="quantity_<%= pre_purchase.id %>" value="<%= pre_purchase.quantity %>" oninput="updateQuantity($(this))" pattern="^[0-9]*[1-9][0-9]*$" title="La cantidad debe de ser mayor o igual a 1" required>
+    <input type="number" min="1" id="quantity_<%= pre_purchase.id %>" class="form-control input-xsmall" id="quantity_<%= pre_purchase.id %>" value="<%= pre_purchase.quantity %>" oninput="updateQuantity($(this))" pattern="^[0-9]*[1-9][0-9]*$" title="La cantidad debe de ser mayor o igual a 1" required>
   </td>
   <td>
-    <% if pre_purchase.exchange.blank? %>
-      <input class="form-control" id="price_<%= pre_purchase.id %>" type="number" min="0" value="<%= pre_purchase.product.price_base %>"  oninput="updateProductPrice($(this))" title="El precio no puede ser 0" step="any" required />   
-    <% else %>
-      <input class="form-control" id="price_<%= pre_purchase.id %>" type="number" min="0" value="<%= pre_purchase.product.price_base_dollars %>"  oninput="updateProductPrice($(this))" title="El precio no puede ser 0" step="any" required />  
-    <% end %> 
-    <span class="hidden"><%=pre_purchase.product.id%></span>
+    <input class="form-control input-small" id="price_<%= pre_purchase.id %>" type="number" min="0" value="<%= pre_purchase.exchange.blank? ? pre_purchase.product.price_base : pre_purchase.product.price_base_dollars %>"  oninput="updateProductPrice($(this))" title="El precio no puede ser 0" step="any" required />
+    <span class="hidden"><%= pre_purchase.product.id %></span>
   </td>
   <td>
     <%= pre_purchase.tax %>

+ 83 - 88
app/views/products/_form_update_price.html.erb

@@ -1,111 +1,106 @@
 <!-- BEGIN FORM-->
-<%= form_for(@product, url: product_update_from_purchase_path(@product), :remote => true, :html => {:class=>"form-horizontal"}) do |f| %>
-<div class="portlet-body form">
-	<% if @product.errors.any? %>
-		<div class="alert alert-danger">
-			<strong>Tiene <%= pluralize(@product.errors.count, "error") %> no se puede guardar el producto</strong><br>
-		</div>
-	<% end %>
-	<div class="form-body">
-		<%= hidden_field_tag :gain_margin, @pos_config.gain_margin %>
-		<%= hidden_field_tag :product_id, @product.id %>
-		<%= f.hidden_field :price_base, :value => @product.price_base %>
-		<div class="row">
-			
-			<div class="col-md-12">
-				<div class="note note-success">
-			        <p> ¿Desea actualizar el precio de venta? el sugerido es en base al margen de ganancia establecido en la configuración.</p>
-			        <p>Al omitir, el precio de venta se mantendrá en: <strong><%= number_to_currency(@product.price_sale, precision: 2)%> MXN</strong></p>
+<%= form_for(@product, url: product_update_from_purchase_path(@product), remote: true, html: { class: "form-horizontal" }) do |f| %>
+	<div class="portlet-body form">
+		<% if @product.errors.any? %>
+			<div class="alert alert-danger">
+				<strong>Tiene <%= pluralize(@product.errors.count, "error") %> no se puede guardar el producto</strong><br>
+			</div>
+		<% end %>
+		<div class="form-body">
+			<%= hidden_field_tag :gain_margin, @pos_config.gain_margin %>
+			<%= hidden_field_tag :product_id, @product.id %>
+			<%= f.hidden_field :price_base, value: @product.price_base %>
+			<%= hidden_field_tag :suggested_price_sale, value: @suggested_price_sale %>
+			<div class="row">
+				<div class="col-md-12">
+					<div class="note note-success">
+		        <p> ¿Desea actualizar el precio de venta? el sugerido es en base al margen de ganancia establecido en la configuración.</p>
+		        <p>Al omitir, el precio de venta se mantendrá en: <strong><%= number_to_currency(@product.price_sale, precision: 2)%> MXN</strong></p>
 			    </div>
-				<div class="form-group">
-					<%= f.label :price_sale, "Precio de venta base", {:class=>"col-md-3 control-label"} %>
-					<div class="col-md-9">
+					<div class="form-group">
+						<%= f.label :price_sale, "Precio de venta base", { class: "col-md-3 control-label" } %>
 						<div class="col-md-9">
-							<div class="input-group">
-								<span class="input-group-addon"> $ </span>
-								<%= f.text_field :price_sale, :class=>"form-control mask_decimal", :value => @suggested_price_sale %>
-								<span class="input-group-addon"> MXN </span>
-							</div>	
-							<span class="help-block">El precio es sugerido. <br> Precio de compra 
-								<strong> 
-									<% if @product.is_in_dollars %>
-										<%= number_to_currency(@product.price_base_dollars, precision: 2) %> USD
-									<% else %>
-										<%= number_to_currency(@product.price_base, precision: 2) %> MXN
-									<% end %>
-								</strong> 
-							</span>													
+							<div class="col-md-9">
+								<div class="input-group">
+									<span class="input-group-addon"> $ </span>
+									<%= f.text_field :price_sale, class: "form-control mask_decimal", value: @suggested_price_sale %>
+									<span class="input-group-addon"> MXN </span>
+								</div>
+								<span class="help-block">El precio es sugerido. <br> Precio de compra
+									<strong>
+										<% if @product.is_in_dollars %>
+											<%= number_to_currency(@product.price_base_dollars, precision: 2) %> USD
+										<% else %>
+											<%= number_to_currency(@product.price_base, precision: 2) %> MXN
+										<% end %>
+									</strong>
+								</span>
+							</div>
 						</div>
 					</div>
-				</div>
-				<% if @product.pointsales_prices.count > 0 %>
-				<h4>Precios de venta por punto de venta </h4>
-				<div class="note note-warning">
+					<% if @product.pointsales_prices.count > 0 %>
+						<h4>Precios de venta por punto de venta </h4>
+						<div class="note note-warning">
 			        <p> Los siguientes puntos de venta cambiaron el precio. Puede modificarlo deacuerdo al precio base.</p>
-			        
-			    </div>
-
-				<table class="table table-striped table-bordered table-advance table-hover">
-	                <thead>
-	                    <tr>
-	                        <th width="35%">
-	                            <i class="fa fa-briefcase"></i> Punto de venta </th>
-	                        <th class="hidden-xs">
-	                            <i class="fa fa-user"></i> Precio </th>
-	                        
-	                    </tr>
-	                </thead>
-	                <tbody>
-	                	
-		                	<%= f.fields_for :available_products, @product.available_products do |ff| %>
-		                    <tr class="<%= ff.object.price_sale.nil? ? 'hidden' : '' %>">
-		                        <td> <%= Pointsale.find(ff.object.pointsale_id).name %></td>
-		                        <td><%= ff.hidden_field :id %>
-		                        	<div class="input-group">
-										<span class="input-group-addon"> $ </span>
-										<%= ff.text_field :price_sale, :class=>"form-control mask_decimal" %>
-										<span class="input-group-addon"> MXN </span>
-									</div>
-		                        </td>
-		                        
-		                    </tr>
-		                    <% end %>
-	                   	
-	                </tbody>
-	            </table>
-	            <% end %>
+				    </div>
+						<table class="table table-striped table-bordered table-advance table-hover">
+    	        <thead>
+                <tr>
+                  <th width="35%">
+                  	<i class="fa fa-briefcase"></i> Punto de venta
+                  </th>
+                	<th class="hidden-xs">
+                    <i class="fa fa-user"></i> Precio
+                  </th>
+              	</tr>
+          	  </thead>
+              <tbody>
+           		 	<%= f.fields_for :available_products, @product.available_products do |ff| %>
+                  <tr class="<%= ff.object.price_sale.nil? ? 'hidden' : '' %>">
+                    <td> <%= Pointsale.find(ff.object.pointsale_id).name %></td>
+                    <td>
+                    	<%= ff.hidden_field :id %>
+                    	<div class="input-group">
+												<span class="input-group-addon"> $ </span>
+												<%= ff.text_field :price_sale, class: "form-control mask_decimal" %>
+												<span class="input-group-addon"> MXN </span>
+											</div>
+                    </td>
+                  </tr>
+                <% end %>
+              </tbody>
+            </table>
+          <% end %>
+				</div>
 			</div>
 		</div>
-	</div>
-	<div>
+		<div>
 	    <h4 class="form-section"></h4>
-		<div class="row">
-			<div class="col-md-9">
-				<button type="submit" class="btn green" >Actualizar precio</button>
-				<button type="button" class="btn default" onclick="cerrarDialog()">Omitir</button>
+			<div class="row">
+				<div class="col-md-9">
+					<button type="submit" class="btn green" >Actualizar precio</button>
+					<button type="button" class="btn default" onclick="cerrarDialog()">Omitir</button>
+				</div>
 			</div>
 		</div>
 	</div>
-</div>
 <% end %>
 <script type="text/javascript">
 	function submitForm() {
 		var priceSale = $('#product_price_sale').val();
 		var productId = $('#product_id').val();
-        $.ajax({
-            type: "POST",
-          	url: "/products/" + productId + "/update_from_purchase",
-          	dataType: "json",
-          	data: {product: {price_sale: priceSale }},
-            success: function(xhr, status, error) {
-        		$('#dialog').modal('toggle');
-            }
-        });  
+    $.ajax({
+      type: "POST",
+    	url: "/products/" + productId + "/update_from_purchase",
+    	dataType: "json",
+    	data: {product: {price_sale: priceSale }},
+      success: function(xhr, status, error) {
+    		$('#dialog').modal('toggle');
+      }
+    });
 	}
 
 	function cerrarDialog() {
 		$('#dialog').modal('toggle');
 	}
-
 </script>
-										

+ 1 - 1
app/views/purchases/_form.html.erb

@@ -83,7 +83,7 @@
 						data: {
 							on_color: "success",
 							off_color: "warning",
-							on_text: "Dolares",
+							on_text: "Dólares",
 							off_text: "Pesos"
 						}
 					},

+ 1 - 1
app/views/reports/_report_purchase.html.erb

@@ -9,5 +9,5 @@
   <td><%= purchase_status(purchase) %></td>
   <td><%= number_to_currency(purchase.amount.round(2), precision: 2) %></td>
   <td><%= number_to_currency(purchase.tax.round(2), precision: 2) %></td>
-  <td><%= number_to_currency(purchase.total.round(2), precision: 2) %></td>
+  <td><% total = number_to_currency(purchase.total.round(2), precision: 2) %><%= purchase.exchange.present? ? total.to_s + " USD" : total.to_s + " MXN" %></td>
 </tr>

+ 26 - 5
app/views/reports/purchases_per_month.html.erb

@@ -42,7 +42,7 @@
                       <div class="col-md-3 col-sm-4">
                         <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">
+                          <div class="input-group input-medium date" data-date-format="dd/mm/yyyy">
                             <!-- <input id="start" type='text' class="form-control" value="< %= l(Date.today.beginning_of_month, format: '%d/%m/%Y') %>" /> -->
                             <%= text_field_tag "start_date", l(Date.today.beginning_of_month, format: '%d/%m/%Y'), class: "form-control" %>
                             <span class="input-group-addon">
@@ -54,7 +54,7 @@
                       <div class="col-md-3 col-sm-4">
                         <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">
+                          <div class="input-group input-medium date" data-date-format="dd/mm/yyyy">
                             <!-- <input id="end" type='text' class="form-control" value="<%= l(Date.today.end_of_month, format: '%d/%m/%Y') %>" /> -->
                             <%= text_field_tag "end_date", l(Date.today.end_of_month, format: '%d/%m/%Y'), class: "form-control" %>
                             <span class="input-group-addon">
@@ -110,13 +110,15 @@
                   <div class="col-md-3 col-sm-3 col-xs-6">
                     <div class="text-center well" style="margin-bottom: 0px">
                       <div class="font-grey-mint font-sm">Total comprado contado </div>
-                      <div class="uppercase font-hg font-blue-sharp" id="cash_purchases_total"> $0.00</div>
+                      <div class="uppercase font-hg font-blue-sharp"><span id="cash_purchases_total"> $0.00</span> MXN</div>
+                      <div class="uppercase font-hg font-blue-sharp"><span id="cash_purchases_total_dollars"> $0.00</span> USD</div>
                     </div>
                   </div>
                   <div class="col-md-3 col-sm-3 col-xs-6">
                     <div class="text-center well hidden" style="margin-bottom: 0px">
                       <div class="font-grey-mint font-sm">Total comprado crédito </div>
-                      <div class="uppercase font-hg font-blue-sharp" id="credit_purchases_total"> $0.00</div>
+                      <div class="uppercase font-hg font-blue-sharp"><span id="credit_purchases_total"> $0.00</span> MXN</div>
+                      <div class="uppercase font-hg font-blue-sharp"><span id="credit_purchases_total_dollars"> $0.00</span> USD</div>
                     </div>
                   </div>
                 </div>
@@ -130,7 +132,8 @@
                   <div class="col-xs-3">
                     <div class="text-center well" style="margin-bottom: 0px">
                       <div class="font-grey-mint font-sm">TOTAL COMPRADO</div>
-                      <div class="uppercase font-hg font-green" id="purchases_total">$0.00</div>
+                      <div class="uppercase font-hg font-green"><span id="purchases_total">$0.00</span> MXN</div>
+                      <div class="uppercase font-hg font-green"><span id="purchases_total_dollars">$0.00</span> USD</div>
                     </div>
                   </div>
                 </div>
@@ -204,3 +207,21 @@
   </div>
   <!-- END CONTENT -->
 </div>
+<script>
+  $(document).on("page:change", function() {
+    App.init();
+     $('#start_date').datetimepicker({
+      icons: {
+        date: "fa fa-calendar"
+      },
+      format: "DD/MM/YYYY"
+    });
+
+    $('#end_date').datetimepicker({
+      icons: {
+        date: "fa fa-calendar"
+      },
+      format: "DD/MM/YYYY"
+    });
+  });
+</script>

+ 4 - 2
app/views/reports/purchases_per_month.js.erb

@@ -20,7 +20,9 @@ $('#note_info').removeClass('hidden');
 $('#prods_total').html('<%= @total_prods %>');
 $('#purchases_quantity').html('<%= @purchases.count %>');
 
-$('#cash_purchases_total').html(accounting.formatMoney('<%= @purchases.sum(:total).round(2) %>'));
+$('#cash_purchases_total').html(accounting.formatMoney('<%= @total_purchased.round(2) %>'));
+$('#cash_purchases_total_dollars').html(accounting.formatMoney('<%= @total_dollars.round(2) %>'));
 // $('#credit_purchases_total').html(accounting.formatMoney('< %= @purchases.sum(:total).round(2) %>'));
 $('#expenses_total').html(accounting.formatMoney('<%= @expenses.sum(:quantity).round(2) %>'));
-$('#purchases_total').html(accounting.formatMoney('<%= @purchases.sum(:total).round(2) %>'));
+$('#purchases_total').html(accounting.formatMoney('<%= @total_purchased.round(2) %>'));
+$('#purchases_total_dollars').html(accounting.formatMoney('<%= @total_dollars.round(2) %>'));

+ 19 - 2
app/views/reports/utilities_report.html.erb

@@ -39,7 +39,7 @@
                       <div class="col-md-3 col-sm-4">
                         <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">
+                          <div class="input-group input-medium date" data-date-format="dd/mm/yyyy">
                             <%= text_field_tag "start_date", l(Date.today.beginning_of_month, format: '%d/%m/%Y'), class: "form-control" %>
                             <span class="input-group-addon">
                               <span class="glyphicon glyphicon-calendar"></span>
@@ -50,7 +50,7 @@
                       <div class="col-md-3 col-sm-4">
                         <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">
+                          <div class="input-group input-medium date" data-date-format="dd/mm/yyyy">
                             <%= text_field_tag "end_date", l(Date.today.end_of_month, format: '%d/%m/%Y'), class: "form-control" %>
                             <span class="input-group-addon">
                               <span class="glyphicon glyphicon-calendar"></span>
@@ -169,6 +169,23 @@
   <!-- END CONTENT -->
 </div>
 <script>
+  $(document).on("page:change", function() {
+    App.init();
+     $('#start_date').datetimepicker({
+      icons: {
+        date: "fa fa-calendar"
+      },
+      format: "DD/MM/YYYY"
+    });
+
+    $('#end_date').datetimepicker({
+      icons: {
+        date: "fa fa-calendar"
+      },
+      format: "DD/MM/YYYY"
+    });
+  });
+
   function getSubCategories(value) {
     $('#_subcategory').html('');
     $('#_subcategory').select2("destroy").select2({

+ 26 - 11
app/views/sales/sales_per_month_report.html.erb

@@ -38,8 +38,8 @@
                     <div class="col-md-3 col-sm-4">
                       <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" value="<%= l(Date.today.beginning_of_month, format: '%d/%m/%Y') %>" />
+                        <div class="input-group input-medium date" data-date-format="dd/mm/yyyy">
+                          <input id="start_date" type='text' class="form-control" value="<%= l(Date.today.beginning_of_month, format: '%d/%m/%Y') %>" />
                           <span class="input-group-addon">
                             <span class="glyphicon glyphicon-calendar"></span>
                           </span>
@@ -49,8 +49,8 @@
                     <div class="col-md-3 col-sm-4">
                       <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" value="<%= l(Date.today.end_of_month, format: '%d/%m/%Y') %>" />
+                        <div class="input-group input-medium date" data-date-format="dd/mm/yyyy">
+                          <input id="end_date" type='text' class="form-control" value="<%= l(Date.today.end_of_month, format: '%d/%m/%Y') %>" />
                           <span class="input-group-addon">
                             <span class="glyphicon glyphicon-calendar"></span>
                           </span>
@@ -209,19 +209,34 @@
 </div>
 <!-- END CONTAINER -->
 <script type="text/javascript">
+  $(document).on("page:change", function() {
+    App.init();
+     $('#start_date').datetimepicker({
+      icons: {
+        date: "fa fa-calendar"
+      },
+      format: "DD/MM/YYYY"
+    });
+
+    $('#end_date').datetimepicker({
+      icons: {
+        date: "fa fa-calendar"
+      },
+      format: "DD/MM/YYYY"
+    });
+  });
+
   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');
+    var start = moment($("#start_date").val(), "DD-MM-YYYY").format('YYYY-MM-DD');
+    var end = moment($("#end_date").val(), "DD-MM-YYYY").format('YYYY-MM-DD');
     var category = $("#category option:selected").val();
     var subcategory = $("#_subcategory option:selected").val();
-    // var start = moment($("#start").val(), "DD-MM-YYYY").startOf('Day').format('YYYY-MM-DD H:mm:ss');
-    // var end = moment($("#end").val(), "DD-MM-YYYY").endOf('Day').format('YYYY-MM-DD H:mm:ss');
 
-    if ($("#start").val() && $("#end").val()) {
+    if ($("#start_date").val() && $("#end_date").val()) {
       App.blockUI({
         target: $("#sales_content"),
         animate: true
@@ -240,8 +255,8 @@
         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'));
+          $('#start_date_display').html(moment($("#start_date").val(), "DD-MM-YYYY").format('DD/MM/YYYY'));
+          $('#end_date_display').html(moment($("#end_date").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');
         },