From 7c7af9b06d8122cd3e76878897a8f62da2697af3 Mon Sep 17 00:00:00 2001 From: Dave Lasley Date: Thu, 6 Apr 2017 09:01:01 -0700 Subject: [PATCH 01/16] [10.0][ADD] barcodes_generator_location: New module (#86) Add barcodes generator for stock locations --- barcodes_generator_location/README.rst | 100 ++++++++++++++++++ barcodes_generator_location/__init__.py | 2 + barcodes_generator_location/__manifest__.py | 26 +++++ .../demo/barcode_rule.xml | 21 ++++ barcodes_generator_location/demo/function.xml | 17 +++ .../demo/ir_sequence.xml | 15 +++ .../demo/stock_location.xml | 15 +++ .../i18n/barcodes_generator_location.pot | 40 +++++++ barcodes_generator_location/i18n/es.po | 44 ++++++++ barcodes_generator_location/i18n/es_ES.po | 45 ++++++++ barcodes_generator_location/i18n/fr.po | 44 ++++++++ barcodes_generator_location/i18n/hr.po | 45 ++++++++ barcodes_generator_location/i18n/nl_NL.po | 45 ++++++++ .../models/__init__.py | 6 ++ .../models/barcode_rule.py | 13 +++ .../models/stock_location.py | 11 ++ .../static/description/icon.png | Bin 0 -> 19578 bytes .../stock_location_sequence_generation.png | Bin 0 -> 67651 bytes barcodes_generator_location/tests/__init__.py | 5 + .../tests/test_barcode_generator.py | 28 +++++ .../views/stock_location.xml | 48 +++++++++ 21 files changed, 570 insertions(+) create mode 100644 barcodes_generator_location/README.rst create mode 100644 barcodes_generator_location/__init__.py create mode 100644 barcodes_generator_location/__manifest__.py create mode 100644 barcodes_generator_location/demo/barcode_rule.xml create mode 100644 barcodes_generator_location/demo/function.xml create mode 100644 barcodes_generator_location/demo/ir_sequence.xml create mode 100644 barcodes_generator_location/demo/stock_location.xml create mode 100644 barcodes_generator_location/i18n/barcodes_generator_location.pot create mode 100644 barcodes_generator_location/i18n/es.po create mode 100644 barcodes_generator_location/i18n/es_ES.po create mode 100644 barcodes_generator_location/i18n/fr.po create mode 100644 barcodes_generator_location/i18n/hr.po create mode 100644 barcodes_generator_location/i18n/nl_NL.po create mode 100644 barcodes_generator_location/models/__init__.py create mode 100644 barcodes_generator_location/models/barcode_rule.py create mode 100644 barcodes_generator_location/models/stock_location.py create mode 100644 barcodes_generator_location/static/description/icon.png create mode 100644 barcodes_generator_location/static/description/stock_location_sequence_generation.png create mode 100644 barcodes_generator_location/tests/__init__.py create mode 100644 barcodes_generator_location/tests/test_barcode_generator.py create mode 100644 barcodes_generator_location/views/stock_location.xml diff --git a/barcodes_generator_location/README.rst b/barcodes_generator_location/README.rst new file mode 100644 index 000000000000..6bdda8ef4eae --- /dev/null +++ b/barcodes_generator_location/README.rst @@ -0,0 +1,100 @@ +.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 + +===================================== +Generate Barcodes for Stock Locations +===================================== + +This module expands Odoo functionality, allowing user to generate barcode +depending on a given barcode rule for Stock Locations. + +For example, a typical pattern for partners is "042........." that means +that: +* the EAN13 code will begin by '042' +* followed by 0 digits (named Barcode Base in this module) +* a 13 digit control + +With this module, it is possible to: + +* Assign a pattern (barcode.rule) to a stock.location + +* Define a Barcode base: + * manually, if the base of the barcode must be set by a user. (typically an + internal code defined in your company) + * automatically by a sequence, if you want to let Odoo to increment a + sequence. (typical case of a customer number incrementation) + +* Generate a barcode, based on the defined pattern and the barcode base + +Configuration +============= + +To configure this module, see the 'Configuration' Section of the description +of the module 'barcodes_generator_abstract' + +Usage +===== + +To use this module, you need to: + +* Go to a Stock Location form + +1 for manual generation + * Set a Barcode Rule + * Set a Barcode Base + * click on the button 'Generate Barcode (Using Barcode Rule)' + +2 for automatic generation + * Set a Barcode Rule + * click on the button 'Generate Base (Using Sequence)' + * click on the button 'Generate Barcode (Using Barcode Rule)' + +.. image:: /barcodes_generator/static/description/stock_location_sequence_generation.png + +Try this module on Runbot + +.. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas + :alt: Try me on Runbot + :target: https://runbot.odoo-community.org/runbot/150/10.0 + +Known issues / Roadmap +====================== + +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 smash it by providing detailed and welcomed feedback. + +Credits +======= + +Images +------ + +* Icon of the module is based on the Oxygen Team work and is under LGPL licence: + http://www.iconarchive.com/show/oxygen-icons-by-oxygen-icons.org.html + +Contributors +------------ + +* Dave Lasley + +Maintainer +---------- + +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + +This module is maintained by the OCA. + +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. + +To contribute to this module, please visit https://odoo-community.org. + diff --git a/barcodes_generator_location/__init__.py b/barcodes_generator_location/__init__.py new file mode 100644 index 000000000000..a0fdc10fe11b --- /dev/null +++ b/barcodes_generator_location/__init__.py @@ -0,0 +1,2 @@ +# -*- coding: utf-8 -*- +from . import models diff --git a/barcodes_generator_location/__manifest__.py b/barcodes_generator_location/__manifest__.py new file mode 100644 index 000000000000..5fdfeefdef2a --- /dev/null +++ b/barcodes_generator_location/__manifest__.py @@ -0,0 +1,26 @@ +# -*- coding: utf-8 -*- +# Copyright 2017 LasLabs Inc. +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +{ + "name": "Generate Barcodes for Stock Locations", + "version": "10.0.1.0.0", + "category": "Tools", + "author": "LasLabs, " + "Odoo Community Association (OCA)", + "website": "https://laslabs.com", + "license": "AGPL-3", + "depends": [ + "barcodes_generator_abstract", + "stock", + ], + "data": [ + "views/stock_location.xml", + ], + "demo": [ + "demo/ir_sequence.xml", + "demo/barcode_rule.xml", + "demo/stock_location.xml", + "demo/function.xml", + ], +} diff --git a/barcodes_generator_location/demo/barcode_rule.xml b/barcodes_generator_location/demo/barcode_rule.xml new file mode 100644 index 000000000000..159782bb613e --- /dev/null +++ b/barcodes_generator_location/demo/barcode_rule.xml @@ -0,0 +1,21 @@ + + + + + + + Stock Location Rule (Generated Barcode) + + location + 998 + ean13 + 119......... + + + + + + diff --git a/barcodes_generator_location/demo/function.xml b/barcodes_generator_location/demo/function.xml new file mode 100644 index 000000000000..9f9c7c198d8b --- /dev/null +++ b/barcodes_generator_location/demo/function.xml @@ -0,0 +1,17 @@ + + + + + + + + + + diff --git a/barcodes_generator_location/demo/ir_sequence.xml b/barcodes_generator_location/demo/ir_sequence.xml new file mode 100644 index 000000000000..412d3a927f90 --- /dev/null +++ b/barcodes_generator_location/demo/ir_sequence.xml @@ -0,0 +1,15 @@ + + + + + + + Stock Location Sequence (Generated Barcode) + 10 + 1 + + + diff --git a/barcodes_generator_location/demo/stock_location.xml b/barcodes_generator_location/demo/stock_location.xml new file mode 100644 index 000000000000..3b3f5c873608 --- /dev/null +++ b/barcodes_generator_location/demo/stock_location.xml @@ -0,0 +1,15 @@ + + + + + + + Location with Generated Barcode + + internal + + + diff --git a/barcodes_generator_location/i18n/barcodes_generator_location.pot b/barcodes_generator_location/i18n/barcodes_generator_location.pot new file mode 100644 index 000000000000..3f7566d95e40 --- /dev/null +++ b/barcodes_generator_location/i18n/barcodes_generator_location.pot @@ -0,0 +1,40 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * barcodes_generator_location +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.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: barcodes_generator_location +#: model:ir.ui.view,arch_db:barcodes_generator_location.view_location_form +msgid "Generate Barcode" +msgstr "" + +#. module: barcodes_generator_location +#: model:ir.ui.view,arch_db:barcodes_generator_location.view_location_form +msgid "Generate Base (Using Sequence)" +msgstr "" + +#. module: barcodes_generator_location +#: model:stock.location,name:barcodes_generator_location.stock_location_barcode +msgid "Location with Generated Barcode" +msgstr "" + +#. module: barcodes_generator_location +#: model:ir.model,name:barcodes_generator_location.model_stock_location +msgid "Stock Location" +msgstr "" + +#. module: barcodes_generator_location +#: model:ir.model,name:barcodes_generator_location.model_barcode_rule +msgid "barcode.rule" +msgstr "" + diff --git a/barcodes_generator_location/i18n/es.po b/barcodes_generator_location/i18n/es.po new file mode 100644 index 000000000000..71ec81c18ed7 --- /dev/null +++ b/barcodes_generator_location/i18n/es.po @@ -0,0 +1,44 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * barcodes_generator_location +# +# Translators: +# enjolras , 2018 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-02-15 02:01+0000\n" +"PO-Revision-Date: 2018-02-15 02:01+0000\n" +"Last-Translator: enjolras , 2018\n" +"Language-Team: Spanish (https://www.transifex.com/oca/teams/23907/es/)\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: barcodes_generator_location +#: model:ir.ui.view,arch_db:barcodes_generator_location.view_location_form +msgid "Generate Barcode" +msgstr "" + +#. module: barcodes_generator_location +#: model:ir.ui.view,arch_db:barcodes_generator_location.view_location_form +msgid "Generate Base (Using Sequence)" +msgstr "" + +#. module: barcodes_generator_location +#: model:stock.location,name:barcodes_generator_location.stock_location_barcode +msgid "Location with Generated Barcode" +msgstr "" + +#. module: barcodes_generator_location +#: model:ir.model,name:barcodes_generator_location.model_stock_location +msgid "Stock Location" +msgstr "Ubicación de existencias" + +#. module: barcodes_generator_location +#: model:ir.model,name:barcodes_generator_location.model_barcode_rule +msgid "barcode.rule" +msgstr "barcode.rule" diff --git a/barcodes_generator_location/i18n/es_ES.po b/barcodes_generator_location/i18n/es_ES.po new file mode 100644 index 000000000000..b33783d78e76 --- /dev/null +++ b/barcodes_generator_location/i18n/es_ES.po @@ -0,0 +1,45 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * barcodes_generator_location +# +# Translators: +# Fernando Lara , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-04-12 02:40+0000\n" +"PO-Revision-Date: 2017-04-12 02:40+0000\n" +"Last-Translator: Fernando Lara , 2017\n" +"Language-Team: Spanish (Spain) (https://www.transifex.com/oca/teams/23907/" +"es_ES/)\n" +"Language: es_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: barcodes_generator_location +#: model:ir.ui.view,arch_db:barcodes_generator_location.view_location_form +msgid "Generate Barcode" +msgstr "" + +#. module: barcodes_generator_location +#: model:ir.ui.view,arch_db:barcodes_generator_location.view_location_form +msgid "Generate Base (Using Sequence)" +msgstr "" + +#. module: barcodes_generator_location +#: model:stock.location,name:barcodes_generator_location.stock_location_barcode +msgid "Location with Generated Barcode" +msgstr "" + +#. module: barcodes_generator_location +#: model:ir.model,name:barcodes_generator_location.model_stock_location +msgid "Stock Location" +msgstr "" + +#. module: barcodes_generator_location +#: model:ir.model,name:barcodes_generator_location.model_barcode_rule +msgid "barcode.rule" +msgstr "regla.barra de codigos" diff --git a/barcodes_generator_location/i18n/fr.po b/barcodes_generator_location/i18n/fr.po new file mode 100644 index 000000000000..635021fcb799 --- /dev/null +++ b/barcodes_generator_location/i18n/fr.po @@ -0,0 +1,44 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * barcodes_generator_location +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-04-12 02:40+0000\n" +"PO-Revision-Date: 2017-04-12 02:40+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: French (https://www.transifex.com/oca/teams/23907/fr/)\n" +"Language: fr\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: barcodes_generator_location +#: model:ir.ui.view,arch_db:barcodes_generator_location.view_location_form +msgid "Generate Barcode" +msgstr "" + +#. module: barcodes_generator_location +#: model:ir.ui.view,arch_db:barcodes_generator_location.view_location_form +msgid "Generate Base (Using Sequence)" +msgstr "Générer une base (via une séquence)" + +#. module: barcodes_generator_location +#: model:stock.location,name:barcodes_generator_location.stock_location_barcode +msgid "Location with Generated Barcode" +msgstr "" + +#. module: barcodes_generator_location +#: model:ir.model,name:barcodes_generator_location.model_stock_location +msgid "Stock Location" +msgstr "" + +#. module: barcodes_generator_location +#: model:ir.model,name:barcodes_generator_location.model_barcode_rule +msgid "barcode.rule" +msgstr "barcode.rule" diff --git a/barcodes_generator_location/i18n/hr.po b/barcodes_generator_location/i18n/hr.po new file mode 100644 index 000000000000..c646fc2c5269 --- /dev/null +++ b/barcodes_generator_location/i18n/hr.po @@ -0,0 +1,45 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * barcodes_generator_location +# +# Translators: +# Bole , 2018 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-02-15 02:01+0000\n" +"PO-Revision-Date: 2018-02-15 02:01+0000\n" +"Last-Translator: Bole , 2018\n" +"Language-Team: Croatian (https://www.transifex.com/oca/teams/23907/hr/)\n" +"Language: hr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" + +#. module: barcodes_generator_location +#: model:ir.ui.view,arch_db:barcodes_generator_location.view_location_form +msgid "Generate Barcode" +msgstr "Generiraj barkodove" + +#. module: barcodes_generator_location +#: model:ir.ui.view,arch_db:barcodes_generator_location.view_location_form +msgid "Generate Base (Using Sequence)" +msgstr "Generiraj osnovno ( koristi br.krug)" + +#. module: barcodes_generator_location +#: model:stock.location,name:barcodes_generator_location.stock_location_barcode +msgid "Location with Generated Barcode" +msgstr "Lokacija sa generiranim barkodom" + +#. module: barcodes_generator_location +#: model:ir.model,name:barcodes_generator_location.model_stock_location +msgid "Stock Location" +msgstr "Lokacija zalihe" + +#. module: barcodes_generator_location +#: model:ir.model,name:barcodes_generator_location.model_barcode_rule +msgid "barcode.rule" +msgstr "barcode.rule" diff --git a/barcodes_generator_location/i18n/nl_NL.po b/barcodes_generator_location/i18n/nl_NL.po new file mode 100644 index 000000000000..56ed690eb371 --- /dev/null +++ b/barcodes_generator_location/i18n/nl_NL.po @@ -0,0 +1,45 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * barcodes_generator_location +# +# Translators: +# Peter Hageman , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-07-07 15:18+0000\n" +"PO-Revision-Date: 2017-07-07 15:18+0000\n" +"Last-Translator: Peter Hageman , 2017\n" +"Language-Team: Dutch (Netherlands) (https://www.transifex.com/oca/" +"teams/23907/nl_NL/)\n" +"Language: nl_NL\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: barcodes_generator_location +#: model:ir.ui.view,arch_db:barcodes_generator_location.view_location_form +msgid "Generate Barcode" +msgstr "" + +#. module: barcodes_generator_location +#: model:ir.ui.view,arch_db:barcodes_generator_location.view_location_form +msgid "Generate Base (Using Sequence)" +msgstr "" + +#. module: barcodes_generator_location +#: model:stock.location,name:barcodes_generator_location.stock_location_barcode +msgid "Location with Generated Barcode" +msgstr "" + +#. module: barcodes_generator_location +#: model:ir.model,name:barcodes_generator_location.model_stock_location +msgid "Stock Location" +msgstr "" + +#. module: barcodes_generator_location +#: model:ir.model,name:barcodes_generator_location.model_barcode_rule +msgid "barcode.rule" +msgstr "barcode.rule" diff --git a/barcodes_generator_location/models/__init__.py b/barcodes_generator_location/models/__init__.py new file mode 100644 index 000000000000..3098a7012364 --- /dev/null +++ b/barcodes_generator_location/models/__init__.py @@ -0,0 +1,6 @@ +# -*- coding: utf-8 -*- +# Copyright 2017 LasLabs Inc. +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from . import barcode_rule +from . import stock_location diff --git a/barcodes_generator_location/models/barcode_rule.py b/barcodes_generator_location/models/barcode_rule.py new file mode 100644 index 000000000000..bb66b5f255a9 --- /dev/null +++ b/barcodes_generator_location/models/barcode_rule.py @@ -0,0 +1,13 @@ +# -*- coding: utf-8 -*- +# Copyright 2017 LasLabs Inc. +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from odoo import fields, models + + +class BarcodeRule(models.Model): + _inherit = 'barcode.rule' + + generate_model = fields.Selection( + selection_add=[('stock.location', 'Stock Location')], + ) diff --git a/barcodes_generator_location/models/stock_location.py b/barcodes_generator_location/models/stock_location.py new file mode 100644 index 000000000000..a7d1fc6d0582 --- /dev/null +++ b/barcodes_generator_location/models/stock_location.py @@ -0,0 +1,11 @@ +# -*- coding: utf-8 -*- +# Copyright 2017 LasLabs Inc. +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from odoo import models + + +class StockLocation(models.Model): + _name = 'stock.location' + _description = 'Stock Location' + _inherit = ['stock.location', 'barcode.generate.mixin'] diff --git a/barcodes_generator_location/static/description/icon.png b/barcodes_generator_location/static/description/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..07ed687542190b95e62e67316995ad8bb3dc5bd0 GIT binary patch literal 19578 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 T=I{`p2L?LjgvBr&{gVC#?g5+; literal 0 HcmV?d00001 diff --git a/barcodes_generator_location/static/description/stock_location_sequence_generation.png b/barcodes_generator_location/static/description/stock_location_sequence_generation.png new file mode 100644 index 0000000000000000000000000000000000000000..43259e9e05a6a8afe7ebd51e7a4b5f48ffe4bb7c GIT binary patch literal 67651 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

?BI}8%dtwganFPl3K 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 literal 0 HcmV?d00001 diff --git a/barcodes_generator_location/tests/__init__.py b/barcodes_generator_location/tests/__init__.py new file mode 100644 index 000000000000..c40a3a12f39d --- /dev/null +++ b/barcodes_generator_location/tests/__init__.py @@ -0,0 +1,5 @@ +# -*- coding: utf-8 -*- +# Copyright 2017 LasLabs Inc. +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from . import test_barcode_generator diff --git a/barcodes_generator_location/tests/test_barcode_generator.py b/barcodes_generator_location/tests/test_barcode_generator.py new file mode 100644 index 000000000000..3616940aea68 --- /dev/null +++ b/barcodes_generator_location/tests/test_barcode_generator.py @@ -0,0 +1,28 @@ +# -*- coding: utf-8 -*- +# Copyright 2017 LasLabs Inc. +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from odoo.tests.common import TransactionCase + + +class TestBarcodeGenerator(TransactionCase): + + def setUp(self): + super(TestBarcodeGenerator, self).setUp() + self.record = self.env.ref( + 'barcodes_generator_location.stock_location_barcode', + ) + self.record.generate_barcode() + + def test_generate_base(self): + """ It should generate the correct base for the barcode. """ + self.assertEqual( + self.record.barcode_base, 1, + ) + + def test_generate_sequence(self): + """ It should generate the correct sequence for the barcode. """ + self.assertEqual( + self.record.barcode, + "1190000000014", + ) diff --git a/barcodes_generator_location/views/stock_location.xml b/barcodes_generator_location/views/stock_location.xml new file mode 100644 index 000000000000..283047ab0714 --- /dev/null +++ b/barcodes_generator_location/views/stock_location.xml @@ -0,0 +1,48 @@ + + + + + + + stock.location + + + + + + +