diff --git a/sale_stock_prebook/README.rst b/sale_stock_prebook/README.rst index c49f75f32c9..3122f9d0a7b 100644 --- a/sale_stock_prebook/README.rst +++ b/sale_stock_prebook/README.rst @@ -7,7 +7,7 @@ Sale Stock Prebook !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - !! source digest: sha256:aed36ba76df99d50d42777ac488e6dc77420d6966a044bf7cd1f6a8d0dd97ad5 + !! source digest: sha256:c262f3d0d45546530ef14056caae0e4f81a04ccbb70a5f8f9600ebda66e382f0 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png @@ -66,6 +66,7 @@ Contributors ~~~~~~~~~~~~ * Michael Tietz (MT Software) +* Laurent Mignon (https://www.acsone.eu/) Maintainers ~~~~~~~~~~~ diff --git a/sale_stock_prebook/models/sale_order.py b/sale_stock_prebook/models/sale_order.py index 9c31a6f907b..b17ad0b84ee 100644 --- a/sale_stock_prebook/models/sale_order.py +++ b/sale_stock_prebook/models/sale_order.py @@ -1,4 +1,5 @@ # Copyright 2023 Michael Tietz (MT Software) +# Copyright 2025 ACSONE SA/NV # License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl.html). from odoo import api, fields, models @@ -31,7 +32,8 @@ def _action_confirm(self): def _prepare_reserve_procurement_group_values(self): self.ensure_one() - values = self.order_line[0]._prepare_procurement_group_vals() + line = fields.first(self.order_line) + values = line._prepare_procurement_group_vals() values["name"] = f"Reservation for {values['name']}" return values diff --git a/sale_stock_prebook/models/stock_move.py b/sale_stock_prebook/models/stock_move.py index be51f87dfb7..47801b5b4d0 100644 --- a/sale_stock_prebook/models/stock_move.py +++ b/sale_stock_prebook/models/stock_move.py @@ -1,6 +1,8 @@ # Copyright 2023 Michael Tietz (MT Software) +# Copyright 2025 ACSONE SA/NV # License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl.html). -from odoo import fields, models +from odoo import _, api, fields, models +from odoo.exceptions import ValidationError class StockMove(models.Model): @@ -8,6 +10,16 @@ class StockMove(models.Model): used_for_sale_reservation = fields.Boolean(default=False) + @api.constrains("used_for_sale_reservation", "quantity_done") + def _check_used_for_sale_reservation(self): + for move in self: + if move.used_for_sale_reservation and move.quantity_done: + raise ValidationError( + _( + "You cannot set a quantity done on a move used for sale reservation" + ) + ) + def _action_assign(self): - self = self.filtered(lambda m: not m.used_for_sale_reservation) - return super(StockMove, self)._action_assign() + new_self = self.filtered(lambda m: not m.used_for_sale_reservation) + return super(StockMove, new_self)._action_assign() diff --git a/sale_stock_prebook/readme/CONTRIBUTORS.rst b/sale_stock_prebook/readme/CONTRIBUTORS.rst index 446fd1d5769..3f44b8d08c7 100644 --- a/sale_stock_prebook/readme/CONTRIBUTORS.rst +++ b/sale_stock_prebook/readme/CONTRIBUTORS.rst @@ -1 +1,2 @@ * Michael Tietz (MT Software) +* Laurent Mignon (https://www.acsone.eu/) diff --git a/sale_stock_prebook/static/description/index.html b/sale_stock_prebook/static/description/index.html index 6b3b29201e2..cec964e5cdc 100644 --- a/sale_stock_prebook/static/description/index.html +++ b/sale_stock_prebook/static/description/index.html @@ -367,7 +367,7 @@

Sale Stock Prebook

!! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -!! source digest: sha256:aed36ba76df99d50d42777ac488e6dc77420d6966a044bf7cd1f6a8d0dd97ad5 +!! source digest: sha256:c262f3d0d45546530ef14056caae0e4f81a04ccbb70a5f8f9600ebda66e382f0 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->

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

Add process to prebook a sale order’s stock before confirming it

@@ -411,6 +411,7 @@

Authors

Contributors

diff --git a/sale_stock_prebook/tests/test_sale_stock_prebook.py b/sale_stock_prebook/tests/test_sale_stock_prebook.py index e377cc612f0..fb6abac6fe8 100644 --- a/sale_stock_prebook/tests/test_sale_stock_prebook.py +++ b/sale_stock_prebook/tests/test_sale_stock_prebook.py @@ -1,6 +1,7 @@ # Copyright 2023 Michael Tietz (MT Software) +# Copyright 2025 ACSONE SA/NV # License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl.html). -from odoo.exceptions import UserError +from odoo.exceptions import UserError, ValidationError from odoo.tests import tagged from .common import TestSaleStockPrebookCase @@ -49,3 +50,8 @@ def test_40_action_assign(self): self.assertFalse(self.sale.picking_ids.move_lines.move_line_ids) with self.assertRaises(UserError): self.sale.picking_ids.button_validate() + + def test_50_process_move(self): + self.sale.reserve_stock() + with self.assertRaisesRegex(ValidationError, "You cannot set a quantity done"): + self.sale.picking_ids.move_lines.quantity_done = 3