Acumatica:如何将警告更改为错误?

Acumatica: How do I change a warning to an error?

问题: 我们想将销售订单输入屏幕 SO301000 上的警告消息更改为错误消息。我们特别要更改的警告是当行项目数量将取可用数量负值时。目前它是黄色警告消息,但我们希望它是红色错误。

Current Warning Message

我是一名程序员,但对 Acumatica 不熟悉。我已经完成了课程,但没有涵盖这种特殊情况。

我希望能在正确的方向上找到一个开始的点。我会从那里拿走它。感谢任何指导。

尝试使用方法PXUIFieldAttribute.GetWarning获取警告信息。然后使用PXUIFieldAttribute.SetError设置错误。

示例:

public class SOOrderEntryExt : PXGraphExtension<SOOrderEntry>
{
    public void SOLine_RowSelected(PXCache sender, PXRowSelectedEventArgs e)
    {
        const string targetWarning = "Target Warning Message";

        string warning = PXUIFieldAttribute.GetWarning<SOLine.orderQty>(sender, e.Row);

        if (warning?.Contains(targetWarning) == true)
            PXUIFieldAttribute.SetError<SOLine.orderQty>(sender, e.Row, warning);
        else
            PXUIFieldAttribute.SetError<SOLine.orderQty>(sender, e.Row, null);
    }
}

试试这个:

public class Ext_SOOrderEntry : PXGraphExtension<SOOrderEntry>
{
    public void SOLine_RowUpdated(PXCache sender, PXRowUpdatedEventArgs e, PXRowUpdated del)
    {
        del?.Invoke(sender, e);
        if (e.Row == null)
            return;

        const string targetWarning = "quantity available will go negative";

        string warning = PXUIFieldAttribute.GetWarning<SOLine.orderQty>(sender, e.Row);

        if (!string.IsNullOrEmpty(warning)
            && warning.Contains(targetWarning))
        {sender.RaiseExceptionHandling<SOLine.orderQty>(e.Row,
                                                               ((SOLine)e.Row).OrderQty,
                                                               new PXSetPropertyException(warning,
                                                                                          PXErrorLevel.Error));
        }
    }
    public void SOLine_Availability_FieldSelecting(PXCache sender, PXFieldSelectingEventArgs e, PXFieldSelecting del)
    {
        del?.Invoke(sender, e);
        if (e.Row == null)
            return;

        const string targetWarning = "quantity available will go negative";

        string warning = PXUIFieldAttribute.GetWarning<SOLine.orderQty>(sender, e.Row);

        if (!string.IsNullOrEmpty(warning)
            && warning.Contains(targetWarning))
        {
            sender.RaiseExceptionHandling<SOLine.orderQty>(e.Row,
                                                               ((SOLine)e.Row).OrderQty,
                                                               new PXSetPropertyException(warning,
                                                                                          PXErrorLevel.Error));
        }
    }
}