Add a group that is allowed to cancel done shipments and moves
Closes #13899
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
* Add a group that is allowed to cancel done shipments and moves
|
||||
|
||||
Version 7.8.0 - 2025-12-15
|
||||
--------------------------
|
||||
|
||||
@@ -18,7 +18,7 @@ from trytond.model import (
|
||||
from trytond.model.exceptions import AccessError
|
||||
from trytond.modules.product import price_digits, round_price
|
||||
from trytond.pool import Pool
|
||||
from trytond.pyson import Bool, Eval, If, TimeDelta
|
||||
from trytond.pyson import Bool, Eval, Id, If, TimeDelta
|
||||
from trytond.tools import cached_property, grouped_slice, reduce_ids
|
||||
from trytond.transaction import Transaction, without_check_access
|
||||
|
||||
@@ -464,7 +464,12 @@ class Move(Workflow, ModelSQL, ModelView):
|
||||
))
|
||||
cls._buttons.update({
|
||||
'cancel': {
|
||||
'invisible': ~Eval('state').in_(['draft', 'assigned']),
|
||||
'invisible': (
|
||||
(Eval('state') == 'cancelled')
|
||||
| ((Eval('state') == 'done')
|
||||
& ~Id('stock',
|
||||
'group_stock_cancellation').in_(
|
||||
Eval('context', {}).get('groups', [])))),
|
||||
'readonly': Eval('shipment') | Eval('_parent_shipment'),
|
||||
'depends': ['state', 'shipment'],
|
||||
},
|
||||
|
||||
@@ -511,7 +511,12 @@ class ShipmentIn(
|
||||
))
|
||||
cls._buttons.update({
|
||||
'cancel': {
|
||||
'invisible': Eval('state').in_(['cancelled', 'done']),
|
||||
'invisible': (
|
||||
(Eval('state') == 'cancelled')
|
||||
| ((Eval('state') == 'done')
|
||||
& ~Id('stock',
|
||||
'group_stock_cancellation').in_(
|
||||
Eval('context', {}).get('groups', [])))),
|
||||
'depends': ['state'],
|
||||
},
|
||||
'draft': {
|
||||
@@ -914,7 +919,12 @@ class ShipmentInReturn(
|
||||
))
|
||||
cls._buttons.update({
|
||||
'cancel': {
|
||||
'invisible': Eval('state').in_(['cancelled', 'done']),
|
||||
'invisible': (
|
||||
(Eval('state') == 'cancelled')
|
||||
| ((Eval('state') == 'done')
|
||||
& ~Id('stock',
|
||||
'group_stock_cancellation').in_(
|
||||
Eval('context', {}).get('groups', [])))),
|
||||
'depends': ['state'],
|
||||
},
|
||||
'draft': {
|
||||
@@ -1314,7 +1324,12 @@ class ShipmentOut(
|
||||
))
|
||||
cls._buttons.update({
|
||||
'cancel': {
|
||||
'invisible': Eval('state').in_(['cancelled', 'done']),
|
||||
'invisible': (
|
||||
(Eval('state') == 'cancelled')
|
||||
| ((Eval('state') == 'done')
|
||||
& ~Id('stock',
|
||||
'group_stock_cancellation').in_(
|
||||
Eval('context', {}).get('groups', [])))),
|
||||
'depends': ['state'],
|
||||
},
|
||||
'draft': {
|
||||
@@ -1984,7 +1999,12 @@ class ShipmentOutReturn(
|
||||
))
|
||||
cls._buttons.update({
|
||||
'cancel': {
|
||||
'invisible': Eval('state').in_(['cancelled', 'done']),
|
||||
'invisible': (
|
||||
(Eval('state') == 'cancelled')
|
||||
| ((Eval('state') == 'done')
|
||||
& ~Id('stock',
|
||||
'group_stock_cancellation').in_(
|
||||
Eval('context', {}).get('groups', [])))),
|
||||
'depends': ['state'],
|
||||
},
|
||||
'draft': {
|
||||
@@ -2489,8 +2509,12 @@ class ShipmentInternal(
|
||||
))
|
||||
cls._buttons.update({
|
||||
'cancel': {
|
||||
'invisible': Eval('state').in_(
|
||||
['cancelled', 'shipped', 'done']),
|
||||
'invisible': (
|
||||
(Eval('state') == 'cancelled')
|
||||
| (Eval('state').in_(['shipped', 'done'])
|
||||
& ~Id('stock',
|
||||
'group_stock_cancellation').in_(
|
||||
Eval('context', {}).get('groups', [])))),
|
||||
'depends': ['state'],
|
||||
},
|
||||
'draft': {
|
||||
|
||||
@@ -14,6 +14,10 @@ this repository contains the full copyright notices and license terms. -->
|
||||
<field name="name">Stock Force Assignment</field>
|
||||
<field name="parent" ref="group_stock"/>
|
||||
</record>
|
||||
<record model="res.group" id="group_stock_cancellation">
|
||||
<field name="name">Stock Cancellation</field>
|
||||
<field name="parent" ref="group_stock"/>
|
||||
</record>
|
||||
<record model="res.user-res.group"
|
||||
id="user_admin_group_stock_admin">
|
||||
<field name="user" ref="res.user_admin"/>
|
||||
@@ -29,6 +33,10 @@ this repository contains the full copyright notices and license terms. -->
|
||||
<field name="user" ref="res.user_admin"/>
|
||||
<field name="group" ref="group_stock_force_assignment"/>
|
||||
</record>
|
||||
<record model="res.user-res.group" id="user_admin_group_stock_cancellation">
|
||||
<field name="user" ref="res.user_admin"/>
|
||||
<field name="group" ref="group_stock_cancellation"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.icon" id="stock_icon">
|
||||
<field name="name">tryton-stock</field>
|
||||
|
||||
Reference in New Issue
Block a user