From b03d54ed718ce0f528f94ac53f14081758fb2344 Mon Sep 17 00:00:00 2001 From: Akim Juillerat Date: Tue, 9 Aug 2022 15:45:32 +0200 Subject: [PATCH 01/13] Add module pos_lot_barcode --- pos_lot_barcode/README.rst | 0 pos_lot_barcode/__init__.py | 0 pos_lot_barcode/__manifest__.py | 25 +++ pos_lot_barcode/readme/CONFIGURATION.rst | 2 + pos_lot_barcode/readme/CONTRIBUTORS.rst | 1 + pos_lot_barcode/readme/DESCRIPTION.rst | 2 + .../static/src/js/Popups/EditListPopup.js | 30 +++ .../js/Popups/ErrorMultiLotBarcodePopup.js | 31 +++ .../static/src/js/Screens/ProductScreen.js | 207 ++++++++++++++++++ .../xml/Popups/ErrorMultiLotBarcodePopup.xml | 34 +++ 10 files changed, 332 insertions(+) create mode 100644 pos_lot_barcode/README.rst create mode 100644 pos_lot_barcode/__init__.py create mode 100644 pos_lot_barcode/__manifest__.py create mode 100644 pos_lot_barcode/readme/CONFIGURATION.rst create mode 100644 pos_lot_barcode/readme/CONTRIBUTORS.rst create mode 100644 pos_lot_barcode/readme/DESCRIPTION.rst create mode 100644 pos_lot_barcode/static/src/js/Popups/EditListPopup.js create mode 100644 pos_lot_barcode/static/src/js/Popups/ErrorMultiLotBarcodePopup.js create mode 100644 pos_lot_barcode/static/src/js/Screens/ProductScreen.js create mode 100644 pos_lot_barcode/static/src/xml/Popups/ErrorMultiLotBarcodePopup.xml diff --git a/pos_lot_barcode/README.rst b/pos_lot_barcode/README.rst new file mode 100644 index 0000000000..e69de29bb2 diff --git a/pos_lot_barcode/__init__.py b/pos_lot_barcode/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/pos_lot_barcode/__manifest__.py b/pos_lot_barcode/__manifest__.py new file mode 100644 index 0000000000..8bc362d24c --- /dev/null +++ b/pos_lot_barcode/__manifest__.py @@ -0,0 +1,25 @@ +# Copyright 2022 Camptocamp SA +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl) +{ + "name": "POS Lot Barcode", + "summary": "Scan barcode to enter lot/serial numbers", + "version": "15.0.1.0.0", + "development_status": "Alpha", + "category": "Sales/Point of Sale", + "website": "https://github.com/OCA/pos", + "author": "Camptocamp, Odoo Community Association (OCA)", + "license": "AGPL-3", + "application": False, + "installable": True, + "depends": [ + "point_of_sale", + ], + "assets": { + "point_of_sale.assets": [ + "pos_lot_barcode/static/src/js/**/*.js", + ], + "web.assets_qweb": [ + "pos_lot_barcode/static/src/xml/**/*.xml", + ], + }, +} diff --git a/pos_lot_barcode/readme/CONFIGURATION.rst b/pos_lot_barcode/readme/CONFIGURATION.rst new file mode 100644 index 0000000000..f5c535087e --- /dev/null +++ b/pos_lot_barcode/readme/CONFIGURATION.rst @@ -0,0 +1,2 @@ +In the Point of Sale configuration, you should make sure you have a barcode rule of type 'Lot' + defined in the Barcode Nomenclature. diff --git a/pos_lot_barcode/readme/CONTRIBUTORS.rst b/pos_lot_barcode/readme/CONTRIBUTORS.rst new file mode 100644 index 0000000000..e31e2f0c4f --- /dev/null +++ b/pos_lot_barcode/readme/CONTRIBUTORS.rst @@ -0,0 +1 @@ +* Akim Juillerat diff --git a/pos_lot_barcode/readme/DESCRIPTION.rst b/pos_lot_barcode/readme/DESCRIPTION.rst new file mode 100644 index 0000000000..22aab3c70f --- /dev/null +++ b/pos_lot_barcode/readme/DESCRIPTION.rst @@ -0,0 +1,2 @@ +This module extends the point of sale functionalities to allow scanning a lot/serial number +using a barcode reader instead of having to enter it manually. diff --git a/pos_lot_barcode/static/src/js/Popups/EditListPopup.js b/pos_lot_barcode/static/src/js/Popups/EditListPopup.js new file mode 100644 index 0000000000..67f402511a --- /dev/null +++ b/pos_lot_barcode/static/src/js/Popups/EditListPopup.js @@ -0,0 +1,30 @@ +/* + Copyright 2022 Camptocamp SA + License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl) +*/ +odoo.define("pos_lot_barcode.EditListPopup", function (require) { + "use strict"; + + const EditListPopup = require("point_of_sale.EditListPopup"); + const Registries = require("point_of_sale.Registries"); + const {useBarcodeReader} = require("point_of_sale.custom_hooks"); + + const PosLotBarcodeEditListPopup = (EditListPopup) => + class extends EditListPopup { + constructor() { + super(...arguments); + useBarcodeReader({ + lot: this._lotScanned, + }); + } + _lotScanned(code) { + // Check we are on lot/SN selection popup + if (this.props.title === this.env._t("Lot/Serial Number(s) Required")) { + this.state.array.push({text: code.code, _id: this._nextId()}); + this.confirm(); + } + } + }; + Registries.Component.extend(EditListPopup, PosLotBarcodeEditListPopup); + return EditListPopup; +}); diff --git a/pos_lot_barcode/static/src/js/Popups/ErrorMultiLotBarcodePopup.js b/pos_lot_barcode/static/src/js/Popups/ErrorMultiLotBarcodePopup.js new file mode 100644 index 0000000000..3b737db0c1 --- /dev/null +++ b/pos_lot_barcode/static/src/js/Popups/ErrorMultiLotBarcodePopup.js @@ -0,0 +1,31 @@ +/* + Copyright 2022 Camptocamp SA + License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl) +*/ +odoo.define("pos_lot_barcode.ErrorMultiLotBarcodePopup", function (require) { + "use strict"; + + const ErrorBarcodePopup = require("point_of_sale.ErrorBarcodePopup"); + const Registries = require("point_of_sale.Registries"); + const {_lt} = require("@web/core/l10n/translation"); + + class ErrorMultiLotBarcodePopup extends ErrorBarcodePopup { + get translatedMessage() { + return this.env._t(this.props.message); + } + } + ErrorMultiLotBarcodePopup.template = "ErrorMultiLotBarcodePopup"; + ErrorMultiLotBarcodePopup.defaultProps = { + confirmText: _lt("Ok"), + cancelText: _lt("Cancel"), + title: _lt("Error"), + body: "", + message: _lt( + "The Point of Sale can not process the scanned barcode, as it matches multiple products:" + ), + }; + + Registries.Component.add(ErrorMultiLotBarcodePopup); + + return ErrorMultiLotBarcodePopup; +}); diff --git a/pos_lot_barcode/static/src/js/Screens/ProductScreen.js b/pos_lot_barcode/static/src/js/Screens/ProductScreen.js new file mode 100644 index 0000000000..9aa1bed8e7 --- /dev/null +++ b/pos_lot_barcode/static/src/js/Screens/ProductScreen.js @@ -0,0 +1,207 @@ +/* + Copyright 2022 Camptocamp SA + License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl) +*/ +odoo.define("pos_lot_barcode.ProductScreen", function (require) { + "use strict"; + + const ProductScreen = require("point_of_sale.ProductScreen"); + const Registries = require("point_of_sale.Registries"); + const {useBarcodeReader} = require("point_of_sale.custom_hooks"); + const {isConnectionError} = require("point_of_sale.utils"); + const {_lt} = require("@web/core/l10n/translation"); + + const PosLotBarcodeProductScreen = (ProductScreen) => + class extends ProductScreen { + constructor() { + super(...arguments); + this.scan_lots_active = true; + useBarcodeReader({ + lot: this._barcodeLotAction, + }); + } + async _barcodeLotAction(code) { + // Do not do anything if lot scanning is not active + if (!this.scan_lots_active) return; + // Get the product according to lot barcode + const product = await this._getProductByLotBarcode(code); + // If we didn't get a product it must display a popup + if (!product) return; + // Get possible options not linked to lot selection + const options = await this._getAddLotProductOptions(product, code); + // Do not proceed on adding the product when no options is returned. + // This is consistent with _clickProduct. + if (!options) return; + this.currentOrder.add_product(product, options); + } + async _getProductByLotBarcode(base_code) { + const foundLotIds = await this._searchLotProduct(base_code.code); + if (foundLotIds.length === 1) { + let product = this.env.pos.db.get_product_by_id( + foundLotIds[0].product_id[0] + ); + if (!product) { + // If product is not loaded in POS, load it + await this.env.pos._addProducts(foundLotIds[0].product_id[0]); + // Assume that the result is unique. + product = this.env.pos.db.get_product_by_id( + foundLotIds[0].product_id[0] + ); + } + return product; + } else if (foundLotIds.length > 1) { + // If we found more than a single lot in backend, raise error + this._barcodeMultiLotErrorAction( + base_code, + _.map(foundLotIds, (lot) => lot.product_id[1]) + ); + return false; + } + this._barcodeLotErrorAction(base_code); + return false; + } + async _searchLotProduct(code) { + let foundLotIds = []; + try { + foundLotIds = await this.rpc({ + model: "stock.production.lot", + method: "search_read", + domain: [["name", "=", code]], + fields: ["id", "product_id"], + context: this.env.session.user_context, + }); + } catch (error) { + if (isConnectionError(error)) { + return this.showPopup("OfflineErrorPopup", { + title: this.env._t("Network Error"), + body: this.env._t( + "Lot is not loaded. Tried loading the lot from the server but there is a network error." + ), + }); + } + throw error; + } + return foundLotIds; + } + async _getAddProductOptions() { + // Deactivate lot scanning if lot selection popup must be opened + this.scan_lots_active = false; + const options = await super._getAddProductOptions(...arguments); + this.scan_lots_active = true; + return options; + } + async _getAddLotProductOptions(product, base_code) { + // Copy and reimplement _getAddProductOptions with lot taken from base_code parameter + let price_extra = 0.0; + let weight = 0.0; + let description = ""; + let draftPackLotLines = []; + let packLotLinesToEdit = []; + let existingPackLotLines = []; + let newPackLotLines = []; + // Keep opening the product configurator if needed (copied from _getAddProductOptions) + if ( + this.env.pos.config.product_configurator && + _.some( + product.attribute_line_ids, + (id) => id in this.env.pos.attributes_by_ptal_id + ) + ) { + const attributes = _.map( + product.attribute_line_ids, + (id) => this.env.pos.attributes_by_ptal_id[id] + ).filter((attr) => attr !== undefined); + const {confirmed, payload} = await this.showPopup( + "ProductConfiguratorPopup", + { + product: product, + attributes: attributes, + } + ); + + if (confirmed) { + description = payload.selected_attributes.join(", "); + price_extra += payload.price_extra; + } else { + return; + } + } + // Set lot information, check still needed for picking_type (copied from _getAddProductOptions) + if ( + this.env.pos.picking_type.use_create_lots || + this.env.pos.picking_type.use_existing_lots + ) { + // Build packLotLinesToEdit (copied from _getAddProductOptions) + const isAllowOnlyOneLot = product.isAllowOnlyOneLot(); + if (isAllowOnlyOneLot) { + packLotLinesToEdit = []; + } else { + const orderline = this.currentOrder + .get_orderlines() + .filter((line) => !line.get_discount()) + .find((line) => line.product.id === product.id); + if (orderline) { + packLotLinesToEdit = orderline.getPackLotLinesToEdit(); + } else { + packLotLinesToEdit = []; + } + } + // Remove new Id from packLotLinesToEdit if we have any + existingPackLotLines = {}; + if (packLotLinesToEdit.length) { + existingPackLotLines = Object.fromEntries( + packLotLinesToEdit + .filter((item) => item.id) + .map((item) => [item.id, item.text]) + ); + } + // Define new lot using scanned barcode + newPackLotLines = [{lot_name: base_code.code}]; + draftPackLotLines = { + modifiedPackLotLines: existingPackLotLines, + newPackLotLines, + }; + } + + // Take the weight if necessary. (copied from _getAddProductOptions) + if (product.to_weight && this.env.pos.config.iface_electronic_scale) { + // Show the ScaleScreen to weigh the product. + if (this.isScaleAvailable) { + const {confirmed, payload} = await this.showTempScreen( + "ScaleScreen", + { + product, + } + ); + if (confirmed) { + weight = payload.weight; + } else { + // Do not add the product; + return; + } + } else { + await this._onScaleNotAvailable(); + } + } + return {draftPackLotLines, quantity: weight, description, price_extra}; + } + _barcodeLotErrorAction(code) { + return this.showPopup("ErrorBarcodePopup", { + code: this._codeRepr(code), + message: _lt( + "The Point of Sale could not find any product, lot, client, employee or action associated with the scanned barcode." + ), + }); + } + _barcodeMultiLotErrorAction(code, product_names) { + return this.showPopup("ErrorMultiLotBarcodePopup", { + code: this._codeRepr(code), + products: product_names, + }); + } + }; + + Registries.Component.extend(ProductScreen, PosLotBarcodeProductScreen); + + return ProductScreen; +}); diff --git a/pos_lot_barcode/static/src/xml/Popups/ErrorMultiLotBarcodePopup.xml b/pos_lot_barcode/static/src/xml/Popups/ErrorMultiLotBarcodePopup.xml new file mode 100644 index 0000000000..b334cfdd85 --- /dev/null +++ b/pos_lot_barcode/static/src/xml/Popups/ErrorMultiLotBarcodePopup.xml @@ -0,0 +1,34 @@ + + + + + + + + From 88f173a33adbe0e43ee7680240783577594d01ee Mon Sep 17 00:00:00 2001 From: oca-ci Date: Wed, 19 Oct 2022 11:30:09 +0000 Subject: [PATCH 02/13] [UPD] Update pos_lot_barcode.pot --- pos_lot_barcode/i18n/pos_lot_barcode.pot | 84 ++++++++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 pos_lot_barcode/i18n/pos_lot_barcode.pot diff --git a/pos_lot_barcode/i18n/pos_lot_barcode.pot b/pos_lot_barcode/i18n/pos_lot_barcode.pot new file mode 100644 index 0000000000..2769743a6b --- /dev/null +++ b/pos_lot_barcode/i18n/pos_lot_barcode.pot @@ -0,0 +1,84 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * pos_lot_barcode +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 15.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: pos_lot_barcode +#. openerp-web +#: code:addons/pos_lot_barcode/static/src/js/Popups/ErrorMultiLotBarcodePopup.js:0 +#, python-format +msgid "Cancel" +msgstr "" + +#. module: pos_lot_barcode +#. openerp-web +#: code:addons/pos_lot_barcode/static/src/js/Popups/ErrorMultiLotBarcodePopup.js:0 +#, python-format +msgid "Error" +msgstr "" + +#. module: pos_lot_barcode +#. openerp-web +#: code:addons/pos_lot_barcode/static/src/js/Screens/ProductScreen.js:0 +#, python-format +msgid "" +"Lot is not loaded. Tried loading the lot from the server but there is a " +"network error." +msgstr "" + +#. module: pos_lot_barcode +#. openerp-web +#: code:addons/pos_lot_barcode/static/src/js/Popups/EditListPopup.js:0 +#, python-format +msgid "Lot/Serial Number(s) Required" +msgstr "" + +#. module: pos_lot_barcode +#. openerp-web +#: code:addons/pos_lot_barcode/static/src/xml/Popups/ErrorMultiLotBarcodePopup.xml:0 +#, python-format +msgid "Multiple Products Matching Barcode" +msgstr "" + +#. module: pos_lot_barcode +#. openerp-web +#: code:addons/pos_lot_barcode/static/src/js/Screens/ProductScreen.js:0 +#, python-format +msgid "Network Error" +msgstr "" + +#. module: pos_lot_barcode +#. openerp-web +#: code:addons/pos_lot_barcode/static/src/js/Popups/ErrorMultiLotBarcodePopup.js:0 +#: code:addons/pos_lot_barcode/static/src/xml/Popups/ErrorMultiLotBarcodePopup.xml:0 +#, python-format +msgid "Ok" +msgstr "" + +#. module: pos_lot_barcode +#. openerp-web +#: code:addons/pos_lot_barcode/static/src/js/Popups/ErrorMultiLotBarcodePopup.js:0 +#, python-format +msgid "" +"The Point of Sale can not process the scanned barcode, as it matches " +"multiple products:" +msgstr "" + +#. module: pos_lot_barcode +#. openerp-web +#: code:addons/pos_lot_barcode/static/src/js/Screens/ProductScreen.js:0 +#, python-format +msgid "" +"The Point of Sale could not find any product, lot, client, employee or " +"action associated with the scanned barcode." +msgstr "" From ef89d7b43c37832631409cbd63b96adc0060918c Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Wed, 19 Oct 2022 11:33:57 +0000 Subject: [PATCH 03/13] [UPD] README.rst --- pos_lot_barcode/README.rst | 79 ++++ pos_lot_barcode/static/description/index.html | 426 ++++++++++++++++++ 2 files changed, 505 insertions(+) create mode 100644 pos_lot_barcode/static/description/index.html diff --git a/pos_lot_barcode/README.rst b/pos_lot_barcode/README.rst index e69de29bb2..42b13fb52b 100644 --- a/pos_lot_barcode/README.rst +++ b/pos_lot_barcode/README.rst @@ -0,0 +1,79 @@ +=============== +POS Lot Barcode +=============== + +.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |badge1| image:: https://img.shields.io/badge/maturity-Alpha-red.png + :target: https://odoo-community.org/page/development-status + :alt: Alpha +.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 +.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fpos-lightgray.png?logo=github + :target: https://github.com/OCA/pos/tree/15.0/pos_lot_barcode + :alt: OCA/pos +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/pos-15-0/pos-15-0-pos_lot_barcode + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png + :target: https://runbot.odoo-community.org/runbot/184/15.0 + :alt: Try me on Runbot + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module extends the point of sale functionalities to allow scanning a lot/serial number +using a barcode reader instead of having to enter it manually. + +.. IMPORTANT:: + This is an alpha version, the data model and design can change at any time without warning. + Only for development or testing purpose, do not use in production. + `More details on development status `_ + +**Table of contents** + +.. contents:: + :local: + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues `_. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us smashing it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +~~~~~~~ + +* Camptocamp + +Contributors +~~~~~~~~~~~~ + +* Akim Juillerat + +Maintainers +~~~~~~~~~~~ + +This module is maintained by the OCA. + +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + +OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use. + +This module is part of the `OCA/pos `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/pos_lot_barcode/static/description/index.html b/pos_lot_barcode/static/description/index.html new file mode 100644 index 0000000000..7019ae78ae --- /dev/null +++ b/pos_lot_barcode/static/description/index.html @@ -0,0 +1,426 @@ + + + + + + +POS Lot Barcode + + + +
+

POS Lot Barcode

+ + +

Alpha License: AGPL-3 OCA/pos Translate me on Weblate Try me on Runbot

+

This module extends the point of sale functionalities to allow scanning a lot/serial number +using a barcode reader instead of having to enter it manually.

+
+

Important

+

This is an alpha version, the data model and design can change at any time without warning. +Only for development or testing purpose, do not use in production. +More details on development status

+
+

Table of contents

+ +
+

Bug Tracker

+

Bugs are tracked on GitHub Issues. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us smashing it by providing a detailed and welcomed +feedback.

+

Do not contact contributors directly about support or help with technical issues.

+
+
+

Credits

+
+

Authors

+
    +
  • Camptocamp
  • +
+
+ +
+

Maintainers

+

This module is maintained by the OCA.

+Odoo Community Association +

OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use.

+

This module is part of the OCA/pos project on GitHub.

+

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

+
+
+
+ + From 3d79b30f85c6d07069a4b314cde70f84519caa5c Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Wed, 19 Oct 2022 11:33:58 +0000 Subject: [PATCH 04/13] [ADD] icon.png --- pos_lot_barcode/static/description/icon.png | Bin 0 -> 9455 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 pos_lot_barcode/static/description/icon.png diff --git a/pos_lot_barcode/static/description/icon.png b/pos_lot_barcode/static/description/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..3a0328b516c4980e8e44cdb63fd945757ddd132d GIT binary patch literal 9455 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 z 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 Xviia!U7SGha1wx#SCgwmn*{w2TRX*I literal 0 HcmV?d00001 From dbd97df0d87cf6bd61a9300a95260c432975ed4c Mon Sep 17 00:00:00 2001 From: Maksym Yankin Date: Mon, 27 Feb 2023 18:22:01 +0200 Subject: [PATCH 05/13] [MIG] pos_lot_barcode: Migration to 16.0 --- pos_lot_barcode/README.rst | 10 +++++----- pos_lot_barcode/__manifest__.py | 4 +--- pos_lot_barcode/i18n/pos_lot_barcode.pot | 2 +- pos_lot_barcode/static/description/index.html | 6 +++--- pos_lot_barcode/static/src/js/Popups/EditListPopup.js | 4 ++-- pos_lot_barcode/static/src/js/Screens/ProductScreen.js | 6 +++--- 6 files changed, 15 insertions(+), 17 deletions(-) diff --git a/pos_lot_barcode/README.rst b/pos_lot_barcode/README.rst index 42b13fb52b..eff3e97d67 100644 --- a/pos_lot_barcode/README.rst +++ b/pos_lot_barcode/README.rst @@ -14,13 +14,13 @@ POS Lot Barcode :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fpos-lightgray.png?logo=github - :target: https://github.com/OCA/pos/tree/15.0/pos_lot_barcode + :target: https://github.com/OCA/pos/tree/16.0/pos_lot_barcode :alt: OCA/pos .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/pos-15-0/pos-15-0-pos_lot_barcode + :target: https://translation.odoo-community.org/projects/pos-16-0/pos-16-0-pos_lot_barcode :alt: Translate me on Weblate .. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png - :target: https://runbot.odoo-community.org/runbot/184/15.0 + :target: https://runbot.odoo-community.org/runbot/184/16.0 :alt: Try me on Runbot |badge1| |badge2| |badge3| |badge4| |badge5| @@ -44,7 +44,7 @@ Bug Tracker Bugs are tracked on `GitHub Issues `_. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us smashing it by providing a detailed and welcomed -`feedback `_. +`feedback `_. Do not contact contributors directly about support or help with technical issues. @@ -74,6 +74,6 @@ OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use. -This module is part of the `OCA/pos `_ project on GitHub. +This module is part of the `OCA/pos `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/pos_lot_barcode/__manifest__.py b/pos_lot_barcode/__manifest__.py index 8bc362d24c..c2b91ef112 100644 --- a/pos_lot_barcode/__manifest__.py +++ b/pos_lot_barcode/__manifest__.py @@ -3,7 +3,7 @@ { "name": "POS Lot Barcode", "summary": "Scan barcode to enter lot/serial numbers", - "version": "15.0.1.0.0", + "version": "16.0.1.0.0", "development_status": "Alpha", "category": "Sales/Point of Sale", "website": "https://github.com/OCA/pos", @@ -17,8 +17,6 @@ "assets": { "point_of_sale.assets": [ "pos_lot_barcode/static/src/js/**/*.js", - ], - "web.assets_qweb": [ "pos_lot_barcode/static/src/xml/**/*.xml", ], }, diff --git a/pos_lot_barcode/i18n/pos_lot_barcode.pot b/pos_lot_barcode/i18n/pos_lot_barcode.pot index 2769743a6b..0fcd87bdf9 100644 --- a/pos_lot_barcode/i18n/pos_lot_barcode.pot +++ b/pos_lot_barcode/i18n/pos_lot_barcode.pot @@ -4,7 +4,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 15.0\n" +"Project-Id-Version: Odoo Server 16.0\n" "Report-Msgid-Bugs-To: \n" "Last-Translator: \n" "Language-Team: \n" diff --git a/pos_lot_barcode/static/description/index.html b/pos_lot_barcode/static/description/index.html index 7019ae78ae..fbd33fe7f2 100644 --- a/pos_lot_barcode/static/description/index.html +++ b/pos_lot_barcode/static/description/index.html @@ -367,7 +367,7 @@

POS Lot Barcode

!! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> -

Alpha License: AGPL-3 OCA/pos Translate me on Weblate Try me on Runbot

+

Alpha License: AGPL-3 OCA/pos Translate me on Weblate Try me on Runbot

This module extends the point of sale functionalities to allow scanning a lot/serial number using a barcode reader instead of having to enter it manually.

@@ -393,7 +393,7 @@

Bug Tracker

Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us smashing it by providing a detailed and welcomed -feedback.

+feedback.

Do not contact contributors directly about support or help with technical issues.

@@ -417,7 +417,7 @@

Maintainers

OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use.

-

This module is part of the OCA/pos project on GitHub.

+

This module is part of the OCA/pos project on GitHub.

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

diff --git a/pos_lot_barcode/static/src/js/Popups/EditListPopup.js b/pos_lot_barcode/static/src/js/Popups/EditListPopup.js index 67f402511a..4dfd8d4e4f 100644 --- a/pos_lot_barcode/static/src/js/Popups/EditListPopup.js +++ b/pos_lot_barcode/static/src/js/Popups/EditListPopup.js @@ -11,8 +11,8 @@ odoo.define("pos_lot_barcode.EditListPopup", function (require) { const PosLotBarcodeEditListPopup = (EditListPopup) => class extends EditListPopup { - constructor() { - super(...arguments); + setup() { + super.setup(); useBarcodeReader({ lot: this._lotScanned, }); diff --git a/pos_lot_barcode/static/src/js/Screens/ProductScreen.js b/pos_lot_barcode/static/src/js/Screens/ProductScreen.js index 9aa1bed8e7..8baefa9988 100644 --- a/pos_lot_barcode/static/src/js/Screens/ProductScreen.js +++ b/pos_lot_barcode/static/src/js/Screens/ProductScreen.js @@ -13,8 +13,8 @@ odoo.define("pos_lot_barcode.ProductScreen", function (require) { const PosLotBarcodeProductScreen = (ProductScreen) => class extends ProductScreen { - constructor() { - super(...arguments); + setup() { + super.setup(); this.scan_lots_active = true; useBarcodeReader({ lot: this._barcodeLotAction, @@ -64,7 +64,7 @@ odoo.define("pos_lot_barcode.ProductScreen", function (require) { let foundLotIds = []; try { foundLotIds = await this.rpc({ - model: "stock.production.lot", + model: "stock.lot", method: "search_read", domain: [["name", "=", code]], fields: ["id", "product_id"], From 20e9e9ac0b906226db48dd58549f805fbe3842a3 Mon Sep 17 00:00:00 2001 From: oca-ci Date: Tue, 28 Feb 2023 15:28:05 +0000 Subject: [PATCH 06/13] [UPD] Update pos_lot_barcode.pot --- pos_lot_barcode/i18n/pos_lot_barcode.pot | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/pos_lot_barcode/i18n/pos_lot_barcode.pot b/pos_lot_barcode/i18n/pos_lot_barcode.pot index 0fcd87bdf9..bc19fea2ed 100644 --- a/pos_lot_barcode/i18n/pos_lot_barcode.pot +++ b/pos_lot_barcode/i18n/pos_lot_barcode.pot @@ -14,21 +14,21 @@ msgstr "" "Plural-Forms: \n" #. module: pos_lot_barcode -#. openerp-web +#. odoo-javascript #: code:addons/pos_lot_barcode/static/src/js/Popups/ErrorMultiLotBarcodePopup.js:0 #, python-format msgid "Cancel" msgstr "" #. module: pos_lot_barcode -#. openerp-web +#. odoo-javascript #: code:addons/pos_lot_barcode/static/src/js/Popups/ErrorMultiLotBarcodePopup.js:0 #, python-format msgid "Error" msgstr "" #. module: pos_lot_barcode -#. openerp-web +#. odoo-javascript #: code:addons/pos_lot_barcode/static/src/js/Screens/ProductScreen.js:0 #, python-format msgid "" @@ -37,28 +37,28 @@ msgid "" msgstr "" #. module: pos_lot_barcode -#. openerp-web +#. odoo-javascript #: code:addons/pos_lot_barcode/static/src/js/Popups/EditListPopup.js:0 #, python-format msgid "Lot/Serial Number(s) Required" msgstr "" #. module: pos_lot_barcode -#. openerp-web +#. odoo-javascript #: code:addons/pos_lot_barcode/static/src/xml/Popups/ErrorMultiLotBarcodePopup.xml:0 #, python-format msgid "Multiple Products Matching Barcode" msgstr "" #. module: pos_lot_barcode -#. openerp-web +#. odoo-javascript #: code:addons/pos_lot_barcode/static/src/js/Screens/ProductScreen.js:0 #, python-format msgid "Network Error" msgstr "" #. module: pos_lot_barcode -#. openerp-web +#. odoo-javascript #: code:addons/pos_lot_barcode/static/src/js/Popups/ErrorMultiLotBarcodePopup.js:0 #: code:addons/pos_lot_barcode/static/src/xml/Popups/ErrorMultiLotBarcodePopup.xml:0 #, python-format @@ -66,7 +66,7 @@ msgid "Ok" msgstr "" #. module: pos_lot_barcode -#. openerp-web +#. odoo-javascript #: code:addons/pos_lot_barcode/static/src/js/Popups/ErrorMultiLotBarcodePopup.js:0 #, python-format msgid "" @@ -75,7 +75,7 @@ msgid "" msgstr "" #. module: pos_lot_barcode -#. openerp-web +#. odoo-javascript #: code:addons/pos_lot_barcode/static/src/js/Screens/ProductScreen.js:0 #, python-format msgid "" From 027e61cc0953913b88e3741bdf9ae755b03045d7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patricia=20Lorenzo=20Bartolom=C3=A9?= Date: Thu, 2 Mar 2023 14:24:52 +0000 Subject: [PATCH 07/13] Added translation using Weblate (Spanish) --- pos_lot_barcode/i18n/es.po | 85 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 pos_lot_barcode/i18n/es.po diff --git a/pos_lot_barcode/i18n/es.po b/pos_lot_barcode/i18n/es.po new file mode 100644 index 0000000000..32de7052e1 --- /dev/null +++ b/pos_lot_barcode/i18n/es.po @@ -0,0 +1,85 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * pos_lot_barcode +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: es\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#. module: pos_lot_barcode +#. odoo-javascript +#: code:addons/pos_lot_barcode/static/src/js/Popups/ErrorMultiLotBarcodePopup.js:0 +#, python-format +msgid "Cancel" +msgstr "" + +#. module: pos_lot_barcode +#. odoo-javascript +#: code:addons/pos_lot_barcode/static/src/js/Popups/ErrorMultiLotBarcodePopup.js:0 +#, python-format +msgid "Error" +msgstr "" + +#. module: pos_lot_barcode +#. odoo-javascript +#: code:addons/pos_lot_barcode/static/src/js/Screens/ProductScreen.js:0 +#, python-format +msgid "" +"Lot is not loaded. Tried loading the lot from the server but there is a " +"network error." +msgstr "" + +#. module: pos_lot_barcode +#. odoo-javascript +#: code:addons/pos_lot_barcode/static/src/js/Popups/EditListPopup.js:0 +#, python-format +msgid "Lot/Serial Number(s) Required" +msgstr "" + +#. module: pos_lot_barcode +#. odoo-javascript +#: code:addons/pos_lot_barcode/static/src/xml/Popups/ErrorMultiLotBarcodePopup.xml:0 +#, python-format +msgid "Multiple Products Matching Barcode" +msgstr "" + +#. module: pos_lot_barcode +#. odoo-javascript +#: code:addons/pos_lot_barcode/static/src/js/Screens/ProductScreen.js:0 +#, python-format +msgid "Network Error" +msgstr "" + +#. module: pos_lot_barcode +#. odoo-javascript +#: code:addons/pos_lot_barcode/static/src/js/Popups/ErrorMultiLotBarcodePopup.js:0 +#: code:addons/pos_lot_barcode/static/src/xml/Popups/ErrorMultiLotBarcodePopup.xml:0 +#, python-format +msgid "Ok" +msgstr "" + +#. module: pos_lot_barcode +#. odoo-javascript +#: code:addons/pos_lot_barcode/static/src/js/Popups/ErrorMultiLotBarcodePopup.js:0 +#, python-format +msgid "" +"The Point of Sale can not process the scanned barcode, as it matches " +"multiple products:" +msgstr "" + +#. module: pos_lot_barcode +#. odoo-javascript +#: code:addons/pos_lot_barcode/static/src/js/Screens/ProductScreen.js:0 +#, python-format +msgid "" +"The Point of Sale could not find any product, lot, client, employee or " +"action associated with the scanned barcode." +msgstr "" From 36bba87767e1ef13511a8b0a826a09a2d141643c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patricia=20Lorenzo=20Bartolom=C3=A9?= Date: Thu, 2 Mar 2023 14:41:55 +0000 Subject: [PATCH 08/13] Translated using Weblate (Spanish) Currently translated at 100.0% (9 of 9 strings) Translation: pos-16.0/pos-16.0-pos_lot_barcode Translate-URL: https://translation.odoo-community.org/projects/pos-16-0/pos-16-0-pos_lot_barcode/es/ --- pos_lot_barcode/i18n/es.po | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/pos_lot_barcode/i18n/es.po b/pos_lot_barcode/i18n/es.po index 32de7052e1..2dd7bd16a6 100644 --- a/pos_lot_barcode/i18n/es.po +++ b/pos_lot_barcode/i18n/es.po @@ -6,27 +6,29 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 16.0\n" "Report-Msgid-Bugs-To: \n" -"Last-Translator: Automatically generated\n" +"PO-Revision-Date: 2023-03-02 16:30+0000\n" +"Last-Translator: Patricia Lorenzo Bartolomé \n" "Language-Team: none\n" "Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" "Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.14.1\n" #. module: pos_lot_barcode #. odoo-javascript #: code:addons/pos_lot_barcode/static/src/js/Popups/ErrorMultiLotBarcodePopup.js:0 #, python-format msgid "Cancel" -msgstr "" +msgstr "Cancelar" #. module: pos_lot_barcode #. odoo-javascript #: code:addons/pos_lot_barcode/static/src/js/Popups/ErrorMultiLotBarcodePopup.js:0 #, python-format msgid "Error" -msgstr "" +msgstr "Error" #. module: pos_lot_barcode #. odoo-javascript @@ -36,27 +38,29 @@ msgid "" "Lot is not loaded. Tried loading the lot from the server but there is a " "network error." msgstr "" +"El lote no está cargado. Intente cargar el lote desde el servidor pero hay " +"un error de conexión." #. module: pos_lot_barcode #. odoo-javascript #: code:addons/pos_lot_barcode/static/src/js/Popups/EditListPopup.js:0 #, python-format msgid "Lot/Serial Number(s) Required" -msgstr "" +msgstr "Lote/Número(s) de serie requerido" #. module: pos_lot_barcode #. odoo-javascript #: code:addons/pos_lot_barcode/static/src/xml/Popups/ErrorMultiLotBarcodePopup.xml:0 #, python-format msgid "Multiple Products Matching Barcode" -msgstr "" +msgstr "Múltiples códigos de barras de productos coincidentes" #. module: pos_lot_barcode #. odoo-javascript #: code:addons/pos_lot_barcode/static/src/js/Screens/ProductScreen.js:0 #, python-format msgid "Network Error" -msgstr "" +msgstr "Error de conexión" #. module: pos_lot_barcode #. odoo-javascript @@ -64,7 +68,7 @@ msgstr "" #: code:addons/pos_lot_barcode/static/src/xml/Popups/ErrorMultiLotBarcodePopup.xml:0 #, python-format msgid "Ok" -msgstr "" +msgstr "Aceptar" #. module: pos_lot_barcode #. odoo-javascript @@ -74,6 +78,8 @@ msgid "" "The Point of Sale can not process the scanned barcode, as it matches " "multiple products:" msgstr "" +"El punto de venta no puede procesar el código de barras escaneado, ya que " +"coincide con múltiples productos:" #. module: pos_lot_barcode #. odoo-javascript @@ -83,3 +89,5 @@ msgid "" "The Point of Sale could not find any product, lot, client, employee or " "action associated with the scanned barcode." msgstr "" +"El punto de venta no encuentra ningún producto, lote, cliente, empleado o " +"acción asociada con el código de barras escaneado." From f4ed1a91af2bae63b52c054b7e0dd9f5d2f0548e Mon Sep 17 00:00:00 2001 From: mymage Date: Thu, 9 Mar 2023 10:24:27 +0000 Subject: [PATCH 09/13] Added translation using Weblate (Italian) --- pos_lot_barcode/i18n/it.po | 85 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 pos_lot_barcode/i18n/it.po diff --git a/pos_lot_barcode/i18n/it.po b/pos_lot_barcode/i18n/it.po new file mode 100644 index 0000000000..4065424885 --- /dev/null +++ b/pos_lot_barcode/i18n/it.po @@ -0,0 +1,85 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * pos_lot_barcode +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: it\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#. module: pos_lot_barcode +#. odoo-javascript +#: code:addons/pos_lot_barcode/static/src/js/Popups/ErrorMultiLotBarcodePopup.js:0 +#, python-format +msgid "Cancel" +msgstr "" + +#. module: pos_lot_barcode +#. odoo-javascript +#: code:addons/pos_lot_barcode/static/src/js/Popups/ErrorMultiLotBarcodePopup.js:0 +#, python-format +msgid "Error" +msgstr "" + +#. module: pos_lot_barcode +#. odoo-javascript +#: code:addons/pos_lot_barcode/static/src/js/Screens/ProductScreen.js:0 +#, python-format +msgid "" +"Lot is not loaded. Tried loading the lot from the server but there is a " +"network error." +msgstr "" + +#. module: pos_lot_barcode +#. odoo-javascript +#: code:addons/pos_lot_barcode/static/src/js/Popups/EditListPopup.js:0 +#, python-format +msgid "Lot/Serial Number(s) Required" +msgstr "" + +#. module: pos_lot_barcode +#. odoo-javascript +#: code:addons/pos_lot_barcode/static/src/xml/Popups/ErrorMultiLotBarcodePopup.xml:0 +#, python-format +msgid "Multiple Products Matching Barcode" +msgstr "" + +#. module: pos_lot_barcode +#. odoo-javascript +#: code:addons/pos_lot_barcode/static/src/js/Screens/ProductScreen.js:0 +#, python-format +msgid "Network Error" +msgstr "" + +#. module: pos_lot_barcode +#. odoo-javascript +#: code:addons/pos_lot_barcode/static/src/js/Popups/ErrorMultiLotBarcodePopup.js:0 +#: code:addons/pos_lot_barcode/static/src/xml/Popups/ErrorMultiLotBarcodePopup.xml:0 +#, python-format +msgid "Ok" +msgstr "" + +#. module: pos_lot_barcode +#. odoo-javascript +#: code:addons/pos_lot_barcode/static/src/js/Popups/ErrorMultiLotBarcodePopup.js:0 +#, python-format +msgid "" +"The Point of Sale can not process the scanned barcode, as it matches " +"multiple products:" +msgstr "" + +#. module: pos_lot_barcode +#. odoo-javascript +#: code:addons/pos_lot_barcode/static/src/js/Screens/ProductScreen.js:0 +#, python-format +msgid "" +"The Point of Sale could not find any product, lot, client, employee or " +"action associated with the scanned barcode." +msgstr "" From 0dddb739f94020f932580e9c445e416d58f12733 Mon Sep 17 00:00:00 2001 From: mymage Date: Thu, 9 Mar 2023 10:25:25 +0000 Subject: [PATCH 10/13] Translated using Weblate (Italian) Currently translated at 100.0% (9 of 9 strings) Translation: pos-16.0/pos-16.0-pos_lot_barcode Translate-URL: https://translation.odoo-community.org/projects/pos-16-0/pos-16-0-pos_lot_barcode/it/ --- pos_lot_barcode/i18n/it.po | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/pos_lot_barcode/i18n/it.po b/pos_lot_barcode/i18n/it.po index 4065424885..3f81dfecf0 100644 --- a/pos_lot_barcode/i18n/it.po +++ b/pos_lot_barcode/i18n/it.po @@ -6,27 +6,29 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 16.0\n" "Report-Msgid-Bugs-To: \n" -"Last-Translator: Automatically generated\n" +"PO-Revision-Date: 2023-03-09 13:22+0000\n" +"Last-Translator: mymage \n" "Language-Team: none\n" "Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" "Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.14.1\n" #. module: pos_lot_barcode #. odoo-javascript #: code:addons/pos_lot_barcode/static/src/js/Popups/ErrorMultiLotBarcodePopup.js:0 #, python-format msgid "Cancel" -msgstr "" +msgstr "Annulla" #. module: pos_lot_barcode #. odoo-javascript #: code:addons/pos_lot_barcode/static/src/js/Popups/ErrorMultiLotBarcodePopup.js:0 #, python-format msgid "Error" -msgstr "" +msgstr "Errore" #. module: pos_lot_barcode #. odoo-javascript @@ -36,27 +38,29 @@ msgid "" "Lot is not loaded. Tried loading the lot from the server but there is a " "network error." msgstr "" +"Il lotto non è caricato. Errore di connessione nel tentativo di caricare il " +"lotto dal server." #. module: pos_lot_barcode #. odoo-javascript #: code:addons/pos_lot_barcode/static/src/js/Popups/EditListPopup.js:0 #, python-format msgid "Lot/Serial Number(s) Required" -msgstr "" +msgstr "Richiesto lotto/numero(i) di serie" #. module: pos_lot_barcode #. odoo-javascript #: code:addons/pos_lot_barcode/static/src/xml/Popups/ErrorMultiLotBarcodePopup.xml:0 #, python-format msgid "Multiple Products Matching Barcode" -msgstr "" +msgstr "Codice a barre corrispondente a prodotti multipli" #. module: pos_lot_barcode #. odoo-javascript #: code:addons/pos_lot_barcode/static/src/js/Screens/ProductScreen.js:0 #, python-format msgid "Network Error" -msgstr "" +msgstr "Errore di rete" #. module: pos_lot_barcode #. odoo-javascript @@ -64,7 +68,7 @@ msgstr "" #: code:addons/pos_lot_barcode/static/src/xml/Popups/ErrorMultiLotBarcodePopup.xml:0 #, python-format msgid "Ok" -msgstr "" +msgstr "Ok" #. module: pos_lot_barcode #. odoo-javascript @@ -74,6 +78,8 @@ msgid "" "The Point of Sale can not process the scanned barcode, as it matches " "multiple products:" msgstr "" +"Il punto vendita non riesce ad elaborare il codice a barre letto perché " +"corrisponde a più prodotti:" #. module: pos_lot_barcode #. odoo-javascript @@ -83,3 +89,5 @@ msgid "" "The Point of Sale could not find any product, lot, client, employee or " "action associated with the scanned barcode." msgstr "" +"Il punto vendita non trova alcun prodotto, lotto, cliente, dipendente o " +"azione associata al codice a barre letto." From ec016f0d38fd31f65bf9cd855688e8ccbbdde687 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Sun, 3 Sep 2023 15:15:12 +0000 Subject: [PATCH 11/13] [UPD] README.rst --- pos_lot_barcode/README.rst | 15 ++++---- pos_lot_barcode/static/description/index.html | 34 ++++++++++--------- 2 files changed, 27 insertions(+), 22 deletions(-) diff --git a/pos_lot_barcode/README.rst b/pos_lot_barcode/README.rst index eff3e97d67..1b20c1ff1a 100644 --- a/pos_lot_barcode/README.rst +++ b/pos_lot_barcode/README.rst @@ -2,10 +2,13 @@ POS Lot Barcode =============== -.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:19cedcec402a34483eb66df85f0d5fd55f12a8c35ae08efe4503f321d05b5f5c + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Alpha-red.png :target: https://odoo-community.org/page/development-status @@ -19,11 +22,11 @@ POS Lot Barcode .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png :target: https://translation.odoo-community.org/projects/pos-16-0/pos-16-0-pos_lot_barcode :alt: Translate me on Weblate -.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png - :target: https://runbot.odoo-community.org/runbot/184/16.0 - :alt: Try me on Runbot +.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png + :target: https://runboat.odoo-community.org/builds?repo=OCA/pos&target_branch=16.0 + :alt: Try me on Runboat -|badge1| |badge2| |badge3| |badge4| |badge5| +|badge1| |badge2| |badge3| |badge4| |badge5| This module extends the point of sale functionalities to allow scanning a lot/serial number using a barcode reader instead of having to enter it manually. @@ -43,7 +46,7 @@ Bug Tracker Bugs are tracked on `GitHub Issues `_. In case of trouble, please check there if your issue has already been reported. -If you spotted it first, help us smashing it by providing a detailed and welcomed +If you spotted it first, help us to smash it by providing a detailed and welcomed `feedback `_. Do not contact contributors directly about support or help with technical issues. diff --git a/pos_lot_barcode/static/description/index.html b/pos_lot_barcode/static/description/index.html index fbd33fe7f2..61e42ea2c8 100644 --- a/pos_lot_barcode/static/description/index.html +++ b/pos_lot_barcode/static/description/index.html @@ -1,20 +1,20 @@ - + - + POS Lot Barcode