尝试通过API调用创建销售订单时,如果订单上任何项目标记为默认的供应商状态为非活动,则会返回错误消息:“PX.Data.PXException:供应商状态为'无效“”
但是,通过标准屏幕创建销售订单时,使用非活动默认供应商订购商品不会出现问题。
我们希望将供应商标记为非活动,但需要为屏幕允许的项目创建销售订单。怎么办呢?
答案 0 :(得分:2)
我假设错误来自Brendan评论的SOLine.VendorID。
以下是调试该问题并使用FieldVerifying事件修复它的步骤。
在SalesOrder屏幕上添加SOLine.VendorID字段:
检查VendorID字段,它有一个PXRestrictor和您收到的VendorIsInStatus错误消息:
可以使用FieldVerifying事件取消PXRestrictor属性验证,将该处理程序添加到SalesOrder for SOLine.VendorID:
public class SOOrderEntry_Extension:PXGraphExtension<SOOrderEntry>
{
protected void SOLine_VendorID_FieldVerifying(PXCache sender, PXFieldVerifyingEventArgs e)
{
e.Cancel = true;
}
}
答案 1 :(得分:0)
根据Brendan的评论,我修改了SOLine.VendorID的PXRestrictor属性以允许非活动状态:
public class SOLineExt : PXCacheExtension<PX.Objects.SO.SOLine> {
[PXMergeAttributes(Method = MergeMethod.Merge)]
[PXRestrictor(typeof(Where<Vendor.status, IsNull,
Or<Vendor.status, Equal<BAccount.status.active>,
Or<Vendor.status, Equal<BAccount.status.inactive>,
Or<Vendor.status, Equal<BAccount.status.oneTime>>>>>), PX.Objects.AP.Messages.VendorIsInStatus, typeof(Vendor.status))]
public virtual Int32? VendorID { get; set; }
}