OroCommerce:在某些情况下禁用订单编辑

OroCommerce: Disable order edit by some conditions

是否可以在满足某些条件(例如订单状态已发货,但可能是 smtl)时禁用订单编辑?

或者禁用 LineItems 编辑但允许编辑订单信息?

尝试将此行添加到我当前的活动订单工作流程中,但一无所获:

        entity_restrictions:
            test:
                attribute: entity
                field: customer_notes

尝试将此添加到工作流程步骤之一,但还是没有成功

            entity_acl:
                update: false
                delete: false

entity_restrictionsentity_acl 未在任何 workflow.yml oro 捆绑包中使用,因此该功能真的实现了吗?

从内置功能中,您可以使用带有实体限制的工作流引擎,根据条件将某些表单字段设置为只读:https://doc.oroinc.com/backend/entities-data-management/workflows/configuration-reference/#entity-restrictions-configuration

或者创建访问规则隐藏编辑按钮和return编辑页面403代码满足条件:https://doc.oroinc.com/backend/security/access-rules/#backend-security-bundle-access-rules

虽然我没有找到如何像之前建议的那样通过工作流禁用订单编辑,但这里是如何通过操作配置禁用它的工作方式:

#MyBundle/Resources/config/oro/actions.yml
operations:
  my_oro_order_edit
    extends: UPDATE                         # this is for keeping all other properties same as in default
    substitute_operation: UPDATE            # replace UPDATE operation with current one
    entities: ['Oro\Bundle\OrderBundle\Entity\Order'] # replacement will occur only if this operation will be matched by entity
    for_all_entities: false
    replace:
      - preconditions
    preconditions:
      '@equal': [$internalStatus.id, 'open']

这会用 my_oro_order_edit 替换订单的更新操作,其中允许更新的条件已更改 - 因此订单视图页面和订单网格中的编辑按钮将仅针对 'Open' 订单出现。然而,这只影响按钮,它仍然可以通过直接 link 打开订单编辑,这应该使用访问规则

禁止