diff --git a/pos_supplierinfo_search/__init__.py b/pos_supplierinfo_search/__init__.py new file mode 100644 index 00000000..0650744f --- /dev/null +++ b/pos_supplierinfo_search/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/pos_supplierinfo_search/__manifest__.py b/pos_supplierinfo_search/__manifest__.py new file mode 100644 index 00000000..d9591efd --- /dev/null +++ b/pos_supplierinfo_search/__manifest__.py @@ -0,0 +1,22 @@ +# Copyright 2020 Lorenzo Battistini @ TAKOBI +# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl). +{ + "name": "Point of sale - Search products by supplier", + "summary": "Search products by supplier data", + "version": "12.0.1.0.0", + "development_status": "Beta", + "category": "Point Of Sale", + "website": "https://github.com/OCA/pos", + "author": "TAKOBI, Odoo Community Association (OCA)", + "maintainers": ["eLBati"], + "license": "LGPL-3", + "application": False, + "installable": True, + "auto_install": False, + "depends": [ + "point_of_sale", + ], + "data": [ + "views/assets.xml", + ], +} diff --git a/pos_supplierinfo_search/models/__init__.py b/pos_supplierinfo_search/models/__init__.py new file mode 100644 index 00000000..9649db77 --- /dev/null +++ b/pos_supplierinfo_search/models/__init__.py @@ -0,0 +1 @@ +from . import product diff --git a/pos_supplierinfo_search/models/product.py b/pos_supplierinfo_search/models/product.py new file mode 100644 index 00000000..4a6875eb --- /dev/null +++ b/pos_supplierinfo_search/models/product.py @@ -0,0 +1,23 @@ +import json +from odoo import models, fields, api + + +class ProductTemplate(models.Model): + _inherit = 'product.template' + + # technical field used in POS frontend + supplier_data_json = fields.Char( + "Supplier data dict", readonly=True, + compute="_compute_supplier_data_json") + + @api.multi + def _compute_supplier_data_json(self): + for t in self: + res = [] + for s in t.seller_ids: + res.append({ + 'supplier_name': s.name.display_name, + 'supplier_product_code': s.product_code or '', + 'supplier_product_name': s.product_name or '', + }) + t.supplier_data_json = json.dumps(res) diff --git a/pos_supplierinfo_search/readme/CONTRIBUTORS.rst b/pos_supplierinfo_search/readme/CONTRIBUTORS.rst new file mode 100644 index 00000000..b27b50b5 --- /dev/null +++ b/pos_supplierinfo_search/readme/CONTRIBUTORS.rst @@ -0,0 +1 @@ +* Lorenzo Battistini (https://takobi.online) diff --git a/pos_supplierinfo_search/readme/DESCRIPTION.rst b/pos_supplierinfo_search/readme/DESCRIPTION.rst new file mode 100644 index 00000000..8ff63305 --- /dev/null +++ b/pos_supplierinfo_search/readme/DESCRIPTION.rst @@ -0,0 +1 @@ +In point of sale interface, allow to search products by supplier name, supplier product code or supplier product name. diff --git a/pos_supplierinfo_search/readme/USAGE.rst b/pos_supplierinfo_search/readme/USAGE.rst new file mode 100644 index 00000000..dd35b960 --- /dev/null +++ b/pos_supplierinfo_search/readme/USAGE.rst @@ -0,0 +1 @@ +In point of sale interface, just fill the "search products" box with some supplier data. diff --git a/pos_supplierinfo_search/static/src/js/db.js b/pos_supplierinfo_search/static/src/js/db.js new file mode 100644 index 00000000..666eb378 --- /dev/null +++ b/pos_supplierinfo_search/static/src/js/db.js @@ -0,0 +1,30 @@ +odoo.define('pos_supplierinfo_search.db', function (require) { + "use strict"; + + var PosDB = require('point_of_sale.DB'); + var models = require('point_of_sale.models'); + + models.load_fields("product.product", ["supplier_data_json"]); + + PosDB.include({ + _product_search_string: function(product){ + var res = this._super(product).replace('\n', ''); + var supplier_data_list = JSON.parse(product.supplier_data_json); + for(var i = 0, len = supplier_data_list.length; i < len; i++){ + var supplier_data = supplier_data_list[i]; + if (supplier_data.supplier_name) { + res += '|' + supplier_data.supplier_name.replace(/:/g,''); + } + if (supplier_data.supplier_product_code) { + res += '|' + supplier_data.supplier_product_code.replace(/:/g,''); + } + if (supplier_data.supplier_product_name) { + res += '|' + supplier_data.supplier_product_name.replace(/:/g,''); + } + } + res += '\n' + return res; + }, + }); + +}); diff --git a/pos_supplierinfo_search/views/assets.xml b/pos_supplierinfo_search/views/assets.xml new file mode 100644 index 00000000..65aff463 --- /dev/null +++ b/pos_supplierinfo_search/views/assets.xml @@ -0,0 +1,10 @@ + + + +