Solved

Who to Upate Feild on other graph


Userlevel 2
Badge

 

i have code like this 

 

and   this my pxselect

public PXSelect<ITDeliveryPlanning.ITDeliveryPlanning,
            Where<ITDeliveryPlanning.ITDeliveryPlanning.orderNbr, Equal<Current<TransDeliveryPlanningDAC.orderNbr>>,
            And<ITDeliveryPlanning.ITDeliveryPlanning.lineNbr, Equal<Current<TransDeliveryPlanningDAC.lineNbr>>,
                And<ITDeliveryPlanning.ITDeliveryPlanning.lineReceiptNbr, IsNull>>>> ItemsPlanning;

 

why cant update the feild ?
i got error like this 

 

Please Help Me 

icon

Best answer by Naveen Boga 21 March 2023, 03:19

View original

9 replies

Userlevel 7
Badge +5

Are you wanting to add a new record or update an existing record?

 

Userlevel 2
Badge

hi Djngao,

 
i will update an existing record

Userlevel 2
Badge

i try this code too,

 

and success update record,
but if i add code 

.Where<ITDeliveryPlanning.ITDeliveryPlanning.orderNbr.Contains<TransDeliveryPlanningDAC.orderNbr.FromCurrent»

i got “Object reference not set to an instance of an object”. again

Userlevel 7
Badge +5

Typically that means that one of your variables hasn’t been instantiated yet. What is TransDeliverPlanningDAC and does it exist as an object?

You should be able to debug your source code and determine what objects haven’t been created yet.

Userlevel 2
Badge

using System;
using System.Collections.Generic;
using System.Collections;
using System.Text;
using PX.Common;
using PX.Data;
using PX.Objects.CM;
using PX.Objects.GL;
using PX.Objects.CS;
using PX.Objects.IN;
using PX.Objects.AP;
using PX.Objects.AR;
using PX.Objects.CR;
using PX.Objects.PM;
using PX.Objects.TX;
using PX.Objects.EP;
using SOOrder = PX.Objects.SO.SOOrder;
using SOLine4 = PX.Objects.SO.SOLine4;
using PX.Objects.SO;
using System.Linq;
using CRLocation = PX.Objects.CR.Standalone.Location;
using SiteStatus = PX.Objects.IN.Overrides.INDocumentRelease.SiteStatus;
using LocationStatus = PX.Objects.IN.Overrides.INDocumentRelease.LocationStatus;
using LotSerialStatus = PX.Objects.IN.Overrides.INDocumentRelease.LotSerialStatus;
using ItemLotSerial = PX.Objects.IN.Overrides.INDocumentRelease.ItemLotSerial;
using SiteLotSerial = PX.Objects.IN.Overrides.INDocumentRelease.SiteLotSerial;
using PX.Objects.AP.MigrationMode;
using PX.Objects.Common;
using PX.CS.Contracts.Interfaces;
using PX.Data.DependencyInjection;
using PX.LicensePolicy;
using PX.TaxProvider;
using PX.Objects.GL.FinPeriods.TableDefinition;
using PX.Objects.GL.FinPeriods;
using PX.Objects.Common.Extensions;
using PX.Objects.PO.LandedCosts;
using System.Runtime.Serialization;
using PX.Data.ReferentialIntegrity.Attributes;
using PX.Objects.Common.Bql;
using PX.Objects.Extensions.CostAccrual;
using PX.Data.BQL.Fluent;
using PX.Data.BQL;
using PX.Data.WorkflowAPI;
using PX.Objects.IN.Services;
using PX.Objects;
using PX.Objects.PO;
using ITDeliveryPlanning;
using static PX.Objects.PO.POOrderEntry_Extension;

namespace PX.Objects.PO
{
    public class POReceiptEntry_Extension : PXGraphExtension<POReceiptEntry>
    {

     

         #region Event Handlers

        public PXAction<PX.Objects.PO.POReceipt> AddPlanReciept;

        [PXButton(CommitChanges = true)]
        [PXUIField(DisplayName = "Add Plan Reciept")]
        protected IEnumerable addPlanReciept(PXAdapter adapter)
        {
            // Acuminator disable once PX1008 LongOperationDelegateSynchronousExecution [Justification]
            PXLongOperation.StartOperation(this.Base,
             delegate ()
             {

                 var lineplannbr = ItemsPlanning.SelectSingle();

                 var dataform = FormDeliveryPlanReceipt.Current;
                 var a = SelectFrom<ITDeliveryPlanning.ITDeliveryPlanning>
                 .Where<ITDeliveryPlanning.ITDeliveryPlanning.orderNbr.Contains<TransDeliveryPlanningDAC.orderNbr.FromCurrent>>
                 //And<ITDeliveryPlanning.ITDeliveryPlanning.lineNbr.IsEqual<TransDeliveryPlanningDAC.lineNbr.FromCurrent>.
                 //And<ITDeliveryPlanning.ITDeliveryPlanning.lineReceiptNbr.IsNull>>>
                 .View.Select(Base).TopFirst;

                 var b = SelectFrom<ITDeliveryPlanning.ITDeliveryPlanning>
                   .Where<ITDeliveryPlanning.ITDeliveryPlanning.orderNbr.IsEqual<TransDeliveryPlanningDAC.orderNbr.FromCurrent>.
                   And<ITDeliveryPlanning.ITDeliveryPlanning.lineNbr.IsEqual<TransDeliveryPlanningDAC.lineNbr.FromCurrent>.
                   And<ITDeliveryPlanning.ITDeliveryPlanning.lineReceiptNbr.IsNull.
                   And<ITDeliveryPlanning.ITDeliveryPlanning.linePlanNbr.IsEqual<TransDeliveryPlanningDAC.linePlanNbr.FromCurrent>>>>>
                   .View.Select(Base).TopFirst;
                 
                 var c = SelectFrom<POReceiptLine>.Where<POReceiptLine.pONbr.IsEqual<TransDeliveryRecieptDAC.orderNbr.FromCurrent>.
                And<POReceiptLine.pOLineNbr.IsEqual<TransDeliveryRecieptDAC.lineNbr.FromCurrent>.
                And<POReceiptLine.receiptNbr.IsEqual<TransDeliveryRecieptDAC.receiptNbr.FromCurrent>>>>
                 .View.Select(Base).TopFirst;
                 try
             {
                     ITDeliveryPlanningMaint graph = PXGraph.CreateInstance<ITDeliveryPlanningMaint>();
                     //if (dataform.LinePlanNbr == null)
                     //{
                         a.ReceiptNbr = dataform.ReceiptNbr;
                         a.LineReceiptNbr = c.LineNbr??12313;
                     graph.DataDeliveryPlanning.Update(a);
                         graph.Save.Press();
                         graph.Save.PressButton();
                         graph.Caches.Clear();
                     //}
                     //else {

                         //b.ReceiptNbr = dataform.ReceiptNbr;
                         //b.LineReceiptNbr = c.LineNbr;
                         //graph.DataDeliveryPlanning.Update(b);
                         //graph.Save.Press();
                         //graph.Save.PressButton();
                         //graph.Caches.Clear();

                     //}
                   


                     this.ViewDeliveryPlaneceipt.Cache.Clear();
                     this.ViewDeliveryPlaneceipt.View.RequestRefresh();
                 }
                 catch (Exception ex)
                 {
                     throw new Exception($"{a.PlaneID}");

                     throw new Exception($"{lineplannbr.PlaneID}"+ex.ToString());

                 }
             });

            return adapter.Get();


        }
        #endregion

        #region Select

        public PXFilter<TransDeliveryRecieptDAC> FormDeliveryPlanReceipt;

        public PXSelect<ITDeliveryPlanning.ITDeliveryPlanning,
            Where<ITDeliveryPlanning.ITDeliveryPlanning.orderNbr, Equal<Current<TransDeliveryPlanningDAC.orderNbr>>,
            And<ITDeliveryPlanning.ITDeliveryPlanning.lineNbr, Equal<Current<TransDeliveryPlanningDAC.lineNbr>>,
                And<ITDeliveryPlanning.ITDeliveryPlanning.lineReceiptNbr, IsNull>>>> ItemsPlanning;

        public PXSelectReadonly<ITDeliveryPlanning.ITDeliveryPlanning,
            Where<ITDeliveryPlanning.ITDeliveryPlanning.orderNbr, Equal<Current<TransDeliveryPlanningDAC.orderNbr>>,
            And<ITDeliveryPlanning.ITDeliveryPlanning.lineNbr, Equal<Current<TransDeliveryPlanningDAC.lineNbr>>,
                And<ITDeliveryPlanning.ITDeliveryPlanning.linePlanNbr,Equal<Current<TransDeliveryPlanningDAC.linePlanNbr>>>>>> PlanID;

        public PXSelectReadonly<POReceiptLine,
         Where<POReceiptLine.pONbr, Equal<Current<TransDeliveryRecieptDAC.orderNbr>>,
         And<POReceiptLine.pOLineNbr, Equal<Current<TransDeliveryRecieptDAC.lineNbr>>,
             And<POReceiptLine.receiptNbr,Equal<TransDeliveryRecieptDAC.receiptNbr>>>>> findreceipt;

        public PXSelectReadonly<ITDeliveryPlanning.ITDeliveryPlanning,
            Where<ITDeliveryPlanning.ITDeliveryPlanning.receiptNbr, Equal<Current<POReceipt.receiptNbr>>>> ViewDeliveryPlaneceipt;

        #endregion

        #region Form Dac

        [PXCacheName("TransDeliveryRecieptDAC")]
        public class TransDeliveryRecieptDAC : IBqlTable
        {
            #region PlaneID
            [PXDBIdentity(IsKey = true)]
            [PXUIField(DisplayName = "Plane ID")]
            public virtual int? PlaneID { get; set; }
            public abstract class planeID : PX.Data.BQL.BqlInt.Field<planeID> { }
            #endregion


            #region ReceiptNbr
            [PXString(15, IsUnicode = true,  InputMask = "")]
            [PXUIField(DisplayName = "Receipt Nbr", IsReadOnly = true)]
            [PXDefault(typeof(Search<POReceipt.receiptNbr, Where<POReceipt.receiptNbr, Equal<Current<POReceipt.receiptNbr>>>>), PersistingCheck = PXPersistingCheck.Nothing)]
            public virtual string ReceiptNbr { get; set; }
            public abstract class receiptNbr : PX.Data.BQL.BqlString.Field<receiptNbr> { }
            #endregion

            #region LineReceiptNbr
            [PXString(15, IsUnicode = true, InputMask = "")]
            [PXUIField(DisplayName = "Line Receipt Nbr", Required = true,Visibility = PXUIVisibility.SelectorVisible)]
            [PXSelector(typeof(Search2<POReceiptLine.lineNbr,
                LeftJoin<POReceipt,
                    On<POReceiptLine.receiptNbr, Equal<POReceipt.receiptNbr>>>,
                Where<POReceiptLine.receiptNbr, Equal<Current<POReceipt.receiptNbr>>>>),
            typeof(POReceiptLine.lineNbr), typeof(POReceiptLine.tranDesc), typeof(POReceiptLine.pONbr), typeof(POReceiptLine.pOLineNbr), typeof(POReceiptLine.pOType),
            DescriptionField = typeof(POReceiptLine.tranDesc),
            SubstituteKey = typeof(POReceiptLine.lineNbr),
            SelectorMode = PXSelectorMode.DisplayModeText)]
            public virtual string LineReceiptNbr { get; set; }
            public abstract class lineReceiptNbr : PX.Data.BQL.BqlString.Field<lineReceiptNbr> { }
            #endregion


            #region OrderNbr
            [PXString(15, IsUnicode = true, InputMask = "")]
            [PXUIField(DisplayName = "Order Nbr", Required = true)]
            [PXSelector(typeof(Search5<POReceiptLine.pONbr,
                InnerJoin<ITDeliveryPlanning.ITDeliveryPlanning,
                    On<POReceiptLine.pONbr, Equal<ITDeliveryPlanning.ITDeliveryPlanning.orderNbr>>, 
                    LeftJoin<POReceipt, On<POReceipt.receiptNbr, Equal<POReceiptLine.receiptNbr>>>>,
                Where<ITDeliveryPlanning.ITDeliveryPlanning.lineReceiptNbr, IsNull,
                        And<POReceiptLine.receiptNbr, Equal<Current<receiptNbr>>>>,
                Aggregate<GroupBy<POReceiptLine.pONbr>>>),
                typeof(POReceiptLine.pONbr), typeof(POReceiptLine.vendorID), typeof(POReceipt.vendorID_Vendor_acctName),
            SubstituteKey = typeof(POReceiptLine.pONbr),
            SelectorMode = PXSelectorMode.DisplayModeText)]

            public virtual string OrderNbr { get; set; }
            public string _OrderNbr;
            public abstract class orderNbr : PX.Data.BQL.BqlString.Field<orderNbr> {
            }
            #endregion

            #region LineNbr
            [PXInt()]
            [PXUIField(DisplayName = "PO Line Nbr", Required = true, Visibility = PXUIVisibility.SelectorVisible)]

            [PXSelector(typeof(Search5<POReceiptLine.pOLineNbr,
                InnerJoin<ITDeliveryPlanning.ITDeliveryPlanning,
                    On<POReceiptLine.pONbr, Equal<ITDeliveryPlanning.ITDeliveryPlanning.orderNbr>,
                        And<POReceiptLine.pOLineNbr, Equal<ITDeliveryPlanning.ITDeliveryPlanning.lineNbr>>>>,
                Where<ITDeliveryPlanning.ITDeliveryPlanning.lineReceiptNbr, IsNull,
                    And<POReceiptLine.pONbr, Equal<Current<orderNbr>>,
                        And<POReceiptLine.receiptNbr,Equal<Current<receiptNbr>>>>>,
                Aggregate<GroupBy<POReceiptLine.pOLineNbr>>>),
             typeof(POReceiptLine.tranDesc), typeof(POReceiptLine.pOLineNbr), typeof(POReceiptLine.lineNbr),
            DescriptionField = typeof(POReceiptLine.tranDesc),
            SubstituteKey = typeof(POReceiptLine.pOLineNbr),
            SelectorMode = PXSelectorMode.DisplayModeText, DirtyRead = true)]
            public virtual int? LineNbr { get; set; }
            public abstract class lineNbr : PX.Data.BQL.BqlInt.Field<lineNbr> { }
            #endregion

            #region LinePlanNbr
            [PXInt()]
            [PXUIField(DisplayName = "Delivery To", Required = true)]
            [PXSelector(typeof(Search<ITDeliveryPlanning.ITDeliveryPlanning.linePlanNbr,Where<ITDeliveryPlanning.ITDeliveryPlanning.orderNbr, 
                Equal<Current<orderNbr>>,
                And<ITDeliveryPlanning.ITDeliveryPlanning.lineNbr,
                    Equal<Current<lineNbr>>>>>),
            SubstituteKey = typeof(ITDeliveryPlanning.ITDeliveryPlanning.linePlanNbr),
            SelectorMode = PXSelectorMode.DisplayModeText, DirtyRead = true)]
            public virtual int? LinePlanNbr
            {
                get; set;

            }
            public abstract class linePlanNbr : PX.Data.BQL.BqlInt.Field<linePlanNbr> { }
            #endregion

            #region PlanDate
            [PXDate()]
            [PXUIField(DisplayName = "Plan Date", IsReadOnly = true)]
            public virtual DateTime? PlanDate { get; set; }
            public abstract class planDate : PX.Data.BQL.BqlDateTime.Field<planDate> { }
            #endregion

            #region ConfirmDate
            [PXDate()]
            [PXUIField(DisplayName = "Confirm Date", IsReadOnly = true)]
            public virtual DateTime? ConfirmDate { get; set; }
            public abstract class confirmDate : PX.Data.BQL.BqlDateTime.Field<confirmDate> { }
            #endregion

            #region DeliveryDate
            [PXDate()]
            [PXUIField(DisplayName = "Delivery Date", IsReadOnly = true)]
            public virtual DateTime? DeliveryDate { get; set; }
            public abstract class deliveryDate : PX.Data.BQL.BqlDateTime.Field<deliveryDate> { }
            #endregion

            #region QtyPlan
            [PXDBDecimal()]
            [PXUIField(DisplayName = "Qty Plan")]
            public virtual Decimal? QtyPlan { get; set; }
            public abstract class qtyPlan : PX.Data.BQL.BqlDecimal.Field<qtyPlan> { }
            #endregion

            #region GroupPlanDescription
            [PXString(225, InputMask = "")]
            [PXUIField(DisplayName = "Group Plan", IsReadOnly = true)]
            public virtual string GroupPlanDescription { get; set; }
            public abstract class groupPlanDescription : PX.Data.BQL.BqlString.Field<groupPlanDescription> { }
            #endregion

            #region GroupDeliveryDescription
            [PXString(225, InputMask = "")]
            [PXUIField(DisplayName = "Group Delivery", IsReadOnly = true)]
            public virtual string GroupDeliveryDescription { get; set; }
            public abstract class groupDeliveryDescription : PX.Data.BQL.BqlString.Field<groupDeliveryDescription> { }
            #endregion

            #region GroupItemDescription
            [PXString(255, InputMask = "")]
            [PXUIField(DisplayName = "Group Item")]
            public virtual string GroupItemDescription { get; set; }
            public abstract class groupItemDescription : PX.Data.BQL.BqlString.Field<groupItemDescription> { }
            #endregion

            #region StatusPlan
            [PXInt()]
            [PXDefault(2, PersistingCheck = PXPersistingCheck.Nothing)]
            [PXIntList(new int[] { 1, 2, 3 }, new string[] { "Unprocessed", "On Going", "Complete" })]
            [PXUIField(DisplayName = "Status Plan")]
            public virtual int? StatusPlan { get; set; }
            public abstract class statusPlan : PX.Data.BQL.BqlInt.Field<statusPlan> { }
            #endregion
        }
        #endregion

    }
}

Userlevel 2
Badge

hello,

 

this TransDeliverPlanningDAC DAC but not unbound  database

Userlevel 7
Badge +5

You should turn on debugging and step through the code in Visual Studio. Pause the code before you get to the line with the errors and check the state and value of your variables. You haven’t initialized something in the statement that you’re having the problem with.

Userlevel 7
Badge

Hi @Febri  were you able to find a solution? Thank you!

Userlevel 7
Badge +17

@Febri   

In this particular case, the error occurs when trying to access or assign values to objects or variables that have NULL values. This could be due to a variety of reasons such as incorrect initialization, unexpected inputs, or other programming errors.

 One way to do this is by checking the code block using a trace, which can help pinpoint the exact line of code where the error is occurring. Once the code block is identified, it's crucial to place a debug point to verify each object and variable that is being used in that block of code and there you will be find the solution.

 

hope this helps!

 

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