From 942ecb107899f5d98697ccf9bfda41ebbcb10dcd Mon Sep 17 00:00:00 2001 From: kame-odoo Date: Wed, 23 Apr 2025 12:32:47 +0530 Subject: [PATCH 1/2] [ADD] zero_stock_blockage: added custom module for zero stock approval This commit adds the zero_stock_blockage module, which extends the sale.order model to support zero stock approval workflow. Introduced a new field to manage zero stock approval on sale orders. Applied access control logic to restrict approval actions based on user roles. --- zero_stock_blockage/__init__.py | 1 + zero_stock_blockage/__manifest__.py | 12 ++++++++++++ zero_stock_blockage/models/__init__.py | 1 + zero_stock_blockage/models/sale_order.py | 19 +++++++++++++++++++ zero_stock_blockage/views/sale_order_view.xml | 12 ++++++++++++ 5 files changed, 45 insertions(+) create mode 100644 zero_stock_blockage/__init__.py create mode 100644 zero_stock_blockage/__manifest__.py create mode 100644 zero_stock_blockage/models/__init__.py create mode 100644 zero_stock_blockage/models/sale_order.py create mode 100644 zero_stock_blockage/views/sale_order_view.xml 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..a985934714d --- /dev/null +++ b/zero_stock_blockage/__manifest__.py @@ -0,0 +1,12 @@ +{ + 'name': 'Zero Stock Approval', + 'version': '1.0', + 'depends': ['sale_management'], + 'description': """ + This module adds a zero stock approval feature to sale orders. + """, + 'data' : [ + 'views/sale_order_view.xml' + ], + 'license' : 'LGPL-3' +} 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..0ff281203be --- /dev/null +++ b/zero_stock_blockage/models/sale_order.py @@ -0,0 +1,19 @@ +from odoo import api, models, fields +from odoo.exceptions import UserError + +class SaleOrder(models.Model): + _inherit = 'sale.order' + + stock_approval = fields.Boolean(string='Zero Stock Approvalexchttps') + stock_approval_readonly = fields.Boolean(compute='_compute_stock_approval_readonly') + + @api.depends_context('uid') + def _compute_stock_approval_readonly(self): + self.stock_approval_readonly = self.env.user.has_group('sales_team.group_sale_manager') + + + def action_confirm(self): + for records in self: + if not records.stock_approval: + raise UserError("You are not allowed to confirm this order unless 'Zero Stock Approvalexchttps' is enabled.") + return super().action_confirm() diff --git a/zero_stock_blockage/views/sale_order_view.xml b/zero_stock_blockage/views/sale_order_view.xml new file mode 100644 index 00000000000..46abe27fc8b --- /dev/null +++ b/zero_stock_blockage/views/sale_order_view.xml @@ -0,0 +1,12 @@ + + + sale.order.form.zero.stock + sale.order + + + + + + + + From cf95930d17b6d6e312370822e45613961b6fe0c9 Mon Sep 17 00:00:00 2001 From: kame-odoo Date: Wed, 23 Apr 2025 14:11:14 +0530 Subject: [PATCH 2/2] [FIX] zero_stock_blockage: fix style issues This commit resolves various style and formatting issues across the zero_stock_blockage module to improve code readability and maintain consistency. Fixed indentation and spacing Cleaned up unused imports --- zero_stock_blockage/__manifest__.py | 4 ++-- zero_stock_blockage/models/sale_order.py | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/zero_stock_blockage/__manifest__.py b/zero_stock_blockage/__manifest__.py index a985934714d..96c14d0f96a 100644 --- a/zero_stock_blockage/__manifest__.py +++ b/zero_stock_blockage/__manifest__.py @@ -5,8 +5,8 @@ 'description': """ This module adds a zero stock approval feature to sale orders. """, - 'data' : [ + 'data': [ 'views/sale_order_view.xml' ], - 'license' : 'LGPL-3' + 'license': 'LGPL-3' } diff --git a/zero_stock_blockage/models/sale_order.py b/zero_stock_blockage/models/sale_order.py index 0ff281203be..6d8213290e1 100644 --- a/zero_stock_blockage/models/sale_order.py +++ b/zero_stock_blockage/models/sale_order.py @@ -1,6 +1,7 @@ from odoo import api, models, fields from odoo.exceptions import UserError + class SaleOrder(models.Model): _inherit = 'sale.order' @@ -11,7 +12,6 @@ class SaleOrder(models.Model): def _compute_stock_approval_readonly(self): self.stock_approval_readonly = self.env.user.has_group('sales_team.group_sale_manager') - def action_confirm(self): for records in self: if not records.stock_approval: