Great. These are the 2 main things I can see that lets Grandnode down compared with Magento:
1) Ability to show invoices with the currency purchased in ( Magento actually allows you to specify showing both - but we would only want the customer to see that )
2) Ability to charge and see in a specific currency in the back end - but actually see both ; in the totals and also for the individual products .
It would pay you to get a feel for the way you place an order in Magento in a different currency to see what happens.
It seems that a created order in Grandnode stores the currency rate which is good , but it needs to store the values in different currencies to work optimally ( I don't think that would be a big deal for mongodb )
Hello. after taking a good look , it seems to me that grandnode is not true multi currency.
It might display in a different currency - but customers still have to pay in the base currency , and invoices are generated in the base currency.
This would be incredibly confusing for the customer - and doesn't really justify calling grandnode "multi currency"
Are there plans to do it properly?
Hello. I have to admit it's been a while since I've done any srious .Net dev , but is there some trick to getting it going robustly?
I installed quite a few plugins - only the ones that came with the source , but then I started getting the error message below. I then uninstalled all the plugins but the error is still there. Running in Visual Studio 2019 on Windows 10
I guess because I don't fully understand the architecture , I don't really know what is going on.
Can you shed some light on this?
System.TypeInitializationException: The type initializer for 'NativeMagickSettings' threw an exception. ---> System.DllNotFoundException: Unable to load DLL 'Magick.Native-Q16-x64.dll' or one of its dependencies: Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED)) at ImageMagick.Environment.NativeMethods.X64.Environment_Initialize() at ImageMagick.Environment.NativeEnvironment.Initialize() at ImageMagick.Environment.Initialize() at ImageMagick.MagickSettings.NativeMagickSettings..cctor() --- End of inner exception stack trace --- at ImageMagick.MagickSettings.NativeMagickSettings..ctor() at ImageMagick.MagickSettings..ctor() at ImageMagick.MagickImage..ctor() at ImageMagick.MagickImage..ctor(Byte data) at Grand.Services.Media.PictureService.GetPictureUrl(Picture picture, Int32 targetSize, Boolean showDefaultPicture, String storeLocation, PictureType defaultPictureType) in D:\gn\Grand.Services\Media\PictureService.cs:line 573 at Grand.Services.Media.PictureService.GetPictureUrl(String pictureId, Int32 targetSize, Boolean showDefaultPicture, String storeLocation, PictureType defaultPictureType) in D:\gn\Grand.Services\Media\PictureService.cs:line 496 at Grand.Web.Services.ProductViewModelService.<>c__DisplayClass41_0.<<PrepareProductDetailsPage>b__14>d.MoveNext() in D:\gn\Grand.Web\Services\ProductViewModelService.cs:line 825 --- End of stack trace from previous location where exception was thrown --- at Grand.Core.Caching.CacheExtensions.GetAsync[T](ICacheManager cacheManager, String key, Int32 cacheTime, Func`1 acquire) in D:\gn\Grand.Core\Caching\CacheExtensions.cs:line 78 at Grand.Web.Services.ProductViewModelService.PrepareProductDetailsPage(Product product, ShoppingCartItem updatecartitem, Boolean isAssociatedProduct) in D:\gn\Grand.Web\Services\ProductViewModelService.cs:line 819 at Grand.Web.Controllers.ProductController.ProductDetails(String productId, String updatecartitemid) in D:\gn\Grand.Web\Controllers\ProductController.cs:line 160 at Microsoft.AspNetCore.Mvc.Internal.ActionMethodExecutor.TaskOfIActionResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object arguments) at System.Threading.Tasks.ValueTask`1.get_Result() at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.InvokeActionMethodAsync() at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.InvokeNextActionFilterAsync() at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.Rethrow(ActionExecutedContext context) at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted) at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.InvokeInnerFilterAsync() at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeNextResourceFilter() at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.Rethrow(ResourceExecutedContext context) at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted) at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeFilterPipelineAsync() at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeAsync() at Microsoft.AspNetCore.Builder.RouterMiddleware.Invoke(HttpContext httpContext) at Microsoft.AspNetCore.Builder.Extensions.MapWhenMiddleware.Invoke(HttpContext context) at Grand.Framework.Infrastructure.WorkContextMiddleware.InvokeAsync(HttpContext context, IWorkContext workContext) in D:\gn\Gran
It was a fresh installation . I actually just blitzed everything and started again and it is working. I did make some changes previously , I think to shipping settings but not many.
Additionally: the errors above have now started appearing in chrome as well.
If I log in to the admin panel first and then go to the dashboard - after just doing that , there is no error on the store pages.
Strange! Any Ideas? This is a pretty plain install. No plugins installed or anything
I am using Grandnode 4.5 and it works perfectly with google chrome. Any other browser ( IE , Firefox , edge ) - I get the following error message:
NullReferenceException: Object reference not set to an instance of an object.
Grand.Framework.Infrastructure.Extensions.ApplicationBuilderExtensions+<>c__DisplayClass1_0.<UseGrandExceptionHandler>b__1(HttpContext context) in ApplicationBuilderExtensions.cs
What is the issue here?
Hi. I just downloaded the latest version of grandnode
According to this: https://grandnode.com/how-to-configure-progressive-web-app
"The whole process is very simple. Now it's time to enable PWA in appsettings.json file. You need to change the false value to true and choose the caching strategy. By default we recommend to use the Minimal caching. "
I can't find an example of this appsettings.json anywhere?