I am using the (kitten) example site from version 1.1 for building my site, but using the version 1.2 code. I'm trying to reproduce the single page checkout so this was just easier. Even though I have a shipping provider set up in the backoffice, I can not get it to show on the site (in the checkout process). I've come across some errors in the log file:
ERROR Merchello.Core.Strategies.Packaging.ShippableProductVisitor - [Thread 347] ProductVariant marked as shippable was not assoicated with a WarehouseCatalog. Product was: 7c4c4b0a-6d8a-47ad-9ef0-d90b120a88d3 - WRJ Rhinestone Hoodie - S System.IO.InvalidDataException: Found invalid data while decoding.
ERROR Merchello.Core.Gateways.Shipping.ShippingGatewayProviderBase - [Thread 347] ShipMethods could not be determined for Shipment passed to GetAvailableShipMethodsForDestination method. Validator returned: ErrorNoCatalogFound System.ArgumentException: merchWarehouseCatalogKey
ERROR Merchello.Core.Gateways.Shipping.ShippingGatewayProviderBase - [Thread 347] ShipMethods could not be determined for Shipment passed to GetAvailableShipMethodsForDestination method. Attempt message: No CatalogKeys found in Shipment Items System.ArgumentException: merchWarehouseCatalogKey
I tried to debug the issue and the only thing that I could seem to find that wasn't working correctly was in the file - \src\Merchello.Core\Strategies\Packaging\DefaultWarehousePackagingStrategy.cs. In line 66 it is requesting "variant.CatalogInventories" but it is always coming out as null. I also noticed a comparison that wasn't working 3 lines before it:
var variant = variants.FirstOrDefault(x => x.Key.Equals(lineItem.ExtendedData.GetProductVariantKey()));.
In the debugger, I could see that the 2 guids being compared were different. x.Key was getting set to the ProductAttribute (DB table) primary key, and the lineItem.ExtendedData.GetProductVariantKey() was getting the ProductVariant (DB table) primary key.
Has anyone come across any of those 3 errors, or have any idea how to get this shipping provider options working?
What is happening there is the catalog key is for some reason is not being serialized with the basket line item so the basket packaging routine can't determine a shipping origin.
Do you have inventory set for the products you are adding to the basket or do you not tracking inventory?
I'd be happy to help trouble shoot this - would you mind setting up a Skype call?
I am not tracking any inventory. I don't currently use Skype at work, but I can look into installing it. I assume afternoon/evening are the best times for you?
In the meantime, do you have any suggestions for me to try or any specific code to look into to see where the issue is?
What is happening is the shipping gateway method (the thing responsible for quoting a shipment rate) cannot find the "warehouse catalog key" in the line item. It needs this so that it can figure out the origin address of the shipment which is the warehouse address.
What should happen, even if your not tracking inventory, record in the merchCatalogInventory table providing the relationship between the product variant and the warehouse catalog (and thus the warehouse).
Can you confirm that there are records in that table? I'm not sure why there wouldn't be but if not, we need to record a bug in issues.merchello.com and I will look into it.
So that your not stuck, try setting inventory on one or two of your products and see if you can get shipping rates with those.
Alex, there was some refactoring in 1.6.0 and again in 1.7.0 relating to inventory issues. Is this happening to only products with variants after you manipulate something on a variant or futz with the options again?
It's only products with variants but I think just when we add the variants - because we tried recreating the product. It appears to be the same problem Ryan reported back in July (same project), but not sure why it reappeared. I don't think they are adding more products for a while, so for now, we will just run the SQL insert if we run into the problem again but I suppose we should upgrade to the latest Merchello.
In 1.6.0 we added some assertions that all variants were created for each possible option choice and also added an availability toggle. I have not seen the problem resurface since that time. There was some additional refactoring done in 1.7.0 which mainly had to do with inventory and multi-catalog functionality. Let's chat about the upgrade at uWestFest when I see you.
My problem was to do with my product importer - as products were being created programmatically, it was necessary to have products added to my default inventory catalog.
Hope that is of some help to anyone experiencing this issue
Shipping method issue
I am using the (kitten) example site from version 1.1 for building my site, but using the version 1.2 code. I'm trying to reproduce the single page checkout so this was just easier. Even though I have a shipping provider set up in the backoffice, I can not get it to show on the site (in the checkout process). I've come across some errors in the log file:
ERROR Merchello.Core.Strategies.Packaging.ShippableProductVisitor - [Thread 347] ProductVariant marked as shippable was not assoicated with a WarehouseCatalog. Product was: 7c4c4b0a-6d8a-47ad-9ef0-d90b120a88d3 - WRJ Rhinestone Hoodie - S System.IO.InvalidDataException: Found invalid data while decoding.
ERROR Merchello.Core.Gateways.Shipping.ShippingGatewayProviderBase - [Thread 347] ShipMethods could not be determined for Shipment passed to GetAvailableShipMethodsForDestination method. Validator returned: ErrorNoCatalogFound System.ArgumentException: merchWarehouseCatalogKey
ERROR Merchello.Core.Gateways.Shipping.ShippingGatewayProviderBase - [Thread 347] ShipMethods could not be determined for Shipment passed to GetAvailableShipMethodsForDestination method. Attempt message: No CatalogKeys found in Shipment Items System.ArgumentException: merchWarehouseCatalogKey
I tried to debug the issue and the only thing that I could seem to find that wasn't working correctly was in the file - \src\Merchello.Core\Strategies\Packaging\DefaultWarehousePackagingStrategy.cs. In line 66 it is requesting "variant.CatalogInventories" but it is always coming out as null. I also noticed a comparison that wasn't working 3 lines before it:
var variant = variants.FirstOrDefault(x => x.Key.Equals(lineItem.ExtendedData.GetProductVariantKey()));.
In the debugger, I could see that the 2 guids being compared were different. x.Key was getting set to the ProductAttribute (DB table) primary key, and the lineItem.ExtendedData.GetProductVariantKey() was getting the ProductVariant (DB table) primary key.
Has anyone come across any of those 3 errors, or have any idea how to get this shipping provider options working?
Thanks!
Hi Ryan,
What is happening there is the catalog key is for some reason is not being serialized with the basket line item so the basket packaging routine can't determine a shipping origin.
Do you have inventory set for the products you are adding to the basket or do you not tracking inventory?
I'd be happy to help trouble shoot this - would you mind setting up a Skype call?
I am not tracking any inventory. I don't currently use Skype at work, but I can look into installing it. I assume afternoon/evening are the best times for you?
In the meantime, do you have any suggestions for me to try or any specific code to look into to see where the issue is?
Thanks
What is happening is the shipping gateway method (the thing responsible for quoting a shipment rate) cannot find the "warehouse catalog key" in the line item. It needs this so that it can figure out the origin address of the shipment which is the warehouse address.
What should happen, even if your not tracking inventory, record in the merchCatalogInventory table providing the relationship between the product variant and the warehouse catalog (and thus the warehouse).
Can you confirm that there are records in that table? I'm not sure why there wouldn't be but if not, we need to record a bug in issues.merchello.com and I will look into it.
So that your not stuck, try setting inventory on one or two of your products and see if you can get shipping rates with those.
Not sure why, but we were missing records for products with multiple variants. But inserting like the following fixed it:
insert into merchCatalogInventory (catalogKey, productVariantKey, [count], lowCount, updateDate, createDate) values ('B25C2B00-578E-49B9-BEA2-BF3712053C63', 'E3AFE15C-46E6-42FD-B2E1-CF589B3F02A9', 0, 0, getdate(), getdate())
We are running Merchello 1.5
Alex, there was some refactoring in 1.6.0 and again in 1.7.0 relating to inventory issues. Is this happening to only products with variants after you manipulate something on a variant or futz with the options again?
It's only products with variants but I think just when we add the variants - because we tried recreating the product. It appears to be the same problem Ryan reported back in July (same project), but not sure why it reappeared. I don't think they are adding more products for a while, so for now, we will just run the SQL insert if we run into the problem again but I suppose we should upgrade to the latest Merchello.
In 1.6.0 we added some assertions that all variants were created for each possible option choice and also added an availability toggle. I have not seen the problem resurface since that time. There was some additional refactoring done in 1.7.0 which mainly had to do with inventory and multi-catalog functionality. Let's chat about the upgrade at uWestFest when I see you.
I was having the same issue: "ProductVariant marked as shippable was not assoicated with a WarehouseCatalog.". In the end I found a solution here:
https://our.umbraco.org/projects/collaboration/merchello/merchello/84535-merchello-inventory-count-is-resetted-to-zero#comment-271147
My problem was to do with my product importer - as products were being created programmatically, it was necessary to have products added to my default inventory catalog.
Hope that is of some help to anyone experiencing this issue
is working on a reply...