From 96b522925a5dccddae6da5af043ca0a9ad442b8d Mon Sep 17 00:00:00 2001 From: aheficent Date: Mon, 24 Dec 2018 14:02:18 +0100 Subject: [PATCH 01/12] [ADD]stock_request_analytic --- stock_request_analytic/README.rst | 64 ++++++++++++++ stock_request_analytic/__init__.py | 2 + stock_request_analytic/__manifest__.py | 24 ++++++ stock_request_analytic/models/__init__.py | 5 ++ stock_request_analytic/models/analytic.py | 12 +++ .../models/procurement_rule.py | 18 ++++ .../models/stock_request.py | 22 +++++ .../models/stock_request_order.py | 41 +++++++++ .../security/ir.model.access.csv | 2 + .../static/description/icon.png | Bin 0 -> 7510 bytes stock_request_analytic/tests/__init__.py | 2 + .../tests/test_stock_request_analytic.py | 79 ++++++++++++++++++ .../views/analytic_views.xml | 20 +++++ .../views/stock_request_order_views.xml | 29 +++++++ .../views/stock_request_views.xml | 17 ++++ 15 files changed, 337 insertions(+) create mode 100644 stock_request_analytic/README.rst create mode 100644 stock_request_analytic/__init__.py create mode 100644 stock_request_analytic/__manifest__.py create mode 100644 stock_request_analytic/models/__init__.py create mode 100644 stock_request_analytic/models/analytic.py create mode 100644 stock_request_analytic/models/procurement_rule.py create mode 100644 stock_request_analytic/models/stock_request.py create mode 100644 stock_request_analytic/models/stock_request_order.py create mode 100644 stock_request_analytic/security/ir.model.access.csv create mode 100644 stock_request_analytic/static/description/icon.png create mode 100644 stock_request_analytic/tests/__init__.py create mode 100644 stock_request_analytic/tests/test_stock_request_analytic.py create mode 100644 stock_request_analytic/views/analytic_views.xml create mode 100644 stock_request_analytic/views/stock_request_order_views.xml create mode 100644 stock_request_analytic/views/stock_request_views.xml diff --git a/stock_request_analytic/README.rst b/stock_request_analytic/README.rst new file mode 100644 index 000000000..2fadfc77b --- /dev/null +++ b/stock_request_analytic/README.rst @@ -0,0 +1,64 @@ +.. image:: https://img.shields.io/badge/licence-LGPL--3-blue.svg + :target: https://www.gnu.org/licenses/lgpl-3.0-standalone.html + :alt: License: LGPL-3 + +====================== +Stock Request Analytic +====================== + +This module allows for users to be able to display assign analytic accounts to +stock request. + + +Usage +===== + +Assign the analytic account to the stock request. + + +.. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas + :alt: Try me on Runbot + :target: https://runbot.odoo-community.org/runbot/153/11.0 + +Known issues / Roadmap +====================== + +* Integrate this module with stock_request_purchase to pass the analytic + account to the purchase order + + +Bug Tracker +=========== + +Probably the only solution to make this work in to put locations without +company. In this case the constrains defined makes no sense. + +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 +======= + +Contributors +------------ + +* Jordi Ballester . +* Enric Tobella + +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/stock_request_analytic/__init__.py b/stock_request_analytic/__init__.py new file mode 100644 index 000000000..a9e337226 --- /dev/null +++ b/stock_request_analytic/__init__.py @@ -0,0 +1,2 @@ + +from . import models diff --git a/stock_request_analytic/__manifest__.py b/stock_request_analytic/__manifest__.py new file mode 100644 index 000000000..771ec5586 --- /dev/null +++ b/stock_request_analytic/__manifest__.py @@ -0,0 +1,24 @@ +# Copyright 2017 Eficent Business and IT Consulting Services, S.L. +# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html). + +{ + "name": "Stock Request Analytic", + "summary": "Internal request for stock", + "version": "11.0.2.0.1", + "license": "LGPL-3", + "website": "https://github.com/stock-logistics-warehouse", + "author": "Eficent, " + "Odoo Community Association (OCA)", + "category": "Analytic", + "depends": [ + "stock_request", + "stock_analytic", + ], + "data": [ + "security/ir.model.access.csv", + "views/stock_request_views.xml", + "views/stock_request_order_views.xml", + "views/analytic_views.xml", + ], + "installable": True, +} diff --git a/stock_request_analytic/models/__init__.py b/stock_request_analytic/models/__init__.py new file mode 100644 index 000000000..968dd905e --- /dev/null +++ b/stock_request_analytic/models/__init__.py @@ -0,0 +1,5 @@ + +from . import analytic +from . import procurement_rule +from . import stock_request +from . import stock_request_order diff --git a/stock_request_analytic/models/analytic.py b/stock_request_analytic/models/analytic.py new file mode 100644 index 000000000..423cfb144 --- /dev/null +++ b/stock_request_analytic/models/analytic.py @@ -0,0 +1,12 @@ +# Copyright 2017 Eficent Business and IT Consulting Services, S.L. +# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html). + +from odoo import fields, models + + +class AccountAnalyticAccount(models.Model): + _inherit = 'account.analytic.account' + + stock_request_ids = fields.One2many( + comodel_name='stock.request', inverse_name='analytic_account_id', + string='Stock Requests', copy=False) diff --git a/stock_request_analytic/models/procurement_rule.py b/stock_request_analytic/models/procurement_rule.py new file mode 100644 index 000000000..c39d295cb --- /dev/null +++ b/stock_request_analytic/models/procurement_rule.py @@ -0,0 +1,18 @@ +# Copyright 2017 Eficent Business and IT Consulting Services, S.L. +# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html). + +from odoo import models + + +class ProcurementRule(models.Model): + _inherit = 'procurement.rule' + + def _get_stock_move_values(self, product_id, product_qty, product_uom, + location_id, name, origin, values, group_id): + res = super(ProcurementRule, self)._get_stock_move_values( + product_id, product_qty, product_uom, location_id, name, origin, + values, group_id) + analytic_account_id = self.env['stock.request'].browse( + values['stock_request_id']).analytic_account_id.id + res.update(analytic_account_id=analytic_account_id) + return res diff --git a/stock_request_analytic/models/stock_request.py b/stock_request_analytic/models/stock_request.py new file mode 100644 index 000000000..f00888515 --- /dev/null +++ b/stock_request_analytic/models/stock_request.py @@ -0,0 +1,22 @@ +# Copyright 2017 Eficent Business and IT Consulting Services, S.L. +# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html). + +from odoo import _, api, fields, models +from odoo.exceptions import ValidationError + + +class StockRequest(models.Model): + _inherit = "stock.request" + + analytic_account_id = fields.Many2one( + 'account.analytic.account', string='Analytic Account') + + @api.constrains('analytic_account_id') + def _check_analytic_company_constrains(self): + if any(request.company_id and + request.analytic_account_id.company_id != + request.company_id for request in self): + raise ValidationError( + _('You cannot link a analytic account ' + 'to a stock request that belongs to ' + 'another company.')) diff --git a/stock_request_analytic/models/stock_request_order.py b/stock_request_analytic/models/stock_request_order.py new file mode 100644 index 000000000..ac2fa75f8 --- /dev/null +++ b/stock_request_analytic/models/stock_request_order.py @@ -0,0 +1,41 @@ +# Copyright 2018 Creu Blanca +# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html). + +from odoo import api, fields, models + + +class StockRequestOrder(models.Model): + _inherit = 'stock.request.order' + + analytic_count = fields.Integer(string='analytic count', + compute='_compute_analytic_ids', + readonly=True) + analytic_account_ids = fields.One2many( + 'account.analytic.account', + compute='_compute_analytic_ids', + string='Analytic Accounts', + readonly=True, copy=False) + + @api.depends('stock_request_ids') + def _compute_analytic_ids(self): + for req in self.sudo(): + req.analytic_ids = req.stock_request_ids.mapped( + 'analytic_account_id') + req.analytic_account_ids = req.stock_request_ids.mapped( + 'analytic_account_id') + req.analytic_count = len(req.analytic_ids) + + @api.multi + def action_view_analytic(self): + action = self.env.ref( + 'analytic.action_account_analytic_account_form').read()[0] + analytics = self.mapped('analytic_account_ids') + if len(analytics) > 1: + action['domain'] = [('id', 'in', analytics.ids)] + elif analytics: + action['views'] = [ + (self.env.ref( + 'analytic.action_account_analytic_account_form').id, + 'form')] + action['res_id'] = analytics.id + return action diff --git a/stock_request_analytic/security/ir.model.access.csv b/stock_request_analytic/security/ir.model.access.csv new file mode 100644 index 000000000..43a1348f0 --- /dev/null +++ b/stock_request_analytic/security/ir.model.access.csv @@ -0,0 +1,2 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_stock_request_analytic_user,stock.request analytic user,stock_request.model_stock_request,analytic.group_analytic_accounting,1,0,0,0 diff --git a/stock_request_analytic/static/description/icon.png b/stock_request_analytic/static/description/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..c31ecfd9f58e3ab7e0ede0f1d56185d51074099c GIT binary patch literal 7510 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 literal 0 HcmV?d00001 diff --git a/stock_request_analytic/tests/__init__.py b/stock_request_analytic/tests/__init__.py new file mode 100644 index 000000000..7142d2e80 --- /dev/null +++ b/stock_request_analytic/tests/__init__.py @@ -0,0 +1,2 @@ + +from . import test_stock_request_analytic diff --git a/stock_request_analytic/tests/test_stock_request_analytic.py b/stock_request_analytic/tests/test_stock_request_analytic.py new file mode 100644 index 000000000..c3b28cda1 --- /dev/null +++ b/stock_request_analytic/tests/test_stock_request_analytic.py @@ -0,0 +1,79 @@ +# Copyright 2017 Eficent Business and IT Consulting Services S.L. +# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl-3.0). + +from odoo.addons.stock_request.tests import test_stock_request +from odoo import fields +from odoo.exceptions import ValidationError + + +class TestStockRequestAnalytic(test_stock_request.TestStockRequest): + def setUp(self): + super(TestStockRequestAnalytic, self).setUp() + self.analytic_model = self.env['account.analytic.account'] + self.analytic = self.analytic_model.create({'name': 'Pizza'}) + self.analytic2 = self.analytic_model.create( + {'name': 'Pizza', + 'company_id': self.company_2.id}) + self.demand_loc = self.env['stock.location'].create( + {'name': 'demand_loc', + 'location_id': self.warehouse.lot_stock_id.id, + 'usage': 'internal'}) + self.demand_route = self.env['stock.location.route'].create({ + 'name': 'Transfer', + 'product_categ_selectable': False, + 'product_selectable': True, + 'company_id': self.main_company.id, + 'sequence': 10, + }) + self.pizza = self._create_product('PZ', 'Pizza', False) + self.demand_rule = self.env['procurement.rule'].create({ + 'name': 'Transfer', + 'route_id': self.demand_route.id, + 'location_src_id': self.warehouse.lot_stock_id.id, + 'location_id': self.demand_loc.id, + 'action': 'move', + 'picking_type_id': self.warehouse.int_type_id.id, + 'procure_method': 'make_to_stock', + 'warehouse_id': self.warehouse.id, + 'company_id': self.main_company.id, + 'propagate': 'False', + }) + self.pizza.route_ids = [(6, 0, self.demand_route.ids)] + + def prepare_order_request_analytic(self, aa, company): + expected_date = fields.Date.today() + vals = { + 'company_id': company.id, + 'warehouse_id': self.warehouse.id, + 'location_id': self.demand_loc.id, + 'expected_date': expected_date, + 'stock_request_ids': [(0, 0, { + 'product_id': self.pizza.id, + 'product_uom_id': self.pizza.uom_id.id, + 'product_uom_qty': 5.0, + 'analytic_account_id': aa.id, + 'company_id': company.id, + 'warehouse_id': self.warehouse.id, + 'location_id': self.demand_loc.id, + 'expected_date': expected_date, + })] + } + return vals + + def test_stock_analytic(self): + vals = self.prepare_order_request_analytic( + self.analytic, self.main_company) + order = self.env['stock.request.order'].create(vals) + req = order.stock_request_ids + order.action_confirm() + self.assertEqual( + req.move_ids.mapped('analytic_account_id'), self.analytic) + self.assertEqual(order.analytic_count, 1) + action = order.action_view_analytic() + self.assertTrue(action['res_id'], self.analytic.id) + + def test_company(self): + with self.assertRaises(ValidationError): + vals = self.prepare_order_request_analytic( + self.analytic2, self.main_company) + self.env['stock.request.order'].create(vals) diff --git a/stock_request_analytic/views/analytic_views.xml b/stock_request_analytic/views/analytic_views.xml new file mode 100644 index 000000000..d51cc3f31 --- /dev/null +++ b/stock_request_analytic/views/analytic_views.xml @@ -0,0 +1,20 @@ + + + + + analytic.order.form + account.analytic.account + + + + + + + + + + + + + diff --git a/stock_request_analytic/views/stock_request_order_views.xml b/stock_request_analytic/views/stock_request_order_views.xml new file mode 100644 index 000000000..056cd0678 --- /dev/null +++ b/stock_request_analytic/views/stock_request_order_views.xml @@ -0,0 +1,29 @@ + + + + + + stock.request.order.form + stock.request.order + + +
+ + +
+ + + +
+
+ +
diff --git a/stock_request_analytic/views/stock_request_views.xml b/stock_request_analytic/views/stock_request_views.xml new file mode 100644 index 000000000..100bd4749 --- /dev/null +++ b/stock_request_analytic/views/stock_request_views.xml @@ -0,0 +1,17 @@ + + + + + + stock.request.form + stock.request + + + + + + + + + From 643c954b7a987f5efe0f0d2e90ca81d533eaa0a6 Mon Sep 17 00:00:00 2001 From: Lois Rilo Date: Thu, 3 Jan 2019 17:48:29 +0100 Subject: [PATCH 02/12] [11.0] stock_request_analytic: * clean views. * allow to create a stock.request with no analytic account. * remove copy attribute in non-stored field. * remove non-existing field from compute method. --- .../i18n/stock_request_analytic.pot | 59 +++++++++++++++++++ .../models/procurement_rule.py | 7 ++- .../models/stock_request.py | 5 +- .../models/stock_request_order.py | 16 ++--- .../views/stock_request_order_views.xml | 8 +-- .../views/stock_request_views.xml | 2 +- 6 files changed, 78 insertions(+), 19 deletions(-) create mode 100644 stock_request_analytic/i18n/stock_request_analytic.pot diff --git a/stock_request_analytic/i18n/stock_request_analytic.pot b/stock_request_analytic/i18n/stock_request_analytic.pot new file mode 100644 index 000000000..830d3a440 --- /dev/null +++ b/stock_request_analytic/i18n/stock_request_analytic.pot @@ -0,0 +1,59 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * stock_request_analytic +# +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_request_analytic +#: model:ir.model,name:stock_request_analytic.model_account_analytic_account +#: model:ir.model.fields,field_description:stock_request_analytic.field_stock_request_analytic_account_id +msgid "Analytic Account" +msgstr "" + +#. module: stock_request_analytic +#: model:ir.model.fields,field_description:stock_request_analytic.field_stock_request_order_analytic_account_ids +#: model:ir.ui.view,arch_db:stock_request_analytic.stock_request_order_form +msgid "Analytic Accounts" +msgstr "" + +#. module: stock_request_analytic +#: model:ir.model.fields,field_description:stock_request_analytic.field_stock_request_order_analytic_count +msgid "Analytic Count" +msgstr "" + +#. module: stock_request_analytic +#: model:ir.model,name:stock_request_analytic.model_procurement_rule +msgid "Procurement Rule" +msgstr "" + +#. module: stock_request_analytic +#: model:ir.model,name:stock_request_analytic.model_stock_request +#: model:ir.ui.view,arch_db:stock_request_analytic.view_account_analytic_account_form +msgid "Stock Request" +msgstr "" + +#. module: stock_request_analytic +#: model:ir.model,name:stock_request_analytic.model_stock_request_order +msgid "Stock Request Order" +msgstr "" + +#. module: stock_request_analytic +#: model:ir.model.fields,field_description:stock_request_analytic.field_account_analytic_account_stock_request_ids +msgid "Stock Requests" +msgstr "" + +#. module: stock_request_analytic +#: code:addons/stock_request_analytic/models/stock_request.py:19 +#, python-format +msgid "You cannot link a analytic account to a stock request that belongs to another company." +msgstr "" + diff --git a/stock_request_analytic/models/procurement_rule.py b/stock_request_analytic/models/procurement_rule.py index c39d295cb..e09a0800e 100644 --- a/stock_request_analytic/models/procurement_rule.py +++ b/stock_request_analytic/models/procurement_rule.py @@ -12,7 +12,8 @@ class ProcurementRule(models.Model): res = super(ProcurementRule, self)._get_stock_move_values( product_id, product_qty, product_uom, location_id, name, origin, values, group_id) - analytic_account_id = self.env['stock.request'].browse( - values['stock_request_id']).analytic_account_id.id - res.update(analytic_account_id=analytic_account_id) + if values.get('stock_request_id'): + analytic_account_id = self.env['stock.request'].browse( + values['stock_request_id']).analytic_account_id.id + res.update(analytic_account_id=analytic_account_id) return res diff --git a/stock_request_analytic/models/stock_request.py b/stock_request_analytic/models/stock_request.py index f00888515..a18b9be82 100644 --- a/stock_request_analytic/models/stock_request.py +++ b/stock_request_analytic/models/stock_request.py @@ -13,9 +13,8 @@ class StockRequest(models.Model): @api.constrains('analytic_account_id') def _check_analytic_company_constrains(self): - if any(request.company_id and - request.analytic_account_id.company_id != - request.company_id for request in self): + if any(r.company_id and r.analytic_account_id and + r.analytic_account_id.company_id != r.company_id for r in self): raise ValidationError( _('You cannot link a analytic account ' 'to a stock request that belongs to ' diff --git a/stock_request_analytic/models/stock_request_order.py b/stock_request_analytic/models/stock_request_order.py index ac2fa75f8..c66068f57 100644 --- a/stock_request_analytic/models/stock_request_order.py +++ b/stock_request_analytic/models/stock_request_order.py @@ -7,23 +7,23 @@ from odoo import api, fields, models class StockRequestOrder(models.Model): _inherit = 'stock.request.order' - analytic_count = fields.Integer(string='analytic count', - compute='_compute_analytic_ids', - readonly=True) + analytic_count = fields.Integer( + compute='_compute_analytic_ids', + readonly=True, + ) analytic_account_ids = fields.One2many( - 'account.analytic.account', + comodel_name='account.analytic.account', compute='_compute_analytic_ids', string='Analytic Accounts', - readonly=True, copy=False) + readonly=True, + ) @api.depends('stock_request_ids') def _compute_analytic_ids(self): for req in self.sudo(): - req.analytic_ids = req.stock_request_ids.mapped( - 'analytic_account_id') req.analytic_account_ids = req.stock_request_ids.mapped( 'analytic_account_id') - req.analytic_count = len(req.analytic_ids) + req.analytic_count = len(req.analytic_account_ids) @api.multi def action_view_analytic(self): diff --git a/stock_request_analytic/views/stock_request_order_views.xml b/stock_request_analytic/views/stock_request_order_views.xml index 056cd0678..ae7f84da5 100644 --- a/stock_request_analytic/views/stock_request_order_views.xml +++ b/stock_request_analytic/views/stock_request_order_views.xml @@ -4,7 +4,7 @@ - stock.request.order.form + stock.request.order.form - stock_request_analytic stock.request.order @@ -13,14 +13,14 @@ - + diff --git a/stock_request_analytic/views/stock_request_views.xml b/stock_request_analytic/views/stock_request_views.xml index 100bd4749..156c9d07c 100644 --- a/stock_request_analytic/views/stock_request_views.xml +++ b/stock_request_analytic/views/stock_request_views.xml @@ -9,7 +9,7 @@ - + From 6438cc0652c5d03e661e60c53b2ebc9f85be9a5e Mon Sep 17 00:00:00 2001 From: Lois Rilo Date: Thu, 11 Jul 2019 12:47:05 +0200 Subject: [PATCH 03/12] [12.0][MIG] stock_request_analytic --- stock_request_analytic/README.rst | 76 +-- stock_request_analytic/__manifest__.py | 2 +- .../i18n/stock_request_analytic.pot | 24 +- stock_request_analytic/models/__init__.py | 3 +- .../{procurement_rule.py => stock_rule.py} | 2 +- .../readme/CONTRIBUTORS.rst | 2 + stock_request_analytic/readme/DESCRIPTION.rst | 2 + stock_request_analytic/readme/ROADMAP.rst | 2 + stock_request_analytic/readme/USAGE.rst | 1 + .../static/description/index.html | 434 ++++++++++++++++++ .../tests/test_stock_request_analytic.py | 20 +- 11 files changed, 516 insertions(+), 52 deletions(-) rename stock_request_analytic/models/{procurement_rule.py => stock_rule.py} (95%) create mode 100644 stock_request_analytic/readme/CONTRIBUTORS.rst create mode 100644 stock_request_analytic/readme/DESCRIPTION.rst create mode 100644 stock_request_analytic/readme/ROADMAP.rst create mode 100644 stock_request_analytic/readme/USAGE.rst create mode 100644 stock_request_analytic/static/description/index.html diff --git a/stock_request_analytic/README.rst b/stock_request_analytic/README.rst index 2fadfc77b..900902bc4 100644 --- a/stock_request_analytic/README.rst +++ b/stock_request_analytic/README.rst @@ -1,64 +1,86 @@ -.. image:: https://img.shields.io/badge/licence-LGPL--3-blue.svg - :target: https://www.gnu.org/licenses/lgpl-3.0-standalone.html - :alt: License: LGPL-3 - ====================== Stock Request Analytic ====================== -This module allows for users to be able to display assign analytic accounts to -stock request. +.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! 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-LGPL--3-blue.png + :target: http://www.gnu.org/licenses/lgpl-3.0-standalone.html + :alt: License: LGPL-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/12.0/stock_request_analytic + :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-12-0/stock-logistics-warehouse-12-0-stock_request_analytic + :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/12.0 + :alt: Try me on Runbot + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module allows for users to be able to display and assign analytic +accounts to stock requests. + +**Table of contents** + +.. contents:: + :local: Usage ===== Assign the analytic account to the stock request. - -.. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas - :alt: Try me on Runbot - :target: https://runbot.odoo-community.org/runbot/153/11.0 - Known issues / Roadmap ====================== * Integrate this module with stock_request_purchase to pass the analytic account to the purchase order - Bug Tracker =========== -Probably the only solution to make this work in to put locations without -company. In this case the constrains defined makes no sense. - -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. +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 ------------- +~~~~~~~~~~~~ -* Jordi Ballester . -* Enric Tobella +* Aaron Henriquez +* Lois Rilo -Maintainer ----------- +Maintainers +~~~~~~~~~~~ + +This module is maintained by the OCA. .. 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. +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_request_analytic/__manifest__.py b/stock_request_analytic/__manifest__.py index 771ec5586..105f88431 100644 --- a/stock_request_analytic/__manifest__.py +++ b/stock_request_analytic/__manifest__.py @@ -4,7 +4,7 @@ { "name": "Stock Request Analytic", "summary": "Internal request for stock", - "version": "11.0.2.0.1", + "version": "12.0.1.0.0", "license": "LGPL-3", "website": "https://github.com/stock-logistics-warehouse", "author": "Eficent, " diff --git a/stock_request_analytic/i18n/stock_request_analytic.pot b/stock_request_analytic/i18n/stock_request_analytic.pot index 830d3a440..0d66ecc86 100644 --- a/stock_request_analytic/i18n/stock_request_analytic.pot +++ b/stock_request_analytic/i18n/stock_request_analytic.pot @@ -4,7 +4,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 11.0\n" +"Project-Id-Version: Odoo Server 12.0\n" "Report-Msgid-Bugs-To: \n" "Last-Translator: <>\n" "Language-Team: \n" @@ -15,29 +15,24 @@ msgstr "" #. module: stock_request_analytic #: model:ir.model,name:stock_request_analytic.model_account_analytic_account -#: model:ir.model.fields,field_description:stock_request_analytic.field_stock_request_analytic_account_id +#: model:ir.model.fields,field_description:stock_request_analytic.field_stock_request__analytic_account_id msgid "Analytic Account" msgstr "" #. module: stock_request_analytic -#: model:ir.model.fields,field_description:stock_request_analytic.field_stock_request_order_analytic_account_ids -#: model:ir.ui.view,arch_db:stock_request_analytic.stock_request_order_form +#: model:ir.model.fields,field_description:stock_request_analytic.field_stock_request_order__analytic_account_ids +#: model_terms:ir.ui.view,arch_db:stock_request_analytic.stock_request_order_form msgid "Analytic Accounts" msgstr "" #. module: stock_request_analytic -#: model:ir.model.fields,field_description:stock_request_analytic.field_stock_request_order_analytic_count +#: model:ir.model.fields,field_description:stock_request_analytic.field_stock_request_order__analytic_count msgid "Analytic Count" msgstr "" -#. module: stock_request_analytic -#: model:ir.model,name:stock_request_analytic.model_procurement_rule -msgid "Procurement Rule" -msgstr "" - #. module: stock_request_analytic #: model:ir.model,name:stock_request_analytic.model_stock_request -#: model:ir.ui.view,arch_db:stock_request_analytic.view_account_analytic_account_form +#: model_terms:ir.ui.view,arch_db:stock_request_analytic.view_account_analytic_account_form msgid "Stock Request" msgstr "" @@ -47,10 +42,15 @@ msgid "Stock Request Order" msgstr "" #. module: stock_request_analytic -#: model:ir.model.fields,field_description:stock_request_analytic.field_account_analytic_account_stock_request_ids +#: model:ir.model.fields,field_description:stock_request_analytic.field_account_analytic_account__stock_request_ids msgid "Stock Requests" msgstr "" +#. module: stock_request_analytic +#: model:ir.model,name:stock_request_analytic.model_stock_rule +msgid "Stock Rule" +msgstr "" + #. module: stock_request_analytic #: code:addons/stock_request_analytic/models/stock_request.py:19 #, python-format diff --git a/stock_request_analytic/models/__init__.py b/stock_request_analytic/models/__init__.py index 968dd905e..4a24765c7 100644 --- a/stock_request_analytic/models/__init__.py +++ b/stock_request_analytic/models/__init__.py @@ -1,5 +1,4 @@ - from . import analytic -from . import procurement_rule +from . import stock_rule from . import stock_request from . import stock_request_order diff --git a/stock_request_analytic/models/procurement_rule.py b/stock_request_analytic/models/stock_rule.py similarity index 95% rename from stock_request_analytic/models/procurement_rule.py rename to stock_request_analytic/models/stock_rule.py index e09a0800e..52bfc0869 100644 --- a/stock_request_analytic/models/procurement_rule.py +++ b/stock_request_analytic/models/stock_rule.py @@ -5,7 +5,7 @@ from odoo import models class ProcurementRule(models.Model): - _inherit = 'procurement.rule' + _inherit = "stock.rule" def _get_stock_move_values(self, product_id, product_qty, product_uom, location_id, name, origin, values, group_id): diff --git a/stock_request_analytic/readme/CONTRIBUTORS.rst b/stock_request_analytic/readme/CONTRIBUTORS.rst new file mode 100644 index 000000000..b8893d719 --- /dev/null +++ b/stock_request_analytic/readme/CONTRIBUTORS.rst @@ -0,0 +1,2 @@ +* Aaron Henriquez +* Lois Rilo diff --git a/stock_request_analytic/readme/DESCRIPTION.rst b/stock_request_analytic/readme/DESCRIPTION.rst new file mode 100644 index 000000000..259f4ba9c --- /dev/null +++ b/stock_request_analytic/readme/DESCRIPTION.rst @@ -0,0 +1,2 @@ +This module allows for users to be able to display and assign analytic +accounts to stock requests. diff --git a/stock_request_analytic/readme/ROADMAP.rst b/stock_request_analytic/readme/ROADMAP.rst new file mode 100644 index 000000000..fe59d5a8d --- /dev/null +++ b/stock_request_analytic/readme/ROADMAP.rst @@ -0,0 +1,2 @@ +* Integrate this module with stock_request_purchase to pass the analytic + account to the purchase order diff --git a/stock_request_analytic/readme/USAGE.rst b/stock_request_analytic/readme/USAGE.rst new file mode 100644 index 000000000..e9c6ebb47 --- /dev/null +++ b/stock_request_analytic/readme/USAGE.rst @@ -0,0 +1 @@ +Assign the analytic account to the stock request. diff --git a/stock_request_analytic/static/description/index.html b/stock_request_analytic/static/description/index.html new file mode 100644 index 000000000..242a4aba5 --- /dev/null +++ b/stock_request_analytic/static/description/index.html @@ -0,0 +1,434 @@ + + + + + + +Stock Request Analytic + + + +
+

Stock Request Analytic

+ + +

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

+

This module allows for users to be able to display and assign analytic +accounts to stock requests.

+

Table of contents

+ +
+

Usage

+

Assign the analytic account to the stock request.

+
+
+

Known issues / Roadmap

+
    +
  • Integrate this module with stock_request_purchase to pass the analytic +account to the purchase order
  • +
+
+
+

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_request_analytic/tests/test_stock_request_analytic.py b/stock_request_analytic/tests/test_stock_request_analytic.py index c3b28cda1..0f5c6bc42 100644 --- a/stock_request_analytic/tests/test_stock_request_analytic.py +++ b/stock_request_analytic/tests/test_stock_request_analytic.py @@ -11,13 +11,15 @@ class TestStockRequestAnalytic(test_stock_request.TestStockRequest): super(TestStockRequestAnalytic, self).setUp() self.analytic_model = self.env['account.analytic.account'] self.analytic = self.analytic_model.create({'name': 'Pizza'}) - self.analytic2 = self.analytic_model.create( - {'name': 'Pizza', - 'company_id': self.company_2.id}) - self.demand_loc = self.env['stock.location'].create( - {'name': 'demand_loc', - 'location_id': self.warehouse.lot_stock_id.id, - 'usage': 'internal'}) + self.analytic2 = self.analytic_model.create({ + 'name': 'Pizza', + 'company_id': self.company_2.id, + }) + self.demand_loc = self.env['stock.location'].create({ + 'name': 'demand_loc', + 'location_id': self.warehouse.lot_stock_id.id, + 'usage': 'internal', + }) self.demand_route = self.env['stock.location.route'].create({ 'name': 'Transfer', 'product_categ_selectable': False, @@ -26,12 +28,12 @@ class TestStockRequestAnalytic(test_stock_request.TestStockRequest): 'sequence': 10, }) self.pizza = self._create_product('PZ', 'Pizza', False) - self.demand_rule = self.env['procurement.rule'].create({ + self.demand_rule = self.env['stock.rule'].create({ 'name': 'Transfer', 'route_id': self.demand_route.id, 'location_src_id': self.warehouse.lot_stock_id.id, 'location_id': self.demand_loc.id, - 'action': 'move', + 'action': 'pull', 'picking_type_id': self.warehouse.int_type_id.id, 'procure_method': 'make_to_stock', 'warehouse_id': self.warehouse.id, From 0981f17ff12967f93b4d862763db33c30038d52d Mon Sep 17 00:00:00 2001 From: mreficent Date: Fri, 9 Aug 2019 20:40:47 +0200 Subject: [PATCH 04/12] [IMP] Simplify inheritance of states --- stock_request_analytic/models/stock_request.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/stock_request_analytic/models/stock_request.py b/stock_request_analytic/models/stock_request.py index a18b9be82..f332d8bc7 100644 --- a/stock_request_analytic/models/stock_request.py +++ b/stock_request_analytic/models/stock_request.py @@ -15,7 +15,7 @@ class StockRequest(models.Model): def _check_analytic_company_constrains(self): if any(r.company_id and r.analytic_account_id and r.analytic_account_id.company_id != r.company_id for r in self): - raise ValidationError( - _('You cannot link a analytic account ' - 'to a stock request that belongs to ' - 'another company.')) + raise ValidationError( + _('You cannot link a analytic account ' + 'to a stock request that belongs to ' + 'another company.')) From 910b0a156345394334dafe51b6e55db0741394b7 Mon Sep 17 00:00:00 2001 From: hveficent Date: Wed, 28 Aug 2019 10:36:03 +0200 Subject: [PATCH 05/12] [FIX] stock_request_*: add expected_date implicit on tests to avoid errors --- stock_request_analytic/__manifest__.py | 2 +- stock_request_analytic/tests/test_stock_request_analytic.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/stock_request_analytic/__manifest__.py b/stock_request_analytic/__manifest__.py index 105f88431..a695d829c 100644 --- a/stock_request_analytic/__manifest__.py +++ b/stock_request_analytic/__manifest__.py @@ -4,7 +4,7 @@ { "name": "Stock Request Analytic", "summary": "Internal request for stock", - "version": "12.0.1.0.0", + "version": "12.0.1.0.1", "license": "LGPL-3", "website": "https://github.com/stock-logistics-warehouse", "author": "Eficent, " diff --git a/stock_request_analytic/tests/test_stock_request_analytic.py b/stock_request_analytic/tests/test_stock_request_analytic.py index 0f5c6bc42..dff8f277d 100644 --- a/stock_request_analytic/tests/test_stock_request_analytic.py +++ b/stock_request_analytic/tests/test_stock_request_analytic.py @@ -43,7 +43,7 @@ class TestStockRequestAnalytic(test_stock_request.TestStockRequest): self.pizza.route_ids = [(6, 0, self.demand_route.ids)] def prepare_order_request_analytic(self, aa, company): - expected_date = fields.Date.today() + expected_date = fields.Datetime.now() vals = { 'company_id': company.id, 'warehouse_id': self.warehouse.id, From 3d05642b4a58bf4da1d0d4f3ad18975bf8ee7ac9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=8E=E4=BC=9F=E6=9D=B0?= <674416404@qq.com> Date: Wed, 16 Oct 2019 14:49:59 +0000 Subject: [PATCH 06/12] Added translation using Weblate (Chinese (Simplified)) --- stock_request_analytic/i18n/zh_CN.po | 59 ++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 stock_request_analytic/i18n/zh_CN.po diff --git a/stock_request_analytic/i18n/zh_CN.po b/stock_request_analytic/i18n/zh_CN.po new file mode 100644 index 000000000..26eb90adb --- /dev/null +++ b/stock_request_analytic/i18n/zh_CN.po @@ -0,0 +1,59 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * stock_request_analytic +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 12.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: zh_CN\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#. module: stock_request_analytic +#: model:ir.model,name:stock_request_analytic.model_account_analytic_account +#: model:ir.model.fields,field_description:stock_request_analytic.field_stock_request__analytic_account_id +msgid "Analytic Account" +msgstr "" + +#. module: stock_request_analytic +#: model:ir.model.fields,field_description:stock_request_analytic.field_stock_request_order__analytic_account_ids +#: model_terms:ir.ui.view,arch_db:stock_request_analytic.stock_request_order_form +msgid "Analytic Accounts" +msgstr "" + +#. module: stock_request_analytic +#: model:ir.model.fields,field_description:stock_request_analytic.field_stock_request_order__analytic_count +msgid "Analytic Count" +msgstr "" + +#. module: stock_request_analytic +#: model:ir.model,name:stock_request_analytic.model_stock_request +#: model_terms:ir.ui.view,arch_db:stock_request_analytic.view_account_analytic_account_form +msgid "Stock Request" +msgstr "" + +#. module: stock_request_analytic +#: model:ir.model,name:stock_request_analytic.model_stock_request_order +msgid "Stock Request Order" +msgstr "" + +#. module: stock_request_analytic +#: model:ir.model.fields,field_description:stock_request_analytic.field_account_analytic_account__stock_request_ids +msgid "Stock Requests" +msgstr "" + +#. module: stock_request_analytic +#: model:ir.model,name:stock_request_analytic.model_stock_rule +msgid "Stock Rule" +msgstr "" + +#. module: stock_request_analytic +#: code:addons/stock_request_analytic/models/stock_request.py:19 +#, python-format +msgid "You cannot link a analytic account to a stock request that belongs to another company." +msgstr "" From 34be487b823434be1d8201ba85a15b4428ba974c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=8E=E4=BC=9F=E6=9D=B0?= <674416404@qq.com> Date: Wed, 16 Oct 2019 14:50:22 +0000 Subject: [PATCH 07/12] Translated using Weblate (Chinese (Simplified)) Currently translated at 100.0% (8 of 8 strings) Translation: stock-logistics-warehouse-12.0/stock-logistics-warehouse-12.0-stock_request_analytic Translate-URL: https://translation.odoo-community.org/projects/stock-logistics-warehouse-12-0/stock-logistics-warehouse-12-0-stock_request_analytic/zh_CN/ --- stock_request_analytic/i18n/zh_CN.po | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/stock_request_analytic/i18n/zh_CN.po b/stock_request_analytic/i18n/zh_CN.po index 26eb90adb..90d15d301 100644 --- a/stock_request_analytic/i18n/zh_CN.po +++ b/stock_request_analytic/i18n/zh_CN.po @@ -6,54 +6,56 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 12.0\n" "Report-Msgid-Bugs-To: \n" -"Last-Translator: Automatically generated\n" +"PO-Revision-Date: 2019-10-16 15:58+0000\n" +"Last-Translator: 黎伟杰 <674416404@qq.com>\n" "Language-Team: none\n" "Language: zh_CN\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" "Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 3.8\n" #. module: stock_request_analytic #: model:ir.model,name:stock_request_analytic.model_account_analytic_account #: model:ir.model.fields,field_description:stock_request_analytic.field_stock_request__analytic_account_id msgid "Analytic Account" -msgstr "" +msgstr "分析账户" #. module: stock_request_analytic #: model:ir.model.fields,field_description:stock_request_analytic.field_stock_request_order__analytic_account_ids #: model_terms:ir.ui.view,arch_db:stock_request_analytic.stock_request_order_form msgid "Analytic Accounts" -msgstr "" +msgstr "分析账户" #. module: stock_request_analytic #: model:ir.model.fields,field_description:stock_request_analytic.field_stock_request_order__analytic_count msgid "Analytic Count" -msgstr "" +msgstr "分析数量" #. module: stock_request_analytic #: model:ir.model,name:stock_request_analytic.model_stock_request #: model_terms:ir.ui.view,arch_db:stock_request_analytic.view_account_analytic_account_form msgid "Stock Request" -msgstr "" +msgstr "库存请求" #. module: stock_request_analytic #: model:ir.model,name:stock_request_analytic.model_stock_request_order msgid "Stock Request Order" -msgstr "" +msgstr "库存请求单" #. module: stock_request_analytic #: model:ir.model.fields,field_description:stock_request_analytic.field_account_analytic_account__stock_request_ids msgid "Stock Requests" -msgstr "" +msgstr "库存请求" #. module: stock_request_analytic #: model:ir.model,name:stock_request_analytic.model_stock_rule msgid "Stock Rule" -msgstr "" +msgstr "库存规则" #. module: stock_request_analytic #: code:addons/stock_request_analytic/models/stock_request.py:19 #, python-format msgid "You cannot link a analytic account to a stock request that belongs to another company." -msgstr "" +msgstr "您无法将分析帐户链接到属于另一家公司的库存请求。" From c52c93dc3850709c64da258cc4ad64ce150086c7 Mon Sep 17 00:00:00 2001 From: Marcel Savegnago Date: Tue, 24 Mar 2020 17:42:49 +0000 Subject: [PATCH 08/12] Added translation using Weblate (Portuguese (Brazil)) --- stock_request_analytic/i18n/pt_BR.po | 59 ++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 stock_request_analytic/i18n/pt_BR.po diff --git a/stock_request_analytic/i18n/pt_BR.po b/stock_request_analytic/i18n/pt_BR.po new file mode 100644 index 000000000..ddf030fba --- /dev/null +++ b/stock_request_analytic/i18n/pt_BR.po @@ -0,0 +1,59 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * stock_request_analytic +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 12.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: pt_BR\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: stock_request_analytic +#: model:ir.model,name:stock_request_analytic.model_account_analytic_account +#: model:ir.model.fields,field_description:stock_request_analytic.field_stock_request__analytic_account_id +msgid "Analytic Account" +msgstr "" + +#. module: stock_request_analytic +#: model:ir.model.fields,field_description:stock_request_analytic.field_stock_request_order__analytic_account_ids +#: model_terms:ir.ui.view,arch_db:stock_request_analytic.stock_request_order_form +msgid "Analytic Accounts" +msgstr "" + +#. module: stock_request_analytic +#: model:ir.model.fields,field_description:stock_request_analytic.field_stock_request_order__analytic_count +msgid "Analytic Count" +msgstr "" + +#. module: stock_request_analytic +#: model:ir.model,name:stock_request_analytic.model_stock_request +#: model_terms:ir.ui.view,arch_db:stock_request_analytic.view_account_analytic_account_form +msgid "Stock Request" +msgstr "" + +#. module: stock_request_analytic +#: model:ir.model,name:stock_request_analytic.model_stock_request_order +msgid "Stock Request Order" +msgstr "" + +#. module: stock_request_analytic +#: model:ir.model.fields,field_description:stock_request_analytic.field_account_analytic_account__stock_request_ids +msgid "Stock Requests" +msgstr "" + +#. module: stock_request_analytic +#: model:ir.model,name:stock_request_analytic.model_stock_rule +msgid "Stock Rule" +msgstr "" + +#. module: stock_request_analytic +#: code:addons/stock_request_analytic/models/stock_request.py:19 +#, python-format +msgid "You cannot link a analytic account to a stock request that belongs to another company." +msgstr "" From 1a02633364a953fad7225f28db0ae7a5b6858d45 Mon Sep 17 00:00:00 2001 From: Marcel Savegnago Date: Tue, 24 Mar 2020 18:09:34 +0000 Subject: [PATCH 09/12] Translated using Weblate (Portuguese (Brazil)) Currently translated at 100.0% (8 of 8 strings) Translation: stock-logistics-warehouse-12.0/stock-logistics-warehouse-12.0-stock_request_analytic Translate-URL: https://translation.odoo-community.org/projects/stock-logistics-warehouse-12-0/stock-logistics-warehouse-12-0-stock_request_analytic/pt_BR/ --- stock_request_analytic/i18n/pt_BR.po | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/stock_request_analytic/i18n/pt_BR.po b/stock_request_analytic/i18n/pt_BR.po index ddf030fba..e0ad41243 100644 --- a/stock_request_analytic/i18n/pt_BR.po +++ b/stock_request_analytic/i18n/pt_BR.po @@ -6,54 +6,58 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 12.0\n" "Report-Msgid-Bugs-To: \n" -"Last-Translator: Automatically generated\n" +"PO-Revision-Date: 2020-03-24 18:22+0000\n" +"Last-Translator: Marcel Savegnago \n" "Language-Team: none\n" "Language: pt_BR\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 3.10\n" #. module: stock_request_analytic #: model:ir.model,name:stock_request_analytic.model_account_analytic_account #: model:ir.model.fields,field_description:stock_request_analytic.field_stock_request__analytic_account_id msgid "Analytic Account" -msgstr "" +msgstr "Conta Analítica" #. module: stock_request_analytic #: model:ir.model.fields,field_description:stock_request_analytic.field_stock_request_order__analytic_account_ids #: model_terms:ir.ui.view,arch_db:stock_request_analytic.stock_request_order_form msgid "Analytic Accounts" -msgstr "" +msgstr "Contas Analíticas" #. module: stock_request_analytic #: model:ir.model.fields,field_description:stock_request_analytic.field_stock_request_order__analytic_count msgid "Analytic Count" -msgstr "" +msgstr "Contagem Analítica" #. module: stock_request_analytic #: model:ir.model,name:stock_request_analytic.model_stock_request #: model_terms:ir.ui.view,arch_db:stock_request_analytic.view_account_analytic_account_form msgid "Stock Request" -msgstr "" +msgstr "Requisição de Estoque" #. module: stock_request_analytic #: model:ir.model,name:stock_request_analytic.model_stock_request_order msgid "Stock Request Order" -msgstr "" +msgstr "Ordens de Requisição de Estoque" #. module: stock_request_analytic #: model:ir.model.fields,field_description:stock_request_analytic.field_account_analytic_account__stock_request_ids msgid "Stock Requests" -msgstr "" +msgstr "Requisições de Estoque" #. module: stock_request_analytic #: model:ir.model,name:stock_request_analytic.model_stock_rule msgid "Stock Rule" -msgstr "" +msgstr "Regras de Estoque" #. module: stock_request_analytic #: code:addons/stock_request_analytic/models/stock_request.py:19 #, python-format msgid "You cannot link a analytic account to a stock request that belongs to another company." msgstr "" +"Você não pode vincular uma conta analítica a uma requisição de estoque que " +"pertence a outra empresa." From 1e97a86ff3bb9944cf1e3c531fdd294a166bdd87 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Marques?= Date: Wed, 10 Mar 2021 11:18:25 +0000 Subject: [PATCH 10/12] [IMP] stock_request_analytic: add analytic tags to Stock Requests TT28488 --- stock_request_analytic/i18n/pt_BR.po | 14 +++++++++++--- .../i18n/stock_request_analytic.pot | 8 +++++++- stock_request_analytic/i18n/zh_CN.po | 14 +++++++++++--- stock_request_analytic/models/stock_request.py | 2 ++ .../models/stock_request_order.py | 8 ++++++++ stock_request_analytic/models/stock_rule.py | 12 +++++++++--- .../tests/test_stock_request_analytic.py | 9 +++++++-- .../views/stock_request_order_views.xml | 1 + .../views/stock_request_views.xml | 1 + 9 files changed, 57 insertions(+), 12 deletions(-) diff --git a/stock_request_analytic/i18n/pt_BR.po b/stock_request_analytic/i18n/pt_BR.po index e0ad41243..e64161f73 100644 --- a/stock_request_analytic/i18n/pt_BR.po +++ b/stock_request_analytic/i18n/pt_BR.po @@ -1,6 +1,6 @@ # Translation of Odoo Server. # This file contains the translation of the following modules: -# * stock_request_analytic +# * stock_request_analytic # msgid "" msgstr "" @@ -33,6 +33,12 @@ msgstr "Contas Analíticas" msgid "Analytic Count" msgstr "Contagem Analítica" +#. module: stock_request_analytic +#: model:ir.model.fields,field_description:stock_request_analytic.field_stock_request__analytic_tag_ids +#: model:ir.model.fields,field_description:stock_request_analytic.field_stock_request_order__analytic_tag_ids +msgid "Analytic Tags" +msgstr "" + #. module: stock_request_analytic #: model:ir.model,name:stock_request_analytic.model_stock_request #: model_terms:ir.ui.view,arch_db:stock_request_analytic.view_account_analytic_account_form @@ -55,9 +61,11 @@ msgid "Stock Rule" msgstr "Regras de Estoque" #. module: stock_request_analytic -#: code:addons/stock_request_analytic/models/stock_request.py:19 +#: code:addons/stock_request_analytic/models/stock_request.py:21 #, python-format -msgid "You cannot link a analytic account to a stock request that belongs to another company." +msgid "" +"You cannot link a analytic account to a stock request that belongs to " +"another company." msgstr "" "Você não pode vincular uma conta analítica a uma requisição de estoque que " "pertence a outra empresa." diff --git a/stock_request_analytic/i18n/stock_request_analytic.pot b/stock_request_analytic/i18n/stock_request_analytic.pot index 0d66ecc86..7b86097a1 100644 --- a/stock_request_analytic/i18n/stock_request_analytic.pot +++ b/stock_request_analytic/i18n/stock_request_analytic.pot @@ -30,6 +30,12 @@ msgstr "" msgid "Analytic Count" msgstr "" +#. module: stock_request_analytic +#: model:ir.model.fields,field_description:stock_request_analytic.field_stock_request__analytic_tag_ids +#: model:ir.model.fields,field_description:stock_request_analytic.field_stock_request_order__analytic_tag_ids +msgid "Analytic Tags" +msgstr "" + #. module: stock_request_analytic #: model:ir.model,name:stock_request_analytic.model_stock_request #: model_terms:ir.ui.view,arch_db:stock_request_analytic.view_account_analytic_account_form @@ -52,7 +58,7 @@ msgid "Stock Rule" msgstr "" #. module: stock_request_analytic -#: code:addons/stock_request_analytic/models/stock_request.py:19 +#: code:addons/stock_request_analytic/models/stock_request.py:21 #, python-format msgid "You cannot link a analytic account to a stock request that belongs to another company." msgstr "" diff --git a/stock_request_analytic/i18n/zh_CN.po b/stock_request_analytic/i18n/zh_CN.po index 90d15d301..9e92c2160 100644 --- a/stock_request_analytic/i18n/zh_CN.po +++ b/stock_request_analytic/i18n/zh_CN.po @@ -1,6 +1,6 @@ # Translation of Odoo Server. # This file contains the translation of the following modules: -# * stock_request_analytic +# * stock_request_analytic # msgid "" msgstr "" @@ -33,6 +33,12 @@ msgstr "分析账户" msgid "Analytic Count" msgstr "分析数量" +#. module: stock_request_analytic +#: model:ir.model.fields,field_description:stock_request_analytic.field_stock_request__analytic_tag_ids +#: model:ir.model.fields,field_description:stock_request_analytic.field_stock_request_order__analytic_tag_ids +msgid "Analytic Tags" +msgstr "" + #. module: stock_request_analytic #: model:ir.model,name:stock_request_analytic.model_stock_request #: model_terms:ir.ui.view,arch_db:stock_request_analytic.view_account_analytic_account_form @@ -55,7 +61,9 @@ msgid "Stock Rule" msgstr "库存规则" #. module: stock_request_analytic -#: code:addons/stock_request_analytic/models/stock_request.py:19 +#: code:addons/stock_request_analytic/models/stock_request.py:21 #, python-format -msgid "You cannot link a analytic account to a stock request that belongs to another company." +msgid "" +"You cannot link a analytic account to a stock request that belongs to " +"another company." msgstr "您无法将分析帐户链接到属于另一家公司的库存请求。" diff --git a/stock_request_analytic/models/stock_request.py b/stock_request_analytic/models/stock_request.py index f332d8bc7..16dd4b24b 100644 --- a/stock_request_analytic/models/stock_request.py +++ b/stock_request_analytic/models/stock_request.py @@ -10,6 +10,8 @@ class StockRequest(models.Model): analytic_account_id = fields.Many2one( 'account.analytic.account', string='Analytic Account') + analytic_tag_ids = fields.Many2many( + 'account.analytic.tag', string='Analytic Tags') @api.constrains('analytic_account_id') def _check_analytic_company_constrains(self): diff --git a/stock_request_analytic/models/stock_request_order.py b/stock_request_analytic/models/stock_request_order.py index c66068f57..fc838ce89 100644 --- a/stock_request_analytic/models/stock_request_order.py +++ b/stock_request_analytic/models/stock_request_order.py @@ -17,12 +17,20 @@ class StockRequestOrder(models.Model): string='Analytic Accounts', readonly=True, ) + analytic_tag_ids = fields.One2many( + comodel_name='account.analytic.tag', + compute='_compute_analytic_ids', + string='Analytic Tags', + readonly=True, + ) @api.depends('stock_request_ids') def _compute_analytic_ids(self): for req in self.sudo(): req.analytic_account_ids = req.stock_request_ids.mapped( 'analytic_account_id') + req.analytic_tag_ids = req.stock_request_ids.mapped( + 'analytic_tag_ids') req.analytic_count = len(req.analytic_account_ids) @api.multi diff --git a/stock_request_analytic/models/stock_rule.py b/stock_request_analytic/models/stock_rule.py index 52bfc0869..fbdedd03a 100644 --- a/stock_request_analytic/models/stock_rule.py +++ b/stock_request_analytic/models/stock_rule.py @@ -13,7 +13,13 @@ class ProcurementRule(models.Model): product_id, product_qty, product_uom, location_id, name, origin, values, group_id) if values.get('stock_request_id'): - analytic_account_id = self.env['stock.request'].browse( - values['stock_request_id']).analytic_account_id.id - res.update(analytic_account_id=analytic_account_id) + stock_request = self.env['stock.request'].browse( + values['stock_request_id'] + ) + analytic_account = stock_request.analytic_account_id + analytic_tags = stock_request.analytic_tag_ids + res.update( + analytic_account_id=analytic_account.id, + analytic_tag_ids=[(4, tag.id) for tag in analytic_tags], + ) return res diff --git a/stock_request_analytic/tests/test_stock_request_analytic.py b/stock_request_analytic/tests/test_stock_request_analytic.py index dff8f277d..10b995a47 100644 --- a/stock_request_analytic/tests/test_stock_request_analytic.py +++ b/stock_request_analytic/tests/test_stock_request_analytic.py @@ -42,8 +42,9 @@ class TestStockRequestAnalytic(test_stock_request.TestStockRequest): }) self.pizza.route_ids = [(6, 0, self.demand_route.ids)] - def prepare_order_request_analytic(self, aa, company): + def prepare_order_request_analytic(self, aa, company, analytic_tags=None): expected_date = fields.Datetime.now() + analytic_tags = analytic_tags or self.env["account.analytic.tag"] vals = { 'company_id': company.id, 'warehouse_id': self.warehouse.id, @@ -54,6 +55,7 @@ class TestStockRequestAnalytic(test_stock_request.TestStockRequest): 'product_uom_id': self.pizza.uom_id.id, 'product_uom_qty': 5.0, 'analytic_account_id': aa.id, + 'analytic_tag_ids': [(4, tag.id) for tag in analytic_tags], 'company_id': company.id, 'warehouse_id': self.warehouse.id, 'location_id': self.demand_loc.id, @@ -63,13 +65,16 @@ class TestStockRequestAnalytic(test_stock_request.TestStockRequest): return vals def test_stock_analytic(self): + analytic_tag = self.env.ref('analytic.tag_contract') vals = self.prepare_order_request_analytic( - self.analytic, self.main_company) + self.analytic, self.main_company, analytic_tags=analytic_tag) order = self.env['stock.request.order'].create(vals) req = order.stock_request_ids order.action_confirm() self.assertEqual( req.move_ids.mapped('analytic_account_id'), self.analytic) + self.assertEqual( + req.move_ids.mapped('analytic_tag_ids'), analytic_tag) self.assertEqual(order.analytic_count, 1) action = order.action_view_analytic() self.assertTrue(action['res_id'], self.analytic.id) diff --git a/stock_request_analytic/views/stock_request_order_views.xml b/stock_request_analytic/views/stock_request_order_views.xml index ae7f84da5..ea7abe191 100644 --- a/stock_request_analytic/views/stock_request_order_views.xml +++ b/stock_request_analytic/views/stock_request_order_views.xml @@ -10,6 +10,7 @@
+
- - + + -
diff --git a/stock_request_analytic/views/stock_request_views.xml b/stock_request_analytic/views/stock_request_views.xml index cbf71bcc6..ce90080b2 100644 --- a/stock_request_analytic/views/stock_request_views.xml +++ b/stock_request_analytic/views/stock_request_views.xml @@ -1,18 +1,22 @@ - + - stock.request.form stock.request - + - - + + - From f74d37594ad1023a1af1e0730474b17e89b28116 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Marques?= Date: Fri, 9 Apr 2021 14:55:44 +0100 Subject: [PATCH 12/12] [MIG] stock_request_analytic: Migration to 13.0 Co-authored-by: Pimolnat Suntian TT28896 --- oca_dependencies.txt | 1 + stock_request_analytic/README.rst | 16 +++-- stock_request_analytic/__manifest__.py | 8 +-- stock_request_analytic/models/analytic.py | 15 +++- .../models/stock_request.py | 29 +++----- .../models/stock_request_order.py | 44 ++++++++---- stock_request_analytic/models/stock_rule.py | 6 +- .../readme/CONTRIBUTORS.rst | 4 ++ .../static/description/index.html | 15 ++-- .../tests/test_stock_request_analytic.py | 68 ++++++++++++++++--- .../views/analytic_views.xml | 19 ++++-- .../views/stock_request_order_views.xml | 25 ++++++- .../views/stock_request_views.xml | 5 +- 13 files changed, 183 insertions(+), 72 deletions(-) diff --git a/oca_dependencies.txt b/oca_dependencies.txt index b468c811f..56779b7ed 100644 --- a/oca_dependencies.txt +++ b/oca_dependencies.txt @@ -1,3 +1,4 @@ +account-analytic product-attribute server-env server-ux diff --git a/stock_request_analytic/README.rst b/stock_request_analytic/README.rst index 900902bc4..d04c52d0d 100644 --- a/stock_request_analytic/README.rst +++ b/stock_request_analytic/README.rst @@ -14,13 +14,13 @@ Stock Request Analytic :target: http://www.gnu.org/licenses/lgpl-3.0-standalone.html :alt: License: LGPL-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/12.0/stock_request_analytic + :target: https://github.com/OCA/stock-logistics-warehouse/tree/13.0/stock_request_analytic :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-12-0/stock-logistics-warehouse-12-0-stock_request_analytic + :target: https://translation.odoo-community.org/projects/stock-logistics-warehouse-13-0/stock-logistics-warehouse-13-0-stock_request_analytic :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/12.0 + :target: https://runbot.odoo-community.org/runbot/153/13.0 :alt: Try me on Runbot |badge1| |badge2| |badge3| |badge4| |badge5| @@ -50,7 +50,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. @@ -60,13 +60,17 @@ Credits Authors ~~~~~~~ -* Eficent +* ForgeFlow Contributors ~~~~~~~~~~~~ * Aaron Henriquez * Lois Rilo +* Pimolnat Suntian +* `Tecnativa `__: + + * João Marques Maintainers ~~~~~~~~~~~ @@ -81,6 +85,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_request_analytic/__manifest__.py b/stock_request_analytic/__manifest__.py index e335c02e3..82cbd0f9a 100644 --- a/stock_request_analytic/__manifest__.py +++ b/stock_request_analytic/__manifest__.py @@ -1,15 +1,15 @@ -# Copyright 2017 Eficent Business and IT Consulting Services, S.L. +# Copyright 2017-2020 ForgeFlow, S.L. (https://www.forgeflow.com) # License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html). { "name": "Stock Request Analytic", "summary": "Internal request for stock", - "version": "12.0.1.0.1", + "version": "13.0.1.0.0", "license": "LGPL-3", "website": "https://github.com/stock-logistics-warehouse", - "author": "Eficent, " "Odoo Community Association (OCA)", + "author": "ForgeFlow, Odoo Community Association (OCA)", "category": "Analytic", - "depends": ["stock_request", "stock_analytic",], + "depends": ["stock_request", "stock_analytic"], "data": [ "security/ir.model.access.csv", "views/stock_request_views.xml", diff --git a/stock_request_analytic/models/analytic.py b/stock_request_analytic/models/analytic.py index fbdf7b632..b0203d0f9 100644 --- a/stock_request_analytic/models/analytic.py +++ b/stock_request_analytic/models/analytic.py @@ -1,4 +1,4 @@ -# Copyright 2017 Eficent Business and IT Consulting Services, S.L. +# Copyright 2017-2020 ForgeFlow, S.L. (https://www.forgeflow.com) # License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html). from odoo import fields, models @@ -13,3 +13,16 @@ class AccountAnalyticAccount(models.Model): string="Stock Requests", copy=False, ) + + def action_view_stock_request(self): + self.ensure_one() + action = self.env.ref("stock_request.action_stock_request_form").read()[0] + requests = self.mapped("stock_request_ids") + if len(requests) > 1: + action["domain"] = [("id", "in", requests.ids)] + elif requests: + action["views"] = [ + (self.env.ref("stock_request.view_stock_request_form").id, "form") + ] + action["res_id"] = requests.id + return action diff --git a/stock_request_analytic/models/stock_request.py b/stock_request_analytic/models/stock_request.py index 658fb45cc..038a16276 100644 --- a/stock_request_analytic/models/stock_request.py +++ b/stock_request_analytic/models/stock_request.py @@ -1,30 +1,17 @@ -# Copyright 2017 Eficent Business and IT Consulting Services, S.L. +# Copyright 2017-2020 ForgeFlow, S.L. (https://www.forgeflow.com) +# Copyright 2021 Tecnativa - João Marques # License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html). -from odoo import _, api, fields, models -from odoo.exceptions import ValidationError +from odoo import fields, models class StockRequest(models.Model): _inherit = "stock.request" + _check_company_auto = True analytic_account_id = fields.Many2one( - "account.analytic.account", string="Analytic Account" + "account.analytic.account", string="Analytic Account", check_company=True, + ) + analytic_tag_ids = fields.Many2many( + "account.analytic.tag", string="Analytic Tags", check_company=True, ) - analytic_tag_ids = fields.Many2many("account.analytic.tag", string="Analytic Tags") - - @api.constrains("analytic_account_id") - def _check_analytic_company_constrains(self): - if any( - r.company_id - and r.analytic_account_id - and r.analytic_account_id.company_id != r.company_id - for r in self - ): - raise ValidationError( - _( - "You cannot link a analytic account " - "to a stock request that belongs to " - "another company." - ) - ) diff --git a/stock_request_analytic/models/stock_request_order.py b/stock_request_analytic/models/stock_request_order.py index 29f2199c2..eed38a1ae 100644 --- a/stock_request_analytic/models/stock_request_order.py +++ b/stock_request_analytic/models/stock_request_order.py @@ -1,13 +1,28 @@ # Copyright 2018 Creu Blanca # License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html). -from odoo import api, fields, models +from odoo import _, api, fields, models +from odoo.exceptions import ValidationError + +MAP_ACTIONS = { + "analytic_account": "analytic.action_account_analytic_account_form", + "analytic_tag": "analytic.account_analytic_tag_action", +} +MAP_FIELDS = { + "analytic_account": "analytic_account_ids", + "analytic_tag": "analytic_tag_ids", +} +MAP_VIEWS = { + "analytic_account": "analytic.view_account_analytic_account_form", + "analytic_tag": "analytic.account_analytic_tag_form_view", +} class StockRequestOrder(models.Model): _inherit = "stock.request.order" - analytic_count = fields.Integer(compute="_compute_analytic_ids", readonly=True,) + analytic_count = fields.Integer(compute="_compute_analytic_ids", readonly=True) + analytic_tag_count = fields.Integer(compute="_compute_analytic_ids", readonly=True) analytic_account_ids = fields.One2many( comodel_name="account.analytic.account", compute="_compute_analytic_ids", @@ -29,19 +44,22 @@ class StockRequestOrder(models.Model): ) req.analytic_tag_ids = req.stock_request_ids.mapped("analytic_tag_ids") req.analytic_count = len(req.analytic_account_ids) + req.analytic_tag_count = len(req.analytic_tag_ids) - @api.multi def action_view_analytic(self): - action = self.env.ref("analytic.action_account_analytic_account_form").read()[0] - analytics = self.mapped("analytic_account_ids") - if len(analytics) > 1: - action["domain"] = [("id", "in", analytics.ids)] - elif analytics: + self.ensure_one() + analytic_type = self.env.context.get("analytic_type") + if not analytic_type: + raise ValidationError( + _("Analytic type (analytic_type) not present in the context") + ) + action = self.env.ref(MAP_ACTIONS[analytic_type]).read()[0] + records = self.mapped(MAP_FIELDS[analytic_type]) + if len(records) > 1: + action["domain"] = [("id", "in", records.ids)] + elif records: action["views"] = [ - ( - self.env.ref("analytic.action_account_analytic_account_form").id, - "form", - ) + (self.env.ref(MAP_VIEWS[self._context["analytic_type"]]).id, "form") ] - action["res_id"] = analytics.id + action["res_id"] = records.id return action diff --git a/stock_request_analytic/models/stock_rule.py b/stock_request_analytic/models/stock_rule.py index ccae11747..8ce90f47c 100644 --- a/stock_request_analytic/models/stock_rule.py +++ b/stock_request_analytic/models/stock_rule.py @@ -1,4 +1,4 @@ -# Copyright 2017 Eficent Business and IT Consulting Services, S.L. +# Copyright 2017-2020 ForgeFlow, S.L. (https://www.forgeflow.com) # License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html). from odoo import models @@ -15,8 +15,8 @@ class ProcurementRule(models.Model): location_id, name, origin, + company_id, values, - group_id, ): res = super(ProcurementRule, self)._get_stock_move_values( product_id, @@ -25,8 +25,8 @@ class ProcurementRule(models.Model): location_id, name, origin, + company_id, values, - group_id, ) if values.get("stock_request_id"): stock_request = self.env["stock.request"].browse(values["stock_request_id"]) diff --git a/stock_request_analytic/readme/CONTRIBUTORS.rst b/stock_request_analytic/readme/CONTRIBUTORS.rst index b8893d719..decc3d3ea 100644 --- a/stock_request_analytic/readme/CONTRIBUTORS.rst +++ b/stock_request_analytic/readme/CONTRIBUTORS.rst @@ -1,2 +1,6 @@ * Aaron Henriquez * Lois Rilo +* Pimolnat Suntian +* `Tecnativa `__: + + * João Marques diff --git a/stock_request_analytic/static/description/index.html b/stock_request_analytic/static/description/index.html index 242a4aba5..39ffa27e2 100644 --- a/stock_request_analytic/static/description/index.html +++ b/stock_request_analytic/static/description/index.html @@ -3,7 +3,7 @@ - + Stock Request Analytic