diff --git a/mrp_subcontracting_partner_management/README.rst b/mrp_subcontracting_partner_management/README.rst index e0e8e7954..5c442ce0a 100644 --- a/mrp_subcontracting_partner_management/README.rst +++ b/mrp_subcontracting_partner_management/README.rst @@ -7,7 +7,7 @@ Subcontracting Partner Management !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - !! source digest: sha256:16e892122edafe36f84bd67e1692db60a22191ded7ce950e5d3295abf1ac13b4 + !! source digest: sha256:7ade3317dda2abdd864cbca9382ef0508ebb9e2de4f245266c5584cd903b4200 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png @@ -17,13 +17,13 @@ Subcontracting Partner Management :target: http://www.gnu.org/licenses/lgpl-3.0-standalone.html :alt: License: LGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fmanufacture-lightgray.png?logo=github - :target: https://github.com/OCA/manufacture/tree/14.0/mrp_subcontracting_partner_management + :target: https://github.com/OCA/manufacture/tree/16.0/mrp_subcontracting_partner_management :alt: OCA/manufacture .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/manufacture-14-0/manufacture-14-0-mrp_subcontracting_partner_management + :target: https://translation.odoo-community.org/projects/manufacture-16-0/manufacture-16-0-mrp_subcontracting_partner_management :alt: Translate me on Weblate .. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png - :target: https://runboat.odoo-community.org/builds?repo=OCA/manufacture&target_branch=14.0 + :target: https://runboat.odoo-community.org/builds?repo=OCA/manufacture&target_branch=16.0 :alt: Try me on Runboat |badge1| |badge2| |badge3| |badge4| |badge5| @@ -47,9 +47,6 @@ Configuration To see newly created rules, go to **Settings** > **Inventory** and activate "Multi step routes". -It is also possible to allow a user to check inventory locations in **Sales & Purchases** tab of **Vendor** without activating dev mode. -To do so, enable technical extra right **Display Inventory section on Vendor** in user. - Usage ===== @@ -59,7 +56,6 @@ Usage * When disabled all associated enties will be archived * When name of subcontractor is updated, names of entities are updated automatically. * It is also possible to check inventory locations using **Subcontractor Location Stock** smart button on partner. -* When name of subcontractor is updated, names of entities (subcontracting location, operation type, rules) are updated automatically. Changelog ========= @@ -81,7 +77,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 to smash it by providing a detailed and welcomed -`feedback `_. +`feedback `_. Do not contact contributors directly about support or help with technical issues. @@ -113,6 +109,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/manufacture `_ project on GitHub. +This module is part of the `OCA/manufacture `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/mrp_subcontracting_partner_management/__manifest__.py b/mrp_subcontracting_partner_management/__manifest__.py index 1770a6b27..5007290cf 100644 --- a/mrp_subcontracting_partner_management/__manifest__.py +++ b/mrp_subcontracting_partner_management/__manifest__.py @@ -1,19 +1,16 @@ { "name": "Subcontracting Partner Management", - "version": "14.0.2.0.0", + "version": "16.0.1.0.0", "summary": "Subcontracting Partner Management", "author": "Ooops404, Cetmix, Odoo Community Association (OCA)", "license": "LGPL-3", "category": "Inventory", "website": "https://github.com/OCA/manufacture", "depends": ["purchase_stock", "mrp_subcontracting", "sale_stock"], - "external_dependencies": {}, - "demo": [], "data": [ "views/res_partner_views.xml", "views/stock_picking_type_views.xml", ], - "qweb": [], "installable": True, "application": False, } diff --git a/mrp_subcontracting_partner_management/models/res_partner.py b/mrp_subcontracting_partner_management/models/res_partner.py index 4efe14bd9..26bdaeac2 100644 --- a/mrp_subcontracting_partner_management/models/res_partner.py +++ b/mrp_subcontracting_partner_management/models/res_partner.py @@ -44,17 +44,6 @@ class ResPartner(models.Model): for key in self.get_data_struct(): self.mapped(key).write({"active": active}) - @api.model - def _update_name_translation(self, records, name): - """Update name field translation for records""" - self.env["ir.translation"].search( - [ - ("name", "=", "{},name".format(records._name)), - ("res_id", "in", records.ids), - ("value", "!=", name), - ] - ).write({"value": name}) - def _update_subcontractor_values_name(self, name): """ Update subcontractor related records: @@ -69,17 +58,15 @@ class ResPartner(models.Model): for field in field_names: records = partners.mapped(field) records.write({"name": name}) - self._update_name_translation(records, name) type_name = "%s: IN" % name code = "".join(re.findall(r"\b\w", type_name)) picks = partners.mapped("partner_picking_type_id") picks.write({"name": type_name, "sequence_code": code}) - self._update_name_translation(picks, type_name) def unlink(self): """This Method is override to archive all subcontracting field""" self._set_subcontracting_values_active(False) - return super(ResPartner, self).unlink() + return super().unlink() def write(self, vals): if "is_subcontractor_partner" in vals: @@ -88,7 +75,7 @@ class ResPartner(models.Model): ) if "active" in vals: self._set_subcontracting_values_active(vals.get("active")) - result = super(ResPartner, self).write(vals) + result = super().write(vals) if vals.get("name"): self._update_subcontractor_values_name(vals.get("name")) return result @@ -108,7 +95,7 @@ class ResPartner(models.Model): )(vals) or {} ) - return super(ResPartner, self).create(vals_list) + return super().create(vals_list) def _update_subcontractor_entities_for_record(self, is_subcontractor_partner): if not is_subcontractor_partner: @@ -197,13 +184,11 @@ class ResPartner(models.Model): def _create_operation_type_for_subcontracting(self, vals): # Creating Operation Type for Subcontracting starts here - operation_type_rec_id, _ = self._create_subcontracted_operation_type(vals) - return {"partner_picking_type_id": operation_type_rec_id} + picking_type_id, _ = self._create_subcontracted_operation_type(vals) + return {"partner_picking_type_id": picking_type_id} def _create_route_rule_for_subcontracting(self, vals): - operation_type_rec_id, location_id = self._create_subcontracted_operation_type( - vals - ) + picking_type_id, location_id = self._create_subcontracted_operation_type(vals) route = self.env.ref( "purchase_stock.route_warehouse0_buy", raise_if_not_found=False ) @@ -211,8 +196,8 @@ class ResPartner(models.Model): { "name": self._context.get("partner_name", self._compose_entity_name()), "action": "buy", - "picking_type_id": operation_type_rec_id, - "location_id": location_id, + "picking_type_id": picking_type_id, + "location_dest_id": location_id, "route_id": route.id, } ) @@ -233,7 +218,7 @@ class ResPartner(models.Model): "action": "pull", "partner_address_id": self._origin.id, "picking_type_id": picking_type.id, - "location_id": prop.id, + "location_dest_id": prop.id, "location_src_id": self._get_location_id_for_record(vals), "route_id": route.id, "procure_method": "mts_else_mto", diff --git a/mrp_subcontracting_partner_management/readme/CONFIGURE.rst b/mrp_subcontracting_partner_management/readme/CONFIGURE.rst index 01d08757f..9c15b36e5 100644 --- a/mrp_subcontracting_partner_management/readme/CONFIGURE.rst +++ b/mrp_subcontracting_partner_management/readme/CONFIGURE.rst @@ -1,4 +1 @@ To see newly created rules, go to **Settings** > **Inventory** and activate "Multi step routes". - -It is also possible to allow a user to check inventory locations in **Sales & Purchases** tab of **Vendor** without activating dev mode. -To do so, enable technical extra right **Display Inventory section on Vendor** in user. diff --git a/mrp_subcontracting_partner_management/readme/USAGE.rst b/mrp_subcontracting_partner_management/readme/USAGE.rst index 9f7e8bc18..40fbc4823 100644 --- a/mrp_subcontracting_partner_management/readme/USAGE.rst +++ b/mrp_subcontracting_partner_management/readme/USAGE.rst @@ -4,4 +4,3 @@ * When disabled all associated enties will be archived * When name of subcontractor is updated, names of entities are updated automatically. * It is also possible to check inventory locations using **Subcontractor Location Stock** smart button on partner. -* When name of subcontractor is updated, names of entities (subcontracting location, operation type, rules) are updated automatically. diff --git a/mrp_subcontracting_partner_management/static/description/index.html b/mrp_subcontracting_partner_management/static/description/index.html index 10ee66800..b52114ac4 100644 --- a/mrp_subcontracting_partner_management/static/description/index.html +++ b/mrp_subcontracting_partner_management/static/description/index.html @@ -367,9 +367,9 @@ ul.auto-toc { !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -!! source digest: sha256:16e892122edafe36f84bd67e1692db60a22191ded7ce950e5d3295abf1ac13b4 +!! source digest: sha256:7ade3317dda2abdd864cbca9382ef0508ebb9e2de4f245266c5584cd903b4200 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> -

Beta License: LGPL-3 OCA/manufacture Translate me on Weblate Try me on Runboat

+

Beta License: LGPL-3 OCA/manufacture Translate me on Weblate Try me on Runboat

The goal of this module is to simplify the management of the partner properties used in MRP Subcontracting.

It adds a new checkbox “Subcontractor” which when enabled creates the following entities:

    @@ -400,8 +400,6 @@ ul.auto-toc {

    Configuration

    To see newly created rules, go to Settings > Inventory and activate “Multi step routes”.

    -

    It is also possible to allow a user to check inventory locations in Sales & Purchases tab of Vendor without activating dev mode. -To do so, enable technical extra right Display Inventory section on Vendor in user.

    Usage

    @@ -412,7 +410,6 @@ To do so, enable technical extra right Display Inventory section on Vend
  • When disabled all associated enties will be archived
  • When name of subcontractor is updated, names of entities are updated automatically.
  • It is also possible to check inventory locations using Subcontractor Location Stock smart button on partner.
  • -
  • When name of subcontractor is updated, names of entities (subcontracting location, operation type, rules) are updated automatically.
@@ -434,7 +431,7 @@ To do so, enable technical extra right Display Inventory section on Vend

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 to smash it by providing a detailed and welcomed -feedback.

+feedback.

Do not contact contributors directly about support or help with technical issues.

@@ -460,7 +457,7 @@ If you spotted it first, help us to smash it by providing a detailed and welcome

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/manufacture project on GitHub.

+

This module is part of the OCA/manufacture project on GitHub.

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

diff --git a/mrp_subcontracting_partner_management/tests/test_create_subcontractor_partner_location.py b/mrp_subcontracting_partner_management/tests/test_create_subcontractor_partner_location.py index 6eee789b2..e45271b4d 100644 --- a/mrp_subcontracting_partner_management/tests/test_create_subcontractor_partner_location.py +++ b/mrp_subcontracting_partner_management/tests/test_create_subcontractor_partner_location.py @@ -1,140 +1,109 @@ -from odoo.tests import common, tagged +from odoo.tests import tagged + +from odoo.addons.base.tests.common import BaseCommon @tagged("post_install", "-at_install") -class TestSubcontractedPartner(common.SavepointCase): +class TestSubcontractedPartner(BaseCommon): @classmethod def setUpClass(cls): super().setUpClass() - cls.partner_id = cls.env.ref("base.res_partner_12") cls.partner_obj = cls.env["res.partner"] + cls.partner = cls.partner_obj.create({"name": "Test partner"}) def test_is_subcontractor_partner_first_time(self): - self.partner_id.update( - { - "is_subcontractor_partner": True, - } - ) - - location = self.partner_id.subcontracted_created_location_id + self.partner.update({"is_subcontractor_partner": True}) + location = self.partner.subcontracted_created_location_id self.assertTrue(location, "Location is not created") self.assertTrue(location.active, "Location must be active") - partner_picking_type = self.partner_id.partner_picking_type_id + partner_picking_type = self.partner.partner_picking_type_id self.assertTrue(partner_picking_type, "Picking type is not created") self.assertTrue(partner_picking_type.active, "Picking type must be active") - partner_buy_rule = self.partner_id.partner_buy_rule_id + partner_buy_rule = self.partner.partner_buy_rule_id self.assertTrue(partner_buy_rule, "Partner Buy rule is not created") self.assertTrue(partner_buy_rule.active, "Partner Buy rule must be active") - partner_resupply_rule = self.partner_id.partner_resupply_rule_id + partner_resupply_rule = self.partner.partner_resupply_rule_id self.assertTrue(partner_resupply_rule, "Partner Resupply rule is not created") self.assertTrue( partner_resupply_rule.active, "Partner Resupply rule must be active" ) def test_is_subcontractor_partner_switch_off(self): - self.partner_id.write( - { - "is_subcontractor_partner": True, - } - ) - self.partner_id.update( - { - "is_subcontractor_partner": False, - } - ) + self.partner.write({"is_subcontractor_partner": True}) + self.partner.update({"is_subcontractor_partner": False}) - location = self.partner_id.subcontracted_created_location_id + location = self.partner.subcontracted_created_location_id self.assertFalse(location.active, "Location must be not active") - partner_picking_type = self.partner_id.partner_picking_type_id + partner_picking_type = self.partner.partner_picking_type_id self.assertFalse(partner_picking_type.active, "Picking type must be not active") - partner_buy_rule = self.partner_id.partner_buy_rule_id + partner_buy_rule = self.partner.partner_buy_rule_id self.assertFalse(partner_buy_rule.active, "Partner Buy rule must be not active") - partner_resupply_rule = self.partner_id.partner_resupply_rule_id + partner_resupply_rule = self.partner.partner_resupply_rule_id self.assertFalse( partner_resupply_rule.active, "Partner Resupply rule must be not active" ) def test_is_subcontractor_partner_switch_on(self): - self.partner_id.update( - { - "is_subcontractor_partner": True, - } - ) + self.partner.update({"is_subcontractor_partner": True}) - location = self.partner_id.subcontracted_created_location_id + location = self.partner.subcontracted_created_location_id self.assertTrue(location.active, "Location must be active") - partner_picking_type = self.partner_id.partner_picking_type_id + partner_picking_type = self.partner.partner_picking_type_id self.assertTrue(partner_picking_type.active, "Picking type must be active") - partner_buy_rule = self.partner_id.partner_buy_rule_id + partner_buy_rule = self.partner.partner_buy_rule_id self.assertTrue(partner_buy_rule.active, "Partner Buy rule must be active") - partner_resupply_rule = self.partner_id.partner_resupply_rule_id + partner_resupply_rule = self.partner.partner_resupply_rule_id self.assertTrue( partner_resupply_rule.active, "Partner Resupply rule must be active" ) - def test_is_subcontractor_partner_aсtive_switch_off(self): - self.partner_id.write( - { - "is_subcontractor_partner": True, - } - ) - self.partner_id.update( - { - "active": False, - } - ) + def test_is_subcontractor_partner_active_switch_off(self): + self.partner.write({"is_subcontractor_partner": True}) + self.partner.update({"active": False}) - location = self.partner_id.subcontracted_created_location_id + location = self.partner.subcontracted_created_location_id self.assertFalse(location.active, "Location must be not active") - partner_picking_type = self.partner_id.partner_picking_type_id + partner_picking_type = self.partner.partner_picking_type_id self.assertFalse(partner_picking_type.active, "Picking type must be not active") - partner_buy_rule = self.partner_id.partner_buy_rule_id + partner_buy_rule = self.partner.partner_buy_rule_id self.assertFalse(partner_buy_rule.active, "Partner Buy rule must be not active") - partner_resupply_rule = self.partner_id.partner_resupply_rule_id + partner_resupply_rule = self.partner.partner_resupply_rule_id self.assertFalse( partner_resupply_rule.active, "Partner Resupply rule must be not active" ) def test_is_subcontractor_partner_aсtive_switch_on(self): - self.partner_id.write( - { - "is_subcontractor_partner": True, - } - ) - self.partner_id.write( - { - "active": True, - } - ) + self.partner.write({"is_subcontractor_partner": True}) + self.partner.write({"active": True}) - location = self.partner_id.subcontracted_created_location_id + location = self.partner.subcontracted_created_location_id self.assertTrue(location.active, "Location must be active") - partner_picking_type = self.partner_id.partner_picking_type_id + partner_picking_type = self.partner.partner_picking_type_id self.assertTrue(partner_picking_type.active, "Picking type must be active") - partner_buy_rule = self.partner_id.partner_buy_rule_id + partner_buy_rule = self.partner.partner_buy_rule_id self.assertTrue(partner_buy_rule.active, "Partner Buy rule must be active") - partner_resupply_rule = self.partner_id.partner_resupply_rule_id + partner_resupply_rule = self.partner.partner_resupply_rule_id self.assertTrue( partner_resupply_rule.active, "Partner Resupply rule must be active" ) def test_is_subcontractor_partner_delete(self): - partner_id = self.partner_obj.create( + partner = self.partner_obj.create( { "name": "Test partner", "is_company": True, @@ -142,12 +111,12 @@ class TestSubcontractedPartner(common.SavepointCase): } ) - location = partner_id.subcontracted_created_location_id - partner_picking_type = partner_id.partner_picking_type_id - partner_buy_rule = partner_id.partner_buy_rule_id - partner_resupply_rule = partner_id.partner_resupply_rule_id + location = partner.subcontracted_created_location_id + partner_picking_type = partner.partner_picking_type_id + partner_buy_rule = partner.partner_buy_rule_id + partner_resupply_rule = partner.partner_resupply_rule_id - partner_id.unlink() + partner.unlink() self.assertFalse(location.active, "Location must be not active") self.assertFalse(partner_picking_type.active, "Picking type must be not active") @@ -157,7 +126,7 @@ class TestSubcontractedPartner(common.SavepointCase): ) def test_check_countof_rules(self): - partner_id = self.partner_obj.create( + partner = self.partner_obj.create( { "name": "Test partner", "is_company": True, @@ -165,7 +134,7 @@ class TestSubcontractedPartner(common.SavepointCase): } ) rules = self.env["stock.rule"].search( - [("name", "=", partner_id.partner_buy_rule_id.name)] + [("name", "=", partner.partner_buy_rule_id.name)] ) self.assertTrue(len(rules) == 2, "There are must be 2 subcontractor rules") @@ -213,15 +182,15 @@ class TestSubcontractedPartner(common.SavepointCase): ) def test_action_subcontractor_location_stock(self): - self.partner_id.update({"is_subcontractor_partner": True}) - action = self.partner_id.action_subcontractor_location_stock() + self.partner.update({"is_subcontractor_partner": True}) + action = self.partner.action_subcontractor_location_stock() self.assertEqual( action.get("domain"), [ ( "location_id", "child_of", - self.partner_id.property_stock_subcontractor.ids, + self.partner.property_stock_subcontractor.ids, ) ], msg="Domains must be the same", diff --git a/mrp_subcontracting_partner_management/views/res_partner_views.xml b/mrp_subcontracting_partner_management/views/res_partner_views.xml index 29c77d7c0..0a8144608 100644 --- a/mrp_subcontracting_partner_management/views/res_partner_views.xml +++ b/mrp_subcontracting_partner_management/views/res_partner_views.xml @@ -14,7 +14,6 @@ - res.partner.stock.property.form.inherit res.partner