Browse Source

new barcode scanner in sales and script to generate barcodes for existing prods

chemi ledon 7 năm trước cách đây
mục cha
commit
142d9184c2
2 tập tin đã thay đổi với 16 bổ sung7 xóa
  1. 9 5
      app/models/product.rb
  2. 7 2
      app/views/sales/_form.html.erb

+ 9 - 5
app/models/product.rb

@@ -298,13 +298,11 @@ class Product < ActiveRecord::Base
     if save(validate: false)
       children.each do |variant|
         attributes_json = {}
-
         attributes_json = variant.assign_attributes_to_variant(variant.size_list, id, attributes_json) unless variant.size_list.count.zero?
         attributes_json = variant.assign_attributes_to_variant(variant.color_list, id, attributes_json) unless variant.color_list.count.zero?
         attributes_json = variant.assign_attributes_to_variant(variant.style_list, id, attributes_json) unless variant.style_list.count.zero?
         variant.attributes_json = attributes_json.to_json
         variant.save(validate: false)
-
       end
     end
   end
@@ -453,9 +451,15 @@ class Product < ActiveRecord::Base
       barcode_generated = format('%07d', id)
       self.barcode = barcode_generated
       save_path = Rails.public_path.join('barcodes', "#{barcode_generated}.png")
-      File.open(save_path, 'wb'){ |f|
-        f.write Barby::Code39.new(barcode_generated).to_png(:height => 50, :margin => 5)
-      }
+      File.open(save_path, 'wb') { |f| f.write Barby::Code39.new(barcode_generated).to_png(height: 50, margin: 5) }
+    end
+  end
+
+  def self.gen_barcodes_existing_prods
+    products = Product.vigentes
+    products.each do |product|
+      product.generate_barcode
+      product.save
     end
   end
 end

+ 7 - 2
app/views/sales/_form.html.erb

@@ -373,8 +373,13 @@
     });
 	}
 
-	$('body').barcodeListener().on('barcode.valid', function(e, code) {
-		findProductByBarcode(code);
+
+	$('#product_barcode').codeScanner({
+		maxEntryTime: 100, // milliseconds
+		minEntryChars: 7,  // characters
+		onScan: function ($element, code) {
+			findProductByBarcode(code);
+		}
 	});
 
 	// initialize bloodhound engine