Browse Source

Sep 23: [FIX] Bug Fixed 'multi_barcodes_pos'

pull/332/head
Cybrosys Technologies 7 months ago
parent
commit
112e1d3c03
  1. 5
      multi_barcodes_pos/doc/RELEASE_NOTES.md
  2. 8
      multi_barcodes_pos/models/multi_barcode_products.py
  3. 9
      multi_barcodes_pos/static/src/js/ProductWidget.js
  4. 79
      multi_barcodes_pos/static/src/js/pos_scan.js

5
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.

8
multi_barcodes_pos/models/multi_barcode_products.py

@ -19,7 +19,7 @@
# If not, see <http://www.gnu.org/licenses/>.
#
#############################################################################
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

9
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;
}
}

79
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);
}
});
}
});
Loading…
Cancel
Save