diff --git a/sale_zero_stock_approval/__init__.py b/sale_zero_stock_approval/__init__.py new file mode 100644 index 00000000000..0650744f6bc --- /dev/null +++ b/sale_zero_stock_approval/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/sale_zero_stock_approval/__manifest__.py b/sale_zero_stock_approval/__manifest__.py new file mode 100644 index 00000000000..32f25182059 --- /dev/null +++ b/sale_zero_stock_approval/__manifest__.py @@ -0,0 +1,10 @@ +{ + 'name': 'Sale Zero Stock Approval', + 'description': 'Allow sale users to confirm approved zero stock sale orders', + 'depends': ['sale_management', 'sale_stock'], + 'author': 'aykhu', + 'license': 'LGPL-3', + 'data': [ + 'views/sale_order_views.xml', + ] +} diff --git a/sale_zero_stock_approval/models/__init__.py b/sale_zero_stock_approval/models/__init__.py new file mode 100644 index 00000000000..6aacb753131 --- /dev/null +++ b/sale_zero_stock_approval/models/__init__.py @@ -0,0 +1 @@ +from . import sale_order diff --git a/sale_zero_stock_approval/models/sale_order.py b/sale_zero_stock_approval/models/sale_order.py new file mode 100644 index 00000000000..bedd454b672 --- /dev/null +++ b/sale_zero_stock_approval/models/sale_order.py @@ -0,0 +1,23 @@ +from odoo import fields, models +from odoo.exceptions import AccessError + + +class SaleOrder(models.Model): + _inherit = 'sale.order' + + zero_stock_approval = fields.Boolean(string="Approval", default=False) + + def action_confirm(self): + for record in self: + for line in record.order_line: + if ( + not record.zero_stock_approval + and not self.env.user.has_group("sales_team.group_sale_manager") + and line.product_id.type == "consu" + and line.product_id.is_storable + and line.product_id.qty_available < line.product_uom_qty + ): + raise AccessError( + "Access denied: You are not authorized to confirm this sales order." + ) + return super().action_confirm() diff --git a/sale_zero_stock_approval/views/sale_order_views.xml b/sale_zero_stock_approval/views/sale_order_views.xml new file mode 100644 index 00000000000..d0d8183a679 --- /dev/null +++ b/sale_zero_stock_approval/views/sale_order_views.xml @@ -0,0 +1,16 @@ + + + + + sale.order.form.inherit.sale.zero.stock + sale.order + + + + + + + + + + \ No newline at end of file