diff --git a/zero_stock_blockage/__init__.py b/zero_stock_blockage/__init__.py new file mode 100644 index 00000000000..0650744f6bc --- /dev/null +++ b/zero_stock_blockage/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/zero_stock_blockage/__manifest__.py b/zero_stock_blockage/__manifest__.py new file mode 100644 index 00000000000..5722dc549bf --- /dev/null +++ b/zero_stock_blockage/__manifest__.py @@ -0,0 +1,14 @@ +{ + "name": "ZERO STOCK BLOCKAGE", + "version": "1.0", + "summary": "Restrict Sales Order Confirmation if stock is zero", + "description": "Adds approval mechanism for sales orders with zero stock.", + "category": "Sales", + "application": True, + "depends": ["base", "sale"], + "data": [ + "views/zero_stock_blockage_views.xml", + ], + "license": "LGPL-3", + "installable": True, +} diff --git a/zero_stock_blockage/models/__init__.py b/zero_stock_blockage/models/__init__.py new file mode 100644 index 00000000000..6aacb753131 --- /dev/null +++ b/zero_stock_blockage/models/__init__.py @@ -0,0 +1 @@ +from . import sale_order diff --git a/zero_stock_blockage/models/sale_order.py b/zero_stock_blockage/models/sale_order.py new file mode 100644 index 00000000000..488210cccbc --- /dev/null +++ b/zero_stock_blockage/models/sale_order.py @@ -0,0 +1,25 @@ +from odoo import fields, models, api +from odoo.exceptions import UserError + + +class SaleOrder(models.Model): + _inherit = "sale.order" + + zero_stock_approval = fields.Boolean(string="Approval", default="false") + + def action_confirm(self): + result = super().action_confirm() + for order in self: + if not order.zero_stock_approval: + raise UserError( + "This sale order cannot be confirmed without zero stock approval" + ) + return result + + @api.model + def fields_get(self, allfields=None, attributes=None): + res = super().fields_get(allfields, attributes) + if not self.env.user.has_group("sales_team.group_sale_manager"): + if "zero_stock_approval" in res: + res["zero_stock_approval"]["readonly"] = True + return res diff --git a/zero_stock_blockage/views/zero_stock_blockage_views.xml b/zero_stock_blockage/views/zero_stock_blockage_views.xml new file mode 100644 index 00000000000..24d865d1b90 --- /dev/null +++ b/zero_stock_blockage/views/zero_stock_blockage_views.xml @@ -0,0 +1,14 @@ + + + + sale.order.form.zero.stock + sale.order + + + + + + + +