GMG 3346-i

Image coming soon
Image coming soon
    • Price inquiry

Info about the machine

    • Specifications

Number

000122798

Model year

2022
2023

Number of hours

164

Weight (kg)

3110

Classification

B

Construction height (mm)

2440

Length (mm)

2460

Width (mm)

1170

Lifting capacity (kg)

350

Steering

2 wheel steering

Electric equipment

230V to the platform

Other equipment

M-Tec tracking system

Wheel front type

Afsmitningsfrie hjul, str. 38x12.7

Wheel rear type

Afsmitningsfrie hjul, str. 38x12.7

Battery (V)

24

Battery (Ah)

225

Platform height (mm)

10000

Platform width (mm)

1150

Platform length (mm)

2310

Platform extension (mm)

1000

Free height (mm)

100

Driving speed (km/h)

4,02/0,7

Lifting speed up/down (sek.)

39/31

Gradeability (%)

35

Working height (mm)

12000

Battery other

Built-in charger

Placement

Denmark

Location

Ringsted

Error executing template "Designs/Swift/Paragraph/Custom_RelatedProducts.cshtml"
System.ArgumentException: An item with the same key has already been added. Key: GROUP52
at System.Collections.Generic.Dictionary`2.TryInsert(TKey key, TValue value, InsertionBehavior behavior)
at Dynamicweb.Ecommerce.Products.Categories.ProductCategoryFieldGroupValueService.GetOrderedInheritableParentIds(Group group, String defaultLanguageId)
at Dynamicweb.Ecommerce.Products.Categories.ProductCategoryFieldGroupValueService.RecursivelySearchForFieldValues(Group group, String defaultLanguageId, List`1 categoryFields)
at Dynamicweb.Ecommerce.Products.Categories.ProductCategoryFieldGroupValueService.RecursivelySearchForFieldValues(Group group, String defaultLanguageId, List`1 categoryFields)
at Dynamicweb.Ecommerce.Products.Categories.ProductCategoryFieldGroupValueService.RecursivelySearchForFieldValues(Group group, String defaultLanguageId, List`1 categoryFields)
at Dynamicweb.Ecommerce.Products.Categories.ProductCategoryFieldGroupValueService.RecursivelySearchForFieldValues(Group group, String defaultLanguageId, List`1 categoryFields)
at Dynamicweb.Ecommerce.Products.Categories.ProductCategoryFieldGroupValueService.RecursivelySearchForFieldValues(Group group, String defaultLanguageId, List`1 categoryFields)
at System.Lazy`1.ViaFactory(LazyThreadSafetyMode mode)
at System.Lazy`1.ExecutionAndPublication(LazyHelper executionAndPublication, Boolean useDefaultConstructor)
at System.Lazy`1.CreateValue()
at Dynamicweb.Ecommerce.Products.Categories.ProductCategoryFieldGroupValueService.GetGroupFieldValuesByLanguage(Group group, List`1 categoryFields, String languageId, Boolean isInheritedValue, Boolean searchRecursively)
at Dynamicweb.Ecommerce.Products.Categories.ProductCategoryFieldGroupValueService.GetGroupCategoryFieldValues(IEnumerable`1 groups, List`1 fields, Boolean allowFallback)
at Dynamicweb.Ecommerce.Products.Categories.ProductCategoryFieldGroupValueService.GetDefaultCategoryValuesFromGroups(IEnumerable`1 groupInfos, List`1 catFields)
at Dynamicweb.Ecommerce.Products.Categories.ProductCategoryFieldGroupValueService.GetDefaultCategoryValueFromGroups(IEnumerable`1 groupInfos, Field catField)
at Dynamicweb.Ecommerce.Products.Categories.ProductCategoryFieldValueService.GetProductCategoryFieldValue(Product product, String categoryId, Field field)
at Dynamicweb.Ecommerce.ProductCatalog.ViewEngine.CreateView(ProductViewModelSettings settings, Product product, Field field)
at Dynamicweb.Ecommerce.ProductCatalog.ViewEngine.GetFieldDisplayGroupValues(ProductViewModelSettings settings, Product product, String languageID, Lazy`1 productIds)
at Dynamicweb.Ecommerce.ProductCatalog.ViewEngine.<>c__DisplayClass3_1.<BulkCreateView>b__59()
at Dynamicweb.Ecommerce.ProductCatalog.ViewModelPropertyFiller`1.Fill[S](T model, String propertyName, Func`1 source)
at Dynamicweb.Ecommerce.ProductCatalog.ViewEngine.BulkCreateView(ProductViewModelSettings settings, Boolean isRecursive, IList`1 products)
at Dynamicweb.Ecommerce.ProductCatalog.ViewEngine.CreateView(ProductViewModelSettings settings, Product product)
at CompiledRazorTemplates.Dynamic.RazorEngine_5de09412b9f94ce8b0cfe56e2846706c.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 Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.ParagraphViewModel> 2 @using Dynamicweb.Core 3 @using Dynamicweb.Ecommerce.ProductCatalog 4 @using System.Linq 5 @using Dynamicweb.Environment 6 @using Application.Extensions 7 @using Scantruck.Website.Custom.ViewModels 8 9 @if (!Pageview.IsVisualEditorMode) 10 { 11 12 string lazyHeight = Model.Item?.GetBoolean("SetMinHeightForLazyLoading") == true ? "min-height: 360px" : ""; 13 string theme = !string.IsNullOrWhiteSpace(Model.Item?.GetRawValueString("Theme")) ? " theme " + Model.Item.GetRawValueString("Theme").Replace(" ", "").Trim().ToLower() : ""; 14 int paragraphId = !string.IsNullOrEmpty(Dynamicweb.Context.Current.Request.Form.Get("ParagraphId")) ? Convert.ToInt32(Dynamicweb.Context.Current.Request.Form.Get("ParagraphId")) : 0; 15 16 //Link generation 17 string pageId = Model.Item?.GetLink("ProductSliderServicePage")?.PageId.ToString() ?? ""; 18 string servicePageByNavigationTag = GetPageIdByNavigationTag("RelatedProductSliderService") != 0 ? GetPageIdByNavigationTag("RelatedProductSliderService").ToString() : ""; 19 pageId = string.IsNullOrEmpty(pageId) ? servicePageByNavigationTag : pageId; 20 string HrefTarget = Model.Item?.GetBoolean("OpenNewWindow") == true ? "_blank" : ""; 21 22 bool productViewModelFound = false; 23 ProductViewModel product = new ProductViewModel(); 24 25 ProductViewModelSettings productSetting = new ProductViewModelSettings 26 { 27 LanguageId = Dynamicweb.Ecommerce.Common.Context.LanguageID, 28 CurrencyCode = Dynamicweb.Ecommerce.Common.Context.Currency.Code, 29 CountryCode = Dynamicweb.Ecommerce.Common.Context.Country.Code2, 30 ShopId = Pageview.Area.EcomShopId 31 }; 32 33 if (Dynamicweb.Context.Current.Items.Contains("ProductDetails")) 34 { 35 productViewModelFound = true; 36 product = Dynamicweb.Context.Current.Items["ProductDetails"] as ProductViewModel; 37 } 38 39 string title = Model?.Item?.GetRawValueString("Title", Translate("Products")); 40 41 if (product?.RelatedGroups?.Count > 0) 42 { 43 <div class="custom-related-products"> 44 @if (!string.IsNullOrWhiteSpace(title)) 45 { 46 <h2 class="custom-related-products__title">@title</h2> 47 } 48 @if (product.RelatedGroups.Count > 1) 49 { 50 <ul class="custom-related-products__menu tabs tabs--related"> 51 <li id="related-tabs-toggle" class="tabs__tab__toggle"> 52 <span class="tab-toggle__text"></span> 53 <svg class="tabs__tab__toggle__icon" :class="{ 'tabs__tab__toggle__icon--active': isToggleActive }" xmlns="http://www.w3.org/2000/svg" width="14" height="8" viewBox="0 0 14 8"> 54 <path d="M13.6641 2.56489L7.18487 8L6.79492 8L0.33073 2.56489L1.74055 1.42186e-07L7.00489 4.30534L12.2542 1.6812e-08L13.6641 2.56489Z" /> 55 </svg> 56 </li> 57 <li> 58 <ul class="tabs__dropdown custom-related-products__menu__button-container"> 59 @{ 60 int buttonCount = 0; 61 } 62 @foreach (var relatedGroup in product.RelatedGroups.OrderBy(x => x.Id)) 63 { 64 <li id="button-@relatedGroup.Id.ToLower()" data-swiper-target="#swiper-@relatedGroup.Id.ToLower()" class="tabs__tab @(buttonCount == 0 ? "tabs__tab--active" : "") custom-related-products__menu__button-container__button @(buttonCount == 0 ? "custom-related-products__menu__button-container__button--active" : "")">@relatedGroup.Name</li> 65 66 buttonCount++; 67 } 68 </ul> 69 </li> 70 </ul> 71 } 72 <div class="custom-product-slider" id="related-product-sliders"> 73 @{ 74 int groupCount = 0; 75 } 76 77 @foreach (var relatedGroup in product.RelatedGroups.OrderBy(x => x.Id)) 78 { 79 <div id="swiper-@relatedGroup.Id.ToLower()" class="swiper swiper-@relatedGroup.Id.ToLower() swiper-container @(groupCount > 0 ? "collapse" : "collapse show")"> 80 <div class="swiper-controls-container container-xl"> 81 <div class="swiper-pagination swiper-pagination-@relatedGroup.Id.ToLower() swiper-controls-container__custom-slider"></div> 82 <div class="swiper-controls-container__button-container"> 83 <div class="swiper-button-next swiper-button-@relatedGroup.Id.ToLower()-next button-box "> 84 <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="none"> 85 <path d="M6.11959e-07 9L12.17 9L6.58 14.59L8 16L16 8L8 -6.99382e-07L6.59 1.41L12.17 7L7.86805e-07 7L6.11959e-07 9Z" fill="black" /> 86 </svg> 87 </div> 88 <div class="swiper-button-prev swiper-button-@relatedGroup.Id.ToLower()-prev button-box "> 89 <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="none"> 90 <path d="M16 7H3.83L9.42 1.41L8 0L0 8L8 16L9.41 14.59L3.83 9H16V7Z" fill="black" /> 91 </svg> 92 </div> 93 </div> 94 </div> 95 <div class="swiper-wrapper"> 96 @foreach (var relatedProduct in relatedGroup.Products) 97 { 98 CustomProductViewModel productInfo = ViewModelFactory.CreateView(productSetting, relatedProduct.ProductId) as CustomProductViewModel; 99100 string imagePath = productInfo?.HasImages == true ? productInfo.DefaultImage.Value : productInfo?.GetCustomDefaultImage(Pageview.AreaID); 101102 int customProductType = 0; 103 var productTypeValue = productInfo?.ProductFields["CustomProductType"]; 104 var specFallbackGroup = "AllSpecs"; 105106 var categoryFields = productInfo?.ProductCategories?.FirstOrDefault(x => x.Key == "specifications_bc"); 107 var bcFields = categoryFields?.Value?.Fields; 108109 bool hasClassification = false; 110 string classification = ""; 111 bool isPremium = false; 112113 if (bcFields != null) 114 { 115 var classificationField = bcFields.FirstOrDefault(x => x.Key == "M_0010500"); 116 classification = classificationField.Value != null ? classificationField.Value.ToString() : ""; 117118 if (!string.IsNullOrWhiteSpace(classification)) 119 { 120 hasClassification = true; 121 } 122123 if (bcFields?.Any(x => x.Key == "M_0090530") == true) 124 { 125 var premiumValue = bcFields.FirstOrDefault(x => x.Key == "M_0090530").Value.ToString(); 126127 if (!string.IsNullOrWhiteSpace(premiumValue)) 128 { 129 isPremium = Convert.ToBoolean(premiumValue); 130 } 131132133 } 134 } 135136 if (Pageview.AreaID == 6) 137 { 138 hasClassification = false; 139 } 140141 if (productTypeValue != null && productTypeValue.Value is List<Dynamicweb.Ecommerce.ProductCatalog.FieldOptionValueViewModel> productTypeValues) 142 { 143 if (productTypeValues.Any()) 144 { 145 customProductType = Convert.ToInt32(productTypeValues.First().Value); 146 } 147 } 148149 int customProductCondition = 0; 150151 var productConditionValue = productInfo?.ProductFields["CustomProductCondition"]; 152153 if (productConditionValue != null && productConditionValue.Value is List<Dynamicweb.Ecommerce.ProductCatalog.FieldOptionValueViewModel> productConditionValues) 154 { 155 if (productConditionValues.Any()) 156 { 157 customProductCondition = Convert.ToInt32(productConditionValues.First().Value); 158 } 159 } 160161 var navigationTag = "ShopNewMachines"; 162163 if (customProductType != 2) // 2 == maskiner 164 { 165 if (customProductCondition == 2) // 2 == nyt 166 { 167 navigationTag = "ShopNewEquipment"; 168 } 169 else 170 { 171 navigationTag = "ShopOldEquipment"; 172 } 173 } 174 else 175 { 176 if (customProductCondition == 2) 177 { 178 navigationTag = "ShopNewMachines"; 179 specFallbackGroup = "NewMachinesDefaultListSpecs"; 180 } 181 else 182 { 183 navigationTag = "ShopUsedMachines"; 184 specFallbackGroup = "UsedMachinesDefaultListSpecs"; 185 } 186 } 187188 var link = productInfo?.GetProductLink(GetPageIdByNavigationTag(navigationTag), false); 189190 @if (!string.IsNullOrWhiteSpace(productInfo.PrimaryOrDefaultGroup?.Id)) 191 { 192 <div class="swiper-slide custom-product-slider__item"> 193 <div class="custom-product-slider__item-iner"> 194 <a href="@link" class="custom-product-slider__item-name"> 195 @productInfo?.Name 196 @if (hasClassification) 197 { 198 <span class="classification-badge classification-badge--@classification"></span> 199 } 200 </a> 201202 <a href="@link" class="custom-product-slider__item-media"> 203 <picture> 204 <img src="@imagePath" alt="@productInfo?.Name"> 205 </picture> 206 <div class="custom-product-slider__item-media-overlay"></div> 207 <div class="custom-product-slider__item-tags"> 208 <div class="custom-product-slider__item-link"> 209 <span class="text">@Translate("Se produkt")</span> 210 <span class="icon"> 211 <svg viewBox="0 0 21 21" fill="none" xmlns="http://www.w3.org/2000/svg"> 212 <path d="M0.9875 11.6029L15.5915 11.6029L8.8835 18.3109L10.5875 20.0029L20.1875 10.4029L10.5875 0.802928L8.8955 2.49493L15.5915 9.20293L0.9875 9.20293L0.9875 11.6029Z" fill="currentColor" /> 213 </svg> 214 </span> 215 </div> 216 </div> 217218 @if (isPremium) 219 { 220 <div class="product-badge product-badge--premium">@Translate("ProductBadge:Premium")</div> 221 } 222 </a> 223 @if (productInfo?.Price?.Price > 0) 224 { 225 <div class="custom-product-slider__item-price"> 226 <span class="custom-product-slider__item-price-text">@Translate("excl. VAT")</span> 227 <span class="custom-product-slider__item-price-value"> 228 @productInfo.Price.PriceWithoutVat.ToString("N2") @productInfo.Price.CurrencyCode @*ATTENTION: Shows the Price in whole numbers with commas*@ 229 </span> 230 </div> 231 } 232233 @{ 234 var productGroup = productInfo?.Groups?.FirstOrDefault(); 235 var specGroup = productGroup != null ? productInfo?.FieldDisplayGroups?.Values?.FirstOrDefault(group => group.Id.Contains(productGroup.Id)) : null; 236 var defaultGroup = productInfo?.FieldDisplayGroups?.Values?.FirstOrDefault(group => group.Id == specFallbackGroup); 237 var groupToUse = specGroup != null && specGroup.Fields.Count > 0 ? specGroup : defaultGroup; 238 } 239240 @if (groupToUse != null && groupToUse.Fields.Count > 0) 241 { 242 <div class="custom-product-slider__item-specs"> 243 @foreach (var fieldViewModel in groupToUse.Fields.Take(5)) 244 { 245 var field = fieldViewModel.Value; 246 var value = field.Value; 247 if (!String.IsNullOrWhiteSpace(value?.ToString())) 248 { 249 value = value.ToString() == "False" ? Translate("No") : value; 250 value = value.ToString() == "True" ? Translate("Yes") : value; 251252 if (value.ToString() != "0") 253 { 254 <div class="custom-product-slider__item-specs-line"> 255 @if (field.SystemName == "ProductNumber") 256 { 257 <span class="name">@Translate("Product Number")</span> 258 <span class="value">@value.ToString()</span> 259 } 260 else if (field.Type == "Double") 261 { 262 <span class="name">@field.Name</span> 263 <span class="value">@StringFormatExtensions.FormatDecimal(value.ToString(), Pageview.Area.CultureInfo.ToString())</span> 264 } 265 else 266 { 267 <span class="name">@field.Name</span> 268 <span class="value">@value.ToString()</span> 269 } 270 </div> 271 } 272 } 273 } 274 </div> 275 } 276 </div> 277 </div> 278279 } 280 } 281 </div> 282 </div> 283284 <script type="module"> 285 const swiper = new Swiper('.swiper-@relatedGroup.Id.ToLower()', { 286 slidesPerView: 'auto', 287 spaceBetween: 20, 288 speed: 600, 289 navigation: { 290 nextEl: '.swiper-button-@relatedGroup.Id.ToLower()-next', 291 prevEl: '.swiper-button-@relatedGroup.Id.ToLower()-prev' 292 }, 293 pagination: { 294 el: '.swiper-pagination-@relatedGroup.Id.ToLower()', 295 type: 'progressbar' 296 } 297 }) 298 </script> 299300 groupCount++; 301 } 302 </div> 303 </div> 304305 <script> 306 document.querySelectorAll('.custom-related-products__menu__button-container__button').forEach(button => { 307 button.addEventListener('click', event => { 308 document.querySelector('.custom-related-products__menu__button-container__button--active').classList.remove('custom-related-products__menu__button-container__button--active'); 309 button.classList.add('custom-related-products__menu__button-container__button--active'); 310311 document.querySelector('.swiper.show').classList.remove('show'); 312 document.querySelector(button.getAttribute('data-swiper-target')).classList.add('show'); 313 }) 314 }); 315 </script> 316317 <script> 318 const relatedTabLinks = document.querySelectorAll('.custom-related-products__menu .tabs__tab'); 319 const relatedTabToggle = document.getElementById('related-tabs-toggle'); 320 const relatedDropdown = document.querySelector('.custom-related-products__menu .tabs__dropdown'); 321 const relatedIcon = document.querySelector('.custom-related-products__menu .tabs__tab__toggle__icon'); 322323 function toggleRelatedDropdown() { 324 relatedDropdown.classList.toggle('tabs__dropdown--active'); 325 relatedTabToggle.classList.toggle('tabs__tab__toggle--active'); 326 relatedIcon.classList.toggle('tabs__tab__toggle__icon--active'); 327 } 328329 relatedTabLinks.forEach(link => { 330 link.addEventListener('click', function (e) { 331 const activeTab = document.querySelector('.custom-related-products__menu .tabs__tab--active'); 332 activeTab.classList.remove('tabs__tab--active'); 333 this.classList.add('tabs__tab--active'); 334335 relatedTabToggle.querySelector('.tab-toggle__text').textContent = this.textContent; 336 toggleRelatedDropdown(); 337 }); 338 }); 339340 relatedTabToggle.addEventListener('click', function () { 341 toggleRelatedDropdown(); 342 }); 343344 relatedTabToggle.querySelector('.tab-toggle__text').textContent = document.querySelector('.custom-related-products__menu .tabs__tab--active').textContent; 345 </script> 346347 } 348 } 349 else 350 { 351 <div class="alert alert-dark m-0">@Translate("No products available")</div> 352 } 353

For more information
Contact sales export

Price inquiry

Fill in the form and send your questions or comments to Scantruck.
We will get back to you with a price and answers to your questions.