在采购订单List或者Detail窗口的操作面板上有一个叫做“Request change”的按钮,如果这个按钮是激活的,采购订单不能直接编辑,而必须先使用这个按钮请求修改后,采购订单才能进入编辑状态,如果有配置工作流,更改后的采购订单需要重新提交到工作流等待批准。“Request change”按钮的激活状态是Interaction class控制的,它调用VersioningPurchaseOrder.checkCanChangeBeRequested()方法来判断是否需要激活,激活的条件有两个:
- 采购订单的ChangeRequestRequired字段为真
- 采购订单DocumentState字段为Approved或者Confirmed。
ChangeRequestRequired字段的设置在采购订单详细信息的Header view>Setup>Administration>Active change management,但是这个设置是灰化不能手工修改的,它是在初始化采购订单时在PurchTable.initFromVendTableIL()方法中被初始化的,不论采购订单是手工创建还是从采购申请创建都会调用到这个方法,重要的一行是:
purchTable.ChangeRequestRequired = (PurchParameters::find().ChangeRequestAllowOverride && vendTable.ChangeRequestOverride) ? vendTable.ChangeRequestEnabled : PurchParameters::find().ChangeRequestEnabled;
在Procurement and sourcing parameters参数设置中能找到“Activate change management”和“Allow override of settings per vendor”两个checbox,而在Vendor详细信息的Purchase order defaults>Change management for purchase orders下也能找到“Override settings”和“Activate change management”两个Checkbox,所以上面的代码翻译过来就是:如果采购参数中允许按供应商覆盖设置并且供应商信息中也允许覆盖设置,那么“启用更改管理”会取用供应商信息中的设定,反之则使用采购参数中的设定。通过这样的设置,我们可以全局激活订单更改需要审核,而某些信任的供应商的订单更改则不必审核。
在Vendor详细信息Purchase order defaults>Change management for purchase orders下还有一个叫做“Allow override of settings per purchase order”的Checkbox,只有在允许供应商“Override settings”它才能修改,选中这个设置时,在我们创建采购订单时允许修改单个订单的“Activate change management”,但是一旦订单创建,就不能再修改这个选项了。
相关采购流程的设置可以参考。