Rank: Advanced Member
Groups: HelpDesk, Developers Joined: 11/9/2018(UTC) Posts: 564
Thanks: 122 times Was thanked: 26 time(s) in 25 post(s)
|
Currently when you upgrade Gold to v9, all shipping methods are lost. And all shipping gateways are gone.
The problem comes when you upgrade a live site with unshipped orders. You cannot ship an order that doesn't have a valid ship method assigned to it. The Ship button isn't available.
You have to re-add the ship gateway(s), re-add all of the ship methods and then recreate all of your warehouse/group assignments. That's no small task in a bigger store.
Then you have to update every open order to set the new ship method assignment. In a small store with 5 orders a day, that's not such a big deal. But what about the stores that do 50 orders a day? 200 orders a day? 600 orders a day?
You can't expect them to manually pull up every single order and manually re-assign a ship method so it can be processed. And I haven't even explored the consequences of external integrations like ShipStation or WorldShip. They surely aren't going to like shipments with missing ship methods assigned to them.
It's like the upgrade design just stops after it converts the data - it doesn't take into account specific store configuration. And that's a big problem with big stores.
|
|
|
|
Rank: Advanced Member
Groups: Authorized User, Developers, Registered, HelpDesk Joined: 1/7/2019(UTC) Posts: 112
Thanks: 1 times Was thanked: 2 time(s) in 2 post(s)
|
Hi Joe,
Further on this, the shipping button does still exist showing the method originally spec'd in the order. However the shipping method in the order may not match up to methods that must be redefined when adding the carrier gateway back into the new version.
When the shipping notification goes out, the tracking number showing in the message doesn't link up to the carrier site.
To fix this, the admin side would need to re-specify the shipping method for each order as you've noted so that proper notification and tracking links are established.
-Jeff
|
|
|
|
Rank: Administration
Groups: Admin, Administrators, HelpDesk, System, Authorized User, Developers, Registered Joined: 10/5/2018(UTC) Posts: 175
Thanks: 8 times Was thanked: 17 time(s) in 15 post(s)
|
Hi, We are able to reproduce this issue, it seems to happen when application tires to automatically locate and install the plugins needed for any configured provider. A workaround could be to manually request the plugins to be installed before starting the upgrade. For example if you have USPS gateway configured in gold and upgrading to v9 then you can update your /App_Data/InstallPlugins.xml file to look like Code:
<?xml version="1.0" encoding="utf-8"?>
<InstalledPlugins>
<Plugin>
<PluginName>USPS</PluginName>
<InstalledOn>2020-11-11T09:53:01.074379Z</InstalledOn>
<Pending>true</Pending>
</Plugin>
</InstalledPlugins>
Make sure to make some change in your web.config like putting an extra blank line at the end to make sure application restarts when you proceed with upgrade. This is required because we want plugin framework to stage the USPS for install during upgrade. Once upgrade is complete, go to admin -> plugins and you will be seeing a dialog requesting confirmation about installing the USPS plugin. Go ahead and proceed with plugin install, after successful plugin install you should be able to see your gateway data upgraded from gold. Quote: You can't expect them to manually pull up every single order and manually re-assign a ship method so it can be processed. And I haven't even explored the consequences of external integrations like ShipStation or WorldShip. They surely aren't going to like shipments with missing ship methods assigned to them.
One way to fix the data could be to install the plugin, setup gateway and ship methods. We have the ship method name label stored with shipments so what we can do is to rescan the ship methods and try to link them back with order shipments using their names. For example you can try the following script to fix the broken link between ac_OrderShipments and ac_ShipMethods. Please make sure to backup your database before trying this script!Code:
DECLARE OrderShipments CURSOR
FOR (SELECT OS.OrderShipmentId, OS.ShipMethodName FROM ac_OrderShipments AS OS
INNER JOIN ac_Orders AS O ON OS.OrderId = O.OrderId WHERE O.ShipmentStatusId = 1 AND OS.ShipMethodId IS NULL AND OS.ShipMethodName IS NOT NULL);
OPEN OrderShipments;
DECLARE @OrderShipmentId INT;
DECLARE @ShipMethodName VARCHAR(255);
FETCH NEXT FROM OrderShipments INTO @OrderShipmentId, @ShipMethodName;
WHILE @@FETCH_STATUS = 0
BEGIN
print 'Fixing order shipment id ' + CAST(@OrderShipmentId AS VARCHAR) + ', locating ship method with name "' + @ShipMethodName + '"';
UPDATE ac_OrderShipments SET ShipMethodId = ( SELECT ShipMethodId FROM ac_ShipMethods WHERE Name = '' +@ShipMethodName + '' ) WHERE OrderShipmentId = @OrderShipmentId
FETCH NEXT FROM OrderShipments INTO @OrderShipmentId, @ShipMethodName;
END;
CLOSE OrderShipments;
DEALLOCATE OrderShipments;
Regards Edited by user Wednesday, November 11, 2020 4:58:17 AM(UTC)
| Reason: Not specified
|
|
|
|
Rank: Advanced Member
Groups: HelpDesk, Developers Joined: 11/9/2018(UTC) Posts: 564
Thanks: 122 times Was thanked: 26 time(s) in 25 post(s)
|
Thank you for documenting a detailed workaround, it will help greatly in future upgrades.
So this issue can be fixed in a future release?
|
|
|
|
Rank: Administration
Groups: Admin, Administrators, HelpDesk, System, Authorized User, Developers, Registered Joined: 10/5/2018(UTC) Posts: 175
Thanks: 8 times Was thanked: 17 time(s) in 15 post(s)
|
Quote:So this issue can be fixed in a future release? Yes, we will be working on a fix. The changes will be needed in front-end codes in /Areas/Install/Controller/DefaultController.cs file. A code workaround could be to disable a part of code to make sure it doesn't clear any gateways. This will need you to install the required plugins one by one after upgrade. You can edit the /Areas/Install/Controller/DefaultController.cs file and locate following line of code Code:
foreach (string classId in invalidProviders)
and update it like this Code:
invalidProviders.Clear();
foreach (string classId in invalidProviders)
Now compile the website project and attempt the upgrade.
|
|
|
|
Forum Jump
You cannot post new topics in this forum.
You cannot reply to topics in this forum.
You cannot delete your posts in this forum.
You cannot edit your posts in this forum.
You cannot create polls in this forum.
You cannot vote in polls in this forum.
Important Information:
The AbleCommerce Forums uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close