5 changed files with 136 additions and 77 deletions
			
			
		@ -0,0 +1,11 @@ | 
				
			|||
//@odoo-module
 | 
				
			|||
import { PosGlobalState} from 'point_of_sale.models'; | 
				
			|||
import Registries from 'point_of_sale.Registries'; | 
				
			|||
const StockLotGlobalState = (PosGlobalState) => class StockLotGlobalState extends PosGlobalState { | 
				
			|||
    async _processData(loadedData) { | 
				
			|||
        await super._processData(...arguments); | 
				
			|||
        this.db.product_by_lot = loadedData['multi.barcode.products']; | 
				
			|||
        this.db.product_by_lot_id = loadedData['multi_barcode'] | 
				
			|||
    } | 
				
			|||
} | 
				
			|||
Registries.Model.extend(PosGlobalState, StockLotGlobalState); | 
				
			|||
@ -0,0 +1,38 @@ | 
				
			|||
odoo.define('pos_product_search_by_ref.product_product', function (require) { | 
				
			|||
    'use strict'; | 
				
			|||
    const DB = require('point_of_sale.DB'); | 
				
			|||
    var core = require('web.core'); | 
				
			|||
    var utils = require('web.utils'); | 
				
			|||
     DB.include({ | 
				
			|||
        search_product_in_category: function(category_id, query){ | 
				
			|||
            var old_query = query | 
				
			|||
            try { | 
				
			|||
                query = query.replace(/[\[\]\(\)\+\*\?\.\-\!\&\^\$\|\~\_\{\}\:\,\\\/]/g,'.'); | 
				
			|||
                query = query.replace(/ /g,'.+'); | 
				
			|||
                var re = RegExp("([0-9]+):.*?"+utils.unaccent(query),"gi"); | 
				
			|||
            }catch(_e){ | 
				
			|||
                return []; | 
				
			|||
            } | 
				
			|||
            var results = []; | 
				
			|||
            for(var i = 0; i < this.limit; i++){ | 
				
			|||
                var r = re.exec(this.category_search_string[category_id]); | 
				
			|||
                if(r){ | 
				
			|||
                    var id = Number(r[1]); | 
				
			|||
                    const product = this.get_product_by_id(id); | 
				
			|||
                    if (!(product.active && product.available_in_pos)) continue; | 
				
			|||
                    results.push(product); | 
				
			|||
                }else if(this.product_by_lot_id[old_query]){ | 
				
			|||
                        const product = this.get_product_by_id(this.product_by_lot_id[old_query]); | 
				
			|||
                        if (!(product.active && product.available_in_pos)) continue; | 
				
			|||
                        if(!results.includes(product)){ | 
				
			|||
                            results.push(product); | 
				
			|||
                        } | 
				
			|||
                }else{ | 
				
			|||
                    break; | 
				
			|||
                } | 
				
			|||
            } | 
				
			|||
        return results; | 
				
			|||
        } | 
				
			|||
     }) | 
				
			|||
    return DB; | 
				
			|||
}); | 
				
			|||
					Loading…
					
					
				
		Reference in new issue