Solved

Release action in Labor screen to carry forward customized field values to Receipt

  • 19 April 2022
  • 2 replies
  • 52 views

Userlevel 4
Badge

Hi Team,

I have 2 customized fields(“COO, Date Code”) in LineDetails on Labor Screen, upon release i want to insert these field values to LineDetails in Receipt. I’m using the below code to do so, but it is not insert the fields in Receipt. could you please help me on this.

 

 

namespace PX.Objects.AM
{
    public class LaborEntry_Extension : PXGraphExtension<LaborEntry>
    {
        #region Event Handlers
        public delegate IEnumerable ReleaseDelegate(PXAdapter adapter);
        [PXOverride]
        public IEnumerable Release(PXAdapter adapter, ReleaseDelegate baseMethod)
        {
            var amtransplit = Base.splits.Select().FirstTableItems.ToList();
            amtransplit.ForEach(f =>
            {
                f.ExpireDate = DateTime.Now;
                Base.splits.Update(f);
                Base.Save.Press();
            });

            baseMethod(adapter);
            PXLongOperation.WaitCompletion(Base.UID);
            var amheader = Base.batch.Current;
            if (amheader != null)
            {
                
                var inreceiptGraph = PXGraph.CreateInstance<INReceiptEntry>();

                var batchHeader = PXSelect<INRegister, Where<INRegister.docType, Equal<INDocType.receipt>, And<INRegister.srcRefNbr, Equal<Required<INRegister.srcRefNbr>>>>>.Select(Base, amheader.BatNbr).FirstTableItems.FirstOrDefault();   
                if (batchHeader != null)
                {
                    inreceiptGraph.receipt.Current = batchHeader;
                    amtransplit.ForEach(f =>
                    {
                        var amsplitExt = f.GetExtension<AMMTranSplitExt>();
                        var splits = PXSelect<INTranSplit, Where<INTranSplit.docType, Equal<INDocType.receipt>, And<INTranSplit.refNbr, Equal<Required<INTran.refNbr>>, And<INTranSplit.lineNbr, Equal<Required<INTran.lineNbr>>>>>>.Select(Base, batchHeader.RefNbr, f.LineNbr).FirstTableItems.FirstOrDefault();

                        if (splits != null)
                        {
                            var intranExt = splits.GetExtension<INTranSplitExt>();
                            intranExt.UsrCOO = amsplitExt.UsrCOO;
                            intranExt.UsrDateCode = amsplitExt.UsrDateCode;
                            inreceiptGraph.splits.Update(splits);
                            inreceiptGraph.Save.Press();
                        }
                    });
                }
            }
            return adapter.Get();
        }
        #endregion
    }
}

 

icon

Best answer by Naveen Boga 20 April 2022, 06:17

View original

2 replies

Userlevel 7
Badge +17

Hi @ramya15  

Hope you are doing well!

In the RELEASE action, basemethod should be invoked at last, because once basemethod is invoked then document will not available to insert/update the values.

 

You can have an INTran insertion code before the basemethod and verify.

 

Userlevel 4
Badge

Hi @Naveen Boga,

Thank you so much. It’s working.

 

Regards,

Ramya

Reply


About Acumatica ERP system
Acumatica Cloud ERP provides the best business management solution for transforming your company to thrive in the new digital economy. Built on a future-proof platform with open architecture for rapid integrations, scalability, and ease of use, Acumatica delivers unparalleled value to small and midmarket organizations. Connected Business. Delivered.
© 2008 — 2024  Acumatica, Inc. All rights reserved