Komatsu WA320-8

Modal iconVis flere billeder

Info om maskinen

    • Specifikationer

Nummer

000123791

Årgang

2018

Modelår

2018

Timetal

10456

Vægt (kg)

17.200

Klassifikation

C

Byggehøjde (mm)

3.200

Længde (mm)

7.690

Bredde (mm)

2.800

Løftehøjde (mm)

4.010

Styring

Knækstyret

Førerplads

Elektriske spejle m/ varme (2 stk.)
Joystick styring på armlæn
Klimaanlæg
Radio
Walkie talkie

Påhængt udstyr læsse/teleskop

Jordskovl
Redskabsfæste hydraulisk.; type: Volvo C -nr.8-4565

Elektrisk udstyr

Bakalarm
Bak/front kamera

Motor / transmission

Motorvarmer
Partikelfilter
SCR med AdBlue
Turbo II filter
Vendbar ventilatorvinge
Automatisk motorstop

Hydraulik

3. hydr. kreds fremført på arm
Automatisk skovlopretning
Biologisk nedbrydelig hydraulikolie

Lysudstyr

Kørelys komplet
LED lys bag på tag
LED lys frem på tag

Øvrigt udstyr

Centralsmøring
Komtrax overvågning
Kontravægt
Loadmaster-Vægt
Overtrykskabine

Diverse udstyr

Std. aksler

Gearkasse

Hydrostatisk

Motorfabrikat

Komatsu

Motortype

SAA6D107E-3 Stage IV

Motordrivmiddel

6 cyl. diesel

Motor (hk)

170

Hjul for mærke

Michelin

Hjul for størrelse

20,5R25

Hjul bag mærke

Michelin

Hjul bag størrelse

20,5R25

Batteri (V)

24

Batteri (Ah)

220

Placering

Danmark

Lokation

Skive

Error executing template "Designs/Swift/Paragraph/Custom_RelatedProducts.cshtml"
System.NullReferenceException: Object reference not set to an instance of an object.
at CompiledRazorTemplates.Dynamic.RazorEngine_e4a4383b245b4e828dc8cf9c19485829.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.Ecommerce.Products 6 @using Dynamicweb.Environment 7 @using Application.Extensions 8 @using Scantruck.Website.Custom.ViewModels 9 10 @if (!Pageview.IsVisualEditorMode) 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 ProductService productService = new ProductService(); 40 41 string title = Model?.Item?.GetRawValueString("Title", Translate("Products")); 42 43 if (product?.RelatedGroups?.Count > 0) 44 { 45 <div class="custom-related-products"> 46 @if (!string.IsNullOrWhiteSpace(title)) 47 { 48 <h2 class="custom-related-products__title">@title</h2> 49 } 50 @if (product.RelatedGroups.Count > 1) 51 { 52 <ul class="custom-related-products__menu tabs tabs--related"> 53 <li id="related-tabs-toggle" class="tabs__tab__toggle"> 54 <span class="tab-toggle__text"></span> 55 <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"> 56 <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" /> 57 </svg> 58 </li> 59 <li> 60 <ul class="tabs__dropdown custom-related-products__menu__button-container"> 61 @{ 62 int buttonCount = 0; 63 } 64 @foreach (var relatedGroup in product.RelatedGroups.OrderBy(x => x.Id)) 65 { 66 <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> 67 68 buttonCount++; 69 } 70 </ul> 71 </li> 72 </ul> 73 } 74 <div class="custom-product-slider" id="related-product-sliders"> 75 @{ 76 int groupCount = 0; 77 } 78 79 @foreach (var relatedGroup in product.RelatedGroups.OrderBy(x => x.Id)) 80 { 81 <div id="swiper-@relatedGroup.Id.ToLower()" class="swiper swiper-@relatedGroup.Id.ToLower() swiper-container @(groupCount > 0 ? "collapse" : "collapse show")"> 82 <div class="swiper-controls-container container-xl"> 83 <div class="swiper-pagination swiper-pagination-@relatedGroup.Id.ToLower() swiper-controls-container__custom-slider"></div> 84 <div class="swiper-controls-container__button-container"> 85 <div class="swiper-button-next swiper-button-@relatedGroup.Id.ToLower()-next button-box "> 86 <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="none"> 87 <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" /> 88 </svg> 89 </div> 90 <div class="swiper-button-prev swiper-button-@relatedGroup.Id.ToLower()-prev button-box "> 91 <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="none"> 92 <path d="M16 7H3.83L9.42 1.41L8 0L0 8L8 16L9.41 14.59L3.83 9H16V7Z" fill="black" /> 93 </svg> 94 </div> 95 </div> 96 </div> 97 <div class="swiper-wrapper"> 98 99 @{ 100 var reletedProductsFromService = productService.GetByProductIDs(relatedGroup.Products.Select(p => p.ProductId).ToArray(), false, Dynamicweb.Ecommerce.Common.Context.LanguageID, true, false) 101 .OrderByDescending(p => p.ManufacturerId == product.Manufacturer.Id) 102 .Take(10); 103 } 104105106 @foreach (var relatedProduct in reletedProductsFromService) 107 { 108 var productInfo = ViewModelFactory.CreateView(productSetting, relatedProduct.Id) as CustomProductViewModel; 109 if (productInfo == null) continue; 110111 var imagePath = productInfo.HasImages ? productInfo.DefaultImage.Value : productInfo.GetCustomDefaultImage(Pageview.AreaID); 112113 // Cache product fields 114 var productFields = productInfo.ProductFields; 115116 // Extract CustomProductType 117 int customProductType = 0; 118 if (productFields.TryGetValue("CustomProductType", out var typeField) 119 && typeField is Dynamicweb.Ecommerce.ProductCatalog.FieldValueViewModel typeValue 120 && typeValue.Value is List<Dynamicweb.Ecommerce.ProductCatalog.FieldOptionValueViewModel> typeList 121 && typeList.Any()) 122 { 123 customProductType = Convert.ToInt32(typeList.First().Value); 124 } 125126 // Extract CustomProductCondition 127 int customProductCondition = 0; 128 if (productFields.TryGetValue("CustomProductCondition", out var conditionField) 129 && conditionField is Dynamicweb.Ecommerce.ProductCatalog.FieldValueViewModel conditionValue 130 && conditionValue.Value is List<Dynamicweb.Ecommerce.ProductCatalog.FieldOptionValueViewModel> condList 131 && condList.Any()) 132 { 133 customProductCondition = Convert.ToInt32(condList.First().Value); 134 } 135136137 // Determine classification and premium status 138 bool hasClassification = false, isPremium = false; 139 string classification = ""; 140141 if (productInfo.ProductCategories?.TryGetValue("specifications_bc", out var categoryFields) == true && categoryFields.Fields != null) 142 { 143 var bcFields = categoryFields.Fields; 144 classification = bcFields.TryGetValue("M_0010500", out var classField) && classField?.Value != null ? classField.Value.ToString() : ""; 145 hasClassification = !string.IsNullOrWhiteSpace(classification); 146147 isPremium = bcFields.TryGetValue("M_0090530", out var premiumField) && bool.TryParse(premiumField?.Value?.ToString(), out var premium) && premium; 148 } 149150 if (Pageview.AreaID == 6) hasClassification = false; 151152 // Navigation Tag and Spec Fallback 153 string navigationTag = "ShopNewMachines"; 154 string specFallbackGroup = "AllSpecs"; 155156 if (customProductType != 2) // 2 == maskiner 157 { 158 navigationTag = customProductCondition == 2 ? "ShopNewEquipment" : "ShopOldEquipment"; 159 } 160 else 161 { 162 navigationTag = customProductCondition == 2 ? "ShopNewMachines" : "ShopUsedMachines"; 163 specFallbackGroup = customProductCondition == 2 ? "NewMachinesDefaultListSpecs" : "UsedMachinesDefaultListSpecs"; 164 } 165166 var link = productInfo.GetProductLink(GetPageIdByNavigationTag(navigationTag), false); 167168 string manufacturerNameFromViewmodel = productInfo.GetManufacturerName(Pageview.Area.Item); 169 string manufacturerNameToDisplay = !string.IsNullOrEmpty(manufacturerNameFromViewmodel) ? $"{manufacturerNameFromViewmodel} " : ""; 170171 @if (!string.IsNullOrWhiteSpace(productInfo.PrimaryOrDefaultGroup?.Id)) 172 { 173 <div class="swiper-slide custom-product-slider__item"> 174 <div class="custom-product-slider__item-iner"> 175 <a href="@link" class="custom-product-slider__item-name"> 176 @manufacturerNameToDisplay 177 @productInfo.Name 178 @if (hasClassification) 179 { 180 <span class="classification-badge classification-badge--@classification.Replace("+", "_plus")"></span> 181 } 182 </a> 183184 <a href="@link" class="custom-product-slider__item-media"> 185 <picture> 186 @if (productInfo.HasDiscount && productInfo.RelevantDiscountCampaign != null) 187 { 188 bool useCampaignImage = !string.IsNullOrEmpty(productInfo.RelevantDiscountCampaign.CampaignImage.Value); 189 if (useCampaignImage) 190 { 191 <span class="custom-product-slider__item-media-campaign-container"> 192 @{ 193 string imageUrlUnformatted = "/Admin/Public/GetImage.ashx?width={0}&image={1}&format=webp&quality=99"; 194 var campaignImage = string.Format(imageUrlUnformatted, 600, Uri.EscapeDataString(productInfo.RelevantDiscountCampaign.CampaignImage.Value)); 195 } 196 <img class="custom-product-slider__item-media-campaign-container--image" src="@campaignImage" /> 197 </span> 198 } 199 } 200 <img src="@imagePath" alt="@productInfo.Name"> 201 </picture> 202 <div class="custom-product-slider__item-media-overlay"></div> 203 <div class="custom-product-slider__item-tags"> 204 <div class="custom-product-slider__item-link"> 205 <span class="text">@Translate("Se produkt")</span> 206 <span class="icon"> 207 <svg viewBox="0 0 21 21" fill="none" xmlns="http://www.w3.org/2000/svg"> 208 <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" /> 209 </svg> 210 </span> 211 </div> 212 </div> 213214 @if (isPremium) 215 { 216 <div class="product-badge product-badge--premium">@Translate("ProductBadge:Premium")</div> 217 } 218 </a> 219220 @if (productInfo.Price?.Price > 0) 221 { 222 <div class="custom-product-slider__item-price"> 223 <span class="custom-product-slider__item-price-text">@Translate("excl. VAT")</span> 224225 <span class="custom-product-slider__item-price-wrapper"> 226 @if (productInfo.HasDiscount) 227 { 228 <span class="custom-product-slider__item-price-wrapper-discount"> 229 @productInfo.PriceBeforeDiscount.PriceWithoutVat.ToString("N2") 230 </span> 231 } 232 <span class="custom-product-slider__item-price-wrapper-value"> 233 @productInfo.Price.PriceWithoutVat.ToString("N2") @productInfo.Price.CurrencyCode @*ATTENTION: Shows the Price in whole numbers with commas*@ 234 </span> 235236 @if (productInfo.HasDiscount && productInfo.RelevantDiscountCampaign != null && !string.IsNullOrEmpty(productInfo.RelevantDiscountCampaign.CampaignColor) && !string.IsNullOrEmpty(productInfo.RelevantDiscountCampaign.CampaignName)) 237 { 238 <span class="custom-product-slider__item-price-wrapper-campaign" style="background-color: @productInfo.RelevantDiscountCampaign.CampaignColor;"> 239 @productInfo.RelevantDiscountCampaign.CampaignName 240 </span> 241 } 242 </span> 243 </div> 244 } 245246 @{ 247 var productGroup = productInfo.Groups?.FirstOrDefault(); 248 var specGroup = productGroup != null ? productInfo.FieldDisplayGroups?.Values?.FirstOrDefault(group => group.Id.Contains(productGroup.Id)) : null; 249 var defaultGroup = productInfo.FieldDisplayGroups?.Values?.FirstOrDefault(group => group.Id == specFallbackGroup); 250 var groupToUse = specGroup != null && specGroup.Fields.Count > 0 ? specGroup : defaultGroup; 251 } 252253 @if (groupToUse != null && groupToUse.Fields.Count > 0) 254 { 255 <div class="custom-product-slider__item-specs"> 256 @foreach (var fieldViewModel in groupToUse.Fields.Take(5)) 257 { 258 var field = fieldViewModel.Value; 259 var value = field.Value?.ToString(); 260 if (!string.IsNullOrWhiteSpace(value) && value != "0") 261 { 262 value = value == "False" ? Translate("No") : value == "True" ? Translate("Yes") : value; 263264 <div class="custom-product-slider__item-specs-line"> 265 <span class="name">@Translate(field.SystemName == "ProductNumber" ? "Product Number" : field.Name)</span> 266 <span class="value"> 267 @(field.Type == "Double" ? StringFormatExtensions.FormatDecimal(value, Pageview.Area.CultureInfo.ToString()) : value) 268 </span> 269 </div> 270 } 271 } 272 </div> 273 } 274 </div> 275 </div> 276 } 277 } 278279 </div> 280 </div> 281282 <script type="module"> 283 const swiper = new Swiper('.swiper-@relatedGroup.Id.ToLower()', { 284 slidesPerView: 'auto', 285 spaceBetween: 20, 286 speed: 600, 287 navigation: { 288 nextEl: '.swiper-button-@relatedGroup.Id.ToLower()-next', 289 prevEl: '.swiper-button-@relatedGroup.Id.ToLower()-prev' 290 }, 291 pagination: { 292 el: '.swiper-pagination-@relatedGroup.Id.ToLower()', 293 type: 'progressbar' 294 } 295 }) 296 </script> 297298 groupCount++; 299 } 300 </div> 301 </div> 302303 <script> 304 document.querySelectorAll('.custom-related-products__menu__button-container__button').forEach(button => { 305 button.addEventListener('click', event => { 306 document.querySelector('.custom-related-products__menu__button-container__button--active').classList.remove('custom-related-products__menu__button-container__button--active'); 307 button.classList.add('custom-related-products__menu__button-container__button--active'); 308309 document.querySelector('.swiper.show').classList.remove('show'); 310 document.querySelector(button.getAttribute('data-swiper-target')).classList.add('show'); 311 }) 312 }); 313 </script> 314315 <script> 316 const relatedTabLinks = document.querySelectorAll('.custom-related-products__menu .tabs__tab'); 317 const relatedTabToggle = document.getElementById('related-tabs-toggle'); 318 const relatedDropdown = document.querySelector('.custom-related-products__menu .tabs__dropdown'); 319 const relatedIcon = document.querySelector('.custom-related-products__menu .tabs__tab__toggle__icon'); 320321 function toggleRelatedDropdown() { 322 relatedDropdown.classList.toggle('tabs__dropdown--active'); 323 relatedTabToggle.classList.toggle('tabs__tab__toggle--active'); 324 relatedIcon.classList.toggle('tabs__tab__toggle__icon--active'); 325 } 326327 relatedTabLinks.forEach(link => { 328 link.addEventListener('click', function (e) { 329 const activeTab = document.querySelector('.custom-related-products__menu .tabs__tab--active'); 330 activeTab.classList.remove('tabs__tab--active'); 331 this.classList.add('tabs__tab--active'); 332333 relatedTabToggle.querySelector('.tab-toggle__text').textContent = this.textContent; 334 toggleRelatedDropdown(); 335 }); 336 }); 337338 relatedTabToggle.addEventListener('click', function () { 339 toggleRelatedDropdown(); 340 }); 341342 relatedTabToggle.querySelector('.tab-toggle__text').textContent = document.querySelector('.custom-related-products__menu .tabs__tab--active').textContent; 343 </script> 344345 } 346 } 347 else 348 { 349 <div class="alert alert-dark m-0">@Translate("No products available")</div> 350 } 351

Prisforespørgsel

Udfyld formularen og send dine spørgsmål eller kommentarer til Scantruck.
Herefter vender vi tilbage med pris og svar på dine spørgsmål.