SCANX.NET SPG IT-SYSTEM

SCANX.NET SPG IT-SYSTEM

Handling product prices and transportation rates

The SPG-module is the system for the transportation and contractor business, for price- and transport-handling of products like sand, pebbles, gravel.

The module also handles transport zones, which may be differentiated to vehicle types.

The module also incorporates a function for price management, enabling the use of discount rates for certain supplies, including special agreements or fixed customer contracts.

The SPG-system is a module in the ScanX.Net-package, which is a modular, scaleable it-system for handling and administration of weighings on weighbridges, including waste registrations, reporting to authorities, payment, invoicing, automatical identification, access control and many other jobs.

Kontakt vores eksperter direkte

Patrik Wahlgren
Patrik Wahlgren

Int. Business Manager - Sweden, Norway, Finland

+46 (0)70 630 54 60

Ole Levring
Ole Levring

National Business Manager

Brovægt Jylland

+45 2496 4442

Error executing template "Designs/Swift-v2/eCom/ProductCatalog/partials/detail/section-related.cshtml"System.ArgumentException: The provided type 'Core.Indexing.CustomerProductIndexSchemaExtender, Core' is not compatible with the expected type 'Dynamicweb.Indexing.IIndexSchemaExtender'. (Parameter 'extenderType')at Dynamicweb.Indexing.Schemas.ExtensionFieldDefinition..ctor(String extenderType, IList`1 excludedFields)at Dynamicweb.Indexing.IndexHelper.GetField(List`1 fieldsFromExtenders, XElement fieldElement, String& fieldTypeName)at Dynamicweb.Indexing.IndexHelper.FillIndexWithSchema(XElement root, IIndex index)at Dynamicweb.Indexing.IndexHelper.ConvertToIndex(XElement obj, Boolean fillSchema)at Dynamicweb.Indexing.IndexService.LoadIndex(String name, Boolean fillSchema)at Dynamicweb.Indexing.Queries.IndexQueryProvider.Query(IQuery query, QuerySettings settings)at Dynamicweb.Indexing.Querying.QueryService.Query(IQuery query, QuerySettings settings)at Core.Services.QueryService.GetQueryResult(IQueryService queryService, String repository, String queryId, Dictionary`2 parameters, Int32 consumeSize)at Core.Services.QueryService.Query(String repositoryId, String queryId, Dictionary`2 parameters, Int32 consumeSize)at Core.Services.QueryService.GetIndexDocumentListFromQuery(String repository, String queryId, Dictionary`2 parameters, Int32 consumeSize)at Core.Extensions.ProductViewModelExtensions.GetSimilarProducts(ProductViewModel productViewModel, Int32 consumeSize)at CompiledRazorTemplates.Dynamic.RazorEngine_77955c71aab54c4a8d754aec6aa140c9.ExecuteAsync()at RazorEngine.Templating.TemplateBase.Run(ExecuteContext context, TextWriter reader)at RazorEngine.Templating.RazorEngineCore.RunTemplate(ICompiledTemplate template, TextWriter writer, Object model, DynamicViewBag viewBag)at RazorEngine.Templating.RazorEngineService.Run(ITemplateKey key, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag)at RazorEngine.Templating.DynamicWrapperService.Run(ITemplateKey key, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag)at RazorEngine.Templating.RazorEngineServiceExtensions.Run(IRazorEngineService service, String name, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag)at RazorEngine.Templating.RazorEngineServiceExtensions.<>c__DisplayClass23_0.<Run>b__0(TextWriter writer)at RazorEngine.Templating.RazorEngineServiceExtensions.WithWriter(Action`1 withWriter)at RazorEngine.Templating.RazorEngineServiceExtensions.Run(IRazorEngineService service, String name, Type modelType, Object model, DynamicViewBag viewBag)at Dynamicweb.Rendering.RazorTemplateRenderingProvider.Render(Template template)at Dynamicweb.Rendering.TemplateRenderingService.Render(Template template)at Dynamicweb.Rendering.Template.RenderRazorTemplate()
1 @inherits ViewModelTemplate<Core.ViewModels.Ecommerce.ProductViewModel> 2 @using Core.Extensions 3 @using Dynamicweb.Rendering 4 @using Core.Services 5 @using Core.ViewModels.Base 6 @using Core.ViewModels.UI 7 @using Dynamicweb.Core.Encoders 8 @using Dynamicweb.Frontend 9 @using ButtonViewModel = Core.ViewModels.UI.ButtonViewModel 10 @using ProductListViewModel = Core.ViewModels.Ecommerce.ProductListViewModel; 11 12 @{ 13 ProductListViewModel similarProducts = Model.GetSimilarProducts(10); 14 bool hasSimilarProducts = similarProducts.CustomProducts.Any(); 15 bool hasRelatedCases = Model.RelatedCasePages.Any(); 16 bool hasCrossSellingProducts = Model.CrossSellingProducts.CustomProducts.Any(); 17 bool hasRelatedItems = hasRelatedCases || hasCrossSellingProducts || hasSimilarProducts; 18 } 19 20 @if (hasRelatedItems) 21 { 22 AddScript("https://cdn.jsdelivr.net/npm/swiper@11/swiper-element-bundle.min.js"); 23 AddStylesheet("https://cdn.jsdelivr.net/npm/swiper@11/swiper-bundle.min.css"); 24 <section class="core-section js-section py-6" id="core-section-productdetail-related-products" 25 data-dw-colorscheme="light"> 26 <div class="container-xl"> 27 28 <div class="row scanvaegt-paragraph-cases g-4 mb-6"> 29 @if (hasRelatedCases) 30 { 31 <h2 class="col-12">@Translate("Related Cases - Heading", "Relaterede cases")</h2> 32 33 @foreach (PageInfoViewModel relatedCasePage in Model.RelatedCasePages) 34 { 35 LinkViewModel link = new LinkViewModel {Url = SearchEngineFriendlyURLs.GetFriendlyUrl(relatedCasePage.ID)}; 36 ButtonViewModel btnViewModel = new ButtonViewModel 37 { 38 Text = Translate("Read more"), 39 Type = ButtonType.Link, 40 Link = link, 41 DisplayType = ButtonDisplayType.Link 42 }; 43 44 ColumnWidth columnClasses = new ColumnWidth() 45 { 46 Mobile = 12, 47 Desktop = 4 48 }; 49 50 ImageViewModel imageViewModel = relatedCasePage.Item.GetImage(); 51 imageViewModel.Alt = HtmlEncoder.HtmlAttributeEncode(relatedCasePage.Name ?? string.Empty); 52 imageViewModel.Ratio = ImageRatio.FourByThree; 53 imageViewModel.ImgTagClasses = new ClassList("h-100 w-100 object-fit-cover"); 54 imageViewModel.Sizes = ImageService.Instance.GetSizesByColumnWidths(columnClasses); 55 56 <div class="@columnClasses.ToClassList() scanvaegt-card h-100 has-link" 57 id="@relatedCasePage.ID"> 58 <a class="stretched-link" href="@btnViewModel.Link.Url"></a> 59 <div class="scanvaegt-card__image scanvaegt-image"> 60 @imageViewModel 61 </div> 62 <div class="scanvaegt-card__text scanvaegt-text pt-4" data-dw-colorscheme=""> 63 <h4>@relatedCasePage.Name</h4> 64 <p>@relatedCasePage.Item.GetString("Teaser")</p> 65 @btnViewModel 66 </div> 67 </div> 68 } 69 } 70 @if (hasCrossSellingProducts) 71 { 72 <h2>@Translate("Cross Selling - Heading", "Vi anbefaler også disse produkter")</h2> 73 @RenderingService.Instance.PartialView("eCom/ProductCatalog/Scanvaegt_ProductSlider.cshtml", Model.CrossSellingProducts) 74 } 75 76 @if (hasSimilarProducts) 77 { 78 <h2>@Translate("Similar Products - Heading", "Lignende produkter")</h2> 79 @RenderingService.Instance.PartialView("eCom/ProductCatalog/Scanvaegt_ProductSlider.cshtml", similarProducts) 80 } 81 </div> 82 </div> 83 84 </section> 85 } 86 87 @if (Model.IsWebshopProduct) 88 { 89 <div class="d-md-none"> 90 @RenderingService.Instance.PartialView("/eCom/ProductCatalog/partials/detail/need-help.cshtml", Model) 91 </div> 92 }

Få et uforpligtende tilbud

Send os en mail - vi kan hjælpe dig videre