[MIG] product_mrp_info: Migration to 13.0

Co-Authored-By: Héctor Villarreal Ortega <hector.villarreal@forgeflow.com>
This commit is contained in:
sudhir-erpharbor
2019-10-11 15:05:54 +05:30
committed by Héctor Vi Or
parent a1840a5ed4
commit cadc98f0d0
10 changed files with 132 additions and 117 deletions

View File

@@ -14,13 +14,13 @@ Product MRP Info
:target: http://www.gnu.org/licenses/lgpl-3.0-standalone.html :target: http://www.gnu.org/licenses/lgpl-3.0-standalone.html
:alt: License: LGPL-3 :alt: License: LGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fmanufacture-lightgray.png?logo=github .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fmanufacture-lightgray.png?logo=github
:target: https://github.com/OCA/manufacture/tree/12.0/product_mrp_info :target: https://github.com/OCA/manufacture/tree/13.0/product_mrp_info
:alt: OCA/manufacture :alt: OCA/manufacture
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/manufacture-12-0/manufacture-12-0-product_mrp_info :target: https://translation.odoo-community.org/projects/manufacture-13-0/manufacture-13-0-product_mrp_info
:alt: Translate me on Weblate :alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png .. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png
:target: https://runbot.odoo-community.org/runbot/129/12.0 :target: https://runbot.odoo-community.org/runbot/129/13.0
:alt: Try me on Runbot :alt: Try me on Runbot
|badge1| |badge2| |badge3| |badge4| |badge5| |badge1| |badge2| |badge3| |badge4| |badge5|
@@ -45,7 +45,7 @@ Bug Tracker
Bugs are tracked on `GitHub Issues <https://github.com/OCA/manufacture/issues>`_. Bugs are tracked on `GitHub Issues <https://github.com/OCA/manufacture/issues>`_.
In case of trouble, please check there if your issue has already been reported. In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us smashing it by providing a detailed and welcomed If you spotted it first, help us smashing it by providing a detailed and welcomed
`feedback <https://github.com/OCA/manufacture/issues/new?body=module:%20product_mrp_info%0Aversion:%2012.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_. `feedback <https://github.com/OCA/manufacture/issues/new?body=module:%20product_mrp_info%0Aversion:%2013.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
Do not contact contributors directly about support or help with technical issues. Do not contact contributors directly about support or help with technical issues.
@@ -55,12 +55,13 @@ Credits
Authors Authors
~~~~~~~ ~~~~~~~
* Eficent * ForgeFlow
Contributors Contributors
~~~~~~~~~~~~ ~~~~~~~~~~~~
* Lois Rilo <lois.rilo@eficent.com> * Lois Rilo <lois.rilo@forgeflow.com>
* Sudhir Arya <sudhir@erpharbor.com>
Maintainers Maintainers
~~~~~~~~~~~ ~~~~~~~~~~~
@@ -75,14 +76,14 @@ OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and mission is to support the collaborative development of Odoo features and
promote its widespread use. promote its widespread use.
.. |maintainer-lreficent| image:: https://github.com/lreficent.png?size=40px .. |maintainer-LoisRForgeFlow| image:: https://github.com/LoisRForgeFlow.png?size=40px
:target: https://github.com/lreficent :target: https://github.com/LoisRForgeFlow
:alt: lreficent :alt: LoisRForgeFlow
Current `maintainer <https://odoo-community.org/page/maintainer-role>`__: Current `maintainer <https://odoo-community.org/page/maintainer-role>`__:
|maintainer-lreficent| |maintainer-LoisRForgeFlow|
This module is part of the `OCA/manufacture <https://github.com/OCA/manufacture/tree/12.0/product_mrp_info>`_ project on GitHub. This module is part of the `OCA/manufacture <https://github.com/OCA/manufacture/tree/13.0/product_mrp_info>`_ project on GitHub.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

View File

@@ -1,23 +1,19 @@
# Copyright 2019 Eficent Business and IT Consulting Services S.L. # Copyright 2019 ForgeFlow S.L.
# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html). # License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html).
{ {
"name": "Product MRP Info", "name": "Product MRP Info",
"version": "12.0.1.0.0", "version": "13.0.1.0.0",
"development_status": "Beta", "development_status": "Beta",
"license": "LGPL-3", "license": "LGPL-3",
"author": "Eficent, Odoo Community Association (OCA)", "author": "ForgeFlow, Odoo Community Association (OCA)",
"maintainers": ["lreficent"], "maintainers": ["LoisRForgeFlow"],
"summary": "Adds smart button in product form view linking to " "summary": "Adds smart button in product form view linking to "
"manufacturing order list.", "manufacturing order list.",
"website": "https://github.com/OCA/manufacture", "website": "https://github.com/OCA/manufacture",
"category": "Manufacturing", "category": "Manufacturing",
"depends": [ "depends": ["mrp"],
"mrp", "data": ["views/product_views.xml"],
],
"data": [
"views/product_views.xml",
],
"installable": True, "installable": True,
"application": False, "application": False,
} }

View File

@@ -4,9 +4,9 @@
# #
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Odoo Server 12.0\n" "Project-Id-Version: Odoo Server 13.0\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"Last-Translator: <>\n" "Last-Translator: \n"
"Language-Team: \n" "Language-Team: \n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
@@ -40,4 +40,3 @@ msgstr ""
#: model:ir.model,name:product_mrp_info.model_product_template #: model:ir.model,name:product_mrp_info.model_product_template
msgid "Product Template" msgid "Product Template"
msgstr "" msgstr ""

View File

@@ -1,26 +1,26 @@
# Copyright 2019 Eficent Business and IT Consulting Services S.L. # Copyright 2019 ForgeFlow S.L.
# - Lois Rilo Antelo <lois.rilo@eficent.com> # - Lois Rilo Antelo <lois.rilo@forgeflow.com>
# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html). # License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html).
from odoo import api, fields, models from odoo import fields, models
class ProductTemplate(models.Model): class ProductTemplate(models.Model):
_inherit = "product.template" _inherit = "product.template"
mo_count = fields.Integer( mo_count = fields.Integer(
string="# Manufacturing Orders", string="# Manufacturing Orders", compute="_compute_mo_count",
compute="_compute_mo_count",
) )
@api.multi
def _compute_mo_count(self): def _compute_mo_count(self):
read_group_res = self.env["mrp.production"].read_group( read_group_res = self.env["mrp.production"].read_group(
[("product_id", "in", self.mapped("product_variant_ids").ids)], [("product_id", "in", self.mapped("product_variant_ids").ids)],
["product_id"], ["product_id"]) ["product_id"],
mapped_data = dict( ["product_id"],
[(data["product_id"][0], data["product_id_count"]) for data in )
read_group_res]) mapped_data = {
data["product_id"][0]: data["product_id_count"] for data in read_group_res
}
for rec in self: for rec in self:
count = 0 count = 0
for variant in rec.mapped("product_variant_ids"): for variant in rec.mapped("product_variant_ids"):
@@ -39,20 +39,19 @@ class ProductProduct(models.Model):
_inherit = "product.product" _inherit = "product.product"
mo_count = fields.Integer( mo_count = fields.Integer(
string="# Manufacturing Orders", string="# Manufacturing Orders", compute="_compute_mo_count",
compute="_compute_mo_count",
) )
def _compute_mo_count(self): def _compute_mo_count(self):
read_group_res = self.env["mrp.production"].read_group( read_group_res = self.env["mrp.production"].read_group(
[("product_id", "in", self.ids)], ["product_id"], ["product_id"]) [("product_id", "in", self.ids)], ["product_id"], ["product_id"]
mapped_data = dict( )
[(data["product_id"][0], data["product_id_count"]) for data in mapped_data = {
read_group_res]) data["product_id"][0]: data["product_id_count"] for data in read_group_res
}
for product in self: for product in self:
product.mo_count = mapped_data.get(product.id, 0) product.mo_count = mapped_data.get(product.id, 0)
@api.multi
def action_view_mrp_productions(self): def action_view_mrp_productions(self):
product_ids = self.ids product_ids = self.ids
action = self.env.ref("mrp.act_product_mrp_production").read()[0] action = self.env.ref("mrp.act_product_mrp_production").read()[0]

View File

@@ -1 +1,2 @@
* Lois Rilo <lois.rilo@eficent.com> * Lois Rilo <lois.rilo@forgeflow.com>
* Sudhir Arya <sudhir@erpharbor.com>

View File

@@ -367,7 +367,7 @@ ul.auto-toc {
!! This file is generated by oca-gen-addon-readme !! !! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !! !! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<p><a class="reference external" href="https://odoo-community.org/page/development-status"><img alt="Beta" src="https://img.shields.io/badge/maturity-Beta-yellow.png" /></a> <a class="reference external" href="http://www.gnu.org/licenses/lgpl-3.0-standalone.html"><img alt="License: LGPL-3" src="https://img.shields.io/badge/licence-LGPL--3-blue.png" /></a> <a class="reference external" href="https://github.com/OCA/manufacture/tree/12.0/product_mrp_info"><img alt="OCA/manufacture" src="https://img.shields.io/badge/github-OCA%2Fmanufacture-lightgray.png?logo=github" /></a> <a class="reference external" href="https://translation.odoo-community.org/projects/manufacture-12-0/manufacture-12-0-product_mrp_info"><img alt="Translate me on Weblate" src="https://img.shields.io/badge/weblate-Translate%20me-F47D42.png" /></a> <a class="reference external" href="https://runbot.odoo-community.org/runbot/129/12.0"><img alt="Try me on Runbot" src="https://img.shields.io/badge/runbot-Try%20me-875A7B.png" /></a></p> <p><a class="reference external" href="https://odoo-community.org/page/development-status"><img alt="Beta" src="https://img.shields.io/badge/maturity-Beta-yellow.png" /></a> <a class="reference external" href="http://www.gnu.org/licenses/lgpl-3.0-standalone.html"><img alt="License: LGPL-3" src="https://img.shields.io/badge/licence-LGPL--3-blue.png" /></a> <a class="reference external" href="https://github.com/OCA/manufacture/tree/13.0/product_mrp_info"><img alt="OCA/manufacture" src="https://img.shields.io/badge/github-OCA%2Fmanufacture-lightgray.png?logo=github" /></a> <a class="reference external" href="https://translation.odoo-community.org/projects/manufacture-13-0/manufacture-13-0-product_mrp_info"><img alt="Translate me on Weblate" src="https://img.shields.io/badge/weblate-Translate%20me-F47D42.png" /></a> <a class="reference external" href="https://runbot.odoo-community.org/runbot/129/13.0"><img alt="Try me on Runbot" src="https://img.shields.io/badge/runbot-Try%20me-875A7B.png" /></a></p>
<p>Adds smart button in product form view linking to manufacturing order list.</p> <p>Adds smart button in product form view linking to manufacturing order list.</p>
<p><strong>Table of contents</strong></p> <p><strong>Table of contents</strong></p>
<div class="contents local topic" id="contents"> <div class="contents local topic" id="contents">
@@ -393,7 +393,7 @@ product.</p>
<p>Bugs are tracked on <a class="reference external" href="https://github.com/OCA/manufacture/issues">GitHub Issues</a>. <p>Bugs are tracked on <a class="reference external" href="https://github.com/OCA/manufacture/issues">GitHub Issues</a>.
In case of trouble, please check there if your issue has already been reported. In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us smashing it by providing a detailed and welcomed If you spotted it first, help us smashing it by providing a detailed and welcomed
<a class="reference external" href="https://github.com/OCA/manufacture/issues/new?body=module:%20product_mrp_info%0Aversion:%2012.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**">feedback</a>.</p> <a class="reference external" href="https://github.com/OCA/manufacture/issues/new?body=module:%20product_mrp_info%0Aversion:%2013.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**">feedback</a>.</p>
<p>Do not contact contributors directly about support or help with technical issues.</p> <p>Do not contact contributors directly about support or help with technical issues.</p>
</div> </div>
<div class="section" id="credits"> <div class="section" id="credits">
@@ -401,13 +401,14 @@ If you spotted it first, help us smashing it by providing a detailed and welcome
<div class="section" id="authors"> <div class="section" id="authors">
<h2><a class="toc-backref" href="#id4">Authors</a></h2> <h2><a class="toc-backref" href="#id4">Authors</a></h2>
<ul class="simple"> <ul class="simple">
<li>Eficent</li> <li>ForgeFlow</li>
</ul> </ul>
</div> </div>
<div class="section" id="contributors"> <div class="section" id="contributors">
<h2><a class="toc-backref" href="#id5">Contributors</a></h2> <h2><a class="toc-backref" href="#id5">Contributors</a></h2>
<ul class="simple"> <ul class="simple">
<li>Lois Rilo &lt;<a class="reference external" href="mailto:lois.rilo&#64;eficent.com">lois.rilo&#64;eficent.com</a>&gt;</li> <li>Lois Rilo &lt;<a class="reference external" href="mailto:lois.rilo&#64;forgeflow.com">lois.rilo&#64;forgeflow.com</a>&gt;</li>
<li>Sudhir Arya &lt;<a class="reference external" href="mailto:sudhir&#64;erpharbor.com">sudhir&#64;erpharbor.com</a>&gt;</li>
</ul> </ul>
</div> </div>
<div class="section" id="maintainers"> <div class="section" id="maintainers">
@@ -418,8 +419,8 @@ If you spotted it first, help us smashing it by providing a detailed and welcome
mission is to support the collaborative development of Odoo features and mission is to support the collaborative development of Odoo features and
promote its widespread use.</p> promote its widespread use.</p>
<p>Current <a class="reference external" href="https://odoo-community.org/page/maintainer-role">maintainer</a>:</p> <p>Current <a class="reference external" href="https://odoo-community.org/page/maintainer-role">maintainer</a>:</p>
<p><a class="reference external" href="https://github.com/lreficent"><img alt="lreficent" src="https://github.com/lreficent.png?size=40px" /></a></p> <p><a class="reference external" href="https://github.com/LoisRForgeFlow"><img alt="LoisRForgeFlow" src="https://github.com/LoisRForgeFlow.png?size=40px" /></a></p>
<p>This module is part of the <a class="reference external" href="https://github.com/OCA/manufacture/tree/12.0/product_mrp_info">OCA/manufacture</a> project on GitHub.</p> <p>This module is part of the <a class="reference external" href="https://github.com/OCA/manufacture/tree/13.0/product_mrp_info">OCA/manufacture</a> project on GitHub.</p>
<p>You are welcome to contribute. To learn how please visit <a class="reference external" href="https://odoo-community.org/page/Contribute">https://odoo-community.org/page/Contribute</a>.</p> <p>You are welcome to contribute. To learn how please visit <a class="reference external" href="https://odoo-community.org/page/Contribute">https://odoo-community.org/page/Contribute</a>.</p>
</div> </div>
</div> </div>

View File

@@ -1,11 +1,10 @@
# Copyright 2019 Eficent Business and IT Consulting Services, S.L. # Copyright 2019 ForgeFlow S.L.
# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html). # License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html).
from odoo.tests.common import TransactionCase from odoo.tests.common import TransactionCase
class TestProductMrpInfo(TransactionCase): class TestProductMrpInfo(TransactionCase):
def setUp(self): def setUp(self):
super().setUp() super().setUp()
self.pt_obj = self.env["product.template"] self.pt_obj = self.env["product.template"]
@@ -14,57 +13,66 @@ class TestProductMrpInfo(TransactionCase):
self.bom_obj = self.env["mrp.bom"] self.bom_obj = self.env["mrp.bom"]
self.boml_obj = self.env["mrp.bom.line"] self.boml_obj = self.env["mrp.bom.line"]
self.manufacture_route = self.env.ref( self.manufacture_route = self.env.ref("mrp.route_warehouse0_manufacture")
"mrp.route_warehouse0_manufacture")
self.attribute = self.env["product.attribute"].create({ self.attribute = self.env["product.attribute"].create(
"name": "Test Attribute", {"name": "Test Attribute", "create_variant": "always"}
"create_variant": "always", )
}) self.value1 = self.env["product.attribute.value"].create(
self.value1 = self.env["product.attribute.value"].create({ {"name": "Value 1", "attribute_id": self.attribute.id}
"name": "Value 1", )
"attribute_id": self.attribute.id, self.value2 = self.env["product.attribute.value"].create(
}) {"name": "Value 2", "attribute_id": self.attribute.id}
self.value2 = self.env["product.attribute.value"].create({ )
"name": "Value 2", self.product = self.pt_obj.create(
"attribute_id": self.attribute.id, {
})
self.product = self.pt_obj.create({
"name": "Test Template", "name": "Test Template",
"attribute_line_ids": [(0, 0, { "attribute_line_ids": [
(
0,
0,
{
"attribute_id": self.attribute.id, "attribute_id": self.attribute.id,
"value_ids": [(6, 0, [self.value1.id, self.value2.id])] "value_ids": [(6, 0, [self.value1.id, self.value2.id])],
})], },
)
],
"route_ids": [(6, 0, self.manufacture_route.ids)], "route_ids": [(6, 0, self.manufacture_route.ids)],
}) }
)
self.variant_1 = self.product.product_variant_ids[0] self.variant_1 = self.product.product_variant_ids[0]
self.variant_2 = self.product.product_variant_ids[1] self.variant_2 = self.product.product_variant_ids[1]
self.bom = self.bom_obj.create({ self.bom = self.bom_obj.create(
"product_tmpl_id": self.product.id, {"product_tmpl_id": self.product.id, "product_qty": 1.0}
"product_qty": 1.0, )
})
# Create 3 MO's # Create 3 MO's
self.mo_1 = self.mo_obj.create({ self.mo_1 = self.mo_obj.create(
{
"name": "MO ABC", "name": "MO ABC",
"product_id": self.variant_1.id, "product_id": self.variant_1.id,
"product_uom_id": self.variant_1.uom_id.id, "product_uom_id": self.variant_1.uom_id.id,
"product_qty": 2, "product_qty": 2,
"bom_id": self.bom.id, "bom_id": self.bom.id,
}) }
self.mo_2 = self.mo_obj.create({ )
self.mo_2 = self.mo_obj.create(
{
"name": "MO XYZ", "name": "MO XYZ",
"product_id": self.variant_1.id, "product_id": self.variant_1.id,
"product_uom_id": self.variant_1.uom_id.id, "product_uom_id": self.variant_1.uom_id.id,
"product_qty": 3, "product_qty": 3,
"bom_id": self.bom.id, "bom_id": self.bom.id,
}) }
self.mo_3 = self.mo_obj.create({ )
self.mo_3 = self.mo_obj.create(
{
"name": "MO QWE", "name": "MO QWE",
"product_id": self.variant_2.id, "product_id": self.variant_2.id,
"product_uom_id": self.variant_2.uom_id.id, "product_uom_id": self.variant_2.uom_id.id,
"product_qty": 6, "product_qty": 6,
"bom_id": self.bom.id, "bom_id": self.bom.id,
}) }
)
def test_01_mo_counters(self): def test_01_mo_counters(self):
self.assertEqual(len(self.product.product_variant_ids), 2) self.assertEqual(len(self.product.product_variant_ids), 2)

View File

@@ -8,13 +8,18 @@
<field name="inherit_id" ref="product.product_template_only_form_view" /> <field name="inherit_id" ref="product.product_template_only_form_view" />
<field name="groups_id" eval="[(4, ref('mrp.group_mrp_user'))]" /> <field name="groups_id" eval="[(4, ref('mrp.group_mrp_user'))]" />
<field name="arch" type="xml"> <field name="arch" type="xml">
<button name="toggle_active" position="before"> <div class="oe_button_box" position="inside">
<button class="oe_stat_button" name="action_view_mrp_productions" type="object" <button
class="oe_stat_button"
name="action_view_mrp_productions"
type="object"
attrs="{'invisible':[('type', 'not in', ['product', 'consu'])]}" attrs="{'invisible':[('type', 'not in', ['product', 'consu'])]}"
icon="fa-wrench" help="Manufactured Orders"> icon="fa-wrench"
help="Manufactured Orders"
>
<field string="MO's" name="mo_count" widget="statinfo" /> <field string="MO's" name="mo_count" widget="statinfo" />
</button> </button>
</button> </div>
</field> </field>
</record> </record>
@@ -25,13 +30,18 @@
<field name="inherit_id" ref="product.product_normal_form_view" /> <field name="inherit_id" ref="product.product_normal_form_view" />
<field name="groups_id" eval="[(4, ref('mrp.group_mrp_user'))]" /> <field name="groups_id" eval="[(4, ref('mrp.group_mrp_user'))]" />
<field name="arch" type="xml"> <field name="arch" type="xml">
<button name="toggle_active" position="before"> <div class="oe_button_box" position="inside">
<button class="oe_stat_button" name="action_view_mrp_productions" type="object" <button
class="oe_stat_button"
name="action_view_mrp_productions"
type="object"
attrs="{'invisible': [('type', 'not in', ['product', 'consu'])]}" attrs="{'invisible': [('type', 'not in', ['product', 'consu'])]}"
icon="fa-wrench" help="Manufactured Orders"> icon="fa-wrench"
help="Manufactured Orders"
>
<field string="MO's" name="mo_count" widget="statinfo" /> <field string="MO's" name="mo_count" widget="statinfo" />
</button> </button>
</button> </div>
</field> </field>
</record> </record>