Solved

How do you deal with shipping updates in Shopify vs. Completed status of an order in Acumatica

  • 7 February 2024
  • 4 replies
  • 97 views

Userlevel 7
Badge +6

When you have a Shopify store, and you use integrated carriers, Shopify will update an order when the package is out for delivery and then when it’s delivered. In Shopify it will look this:

So, apparently, by this time, the order is shipped and completed in Acumatica.  But these order delivery updates trigger the Shopify Connector to try to update the order in Acumatica, which returns an error: The status of the {{order number}} order does not allow modifications. Please synchronize records manually.

Is there an elegant way to work around this?

Thank you, friends!

icon

Best answer by simonliang91 7 February 2024, 19:21

View original

4 replies

Userlevel 5
Badge +1

@Yuri Karpenko , we are using the “updated_at” field datetime data to identify the Shopify order whether is modified after import.

Usually we will skip the update process if the gap between “updated_at” in Order and “updated_at” in order fulfillment is less than 5 seconds. Or we will skip the sync process if order in ERP is completed or cancelled and the key info(Hash code based on the Id/Email/Phone/Order amount/tax/qty/Shipping address info) in the external order are the same. 

If you think you have additional logic to skip the order sync process, you can make a customization to override the method ControlModification() in SPSalesOrderProcessor graph, system will skip the update process if it return false. 

 

[PXOverride]
public Boolean ControlModification(IMappedEntity mapped, BCSyncStatus status, string operation, CancellationToken cancellationToken, ControlModificationDelegate baseMethod)
{
if (mapped is MappedOrder)
{
MappedOrder order = mapped as MappedOrder;
OrderData shopifyOrder = order?.Extern;
SalesOrder erpOrder = order?.Local;
if (operation == BCSyncOperationAttribute.ExternChanged && !order.IsNew && shopifyOrder != null && erpOrder != null && status?.PendingSync == false)
{
//Add your own logic here and return false if you want to skip the update process.
//return false;
}
}

return baseMethod(mapped, status, operation, cancellationToken);
}

 

Userlevel 2
Badge

@simonliang91 @josh.fischer @KarthikGajendran This is just a suggestion, but it would be great if these orders would just no longer show up as needing to be synced in the connector after it’s been Completed in Acumatica, unless a refund is initiated. Customers unnecessarily end up with A LOT of clutter in their invalid and aborted records tabs. 

Userlevel 7
Badge +2

@freddydelrio39  Like Simon said if the order in Acumatica is Completed and if there are no updates to Id/Email/Phone/Order amount/tax/qty/Shipping address info then the sync history record would stay as processed. 

Also, please note, Sync History(BC301000) is for error handling so you might need all the records. 

May be we should provide an ability to archive the records so that you do not see them in the regular tabs. 

If you think it is useful please note on this 

 

Userlevel 7
Badge +6

@KarthikGajendran , @simonliang91 , I will need to test this again, but our experience was different - that is, shipping updates were triggering updates in Acumatica.

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