nopCommerce 4.40 BETA released. Please share your impressions

3 months ago
Very Nice! I'll have a look at it later today.
3 months ago
What happened to  OrderService.GetOrderByAuthorizationTransactionIdAndPaymentMethodAsync(..,..); ?

Should I implement this function in our own plugin or will this function return in the final version of 4.4?
3 months ago
My main expectations from this version are :

1. webp images support
2. 301 url redirect
3. Set fixed commission and category-based commission for vendors (as a percentage for each seller separately)
and set payment days for vendors.
3 months ago
actOpus wrote:
What happened to  OrderService.GetOrderByAuthorizationTransactionIdAndPaymentMethodAsync(..,..); ?

Should I implement this function in our own plugin or will this function return in the final version of 4.4?


We decided to remove some unused (in the core) methods. See this commit for details.
Right, you should implement this function yourself if you need it.
3 months ago
Looking good so far. Been a bit time consuming moving all of my services in plugins over to async methods, but worth it for the speed improvements.

I see that data settings can now be added as environment variables, which is great. It would be really useful if there was the ability to also override items such as the path to plugins.json and robots.custom.txt in the same way. It would need to distinguish between a path such as '~/app_data' which would need to be done as MapPath('~/app_data') as current, and one such as '/mnt/data' which would just used the absolute location. Perhaps like:


private string GetPluginsInfoFilePath()
{
   var pluginFileLocation = Environment.GetEnvironmentVariable(NopPluginDefaults.EnvironmentVariablePluginInfoFilePath);

   if (string.IsNullOrEmpty(pluginFileLocation))
                pluginFileLocation = NopPluginDefaults.PluginsInfoFilePath;

   if (pluginFileLocation.StartsWith("/")) //absolute location
      return pluginFileLocation;
   else
      return _fileProvider.MapPath(pluginFileLocation);
}


This would aid running on containerised instances.
3 months ago
Regarding the above, on 2nd thoughts, it may be better to just have one environment variable to override the App_Data path as there are a lot of places where this is used.
3 months ago
purplepiranha wrote:
Been a bit time consuming moving all of my services in plugins over to async methods, but worth it for the speed improvements.


YES. Its been taking quite some time! 10 plugins with loads of overrides and custom stuff.
3 months ago
Do you have any ETA on 4.40? I might start a new site using 4.40 beta and wait for full version before we go to production.
3 months ago
hkbits wrote:
Do you have any ETA on 4.40?

March 9th or 10th
3 months ago
Please consider refactoring for Tax Provider plugins.  Having introduced  the additional method GetTaxTotal() in 4.30 complicated things for tax provider developers.  Now, all devs need to be able to handle the same in regards to getting (possible) tax for
- order line items
- checkout attributes
- shipping
- payment fee

And also having to determine which address to use
            //tax is based on billing address
            //tax is based on shipping address
            //tax is based on pickup point address
            //or use default address for tax calculation

And also dealing with tax exemptions

I.e. Similar code needs to be replicated by each developer.  
(Look at Avalara - ~ 600 lines of code for such caclulations.  I don't even see Tax.FixedOrByCountryStateZip dealing with 'exemption'; maybe it's handled elsewhere in core.  Which is maybe also redundant because similar tax related calculations are also in OrderTotalCalculationService ...
var (_, _, _, _, orderSubTotalTaxRates) = await _orderTotalCalculationService
                    .GetShoppingCartSubTotalAsync(taxTotalRequest.ShoppingCart, false);
)


I think there should be (at least) methods added to the Tax Service that can provide a (e.g.)  List<TaxableItems> GetTaxableItems(), and
Address GetTaxAddress()