@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
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
@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
@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.
@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
@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.
@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
@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: | 3COMMERCE]: 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`1e] syncIDs) at PX.Commerce.Core.BCProcessorBulkBase`3.Process(List`1 operations, Nullable`1o] syncIDs) at PX.Commerce.Core.BCProcessorBase`3.Process(Nullable`1a] syncIDs)
Stack trace from event: at Serilog.Core.Logger.Write(LogEventLevel level, Exception exception, String messageTemplate, Objectn] propertyValues) at Serilog.Core.Logger.ErroraT0,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`1P] syncIDs) at PX.Commerce.BigCommerce.BCConnector.Process(ConnectorOperation operation, Nullable`1e] 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() |
@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.
@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
@KarthikGajendran I noticed build 21.111 is no longer available due to a critical bug. Will this customization work in 21.114?
Thanks,
Kurt
@KurtBauer It should work. Please dont forget to publish the customization in 21.114.
Is there a version of the customization for 2021R2? My client needs to sell the product on BC using the Stock UOM. Apparently BC does not have a concept of units of measure.
@dgodsill97 You can try to publish the customization on your required version and check if it is working. I just tried in 21.206 and I have some issues. I have request our developers to fix it. Once it is fixed then I will upload it here. In 22R1, it is available out-of-box and you do not require a customization.
Yes, it complies but fails to publish on my 2021R2. I can’t upgrade the customer to an unreleased version.
@dgodsill97 We will provide you a customization for 21R2. But if your customer is interested in 22R1, it is going to released exactly in a week on 16th March 2022. Also, what do you mean by Stock UOM in your reply? Do you mean Sales? Please clarify.
Yes, I did mean sales UOM. The customer is live on 2021R2 and needs to get commerce going ASAP per their CEO. They have fittings stocked in EA but need to sell in packages of 25 in Big Commerce.
Thanks for your help. When can the customization be ready?
@dgodsill97 Please use the attached customization for BigCommerce Order importing with Sales UOM and Sales Price exporting with Sales UOM.
Is being able to use the Sales UOM now in the core product and will it work with customer price classes? The client has minimum order qtys for some products and this would be a work around. thanks.
@dgodsill97 Yes, in 22R2, you can use Sales UOM for product and sales price sync.
@KarthikGajendran , which package may I use for 22R1 to ‘fix’ the export of Product Availability to BigCommerce to convert inventory qty from Base to Sales UOM? I.e. if Sales UOM is different than base UOM, I want the connector to calculate the quantity on the fly using the conversion factor. Thank you sir!