Bladeren bron

barcode scanner in sales fixed

chemi ledon 7 jaren geleden
bovenliggende
commit
08c45d03f9
3 gewijzigde bestanden met toevoegingen van 37 en 39 verwijderingen
  1. 19 20
      app/controllers/pre_sales_controller.rb
  2. 1 2
      app/views/pre_sales/create.js.erb
  3. 17 17
      app/views/sales/_form.html.erb

+ 19 - 20
app/controllers/pre_sales_controller.rb

@@ -108,31 +108,30 @@ class PreSalesController < ApplicationController
     total_in_pre_sales = 0
     pointsale = OpenCashRegister.get_pointsale(params[:open_cash_register_id], "open_cash_register")
     @product = pointsale.products.find_by("barcode = ? and stock > 0", params[:barcode])
+    respond_to do |format|
+      if @product.blank?
+        format.js { render action: "create" }
+      else
+        # ir sumando todos los presales que tiene, para ver si lo abarca el credito
+        PreSale.where(user_id: current_user.id).each do |pre|
+          total_in_pre_sales = total_in_pre_sales + pre.total
+        end
 
-    if @product.blank?
-      format.js { render action: "create" }
-    else
-      # ir sumando todos los presales que tiene, para ver si lo abarca el credito
-      PreSale.where(user_id: current_user.id).each do |pre|
-        total_in_pre_sales = total_in_pre_sales + pre.total
-      end
-
-      @pre_sale = PreSale.new
-      @pre_sale.customer_id = params[:customer_id]
-      @pre_sale.user_id = current_user.id
-      @pre_sale.open_cash_register_id = params[:open_cash_register_id]
-      @pre_sale.product_id = @product.id
-      @pre_sale.sale_type = params[:sale_type]
+        @pre_sale = PreSale.new
+        @pre_sale.customer_id = params[:customer_id]
+        @pre_sale.user_id = current_user.id
+        @pre_sale.open_cash_register_id = params[:open_cash_register_id]
+        @pre_sale.product_id = @product.id
+        @pre_sale.sale_type = params[:sale_type]
 
-      #precio unitario
-      @pre_sale.unit_price = @pre_sale.product.get_price_sale(OpenCashRegister.find(@pre_sale.open_cash_register_id).pointsale.id)
+        #precio unitario
+        @pre_sale.unit_price = @pre_sale.product.get_price_sale(OpenCashRegister.find(@pre_sale.open_cash_register_id).pointsale.id)
 
-      @pre_sale.get_totals
+        @pre_sale.get_totals
 
-      total_in_pre_sales = total_in_pre_sales + @pre_sale.total
+        total_in_pre_sales = total_in_pre_sales + @pre_sale.total
 
-      #cuando la venta es a credito checar que el credito permita esta nueva venta
-      respond_to do |format|
+        #cuando la venta es a credito checar que el credito permita esta nueva venta
         if has_enough_stock?(@pre_sale)
           if @pre_sale.sale_type == "credit"
             debiting = @pre_sale.customer.get_debiting

+ 1 - 2
app/views/pre_sales/create.js.erb

@@ -1,4 +1,4 @@
-<% if @pre_sale.errors.values.any? %>
+<% if @pre_sale.present? && @pre_sale.errors.values.any? %>
 	$("#error_explanation").empty();
 	$('#error_explanation').removeClass('hidden');
 	$("#error_explanation").append($("<div class='alert alert-danger'></div>"));
@@ -15,7 +15,6 @@
 	x = $('#products_table').dataTable();
 	newRow.find('td:eq(0)').html(newRow.find('td:eq(0)').html().replace('#', x.fnGetData().length + 1));
 	table.row.add(newRow).draw();
-
   $('#customer_remote').remove();
 <% else %>
 	toastr["error"]("Error, No se encontró el producto.");

+ 17 - 17
app/views/sales/_form.html.erb

@@ -324,6 +324,15 @@
 				}
 			}
 		});
+
+		$('#typeahead').codeScanner({
+			maxEntryTime: 100, // milliseconds
+			minEntryChars: 7,  // characters
+			onScan: function ($element, code) {
+				findProductByBarcode(code);
+			}
+		});
+
 	});
 
 	$('#sale_customer_id').on('change', function() {
@@ -363,25 +372,16 @@
 
 	function updatePreSale(customer_id) {
 		$.ajax({
-      type: "PUT",
-      url: "/update_presale_customer/" + customer_id,
-      dataType: "json",
-      success: function(xhr, status, error) {
-        toastr["warning"]("Se actualizó el cliente de venta");
-        fillCustomerInfo();
-      }
-    });
+			type: "PUT",
+			url: "/update_presale_customer/" + customer_id,
+			dataType: "json",
+			success: function(xhr, status, error) {
+				toastr["warning"]("Se actualizó el cliente de venta");
+				fillCustomerInfo();
+			}
+		});
 	}
 
-
-	$('#product_barcode').codeScanner({
-		maxEntryTime: 100, // milliseconds
-		minEntryChars: 7,  // characters
-		onScan: function ($element, code) {
-			findProductByBarcode(code);
-		}
-	});
-
 	// initialize bloodhound engine
 	var bloodhound = new Bloodhound({
 		datumTokenizer: function (d) {