库存维度检查
AX采用库存维度检查,在库存的各个环节都会检查库存维度,我们知道check的任务大部分都交给了InventMovent系列的类去完成了。
库存维度检查主要有两个层面的任务:
1.用户指定的维度在相关主表中是否存在;
比如InventSize,InventColor,InventBatch,WMSLocation中是否存在相应的记录。
2.不允许为空的维度用户是否已经指定。
比如如果库房维度处在激活状态,并且不允许空收获或者空发货,就必须指定相应的值。
对于第一点,AX只在发货之前进行检查,也就是在库存交易记录变成Deducted(出库)和Received(入库)之前检查。具体的检查代码调用顺序如下:
InventUpd_Estimated:
updateNow->checkUpdateMovement->InventDim::checkUpdateEstimatedMovement
InventUpd_Reservation:
updateNow->checkUpdateMovement->InventMovement.checkDimFieldsValid->InventDim.checkDimFieldsValid
InventUpd_Picked:
updateNow->checkUpdateMovement->InventMovement.checkUpdatePicked->InventMovement.checkDimFieldsValid->InventDim.checkDimFieldsValid
InventUpd_Registered:
updateNow->checkUpdateMovement->InventMovement.checkUpdateRegistered->InventMovement.checkDimFieldsValid->InventDim.checkDimFieldsValid
对于第二点,AX在Pick,Registe和PackingSlip,Invoice的时候都会调用InventMovent的checkDimPhysical方法去检查的。
这样我们可以做一些适当的修改让其适应客户的需求,比如针对第一点,AX原有的逻辑是如果相应主表中不存在相应记录就报错,如果客户需要可以将其修改为如果不存在就在相应主表中插入相应记录。