diff --git a/mrp_subcontracting_partner_management/README.rst b/mrp_subcontracting_partner_management/README.rst index db05b59b3..2e49dd7bd 100644 --- a/mrp_subcontracting_partner_management/README.rst +++ b/mrp_subcontracting_partner_management/README.rst @@ -42,7 +42,10 @@ It adds a new checkbox "Subcontractor" which when enabled creates the following Configuration ============= -* No configuration is required +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 ===== @@ -51,6 +54,9 @@ Usage * Enable the "Subcontractor" checkbox * New entities are created or existing are used if were created previously * 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 ========= diff --git a/mrp_subcontracting_partner_management/__manifest__.py b/mrp_subcontracting_partner_management/__manifest__.py index d93c6adcc..1770a6b27 100644 --- a/mrp_subcontracting_partner_management/__manifest__.py +++ b/mrp_subcontracting_partner_management/__manifest__.py @@ -1,6 +1,6 @@ { "name": "Subcontracting Partner Management", - "version": "14.0.1.1.0", + "version": "14.0.2.0.0", "summary": "Subcontracting Partner Management", "author": "Ooops404, Cetmix, Odoo Community Association (OCA)", "license": "LGPL-3", diff --git a/mrp_subcontracting_partner_management/i18n/es.po b/mrp_subcontracting_partner_management/i18n/es.po index 429d8c1b8..d77e54dfd 100644 --- a/mrp_subcontracting_partner_management/i18n/es.po +++ b/mrp_subcontracting_partner_management/i18n/es.po @@ -76,7 +76,11 @@ msgstr "Ubicación de subcontratista creada" #. module: mrp_subcontracting_partner_management #: model:ir.model.fields,field_description:mrp_subcontracting_partner_management.field_res_partner__is_subcontractor_partner #: model:ir.model.fields,field_description:mrp_subcontracting_partner_management.field_res_users__is_subcontractor_partner -#: model_terms:ir.ui.view,arch_db:mrp_subcontracting_partner_management.view_partner_form_inherit_subcontractor #: model_terms:ir.ui.view,arch_db:mrp_subcontracting_partner_management.view_pickingtype_filter msgid "Subcontractor" msgstr "Subcontratista" + +#. module: mrp_subcontracting_partner_management +#: model_terms:ir.ui.view,arch_db:mrp_subcontracting_partner_management.view_partner_stock_form +msgid "Subcontractor Location Stock" +msgstr "" diff --git a/mrp_subcontracting_partner_management/i18n/it.po b/mrp_subcontracting_partner_management/i18n/it.po index 13dd1254b..dcd4d039a 100644 --- a/mrp_subcontracting_partner_management/i18n/it.po +++ b/mrp_subcontracting_partner_management/i18n/it.po @@ -76,7 +76,11 @@ msgstr "Ubicazione per terzista" #. module: mrp_subcontracting_partner_management #: model:ir.model.fields,field_description:mrp_subcontracting_partner_management.field_res_partner__is_subcontractor_partner #: model:ir.model.fields,field_description:mrp_subcontracting_partner_management.field_res_users__is_subcontractor_partner -#: model_terms:ir.ui.view,arch_db:mrp_subcontracting_partner_management.view_partner_form_inherit_subcontractor #: model_terms:ir.ui.view,arch_db:mrp_subcontracting_partner_management.view_pickingtype_filter msgid "Subcontractor" msgstr "Terzista" + +#. module: mrp_subcontracting_partner_management +#: model_terms:ir.ui.view,arch_db:mrp_subcontracting_partner_management.view_partner_stock_form +msgid "Subcontractor Location Stock" +msgstr "" diff --git a/mrp_subcontracting_partner_management/i18n/mrp_subcontracting_partner_management.pot b/mrp_subcontracting_partner_management/i18n/mrp_subcontracting_partner_management.pot index f5c4451d0..8d5e1cb7d 100644 --- a/mrp_subcontracting_partner_management/i18n/mrp_subcontracting_partner_management.pot +++ b/mrp_subcontracting_partner_management/i18n/mrp_subcontracting_partner_management.pot @@ -73,7 +73,11 @@ msgstr "" #. module: mrp_subcontracting_partner_management #: model:ir.model.fields,field_description:mrp_subcontracting_partner_management.field_res_partner__is_subcontractor_partner #: model:ir.model.fields,field_description:mrp_subcontracting_partner_management.field_res_users__is_subcontractor_partner -#: model_terms:ir.ui.view,arch_db:mrp_subcontracting_partner_management.view_partner_form_inherit_subcontractor #: model_terms:ir.ui.view,arch_db:mrp_subcontracting_partner_management.view_pickingtype_filter msgid "Subcontractor" msgstr "" + +#. module: mrp_subcontracting_partner_management +#: model_terms:ir.ui.view,arch_db:mrp_subcontracting_partner_management.view_partner_stock_form +msgid "Subcontractor Location Stock" +msgstr "" diff --git a/mrp_subcontracting_partner_management/models/res_partner.py b/mrp_subcontracting_partner_management/models/res_partner.py index a4decbfea..4efe14bd9 100644 --- a/mrp_subcontracting_partner_management/models/res_partner.py +++ b/mrp_subcontracting_partner_management/models/res_partner.py @@ -95,18 +95,20 @@ class ResPartner(models.Model): @api.model_create_multi def create(self, vals_list): - records = super(ResPartner, self).create(vals_list) check_data = self.get_data_struct().items() - for record in records.filtered( - lambda r: r.is_subcontractor_partner and r.is_company + for vals in filter( + lambda v: v.get("is_subcontractor_partner") and v.get("is_company"), + vals_list, ): - values = {} for key, func in check_data: - if not getattr(record, key) or not values.get(key): - values.update(**getattr(record, func)(values) or {}) - if values: - record.write(values) - return records + if not getattr(self, key) or not vals.get(key): + vals.update( + **getattr( + self.with_context(partner_name=vals.get("name")), func + )(vals) + or {} + ) + return super(ResPartner, self).create(vals_list) def _update_subcontractor_entities_for_record(self, is_subcontractor_partner): if not is_subcontractor_partner: @@ -139,7 +141,9 @@ class ResPartner(models.Model): return vals.get("partner_picking_type_id"), location_id if self.partner_picking_type_id: return self.partner_picking_type_id.id, location_id - operation_type_name = "%s: IN" % self._compose_entity_name() + operation_type_name = "%s: IN" % self._context.get( + "partner_name", self._compose_entity_name() + ) operation_type_vals = { "name": operation_type_name, "code": "incoming", @@ -160,7 +164,6 @@ class ResPartner(models.Model): ) def _get_location_id_for_record(self, vals): - self.ensure_one() if "subcontracted_created_location_id" in vals: return vals.get("subcontracted_created_location_id") if self.subcontracted_created_location_id: @@ -173,7 +176,9 @@ class ResPartner(models.Model): self.env["stock.location"] .create( { - "name": self._compose_entity_name(), + "name": self._context.get( + "partner_name", self._compose_entity_name() + ), "usage": "internal", "location_id": parent_location or False, "company_id": company.id, @@ -184,7 +189,6 @@ class ResPartner(models.Model): ) def _create_subcontracting_location_data(self, vals): - self.ensure_one() location_id = self._get_location_id_for_record(vals) return { "property_stock_subcontractor": location_id, @@ -192,13 +196,11 @@ class ResPartner(models.Model): } def _create_operation_type_for_subcontracting(self, vals): - self.ensure_one() # 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} def _create_route_rule_for_subcontracting(self, vals): - self.ensure_one() operation_type_rec_id, location_id = self._create_subcontracted_operation_type( vals ) @@ -207,7 +209,7 @@ class ResPartner(models.Model): ) buy_rule = self.env["stock.rule"].create( { - "name": self._compose_entity_name(), + "name": self._context.get("partner_name", self._compose_entity_name()), "action": "buy", "picking_type_id": operation_type_rec_id, "location_id": location_id, @@ -217,7 +219,6 @@ class ResPartner(models.Model): return {"partner_buy_rule_id": buy_rule.id} def _create_route_rule_for_subcontracting_resupply(self, vals): - self.ensure_one() prop = self.env["ir.property"]._get( "property_stock_production", "product.template" ) @@ -228,7 +229,7 @@ class ResPartner(models.Model): ) rule = self.env["stock.rule"].create( { - "name": self._compose_entity_name(), + "name": self._context.get("partner_name", self._compose_entity_name()), "action": "pull", "partner_address_id": self._origin.id, "picking_type_id": picking_type.id, diff --git a/mrp_subcontracting_partner_management/static/description/index.html b/mrp_subcontracting_partner_management/static/description/index.html index da45b9343..0bff3897e 100644 --- a/mrp_subcontracting_partner_management/static/description/index.html +++ b/mrp_subcontracting_partner_management/static/description/index.html @@ -397,9 +397,9 @@ 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

@@ -408,6 +408,9 @@ ul.auto-toc {
  • Enable the “Subcontractor” checkbox
  • New entities are created or existing are used if were created previously
  • 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.