【问题标题】:Create new Note on POLine during po creation based on value of custom field在基于自定义字段的值创建 PO 期间在 POLine 上创建新注释
【发布时间】:2018-12-13 04:31:45
【问题描述】:

假设我有一个自定义字段 SOLineExt.UsrCustomField,它允许从 SO301000 访问文本输入。如果我基于此 SOLine 从 PO505000 屏幕创建 PO,我想在新 POLine 上自动创建一个注释并插入 SOLineExt.UsrCustomField 的值作为 NoteText,但前提是 @987654323 @。

自定义字段也可以作为 POFixedDemandExt.UsrCustomField 访问(它在 POCreate 中填充了 fixedDemand IEnumerable 覆盖),因此如果需要,我可以通过 POOrderEntry 中的 FillPOLineFromDemand() 覆盖来提供它。

1) 我需要在FillPOLineFromDemand()POLine_RowInserted() 或其他地方创建新笔记吗?

2) 什么代码会创建一个便笺并将 UsrCustomField 的值插入到 NoteText 中?我是否需要创建和填充 Note DAC?

【问题讨论】:

    标签: acumatica


    【解决方案1】:

    您可以使用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 在上面的代码示例中使用了我的一个项目中的命名空间和自定义字段,以便为我提供更个性化的答案。我构建了一个解决方案来帮助跟踪 POLines 如何与 SOLines 链接,我们在这里看到了它的使用。任何尝试在没有此类字段的情况下执行此操作的人都需要通过 SOLineSplit DAC 引用 SOLine,其中相应的字段指示有问题的 PO。
    猜你喜欢
    • 1970-01-01
    • 2010-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-04
    • 1970-01-01
    • 2017-05-05
    • 1970-01-01
    相关资源
    最近更新 更多