From ffcf0a73ce12d7d50a1aeaf283a3630e56a1cae6 Mon Sep 17 00:00:00 2001 From: hveficent Date: Fri, 4 Jan 2019 10:53:21 +0100 Subject: [PATCH 01/11] [11.0][ADD] stock_account_change_qty_reason --- stock_account_change_qty_reason/README.rst | 87 ++++ stock_account_change_qty_reason/__init__.py | 1 + .../__manifest__.py | 21 + .../models/__init__.py | 2 + .../models/stock_inventory_line_reason.py | 16 + .../models/stock_move.py | 19 + .../readme/CONFIGURE.rst | 9 + .../readme/CONTRIBUTORS.rst | 1 + .../readme/DESCRIPTION.rst | 2 + .../static/description/index.html | 434 ++++++++++++++++++ .../tests/__init__.py | 1 + .../test_stock_account_change_qty_reason.py | 139 ++++++ .../stock_inventory_line_reason_view.xml | 16 + .../views/stock_move_view.xml | 16 + 14 files changed, 764 insertions(+) create mode 100644 stock_account_change_qty_reason/README.rst create mode 100644 stock_account_change_qty_reason/__init__.py create mode 100644 stock_account_change_qty_reason/__manifest__.py create mode 100644 stock_account_change_qty_reason/models/__init__.py create mode 100644 stock_account_change_qty_reason/models/stock_inventory_line_reason.py create mode 100644 stock_account_change_qty_reason/models/stock_move.py create mode 100644 stock_account_change_qty_reason/readme/CONFIGURE.rst create mode 100644 stock_account_change_qty_reason/readme/CONTRIBUTORS.rst create mode 100644 stock_account_change_qty_reason/readme/DESCRIPTION.rst create mode 100644 stock_account_change_qty_reason/static/description/index.html create mode 100644 stock_account_change_qty_reason/tests/__init__.py create mode 100644 stock_account_change_qty_reason/tests/test_stock_account_change_qty_reason.py create mode 100644 stock_account_change_qty_reason/views/stock_inventory_line_reason_view.xml create mode 100644 stock_account_change_qty_reason/views/stock_move_view.xml diff --git a/stock_account_change_qty_reason/README.rst b/stock_account_change_qty_reason/README.rst new file mode 100644 index 000000000..d8a0d49e1 --- /dev/null +++ b/stock_account_change_qty_reason/README.rst @@ -0,0 +1,87 @@ +==================================== +Stock Account Change Quantity Reason +==================================== + +.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png + :target: https://odoo-community.org/page/development-status + :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/11.0/stock_account_change_qty_reason + :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-11-0/stock-logistics-warehouse-11-0-stock_account_change_qty_reason + :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/11.0 + :alt: Try me on Runbot + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module extends the product stock management and allows to assign specific account +to manage changes on product quantities, either from product wizard or inventory adjustments. + +**Table of contents** + +.. contents:: + :local: + +Configuration +============= + +For a properly usage of this module, you must: + +- Ensure: Inventory > Settings > Inventory Adjustment > Preset Change Qty Reason is enabled + +To allow an Stock Manager configure accounts in preset reasons easily, you should: + +- Select Stock Manager user on: Settings > Users +- Enable: Technical Settings > Manage Stock Change Qty Preset Reasons +- Go to Inventory > Configuration > Inventory Adjustment > Change Qty Reasons + +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 +~~~~~~~ + +* Eficent + +Contributors +~~~~~~~~~~~~ + +* Héctor Villarreal + +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_account_change_qty_reason/__init__.py b/stock_account_change_qty_reason/__init__.py new file mode 100644 index 000000000..0650744f6 --- /dev/null +++ b/stock_account_change_qty_reason/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/stock_account_change_qty_reason/__manifest__.py b/stock_account_change_qty_reason/__manifest__.py new file mode 100644 index 000000000..ff2ca0397 --- /dev/null +++ b/stock_account_change_qty_reason/__manifest__.py @@ -0,0 +1,21 @@ +# Copyright 2019 Eficent Business and IT Consulting Services, S.L. +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). +{ + 'name': "Stock Account Change Quantity Reason", + 'summary': """ + Stock Account Change Quantity Reason """, + 'author': 'Eficent, Odoo Community Association (OCA)', + 'website': "https://github.com/OCA/stock-logistics-warehouse", + 'category': 'Warehouse Management', + 'version': '11.0.1.0.0', + 'license': 'AGPL-3', + 'depends': [ + 'stock_account', + 'stock_change_qty_reason' + ], + 'data': [ + 'views/stock_inventory_line_reason_view.xml', + 'views/stock_move_view.xml', + ], + 'installable': True, +} diff --git a/stock_account_change_qty_reason/models/__init__.py b/stock_account_change_qty_reason/models/__init__.py new file mode 100644 index 000000000..426227a0b --- /dev/null +++ b/stock_account_change_qty_reason/models/__init__.py @@ -0,0 +1,2 @@ +from . import stock_inventory_line_reason +from . import stock_move diff --git a/stock_account_change_qty_reason/models/stock_inventory_line_reason.py b/stock_account_change_qty_reason/models/stock_inventory_line_reason.py new file mode 100644 index 000000000..802baa960 --- /dev/null +++ b/stock_account_change_qty_reason/models/stock_inventory_line_reason.py @@ -0,0 +1,16 @@ +# Copyright 2019 Eficent Business and IT Consulting Services, S.L. +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). +from odoo import fields, models + + +class StockAccountInventoryChangeReason(models.Model): + _inherit = 'stock.inventory.line.reason' + + account_reason_input_id = fields.Many2one( + 'account.account', string="Input Account for Stock Valuation", + help="When set, it will be used as offsetting account when " + "products are received into the company.") + account_reason_output_id = fields.Many2one( + 'account.account', string="Output Account for Stock Valuation", + help="When set, it will be used as offsetting account when " + "products are issued from the company.") diff --git a/stock_account_change_qty_reason/models/stock_move.py b/stock_account_change_qty_reason/models/stock_move.py new file mode 100644 index 000000000..5da56a1ae --- /dev/null +++ b/stock_account_change_qty_reason/models/stock_move.py @@ -0,0 +1,19 @@ +# Copyright 2019 Eficent Business and IT Consulting Services, S.L. +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). +from odoo import api, models + + +class StockMove(models.Model): + _inherit = "stock.move" + + @api.multi + def _get_accounting_data_for_valuation(self): + self.ensure_one() + journal_id, acc_src, acc_dest, acc_valuation = \ + super(StockMove, self)._get_accounting_data_for_valuation() + if self.preset_reason_id: + if self.preset_reason_id.account_reason_input_id: + acc_src = self.preset_reason_id.account_reason_input_id.id + if self.preset_reason_id.account_reason_output_id: + acc_dest = self.preset_reason_id.account_reason_output_id.id + return journal_id, acc_src, acc_dest, acc_valuation diff --git a/stock_account_change_qty_reason/readme/CONFIGURE.rst b/stock_account_change_qty_reason/readme/CONFIGURE.rst new file mode 100644 index 000000000..3e9592d80 --- /dev/null +++ b/stock_account_change_qty_reason/readme/CONFIGURE.rst @@ -0,0 +1,9 @@ +For a properly usage of this module, you must: + +- Ensure: Inventory > Settings > Inventory Adjustment > Preset Change Qty Reason is enabled + +To allow an Stock Manager configure accounts in preset reasons easily, you should: + +- Select Stock Manager user on: Settings > Users +- Enable: Technical Settings > Manage Stock Change Qty Preset Reasons +- Go to Inventory > Configuration > Inventory Adjustment > Change Qty Reasons diff --git a/stock_account_change_qty_reason/readme/CONTRIBUTORS.rst b/stock_account_change_qty_reason/readme/CONTRIBUTORS.rst new file mode 100644 index 000000000..1e183639c --- /dev/null +++ b/stock_account_change_qty_reason/readme/CONTRIBUTORS.rst @@ -0,0 +1 @@ +* Héctor Villarreal diff --git a/stock_account_change_qty_reason/readme/DESCRIPTION.rst b/stock_account_change_qty_reason/readme/DESCRIPTION.rst new file mode 100644 index 000000000..9c311ce3d --- /dev/null +++ b/stock_account_change_qty_reason/readme/DESCRIPTION.rst @@ -0,0 +1,2 @@ +This module extends the product stock management and allows to assign specific account +to manage changes on product quantities, either from product wizard or inventory adjustments. diff --git a/stock_account_change_qty_reason/static/description/index.html b/stock_account_change_qty_reason/static/description/index.html new file mode 100644 index 000000000..435d1bcba --- /dev/null +++ b/stock_account_change_qty_reason/static/description/index.html @@ -0,0 +1,434 @@ + + + + + + +Stock Account Change Quantity Reason + + + +
+

Stock Account Change Quantity Reason

+ + +

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

+

This module extends the product stock management and allows to assign specific account +to manage changes on product quantities, either from product wizard or inventory adjustments.

+

Table of contents

+ +
+

Configuration

+

For a properly usage of this module, you must:

+
    +
  • Ensure: Inventory > Settings > Inventory Adjustment > Preset Change Qty Reason is enabled
  • +
+

To allow an Stock Manager configure accounts in preset reasons easily, you should:

+
    +
  • Select Stock Manager user on: Settings > Users
  • +
  • Enable: Technical Settings > Manage Stock Change Qty Preset Reasons
  • +
  • Go to Inventory > Configuration > Inventory Adjustment > Change Qty Reasons
  • +
+
+
+

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

+
    +
  • Eficent
  • +
+
+
+

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_account_change_qty_reason/tests/__init__.py b/stock_account_change_qty_reason/tests/__init__.py new file mode 100644 index 000000000..74917fe54 --- /dev/null +++ b/stock_account_change_qty_reason/tests/__init__.py @@ -0,0 +1 @@ +from . import test_stock_account_change_qty_reason diff --git a/stock_account_change_qty_reason/tests/test_stock_account_change_qty_reason.py b/stock_account_change_qty_reason/tests/test_stock_account_change_qty_reason.py new file mode 100644 index 000000000..b7a02d1b4 --- /dev/null +++ b/stock_account_change_qty_reason/tests/test_stock_account_change_qty_reason.py @@ -0,0 +1,139 @@ +# Copyright 2019 Eficent Business and IT Consulting Services, S.L. +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). + +from odoo.tests.common import SavepointCase + + +class TestStockAccountChangeQtyReason(SavepointCase): + + @classmethod + def setUpClass(cls): + super(TestStockAccountChangeQtyReason, cls).setUpClass() + + # MODELS + cls.product_product_model = cls.env['product.product'] + cls.product_category_model = cls.env['product.category'] + cls.wizard_model = cls.env['stock.change.product.qty'] + cls.preset_reason = cls.env['stock.inventory.line.reason'] + + # INSTANCES + cls.stock_valuation_account = cls.env['account.account'].create({ + 'name': 'Stock Valuation', + 'code': 'Stock Valuation', + 'user_type_id': cls.env.ref( + 'account.data_account_type_current_assets').id + }) + cls.category = cls.product_category_model.create({ + 'name': 'Physical (test)', + 'property_cost_method': 'standard', + 'property_valuation': 'real_time', + 'property_stock_valuation_account_id': + cls.stock_valuation_account + }) + + company = cls.env.ref('base.main_company') + + # Instance: account type (receivable) + cls.type_recv = cls.env.ref('account.data_account_type_receivable') + + # Instance: account type (payable) + cls.type_payable = cls.env.ref('account.data_account_type_payable') + + # account (receivable) + cls.account_input = cls.env['account.account'].create({ + 'name': 'test_account_reason_input', + 'code': '1234', + 'user_type_id': cls.type_recv.id, + 'company_id': company.id, + 'reconcile': True + }) + + # account (payable) + cls.account_output = cls.env['account.account'].create({ + 'name': 'test_account_reason_output', + 'code': '4321', + 'user_type_id': cls.type_payable.id, + 'company_id': company.id, + 'reconcile': True + }) + + cls.reason = cls.preset_reason.create({ + 'name': 'Test Reason', + 'description': 'Test Reason Description', + 'account_reason_input_id': cls.account_input.id, + 'account_reason_output_id': cls.account_output.id, + }) + + # Start Inventory with 10 units + cls.product = cls._create_product(cls, 'product_product') + cls._product_change_qty(cls, cls.product, 10) + + def _create_product(self, name): + return self.product_product_model.create({ + 'name': name, + 'categ_id': self.category.id, + 'type': 'product', + 'standard_price': 100, + }) + + def _product_change_qty(self, product, new_qty, reason=None, + preset_reason_id=None): + values = { + 'product_id': product.id, + 'new_quantity': new_qty, + } + if reason: + values = {**values, 'reason': reason} + if preset_reason_id: + values = {**values, 'preset_reason_id': preset_reason_id.id} + wizard = self.wizard_model.create(values) + wizard.change_product_qty() + + def _create_reason(self, name, description=None): + return self.preset_reason.create({ + 'name': name, + 'description': description}) + + def test_product_change_qty_account_input(self): + # update qty on hand and add reason + self._product_change_qty(self.product, 100, self.reason.name, + self.reason) + + # check stock moves and account moves created + stock_move = self.env['stock.move'].search([ + ('product_id', '=', self.product.id), + ('product_qty', '=', 90)]) + account_move = self.env['account.move'].search( + [('stock_move_id', '=', stock_move.id)]) + + # asserts + account_move_line1 = self.env['account.move.line'].search( + [('move_id', '=', account_move.id), + ('account_id', '=', self.account_input.id)]) + account_move_line2 = self.env['account.move.line'].search( + [('move_id', '=', account_move.id), + ('account_id', '=', self.stock_valuation_account.id)]) + self.assertEqual(abs(account_move_line1.balance), + abs(account_move_line2.balance)) + + def test_product_change_qty_account_output(self): + # update qty on hand and add reason + self._product_change_qty(self.product, 5, self.reason.name, + self.reason) + + # check stock moves and account moves created + stock_move = self.env['stock.move'].search([ + ('product_id', '=', self.product.id), + ('product_qty', '=', 5)]) + account_move = self.env['account.move'].search( + [('stock_move_id', '=', stock_move.id)]) + + # asserts + account_move_line3 = self.env['account.move.line'].search( + [('move_id', '=', account_move.id), + ('account_id', '=', self.account_output.id)]) + account_move_line4 = self.env['account.move.line'].search( + [('move_id', '=', account_move.id), + ('account_id', '=', self.stock_valuation_account.id)]) + self.assertEqual(abs(account_move_line3.balance), + abs(account_move_line4.balance)) diff --git a/stock_account_change_qty_reason/views/stock_inventory_line_reason_view.xml b/stock_account_change_qty_reason/views/stock_inventory_line_reason_view.xml new file mode 100644 index 000000000..1a188d206 --- /dev/null +++ b/stock_account_change_qty_reason/views/stock_inventory_line_reason_view.xml @@ -0,0 +1,16 @@ + + + + + Preset Reason Accounts + stock.inventory.line.reason + + + + + + + + + diff --git a/stock_account_change_qty_reason/views/stock_move_view.xml b/stock_account_change_qty_reason/views/stock_move_view.xml new file mode 100644 index 000000000..e6295a14e --- /dev/null +++ b/stock_account_change_qty_reason/views/stock_move_view.xml @@ -0,0 +1,16 @@ + + + + + stock.move.form + stock.move + + + + + + + + From c3335a044b510fa86ab492c13ecc47967ff3e753 Mon Sep 17 00:00:00 2001 From: oca-travis Date: Tue, 12 Mar 2019 16:48:29 +0000 Subject: [PATCH 02/11] [UPD] Update stock_account_change_qty_reason.pot --- .../i18n/stock_account_change_qty_reason.pot | 45 +++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 stock_account_change_qty_reason/i18n/stock_account_change_qty_reason.pot diff --git a/stock_account_change_qty_reason/i18n/stock_account_change_qty_reason.pot b/stock_account_change_qty_reason/i18n/stock_account_change_qty_reason.pot new file mode 100644 index 000000000..3301d0dca --- /dev/null +++ b/stock_account_change_qty_reason/i18n/stock_account_change_qty_reason.pot @@ -0,0 +1,45 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * stock_account_change_qty_reason +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 11.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_account_change_qty_reason +#: model:ir.model.fields,field_description:stock_account_change_qty_reason.field_stock_inventory_line_reason_account_reason_input_id +msgid "Input Account for Stock Valuation" +msgstr "" + +#. module: stock_account_change_qty_reason +#: model:ir.model.fields,field_description:stock_account_change_qty_reason.field_stock_inventory_line_reason_account_reason_output_id +msgid "Output Account for Stock Valuation" +msgstr "" + +#. module: stock_account_change_qty_reason +#: model:ir.model,name:stock_account_change_qty_reason.model_stock_move +msgid "Stock Move" +msgstr "" + +#. module: stock_account_change_qty_reason +#: model:ir.model.fields,help:stock_account_change_qty_reason.field_stock_inventory_line_reason_account_reason_output_id +msgid "When set, it will be used as offsetting account when products are issued from the company." +msgstr "" + +#. module: stock_account_change_qty_reason +#: model:ir.model.fields,help:stock_account_change_qty_reason.field_stock_inventory_line_reason_account_reason_input_id +msgid "When set, it will be used as offsetting account when products are received into the company." +msgstr "" + +#. module: stock_account_change_qty_reason +#: model:ir.model,name:stock_account_change_qty_reason.model_stock_inventory_line_reason +msgid "stock.inventory.line.reason" +msgstr "" + From ddd4949e693f4f15f6cc93283a6d0742191f6682 Mon Sep 17 00:00:00 2001 From: hveficent Date: Tue, 28 May 2019 16:22:59 +0200 Subject: [PATCH 03/11] [MIG] stock_account_change_qty_reason: Migration to 12.0 --- stock_account_change_qty_reason/README.rst | 10 +++++----- stock_account_change_qty_reason/__manifest__.py | 2 +- .../static/description/index.html | 8 ++++---- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/stock_account_change_qty_reason/README.rst b/stock_account_change_qty_reason/README.rst index d8a0d49e1..0cfc857d8 100644 --- a/stock_account_change_qty_reason/README.rst +++ b/stock_account_change_qty_reason/README.rst @@ -14,13 +14,13 @@ Stock Account Change Quantity Reason :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/11.0/stock_account_change_qty_reason + :target: https://github.com/OCA/stock-logistics-warehouse/tree/12.0/stock_account_change_qty_reason :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-11-0/stock-logistics-warehouse-11-0-stock_account_change_qty_reason + :target: https://translation.odoo-community.org/projects/stock-logistics-warehouse-12-0/stock-logistics-warehouse-12-0-stock_account_change_qty_reason :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/11.0 + :target: https://runbot.odoo-community.org/runbot/153/12.0 :alt: Try me on Runbot |badge1| |badge2| |badge3| |badge4| |badge5| @@ -52,7 +52,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. @@ -82,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_account_change_qty_reason/__manifest__.py b/stock_account_change_qty_reason/__manifest__.py index ff2ca0397..0dffdd6b7 100644 --- a/stock_account_change_qty_reason/__manifest__.py +++ b/stock_account_change_qty_reason/__manifest__.py @@ -7,7 +7,7 @@ 'author': 'Eficent, Odoo Community Association (OCA)', 'website': "https://github.com/OCA/stock-logistics-warehouse", 'category': 'Warehouse Management', - 'version': '11.0.1.0.0', + 'version': '12.0.1.0.0', 'license': 'AGPL-3', 'depends': [ 'stock_account', diff --git a/stock_account_change_qty_reason/static/description/index.html b/stock_account_change_qty_reason/static/description/index.html index 435d1bcba..eba145907 100644 --- a/stock_account_change_qty_reason/static/description/index.html +++ b/stock_account_change_qty_reason/static/description/index.html @@ -3,7 +3,7 @@ - + Stock Account Change Quantity Reason