586GAL11

Soft-start valve BG 300, G1/4

Type: GAL 11
Not in stock

Register as a customer under "Log in" to see your prices, or send us an enquiry!

Error executing template "/Designs/Swift/Paragraph/Swift_ProductPrice_Custom.cshtml"
System.NullReferenceException: Object reference not set to an instance of an object.
   at CompiledRazorTemplates.Dynamic.RazorEngine_ea2e84de4fb745e79f58d0619f7be424.Execute() in D:\dynamicweb.net\Solutions\brdklee.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\Paragraph\Swift_ProductPrice_Custom.cshtml:line 31
   at 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.<RunCompile>b__0(TextWriter writer)
   at RazorEngine.Templating.RazorEngineServiceExtensions.WithWriter(Action`1 withWriter)
   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.Ecommerce.ProductCatalog; 3 @using System.Linq; 4 @using Dynamicweb.Environment; 5 @using Dynamicweb.Core; 6 @using CustomCode.Models; 7 @using CustomCode.Helpers; 8 9 @{ 10 ProductViewModel product = null; 11 if (Dynamicweb.Context.Current.Items.Contains("ProductDetails")) 12 { 13 product = (ProductViewModel)Dynamicweb.Context.Current.Items["ProductDetails"]; 14 } 15 else if (Pageview.Item["DummyProduct"] != null && Pageview.IsVisualEditorMode) 16 { 17 var pageViewModel = Dynamicweb.Frontend.ContentViewModelFactory.CreatePageInfoViewModel(Pageview.Page); 18 ProductListViewModel productList = pageViewModel.Item.GetValue("DummyProduct") != null ? pageViewModel.Item.GetValue("DummyProduct") as ProductListViewModel : new ProductListViewModel(); 19 20 if (productList?.Products is object) 21 { 22 product = productList.Products[0]; 23 } 24 } 25 string anonymousUsersLimitations = Pageview.AreaSettings.GetRawValueString("AnonymousUsers", ""); 26 bool anonymousUser = Pageview.User == null; 27 bool isErpConnectionDown = !Dynamicweb.Core.Converter.ToBoolean(Dynamicweb.Context.Current.Items["IsWebServiceConnectionAvailable"]); 28 bool hidePrice = anonymousUsersLimitations.Contains("price") && anonymousUser || Pageview.AreaSettings.GetBoolean("ErpDownHidePrices") && isErpConnectionDown; 29 30 bool productIsDiscontinued = product is object && product.Discontinued; 31 bool doNotShowPriceIfProductIsDiscontinued = Model.Item.GetBoolean("DoNotShowPriceIfProductIsDiscontinued"); 32 var isDiscontinued = productIsDiscontinued && doNotShowPriceIfProductIsDiscontinued; 33 } 34 @if (!hidePrice && product != null && product.Id != null && !isDiscontinued) 35 { 36 bool showInformativePrice = Model.Item.GetBoolean("ShowInformativePrice"); 37 string unitId = !string.IsNullOrEmpty(Dynamicweb.Context.Current.Request.Form.Get("UnitId")) ? Dynamicweb.Context.Current.Request.Form.Get("UnitId") : string.Empty; 38 39 string priceFontSize = Model.Item.GetRawValueString("PriceSize", "fs-2"); 40 int priceFontSizeNumber = int.Parse(string.Concat(priceFontSize.Where(Char.IsDigit))); 41 string priceTextFontSize = "fs-" + (priceFontSizeNumber + 2).ToString(); 42 string badgeFontSize = "fs-" + (priceFontSizeNumber > 3 ? priceFontSizeNumber - 2 : 1).ToString(); 43 44 string horizontalAlign = Model.Item.GetRawValueString("HorizontalAlignment", ""); 45 string layout = Model.Item.GetRawValueString("Layout", "horizontal"); 46 string textAlign = horizontalAlign == "center" ? "text-center" : string.Empty; 47 textAlign = horizontalAlign == "end" ? "text-end" : textAlign; 48 49 horizontalAlign = horizontalAlign == "center" && layout == "horizontal" ? "justify-content-center" : horizontalAlign; 50 horizontalAlign = horizontalAlign == "end" && layout == "horizontal" ? "justify-content-end" : horizontalAlign; 51 horizontalAlign = horizontalAlign == "center" && layout == "vertical" ? "align-items-center" : horizontalAlign; 52 horizontalAlign = horizontalAlign == "end" && layout == "vertical" ? "align-items-end" : horizontalAlign; 53 54 string flexDirection = layout == "horizontal" ? string.Empty : "flex-column"; 55 string flexGap = layout == "horizontal" ? "gap-3" : "gap-2"; 56 string theme = !string.IsNullOrWhiteSpace(Model.Item.GetRawValueString("Theme")) ? "theme " + Model.Item.GetRawValueString("Theme").Replace(" ", "").Trim().ToLower() : ""; 57 theme = GetViewParameter("theme") != null ? GetViewParameterString("theme") : theme; 58 59 string contentPadding = Model.Item.GetRawValueString("ContentPadding", ""); 60 contentPadding = contentPadding == "none" ? "p-0" : contentPadding; 61 contentPadding = contentPadding == "small" ? "p-1 px-md-2 py-md-1" : contentPadding; 62 contentPadding = contentPadding == "large" ? "p-2 px-md-3 py-md-2" : contentPadding; 63 64 var user = Dynamicweb.Security.UserManagement.User.GetCurrentFrontendUser(); 65 66 string showPricesWithVat = Pageview.Area.EcomPricesWithVat.ToLower(); 67 bool neverShowVat = string.IsNullOrEmpty(showPricesWithVat); 68 69 string priceMin; 70 string priceMax; 71 double minQty = (product.PurchaseMinimumQuantity ?? 1) == 0 ? 1 : (double)product.PurchaseMinimumQuantity; 72 73 string liveInfoClass = ""; 74 string productInfoFeed = ""; 75 76 List<SalesAgreement> salesAgreements = SalesAgreementHelper.GetSalesAgreements(); 77 List<string> ItemNumbers = new List<string>(); 78 bool containsSaleAgreement = false; 79 80 foreach (SalesAgreement salesAgreement in salesAgreements) 81 { 82 foreach (SalesAgreementLine item in salesAgreement.Items) 83 { 84 ItemNumbers.Add(item.ItemNumber); 85 } 86 } 87 if (ItemNumbers.Contains(product.Number)) 88 { 89 containsSaleAgreement = true; 90 } 91 92 bool isLazyLoadingForProductInfoEnabled = Dynamicweb.Core.Converter.ToBoolean(Dynamicweb.Context.Current.Items["IsLazyLoadingForProductInfoEnabled"]); 93 if (isLazyLoadingForProductInfoEnabled) 94 { 95 if (Dynamicweb.Context.Current.Items.Contains("ProductInfoFeed")) 96 { 97 productInfoFeed = Dynamicweb.Context.Current.Items["ProductInfoFeed"]?.ToString(); 98 if (!string.IsNullOrEmpty(productInfoFeed)) 99 { 100 productInfoFeed = $"data-product-info-feed=\"{productInfoFeed}\""; 101 } 102 } 103 liveInfoClass = "js-live-info"; 104 } 105 106 <div class="@textAlign @liveInfoClass item_@Model.Item.SystemName.ToLower()" data-product-id="@product.Id" data-variant-id="@product.VariantId" @productInfoFeed> 107 @if (product.Price.Price == 0) 108 { 109 <div class="@priceFontSize m-0 d-flex @flexDirection @flexGap @horizontalAlign @theme justify-content-end" itemprop="offers" itemscope itemtype="http://schema.org/Offer"> 110 <span itemprop="priceCurrency" content="@product.Price.CurrencyCode" class="d-none"></span> 111 <span class="@theme @contentPadding"> 112 <span class="text-price">@Translate("Unknown Price")</span> 113 </span> 114 </div> 115 } 116 else if (containsSaleAgreement == true) 117 { 118 <div class="@priceFontSize m-0 d-flex @flexDirection @flexGap @horizontalAlign @theme justify-content-end" itemprop="offers" itemscope itemtype="http://schema.org/Offer"> 119 <span itemprop="priceCurrency" content="@product.Price.CurrencyCode" class="d-none"></span> 120 <span class="@theme @contentPadding"> 121 <span class="text-price">@Translate("Price for sales agreement")</span> 122 </span> 123 </div> 124 } 125 else 126 { 127 128 if (showInformativePrice && product.PriceInformative.Price != 0) 129 { 130 <div class="opacity-50"> 131 <span>@Translate("RRP") </span> 132 <span class="text-decoration-line-through text-price">@product.PriceInformative.PriceFormatted</span> 133 </div> 134 } 135 136 137 <div class="@priceTextFontSize m-0 d-flex @flexDirection @flexGap @horizontalAlign @theme justify-content-end" itemprop="offers" itemscope itemtype="https://schema.org/Offer"> 138 <span itemprop="priceCurrency" content="@product.Price.CurrencyCode" class="d-none"></span> 139 140 @* Price *@ 141 @if (showPricesWithVat == "false" && !neverShowVat) 142 { 143 if (isLazyLoadingForProductInfoEnabled && !Pageview.IsVisualEditorMode) 144 { 145 <span itemprop="price" content="" class="d-none"></span> 146 <span class="text-decoration-line-through js-text-decoration-line-through opacity-75 me-3 text-price js-text-price d-none" data-show-if="LiveProductInfo.product.Price.Price != LiveProductInfo.product.PriceBeforeDiscount.Price"></span> 147 148 } 149 else 150 { 151 string beforePrice = !string.IsNullOrEmpty(unitId) ? product.GetPrice(unitId).PriceBeforeDiscount.PriceWithoutVatFormatted : product.PriceBeforeDiscount.PriceWithoutVatFormatted; 152 <span itemprop="price" content="@product.Price.PriceWithoutVat" class="d-none"></span> 153 154 <div class="order-1 @contentPadding "> 155 <span class="custom-price"> 156 @Translate("Pris per") 1 @Translate("stk.") 157 </span> 158 <span class="custom-price @priceFontSize "> @beforePrice</span> 159 <span class="custom-price">@Translate("ekskl. moms")</span> 160 @if (product.Price.Price == product.PriceBeforeDiscount.Price) 161 { 162 <span class="custom-price">@Translate("Mindstekøb:") @minQty @Translate("stk.")</span> 163 } 164 </div> 165 } 166 } 167 else 168 { 169 if (isLazyLoadingForProductInfoEnabled && !Pageview.IsVisualEditorMode) 170 { 171 <span itemprop="price" content="" class="d-none"></span> 172 <span class="text-decoration-line-through js-text-decoration-line-through opacity-75 me-3 text-price js-text-price d-none" data-show-if="LiveProductInfo.product.Price.Price != LiveProductInfo.product.PriceBeforeDiscount.Price"></span> 173 } 174 else 175 { 176 string beforePrice = !string.IsNullOrEmpty(unitId) ? product.GetPrice(unitId).PriceBeforeDiscount.PriceWithVatFormatted : product.PriceBeforeDiscount.PriceWithVatFormatted; 177 <span itemprop="price" content="@product.Price.PriceWithVat" class="d-none"></span> 178 179 <div class="order-1 @contentPadding "> 180 <span class="custom-price"> 181 @Translate("Pris per") 1 @Translate("stk.") 182 </span> 183 <span class="custom-price @priceFontSize ">@beforePrice</span> 184 <span class="custom-price">@Translate("inkl. moms")</span> 185 @if (product.Price.Price == product.PriceBeforeDiscount.Price) 186 { 187 <span class="custom-price">@Translate("Mindstekøb:") @minQty @Translate("stk.")</span> 188 } 189 </div> 190 } 191 } 192 193 @* Total price *@ 194 @if (product.Price.Price != product.PriceBeforeDiscount.Price) 195 { 196 if (showPricesWithVat == "false" && !neverShowVat) 197 { 198 if (isLazyLoadingForProductInfoEnabled && !Pageview.IsVisualEditorMode) 199 { 200 <span class="text-price js-text-price"> 201 <span class="spinner-border" role="status"></span> 202 </span> 203 } 204 else 205 { 206 string price = !string.IsNullOrEmpty(unitId) ? product.GetPrice(unitId).Price.PriceWithoutVatFormatted : product.Price.PriceWithoutVatFormatted; 207 208 var badgeParms = new Dictionary<string, object>(); 209 badgeParms.Add("saleBadgeType", Model.Item.GetRawValue("SaleBadgeType")); 210 badgeParms.Add("saleBadgeCssClassName", Model.Item.GetRawValue("SaleBadgeDesign")); 211 badgeParms.Add("newBadgeCssClassName", Model.Item.GetRawValue("NewBadgeDesign")); 212 badgeParms.Add("newPublicationDays", Model.Item.GetInt32("NewPublicationDays")); 213 badgeParms.Add("campaignBadgesValues", Model.Item.GetRawValueString("CampaignBadges")); 214 215 if (product?.VariantInfo?.VariantInfo != null) 216 { 217 priceMin = product?.VariantInfo?.PriceMin?.PriceWithoutVatFormatted != null ? product.VariantInfo.PriceMin.PriceWithoutVatFormatted : "0"; 218 priceMax = product?.VariantInfo?.PriceMax?.PriceWithoutVatFormatted != null ? product.VariantInfo.PriceMax.PriceWithoutVatFormatted : "0"; 219 if (priceMin != priceMax) 220 { 221 price = priceMin + " - " + priceMax; 222 } 223 } 224 225 <div class="order-2 @contentPadding DiscountWithBadgeToggle"> 226 @if (layout == "horizontal") 227 { 228 229 <span class="custom-price">@Translate("Rabat")</span> 230 <span class="custom-price @priceFontSize">@RenderPartial("Components/EcommerceBadge_Custom.cshtml", product, badgeParms)</span> 231 } 232 else 233 { 234 <span class="custom-price @priceFontSize">@Translate("Rabat")@RenderPartial("Components/EcommerceBadge_Custom.cshtml", product, badgeParms)</span> 235 } 236 </div> 237 <div class="order-3 @contentPadding TotalPriceToggle"> 238 <span class="custom-price"><br></span> 239 <span class="custom-price @priceFontSize fw-bold"> @price</span> 240 <span class="custom-price">@Translate("ekskl. moms")</span> 241 <span class="custom-price">@Translate("Mindstekøb:") @minQty @Translate("stk.")</span> 242 </div> 243 } 244 } 245 else 246 { 247 if (isLazyLoadingForProductInfoEnabled && !Pageview.IsVisualEditorMode) 248 { 249 <span class="text-price js-text-price"> 250 <span class="spinner-border" role="status"></span> 251 </span> 252 } 253 else 254 { 255 string price = !string.IsNullOrEmpty(unitId) ? product.GetPrice(unitId).Price.PriceWithVatFormatted : product.Price.PriceWithVatFormatted; 256 257 var badgeParms = new Dictionary<string, object>(); 258 badgeParms.Add("saleBadgeType", Model.Item.GetRawValue("SaleBadgeType")); 259 badgeParms.Add("saleBadgeCssClassName", Model.Item.GetRawValue("SaleBadgeDesign")); 260 badgeParms.Add("newBadgeCssClassName", Model.Item.GetRawValue("NewBadgeDesign")); 261 badgeParms.Add("newPublicationDays", Model.Item.GetInt32("NewPublicationDays")); 262 badgeParms.Add("campaignBadgesValues", Model.Item.GetRawValueString("CampaignBadges")); 263 264 if (product?.VariantInfo?.VariantInfo != null) 265 { 266 priceMin = product?.VariantInfo?.PriceMin?.PriceWithVatFormatted != null ? product.VariantInfo.PriceMin.PriceWithVatFormatted : "0"; 267 priceMax = product?.VariantInfo?.PriceMax?.PriceWithVatFormatted != null ? product.VariantInfo.PriceMax.PriceWithVatFormatted : "0"; 268 if (priceMin != priceMax) 269 { 270 price = priceMin + " - " + priceMax; 271 } 272 } 273 274 if (product.Price.Price != product.PriceBeforeDiscount.Price) 275 { 276 <div class="order-2 @contentPadding DiscountWithBadgeToggle"> 277 @if (layout == "horizontal") 278 { 279 280 <span class="custom-price">@Translate("Rabat")</span> 281 <span class="custom-price @priceFontSize">@RenderPartial("Components/EcommerceBadge_Custom.cshtml", product, badgeParms)</span> 282 } 283 else 284 { 285 <span class="custom-price @priceFontSize">@Translate("Rabat")@RenderPartial("Components/EcommerceBadge_Custom.cshtml", product, badgeParms)</span> 286 } 287 </div> 288 } 289 <div class="order-3 @contentPadding TotalPriceToggle"> 290 <span class="custom-price"><br /></span> 291 <span class="custom-price @priceFontSize fw-bolder">@price</span> 292 <span class="custom-price">@Translate("inkl. moms")</span> 293 <span class="custom-price">@Translate("Mindstekøb:") @minQty @Translate("stk.")</span> 294 </div> 295 } 296 } 297 } 298 @*</div>*@ 299 @* Stock state for Schema.org, start *@ 300 @{ 301 Uri url = Dynamicweb.Context.Current.Request.Url; 302 } 303 304 <link itemprop="url" href="@url"> 305 306 @{ 307 bool IsNeverOutOfStock = product.NeverOutOfstock; 308 } 309 310 @if (IsNeverOutOfStock) 311 { 312 <span itemprop="availability" class="d-none">@Translate("Available in stock")</span> 313 } 314 else 315 { 316 if (product.StockLevel > 0) 317 { 318 <span itemprop="availability" class="d-none">InStock</span> 319 } 320 else 321 { 322 <span itemprop="availability" class="d-none">OutOfStock</span> 323 } 324 } 325 @* Stock state for Schema.org, stop *@ 326 327 </div> 328 329 //Outcommented do to not want to show prices including VAT 330 @*if (showPricesWithVat == "false" && !neverShowVat) 331 { 332 if (isLazyLoadingForProductInfoEnabled && !Pageview.IsVisualEditorMode) 333 { 334 <small class="opacity-85 fst-normal js-text-price-with-vat d-none" data-suffix="@Translate("Incl. VAT")"></small> 335 } 336 else 337 { 338 string price = !string.IsNullOrEmpty(unitId) ? product.GetPrice(unitId).Price.PriceWithVatFormatted : product.Price.PriceWithVatFormatted; 339 340 if (product?.VariantInfo?.VariantInfo != null) 341 { 342 priceMin = product?.VariantInfo?.PriceMin?.PriceWithVatFormatted != null ? product.VariantInfo.PriceMin.PriceWithVatFormatted : ""; 343 priceMax = product?.VariantInfo?.PriceMax?.PriceWithVatFormatted != null ? product.VariantInfo.PriceMax.PriceWithVatFormatted : ""; 344 } 345 if (priceMin != priceMax) 346 { 347 price = priceMin + " - " + priceMax; 348 } 349 <small class="opacity-85 fst-normal">@price @Translate("Incl. VAT")</small> 350 } 351 }*@ 352 } 353 </div> 354 } 355 else if (Pageview.IsVisualEditorMode) 356 { 357 <div class="alert alert-dark m-0" role="alert"> 358 <span>@Translate("No products available")</span> 359 </div> 360 } 361
Weight, kg
0
item Number
586GAL11

Datasheets & Documents

Request additional documents and drawings

 

Product drawings, documents and brochures of any kind may contain errors for which Brd. Klee is not liable for. 

 

At Brd. Klee A/S we are ISO 9001:2015 certified

Since 1994, Brd. Klee has been ISO certified after 9001:2015 standard by Norske Veritas.

Reasons to choose us

  • Over 500.000 products
  • Data sheets, manuals og 3D drawings
  • Our employees are specialists
  • More than 75 years in the industry

We can help you 24/7

You can order and have goods delivered 24 hours a day - all year.

Outside normal opening hours, service costs a fee.

Call us on telephone (+45) 43 86 83 33

By clicking 'Accept All' you consent that we may collect information about you for various purposes, including: Functionality, Statistics and Marketing