Skip to main content
Question

Cannot get a PXOveride signature (delegate) to work in 26R1 Self Service Portal

  • September 30, 2026
  • 15 replies
  • 81 views

Joe Schmucker
Captain II
Forum|alt.badge.img+3

I am trying to override a method in the Self Service Portal installed as MUI.  The error states that my signature doesn’t match the one I am overriding.  Looks correct to me...

	public class ICSInventoryLineMaint : PXGraphExtension<SPInventoryItemMaint>
{
public static bool IsActive() => true;

public delegate IEnumerable FetchItemsDelegate(FetchItemsSource source = FetchItemsSource.Catalog,
bool readOnly = false);
[PXOverride]
public IEnumerable FetchItems(FetchItemsSource source = FetchItemsSource.Catalog,
bool readOnly = false, FetchItemsDelegate base_FetchItems = null)
{

Here is a screen shot showing the squiggle

The original method signature is:

public virtual IEnumerable FetchItems(
FetchItemsSource source = FetchItemsSource.Catalog,
bool readOnly = false)
{

I set my delegate as optional as this is a necessary thing to do when there is an optional parameter in the original signature.

It looks like my signature matches the original.

Any idea what I have done wrong?

 

15 replies

Forum|alt.badge.img+8
  • Captain II
  • September 30, 2026

I think you want:

public IEnumerable FetchItems(
FetchItemsSource source,
bool readOnly,
FetchItemsDelegate base_FetchItems)
{
// Execute the base method
return base_FetchItems(source, readOnly);
}

Leave out the = false since your delegate is going to pass a value, it will never be optional. The = null for base_FetchItems isn’t necessary since it always has a value.

Also, and unrelated, what kind of hotkey madness is this:

 


Joe Schmucker
Captain II
Forum|alt.badge.img+3
  • Author
  • Captain II
  • September 30, 2026

​@Django Still get squiggles!  :-)

 

Same error.

Yea...that’s a lot of hotkey madness!!!!  LOL


Forum|alt.badge.img+8
  • Captain II
  • September 30, 2026

Can you try with virtual? You’re missing that.


Naveen Boga
Captain II
Forum|alt.badge.img+20
  • Captain II
  • October 1, 2026

​@Joe Schmucker  Can you please try with the below code?

 

   public class ICSInventoryLineMaint : PXGraphExtension<SPInventoryItemMaintExt, SPInventoryItemMaint>
{
public static bool IsActive() => true;

public delegate IEnumerable FetchItemsDelegate(FetchItemsSource source, bool readOnly);

[PXOverride]
public virtual IEnumerable FetchItems(FetchItemsSource source, bool readOnly, FetchItemsDelegate baseMethod)
{
IEnumerable result = baseMethod(source, readOnly);

// your logic here

return result;
}
}

 


Joe Schmucker
Captain II
Forum|alt.badge.img+3
  • Author
  • Captain II
  • October 1, 2026

​@Naveen Boga I had one error that the method must be public and non-virtual.

 

I get the exact same error with our without “virtual”.

 

Should I submit a support ticket with Acumatica?  I hate to keep bugging you guys.

 

 


Naveen Boga
Captain II
Forum|alt.badge.img+20
  • Captain II
  • October 1, 2026

​@Joe Schmucker  I don’t see any issue with this code.

 

Hope you have changed this syntax as well
 

public class ICSInventoryLineMaint : PXGraphExtension<SPInventoryItemMaintExt, SPInventoryItemMaint>{

}


 

 


Joe Schmucker
Captain II
Forum|alt.badge.img+3
  • Author
  • Captain II
  • October 1, 2026

Yup.  I did, but same error.

☹️

Another strange thing.  There is a call that is in my override that fails to reference SPInventoryItemMaintExt.  

Here is what I did to get the reference to work.

        var graph = PXGraph.CreateInstance<SPInventoryItemMaint>();
        var inventoryExt = graph.GetExtension<SPInventoryItemMaintExt>();

…..

inventoryExt.UpdatePriceParameters(Base, source == FetchItemsSource.Cart);

I tried Base.UpdatePriceParameters, but that also says I am missing a reference.

I don’t know if that will work, but at least I was able to get this override down to the signature issue only.  

FYI, I really hate working in the SSP!

 

 

 

 

 

 

inventoryExt


Naveen Boga
Captain II
Forum|alt.badge.img+20
  • Captain II
  • October 1, 2026

Joe, are you sure that you are working on 26 R1 or added related .dll files to your project.


Joe Schmucker
Captain II
Forum|alt.badge.img+3
  • Author
  • Captain II
  • October 1, 2026

I tried adding back virtual like you have, but that also shows an error.  I don’t know if it matters for that error.

I am attaching the entire VS project.  Maybe you will have different results with my project.  

I’m using VS 2022.  

Here are my dependencies in case that helps.

 


Naveen Boga
Captain II
Forum|alt.badge.img+20
  • Captain II
  • October 1, 2026

​@Joe Schmucker  Yeah, I can see that warning in Acuminator with your code. I’m not entirely sure why it is being triggered at this point.

For now, you can add the Acuminator comment to suppress this warning and proceed with the functionality verification and see if everything is good.


 

 


Joe Schmucker
Captain II
Forum|alt.badge.img+3
  • Author
  • Captain II
  • October 1, 2026

If you got the package to compile, can you send it to me?  I still have the signature error.  I’m baffled.

 

 


Naveen Boga
Captain II
Forum|alt.badge.img+20
  • Captain II
  • October 1, 2026

Sure. Attached here.

 

 


Joe Schmucker
Captain II
Forum|alt.badge.img+3
  • Author
  • Captain II
  • October 1, 2026

I think maybe suppressing the error won’t work.  In debug, the override code does not fire.

Maybe you guys can offer an alternate approach to what I am trying to do.  

I have a custom boolean field on the catalog screen that says “allow items to be show on the Portal” for the selected category in the tree.  If the flag is not set for the category, I want to NOT show the items from that category in the catalog.

I created a SQL view to join to the original BQL command to limit the results returned.  This logic works perfectly in 25R2.

The ONLY thing I need to add to this entire override is the join to my view:

                    cmd = new SelectFrom<SPInventoryItem>
                        .InnerJoin<INItemCategory>.On<INItemCategory.inventoryID.IsEqual<SPInventoryItem.inventoryID>>
                        .InnerJoin<ICSInventorySummaryView>.On<ICSInventorySummaryView.inventoryID.IsEqual<SPInventoryItem.inventoryID>>
                        .Where<INItemCategory.categoryID.IsIn<@P.AsInt>
                            .And<SPInventoryItem.itemStatus.IsNotEqual<InventoryItemStatus.inactive>>
                            .And<SPInventoryItem.itemStatus.IsNotEqual<InventoryItemStatus.markedForDeletion>>>
                        .OrderBy<SPInventoryItem.inventoryCD.Asc>();

 

Perhaps I can do something on RowInserting or something where I check if the item is in a valid category and dismiss the record if it should not be shown.

Since the bql command is executed inside the method I am overriding, I don’t think my rowinserting would fire.

Since the only thing I want to do is restrict selected records, can you think of a way to restrict the result set without overriding the method?  Overriding it seems to be a problem.

 


Forum|alt.badge.img+8
  • Captain II
  • October 1, 2026

I could be wrong but I feel like the portal code went through a bunch of changes between your original version and 26R1 and that’s why your customization isn’t working.

FetchItems is part of SPInventoryItemExt

Your extension is working on SPInventoryItemMaint and FetchItems is pulled in via:

protected virtual IEnumerable sPInventoryItem()
{
return GetExtension<SPInventoryItemMaintExt>()?.FetchItems();
}

I think you want to create an extension of SPInventoryItemMaintExt and, in that, override FetchItems.

 


Joe Schmucker
Captain II
Forum|alt.badge.img+3
  • Author
  • Captain II
  • October 1, 2026

​@Django  my class extension does include SPInventoryItemMaintExt.  

public class ICSInventoryLineMaint : PXGraphExtension<SPInventoryItemMaintExt, SPInventoryItemMaint>

I’m not a good programmer and sorry for being thick.  I don’t know how to implement your code in my project.

Where would I call sPInventoryItem in my graph extension?

I will pay someone to do this for me.  PM if you are interested.  My inexperience is probably wasting everyone’s time.