From 9e6885b574fc2c073a0a63071fab858ec9c370c5 Mon Sep 17 00:00:00 2001 From: Akim Juillerat Date: Wed, 11 Sep 2019 13:14:56 +0200 Subject: [PATCH 1/7] 12.0 Add stock_location_bin_name (split from stock_location_zone) --- stock_location_bin_name/__init__.py | 1 + stock_location_bin_name/__manifest__.py | 22 ++++++++ stock_location_bin_name/models/__init__.py | 1 + .../models/stock_location.py | 52 +++++++++++++++++++ .../readme/CONTRIBUTORS.rst | 4 ++ .../readme/DESCRIPTION.rst | 2 + .../views/stock_location.xml | 13 +++++ 7 files changed, 95 insertions(+) create mode 100644 stock_location_bin_name/__init__.py create mode 100644 stock_location_bin_name/__manifest__.py create mode 100644 stock_location_bin_name/models/__init__.py create mode 100644 stock_location_bin_name/models/stock_location.py create mode 100644 stock_location_bin_name/readme/CONTRIBUTORS.rst create mode 100644 stock_location_bin_name/readme/DESCRIPTION.rst create mode 100644 stock_location_bin_name/views/stock_location.xml diff --git a/stock_location_bin_name/__init__.py b/stock_location_bin_name/__init__.py new file mode 100644 index 000000000..0650744f6 --- /dev/null +++ b/stock_location_bin_name/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/stock_location_bin_name/__manifest__.py b/stock_location_bin_name/__manifest__.py new file mode 100644 index 000000000..8b7a3f3b7 --- /dev/null +++ b/stock_location_bin_name/__manifest__.py @@ -0,0 +1,22 @@ +# Copyright 2017 Syvain Van Hoof (Okia sprl) +# Copyright 2016-2019 Jacques-Etienne Baudoux (BCIM) +# Copyright 2019 Camptocamp SA +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl) +{ + 'name': 'Stock Location Bin Name', + 'version': '12.0.1.0.0', + 'author': "BCIM, Okia, Camptocamp, Odoo Community Association (OCA)", + 'website': "https://github.com/OCA/stock-logistics-warehouse", + 'summary': "Compute bin stock location name automatically", + 'category': 'Stock Management', + 'depends': [ + 'stock_location_zone', + 'stock_location_attribute', + ], + 'data': [ + 'views/stock_location.xml', + ], + 'installable': True, + 'development_status': 'Alpha', + 'license': 'AGPL-3', +} diff --git a/stock_location_bin_name/models/__init__.py b/stock_location_bin_name/models/__init__.py new file mode 100644 index 000000000..88493e35d --- /dev/null +++ b/stock_location_bin_name/models/__init__.py @@ -0,0 +1 @@ +from . import stock_location diff --git a/stock_location_bin_name/models/stock_location.py b/stock_location_bin_name/models/stock_location.py new file mode 100644 index 000000000..d746b765c --- /dev/null +++ b/stock_location_bin_name/models/stock_location.py @@ -0,0 +1,52 @@ +# Copyright 2017 Syvain Van Hoof (Okia sprl) +# Copyright 2016-2019 Jacques-Etienne Baudoux (BCIM) +# Copyright 2019 Camptocamp SA +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl) +from odoo import api, fields, models + + +class StockLocation(models.Model): + + _inherit = 'stock.location' + + location_name_format = fields.Char( + 'Location Name Format', + help="Format string that will compute the name of the location. " + "Use location fields. Example: " + "'{area}-{corridor:0>2}.{rack:0>3}" + ".{level:0>2}'") + + area = fields.Char( + 'Area', + compute='_compute_area', + store=True, + ) + + @api.depends('name', 'location_kind', 'location_id.area') + def _compute_area(self): + for location in self: + if location.location_kind == 'area': + location.area = location.name + else: + location.area = location.location_id.area + + @api.multi + @api.onchange('corridor', 'row', 'rack', 'level', + 'posx', 'posy', 'posz') + def _onchange_attribute_compute_name(self): + for location in self: + if not location.location_kind == 'bin': + continue + area = location + while area and not area.location_name_format: + area = area.location_id + if not area: + continue + template = area.location_name_format + # We don't want to use the full browse record as it would + # give too much access to internals for the users. + # We cannot use location.read() as we may have a NewId. + # We should have the record's values in the cache at this + # point. We must be cautious not to leak an environment through + # relational fields. + location.name = template.format(**location._cache) diff --git a/stock_location_bin_name/readme/CONTRIBUTORS.rst b/stock_location_bin_name/readme/CONTRIBUTORS.rst new file mode 100644 index 000000000..0425dda61 --- /dev/null +++ b/stock_location_bin_name/readme/CONTRIBUTORS.rst @@ -0,0 +1,4 @@ +* Syvain Van Hoof (Okia sprl) +* Jacques-Etienne Baudoux (BCIM) +* Guewen Baconnier (Camptocamp) +* Akim Juillerat diff --git a/stock_location_bin_name/readme/DESCRIPTION.rst b/stock_location_bin_name/readme/DESCRIPTION.rst new file mode 100644 index 000000000..d868c822f --- /dev/null +++ b/stock_location_bin_name/readme/DESCRIPTION.rst @@ -0,0 +1,2 @@ +This module allows to compute automatically Bin location names based on +locations attributes. diff --git a/stock_location_bin_name/views/stock_location.xml b/stock_location_bin_name/views/stock_location.xml new file mode 100644 index 000000000..7bec3b6bd --- /dev/null +++ b/stock_location_bin_name/views/stock_location.xml @@ -0,0 +1,13 @@ + + + + stock.location.name.format + stock.location + + + + + + + + From 8af14c98a23d2f6b161ca4a93e950dce4f554efc Mon Sep 17 00:00:00 2001 From: Guewen Baconnier Date: Fri, 13 Sep 2019 11:35:31 +0200 Subject: [PATCH 2/7] Change the area field as a related field It is not stored because we only need it for the generation of the name. It slows creation of locations for no value. If we need to search on it, we can use a search method. --- .../models/stock_location.py | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/stock_location_bin_name/models/stock_location.py b/stock_location_bin_name/models/stock_location.py index d746b765c..3fa503d79 100644 --- a/stock_location_bin_name/models/stock_location.py +++ b/stock_location_bin_name/models/stock_location.py @@ -17,19 +17,14 @@ class StockLocation(models.Model): ".{level:0>2}'") area = fields.Char( - 'Area', - compute='_compute_area', - store=True, + string='Area', + # Field used for _onchange_attribute_compute_name, so we + # have the name in the record's cache. Does not need to be + # stored as we already have 'area_location_id' + related='area_location_id.name', + readonly=True, ) - @api.depends('name', 'location_kind', 'location_id.area') - def _compute_area(self): - for location in self: - if location.location_kind == 'area': - location.area = location.name - else: - location.area = location.location_id.area - @api.multi @api.onchange('corridor', 'row', 'rack', 'level', 'posx', 'posy', 'posz') From 1d2f33d966acac90e76287445462735798202f5d Mon Sep 17 00:00:00 2001 From: Guewen Baconnier Date: Thu, 19 Dec 2019 11:48:41 +0100 Subject: [PATCH 3/7] [IMP] stock_location_bin_name: black, isort --- stock_location_bin_name/__manifest__.py | 27 ++++++++----------- .../models/stock_location.py | 20 +++++++------- 2 files changed, 21 insertions(+), 26 deletions(-) diff --git a/stock_location_bin_name/__manifest__.py b/stock_location_bin_name/__manifest__.py index 8b7a3f3b7..23898c0c3 100644 --- a/stock_location_bin_name/__manifest__.py +++ b/stock_location_bin_name/__manifest__.py @@ -3,20 +3,15 @@ # Copyright 2019 Camptocamp SA # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl) { - 'name': 'Stock Location Bin Name', - 'version': '12.0.1.0.0', - 'author': "BCIM, Okia, Camptocamp, Odoo Community Association (OCA)", - 'website': "https://github.com/OCA/stock-logistics-warehouse", - 'summary': "Compute bin stock location name automatically", - 'category': 'Stock Management', - 'depends': [ - 'stock_location_zone', - 'stock_location_attribute', - ], - 'data': [ - 'views/stock_location.xml', - ], - 'installable': True, - 'development_status': 'Alpha', - 'license': 'AGPL-3', + "name": "Stock Location Bin Name", + "version": "12.0.1.0.0", + "author": "BCIM, Okia, Camptocamp, Odoo Community Association (OCA)", + "website": "https://github.com/OCA/stock-logistics-warehouse", + "summary": "Compute bin stock location name automatically", + "category": "Stock Management", + "depends": ["stock_location_zone", "stock_location_attribute"], + "data": ["views/stock_location.xml"], + "installable": True, + "development_status": "Alpha", + "license": "AGPL-3", } diff --git a/stock_location_bin_name/models/stock_location.py b/stock_location_bin_name/models/stock_location.py index 3fa503d79..80593687e 100644 --- a/stock_location_bin_name/models/stock_location.py +++ b/stock_location_bin_name/models/stock_location.py @@ -7,30 +7,30 @@ from odoo import api, fields, models class StockLocation(models.Model): - _inherit = 'stock.location' + _inherit = "stock.location" location_name_format = fields.Char( - 'Location Name Format', + "Location Name Format", help="Format string that will compute the name of the location. " - "Use location fields. Example: " - "'{area}-{corridor:0>2}.{rack:0>3}" - ".{level:0>2}'") + "Use location fields. Example: " + "'{area}-{corridor:0>2}.{rack:0>3}" + ".{level:0>2}'", + ) area = fields.Char( - string='Area', + string="Area", # Field used for _onchange_attribute_compute_name, so we # have the name in the record's cache. Does not need to be # stored as we already have 'area_location_id' - related='area_location_id.name', + related="area_location_id.name", readonly=True, ) @api.multi - @api.onchange('corridor', 'row', 'rack', 'level', - 'posx', 'posy', 'posz') + @api.onchange("corridor", "row", "rack", "level", "posx", "posy", "posz") def _onchange_attribute_compute_name(self): for location in self: - if not location.location_kind == 'bin': + if not location.location_kind == "bin": continue area = location while area and not area.location_name_format: From 28e8b83563d0f8affd113d3a9875063aebc072a8 Mon Sep 17 00:00:00 2001 From: Guewen Baconnier Date: Thu, 19 Dec 2019 13:13:20 +0100 Subject: [PATCH 4/7] [MIG] stock_location_bin_name: Migration to 13.0 --- stock_location_bin_name/__manifest__.py | 4 +- .../models/stock_location.py | 46 +++++++++++++------ 2 files changed, 35 insertions(+), 15 deletions(-) diff --git a/stock_location_bin_name/__manifest__.py b/stock_location_bin_name/__manifest__.py index 23898c0c3..9d81d6f3c 100644 --- a/stock_location_bin_name/__manifest__.py +++ b/stock_location_bin_name/__manifest__.py @@ -4,12 +4,12 @@ # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl) { "name": "Stock Location Bin Name", - "version": "12.0.1.0.0", + "version": "13.0.1.0.0", "author": "BCIM, Okia, Camptocamp, Odoo Community Association (OCA)", "website": "https://github.com/OCA/stock-logistics-warehouse", "summary": "Compute bin stock location name automatically", "category": "Stock Management", - "depends": ["stock_location_zone", "stock_location_attribute"], + "depends": ["stock_location_zone", "stock_location_position"], "data": ["views/stock_location.xml"], "installable": True, "development_status": "Alpha", diff --git a/stock_location_bin_name/models/stock_location.py b/stock_location_bin_name/models/stock_location.py index 80593687e..5a4c38b10 100644 --- a/stock_location_bin_name/models/stock_location.py +++ b/stock_location_bin_name/models/stock_location.py @@ -2,11 +2,38 @@ # Copyright 2016-2019 Jacques-Etienne Baudoux (BCIM) # Copyright 2019 Camptocamp SA # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl) +import string + from odoo import api, fields, models -class StockLocation(models.Model): +class PartialFormatter(string.Formatter): + def __init__(self, missing="~", bad_fmt="!"): + self.missing = missing + self.bad_fmt = bad_fmt + def get_field(self, field_name, args, kwargs): + # Handle a key not found + try: + val = super().get_field(field_name, args, kwargs) + except (KeyError, AttributeError): + val = None, field_name + return val + + def format_field(self, value, spec): + # handle an invalid format + if value is None: + return self.missing + try: + return super().format_field(value, spec) + except ValueError: + if self.bad_fmt is not None: + return self.bad_fmt + else: + raise + + +class StockLocation(models.Model): _inherit = "stock.location" location_name_format = fields.Char( @@ -14,19 +41,10 @@ class StockLocation(models.Model): help="Format string that will compute the name of the location. " "Use location fields. Example: " "'{area}-{corridor:0>2}.{rack:0>3}" - ".{level:0>2}'", + ".{level:0>2}'\n" + "Missing fields are replaced by '~' and formatting errors by '!'.", ) - area = fields.Char( - string="Area", - # Field used for _onchange_attribute_compute_name, so we - # have the name in the record's cache. Does not need to be - # stored as we already have 'area_location_id' - related="area_location_id.name", - readonly=True, - ) - - @api.multi @api.onchange("corridor", "row", "rack", "level", "posx", "posy", "posz") def _onchange_attribute_compute_name(self): for location in self: @@ -44,4 +62,6 @@ class StockLocation(models.Model): # We should have the record's values in the cache at this # point. We must be cautious not to leak an environment through # relational fields. - location.name = template.format(**location._cache) + values = dict(location._cache) + values["area"] = area.name + location.name = PartialFormatter().format(template, **values) From fb6cde34fe2bcc42bfa8bf063c06594bcbc11057 Mon Sep 17 00:00:00 2001 From: Guewen Baconnier Date: Tue, 17 Mar 2020 11:09:39 +0100 Subject: [PATCH 5/7] run pre-commit with new prettiers --- stock_location_bin_name/README.rst | 84 ++++ .../i18n/stock_location_bin_name.pot | 31 ++ .../static/description/icon.png | Bin 0 -> 9455 bytes .../static/description/index.html | 431 ++++++++++++++++++ .../views/stock_location.xml | 9 +- 5 files changed, 552 insertions(+), 3 deletions(-) create mode 100644 stock_location_bin_name/README.rst create mode 100644 stock_location_bin_name/i18n/stock_location_bin_name.pot create mode 100644 stock_location_bin_name/static/description/icon.png create mode 100644 stock_location_bin_name/static/description/index.html diff --git a/stock_location_bin_name/README.rst b/stock_location_bin_name/README.rst new file mode 100644 index 000000000..8e0344480 --- /dev/null +++ b/stock_location_bin_name/README.rst @@ -0,0 +1,84 @@ +======================= +Stock Location Bin Name +======================= + +.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! 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%2Fstock--logistics--warehouse-lightgray.png?logo=github + :target: https://github.com/OCA/stock-logistics-warehouse/tree/13.0/stock_location_bin_name + :alt: OCA/stock-logistics-warehouse +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/stock-logistics-warehouse-13-0/stock-logistics-warehouse-13-0-stock_location_bin_name + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png + :target: https://runbot.odoo-community.org/runbot/153/13.0 + :alt: Try me on Runbot + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module allows to compute automatically Bin location names based on +locations attributes. + +.. 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 +~~~~~~~ + +* BCIM +* Okia +* Camptocamp + +Contributors +~~~~~~~~~~~~ + +* Syvain Van Hoof (Okia sprl) +* Jacques-Etienne Baudoux (BCIM) +* Guewen Baconnier (Camptocamp) +* 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/stock-logistics-warehouse `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/stock_location_bin_name/i18n/stock_location_bin_name.pot b/stock_location_bin_name/i18n/stock_location_bin_name.pot new file mode 100644 index 000000000..2ced5544b --- /dev/null +++ b/stock_location_bin_name/i18n/stock_location_bin_name.pot @@ -0,0 +1,31 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * stock_location_bin_name +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 13.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: stock_location_bin_name +#: model:ir.model.fields,help:stock_location_bin_name.field_stock_location__location_name_format +msgid "" +"Format string that will compute the name of the location. Use location fields. Example: '{area}-{corridor:0>2}.{rack:0>3}.{level:0>2}'\n" +"Missing fields are replaced by '~' and formatting errors by '!'." +msgstr "" + +#. module: stock_location_bin_name +#: model:ir.model,name:stock_location_bin_name.model_stock_location +msgid "Inventory Locations" +msgstr "" + +#. module: stock_location_bin_name +#: model:ir.model.fields,field_description:stock_location_bin_name.field_stock_location__location_name_format +msgid "Location Name Format" +msgstr "" diff --git a/stock_location_bin_name/static/description/icon.png b/stock_location_bin_name/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 diff --git a/stock_location_bin_name/static/description/index.html b/stock_location_bin_name/static/description/index.html new file mode 100644 index 000000000..5939bc6e9 --- /dev/null +++ b/stock_location_bin_name/static/description/index.html @@ -0,0 +1,431 @@ + + + + + + +Stock Location Bin Name + + + +
+

Stock Location Bin Name

+ + +

Alpha License: AGPL-3 OCA/stock-logistics-warehouse Translate me on Weblate Try me on Runbot

+

This module allows to compute automatically Bin location names based on +locations attributes.

+
+

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

+
    +
  • BCIM
  • +
  • Okia
  • +
  • Camptocamp
  • +
+
+
+

Contributors

+ +
+
+

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/stock-logistics-warehouse project on GitHub.

+

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

+
+
+
+ + diff --git a/stock_location_bin_name/views/stock_location.xml b/stock_location_bin_name/views/stock_location.xml index 7bec3b6bd..9cbcdc769 100644 --- a/stock_location_bin_name/views/stock_location.xml +++ b/stock_location_bin_name/views/stock_location.xml @@ -1,12 +1,15 @@ - + stock.location.name.format stock.location - + - + From 94da4efcf2e5d9846c5815d1bfc60d15896b790e Mon Sep 17 00:00:00 2001 From: Tran Thanh Phuc Date: Wed, 10 Feb 2021 21:39:07 +0700 Subject: [PATCH 6/7] [IMP] stock_location_bin_name: black, isort, prettier --- .../odoo/addons/stock_location_bin_name | 1 + setup/stock_location_bin_name/setup.py | 6 ++++++ 2 files changed, 7 insertions(+) create mode 120000 setup/stock_location_bin_name/odoo/addons/stock_location_bin_name create mode 100644 setup/stock_location_bin_name/setup.py diff --git a/setup/stock_location_bin_name/odoo/addons/stock_location_bin_name b/setup/stock_location_bin_name/odoo/addons/stock_location_bin_name new file mode 120000 index 000000000..cb6599b26 --- /dev/null +++ b/setup/stock_location_bin_name/odoo/addons/stock_location_bin_name @@ -0,0 +1 @@ +../../../../stock_location_bin_name \ No newline at end of file diff --git a/setup/stock_location_bin_name/setup.py b/setup/stock_location_bin_name/setup.py new file mode 100644 index 000000000..28c57bb64 --- /dev/null +++ b/setup/stock_location_bin_name/setup.py @@ -0,0 +1,6 @@ +import setuptools + +setuptools.setup( + setup_requires=['setuptools-odoo'], + odoo_addon=True, +) From 3b67822977505ebc7cc43d457605060ace58597e Mon Sep 17 00:00:00 2001 From: Tran Thanh Phuc Date: Wed, 10 Feb 2021 22:27:40 +0700 Subject: [PATCH 7/7] [MIG] stock_location_bin_name: Migration to 14.0 --- stock_location_bin_name/README.rst | 27 ++++++++++--------- stock_location_bin_name/__manifest__.py | 4 +-- .../readme/CONTRIBUTORS.rst | 1 + stock_location_bin_name/readme/CREDITS.rst | 3 +++ .../static/description/index.html | 27 ++++++++++--------- 5 files changed, 36 insertions(+), 26 deletions(-) create mode 100644 stock_location_bin_name/readme/CREDITS.rst diff --git a/stock_location_bin_name/README.rst b/stock_location_bin_name/README.rst index 8e0344480..80c4b2640 100644 --- a/stock_location_bin_name/README.rst +++ b/stock_location_bin_name/README.rst @@ -7,20 +7,20 @@ Stock Location Bin Name !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -.. |badge1| image:: https://img.shields.io/badge/maturity-Alpha-red.png +.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png :target: https://odoo-community.org/page/development-status - :alt: Alpha + :alt: Beta .. |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%2Fstock--logistics--warehouse-lightgray.png?logo=github - :target: https://github.com/OCA/stock-logistics-warehouse/tree/13.0/stock_location_bin_name + :target: https://github.com/OCA/stock-logistics-warehouse/tree/14.0/stock_location_bin_name :alt: OCA/stock-logistics-warehouse .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/stock-logistics-warehouse-13-0/stock-logistics-warehouse-13-0-stock_location_bin_name + :target: https://translation.odoo-community.org/projects/stock-logistics-warehouse-14-0/stock-logistics-warehouse-14-0-stock_location_bin_name :alt: Translate me on Weblate .. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png - :target: https://runbot.odoo-community.org/runbot/153/13.0 + :target: https://runbot.odoo-community.org/runbot/153/14.0 :alt: Try me on Runbot |badge1| |badge2| |badge3| |badge4| |badge5| @@ -28,11 +28,6 @@ Stock Location Bin Name This module allows to compute automatically Bin location names based on locations attributes. -.. 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:: @@ -44,7 +39,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. @@ -65,6 +60,14 @@ Contributors * Jacques-Etienne Baudoux (BCIM) * Guewen Baconnier (Camptocamp) * Akim Juillerat +* Phuc Tran Thanh + +Other credits +~~~~~~~~~~~~~ + +The development of this module has been financially supported by: + +* Camptocamp Maintainers ~~~~~~~~~~~ @@ -79,6 +82,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/stock-logistics-warehouse `_ project on GitHub. +This module is part of the `OCA/stock-logistics-warehouse `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/stock_location_bin_name/__manifest__.py b/stock_location_bin_name/__manifest__.py index 9d81d6f3c..57a3dabd8 100644 --- a/stock_location_bin_name/__manifest__.py +++ b/stock_location_bin_name/__manifest__.py @@ -4,7 +4,7 @@ # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl) { "name": "Stock Location Bin Name", - "version": "13.0.1.0.0", + "version": "14.0.1.0.0", "author": "BCIM, Okia, Camptocamp, Odoo Community Association (OCA)", "website": "https://github.com/OCA/stock-logistics-warehouse", "summary": "Compute bin stock location name automatically", @@ -12,6 +12,6 @@ "depends": ["stock_location_zone", "stock_location_position"], "data": ["views/stock_location.xml"], "installable": True, - "development_status": "Alpha", + "development_status": "Beta", "license": "AGPL-3", } diff --git a/stock_location_bin_name/readme/CONTRIBUTORS.rst b/stock_location_bin_name/readme/CONTRIBUTORS.rst index 0425dda61..f2f6cdfd5 100644 --- a/stock_location_bin_name/readme/CONTRIBUTORS.rst +++ b/stock_location_bin_name/readme/CONTRIBUTORS.rst @@ -2,3 +2,4 @@ * Jacques-Etienne Baudoux (BCIM) * Guewen Baconnier (Camptocamp) * Akim Juillerat +* Phuc Tran Thanh diff --git a/stock_location_bin_name/readme/CREDITS.rst b/stock_location_bin_name/readme/CREDITS.rst new file mode 100644 index 000000000..f5cc070c7 --- /dev/null +++ b/stock_location_bin_name/readme/CREDITS.rst @@ -0,0 +1,3 @@ +The development of this module has been financially supported by: + +* Camptocamp diff --git a/stock_location_bin_name/static/description/index.html b/stock_location_bin_name/static/description/index.html index 5939bc6e9..0a755617e 100644 --- a/stock_location_bin_name/static/description/index.html +++ b/stock_location_bin_name/static/description/index.html @@ -3,7 +3,7 @@ - + Stock Location Bin Name