Sorter etter

Teknikk

Pris

Kunstner

Randas I
Randas I
Astrid Sylwan

Randas I

Etsning
kr 7 500 Available in stock
Randas II
Randas II
Astrid Sylwan

Randas II

Etsning
kr 7 500 Available in stock
Randas III
Randas III
Astrid Sylwan

Randas III

Etsning
kr 7 500 Available in stock
Randas V
Randas V
Astrid Sylwan

Randas V

Etsning
kr 7 500 Available in stock
Hålla kvar II, monotypi
Hålla kvar II, monotypi
Astrid Sylwan

Hålla kvar II, monotypi

Monotypi
Error executing template "/Designs/Swift/Paragraph/Swift_ProductPrice_Mennt.cshtml"
System.InvalidOperationException: Collection was modified; enumeration operation may not execute.
   at System.ThrowHelper.ThrowInvalidOperationException(ExceptionResource resource)
   at System.Collections.Generic.List`1.Enumerator.MoveNextRare()
   at Dynamicweb.Ecommerce.Prices.PriceManager.GetPrice(PriceContext context, Product product, String unitId, Int64 stockLocationId)
   at System.Lazy`1.CreateValue()
   at System.Lazy`1.LazyInitValue()
   at Dynamicweb.Ecommerce.ProductCatalog.ViewEngine.<>c__DisplayClass3_2.<BulkCreateView>b__48()
   at System.Lazy`1.CreateValue()
   at System.Lazy`1.LazyInitValue()
   at Dynamicweb.Ecommerce.ProductCatalog.ViewEngine.GetPrice(PriceViewModelSettings settings, IList`1 products, Boolean& pricesHasBeenPrepared, Object lock, Lazy`1 priceInfo)
   at Dynamicweb.Ecommerce.ProductCatalog.ViewEngine.<>c__DisplayClass3_2.<BulkCreateView>b__49()
   at System.Lazy`1.CreateValue()
   at System.Lazy`1.LazyInitValue()
   at CompiledRazorTemplates.Dynamic.RazorEngine_526fac5091e14f8ab455111b70082114.Execute() in D:\dynamicweb.net\Solutions\Mennt\KunstWeb2023.dw9.dynamicweb-cms.com\files\Templates\Designs\Swift\Paragraph\Swift_ProductPrice_Mennt.cshtml:line 86
   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 4 @{ 5 ProductViewModel product = null; 6 if (Dynamicweb.Context.Current.Items.Contains("ProductDetails")) 7 { 8 product = (ProductViewModel)Dynamicweb.Context.Current.Items["ProductDetails"]; 9 } 10 else if (Pageview.Page.Item["DummyProduct"] != null && Pageview.IsVisualEditorMode) 11 { 12 var pageViewModel = Dynamicweb.Frontend.ContentViewModelFactory.CreatePageInfoViewModel(Pageview.Page); 13 ProductListViewModel productList = pageViewModel.Item.GetValue("DummyProduct") != null ? pageViewModel.Item.GetValue("DummyProduct") as ProductListViewModel : new ProductListViewModel(); 14 15 if (productList?.Products is object) 16 { 17 product = productList.Products[0]; 18 } 19 } 20 21 string anonymousUsersLimitations = Pageview.AreaSettings.GetRawValueString("AnonymousUsers", ""); 22 bool anonymousUser = Pageview.User == null; 23 bool isErpConnectionDown = !Dynamicweb.Core.Converter.ToBoolean(Dynamicweb.Context.Current.Items["IsWebServiceConnectionAvailable"]); 24 bool hidePrice = anonymousUsersLimitations.Contains("price") && anonymousUser || Pageview.AreaSettings.GetBoolean("ErpDownHidePrices") && isErpConnectionDown; 25 26 bool productIsDiscontinued = product is object && product.Discontinued; 27 bool doNotShowPriceIfProductIsDiscontinued = Model.Item.GetBoolean("DoNotShowPriceIfProductIsDiscontinued"); 28 var isDiscontinued = productIsDiscontinued && doNotShowPriceIfProductIsDiscontinued; 29 } 30 31 @if (product is object && !hidePrice && !isDiscontinued) { 32 bool showInformativePrice = Model.Item.GetBoolean("ShowInformativePrice"); 33 string unitId = !string.IsNullOrEmpty(Dynamicweb.Context.Current.Request.Form.Get("UnitId")) ? Dynamicweb.Context.Current.Request.Form.Get("UnitId") : string.Empty; 34 35 string priceFontSize = Model.Item.GetRawValueString("PriceSize", "fs-2"); 36 string horizontalAlign = Model.Item.GetRawValueString("HorizontalAlignment", ""); 37 string layout = Model.Item.GetRawValueString("Layout", "horizontal"); 38 string textAlign = horizontalAlign == "center" ? "text-center" : string.Empty; 39 textAlign = horizontalAlign == "end" ? "text-end" : textAlign; 40 41 horizontalAlign = horizontalAlign == "center" && layout == "horizontal" ? "justify-content-center" : horizontalAlign; 42 horizontalAlign = horizontalAlign == "end" && layout == "horizontal" ? "justify-content-end" : horizontalAlign; 43 horizontalAlign = horizontalAlign == "center" && layout == "vertical" ? "align-items-center" : horizontalAlign; 44 horizontalAlign = horizontalAlign == "end" && layout == "vertical" ? "align-items-end" : horizontalAlign; 45 46 string flexDirection = layout == "horizontal" ? string.Empty : "flex-column"; 47 string flexGap = layout == "horizontal" ? "gap-3" : string.Empty; 48 string order = layout == "horizontal" ? string.Empty : "order-2"; 49 string theme = !string.IsNullOrWhiteSpace(Model.Item.GetRawValueString("Theme")) ? "theme " + Model.Item.GetRawValueString("Theme").Replace(" ", "").Trim().ToLower() : ""; 50 theme = GetViewParameter("theme") != null ? GetViewParameterString("theme") : theme; 51 52 string contentPadding = Model.Item.GetRawValueString("ContentPadding", ""); 53 contentPadding = contentPadding == "none" ? "p-0" : contentPadding; 54 contentPadding = contentPadding == "small" ? "p-1 px-md-2 py-md-1" : contentPadding; 55 contentPadding = contentPadding == "large" ? "p-2 px-md-3 py-md-2" : contentPadding; 56 57 string showPricesWithVat = Pageview.Area.EcomPricesWithVat.ToLower(); 58 bool neverShowVat = string.IsNullOrEmpty(showPricesWithVat); 59 60 string priceMin = ""; 61 string priceMax = ""; 62 63 string liveInfoClass = ""; 64 string productInfoFeed = ""; 65 bool isLazyLoadingForProductInfoEnabled = Dynamicweb.Core.Converter.ToBoolean(Dynamicweb.Context.Current.Items["IsLazyLoadingForProductInfoEnabled"]); 66 if (isLazyLoadingForProductInfoEnabled) 67 { 68 if (Dynamicweb.Context.Current.Items.Contains("ProductInfoFeed")) 69 { 70 productInfoFeed = Dynamicweb.Context.Current.Items["ProductInfoFeed"]?.ToString(); 71 if (!string.IsNullOrEmpty(productInfoFeed)) 72 { 73 productInfoFeed = $"data-product-info-feed=\"{productInfoFeed}\""; 74 } 75 } 76 liveInfoClass = "js-live-info"; 77 } 78 79 <div class="@textAlign @liveInfoClass item_@Model.Item.SystemName.ToLower()" data-product-id="@product.Id" data-variant-id="@product.VariantId" @productInfoFeed> 80 @if (showInformativePrice && product.PriceInformative.Price != 0) 81 { 82 <div class="opacity-50"> 83 <span>@Translate("RRP") </span> 84 <span class="text-decoration-line-through text-price">@product.PriceInformative.PriceFormatted</span> 85 </div> 86 } 87 <div class="@priceFontSize m-0 d-flex flex-wrap @flexDirection @flexGap @horizontalAlign" style="row-gap: 0 !important" itemprop="offers" itemscope itemtype="https://schema.org/Offer"> 88 <span itemprop="priceCurrency" content="@product.Price.CurrencyCode" class="d-none"></span> 89 90 91 @if (showPricesWithVat == "false" && !neverShowVat) 92 { 93 if (isLazyLoadingForProductInfoEnabled && !Pageview.IsVisualEditorMode) 94 { 95 <span itemprop="price" content="" class="d-none"></span> 96 <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> 97 } 98 else 99 { 100 string beforePrice = !string.IsNullOrEmpty(unitId) ? product.GetPrice(unitId).PriceBeforeDiscount.PriceWithoutVatFormatted : product.PriceBeforeDiscount.PriceWithoutVatFormatted; 101 102 <span itemprop="price" content="@product.Price.PriceWithoutVat" class="d-none"></span> 103 if (product.Price.Price != product.PriceBeforeDiscount.Price) 104 { 105 <span class="text-decoration-line-through opacity-75 @order">@beforePrice</span> 106 } 107 } 108 } 109 else 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.PriceFormatted : product.PriceBeforeDiscount.PriceFormatted; 119 120 <span itemprop="price" content="@product.Price.Price" class="d-none"></span> 121 122 if (product.Price.Price != product.PriceBeforeDiscount.Price) 123 { 124 <span class="text-decoration-line-through opacity-75 @order"> 125 <span class="text-price">@beforePrice</span> 126 </span> 127 } 128 } 129 } 130 131 @if (showPricesWithVat == "false" && !neverShowVat) 132 { 133 if (isLazyLoadingForProductInfoEnabled && !Pageview.IsVisualEditorMode) 134 { 135 <span class="text-price js-text-price"> 136 <span class="spinner-border" role="status"></span> 137 </span> 138 } 139 else 140 { 141 string price = !string.IsNullOrEmpty(unitId) ? product.GetPrice(unitId).Price.PriceWithoutVatFormatted : product.Price.PriceWithoutVatFormatted; 142 143 if (product?.VariantInfo?.VariantInfo != null) 144 { 145 priceMin = product?.VariantInfo?.PriceMin?.PriceWithoutVatFormatted != null ? product.VariantInfo.PriceMin.PriceWithoutVatFormatted : ""; 146 priceMax = product?.VariantInfo?.PriceMax?.PriceWithoutVatFormatted != null ? product.VariantInfo.PriceMax.PriceWithoutVatFormatted : ""; 147 } 148 if (priceMin != priceMax) 149 { 150 price = priceMin + " - " + priceMax; 151 } 152 <span class="@theme @contentPadding"> 153 <span class="text-price">@price</span> 154 </span> 155 } 156 } 157 else 158 { 159 if (isLazyLoadingForProductInfoEnabled && !Pageview.IsVisualEditorMode) 160 { 161 <span class="text-price js-text-price"> 162 <span class="spinner-border" role="status"></span> 163 </span> 164 } 165 else 166 { 167 string price = !string.IsNullOrEmpty(unitId) ? product.GetPrice(unitId).Price.PriceFormatted : product.Price.PriceFormatted; 168 169 if (product?.VariantInfo?.VariantInfo != null) 170 { 171 priceMin = product?.VariantInfo?.PriceMin?.PriceFormatted != null ? product.VariantInfo.PriceMin.PriceFormatted : ""; 172 priceMax = product?.VariantInfo?.PriceMax?.PriceFormatted != null ? product.VariantInfo.PriceMax.PriceFormatted : ""; 173 } 174 if (priceMin != priceMax) 175 { 176 price = priceMin + " - " + priceMax; 177 } 178 <span class="@theme @contentPadding"> 179 <span class="text-price">@price.Replace(",00", "")</span> 180 </span> 181 } 182 } 183 184 @* Stock state for Schema.org, start *@ 185 @{ 186 Uri url = Dynamicweb.Context.Current.Request.Url; 187 } 188 189 <link itemprop="url" href="@url"> 190 191 @{ 192 bool IsNeverOutOfStock = product.NeverOutOfstock; 193 } 194 195 @if (IsNeverOutOfStock) 196 { 197 <span itemprop="availability" class="d-none">@Translate("Available in stock")</span> 198 } 199 else 200 { 201 if (product.StockLevel > 0) 202 { 203 <span itemprop="availability" class="d-none">InStock</span> 204 } 205 else 206 { 207 <span itemprop="availability" class="d-none">OutOfStock</span> 208 } 209 } 210 @* Stock state for Schema.org, stop *@ 211 212 </div> 213 214 @if (showPricesWithVat == "false" && !neverShowVat) 215 { 216 if (isLazyLoadingForProductInfoEnabled && !Pageview.IsVisualEditorMode) 217 { 218 <small class="opacity-85 fst-normal js-text-price-with-vat d-none" data-suffix="@Translate("Incl. VAT")"></small> 219 } 220 else 221 { 222 string price = !string.IsNullOrEmpty(unitId) ? product.GetPrice(unitId).Price.PriceWithVatFormatted : product.Price.PriceWithVatFormatted; 223 224 if (product?.VariantInfo?.VariantInfo != null) 225 { 226 priceMin = product?.VariantInfo?.PriceMin?.PriceWithVatFormatted != null ? product.VariantInfo.PriceMin.PriceWithVatFormatted : ""; 227 priceMax = product?.VariantInfo?.PriceMax?.PriceWithVatFormatted != null ? product.VariantInfo.PriceMax.PriceWithVatFormatted : ""; 228 } 229 if (priceMin != priceMax) 230 { 231 price = priceMin + " - " + priceMax; 232 } 233 <small class="opacity-85 fst-normal">@price @Translate("Incl. VAT")</small> 234 } 235 } 236 </div> 237 } 238 else if (Pageview.IsVisualEditorMode) 239 { 240 <div class="alert alert-dark m-0" role="alert"> 241 <span>@Translate("No products available")</span> 242 </div> 243 } 244
Hålla kvar I
Hålla kvar I
Astrid Sylwan

Hålla kvar I

Etsning
kr 6 500 Available in stock
Hålla kvar II
Hålla kvar II
Astrid Sylwan

Hålla kvar II

Etsning
Error executing template "/Designs/Swift/Paragraph/Swift_ProductPrice_Mennt.cshtml"
System.InvalidOperationException: Collection was modified; enumeration operation may not execute.
   at System.ThrowHelper.ThrowInvalidOperationException(ExceptionResource resource)
   at System.Collections.Generic.List`1.Enumerator.MoveNextRare()
   at Dynamicweb.Ecommerce.Prices.PriceManager.GetPrice(PriceContext context, Product product, String unitId, Int64 stockLocationId)
   at System.Lazy`1.CreateValue()
   at System.Lazy`1.LazyInitValue()
   at Dynamicweb.Ecommerce.ProductCatalog.ViewEngine.<>c__DisplayClass3_2.<BulkCreateView>b__48()
   at System.Lazy`1.CreateValue()
   at System.Lazy`1.LazyInitValue()
   at Dynamicweb.Ecommerce.ProductCatalog.ViewEngine.GetPrice(PriceViewModelSettings settings, IList`1 products, Boolean& pricesHasBeenPrepared, Object lock, Lazy`1 priceInfo)
   at Dynamicweb.Ecommerce.ProductCatalog.ViewEngine.<>c__DisplayClass3_2.<BulkCreateView>b__49()
   at System.Lazy`1.CreateValue()
   at System.Lazy`1.LazyInitValue()
   at CompiledRazorTemplates.Dynamic.RazorEngine_526fac5091e14f8ab455111b70082114.Execute() in D:\dynamicweb.net\Solutions\Mennt\KunstWeb2023.dw9.dynamicweb-cms.com\files\Templates\Designs\Swift\Paragraph\Swift_ProductPrice_Mennt.cshtml:line 86
   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 4 @{ 5 ProductViewModel product = null; 6 if (Dynamicweb.Context.Current.Items.Contains("ProductDetails")) 7 { 8 product = (ProductViewModel)Dynamicweb.Context.Current.Items["ProductDetails"]; 9 } 10 else if (Pageview.Page.Item["DummyProduct"] != null && Pageview.IsVisualEditorMode) 11 { 12 var pageViewModel = Dynamicweb.Frontend.ContentViewModelFactory.CreatePageInfoViewModel(Pageview.Page); 13 ProductListViewModel productList = pageViewModel.Item.GetValue("DummyProduct") != null ? pageViewModel.Item.GetValue("DummyProduct") as ProductListViewModel : new ProductListViewModel(); 14 15 if (productList?.Products is object) 16 { 17 product = productList.Products[0]; 18 } 19 } 20 21 string anonymousUsersLimitations = Pageview.AreaSettings.GetRawValueString("AnonymousUsers", ""); 22 bool anonymousUser = Pageview.User == null; 23 bool isErpConnectionDown = !Dynamicweb.Core.Converter.ToBoolean(Dynamicweb.Context.Current.Items["IsWebServiceConnectionAvailable"]); 24 bool hidePrice = anonymousUsersLimitations.Contains("price") && anonymousUser || Pageview.AreaSettings.GetBoolean("ErpDownHidePrices") && isErpConnectionDown; 25 26 bool productIsDiscontinued = product is object && product.Discontinued; 27 bool doNotShowPriceIfProductIsDiscontinued = Model.Item.GetBoolean("DoNotShowPriceIfProductIsDiscontinued"); 28 var isDiscontinued = productIsDiscontinued && doNotShowPriceIfProductIsDiscontinued; 29 } 30 31 @if (product is object && !hidePrice && !isDiscontinued) { 32 bool showInformativePrice = Model.Item.GetBoolean("ShowInformativePrice"); 33 string unitId = !string.IsNullOrEmpty(Dynamicweb.Context.Current.Request.Form.Get("UnitId")) ? Dynamicweb.Context.Current.Request.Form.Get("UnitId") : string.Empty; 34 35 string priceFontSize = Model.Item.GetRawValueString("PriceSize", "fs-2"); 36 string horizontalAlign = Model.Item.GetRawValueString("HorizontalAlignment", ""); 37 string layout = Model.Item.GetRawValueString("Layout", "horizontal"); 38 string textAlign = horizontalAlign == "center" ? "text-center" : string.Empty; 39 textAlign = horizontalAlign == "end" ? "text-end" : textAlign; 40 41 horizontalAlign = horizontalAlign == "center" && layout == "horizontal" ? "justify-content-center" : horizontalAlign; 42 horizontalAlign = horizontalAlign == "end" && layout == "horizontal" ? "justify-content-end" : horizontalAlign; 43 horizontalAlign = horizontalAlign == "center" && layout == "vertical" ? "align-items-center" : horizontalAlign; 44 horizontalAlign = horizontalAlign == "end" && layout == "vertical" ? "align-items-end" : horizontalAlign; 45 46 string flexDirection = layout == "horizontal" ? string.Empty : "flex-column"; 47 string flexGap = layout == "horizontal" ? "gap-3" : string.Empty; 48 string order = layout == "horizontal" ? string.Empty : "order-2"; 49 string theme = !string.IsNullOrWhiteSpace(Model.Item.GetRawValueString("Theme")) ? "theme " + Model.Item.GetRawValueString("Theme").Replace(" ", "").Trim().ToLower() : ""; 50 theme = GetViewParameter("theme") != null ? GetViewParameterString("theme") : theme; 51 52 string contentPadding = Model.Item.GetRawValueString("ContentPadding", ""); 53 contentPadding = contentPadding == "none" ? "p-0" : contentPadding; 54 contentPadding = contentPadding == "small" ? "p-1 px-md-2 py-md-1" : contentPadding; 55 contentPadding = contentPadding == "large" ? "p-2 px-md-3 py-md-2" : contentPadding; 56 57 string showPricesWithVat = Pageview.Area.EcomPricesWithVat.ToLower(); 58 bool neverShowVat = string.IsNullOrEmpty(showPricesWithVat); 59 60 string priceMin = ""; 61 string priceMax = ""; 62 63 string liveInfoClass = ""; 64 string productInfoFeed = ""; 65 bool isLazyLoadingForProductInfoEnabled = Dynamicweb.Core.Converter.ToBoolean(Dynamicweb.Context.Current.Items["IsLazyLoadingForProductInfoEnabled"]); 66 if (isLazyLoadingForProductInfoEnabled) 67 { 68 if (Dynamicweb.Context.Current.Items.Contains("ProductInfoFeed")) 69 { 70 productInfoFeed = Dynamicweb.Context.Current.Items["ProductInfoFeed"]?.ToString(); 71 if (!string.IsNullOrEmpty(productInfoFeed)) 72 { 73 productInfoFeed = $"data-product-info-feed=\"{productInfoFeed}\""; 74 } 75 } 76 liveInfoClass = "js-live-info"; 77 } 78 79 <div class="@textAlign @liveInfoClass item_@Model.Item.SystemName.ToLower()" data-product-id="@product.Id" data-variant-id="@product.VariantId" @productInfoFeed> 80 @if (showInformativePrice && product.PriceInformative.Price != 0) 81 { 82 <div class="opacity-50"> 83 <span>@Translate("RRP") </span> 84 <span class="text-decoration-line-through text-price">@product.PriceInformative.PriceFormatted</span> 85 </div> 86 } 87 <div class="@priceFontSize m-0 d-flex flex-wrap @flexDirection @flexGap @horizontalAlign" style="row-gap: 0 !important" itemprop="offers" itemscope itemtype="https://schema.org/Offer"> 88 <span itemprop="priceCurrency" content="@product.Price.CurrencyCode" class="d-none"></span> 89 90 91 @if (showPricesWithVat == "false" && !neverShowVat) 92 { 93 if (isLazyLoadingForProductInfoEnabled && !Pageview.IsVisualEditorMode) 94 { 95 <span itemprop="price" content="" class="d-none"></span> 96 <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> 97 } 98 else 99 { 100 string beforePrice = !string.IsNullOrEmpty(unitId) ? product.GetPrice(unitId).PriceBeforeDiscount.PriceWithoutVatFormatted : product.PriceBeforeDiscount.PriceWithoutVatFormatted; 101 102 <span itemprop="price" content="@product.Price.PriceWithoutVat" class="d-none"></span> 103 if (product.Price.Price != product.PriceBeforeDiscount.Price) 104 { 105 <span class="text-decoration-line-through opacity-75 @order">@beforePrice</span> 106 } 107 } 108 } 109 else 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.PriceFormatted : product.PriceBeforeDiscount.PriceFormatted; 119 120 <span itemprop="price" content="@product.Price.Price" class="d-none"></span> 121 122 if (product.Price.Price != product.PriceBeforeDiscount.Price) 123 { 124 <span class="text-decoration-line-through opacity-75 @order"> 125 <span class="text-price">@beforePrice</span> 126 </span> 127 } 128 } 129 } 130 131 @if (showPricesWithVat == "false" && !neverShowVat) 132 { 133 if (isLazyLoadingForProductInfoEnabled && !Pageview.IsVisualEditorMode) 134 { 135 <span class="text-price js-text-price"> 136 <span class="spinner-border" role="status"></span> 137 </span> 138 } 139 else 140 { 141 string price = !string.IsNullOrEmpty(unitId) ? product.GetPrice(unitId).Price.PriceWithoutVatFormatted : product.Price.PriceWithoutVatFormatted; 142 143 if (product?.VariantInfo?.VariantInfo != null) 144 { 145 priceMin = product?.VariantInfo?.PriceMin?.PriceWithoutVatFormatted != null ? product.VariantInfo.PriceMin.PriceWithoutVatFormatted : ""; 146 priceMax = product?.VariantInfo?.PriceMax?.PriceWithoutVatFormatted != null ? product.VariantInfo.PriceMax.PriceWithoutVatFormatted : ""; 147 } 148 if (priceMin != priceMax) 149 { 150 price = priceMin + " - " + priceMax; 151 } 152 <span class="@theme @contentPadding"> 153 <span class="text-price">@price</span> 154 </span> 155 } 156 } 157 else 158 { 159 if (isLazyLoadingForProductInfoEnabled && !Pageview.IsVisualEditorMode) 160 { 161 <span class="text-price js-text-price"> 162 <span class="spinner-border" role="status"></span> 163 </span> 164 } 165 else 166 { 167 string price = !string.IsNullOrEmpty(unitId) ? product.GetPrice(unitId).Price.PriceFormatted : product.Price.PriceFormatted; 168 169 if (product?.VariantInfo?.VariantInfo != null) 170 { 171 priceMin = product?.VariantInfo?.PriceMin?.PriceFormatted != null ? product.VariantInfo.PriceMin.PriceFormatted : ""; 172 priceMax = product?.VariantInfo?.PriceMax?.PriceFormatted != null ? product.VariantInfo.PriceMax.PriceFormatted : ""; 173 } 174 if (priceMin != priceMax) 175 { 176 price = priceMin + " - " + priceMax; 177 } 178 <span class="@theme @contentPadding"> 179 <span class="text-price">@price.Replace(",00", "")</span> 180 </span> 181 } 182 } 183 184 @* Stock state for Schema.org, start *@ 185 @{ 186 Uri url = Dynamicweb.Context.Current.Request.Url; 187 } 188 189 <link itemprop="url" href="@url"> 190 191 @{ 192 bool IsNeverOutOfStock = product.NeverOutOfstock; 193 } 194 195 @if (IsNeverOutOfStock) 196 { 197 <span itemprop="availability" class="d-none">@Translate("Available in stock")</span> 198 } 199 else 200 { 201 if (product.StockLevel > 0) 202 { 203 <span itemprop="availability" class="d-none">InStock</span> 204 } 205 else 206 { 207 <span itemprop="availability" class="d-none">OutOfStock</span> 208 } 209 } 210 @* Stock state for Schema.org, stop *@ 211 212 </div> 213 214 @if (showPricesWithVat == "false" && !neverShowVat) 215 { 216 if (isLazyLoadingForProductInfoEnabled && !Pageview.IsVisualEditorMode) 217 { 218 <small class="opacity-85 fst-normal js-text-price-with-vat d-none" data-suffix="@Translate("Incl. VAT")"></small> 219 } 220 else 221 { 222 string price = !string.IsNullOrEmpty(unitId) ? product.GetPrice(unitId).Price.PriceWithVatFormatted : product.Price.PriceWithVatFormatted; 223 224 if (product?.VariantInfo?.VariantInfo != null) 225 { 226 priceMin = product?.VariantInfo?.PriceMin?.PriceWithVatFormatted != null ? product.VariantInfo.PriceMin.PriceWithVatFormatted : ""; 227 priceMax = product?.VariantInfo?.PriceMax?.PriceWithVatFormatted != null ? product.VariantInfo.PriceMax.PriceWithVatFormatted : ""; 228 } 229 if (priceMin != priceMax) 230 { 231 price = priceMin + " - " + priceMax; 232 } 233 <small class="opacity-85 fst-normal">@price @Translate("Incl. VAT")</small> 234 } 235 } 236 </div> 237 } 238 else if (Pageview.IsVisualEditorMode) 239 { 240 <div class="alert alert-dark m-0" role="alert"> 241 <span>@Translate("No products available")</span> 242 </div> 243 } 244
Hålla kvar III
Hålla kvar III
Astrid Sylwan

Hålla kvar III

Etsning
kr 6 500 Available in stock
Hålla kvar V
Hålla kvar V
Astrid Sylwan

Hålla kvar V

Etsning
kr 6 500 Available in stock
Hålla kvar VI
Hålla kvar VI
Astrid Sylwan

Hålla kvar VI

Etsning
kr 6 500 Available in stock
Daylight hours IX
Daylight hours IX
Astrid Sylwan

Daylight hours IX

Etsning
kr 5 500 Available in stock
Daylight hours II
Daylight hours II
Astrid Sylwan

Daylight hours II

Etsning
kr 5 500 Available in stock
Daylight hours IV
Daylight hours IV
Astrid Sylwan

Daylight hours IV

Etsning
kr 5 500 Available in stock
Daylight hours III
Daylight hours III
Astrid Sylwan

Daylight hours III

Etsning
kr 5 500 Available in stock
Sökljus I
Sökljus I
Astrid Sylwan

Sökljus I

Monotypi
kr 35 000 Available in stock
Så som min egen andning II
Så som min egen andning II
Astrid Sylwan

Så som min egen andning II

Etsning
kr 9 500 Available in stock
Så som min egen andning III
Så som min egen andning III
Astrid Sylwan

Så som min egen andning III

Etsning
kr 9 500 Available in stock
Andetag II
Andetag II
Astrid Sylwan

Andetag II

Etsning
kr 5 500 Available in stock
Sitring
Sitring
Anne Kristine Thorsby

Sitring

Litografi
kr 2 100 Available in stock
Mektig
Mektig
Anne Kristine Thorsby

Mektig

Litografi
kr 2 100 Available in stock
Utsyn
Utsyn
Anne Kristine Thorsby

Utsyn

Litografi
kr 2 100 Available in stock
Opprinnelse
Opprinnelse
Anne Kristine Thorsby

Opprinnelse

Litografi
kr 4 500 Available in stock
Lysåpner
Lysåpner
Anne Kristine Thorsby

Lysåpner

Litografi
kr 4 000 Available in stock
Nattens dronning
Nattens dronning
Anne Kristine Thorsby

Nattens dronning

Litografi
kr 4 200 Available in stock
Kontinentene møtes
Kontinentene møtes
Anne Kristine Thorsby

Kontinentene møtes

Litografi
kr 3 900 Available in stock
Gjennombrudd
Gjennombrudd
Anne Kristine Thorsby

Gjennombrudd

Litografi
kr 3 900 Available in stock
Vidsyn
Vidsyn
Anne Kristine Thorsby

Vidsyn

Litografi
kr 2 600 Available in stock
Tilhørighet
Tilhørighet
Anne Kristin Thorsby

Tilhørighet

kr 1 900 Available in stock
Even now
Even now
Kristina Thun

Even now

Litografi
kr 4 800 Available in stock
Den hamliga trädgården
Den hamliga trädgården
Kristina Thun

Den hamliga trädgården

Litografi
kr 4 800 Available in stock
We are just travellers
We are just travellers
Kristina Thun

We are just travellers

Litografi
kr 4 800 Available in stock
I went into the forest and found a tree
I went into the forest and found a tree
Kristina Thun

I went into the forest and found a tree

Litografi
kr 4 800 Available in stock
Personligt meddelande
Personligt meddelande
Kristina Thun

Personligt meddelande

Litografi
kr 3 000 Available in stock
Black bird
Black bird
Kristina Thun

Black bird

Litografi
kr 3 000 Available in stock
Öppningen
Öppningen
Kristina Thun

Öppningen

Litografi
kr 2 800 Available in stock
Kuliss
Kuliss
Kristina Thun

Kuliss

Litografi
kr 2 600 Available in stock
Sirkel
Sirkel
Kjell Torriset

Sirkel

Litografi
kr 5 800 Available in stock
Landskap I
Landskap I
Bjørn Sigurd Tufta

Landskap I

Litografi
kr 6 500 Available in stock
Many Happy Returns II
Many Happy Returns II
Kristiina Uusitalo

Many Happy Returns II

kr 5 800 Available in stock
Torsk
Torsk
Erling Valtyrson

Torsk

Mezzotint
kr 7 800 Available in stock
Oppstilling med eske
Oppstilling med eske
Erling Valtyrson

Oppstilling med eske

Mezzotint
kr 4 500 Available in stock
Fuglehoder
Fuglehoder
Erling Valtyrson

Fuglehoder

Mezzotint
kr 6 500 Available in stock
Elgskalle 2019
Elgskalle 2019
Erling Valtyrson

Elgskalle 2019

Mezzotint
kr 7 500 Available in stock
U.T 2019
U.T 2019
Erling Valtyrson

U.T 2019

Mezzotint
kr 5 500 Available in stock
Oppstilling med fat
Oppstilling med fat
Erling Valtyrson

Oppstilling med fat

Mezzotint
kr 4 000 Available in stock
Arrangement med hare
Arrangement med hare
Erling Valtyrson

Arrangement med hare

Mezzotint
kr 5 500 Available in stock
Kniv og skje
Kniv og skje
Erling Valtyrson

Kniv og skje

Mezzotint
kr 4 500 Available in stock
Egg på pute
Egg på pute
Erling Valtyrson

Egg på pute

Mezzotint
kr 3 000 Available in stock
Utsikt
Utsikt
Erling Valtyrson

Utsikt

Mezzotint
kr 5 500 Available in stock
Sirkus Collage
Sirkus Collage
Erling Valtyrson

Sirkus Collage

Mezzotint
kr 5 500 Available in stock
Mais
Mais
Erling Valtyrson

Mais

Mezzotint
kr 4 500 Available in stock
Oppstilling
Oppstilling
Erling Valtyrson

Oppstilling

Mezzotint
kr 3 500 Available in stock
Bamse
Bamse
Erling Valtyrson

Bamse

Mezzotint
kr 3 300 Available in stock
Oppstilling med Sitron
Oppstilling med Sitron
Erling Valtyrson

Oppstilling med Sitron

Mezzotint
kr 6 500 Available in stock
Alter
Alter
Erling Valtyrson

Alter

Mezzotint
kr 3 500 Available in stock
Sommerkveld
Sommerkveld
Erling Valtyrson

Sommerkveld

Mezzotint
kr 5 500 Available in stock
Refleksjon
Refleksjon
Erling Valtyrson

Refleksjon

Mezzotint
kr 5 000 Available in stock
Trollpinne
Trollpinne
Erling Valtyrson

Trollpinne

Mezzotint
kr 6 500 Available in stock
Komposisjon i grått
Komposisjon i grått
Erling Valtyrson

Komposisjon i grått

Mezzotint
kr 5 500 Available in stock
Arrangement med klesklype
Arrangement med klesklype
Erling Valtyrson

Arrangement med klesklype

Mezzotint
kr 5 000 Available in stock
Etter forestilling
Etter forestilling
Erling Valtyrson

Etter forestilling

Mezzotint
kr 6 500 Available in stock
Samtale
Samtale
Erling Valtyrson

Samtale

Mezzotint
kr 6 500 Available in stock
Nature Morte
Nature Morte
Erling Valtyrson

Nature Morte

Mezzotint
kr 7 000 Available in stock
Objekt
Objekt
Erling Valtyrson

Objekt

Mezzotint
kr 5 000 Available in stock
Berlin-Gendarmenmarkt
Berlin-Gendarmenmarkt
Jutta Votteler

Berlin-Gendarmenmarkt

kr 4 000 Available in stock
Traumender Platz
Traumender Platz
Jutta Votteler

Traumender Platz

kr 4 400 Available in stock
Päonien
Päonien
Jutta Votteler

Päonien

kr 4 200 Available in stock
C`a D`oro bei sonnenaufgang
C`a D`oro bei sonnenaufgang
Jutta Votteler

C`a D`oro bei sonnenaufgang

kr 2 500 Available in stock
Siesta im garten
Siesta im garten
Jutta Votteler

Siesta im garten

kr 3 500 Available in stock
Mittag am meer
Mittag am meer
Jutta Votteler

Mittag am meer

kr 3 600 Available in stock
Im abendwind
Im abendwind
Jutta Votteler

Im abendwind

kr 4 500 Available in stock
Flykten
Flykten
Jukka Vänttinen

Flykten

Mezzotint
kr 4 500 Available in stock
Trappan
Trappan
Jukka Vänttinen

Trappan

Mezzotint
kr 2 400 Available in stock
Svanen
Svanen
Jukka Vänttinen

Svanen

Mezzotint
kr 2 000 Available in stock
Mona
Mona
Jukka Vänttinen

Mona

Mezzotint
kr 2 000 Available in stock
Nomad
Nomad
Jukka Vänttinen

Nomad

Mezzotint
kr 3 800 Available in stock
Brevet
Brevet
Jukka Vänttinen

Brevet

Mezzotint
kr 3 500 Available in stock
Långväga
Långväga
Jukka Vänttinen

Långväga

Mezzotint
kr 2 300 Available in stock
Utresa
Utresa
Jukka Vänttinen

Utresa

Mezzotint
kr 4 500 Available in stock
Dagfall
Dagfall
Jukka Vänttinen

Dagfall

Mezzotint
kr 5 600 Available in stock
Dagslut
Dagslut
Jukka Vänttinen

Dagslut

Mezzotint
kr 2 400 Available in stock
Denna dag
Denna dag
Jukka Vänttinen

Denna dag

Mezzotint
kr 4 200 Available in stock
Vägen till K
Vägen till K
Jukka Vänttinen

Vägen till K

Mezzotint
kr 2 000 Available in stock
Ån
Ån
Jukka Vänttinen

Ån

Mezzotint
kr 2 600 Available in stock
Bedela
Bedela
Jukka Vänttinen

Bedela

Etsning
kr 2 200 Available in stock
Bortom skogen
Bortom skogen
Catharina Warme-Hellström

Bortom skogen

Fotopolymer , Silketrykk
kr 3 800 Available in stock
Nya grannar
Nya grannar
Catharina Warme-Hellström

Nya grannar

Fotopolymer , Silketrykk
kr 3 800 Available in stock
Följa John
Följa John
Catharina Warme-Hellström

Följa John

Fotopolymer , Silketrykk
kr 3 800 Available in stock
Rönnbärhöst
Rönnbärhöst
Catharina Warme-Hellström

Rönnbärhöst

Fotopolymer , Silketrykk
kr 3 500 Available in stock
Små groderna
Små groderna
Catharina Warme-Hellström

Små groderna

Fotopolymer , Silketrykk
kr 3 500 Available in stock
Islandica 1
Islandica 1
Catharina Warme-Hellström

Islandica 1

Fotogravyr , Silketrykk
kr 3 400 Available in stock
Islandica 2
Islandica 2
Catharina Warme-Hellström

Islandica 2

Fotogravyr , Silketrykk
kr 2 800 Available in stock
Stam och Krona
Stam och Krona
Catharina Warme-Hellström

Stam och Krona

Linoleumsnitt , Fotogravyr
kr 3 400 Available in stock
Grodliv
Grodliv
Catharina Warme-Hellström

Grodliv

Silketrykk
kr 2 800 Available in stock
Sommarminne
Sommarminne
Catharina Warme-Hellström

Sommarminne

Fotogravyr , Silketrykk
kr 2 800 Available in stock
Frostfjäril I
Frostfjäril I
Catharina Warme-Hellström

Frostfjäril I

Silketrykk
kr 2 800 Available in stock
Frostfjäril 2
Frostfjäril 2
Catharina Warme-Hellström

Frostfjäril 2

Silketrykk
kr 2 800 Available in stock
Harens dröm
Harens dröm
Catharina Warme-Hellström

Harens dröm

Silketrykk
kr 3 000 Available in stock
Fjäril. Kom.
Fjäril. Kom.
Catharina Warme-Hellström

Fjäril. Kom.

Silketrykk
kr 3 200 Available in stock
Almunecàr 1
Almunecàr 1
Catharina Warme-Hellström

Almunecàr 1

Fotogravyr , Silketrykk
kr 3 000 Available in stock
Regnet kommer
Regnet kommer
Catharina Warme-Hellström

Regnet kommer

Fotogravyr , Silketrykk
kr 3 000 Available in stock
Kolstrastjazz
Kolstrastjazz
Catharina Warme-Hellström

Kolstrastjazz

Silketrykk
kr 3 200 Available in stock
Tendresse
Tendresse
Mikio Watanabe

Tendresse

Mezzotint
kr 3 300 Available in stock
Et Dukkehjem - kunstmappe
Et Dukkehjem - kunstmappe
Elisabeth Werp

Et Dukkehjem - kunstmappe

Litografi
kr 18 000 Available in stock
Klangbunn 3
Klangbunn 3
Sidsel Westbø

Klangbunn 3

Koldnål , Høytrykk
kr 5 000 Available in stock
Klangbunn 1
Klangbunn 1
Sidsel Westbø

Klangbunn 1

Koldnål , Høytrykk
kr 5 000 Available in stock
Motlys
Motlys
Sidsel Westbø

Motlys

Koldnål , Høytrykk
kr 4 500 Available in stock
I skyggen av trærne 5
I skyggen av trærne 5
Sidsel Westbø

I skyggen av trærne 5

Koldnål , Høytrykk
kr 7 000 Available in stock
I skyggen av trærne 4
I skyggen av trærne 4
Sidsel Westbø

I skyggen av trærne 4

Koldnål , Høytrykk
kr 8 000 Available in stock
Tanker om trær 1
Tanker om trær 1
Sidsel Westbø

Tanker om trær 1

Koldnål , Høytrykk
kr 7 000 Available in stock
Tanker om trær 2
Tanker om trær 2
Sidsel Westbø

Tanker om trær 2

Koldnål , Høytrykk
kr 7 000 Available in stock
Tanker om trær 3
Tanker om trær 3
Sidsel Westbø

Tanker om trær 3

Koldnål , Høytrykk
kr 7 000 Available in stock
Tanker om trær 4
Tanker om trær 4
Sidsel Westbø

Tanker om trær 4

Koldnål , Høytrykk
kr 7 000 Available in stock
Grønt rom
Grønt rom
Sidsel Westbø

Grønt rom

Koldnål , Høytrykk
kr 7 000 Available in stock
Luftslott
Luftslott
Sidsel Westbø

Luftslott

Koldnål
kr 4 000 Available in stock
Mørketid 4
Mørketid 4
Sidsel Westbø

Mørketid 4

Koldnål , Høytrykk
kr 4 000 Available in stock
Mørketid 2
Mørketid 2
Sidsel Westbø

Mørketid 2

Koldnål , Høytrykk
kr 4 000 Available in stock
Nattergal
Nattergal
Sidsel Westbø

Nattergal

Koldnål , Høytrykk
kr 8 000 Available in stock
Skyer over landskap 1
Skyer over landskap 1
Sidsel Westbø

Skyer over landskap 1

Koldnål , Høytrykk
kr 8 000 Available in stock
Skyer over landskap 2
Skyer over landskap 2
Sidsel Westbø

Skyer over landskap 2

Koldnål , Høytrykk
kr 8 000 Available in stock
1680 ut av 1784 produkter
Hent flere produkter
Ved å trykke på "Godta alle" godkjenner du at vi kan samle inn informasjon om deg til forskjellig bruk. F.eks funksjonalitet, statistikk og markedsføring