首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Acumatica修订

Acumatica修订
EN

Stack Overflow用户
提问于 2021-02-25 10:47:24
回答 1查看 92关注 0票数 0

我们有2个DAC -硕士和儿童

主DAC

代码语言:javascript
复制
#region MasterID
public abstract class masterID:PX.Data.BQL.BqlInt.Field<masterID> { }
protected int? _MasterID;
[PXDBIdentity()]
[PXUIField(Visibility = PXUIVisibility.Invisible)]
[PXReferentialIntegrityCheck]
public virtual int? MasterID
{
    get {return this._MasterID;}
    set {this._MasterID = value;}
}
#endregion

#region MasterCD
public abstract class masterRoutingCD:PX.Data.BQL.BqlString.Field<masterCD> { }
protected string _MasterRoutingCD;
[BomID(DisplayName = "Master #", IsKey = true, Required = true,
    Visibility = PXUIVisibility.SelectorVisible)]
[PXDefault]
[Rev.Key(typeof(Setup.pMMasterNumberSequenceID),
         typeof(Master.masterCD),
         typeof(Master.revisionNo),
         typeof(Master.masterCD),
         typeof(Master.revisionNo)
    )]

public virtual string MasterCD
{
    get {return this._MasterCD;}
    set {this._MasterCD = value;}
}
#endregion

#region RevisionNo
public abstract class revisionNo:PX.Data.IBqlField { }
protected string _RevisionNo;
[RevisionIDField(IsKey = true, Visibility = PXUIVisibility.SelectorVisible,
    Required = true)]
[PXDefault(typeof(Master.defaultRevisionNo),
    PersistingCheck = PXPersistingCheck.Nothing)]
[Rev.ID(typeof(Master.defaultRevisionNo),
        typeof(Master.masterCD),
        typeof(Master.revisionNo),
        typeof(Master.revisionNo),
        typeof(Master.description),
        typeof(Master.fromDate),
        typeof(Master.toDate))]
public virtual string RevisionNo
{
    get {return this._RevisionNo;}
    set {this._RevisionNo = value;}
}
#endregion

儿童发援会

代码语言:javascript
复制
public abstract class childID:PX.Data.BQL.BqlInt.Field<childID> { }
protected int? _ChildID;
[PXDBIdentity()]
//[PXReferentialIntegrityCheck]
public virtual int? ChildID
{
  get {return this._ChildID;}
  set {this._ChildID = value;}
}
#endregion

#region MasterID
public abstract class masterID:PX.Data.BQL.BqlInt.Field<masterID> { }
protected int? _MasterID;
[PXDBInt()]
[PXDBDefault(typeof(Master.masterID))]
[PXParent(typeof(Select<Master, Where<Master.masterRoutingCD, Equal<Current<masterCD>>,
    And<Master.revisionNo, Equal<Current<revisionNo>>>>>))]
public virtual int? MasterID
{
  get {return _MasterID;}
  set {_MasterID = value;}
}
#endregion MasterID

#region MasterCD
public abstract class masterCD:PX.Data.BQL.BqlString.Field<masterCD> { }
protected string _MasterCD;
[PXDBDefault(typeof(Master.masterCD))]
[PXDBString(IsKey = true, IsUnicode = true)]
public virtual string MasterCD
{
    get {return this._MasterCD;}
    set {this._MasterCD = value;}
}
#endregion

#region Revision
public abstract class revisionNo:PX.Data.BQL.BqlString.Field<revisionNo> {}
[PXDBString(15, IsKey = true, IsUnicode = true)]
[PXDBDefault(typeof(Master.revisionNo))]
public virtual string RevisionNo { get; set; }
#endregion Revision

public abstract class stepsID:PX.Data.BQL.BqlInt.Field<stepsID> { }
[OperationCDField(IsKey =true, DisplayName = "Steps ID",
    Visibility = PXUIVisibility.SelectorVisible)]
[PXDefault(PersistingCheck = PXPersistingCheck.NullOrBlank)]
//[PXUIField(DisplayName = "Process Steps ID")]
public virtual string StepsID { get; set; }

图- MasterMaint

代码语言:javascript
复制
public class MasterMaint:PXRevisionableGraph<MasterMaint, Master,
    Master.masterCD, Master.revisionNo>
{
    public PXSelect<Child, Where<Child.masterCD, Equal<Current<Master.masterCD>>,
        And<Child.revisionNo, Equal<Current<Master.revisionNo>>>>> ChildRecords;

    #region Override

    public override bool CanClipboardCopyPaste()
    {
        return false;
    }

    public override bool CanCreateNewRevision(MasterMaint fromGraph, MasterMaint toGraph,
        string keyValue, string revisionValue, out string error)
    {
        // Always returns true as new revisions can be created at any time
        error = string.Empty;
        return true;
    }
   
    public override void CopyRevision(MasterMaint fromGraph, MasterMaint toGraph,
        string keyValue, string revisionValue)
    {
        if(toGraph?.Documents?.Current == null || fromGraph?.Documents?.Current == null)
        {
            // api calls should create new revs on their own - this causes issues
            // when calling from api so we need to turn the copy rev logic off
            return;
        }
        toGraph.Documents.Cache.SetDefaultExt<EWPMMasterRouting.status>
            (toGraph.Documents.Current);
        if(SkipAutoCreateNewRevision())
        {
            return;
        }
        CopyChildRecords(fromGraph.Documents.Current.MasterRoutingCD,
            fromGraph.Documents.Current.RevisionNo, toGraph.Documents.Current.MasterID,
            keyValue, revisionValue, false);
    }

  
    internal virtual void CopyChildRecords(string sourceID, string sourceRevisionNo,
        int? newMasterID, string newMasterCD, string newRevisionID, bool copyNotes)
    {
        foreach(Child fromRow in PXSelect<Child,
            Where<Child.masterCD, Equal<Required<Child.masterCD>>,
                And<Child.revisionNo, Equal<Required<Child.revisionNo>>>>>
            .Select(this, sourceID, sourceRevisionNo))
        {
            var toRow = PXCache<Child>.CreateCopy(fromRow);
            toRow.MasterID = newMasterRoutingID;
            toRow.ChildID = null;
            toRow.MasterCD = newMasterCD;
            toRow.RevisionNo= newRevisionID;
            toRow = ChildRecords.Insert(toRow);
        }
    }

    #endregion
}

问题-当在修订版中更改值时,将显示带有新修订号的记录,以保存CD字段,就像以前的修订和所有子版本一样。这是正确的,但是当保存记录时,存在错误“另一个进程已经更新了记录,您的更改将丢失”为什么有错误“

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-09 21:56:06

在NoteID中,我们在整个系统中都有唯一的NoteID列,如果您试图创建一个具有复制NoteID字段值的记录,您将得到“另一个进程已经更新了记录”异常,因为它认为您正在更新相同的记录。在您的情况下,当您复制修订时,您不会重置记录的NoteID值,因此您实际上尝试使用相同的值插入另一条记录。

您需要在CopyRevision方法中添加以下行

代码语言:javascript
复制
toGraph.Documents.Cache.SetDefaultExt<EWPMMasterRouting.noteID>(toGraph.Documents.Current);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66367022

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档