Nordic madpakkehus 14 m² - Type 1C

Productnumber: 1685946-1
EAN/GLN number: 5703393742773
TUN nummer 2326214

Madpakkehuse og læskure er uundværlige, når børn og voksne ofte skal nyde madpakke og picnic i det fri.

Omkring de gode og robuste bord-/bænkesæt, kan både børnehaver, skoler, spejdere, lystfiskere, golfspillere og mange flere nyde en stund i ly for regnen og vinden - eller spise de medbragte madpakker og picnickurve samt lave kreative, udendørs aktiviteter og opgaver. 

Bord-/bænkesættene er i Lærk som er kendt for dets lange holdbarhed og høje kvalitet.

Husene leveres som nemme samlesæt, hvor sider og gavle er færdigsamlede og klar til montering.

🔴 Ikke på lager

Expected in stock: 19/06/2025
Error executing template "Designs/Swift/Paragraph/Swift_ProductPrice.cshtml"
System.FormatException: Input string was not in a correct format.
   at System.Number.ParseDouble(String value, NumberStyles options, NumberFormatInfo numfmt)
   at System.Convert.ToDouble(String value)
   at Plus.CustomModules.Helpers.CampaignPrice.GetConvertedPriceWithVat(ProductViewModel product)
   at CompiledRazorTemplates.Dynamic.RazorEngine_08304da990a3406792fa85cf8addc7f2.Execute() in C:\inetpub\wwwroot\plus-prod\Files\Templates\Designs\Swift\Paragraph\Swift_ProductPrice.cshtml:line 140
   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 System 3 @using System.Linq 4 @using Dynamicweb.Ecommerce.International 5 @using Dynamicweb.Ecommerce.Prices 6 @using Dynamicweb.Ecommerce.ProductCatalog 7 @using Plus.CustomModules.Helpers 8 @using PriceViewModel = Dynamicweb.Frontend.PriceViewModel 9 10 @{ 11 ProductViewModel product = new ProductViewModel(); 12 13 ProductViewModelSettings productSetting = new ProductViewModelSettings 14 { 15 LanguageId = Dynamicweb.Ecommerce.Common.Context.LanguageID, 16 CurrencyCode = Dynamicweb.Ecommerce.Common.Context.Currency.Code, 17 CountryCode = Dynamicweb.Ecommerce.Common.Context.Country.Code2, 18 ShopId = Pageview.Area.EcomShopId 19 }; 20 21 if (Dynamicweb.Context.Current.Items.Contains("ProductDetails")) 22 { 23 product = (ProductViewModel)Dynamicweb.Context.Current.Items["ProductDetails"]; 24 } 25 else if (Pageview.Item["DummyProduct"] != null) 26 { 27 28 string dummyProductId = ""; 29 var pageViewModel = Dynamicweb.Frontend.ContentViewModelFactory.CreatePageInfoViewModel(Pageview.Page); 30 ProductListViewModel productList = pageViewModel.Item.GetValue("DummyProduct") != null ? pageViewModel.Item.GetValue("DummyProduct") as ProductListViewModel : new ProductListViewModel(); 31 if (productList.Products != null) 32 { 33 foreach (var p in productList.Products) { dummyProductId = p.Id; } 34 ProductViewModel dummyProduct = dummyProductId != "" ? ViewModelFactory.CreateView(productSetting, dummyProductId) : new ProductViewModel(); 35 product = dummyProduct; 36 } 37 else 38 { 39 product = ViewModelFactory.CreateView(productSetting, Dynamicweb.Ecommerce.Services.Products.GetLastActiveProducts(1, Dynamicweb.Ecommerce.Common.Context.LanguageID, false).FirstOrDefault().Id); 40 } 41 } 42 else if (Pageview.Item["DummyProduct"] == null) 43 { 44 product = ViewModelFactory.CreateView(productSetting, Dynamicweb.Ecommerce.Services.Products.GetLastActiveProducts(1, Dynamicweb.Ecommerce.Common.Context.LanguageID, false).FirstOrDefault().Id); 45 } 46 47 string anonymousUsersLimitations = Pageview.AreaSettings.GetRawValueString("AnonymousUsers", ""); 48 bool anonymousUser = Pageview.User == null; 49 bool isErpConnectionDown = !Dynamicweb.Ecommerce.DynamicwebLiveIntegration.TemplatesHelper.IsWebServiceConnectionAvailable(); 50 bool hidePrice = anonymousUsersLimitations.Contains("price") && anonymousUser || Pageview.AreaSettings.GetBoolean("ErpDownHidePrices") && isErpConnectionDown; 51 52 bool showInformativePrice = Model.Item.GetBoolean("ShowInformativePrice"); 53 string unitId = !string.IsNullOrEmpty(Dynamicweb.Context.Current.Request.Form.Get("UnitId")) ? Dynamicweb.Context.Current.Request.Form.Get("UnitId") : string.Empty; 54 55 string priceFontSize = Model.Item.GetRawValueString("PriceSize", "fs-2"); 56 string horizontalAlign = Model.Item.GetRawValueString("HorizontalAlignment", ""); 57 string layout = Model.Item.GetRawValueString("Layout", "horizontal"); 58 string textAlign = horizontalAlign == "center" ? "text-center" : string.Empty; 59 textAlign = horizontalAlign == "end" ? "text-end" : textAlign; 60 61 horizontalAlign = horizontalAlign == "center" && layout == "horizontal" ? "justify-content-center" : horizontalAlign; 62 horizontalAlign = horizontalAlign == "end" && layout == "horizontal" ? "justify-content-end" : horizontalAlign; 63 horizontalAlign = horizontalAlign == "center" && layout == "vertical" ? "align-items-center" : horizontalAlign; 64 horizontalAlign = horizontalAlign == "end" && layout == "vertical" ? "align-items-end" : horizontalAlign; 65 66 string flexDirection = layout == "horizontal" ? string.Empty : "flex-column"; 67 string flexGap = layout == "horizontal" ? "gap-3" : string.Empty; 68 string order = layout == "horizontal" ? string.Empty : "order-2"; 69 string theme = !string.IsNullOrWhiteSpace(Model.Item.GetRawValueString("Theme")) ? "theme " + Model.Item.GetRawValueString("Theme").Replace(" ", "").Trim().ToLower() : ""; 70 theme = GetViewParameter("theme") != null ? GetViewParameterString("theme") : theme; 71 } 72 73 @if (!hidePrice && product.Id != null && !product.Discontinued) 74 { 75 string showPricesWithVat = Pageview.Area.EcomPricesWithVat.ToLower(); 76 bool neverShowVat = string.IsNullOrEmpty(showPricesWithVat); 77 78 string priceMin = ""; 79 string priceMax = ""; 80 81 string liveInfoClass = ""; 82 string productInfoFeed = ""; 83 bool isLazyLoadingForProductInfoEnabled = Dynamicweb.Ecommerce.DynamicwebLiveIntegration.TemplatesHelper.IsLazyLoadingForProductInfoEnabled; 84 if (isLazyLoadingForProductInfoEnabled) 85 { 86 if (Dynamicweb.Context.Current.Items.Contains("ProductInfoFeed")) 87 { 88 productInfoFeed = Dynamicweb.Context.Current.Items["ProductInfoFeed"]?.ToString(); 89 if (!string.IsNullOrEmpty(productInfoFeed)) 90 { 91 productInfoFeed = $"data-product-info-feed=\"{productInfoFeed}\""; 92 } 93 } 94 liveInfoClass = "js-live-info"; 95 } 96 97 <div class="@textAlign @liveInfoClass item_@Model.Item.SystemName.ToLower()" data-product-id="@product.Id" @productInfoFeed> 98 @if (showInformativePrice && product.PriceInformative.Price != 0) 99 { 100 <div class="opacity-50"> 101 <span>@Translate("RRP") </span> 102 <span class="text-decoration-line-through text-price">@product.PriceInformative.PriceFormatted</span> 103 </div> 104 } 105 <div class="@priceFontSize m-0 d-flex @flexDirection @flexGap @horizontalAlign product-price-efa" itemprop="offers" itemscope itemtype="https://schema.org/Offer"> 106 <span itemprop="priceCurrency" content="@product.Price.CurrencyCode" class="d-none"></span> 107 108 109 @if (showPricesWithVat == "false" && !neverShowVat) 110 { 111 if (isLazyLoadingForProductInfoEnabled && !Pageview.IsVisualEditorMode) 112 { 113 <span itemprop="price" content="" class="d-none"></span> 114 <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> 115 } 116 else 117 { 118 string beforePrice = !string.IsNullOrEmpty(unitId) ? product.GetPrice(unitId).PriceBeforeDiscount.PriceWithoutVatFormatted : product.PriceBeforeDiscount.PriceWithoutVatFormatted; 119 120 <span itemprop="price" content="@product.Price.PriceWithoutVat" class="d-none"></span> 121 if (product.Price.Price != product.PriceBeforeDiscount.Price) 122 { 123 <span class="text-decoration-line-through opacity-75 @order">@beforePrice</span> 124 } 125 } 126 } 127 else 128 { 129 if (isLazyLoadingForProductInfoEnabled && !Pageview.IsVisualEditorMode) 130 { 131 <span itemprop="price" content="" class="d-none"></span> 132 <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> 133 } 134 else 135 { 136 string beforePrice = !string.IsNullOrEmpty(unitId) ? product.GetPrice(unitId).PriceBeforeDiscount.PriceFormatted : product.PriceBeforeDiscount.PriceFormatted; 137 138 string googlepriceraw = product.Price.PriceWithVat.ToString(); 139 string googlepriceformatted = googlepriceraw.Replace(',', '.'); 140 var priceStandardFieldValueConverted = CampaignPrice.GetConvertedPriceWithVat(product); 141 bool campaignPrice = CampaignPrice.CheckCampaign(product, priceStandardFieldValueConverted); 142 143 <span itemprop="price" content="@googlepriceformatted" class="d-none"></span> 144 145 @*Old price shown if e.g. productdiscounts are active*@ 146 if (product.Price.Price != product.PriceBeforeDiscount.Price & campaignPrice == false) 147 { 148 <span class="text-decoration-line-through opacity-75 campaign-price-efa @order"> 149 <span class="text-price">@beforePrice</span> 150 </span> 151 } 152 } 153 } 154 155 @if (showPricesWithVat == "false" && !neverShowVat) 156 { 157 if (isLazyLoadingForProductInfoEnabled && !Pageview.IsVisualEditorMode) 158 { 159 <span class="text-price js-text-price"> 160 <span class="spinner-border" role="status"></span> 161 </span> 162 } 163 else 164 { 165 string price = !string.IsNullOrEmpty(unitId) ? product.GetPrice(unitId).Price.PriceWithoutVatFormatted : product.Price.PriceWithoutVatFormatted; 166 167 if (product?.VariantInfo?.VariantInfo != null) 168 { 169 priceMin = product?.VariantInfo?.PriceMin?.PriceWithoutVatFormatted != null ? product.VariantInfo.PriceMin.PriceWithoutVatFormatted : ""; 170 priceMax = product?.VariantInfo?.PriceMax?.PriceWithoutVatFormatted != null ? product.VariantInfo.PriceMax.PriceWithoutVatFormatted : ""; 171 } 172 if (priceMin != priceMax) 173 { 174 price = priceMin + " - " + priceMax; 175 } 176 <span class="@theme"> 177 <span class="text-price">@price</span> 178 </span> 179 } 180 } 181 else 182 { 183 if (isLazyLoadingForProductInfoEnabled && !Pageview.IsVisualEditorMode) 184 { 185 <span class="text-price js-text-price"> 186 <span class="spinner-border" role="status"></span> 187 </span> 188 } 189 else 190 { 191 string price = !string.IsNullOrEmpty(unitId) ? product.GetPrice(unitId).Price.PriceFormatted : product.Price.PriceFormatted; 192 var priceStandardFieldValueConverted = CampaignPrice.GetConvertedPriceWithVat(product); 193 bool campaignPrice = CampaignPrice.CheckCampaign(product, priceStandardFieldValueConverted); 194 var priceBefore = CampaignPrice.PriceBeforeWithVat(product, priceStandardFieldValueConverted); 195 196 if (product?.VariantInfo?.VariantInfo != null) 197 { 198 priceMin = product?.VariantInfo?.PriceMin?.PriceFormatted != null ? product.VariantInfo.PriceMin.PriceFormatted : ""; 199 priceMax = product?.VariantInfo?.PriceMax?.PriceFormatted != null ? product.VariantInfo.PriceMax.PriceFormatted : ""; 200 } 201 if (priceMin != priceMax) 202 { 203 price = priceMin + " - " + priceMax; 204 } 205 <div class="d-flex flex-wrap"> 206 @if (campaignPrice) 207 { 208 var oldprice = product.PriceBeforeDiscount.PriceFormatted; 209 @*<span itemprop="price" content="@priceStandardFieldValueConverted" class="d-none"></span>*@ 210 <span class="text-decoration-line-through opacity-75 @order w-100 campaign-price-efa"> 211 <span class="text-price">@oldprice</span> 212 </span> 213 } 214 @*New Price shown if e.g. productdicounts are active*@ 215 <span class="@theme w-100"> 216 <span class="text-price">@price</span> 217 </span> 218 </div> 219 } 220 } 221 222 @* Stock state for Schema.org, start *@ 223 @{ 224 Uri url = Dynamicweb.Context.Current.Request.Url; 225 } 226 227 <link itemprop="url" href="@url"> 228 229 @{ 230 bool IsNeverOutOfStock = product.NeverOutOfstock; 231 } 232 233 @if (IsNeverOutOfStock) 234 { 235 <span itemprop="availability" class="d-none">@Translate("Available in stock")</span> 236 } 237 else 238 { 239 if (product.StockLevel > 0) 240 { 241 <span itemprop="availability" class="d-none">InStock</span> 242 } 243 else 244 { 245 <span itemprop="availability" class="d-none">OutOfStock</span> 246 } 247 } 248 @* Stock state for Schema.org, stop *@ 249 250 </div> 251 252 @if (showPricesWithVat == "false" && !neverShowVat) 253 { 254 if (isLazyLoadingForProductInfoEnabled && !Pageview.IsVisualEditorMode) 255 { 256 <small class="opacity-85 fst-normal js-text-price-with-vat d-none" data-suffix="@Translate("Incl. VAT")"></small> 257 } 258 else 259 { 260 string price = !string.IsNullOrEmpty(unitId) ? product.GetPrice(unitId).Price.PriceWithVatFormatted : product.Price.PriceWithVatFormatted; 261 262 if (product?.VariantInfo?.VariantInfo != null) 263 { 264 priceMin = product?.VariantInfo?.PriceMin?.PriceWithVatFormatted != null ? product.VariantInfo.PriceMin.PriceWithVatFormatted : ""; 265 priceMax = product?.VariantInfo?.PriceMax?.PriceWithVatFormatted != null ? product.VariantInfo.PriceMax.PriceWithVatFormatted : ""; 266 } 267 if (priceMin != priceMax) 268 { 269 price = priceMin + " - " + priceMax; 270 } 271 <small class="opacity-85 fst-normal">@price @Translate("Incl. VAT")</small> 272 } 273 } 274 </div> 275 } 276 else if (Pageview.IsVisualEditorMode) 277 { 278 <div class="alert alert-dark m-0" role="alert"> 279 <span>@Translate("No products available")</span> 280 </div> 281 } 282
Tak for det, du vil få besked på e-mail, når varen er tilbage på lager.