Question

Big Commerce sales price sync with wrong unit of measure (UOM)

  • 14 September 2021
  • 12 replies
  • 111 views

Userlevel 1
Badge +1

For some reason the pricing sync for Big Commerce when you have multiple units of measure enabled is to use the base unit and not the sales unit.  This is a major problem because customers build pricing based on the sales unit and not the base/stocking unit.  How do we go about getting this changed?  This is a critical issue for one of our clients.

 

https://help-2021r1.acumatica.com/Help?ScreenId=ShowWiki&pageid=994bc074-79eb-403b-81c4-9545d470a01d

Limitations of Sales Price Synchronization

  • UOM-specific prices: In Acumatica ERP, if the Multiple Units of Measure feature is enabled on the Enable/Disable Features (CS100000) form, you can define a sales price of an item for each of the units of measure in which your company sells this item. However, only prices defined for the base UOM can be exported to BigCommerce.

12 replies

Userlevel 4
Badge +1

@KurtBauer It should work. Please dont forget to publish the customization in 21.114. 

Userlevel 1
Badge +1

@KarthikGajendran I noticed build 21.111 is no longer available due to a critical bug.  Will this customization work in 21.114?

Thanks,

Kurt

Userlevel 1
Badge +1

@KarthikGajendran Thanks for the update.  The client has a POS integration with another vendor so I’ll need to coordinate the build upgrade.  I’ll keep you posted.

Thanks,

Kurt

Userlevel 4
Badge +1

 @KurtBauer could you please upgrade to 21.111. Our developer confirmed that there are many changes happened in that customization. So it would be easier for you to get the DB upgraded. 

Userlevel 1
Badge +1

@KarthikGajendran I have been able to fix the price list sync errors in BCPriceListProcessorEXT class to work with 21.108, but we are getting and Object Reference when trying to sync base prices.  The error is occurring in BCSalesPriceProcessor.SaveBucketsExport, but I’m thinking it is because of the customization to the FetchBucketsExport that is causing the issue.  If I unpublish the customization the base price sync works.  Below is the error.  Any ideas?

 

Error: [COMMERCE]: Object reference not set to an instance of an object.
Connector: BCC, Binding: 1, Entity: SP, SyncID: , LocalID: , ExternID:

System.NullReferenceException: Object reference not set to an instance of an object.
 Send
  Raised At: 9/29/2021 11:49:02 AM Screen: BC.50.15.00    
 Details:

9/29/2021 11:49:02 AM Error:
[COMMERCE]: Object reference not set to an instance of an object.
Connector: BCC, Binding: 1, Entity: SP, SyncID: , LocalID: , ExternID:

System.NullReferenceException: Object reference not set to an instance of an object.

   at PX.Commerce.BigCommerce.BCSalesPriceProcessor.SaveBucketsExport(List`1 buckets)
   at PX.Commerce.Core.BCProcessorBulkBase`3.ProcessExport(Nullable`1[] syncIDs)
   at PX.Commerce.Core.BCProcessorBulkBase`3.Process(List`1 operations, Nullable`1[] syncIDs)
   at PX.Commerce.Core.BCProcessorBase`3.Process(Nullable`1[] syncIDs)

Stack trace from event:
   at Serilog.Core.Logger.Write(LogEventLevel level, Exception exception, String messageTemplate, Object[] propertyValues)
   at Serilog.Core.Logger.Error[T0,T1](Exception exception, String messageTemplate, T0 propertyValue0, T1 propertyValue1)
   at PX.Commerce.Core.BCConnectorBase`1.LogError(BCLogScope scope, Exception ex)
   at PX.Commerce.Core.BCProcessorBase`3.Log(Nullable`1 syncID, SyncDirection direction, Exception error)
   at PX.Commerce.Core.BCProcessorBase`3.Process(Nullable`1[] syncIDs)
   at PX.Commerce.BigCommerce.BCConnector.Process(ConnectorOperation operation, Nullable`1[] syncIDs)
   at PX.Commerce.Core.BCProcessData.ProcessSync(RecordKey key, List`1 batch, List`1 list)
   at PX.Commerce.Core.BCPrioritizedFilteredProcessing.<>c__DisplayClass8_0.b__1(List`1 list)
   at PX.Data.PXProcessingBase`1.<>c__DisplayClass79_0.g__ProcessList|0(List`1 list, PXProcessingMessagesCollection`1 perrowmessage)
   at PX.Commerce.Core.BCPrioritizedFilteredProcessing.<>c__DisplayClass8_0.b__2(List`1 list)
   at PX.Data.PXLongOperation.<>c__DisplayClass17_0.b__0()
   at PX.Data.PXLongOperation.PerformOperation(Object arg)
   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
   at PX.Data.PXThreadPool.RunItem(RequestItem item)
   at PX.Data.PXThreadPool.Run()
   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Threading.ThreadHelper.ThreadStart()

Userlevel 1
Badge +1

@KarthikGajendran Thanks for the customization!  I had to make some small adjustments because the client is on build 21.108, and this was created for 21.111.  The SalesPricesInquiry.ExternalTemplateID is included in 111 that I commented out.  Also there was a DecimalPlaces extension on the Currency that also was causing an issue.  Since client has the same decimal precision in his main company and his currency I was able to use the currency precision from the common settings.

I’ll keep you posted, but I really appreciate the help.

Thanks,

Kurt

Userlevel 4
Badge +1

@KurtBauer  Please find the attached customization package. This lets you to export the prices for Sales UOM instead of Base UOM. 

Also, when the Sales Order is imported, the Sales Order line items be created with sales UOM instead Base UOM. 

The customization is created for 21R1. 

Userlevel 1
Badge +1

@KarthikGajendran Thanks for the update.  Are there any workarounds, customizations you can provide for the client to test, or 3rd party addons that would support multiple UOMs?  I need to provide the client something to review.  I’m sure they would be willing to test an out of band customization package until we can get a final build.

On BC, their products are showing the default price from the stock items screen that is in the sales unit, then underneath is the base unit price, and then when the order gets created in Acumatica I’m assuming it is being created with the base unit.

Thanks,

Kurt

Userlevel 4
Badge +1

@KurtBauer I have already created the ticket with our engineering team and we have planned it for the next sprint. Even when it is developed, mostly it would be available in 2021R1(29-Oct-21) and 2021R2(08-Oct-21) latest builds.  

Userlevel 1
Badge +1

@KarthikGajendran 

Any updates on a possible fix to the UOM issue?  The client cannot continue with testing and implementation without proper pricing.

Thanks,

Kurt Bauer

Userlevel 1
Badge +1

Karthik,

Thanks for the explanation.  It all makes sense.  

Could an update be made to the Last Modified Date on the ARSalesPrices table for the InventoryID and UOM to then cause the sync to recognize the change in the sales price record?

The client doesn’t plan on changing the sales unit on the inventory item, so I’m sure they would be fine with a small customization to use SalesUnit instead of BaseUnit in the BC Sync engine.

Thanks

Kurt

 

Userlevel 4
Badge +1

@KurtBauer Thanks for the question. 

It is designed as such because the Base unit of measure is not likely to change when compared with Sales unit of measure. Sales Price sync is complicated. Imagine you have synced the prices with UOM being EA with BigCommerce(BC) and then you simply go to Stock Item and change the UOM to PIECE but this change will not be reflected to Sales Price because the last modified date of the Sales Price will not be updated with this change of UOM in Stock Item. So the price from EA has to be removed and price from PIECE must be update in BC which will never be reflected. So that's why we say it is complicated and we went with the option which would have minimum changes. 

Nevertheless, your request is valid, we will discuss internally and get back to you. 

Thank you

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 — 2020  Acumatica, Inc. All rights reserved