diff --git a/.docker_files/main/__manifest__.py b/.docker_files/main/__manifest__.py index d6e3179c..f28cd0e3 100644 --- a/.docker_files/main/__manifest__.py +++ b/.docker_files/main/__manifest__.py @@ -70,6 +70,7 @@ "project_time_range", "project_timesheet_analytic_update", "project_type", + "stock_location_production", "project_wip", "project_wip_material", "timesheet_task_project_no_change", diff --git a/Dockerfile b/Dockerfile index aca0f8ec..29851345 100644 --- a/Dockerfile +++ b/Dockerfile @@ -72,6 +72,7 @@ COPY project_timesheet_analytic_update /mnt/extra-addons/project_timesheet_anal COPY project_type /mnt/extra-addons/project_type COPY project_wip /mnt/extra-addons/project_wip COPY project_wip_material /mnt/extra-addons/project_wip_material +COPY stock_location_production /mnt/extra-addons/stock_location_production COPY timesheet_task_project_no_change /mnt/extra-addons/timesheet_task_project_no_change diff --git a/project_material/__manifest__.py b/project_material/__manifest__.py index e5322917..01cb9680 100644 --- a/project_material/__manifest__.py +++ b/project_material/__manifest__.py @@ -3,7 +3,7 @@ { "name": "Project Material", - "version": "14.0.1.3.0", + "version": "14.0.1.2.1", "author": "Numigi", "maintainer": "Numigi", "website": "https://bit.ly/numigi-com", @@ -12,6 +12,7 @@ "summary": "Consume material on projects", "depends": [ "project_task_date_planned", + "stock_location_production", "stock_account", "purchase_stock", ], diff --git a/project_material/i18n/fr.po b/project_material/i18n/fr.po index 8f938176..b1e62497 100644 --- a/project_material/i18n/fr.po +++ b/project_material/i18n/fr.po @@ -477,10 +477,3 @@ msgid "" msgstr "" "Vous ne pouvez pas modifier l'article ou la tâche sur la ligne de matériel " "{line} car elle est liée à un (des) mouvement(s) de stock au statut terminé." - - -#. module: project_material -#: code:addons/project_material/models/stock_warehouse.py:73 -#, python-format -msgid "You need to have a property_stock_production for product.template. Please contact your administrator or manager." -msgstr "Vous devez définir une property_stock_production pour product.template. Veuillez contacter votre administrateur ou manager." diff --git a/project_material/models/stock_warehouse.py b/project_material/models/stock_warehouse.py index ae9bcf34..4b97ba03 100644 --- a/project_material/models/stock_warehouse.py +++ b/project_material/models/stock_warehouse.py @@ -13,6 +13,11 @@ class Warehouse(models.Model): _inherit = "stock.warehouse" + def _get_default_consumption_location_id(self): + return self.env.ref( + "stock_location_production.location_production", raise_if_not_found=False + ).id + consu_steps = fields.Selection( [(ONE_STEP_KEY, ONE_STEP_DESCRIPTION)], default=ONE_STEP_KEY ) @@ -23,47 +28,27 @@ def _has_one_step_consumption(self): consu_location_id = fields.Many2one( "stock.location", "Consumption Location", - domain="[('usage', '=', 'production'), ('company_id', '=', company_id)]", - compute='_compute_consu_location_id', + domain=[("usage", "=", "production")], ondelete="restrict", - store=True, - check_company=True, + default=_get_default_consumption_location_id, ) consu_type_id = fields.Many2one( - "stock.picking.type", - "Consumption Picking Type", - ondelete="restrict", - check_company=True, + "stock.picking.type", "Consumption Picking Type", ondelete="restrict" ) consu_return_type_id = fields.Many2one( - "stock.picking.type", - "Consumption Return Picking Type", - ondelete="restrict", - check_company=True, + "stock.picking.type", "Consumption Return Picking Type", ondelete="restrict" ) consu_route_id = fields.Many2one( - "stock.location.route", - "Consumption Route", - ondelete="restrict", - domain="[('company_id', '=', company_id)]", - check_company=True, + "stock.location.route", "Consumption Route", ondelete="restrict" ) consu_mto_pull_id = fields.Many2one( - "stock.rule", "Consumption MTO Pull", ondelete="restrict", + "stock.rule", "Consumption MTO Pull", ondelete="restrict" ) - @api.depends('company_id') - def _compute_consu_location_id(self): - for record in self: - Proprerty = self.env["ir.property"].with_company(record.company_id) - record.consu_location_id = Proprerty._get( - "property_stock_production", "product.template" - ).id - @api.model def create(self, vals): """When creating a new warehouse, create the consumption route. @@ -98,6 +83,7 @@ def _create_or_update_consumption_picking_types(self): def _create_consumption_picking_types(self): vals = self._get_consumption_picking_type_create_values() self.consu_type_id = self.env["stock.picking.type"].create(vals) + vals = self._get_consumption_return_picking_type_create_values() self.consu_return_type_id = self.env["stock.picking.type"].create(vals) @@ -195,7 +181,6 @@ def _get_consumption_return_sequence_values(self): } def _create_or_update_consumption_route(self): - self = self.with_company(self.company_id) if self.consu_route_id: self._update_consumption_route() else: @@ -317,23 +302,16 @@ def _has_two_steps_consumption(self): consu_prep_location_id = fields.Many2one( "stock.location", "Preparation Picking Location", - domain="[('usage', '=', 'internal'), ('company_id', '=', company_id)]", + domain=[("usage", "=", "internal")], ondelete="restrict", - check_company=True, ) consu_prep_type_id = fields.Many2one( - "stock.picking.type", - "Preparation Picking Type", - ondelete="restrict", - check_company=True, + "stock.picking.type", "Preparation Picking Type", ondelete="restrict" ) consu_prep_return_type_id = fields.Many2one( - "stock.picking.type", - "Preparation Return Picking Type", - ondelete="restrict", - check_company=True, + "stock.picking.type", "Preparation Return Picking Type", ondelete="restrict" ) def _create_consumption_route(self): diff --git a/project_material/tests/test_consumption_route.py b/project_material/tests/test_consumption_route.py index 7c87e7b6..e6ce73dd 100644 --- a/project_material/tests/test_consumption_route.py +++ b/project_material/tests/test_consumption_route.py @@ -21,13 +21,9 @@ def setUpClass(cls): class TestConsumptionStep(ConsumptionRouteCase): def test_default_consumption_location(self): - consu_location_id = ( - self.env["ir.property"] - .with_company(self.new_company.id) - ._get("property_stock_production", "product.template") + assert self.new_warehouse.consu_location_id == self.env.ref( + "stock_location_production.location_production" ) - self.assertTrue(consu_location_id.exists()) - assert self.new_warehouse.consu_location_id.id == consu_location_id.id def test_main_warehouse_has_consumption_route(self): assert self.main_warehouse.consu_route_id diff --git a/stock_location_production/README.rst b/stock_location_production/README.rst new file mode 100644 index 00000000..202d327b --- /dev/null +++ b/stock_location_production/README.rst @@ -0,0 +1,7 @@ +Stock Picking Split Quantity +============================ +This module adds a Production Stock Location data. + +Contributors +------------ +* Numigi (tm) and all its contributors (https://bit.ly/numigiens) diff --git a/stock_location_production/__init__.py b/stock_location_production/__init__.py new file mode 100644 index 00000000..0ab5e8ea --- /dev/null +++ b/stock_location_production/__init__.py @@ -0,0 +1,2 @@ +# © 2023 Numigi (tm) and all its contributors (https://bit.ly/numigiens) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). diff --git a/stock_location_production/__manifest__.py b/stock_location_production/__manifest__.py new file mode 100644 index 00000000..26466bd5 --- /dev/null +++ b/stock_location_production/__manifest__.py @@ -0,0 +1,18 @@ +# © 2023 Numigi (tm) and all its contributors (https://bit.ly/numigiens) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +{ + "name": "Stock Location Production", + "version": "1.0.0", + "author": "Numigi", + "maintainer": "Numigi", + "website": "https://bit.ly/numigi-com", + "license": "AGPL-3", + "category": "Stock", + "depends": ["stock"], + "summary": """ + Add a Production Stock Location data. + """, + "data": ["data/stock_data.xml"], + "installable": True, +} diff --git a/stock_location_production/data/stock_data.xml b/stock_location_production/data/stock_data.xml new file mode 100644 index 00000000..157b1f05 --- /dev/null +++ b/stock_location_production/data/stock_data.xml @@ -0,0 +1,11 @@ + + + + + Production + + production + + + + \ No newline at end of file diff --git a/stock_location_production/static/description/icon.png b/stock_location_production/static/description/icon.png new file mode 100644 index 00000000..e69de29b