更新SOLINESplit时出错引发错误:保存时“'相关文档'可能不为空”

时间:2017-07-10 03:33:26

标签: acumatica

我制作了一个UI(gridform)让用户查看SOLINESplit,SOLine,SOOrder(所有这些都是acumatica DAC) - 目标是能够更新/修改分配数量(数量) SOLINESplit轻松

Namespace AllocationUpdate
{
    public class AllocationUpdateEntry : PXGraph<AllocationUpdateEntry>
    {
        public PXSave<SOLineSplit> Save;
        public PXCancel<SOLineSplit> Cance;
        public PXSelectJoin<SOLineSplit, 
            RightJoin<SOLine, 
                On<SOLine.orderNbr, Equal<SOLineSplit.orderNbr>, 
                And<SOLine.inventoryID, Equal<SOLineSplit.inventoryID>,
                And<SOLine.subItemID, Equal<SOLineSplit.subItemID>>>>,
            RightJoin<SOOrder, 
                On<SOOrder.orderNbr, Equal<SOLine.orderNbr>>>>,
            Where<SOLineSplit.isAllocated, Equal<True>>> Document;

但是它抛出了关于OrderDate不能为空的错误。所以我在BLC中添加了ff代码:

public class SOLineCacheExtension : PXCacheExtension<SOLineSplit>
        {
            #region OrderDate
            public abstract class orderDate : IBqlField
            {
            }
            [PXDBDate]
            public DateTime? OrderDate { get; set; }
            #endregion

但现在它抛出“'相关文档'可能不为空”错误。 我尝试像在OrderDate中那样修改它,但无济于事。

我们如何解决这个问题?谢谢。

FYI。 SOLineSplit的相关文档就是这个领域:

#region refnoteID
 [PXRefNote]
 [PXUIField(DisplayName = "Related Document", Enabled = false)]
 public virtual Guid? RefNoteID { get; set; }
#endregion

2 个答案:

答案 0 :(得分:1)

尝试将以下PXSelect - s添加到Graph,以便SOLineSplit上的属性可以使用SOOrderSOLine的缓存。< / p>

public PXSelect<SOOrder,Where<SOOrder.orderNbr,Equal<Current<SOLineSplit.orderNbr>>,
     And<SOOrder.orderType,Equal<Current<SOLineSplit.orderType>>> CurrentOrder;

public PXSelect<SOLine,Where<SOLine.orderNbr,Equal<Current<SOLineSplit.orderNbr>>,
     And<SOLine.orderType,Equal<Current<SOLineSplit.orderType>>,
     And<SOLine.lineNbr,Equal<Current<SOLineSplit.lineNbr>>>> CurrentLine;

答案 1 :(得分:0)

我最后只是插入另一个(具有不同的数量)。我不认为它允许我更新它。但原始的非自定义Acumatica的行为似乎只是执行插入操作,因此,我的答案。