Flexit S12 X

Här på Filterhuset hittar du kvalitetsfilter till ditt Flexit S12 X ventilationssystem. Filtren är tillverkade i vår produktion i Danmark, efter Flexit specifikationer, vilket är din garanti för att ditt nya filter passar in perfekt i ditt system.

Error executing template "Designs/danfilter/eCom/Productlist/espresso.cshtml"System.NullReferenceException: Object reference not set to an instance of an object.at Dynamicweb.Ecommerce.LiveIntegration.Products.PriceManager.ProcessResponse(XmlDocument response) in C:\git\danfilter.espresso4.dk\Dynamicweb.Ecommerce.LiveIntegration\Products\PriceManager.cs:line 45at Co3.Danfilter.Website.Services.ProductService.GetPrices(Product product, PriceType priceType) in C:\git\danfilter.espresso4.dk\Co3.Danfilter.Website\Services\ProductService.cs:line 40at CompiledRazorTemplates.Dynamic.RazorEngine_5b8a451855d24c909046bb5ca4be85bc.<>c__DisplayClass14_0.b__0(TextWriter __razor_helper_writer) in E:\Dynamicweb.NET\Solutions\danfilter.espresso4.dk\files\Templates\Designs\danfilter\eCom\Productlist\espresso.cshtml:line 328at CompiledRazorTemplates.Dynamic.RazorEngine_5b8a451855d24c909046bb5ca4be85bc.Execute() in E:\Dynamicweb.NET\Solutions\danfilter.espresso4.dk\files\Templates\Designs\danfilter\eCom\Productlist\espresso.cshtml:line 662at RazorEngine.Templating.TemplateBase.RazorEngine.Templating.ITemplate.Run(ExecuteContext context, TextWriter reader)at RazorEngine.Templating.RazorEngineService.RunCompile(ITemplateKey key, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag)at RazorEngine.Templating.RazorEngineServiceExtensions.<>c__DisplayClass16_0.b__0(TextWriter writer)at RazorEngine.Templating.RazorEngineServiceExtensions.WithWriter(Action`1 withWriter)at Dynamicweb.Rendering.Template.RenderRazorTemplate()
1 @using Co3.Espresso.Website.Services; 2 @using Dynamicweb.Frontend; 3 @using Dynamicweb.Rendering; 4 @using Co3.Espresso.Base.Extensions; 5 @using Co3.Espresso.Website.Models.FrontEnd; 6 @using Dynamicweb.Ecommerce.Common 7 @using Dynamicweb.Ecommerce.Products 8 9 @inherits RazorTemplateBase< RazorTemplateModel< Template > > 10 11 @using System.Globalization 12 @using System.Security.Cryptography.X509Certificates 13 @using Co3.Danfilter.Website.Models.FrontEnd 14 @using danfilterModels = Co3.Danfilter.Data.Models 15 @using Co3.Danfilter.Website.Services 16 @using Co3.Espresso.Base.Extensions 17 @using Co3.Espresso.Website.Models.FrontEnd 18 @using Co3.Espresso.Website.Services 19 @using Dynamicweb.Content 20 @using Dynamicweb.Ecommerce 21 @using Dynamicweb.Frontend 22 @using Dynamicweb.Rendering 23 @using Dynamicweb.Rendering.Translation 24 @using EcomContext = Dynamicweb.Ecommerce.Common.Context 25 @using ProductService = Co3.Espresso.Website.Services.ProductService 26 @using danfilterService = Co3.Danfilter.Website.Services 27 @using Dynamicweb.Ecommerce.Orders 28 @using Co3.Danfilter.Data.Services 29 @using Co3.Espresso.Website.Models.FrontEnd.Elements 30 @using Dynamicweb.Ecommerce.Products 31 @using Dynamicweb.SystemTools 32 @using System.Web 33 34 @functions { 35 36 public string getCountryCodeFromArea( Area area ) 37 { 38 RegionInfo regionInfo = new RegionInfo( area.CultureInfo.LCID ); 39 return regionInfo.TwoLetterISORegionName; 40 } 41 42 public static string GetStandardCollapseToggleTextExpand() 43 { 44 return "Se mere"; 45 } 46 47 public static string GetStandardCollapseToggleTextCollapse() 48 { 49 return "Se mindre"; 50 } 51 52 public static bool HasFreeDelivery( string productID = "" ) 53 { 54 bool returnValue = false; 55 if ( !string.IsNullOrEmpty( productID ) ) 56 { 57 Shipping shippingWithLowestFreeFeeAmount = Services.Shippings.GetShippings( EcomContext.LanguageID )?.Where( s => s.Active && s.FreeFeeAmount != default( double ) )?.OrderBy( s => s.FreeFeeAmount ).FirstOrDefault(); 58 if ( shippingWithLowestFreeFeeAmount != null ) 59 { 60 EspressoPrice price = danfilterService.ProductService.Instance.GetPrice( productID ); 61 EspressoPrice priceBefore = danfilterService.ProductService.Instance.GetBeforePrice( productID ); 62 EspressoPrice priceToUse; 63 if ( priceBefore.Price != default( double ) && priceBefore.Price < price.Price ) 64 { 65 priceToUse = priceBefore; 66 } 67 else 68 { 69 priceToUse = price; 70 } 71 returnValue = danfilterService.ProductService.Instance.GetPriceWithOrWithoutVAT( shippingWithLowestFreeFeeAmount.FreeFeeAmount ).Price <= priceToUse.Price; 72 } 73 } 74 return returnValue; 75 } 76 77 public static bool HasDiscount( string productID = "" ) 78 { 79 bool returnValue = false; 80 81 if ( !string.IsNullOrEmpty( productID ) ) 82 { 83 Co3.Danfilter.Data.Models.PriceList prices = danfilterService.ProductService.Instance.GetPrices( productID, EcomContext.LanguageID, PriceType.QuantityPrice ); 84 returnValue = prices.Prices.Count > 1; 85 } 86 return returnValue; 87 } 88 89 public static EspressoPrice GetLowestEspressoPrice(string productID, danfilterModels.PriceList prices ) 90 { 91 EspressoPrice returnValue = danfilterService.ProductService.Instance.GetPrice( productID ); 92 foreach ( KeyValuePair< double, danfilterModels.Price > price in prices.Prices ) 93 { 94 EspressoPrice itemEspressoPrice = danfilterService.ProductService.Instance.GetPriceWithOrWithoutVAT( decimal.ToDouble( price.Value.ProductPrice ) ); 95 if ( itemEspressoPrice.Price < returnValue.Price ) 96 { 97 returnValue = itemEspressoPrice; 98 } 99 }100 return returnValue;101 }102103 public static EspressoPrice GetLowestEspressoBeforePrice(string productID, danfilterModels.PriceList prices )104 {105 EspressoPrice espressoPrice = danfilterService.ProductService.Instance.GetPrice( productID );106 EspressoPrice returnValue = danfilterService.ProductService.Instance.GetBeforePrice( productID );107108 foreach ( KeyValuePair< double, danfilterModels.Price > price in prices.Prices )109 {110 EspressoPrice itemEspressoPrice = danfilterService.ProductService.Instance.GetPriceWithOrWithoutVAT( decimal.ToDouble( price.Value.ProductPrice ) );111 EspressoPrice itemEspressoBeforePrice = danfilterService.ProductService.Instance.GetPriceWithOrWithoutVAT( decimal.ToDouble( price.Value.ProductBasePrice ) );112 if ( itemEspressoPrice.Price < espressoPrice.Price )113 {114 returnValue = itemEspressoBeforePrice;115 }116 }117 return returnValue;118 }119120 public static EspressoPrice GetHighestEspressoPrice(string productID, danfilterModels.PriceList prices )121 {122 EspressoPrice returnValue = danfilterService.ProductService.Instance.GetPrice( productID );123 foreach ( KeyValuePair< double, danfilterModels.Price > price in prices.Prices )124 {125 EspressoPrice itemEspressoPrice = danfilterService.ProductService.Instance.GetPriceWithOrWithoutVAT( decimal.ToDouble( price.Value.ProductPrice ) );126 if ( itemEspressoPrice.Price > returnValue.Price )127 {128 returnValue = itemEspressoPrice;129 }130 }131 return returnValue;132 }133134 public static EspressoPrice GetHighestEspressoBeforePrice(string productID, danfilterModels.PriceList prices )135 {136 EspressoPrice espressoPrice = danfilterService.ProductService.Instance.GetPrice( productID );137 EspressoPrice returnValue = danfilterService.ProductService.Instance.GetBeforePrice( productID );138139 foreach ( KeyValuePair< double, danfilterModels.Price > price in prices.Prices )140 {141 EspressoPrice itemEspressoPrice = danfilterService.ProductService.Instance.GetPriceWithOrWithoutVAT( decimal.ToDouble( price.Value.ProductPrice ) );142 EspressoPrice itemEspressoBeforePrice = danfilterService.ProductService.Instance.GetPriceWithOrWithoutVAT( decimal.ToDouble( price.Value.ProductBasePrice ) );143 if ( itemEspressoPrice.Price > espressoPrice.Price )144 {145 returnValue = itemEspressoBeforePrice;146 }147 }148 return returnValue;149 }150151 public static string GetPricePrefix( string productID, danfilterModels.PriceList prices )152 {153 string returnValue = string.Empty;154 EspressoPrice espressoPrice = danfilterService.ProductService.Instance.GetPrice( productID );155 foreach ( KeyValuePair< double, danfilterModels.Price > price in prices.Prices )156 {157 EspressoPrice itemEspressoPrice = danfilterService.ProductService.Instance.GetPriceWithOrWithoutVAT( decimal.ToDouble( price.Value.ProductPrice ) );158 if ( itemEspressoPrice.Price < espressoPrice.Price )159 {160 returnValue = string.Format("{0} ", Translation.GetTranslation( "eCom Productlist - Price from - Text" ));161 break;162 }163 }164 return returnValue;165 }166167 }168169170171172 @helper ProductDescription( string sectionClasses = "e-section", bool sectionCollapse = false, string contentClasses = null, string heading = null, string content = null, string collapseToggleTextExpand = null, string collapseToggleTextCollapse = null )173 {174 if ( string.IsNullOrEmpty( content ) == false )175 {176 ClassList headingClassList = new ClassList();177 headingClassList.AddClasses( "col-12" );178 ClassList contentClassList = new ClassList();179 contentClassList.AddClasses( "col-12" );180181 @sectionStart( sectionClasses: sectionClasses, sectionCollapse: sectionCollapse, contentClasses: contentClasses, collapseToggleTextCollapse: collapseToggleTextCollapse, collapseToggleTextExpand: collapseToggleTextExpand )182183 if ( string.IsNullOrEmpty( heading ) == false )184 {185 <div class="@headingClassList">186 <h2 class="h2">@heading</h2>187 </div>188 }189 <div class="@contentClassList">190 @content191 </div>192193 @sectionEnd()194 }195 }196197198 @helper ProductVideo( string sectionClasses = "e-section", string contentClasses = null, string heading = null, string videoURL = null )199 {200 if ( string.IsNullOrEmpty( videoURL ) == false )201 {202 ClassList headingClassList = new ClassList();203 headingClassList.AddClasses( "col-12" );204 ClassList contentClassList = new ClassList();205 contentClassList.AddClasses( "col-12" );206207208 @sectionStart( sectionClasses: sectionClasses, contentClasses: contentClasses )209210 if ( string.IsNullOrEmpty( heading ) == false )211 {212 <div class="@headingClassList">213 <p class="h2">@heading</p>214 </div>215 }216217 <div class="@contentClassList">218 <div class="embed-responsive embed-responsive-16by9 mb-2">219 <iframe class="embed-responsive-item" src="@videoURL" width="1080" height="608" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>220 </div>221 </div>222 @sectionEnd()223 }224 }225226 @helper ProductRelatedProducts( string sectionClasses = "e-section", string contentClasses = null, string heading = null,227 IEnumerable< RazorTemplateBase< RazorTemplateModel< Template > >.LoopItem > productLoop = null )228 {229 if ( productLoop != null && productLoop.Any() == true )230 {231 ClassList headingClassList = new ClassList();232 headingClassList.AddClasses( "col-12" );233 ClassList contentClassList = new ClassList();234 contentClassList.AddClasses( "col-12" );235236 @sectionStart( sectionClasses: sectionClasses, contentClasses: contentClasses )237238 if ( string.IsNullOrEmpty( heading ) == false )239 {240 <div class="@headingClassList">241 <h2 class="text-center">@heading</h2>242 </div>243 }244 <div class="@contentClassList">245 <div class="e-products mb-2">246 <div class="row justify-content-center">247 @{248 string productlistItemClassList = ProductlistService.Instance.GetGridItemWidth( null ).ToResponsiveClasses();249 }250 @foreach ( RazorTemplateBase< RazorTemplateModel< Template > >.LoopItem product in productLoop )251 {252 @ProductlistItem( product, productlistItemClassList )253 }254 </div>255 </div>256 </div>257258 @sectionEnd()259 }260 }261262 @helper ProductRelatedProductsDanFilter( string sectionClasses = "e-section", string contentClasses = null, string heading = null,263 IEnumerable< RazorTemplateBase< RazorTemplateModel< Template > >.LoopItem > productLoop = null )264 {265 if ( productLoop != null && productLoop.Any() == true )266 {267 ClassList headingClassList = new ClassList();268 headingClassList.AddClasses( "col-12" );269 ClassList contentClassList = new ClassList();270 contentClassList.AddClasses( "col-12" );271272 @sectionStart( sectionClasses: sectionClasses, contentClasses: contentClasses )273274 if ( string.IsNullOrEmpty( heading ) == false )275 {276 <div class="@headingClassList">277 <h2 class="text-center">@heading</h2>278 </div>279 }280 <div class="@contentClassList">281 <div class="e-products mb-2">282 <div class="row justify-content-center">283 @{284 string productlistItemClassList = ProductlistService.Instance.GetGridItemWidth( null ).ToResponsiveClasses();285 }286 @foreach ( RazorTemplateBase< RazorTemplateModel< Template > >.LoopItem product in productLoop )287 {288 @ProductlistItemDanFilter( product, productlistItemClassList )289 }290 </div>291 </div>292 </div>293294 @sectionEnd()295 }296 }297298 @helper ProductlistItem( RazorTemplateBase< RazorTemplateModel< Template > >.LoopItem product, string productlistItemClassList = null )299 {300 if ( product != null )301 {302 dynamic filterTypes = new List< dynamic >();303 foreach ( RazorTemplateBase< RazorTemplateModel< Template > >.LoopItem productCategory in product.GetLoop( "ProductCategories" ) )304 {305 foreach ( RazorTemplateBase< RazorTemplateModel< Template > >.LoopItem productCategoryField in productCategory.GetLoop( "ProductCategoryFields" ) )306 {307 if ( productCategoryField.GetString( "Ecom:Product.CategoryField.ID" ) == "B2CFilterType" )308 {309 if ( !string.IsNullOrEmpty( productCategoryField.GetString( "Ecom:Product.CategoryField.Value.Clean" ) ) )310 {311 string[] filterTypesLabels = productCategoryField.GetString( "Ecom:Product.CategoryField.OptionLabel" ).Split( ',' );312 string[] filterTypeValues = productCategoryField.GetString( "Ecom:Product.CategoryField.Value.Clean" ).Split( ',' );313 int index = 0;314 foreach ( string filterTypeValue in filterTypeValues )315 {316 filterTypes.Add( new317 {318 url = string.Format( "/admin/public/getimage.ashx?Crop=0&amp;Image=/Files/Images/danfilter/ikon-{0}.png&Format=png&Width=40&Height=40&Quality=75", filterTypeValue ),319 label = Translation.GetTranslation("eCom Product - Filter type label - " + filterTypesLabels[ index ])320 } );321 ++index;322 }323 }324 }325 }326 }327328 danfilterModels.PriceList prices = danfilterService.ProductService.Instance.GetPrices( product.GetString( "Ecom:Product.ID" ), EcomContext.LanguageID, PriceType.QuantityPrice );329 EspressoPrice productEspressoPrice = GetLowestEspressoPrice( product.GetString( "Ecom:Product.ID" ), prices );330 EspressoPrice productEspressoBeforePrice = GetLowestEspressoBeforePrice( product.GetString( "Ecom:Product.ID" ), prices );331 string pricePrefix = GetPricePrefix(product.GetString( "Ecom:Product.ID" ), prices);332333 dynamic productData = new334 {335 id = product.GetString( "Ecom:Product.ID" ),336 variantId = product.GetString( "Ecom:Product.VariantID" ),337 url = ProductService.Instance.GetProductLink( product.GetString( "Ecom:Product.PrimaryOrFirstGroupID" ), product.GetString( "Ecom:Product.ID" ), product.GetString( "Ecom:Product.VariantID" ) ),338 number = product.GetString( "Ecom:Product.Number" ),339 name = ProductService.Instance.GetName( product.GetString( "Ecom:Product.ID" ), product.GetString( "Ecom:Product.VariantID" ) ),340 imageLarge = ImageService.Instance.GetImageURL( product.GetString( "Ecom:Product.ImageDefault.Clean" ), 400, 400, 5 ),341 pricePrefix = pricePrefix,342 price = productEspressoPrice,//danfilterService.ProductService.Instance.GetPrice( product.GetString( "Ecom:Product.ID" ) ),343 priceBefore = productEspressoBeforePrice,//danfilterService.ProductService.Instance.GetBeforePrice( product.GetString( "Ecom:Product.ID" ) ),344 descriptionShortExtra01 = product.GetString( "Ecom:Product:Field.DescriptionShortExtra01" ),345 discountLable = HasDiscount(product.GetString( "Ecom:Product.ID" )),346 freeDeliveryLable = HasFreeDelivery(product.GetString( "Ecom:Product.ID" )),347 filterTypes = filterTypes,348 stock = new349 {350 id = product.GetString( "Ecom:Product:Stock.ID" ),351 quantity = product.GetString( "Ecom:Product.Stock" ),352 text = product.GetString( "Ecom:Product:Stock.Text" ),353 delivery = product.GetString( "Ecom:Product:Stock.DeliveryText" )354 }355 };356 bool showBeforePrice = productData.priceBefore.Price != 0 && productData.priceBefore.Price > productData.price.Price;357358359 <div class="@productlistItemClassList">360 <div class="e-products-item js-e-products-item js-e-products-item-@productData.id js-e-block-link e-block-link " data-variant-id="@productData.variantId">361 <div class="e-products-item-container">362 <div class="e-products-item-image-container">363 <a class="e-products-item-image-wrapper" href="@productData.url" onclick="trackProductClick(@HttpUtility.HtmlAttributeEncode( JsonService.Instance.ToJson( productData )))">364 <img src="@productData.imageLarge" alt="" class="e-products-item-image">365 @if ( productData.freeDeliveryLable && !productData.discountLable )366 {367 <span class="danfilter-productlist-item-label label-freedelivery">368 <span class="label-text">@Translation.GetTranslation( "eCom Product - Label - Free delivery" )</span>369 </span>370 }371 @if ( productData.discountLable && !productData.freeDeliveryLable )372 {373 <span class="danfilter-productlist-item-label label-discount">374 <span class="label-text">@Translation.GetTranslation( "eCom Product - Label - Discounts" )</span>375 </span>376 }377 @if ( productData.discountLable && productData.freeDeliveryLable )378 {379 <span class="danfilter-productlist-item-label label-both">380 <span class="label-text">@Translation.GetTranslation( "eCom Product - Label - Free delivery and discounts" )</span>381 </span>382 }383 </a>384 </div>385 <div class="e-products-item-text-container text-center">386 <h3 class="e-products-item-name mb-0">387 <a href="@productData.url" onclick="trackProductClick(@HttpUtility.HtmlAttributeEncode( JsonService.Instance.ToJson( productData )))">388 @productData.name389 </a>390 </h3>391 <div class="danfilter-productlist-item-pictogram-wrapper">392 @if ( productData.filterTypes.Count > 0 )393 {394 foreach ( dynamic filterType in productData.filterTypes )395 {396 <img src="@filterType.url" alt="@filterType.label" title="@filterType.label">397 }398 }399 </div>400401 @{402 ProductStatus productStatus = Co3.Danfilter.Website.Services.ProductService.Instance.GetProductStatus( productData.id, productData.variantId );403 }404 @RenderingService.Instance.PartialView( "/eCom/Product/_partials/productStatusStock.cshtml", productStatus )405 @if ( showBeforePrice )406 {407 <p class="e-products-item-text mb-0 small">408 <small class="e-products-item-price m-0 e-product-price-before text-muted">409 <a href="@productData.url" onclick="trackProductClick(@HttpUtility.HtmlAttributeEncode( JsonService.Instance.ToJson( productData )))">410 @productData.priceBefore411 </a>412 </small>413 </p>414 }415 <p class="e-products-item-text mb-0">416 <small class="e-products-item-price">417 <a href="@productData.url" onclick="trackProductClick(@HttpUtility.HtmlAttributeEncode( JsonService.Instance.ToJson( productData )))">418 @string.Format("{0}{1}", pricePrefix, productData.price)419 </a>420 </small>421 </p>422423 <form action="/system/data/cart" class="e-product-form js-e-product-form" method="post">424 <input name="CartCmd" type="hidden" value="Add">425 <input type="hidden" name="ProductID" value="@productData.id">426 <input name="VariantID" type="hidden" value="">427 <input name="UnitID" type="hidden" value="">428 <input name="Redirect" type="hidden" value="">429 <div class="danfilter-product-list-add-to-cart-wrapper">430 <input name="Quantity" type="hidden" value="1">431 <button class="btn btn-primary" type="submit">@Translation.GetTranslation( "eCom Product - Add To Cart - Button" )</button>432 </div>433 </form>434435 </div>436 </div>437 </div>438 </div>439 }440 }441442443 @helper ProductlistItemDanFilter( RazorTemplateBase< RazorTemplateModel< Template > >.LoopItem product, string productlistItemClassList = null )444 {445 if ( product != null )446 {447 dynamic filterTypes = new List< dynamic >();448 foreach ( RazorTemplateBase< RazorTemplateModel< Template > >.LoopItem productCategory in product.GetLoop( "ProductCategories" ) )449 {450 foreach ( RazorTemplateBase< RazorTemplateModel< Template > >.LoopItem productCategoryField in productCategory.GetLoop( "ProductCategoryFields" ) )451 {452 if ( productCategoryField.GetString( "Ecom:Product.CategoryField.ID" ) == "B2CFilterType" )453 {454 if ( !string.IsNullOrEmpty( productCategoryField.GetString( "Ecom:Product.CategoryField.Value.Clean" ) ) )455 {456 string[] filterTypesLabels = productCategoryField.GetString( "Ecom:Product.CategoryField.OptionLabel" ).Split( ',' );457 string[] filterTypeValues = productCategoryField.GetString( "Ecom:Product.CategoryField.Value.Clean" ).Split( ',' );458 int index = 0;459 foreach ( string filterTypeValue in filterTypeValues )460 {461 filterTypes.Add( new462 {463 url = string.Format( "/admin/public/getimage.ashx?Crop=0&amp;Image=/Files/Images/danfilter/ikon-{0}.png&Format=png&Width=40&Height=40&Quality=75", filterTypeValue ),464 label = filterTypesLabels[ index ]465 } );466 ++index;467 }468 }469 }470 }471 }472473 danfilterModels.PriceList prices = danfilterService.ProductService.Instance.GetPrices( product.GetString( "Ecom:Product.ID" ), EcomContext.LanguageID, PriceType.QuantityPrice );474 EspressoPrice productEspressoPrice = GetLowestEspressoPrice( product.GetString( "Ecom:Product.ID" ), prices );475 EspressoPrice productEspressoBeforePrice = GetLowestEspressoBeforePrice( product.GetString( "Ecom:Product.ID" ), prices );476 string pricePrefix = GetPricePrefix(product.GetString( "Ecom:Product.ID" ), prices);477478 dynamic productData = new479 {480 id = product.GetString( "Ecom:Product.ID" ),481 variantId = product.GetString( "Ecom:Product.VariantID" ),482 url = ProductService.Instance.GetProductLink( product.GetString( "Ecom:Product.PrimaryOrFirstGroupID" ), product.GetString( "Ecom:Product.ID" ), product.GetString( "Ecom:Product.VariantID" ) ),483 number = product.GetString( "Ecom:Product.Number" ),484 name = ProductService.Instance.GetName( product.GetString( "Ecom:Product.ID" ), product.GetString( "Ecom:Product.VariantID" ) ),485 imageLarge = ImageService.Instance.GetImageURL( product.GetString( "Ecom:Product.ImageDefault.Clean" ), 400, 400, 5 ),486 pricePrefix = pricePrefix,487 price = productEspressoPrice,//danfilterService.ProductService.Instance.GetPrice( product.GetString( "Ecom:Product.ID" ) ),488 priceBefore = productEspressoBeforePrice,//danfilterService.ProductService.Instance.GetBeforePrice( product.GetString( "Ecom:Product.ID" ) ),489 descriptionShortExtra01 = product.GetString( "Ecom:Product:Field.DescriptionShortExtra01" ),490 discountLable = HasDiscount(product.GetString( "Ecom:Product.ID" )),491 freeDeliveryLable = HasFreeDelivery(product.GetString( "Ecom:Product.ID" )),492 filterTypes = filterTypes,493 stock = new494 {495 id = product.GetString( "Ecom:Product:Stock.ID" ),496 quantity = product.GetString( "Ecom:Product.Stock" ),497 text = product.GetString( "Ecom:Product:Stock.Text" ),498 delivery = product.GetString( "Ecom:Product:Stock.DeliveryText" )499 }500 };501 bool showBeforePrice = productData.priceBefore.Price != 0 && productData.priceBefore.Price > productData.price.Price;502503504 <div class="@productlistItemClassList">505 <div class="e-products-item js-e-products-item js-e-products-item-@productData.id js-e-block-link e-block-link " data-variant-id="@productData.variantId">506 <div class="e-products-item-container">507 <div class="e-products-item-image-container">508 <a class="e-products-item-image-wrapper" href="@productData.url">509 <img src="@productData.imageLarge" alt="" class="e-products-item-image">510 </a>511 </div>512 <div class="e-products-item-text-container text-center">513 <h3 class="e-products-item-name mb-0">514 <a href="@productData.url">515 @productData.name516 </a>517 </h3>518 <div class="danfilter-productlist-item-pictogram-wrapper">519 @if ( productData.filterTypes.Count > 0 )520 {521 foreach ( dynamic filterType in productData.filterTypes )522 {523 <img src="@filterType.url" alt="@filterType.label" title="@filterType.label">524 }525 }526 </div>527528 @{529 ProductStatus productStatus = Co3.Danfilter.Website.Services.ProductService.Instance.GetProductStatus( productData.id, productData.variantId );530 }531 @RenderingService.Instance.PartialView( "/eCom/Product/_partials/productStatusStock.cshtml", productStatus )532533534 <form action="/system/data/cart" class="e-product-form js-e-product-form" method="post">535 <input name="CartCmd" type="hidden" value="Add">536 <input type="hidden" name="ProductID" value="@productData.id">537 <input name="VariantID" type="hidden" value="">538 <input name="UnitID" type="hidden" value="">539 <input name="Redirect" type="hidden" value="">540 <div class="danfilter-product-list-add-to-cart-wrapper">541 <input name="Quantity" type="hidden" value="1">542 <button class="btn btn-primary" type="submit">@Translation.GetTranslation( "eCom Product - Add To Cart - Button" )</button>543 </div>544 </form>545546 </div>547 </div>548 </div>549 </div>550 }551 }552553554 @helper sectionStart( string sectionClasses = "e-section", string contentClasses = null, bool sectionCollapse = false, string sectionId = null, string collapseToggleTextExpand = null, string collapseToggleTextCollapse = null )555 {556 sectionId = string.IsNullOrEmpty( sectionId ) ? Guid.NewGuid().ToString( "N" ) : sectionId;557 ClassList sectionClassList = new ClassList();558 sectionClassList.AddClasses( sectionClasses );559 ClassList contentClassList;560561 if ( contentClasses == null )562 {563 contentClassList = Co3.Espresso.Website.Services.PageService.Instance.GetResponsiveClassesFromPageItem( PageView.Current().Page.Item );564 }565 else566 {567 contentClassList = new ClassList();568 contentClassList.AddClasses( contentClasses );569 }570571 // TODO: Split collapse logic into separate helper function.572 string collapseId = Guid.NewGuid().ToString( "N" );573 ClassList collapseToggleClassList = new ClassList();574 if ( sectionCollapse )575 {576 sectionClassList.AddClasses( "p-section-collapse js-p-section-collapse" );577 collapseToggleClassList.AddClasses( contentClasses );578 collapseToggleClassList.AddClasses( "p-section-collapse-toggle collapsed order-last text-center" );579 contentClassList.AddClasses( "p-section-collapse-content collapse is-md" );580 }581582 @:<section class="@sectionClassList" id="@sectionId">583 @:<div class="container-fluid">584 @:<div class="row">585586 // TODO: Split collapse logic into separate helper function.587 if ( sectionCollapse )588 {589 <div class="@collapseToggleClassList" data-toggle="collapse" data-target="#@collapseId">590 <button class="btn bg-white p-section-collapse-toggle-btn" type="button">591 <i class="material-icons p-section-collapse-toggle-icon">keyboard_arrow_down</i>592 </button>593 <small class="h4 p-section-collapse-toggle-text" data-expand-text="@( string.IsNullOrEmpty( collapseToggleTextExpand ) ? GetStandardCollapseToggleTextExpand() : collapseToggleTextExpand )" data-collapse-text="@( string.IsNullOrEmpty( collapseToggleTextCollapse ) ? GetStandardCollapseToggleTextCollapse() : collapseToggleTextCollapse )"></small>594 </div>595 }596597 @:<div class="@contentClassList" id="@collapseId">598 @:<div class="row">599 }600601 @helper sectionEnd()602 {603 @:</div>604 @:</div>605 @:</div>606 @:</div>607 @:</section>608 }609610611612613 @{614 ClassList productlistItemClassList = new ClassList();615 Dictionary< string, decimal > paragraphEcommerceGridItemWidth = ProductlistService.Instance.GetGridItemWidth( PageView.Current().CurrentParagraph.Item.GetValue< string >( "ItemWidth" ) );616 productlistItemClassList.AddClasses617 ( paragraphEcommerceGridItemWidth.ToResponsiveClasses618 ()619 );620 }621622 <script>623 function trackProductClick(productObj) {624 dataLayer.push({625 'event': 'productClick',626 'ecommerce': {627 'click': {628 'products': [{629 'name': productObj.name,630 'id': productObj.id,631 'price': productObj.price.Price632 }]633 }634 },635 'eventCallback': function() {636 document.location = productObj.url;637 }638 });639 return false;640 }641 </script>642643644 <div class="e-productlist js-gtm-tracking-productlist">645646 <div class="row">647 <div class="col-12">648649 <div class="e-productlist-body">650 <div class="row">651 <div class="col-12">652 <div class="e-products">653 <div class="row">654 @{655 int productIndex = 1;656 }657 <script>658 var arrImpressions = [];659 </script>660 @foreach ( LoopItem product in GetLoop( "Products" ) )661 {662 @ProductlistItem( product, productlistItemClassList.ToString() )663 IEnumerable< ProductGroupRelation > groups = Dynamicweb.Ecommerce.Services.ProductGroups.GetProductGroupRelations( product.GetString( "Ecom:Product.ID" ) );664 string listName = string.Empty;665 if ( groups != null && groups.FirstOrDefault( g => g.IsPrimary ) != null )666 {667 listName = Dynamicweb.Ecommerce.Services.ProductGroups.GetGroup( groups.FirstOrDefault( g => g.IsPrimary ).GroupId )?.Name ;668 }669670 <script>671 arrImpressions.push({672 "id": '@product.GetString( "Ecom:Product.ID" )',673 "name": '@product.GetString( "Ecom:Product.Name" )',674 "price": @product.GetDouble( "Ecom:Product.Price.Price" ),675 "position": @productIndex,676 "list": '@listName'677 });678 </script>679680 productIndex++;681 }682 </div>683 </div>684 </div>685 </div>686 </div>687688 </div>689 </div>690691 </div>692693 <script>694 dataLayer.push({695 "ecommerce": {696 "currencyCode": "@Context.Currency.Code",697 "impressions": arrImpressions698 }699 });700 </script>701

Vilket Flexit S12 X filter ska jag välja?

Standardfilter

• G4 filterklass
• PM: 10
• Tar bort damm och smuts
• Kan monteras i in- och utsuget

Läs mer här

standardfilter

Pollenfilter

• F7 filterklass
• PM: 2,5
• Minskar allergibesvär
• Monteras i insuget

Läs mer här

pollenfilter

SafeAir

• F9 filterklass
• PM: 1,0
• Tar bort skadliga partiklar
• Monteras i insuget

Läs mer här

SafeAir

Kolfilter

• Tar bort dålig lukt
• Ingen partikelfiltrering
• Monteras i insuget med partikelfilter

Läs mer här

Kulfilter

Filterbyte i Flexit S12 X

Vi rekommenderar, som utgångspunkt, att du byter ditt Pollenpåsfilter var 6:e månad, vilket gör att du kan vara säker på att ditt system hålls rent från damm och smuts. Om du bor i ett område med mycket föroreningar kan det vara nödvändigt att byta filter oftare, därför rekommenderar vi att du kontrollerar dina filter och ditt system regelbundet.

Hittade du inte vad du sökte?

Är du fortfarande osäker på vilket ventilationssystem du har monterat i ditt hem eller har du svårt att välja vilken filtertyp du ska använda? Då är du välkommen att kontakta Filterhusets Kundtjänst. Vi finns redo att hjälpa dig med dina eventuella frågor.

Kontakta oss

Adress

Retur
Genvägen 1, 231 62 
Trelleborg, Sverige

DANFILTER ApS
CVR-nummer: 10062527

Öppettider

Kundtjänst telefon:
Mån - tors kl. 9.00 - 17.00
Fredag kl. 9.00 - 16.00

Lager:
Mån - tors kl. 8.00 - 16.00
Fredag kl. 8.00 - 14.00

Hittade du inte vad du sökte?

Är du fortfarande osäker på vilket ventilationssystem du har monterat i ditt hem eller har du svårt att välja vilken filtertyp du ska använda? Då är du välkommen att kontakta Filterhusets Kundtjänst. Vi finns redo att hjälpa dig med dina eventuella frågor.

Kontakta oss

Adress

Retur
Genvägen 1, 231 62 
Trelleborg, Sverige

DANFILTER ApS
CVR-nummer: 10062527

Öppettider

Kundtjänst telefon:
Mån - tors kl. 9.00 - 17.00
Fredag kl. 9.00 - 16.00

Lager:
Mån - tors kl. 8.00 - 16.00
Fredag kl. 8.00 - 14.00

keyboard_arrow_up