diff --git a/multi_barcodes_pos/doc/RELEASE_NOTES.md b/multi_barcodes_pos/doc/RELEASE_NOTES.md index 948573275..71179e0f3 100755 --- a/multi_barcodes_pos/doc/RELEASE_NOTES.md +++ b/multi_barcodes_pos/doc/RELEASE_NOTES.md @@ -4,3 +4,8 @@ #### Version 17.0.1.0.0 ##### ADD - Initial commit for POS Product Multi Barcode + +#### 23.09.2024 +#### Version 17.0.1.0.01 +##### BUG FIX +- Changed the js files for scanning barcodes from multi barcode table. diff --git a/multi_barcodes_pos/models/multi_barcode_products.py b/multi_barcodes_pos/models/multi_barcode_products.py index 1fff453b7..637766f8c 100755 --- a/multi_barcodes_pos/models/multi_barcode_products.py +++ b/multi_barcodes_pos/models/multi_barcode_products.py @@ -19,7 +19,7 @@ # If not, see . # ############################################################################# -from odoo import fields, models +from odoo import fields, models, api class MultiBarcodeProducts(models.Model): @@ -42,6 +42,8 @@ class MultiBarcodeProducts(models.Model): _sql_constraints = [('field_unique', 'unique(multi_barcode)', 'Existing barcode is not allowed !'),] - def get_barcode_val(self, product): + @api.model + def get_barcode_val(self, barcode): + temp = self.search([('multi_barcode', '=', barcode)]) """returns barcode of record in self and product id""" - return self.multi_barcode, product + return temp.multi_barcode, temp.product_multi_id.id diff --git a/multi_barcodes_pos/static/src/js/ProductWidget.js b/multi_barcodes_pos/static/src/js/ProductWidget.js index fc79953d0..4fbfd08cd 100755 --- a/multi_barcodes_pos/static/src/js/ProductWidget.js +++ b/multi_barcodes_pos/static/src/js/ProductWidget.js @@ -25,13 +25,18 @@ patch(PosDB.prototype, { continue; } results.push(product); - }else if(this.product_by_lot_id[old_query]){ + } + else if(this.product_by_lot_id){ + if(this.product_by_lot_id[old_query]){ + console.log(this.product_by_lot_id[old_query]) const product = this.get_product_by_id(this.product_by_lot_id[old_query]); if (!this.shouldAddProduct(product, results)) continue; if(!results.includes(product)){ results.push(product); } - }else{ + } + } + else{ break; } } diff --git a/multi_barcodes_pos/static/src/js/pos_scan.js b/multi_barcodes_pos/static/src/js/pos_scan.js index 0c6485e59..ea375a2b4 100755 --- a/multi_barcodes_pos/static/src/js/pos_scan.js +++ b/multi_barcodes_pos/static/src/js/pos_scan.js @@ -4,65 +4,28 @@ import { patch } from "@web/core/utils/patch"; import { PosDB } from "@point_of_sale/app/store/db"; import { unaccent } from "@web/core/utils/strings"; import { jsonrpc } from "@web/core/network/rpc_service"; +import { DebugWidget } from "@point_of_sale/app/debug/debug_widget"; +import { useService } from "@web/core/utils/hooks"; -patch(PosDB.prototype, { - add_products(products) { - //Extends the add_products method of the PosDB class to include additional functionality for handling product barcodes. - var stored_categories = this.product_by_category_id; - if (!(products instanceof Array)) { - products = [products]; - } - for (var i = 0, len = products.length; i < len; i++) { - var product = products[i]; - if (product.id in this.product_by_id) { - continue; - } - if (product.available_in_pos) { - var search_string = unaccent(this._product_search_string(product)); - const all_categ_ids = product.pos_categ_ids.length - ? product.pos_categ_ids - : [this.root_category_id]; - product.product_tmpl_id = product.product_tmpl_id[0]; - for (const categ_id of all_categ_ids) { - if (!stored_categories[categ_id]) { - stored_categories[categ_id] = []; - } - stored_categories[categ_id].push(product.id); - if (this.category_search_string[categ_id] === undefined) { - this.category_search_string[categ_id] = ""; - } - this.category_search_string[categ_id] += search_string; - var ancestors = this.get_category_ancestors_ids(categ_id) || []; - for (var j = 0, jlen = ancestors.length; j < jlen; j++) { - var ancestor = ancestors[j]; - if (!stored_categories[ancestor]) { - stored_categories[ancestor] = []; - } - stored_categories[ancestor].push(product.id); - if (this.category_search_string[ancestor] === undefined) { - this.category_search_string[ancestor] = ""; - } - this.category_search_string[ancestor] += search_string; - } - } - } - this.product_by_id[product.id] = product; - if (product.barcode && product.active) { - this.product_by_barcode[product.barcode] = product; - } - for (var t = 0; t < product.product_multi_barcodes_ids.length; t++) { - var self = this; - jsonrpc('/web/dataset/call_kw/multi.barcode.products/get_barcode_val', { - model: 'multi.barcode.products', - method: 'get_barcode_val', - args: [product.product_multi_barcodes_ids[t], product.id], - kwargs: {}, - }).then(function(barcode_val) { - self.product_by_barcode[barcode_val[0]] = self.product_by_id[barcode_val[1]]; - }); +patch(DebugWidget.prototype, { + setup() { + super.setup() + this.orm = useService("orm"); + }, + async barcodeScan() { + if (!this.barcodeReader) { + return; } - } - return super.add_products(products); - }, + await this.orm.call('multi.barcode.products','get_barcode_val',[this.state.barcodeInput]).then(async (data) => { + if (data[1]){ + this.currentOrder = this.pos.get_order(); + var product = this.pos.db.get_product_by_id(parseInt(data[1])) + this.currentOrder.add_product(product); + } + else{ + await this.barcodeReader.scan(this.state.barcodeInput); + } + }); + } }); \ No newline at end of file