Acumatica 根据自定义字段的值在po创建期间在POLine上创建新注释

Acumatica 根据自定义字段的值在po创建期间在POLine上创建新注释,acumatica,Acumatica,假设我有一个自定义字段solinext.UsrCustomField,它允许从SO301000访问文本输入。如果我正在基于此SOLine从PO505000屏幕创建PO,我希望在新POLine上自动创建注释,并将SOLineExt.UsrCustomField的值插入为注释文本,但仅当SOLineExt.UsrCustomField!=空 自定义字段也可以作为POFixedDemandExt.UsrCustomField访问。它在POCreate中填充了fixedDemand IEnumerabl

假设我有一个自定义字段solinext.UsrCustomField,它允许从SO301000访问文本输入。如果我正在基于此SOLine从PO505000屏幕创建PO,我希望在新POLine上自动创建注释,并将SOLineExt.UsrCustomField的值插入为注释文本,但仅当SOLineExt.UsrCustomField!=空

自定义字段也可以作为POFixedDemandExt.UsrCustomField访问。它在POCreate中填充了fixedDemand IEnumerable override,因此,如果需要,我可以通过POOrderEntry中fillpolinefromdash的override将其输入

1我是否需要在FillPOLineFromDemand或POLine_RowInserted或其他地方创建新便笺


2什么代码将创建注释并将UsrCustomField的值插入NoteText?是否需要创建和填充注释DAC?

您可以使用PXNoteAttribute类的SetNote静态方法设置文本注释

在FillPOLineFromDemand方法的上下文中对POLine对象调用该方法时,会出现一些意外问题。可能是因为POLine对象在该点未在缓存中正确初始化

您可以使用POLine_RowInserted,我测试了此解决方案:

public void POLine_RowInserted(PXCache sender, PXRowInsertedEventArgs e)
{
    POLine row = e.Row as POLine;
    POLinkSO.DAC.POLineExt rowExt = row != null ? row.GetExtension<POLinkSO.DAC.POLineExt>() : null;

    if (rowExt != null)
    {
        SOLine line = PXSelectReadonly<SOLine,
                      Where<SOLine.orderNbr, Equal<Required<SOLine.orderNbr>>,
                      And<SOLine.orderType, Equal<Required<SOLine.orderType>>,
                      And<SOLine.lineNbr, Equal<Required<SOLine.lineNbr>>,
                      And<SOLineExt.usrCustomField, IsNotNull>>>>>.Select(Base,
                                                                          rowExt.UsrPOLinkSOOrderNbr,
                                                                          rowExt.UsrPOLinkSOOrderType,
                                                                          rowExt.UsrPOLinkSOLineNbr);

        SOLineExt lineExt = line != null ? line.GetExtension<SOLineExt>() : null;

        if (lineExt != null)
        {
            PXNoteAttribute.SetNote(sender, row, lineExt.UsrCustomField);
        }
    }
}

我想指出,@HB_ACUMATICA在上面的代码示例中使用了我的一个项目中的名称空间和自定义字段,以便为我提供更个性化的答案。我建立了一个解决方案来帮助跟踪Poline与Soline的联系,我们在这里看到了它的使用。任何试图在没有此类字段的情况下执行此操作的人都需要通过SOLineSplit DAC引用SOLine,其中相应的字段表示有问题的PO。