Browse Source

[FIX - ADD] ajuste en el buscador y se agrego buscador normal y por curva

Rodney Enciso Arias 7 years ago
parent
commit
7a2b5f7304

+ 2 - 2
.scannerwork/report-task.txt

@@ -1,5 +1,5 @@
 projectKey=eiru:sale:order
 serverUrl=http://181.40.66.126:9000
 dashboardUrl=http://181.40.66.126:9000/dashboard/index/eiru:sale:order
-ceTaskId=AV-htxCMLmS3QZZeLmum
-ceTaskUrl=http://181.40.66.126:9000/api/ce/task?id=AV-htxCMLmS3QZZeLmum
+ceTaskId=AV-mMoS_LmS3QZZeLmup
+ceTaskUrl=http://181.40.66.126:9000/api/ce/task?id=AV-mMoS_LmS3QZZeLmup

+ 1 - 1
__openerp__.py

@@ -9,7 +9,7 @@
     'depends' : ['sale'],
     'data' : [
         'views/template.xml',
-        'views/sale_order_button.xml',
+        'views/sale_order_search_box.xml',
     ],
     'qweb' : ['static/src/xml/*.xml',],
     'installable' : True,

+ 74 - 28
static/src/js/sale_order.js → static/src/js/sale_order_curve.js

@@ -2,19 +2,22 @@ openerp.eiru_sale_order = function (instance, local) {
     local.widgetInstance = null;
     local.parentInstance = null;
 
-    local.SaleOrderWidget = instance.Widget.extend({
-        template : "eiru_sale_order.SaleOrder",
+    local.SaleOrderCurveWidget = instance.Widget.extend({
+        template : "eiru_sale_order.SaleOrderCurve",
         init:function(parent){
             this._super(parent);
             this.buttons = parent.$buttons;
         },
+
         updateId : function(id){
             var self = this;
             self.id=id;
         },
+
         reloadLine: function() {
             local.parentInstance.reload();
         },
+
         start: function () {
             var self = this;
             this.$el.click(function () {
@@ -39,7 +42,7 @@ openerp.eiru_sale_order = function (instance, local) {
             });
             return false;
         },
-        
+
         fecthSale: function(id){
             var defer = $.Deferred();
             var fields=['id','name','partner_id','state'];
@@ -63,13 +66,9 @@ openerp.eiru_sale_order = function (instance, local) {
         },
 
         fetchProductProduct: function () {
-            var self = this;
             var defer = $.Deferred();
             var fields=['id','name','product_tmpl_id','attribute_str'];
-            var product_tmpl_id = _.flatten(_.map(self.ProductTemplate,function(map){
-                return map.id;
-            }));
-            var domain=[['active','=', true],['product_tmpl_id','=', product_tmpl_id]];
+            var domain=[['active','=', true]];
             var ProductProduct = new instance.web.Model('product.product');
             ProductProduct.query(fields).filter(domain).order_by('id').all().then(function(results){
                 defer.resolve(results);
@@ -83,6 +82,7 @@ openerp.eiru_sale_order = function (instance, local) {
                 return item.id == id;
             });
         },
+        
         getProduct : function(product_tmpl_id){
             var self = this;
             return _.filter(self.ProductProduct, function(item){
@@ -90,32 +90,67 @@ openerp.eiru_sale_order = function (instance, local) {
             });
         },
 
+        getProductProduct : function(id){
+            var self = this;
+            return _.filter(self.ProductProduct, function(item){
+                return item.id == id;
+            });
+        },
+
         inicializarBuscador: function () {
             var self = this;
-            var results = self.ProductTemplate;
-            results = _.map(results, function (item) {
+            var selectProduct;
+            var searchType = $('#SearchByCurve').is(":checked");
+            if(searchType){
+                var results = self.ProductTemplate;
+                results = _.map(results, function (item) {
                 return {
-                        label: item.id + '-'+ item.name,
+                        label: item.name,
                         value: item.id + '-'+ item.name
-                }
-            });
-            self.$('#productSearch').autocomplete({
-                source: results,
-                minLength:3,
-                search: function() {
-                    if (!(self.$('#productSearch').val())){
-                        self.factInsert();
                     }
-                },
-                select: function() {
-                    self.factInsert();
+                });
+                self.$('#productSearch').autocomplete({
+                    source: results,
+                    minLength:3,
+                    // response: function (e, ui){
+                    //     if (ui.content instanceof Array && ui.content.length === 1) {
+                    //         selectProduct = ui.content[0];    
+                    //         $(this).autocomplete("close");
+                    //         $(this).val('');
+                    //         self.factInsert(selectProduct);
+                    //     }                
+                    // },
+                    select: function (e, ui) {
+                        $(this).val('');
+                        selectProduct = ui.item;
+                        self.factInsert(selectProduct);
+                        return false;
+                    }  
+                });   
+            }else{
+                var results = self.ProductProduct;
+                results = _.map(results, function (item) {
+                return {
+                        label: item.name + ' (' + item.attribute_str + ')',
+                        value: item.id + ' - '+ item.name + '-' + item.attribute_str
                 }
-            });
+                });
+                self.$('#productSearch').autocomplete({
+                    source: results,
+                    minLength: 3,
+                    select: function (e, ui) {
+                        $(this).val('');
+                        selectProduct = ui.item;
+                        self.factInsertProduct(selectProduct);
+                        return false;
+                    }  
+                });
+            }
         },
 
-        factInsert:function(){
+        factInsert:function(selectProduct){
             var self = this;
-            var product = this.$el.find('#productSearch').val().split('-');
+            var product = selectProduct.value.split('-');
             var template = self.getTemplate(product[0]);
             var variant = self.getProduct(product[0]);
             template = template[0].curva.split(',');
@@ -135,6 +170,18 @@ openerp.eiru_sale_order = function (instance, local) {
             }
         },
 
+        factInsertProduct:function(selectProduct){
+            var self = this;
+            var product = selectProduct.value.split('-');
+            var variant = self.getProductProduct(product[0]);
+            var qty = 1;
+            self.joinSaleLine(variant[0].id, qty).then(function(results) {
+                return results;
+            }).then(function(){
+                self.reloadLine();
+            });
+        },
+
         joinSaleLine: function(product_id, qty) {
             var self = this;
             var defer = $.Deferred();
@@ -150,11 +197,10 @@ openerp.eiru_sale_order = function (instance, local) {
             }).then(function(results) {
                 defer.resolve(results);
             });
-
             return defer;
         },
-
     });
+
     if (instance.web && instance.web.FormView) {
         instance.web.FormView.include({
             load_form: function (record) {
@@ -164,7 +210,7 @@ openerp.eiru_sale_order = function (instance, local) {
                 if (local.widgetInstance) {
                     local.widgetInstance.updateId(record.id);
                 }
-                local.widgetInstance = new local.SaleOrderWidget(this);
+                local.widgetInstance = new local.SaleOrderCurveWidget(this);
                 var elemento = this.$el.find('.oe_form_sheet.oe_form_sheet_width');
                 elemento =  elemento.find('.product_search_box');
                 local.widgetInstance.appendTo(elemento);

+ 6 - 1
static/src/xml/sale_order.xml → static/src/xml/sale_order_curve.xml

@@ -1,11 +1,16 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <template xml:space="preserve">
-    <t t-name="eiru_sale_order.SaleOrder">
+    <t t-name="eiru_sale_order.SaleOrderCurve">
         <div class="ui-widget col-md-6 col-md-offset-3">
         	<div class="form-group">
         		<label for="productSearch">Buscar: </label>
 		  		<input id="productSearch" class="form-control"/>
         	</div>
+        	<div class="checkbox">
+			    <label>
+			      <input id="SearchByCurve" type="checkbox"/>Buscar por Curva
+			    </label>
+		  	</div>
 		</div>
     </t>
 </template>

+ 0 - 0
views/sale_order_button.xml → views/sale_order_search_box.xml


+ 1 - 1
views/template.xml

@@ -2,7 +2,7 @@
     <data>
         <template id="eiru_sale_order.assets_backend" name="sale_order_assets" inherit_id="eiru_assets.assets">
             <xpath expr="." position="inside">
-                <script type="text/javascript" src="/eiru_sale_order/static/src/js/sale_order.js"/>
+                <script type="text/javascript" src="/eiru_sale_order/static/src/js/sale_order_curve.js"/>
             </xpath>
         </template>
     </data>