Skip to main content
Solved

How to fix an error occurred during processing of the field InventoryID: Error: An incorrect type of extension has been requested?

  • 17 November 2022
  • 8 replies
  • 451 views

Forum|alt.badge.img

Hi All,

 

Can you help me about my concern, this is the scenario we do

 

  1. After publishing a customization, Test some procedures from Purchase Order (PO)
  2. Select vendor, In Document Details when I select the InventoryID, and the error suddenly appears and it says “error occurred during processing of the field InventoryID: Error: An incorrect type of extension has been requested ” 
  3. I also checked in Stock Items and all the inventory items are active

 

What should I do next?

 

Thanks

Best answer by Naveen Boga

Hi @acumaticapm182  I have modified the code. Please verify with the below code.

 

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using PX.Common;
using PX.Data;
using PX.Objects.GL;
using PX.Objects.CM;
using PX.Objects.CS;
using PX.Objects.CR;
using PX.Objects.TX;
using PX.Objects.IN;
using PX.Objects.EP;
using PX.Objects.AP;
using PX.Objects.AR;
using PX.Objects.SO;
using PX.TM;
using SOOrder = PX.Objects.SO.SOOrder;
using SOLine = PX.Objects.SO.SOLine;
//using Avalara.AvaTax.Adapter;
//using Avalara.AvaTax.Adapter.TaxService;
using PX.Objects.PM;
//using AvaAddress = Avalara.AvaTax.Adapter.AddressService;
//using AvaMessage = Avalara.AvaTax.Adapter.Message;
using CRLocation = PX.Objects.CR.Standalone.Location;
using PX.Objects.AP.MigrationMode;
using PX.Objects.Common;
using PX.Objects;
using PX.Objects.PO;

namespace PX.Objects.PO
{
    public class POOrderEntry_Extension : PXGraphExtension<POOrderEntry>
    {
        #region Event Handlers


        public PXSelect<POVendorInventory, Where<POVendorInventory.inventoryID, Equal<Required<POVendorInventory.inventoryID>>,
                        And<POVendorInventory.vendorID, Equal<Required<POVendorInventory.vendorID>>>>> POVendorInventoryView;

        public PXSelect<InventoryItem, Where<InventoryItem.inventoryID, Equal<Required<InventoryItem.inventoryID>>>> InventoryView;

        protected void POLine_OrderQty_FieldUpdated(PXCache cache, PXFieldUpdatedEventArgs e)
        {
            var row = (POLine)e.Row;
            CalcMultLevelDisc(cache, row);
        }



    protected void POLine_InventoryID_FieldUpdated(PXCache cache, PXFieldUpdatedEventArgs e)
        {
            var row = (POLine)e.Row;
            POLineExt polinxt = row.GetExtension<POLineExt>();
            POVendorInventory _povendorinv = POVendorInventoryView.SelectSingle(row.InventoryID, Base.Document.Current.VendorID);
            if (_povendorinv != null)
            {
                POVendorInventory povendorinvCache = POVendorInventoryView.Select(row.InventoryID, row.VendorID);
                if (povendorinvCache != null)
                {
                    POVendorInventoryExt _povendorinvext = povendorinvCache.GetExtension<POVendorInventoryExt>();
                    row.GetExtension<POLineExt>().UsrMultilevelDisc = row.GetExtension<POLineExt>().UsrMultilevelDisc;
                }
            }
            else
                row.GetExtension<POLineExt>().UsrMultilevelDisc = null;

            InventoryItem _stockitem = InventoryView.SelectSingle(row.InventoryID);
            PXCache itemCache = InventoryView.Cache;
            //InventoryItemExt _itemext = itemCache.GetExtension<InventoryItemExt>(_stockitem);
            if (_stockitem.GetExtension<InventoryItemExt>().UsrIsPhyCountRequired != null)
            {
                if (_stockitem.GetExtension<InventoryItemExt>().UsrIsPhyCountRequired == true)
                    cache.RaiseExceptionHandling<POLine.inventoryID>(e.Row, ((POLine)e.Row).InventoryID, new PXSetPropertyException("Physical count must be done prior to replenishment", PXErrorLevel.Warning));
            }
        }


        protected void POLine_UsrMultilevelDisc_FieldUpdated(PXCache cache, PXFieldUpdatedEventArgs e)
        {
            var row = (POLine)e.Row;
            CalcMultLevelDisc(cache, row);
        }

        protected void CalcMultLevelDisc(PXCache cache, POLine row)
        {
            //POOrder order = Base.Document.Current;
            if (row.CuryLineAmt == 0)
                return;

            //POLineExt polinxt = cache.GetExtension<POLineExt>(row);

            if (String.IsNullOrEmpty(row.GetExtension<POLineExt>().UsrMultilevelDisc))
                return;

            string[] _colstr = row.GetExtension<POLineExt>().UsrMultilevelDisc.Split(',');
            decimal? _runamt = row.CuryLineAmt;
            foreach (string str in _colstr)
            {
                _runamt = _runamt - (_runamt * (Convert.ToDecimal(str) / 100M));
            }
            cache.SetValueExt<POLine.discPct>(row, (((row.CuryLineAmt - _runamt) / row.CuryLineAmt) * 100M));
        }



        #endregion
    }
}

 

View original
Did this topic help you find an answer to your question?

Naveen Boga
Captain II
Forum|alt.badge.img+19

Hi, @acumaticapm182  This issue is caused by the code, Can you please share the customization code that you added in the Extended Graph code?


Forum|alt.badge.img

Hi @Naveen Boga 

 

This is the code (please see the text file)


Naveen Boga
Captain II
Forum|alt.badge.img+19

Hi @acumaticapm182  I have modified the code. Please verify with the below code.

 

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using PX.Common;
using PX.Data;
using PX.Objects.GL;
using PX.Objects.CM;
using PX.Objects.CS;
using PX.Objects.CR;
using PX.Objects.TX;
using PX.Objects.IN;
using PX.Objects.EP;
using PX.Objects.AP;
using PX.Objects.AR;
using PX.Objects.SO;
using PX.TM;
using SOOrder = PX.Objects.SO.SOOrder;
using SOLine = PX.Objects.SO.SOLine;
//using Avalara.AvaTax.Adapter;
//using Avalara.AvaTax.Adapter.TaxService;
using PX.Objects.PM;
//using AvaAddress = Avalara.AvaTax.Adapter.AddressService;
//using AvaMessage = Avalara.AvaTax.Adapter.Message;
using CRLocation = PX.Objects.CR.Standalone.Location;
using PX.Objects.AP.MigrationMode;
using PX.Objects.Common;
using PX.Objects;
using PX.Objects.PO;

namespace PX.Objects.PO
{
    public class POOrderEntry_Extension : PXGraphExtension<POOrderEntry>
    {
        #region Event Handlers


        public PXSelect<POVendorInventory, Where<POVendorInventory.inventoryID, Equal<Required<POVendorInventory.inventoryID>>,
                        And<POVendorInventory.vendorID, Equal<Required<POVendorInventory.vendorID>>>>> POVendorInventoryView;

        public PXSelect<InventoryItem, Where<InventoryItem.inventoryID, Equal<Required<InventoryItem.inventoryID>>>> InventoryView;

        protected void POLine_OrderQty_FieldUpdated(PXCache cache, PXFieldUpdatedEventArgs e)
        {
            var row = (POLine)e.Row;
            CalcMultLevelDisc(cache, row);
        }



    protected void POLine_InventoryID_FieldUpdated(PXCache cache, PXFieldUpdatedEventArgs e)
        {
            var row = (POLine)e.Row;
            POLineExt polinxt = row.GetExtension<POLineExt>();
            POVendorInventory _povendorinv = POVendorInventoryView.SelectSingle(row.InventoryID, Base.Document.Current.VendorID);
            if (_povendorinv != null)
            {
                POVendorInventory povendorinvCache = POVendorInventoryView.Select(row.InventoryID, row.VendorID);
                if (povendorinvCache != null)
                {
                    POVendorInventoryExt _povendorinvext = povendorinvCache.GetExtension<POVendorInventoryExt>();
                    row.GetExtension<POLineExt>().UsrMultilevelDisc = row.GetExtension<POLineExt>().UsrMultilevelDisc;
                }
            }
            else
                row.GetExtension<POLineExt>().UsrMultilevelDisc = null;

            InventoryItem _stockitem = InventoryView.SelectSingle(row.InventoryID);
            PXCache itemCache = InventoryView.Cache;
            //InventoryItemExt _itemext = itemCache.GetExtension<InventoryItemExt>(_stockitem);
            if (_stockitem.GetExtension<InventoryItemExt>().UsrIsPhyCountRequired != null)
            {
                if (_stockitem.GetExtension<InventoryItemExt>().UsrIsPhyCountRequired == true)
                    cache.RaiseExceptionHandling<POLine.inventoryID>(e.Row, ((POLine)e.Row).InventoryID, new PXSetPropertyException("Physical count must be done prior to replenishment", PXErrorLevel.Warning));
            }
        }


        protected void POLine_UsrMultilevelDisc_FieldUpdated(PXCache cache, PXFieldUpdatedEventArgs e)
        {
            var row = (POLine)e.Row;
            CalcMultLevelDisc(cache, row);
        }

        protected void CalcMultLevelDisc(PXCache cache, POLine row)
        {
            //POOrder order = Base.Document.Current;
            if (row.CuryLineAmt == 0)
                return;

            //POLineExt polinxt = cache.GetExtension<POLineExt>(row);

            if (String.IsNullOrEmpty(row.GetExtension<POLineExt>().UsrMultilevelDisc))
                return;

            string[] _colstr = row.GetExtension<POLineExt>().UsrMultilevelDisc.Split(',');
            decimal? _runamt = row.CuryLineAmt;
            foreach (string str in _colstr)
            {
                _runamt = _runamt - (_runamt * (Convert.ToDecimal(str) / 100M));
            }
            cache.SetValueExt<POLine.discPct>(row, (((row.CuryLineAmt - _runamt) / row.CuryLineAmt) * 100M));
        }



        #endregion
    }
}

 


Naveen Boga
Captain II
Forum|alt.badge.img+19

@acumaticapm182  Modified a little bit of code again in the above post just now. You can take the latest code from above. 


Forum|alt.badge.img

Hi @Naveen Boga 

 

Thanks for modifying my codes and the transactions for Purchase Order (Inserting InvetoryID) was successful

 

 


Naveen Boga
Captain II
Forum|alt.badge.img+19

@acumaticapm182  Glad that I helped you. Thanks for sharing the update!!


Forum|alt.badge.img

Hi @Naveen Boga 

 

For reference, what part of code you modified here?


Naveen Boga
Captain II
Forum|alt.badge.img+19

Hi @acumaticapm182  I see there is an issue with the code for extending of the DAC. I changed this code like my many places.

Issue Code

 

   POLineExt polinxt = cache.GetExtension<POLineExt>(row);

Fix Code

POLineExt polinxt = row.GetExtension<POLineExt>();


Reply


Cookie policy

We use cookies to enhance and personalize your experience. If you accept you agree to our full cookie policy. Learn more about our cookies.

 
Cookie settings