Solved

2020 R1-BigCommerce: How to fetch specific orders only, based on specific BigC order status


Userlevel 4
Badge

Hello Everyone,

For Acumatica 2020 R1 version, is there any possibility to fetch specific orders, based on specific BigCommerce order statuses from BigCommerce to Acumatica.

For an example: I want to fetch only the BigCommerce orders having order status as: “Awaiting Payment” and to import further in Acumatica.

Can we achieve this from any mappings/configurations or we have to do a specific customization. If customization is needed, can you please help with sample code.

 

Thank you in advance !

icon

Best answer by smarenich 2 July 2021, 20:02

View original

14 replies

Userlevel 7
Badge +3

Hi @vivekm !

Could you please try this customization approach?

public class BCSalesOrderProcessorExt : PXGraphExtension<BCSalesOrderProcessor>
{
public static bool IsActive() { return true; }

public delegate bool FilterImportRestrictorsDelegate(IMappedEntity record);

[PXOverride]
public virtual bool FilterImportRestrictors(IMappedEntity record, FilterImportRestrictorsDelegate baseMethod)
{
bool result = baseMethod(record); // calling the base method

if(!result)
{
MappedOrder order = record as MappedOrder;
if( order != null)
{
if (order.Extern.StatusId == OrderStatuses.VerificationRequired.GetHashCode())
return true;
}
}

return result;
}
}

basically it overrides filtering and returns overrides the result in case filtered because of the status.

Userlevel 7
Badge +2

@vivekm Have you tired something like the below? Please do and fetch it. In the Sync Status screen, you should see only the orders that are in Awaiting Payment status. This might work only for the future orders. 

 

Userlevel 7
Badge +3

@vivekm in 2021r1 the method signature has been changed.

It was: public virtual bool FilterImportRestrictors(IMappedEntity record), where True is filter, and False is continue.

now it is: public virtual FilterResult FilterImportRestrictors(IMappedEntity record), where FilterResult may have following statuses:

FilterStatus.Filtered - Item won’t be synced, but user can sync it manually
FilterStatus.Invalid - Item won’t be synced and user cannot sync it too.
FilterStatus.Ignore - Item will be ignored and won’t be added to the Sync History
FilterStatus.None - Item will be synced. 

 

Please note that on your screenshots, you have item with Manual Verification Required as Filtered. It won’t be synced, unless user chooses to sync it manually.

Filtered and Invalid lines are the in the sync Status for the information purpose, so user can understand why his item is not synchronizing. 

Userlevel 7
Badge +3

@FrankieDC order with gift cards has to be imported to Acumatica. If that does not work, it seems like a bug and I suggest you to create a case, so we can escalate it to the development.

Userlevel 4
Badge

Thank you @smarenich  for your input, the suggested approach and code sample is working as expected.

Userlevel 4
Badge

Hi @smarenich 

I am trying to implement the same for 21R1 (build 21.110.00032) but on package publishing getting error like: “Method Boolean FilterImportRestrictors(PX.Commerce.Core.IMappedEntity, FilterImportRestrictorsDelegate) in graph extension is marked as [PXOverride], but its signature is not compatible with original method”. I have Checked “BCSalesOrderProcessor” Base graph but not able to find any method with the same name.

  1. I commented the implementation and observed that the core connector itself fetches the BigC orders with “Manual Verification Required” status with Last Error message as: “The 1660 order has been skipped because the Manual Verification Required external order status is not supported.” but if we select the order and click on Sync button it is syncing.
  2. I believe the customization is no longer needed for 21R1 and core connecter by default fetches BigC orders with “Manual Verification Required” status.
  1. We have another scenario where we do not want to fetch certain orders based on status and we are using Filter condition to achieve this and is working as expected for 20R2. But in 21R1 even though with Filter conditions those orders are fetching, with Last Error message as: “The record has been filtered based on the filtering conditions specified on the Entities (BC202000) form.” and if we select the order and click on Sync button it is syncing. 

 

Can you please suggest the possibility as how we can achieve that, to not fetch certain BigC orders based on BigC order status.

 

 

Userlevel 4
Badge

Thank you very much @smarenich !

I am able to move forward with your suggestion.

Userlevel 1
Badge

Hi, I have similar problem in regard of gift certificate in Bigcommerce. After to customer purchase the GC it will automatically become completed status and the connector ac-bc filtered all the completed order thats why it will not go in Acumatica. Why is the best approach to sync it the Acumatica? Right now we manually change the status so that I will sync it to acumatica. Thank you

Userlevel 4
Badge

Thanks @KarthikGajendran, will verifywith that.

Userlevel 4
Badge

Hi @KarthikGajendran, as per your suggestion:

 

I added below 3 conditions for order status.

 

But on fetch I am not getting the order that has order status as “Manual Verification Required”.

 

Can you suggest on this please, as if I am missing anything here.

 

Thank you,

Userlevel 7
Badge +2

@vivekm The orders with status Manual Verification Required, Declined, Incomplete and Disputed are not imported by the connector. Those are treated as not valid orders.  

Userlevel 4
Badge

@KarthikGajendran is there any possibility to fetch orders with status “Manual Verification Required” as well along with other valid orders (that connector fetches currently) through a customization. 

Userlevel 7
Badge +2

@vivekm should be possible with a customization.

Userlevel 4
Badge

@KarthikGajendran Can you suggest the best possible way for the customization please and If possible a sample code piece will be very helpful.

I tried some implementation but no luck, have decompiled 2020 R1 BiCommerce dll (package: BigCommerce[20201128][10152020]) to review base implementation. Have extended BCSalesOrderProcessor graph, tried by overriding GetBucketsForImport() method, also tried by modifying RestrictImport() method from BCSalesOrderRestrictor class but here not able to find a proper way to modify it.

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