feat: Re-enable user restrictions for stock picking types and introduce purchase order bypass for confirmation and approval.

This commit is contained in:
Suherdy Yacob 2026-02-12 16:23:17 +07:00
parent fa34513ecc
commit f914c64c5f
3 changed files with 20 additions and 9 deletions

View File

@ -7,3 +7,4 @@ from . import approval_request
from . import procurement_group
from . import stock_move
from . import report_stock_quantity
from . import purchase_order

10
models/purchase_order.py Normal file
View File

@ -0,0 +1,10 @@
from odoo import models
class PurchaseOrder(models.Model):
_inherit = 'purchase.order'
def button_confirm(self):
return super(PurchaseOrder, self.with_context(bypass_user_restriction=True)).button_confirm()
def button_approve(self, force=False):
return super(PurchaseOrder, self.with_context(bypass_user_restriction=True)).button_approve(force=force)

View File

@ -26,15 +26,15 @@ class StockWarehouse(models.Model):
class StockPickingType(models.Model):
_inherit = 'stock.picking.type'
# @api.model
# def _search(self, domain, offset=0, limit=None, order=None, **kwargs):
# if self.env.context.get('bypass_user_restriction'):
# return super()._search(domain, offset=offset, limit=limit, order=order, **kwargs)
# if not self.env.su and not self.env.user.has_group('base.group_system'):
# allowed_ids = get_allowed_ids(self.env, 'res_users_stock_picking_type_rel', 'picking_type_id', self.env.user.id)
# if allowed_ids:
# domain = Domain(domain or []) & Domain([('id', 'in', allowed_ids)])
# return super()._search(domain, offset=offset, limit=limit, order=order, **kwargs)
@api.model
def _search(self, domain, offset=0, limit=None, order=None, **kwargs):
if self.env.context.get('bypass_user_restriction'):
return super()._search(domain, offset=offset, limit=limit, order=order, **kwargs)
if not self.env.su and not self.env.user.has_group('base.group_system'):
allowed_ids = get_allowed_ids(self.env, 'res_users_stock_picking_type_rel', 'picking_type_id', self.env.user.id)
if allowed_ids:
domain = Domain(domain or []) & Domain([('id', 'in', allowed_ids)])
return super()._search(domain, offset=offset, limit=limit, order=order, **kwargs)