Black Eagle Point Weight Insert Screw-In Brass Ramp/Rene
Black Eagle Point Weight Insert Screw-In Brass Ramp/Rene

Black Eagle Point Weight Insert Screw-In Brass Ramp/Rene

Numéro d’article 115346

Enhance your archery experience with our precision-engineered brass weight inserts, designed for seamless integration and performance enhancement.
€ 2,60 Prix de vente conseillé par pièce
  • Precision Fit
  • Enhanced Balance
  • Durable Brass
    • Provides increased front of centre tuning options
    • To be used with Black Eagle threaded half out inserts
    • Stackable 30, 50 and 75 grain weights
    • For Rampage & Renegade
Error executing template "Designs/JVD_generated/Paragraph/ProductDetailWidgetRecentlyViewedProducts.cshtml"
System.NullReferenceException: Object reference not set to an instance of an object.
   at application._webapi.ExtensionMethods.ProductViewmodelExtensions.DefaultBaseImageFromAssets(String productnumber) in C:\vso\JVD\BluedeskBaseSolution\Dynamicweb\application\_webapi\ExtensionMethods\ProductViewmodelExtensions.cs:line 215
   at application._webapi.ExtensionMethods.ProductViewmodelExtensions.DefaultBaseImageFromAssets(ProductViewModel productViewModel) in C:\vso\JVD\BluedeskBaseSolution\Dynamicweb\application\_webapi\ExtensionMethods\ProductViewmodelExtensions.cs:line 211
   at CompiledRazorTemplates.Dynamic.RazorEngine_f5b524ba9d7946a48e761e1c3aece79a.<>c__DisplayClass0_0.<renderProductBlock>b__0(TextWriter __razor_helper_writer) in D:\dynamicweb.net\Solutions\JVDgroup\Productie\files\Templates\Designs\JVD_generated\Paragraph\ProductDetailWidgetRecentlyViewedProducts.cshtml:line 98
   at CompiledRazorTemplates.Dynamic.RazorEngine_f5b524ba9d7946a48e761e1c3aece79a.Execute() in D:\dynamicweb.net\Solutions\JVDgroup\Productie\files\Templates\Designs\JVD_generated\Paragraph\ProductDetailWidgetRecentlyViewedProducts.cshtml:line 75
   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.IO; 3 @using System.Web; 4 @using Dynamicweb.Caching; 5 @using Dynamicweb.Ecommerce.Prices; 6 @using Dynamicweb.Ecommerce.ProductCatalog; 7 @using Dynamicweb.Ecommerce.Products; 8 @using Dynamicweb.Ecommerce.Specialized.RelatedProductListProviders; 9 @using Dynamicweb.Ecommerce.Extensibility.Provider; 10 @using Bluedesk.DynamicWeb.ItemTypes.BaseSolution; 11 @using Bluedesk.DynamicWeb.ItemTypes.Settings.Configuration; 12 @using application._webapi.ExtensionMethods; 13 14 @{ 15 string paragraphID = Pageview.CurrentParagraph.ID.ToString(); 16 ProductDetailWidgetRecentlyViewedProducts _data = Dynamicweb.Services.Items.GetItem("ProductDetailWidgetRecentlyViewedProducts", Model.ItemId).ToCodeFirstItem<ProductDetailWidgetRecentlyViewedProducts>() ?? new ProductDetailWidgetRecentlyViewedProducts(); 17 18 ProductViewModel product = new ProductViewModel(); 19 if (Dynamicweb.Context.Current.Items.Contains("ProductDetails")) 20 { 21 product = (ProductViewModel)Dynamicweb.Context.Current.Items["ProductDetails"]; 22 } 23 24 ProductViewModelSettings productSetting = new ProductViewModelSettings 25 { 26 LanguageId = Dynamicweb.Ecommerce.Common.Context.LanguageID, 27 CurrencyCode = Dynamicweb.Ecommerce.Common.Context.Currency.Code, 28 CountryCode = Dynamicweb.Ecommerce.Common.Context.Country.Code2, 29 ShopId = Pageview.Area.EcomShopId, 30 UserId = Pageview.User?.ID ?? 0, 31 ShowPricesWithVat = Pageview.Area.EcomPricesWithVat == "True" 32 }; 33 34 var seenProductsFromSession = Dynamicweb.Context.Current.Session["YouHaveSeenTheseProductsList"]; 35 List<string> recentlyViewedProductIds = null; 36 List<ProductViewModel> recentProducts = new List<ProductViewModel>(); 37 38 if(seenProductsFromSession != null && !string.IsNullOrWhiteSpace(seenProductsFromSession.ToString())) 39 { 40 string productId = string.IsNullOrWhiteSpace(product.VariantId) ? product.Id : $"{product.Id};{product.VariantId}"; 41 recentlyViewedProductIds = ((string[])seenProductsFromSession).Where(id => id != productId).Take(4).ToList(); 42 foreach (string id in recentlyViewedProductIds) 43 { 44 string prodId = id; 45 string variantId = ""; 46 if(id.Contains(";")) 47 { 48 prodId = id.Split(';')[0]; 49 variantId = id.Split(';')[1]; 50 } 51 52 ProductViewModel prod = ViewModelFactory.CreateView(productSetting, prodId, variantId); 53 if(prod != null) 54 { 55 recentProducts.Add(prod); 56 } 57 } 58 } 59 var index = 1; 60 string ClassIgniteCarousel = recentProducts.Count() > 4 ? "products-module__container--carousel" : ""; 61 var groupTitle = Translate("Productdetail.RecentlyViewedArticles", "Recently viewed articles"); 62 } 63 64 @if(recentProducts.Any()) 65 { 66 <section id="@paragraphID" class="pdp-paragraph pdp-related-products-widget @_data.CssClass"> 67 <section class="products-module__container @ClassIgniteCarousel"> 68 <div class="container"> 69 <header class="products-module__header"> 70 <h2 class="products-module__title">@groupTitle</h2> 71 </header> 72 <ul class="products-module__slider"> 73 @foreach (ProductViewModel prod in recentProducts) 74 { 75 @renderProductBlock(prod, groupTitle, "recently_viewed_articles", index); 76 index++; 77 } 78 </ul> 79 </div> 80 </section> 81 @renderProductListEnhancedEcom(groupTitle, "recently_viewed_articles", recentProducts) 82 </section> 83 } 84 85 @helper renderProductBlock(Dynamicweb.Ecommerce.ProductCatalog.ProductViewModel product, string listId, string listName, int index) 86 { 87 var master_configuration = Dynamicweb.Services.Pages.GetPageByNavigationTag(Pageview.AreaID, "MasterConfiguration"); 88 MasterConfig mc = master_configuration.Item.ToCodeFirstItem<MasterConfig>(); 89 EcomConfig EcommerceConfiguration = mc.EcomConfiguration; 90 91 bool isVariant = product.VariantId != ""; 92 int variantCount = product.AmountOfVariants(); 93 bool hasVariants = !isVariant ? variantCount > 0 : false; 94 95 string productName = product.Name; 96 string productId = product.Id; 97 98 string productImage = product.DefaultBaseImageFromAssets(); 99 100 bool WithVATBool = Pageview.Area.EcomPricesWithVat == "True"; 101 bool pricesWithoutVatForUsers = EcommerceConfiguration.ShowPricesWithoutVatForUsers; 102 bool pricesWithoutVatForValidVat = EcommerceConfiguration.ShowPricesWithoutVatWhenValidVatNumber; 103 bool isShopMode = Pageview.User != null && Convert.ToBoolean(Dynamicweb.Context.Current.Session["ShopMode"]) ? true : false; 104 105 if (isShopMode) 106 { 107 pricesWithoutVatForUsers = false; 108 pricesWithoutVatForValidVat = false; 109 } 110 if(pricesWithoutVatForUsers && !pricesWithoutVatForValidVat && Pageview.User != null) { 111 WithVATBool = false; 112 } 113 if(pricesWithoutVatForValidVat && Pageview.User != null && !string.IsNullOrWhiteSpace(Pageview.User.VatRegNumber)) { 114 WithVATBool = false; 115 } 116 117 int productDetailPageId = GetPageIdByNavigationTag("ProductOverview"); 118 string currentPageUrl = "/Default.aspx?ID=" + Pageview.Page.ID; 119 120 string productNumber = product.Number; 121 string productVariantId = !string.IsNullOrWhiteSpace(product.VariantId) ? product.VariantId : ""; 122 string productURL = $"Default.aspx?ID={productDetailPageId}&GroupID={product.PrimaryOrDefaultGroup.Id}&ProductID={product.Id}"; 123 productURL += !string.IsNullOrWhiteSpace(product.VariantId) ? "&VariantID=" + product.VariantId : ""; 124 string productManufacturer = product.Manufacturer?.Name ?? ""; 125 126 bool isPriceZero = product.Price.Price <= 0; 127 bool hasDiscount = product.Discount.Price > 0; 128 string OriginalPrice = WithVATBool ? product.PriceBeforeDiscount.PriceWithVatFormatted : product.PriceBeforeDiscount.PriceWithoutVatFormatted; 129 string Price = WithVATBool ? product.Price.PriceWithVatFormatted : product.Price.PriceWithoutVatFormatted; 130 string yourDiscount = WithVATBool ? product.Discount.PriceWithVatFormatted : product.Discount.PriceWithoutVatFormatted; 131 double gtmDiscount = WithVATBool ? product.Discount.PriceWithVat : product.Discount.PriceWithoutVat; 132 double gtmPrice = WithVATBool ? product.PriceBeforeDiscount.PriceWithVat : product.PriceBeforeDiscount.PriceWithoutVat; 133 double gtmValue = WithVATBool ? product.Price.PriceWithVat : product.Price.PriceWithoutVat; 134 string ProductdetailPriceSuffixWithVAT = Translate("Productdetail.Price.Suffix.WithVAT", "Incl. VAT"); 135 string ProductdetailPriceSuffixWithoutVAT = Translate("Productdetail.Price.Suffix.WithoutVAT", "Excl. VAT"); 136 string ProductdetailPriceSuffix = WithVATBool ? ProductdetailPriceSuffixWithVAT : ProductdetailPriceSuffixWithoutVAT; 137 138 if (isShopMode) 139 { 140 ProductdetailPriceSuffix = Translate("Productdetail.Price.Suffix.ShopMode", ""); ; 141 } 142 143 string gtmBrand = product.Manufacturer?.Name?.Replace("''", "\\\"").Replace("'", ""); 144 string gtmCategory = product.PrimaryOrDefaultGroup?.Name?.Replace("''", "\\\"").Replace("'", ""); 145 string gtmProductName = product.Name?.Replace("''", "\\\"").Replace("'", ""); 146 147 bool hideStockForGuests = EcommerceConfiguration.HideStockForGuests; 148 string stockFormat = EcommerceConfiguration.StockFormat; 149 bool enableProductStock = hideStockForGuests ? Pageview.User != null : true; 150 string stockText = product.StockStatus; 151 double stockSize = (double)product.StockLevel; 152 bool neverOutOfStock = product.NeverOutOfstock; 153 bool isInStock = stockSize > 0 || neverOutOfStock; 154 string stockClass = isInStock ? "products-module__product-stock-state--instock" : "products-module__product-stock-state--outofstock"; 155 string stockSizeFormatted = stockSize.ToString(stockSize % 1 == 0 ? "N0" : "N2", System.Globalization.CultureInfo.GetCultureInfo(Pageview.Area.CultureInfo.TwoLetterISOLanguageName)); 156 157 bool hideShoppingCartForGuests = EcommerceConfiguration.HideShoppingCartForGuests; 158 bool hidePricesForGuests = EcommerceConfiguration.HidePricesForGuests; 159 bool hideZeroPrices = EcommerceConfiguration.HideZeroPrices; 160 bool enableAddToCartForZeroPrices = EcommerceConfiguration.AddToCartAllowZeroPrices; 161 bool enableAddToCartForOutOfStock = EcommerceConfiguration.AddToCartAllowOutOfStock; 162 163 bool displayPrice = hidePricesForGuests ? Pageview.User != null : true; 164 bool enableShoppingCart = hideShoppingCartForGuests && Pageview.User == null ? false : Pageview.Area.Item["ConfigModuleShoppingCart"] != null ? (bool)Pageview.Area.Item["ConfigModuleShoppingCart"] : false; 165 166 bool enableProductShoppingCart = enableShoppingCart; 167 if(!enableAddToCartForZeroPrices && isPriceZero) { 168 enableProductShoppingCart = false; 169 } 170 171 if(!enableAddToCartForOutOfStock && !isInStock) { 172 enableProductShoppingCart = false; 173 } 174 175 if(product.Discontinued) { 176 enableProductShoppingCart = false; 177 } 178 179 bool displayProductPrice = displayPrice; 180 if(hideZeroPrices && isPriceZero) { 181 displayProductPrice = false; 182 } 183 184 string informativePrice = WithVATBool ? product.PriceInformative.PriceWithVatFormatted : product.PriceInformative.PriceWithoutVatFormatted; 185 if (EcommerceConfiguration.UseInformativePriceAsFromPrice && !string.IsNullOrWhiteSpace(informativePrice)) 186 { 187 double informativePriceValue = WithVATBool ? product.PriceInformative.PriceWithVat : product.PriceInformative.PriceWithoutVat; 188 hasDiscount = gtmValue < informativePriceValue; 189 if (hasDiscount) 190 { 191 OriginalPrice = informativePrice; 192 double yourProfitValue = informativePriceValue - gtmValue; 193 yourDiscount = WithVATBool ? new PriceInfo { PriceWithVAT = yourProfitValue }.PriceWithVATFormatted : new PriceInfo { PriceWithoutVAT = yourProfitValue }.PriceWithoutVATFormatted; 194 } 195 } 196 197 string retailPrice = ""; 198 bool displayRetailPrice = EcommerceConfiguration.DisplayRetailPrice; 199 if(EcommerceConfiguration.DisplayRetailPriceForUsers && Pageview.User == null) { 200 displayRetailPrice = false; 201 } 202 if(displayRetailPrice) { 203 string priceFieldName = EcommerceConfiguration.RetailPriceField; 204 if(EcommerceConfiguration.RetailPriceIsDbPrice) { 205 var prodService = new Dynamicweb.Ecommerce.Products.ProductService(); 206 var p = Dynamicweb.Ecommerce.Services.Products.GetProductById(product.Id, product.VariantId, Pageview.Area.EcomLanguageId); 207 PriceContext customerPriceContext = new PriceContext(Dynamicweb.Ecommerce.Common.Context.Currency, Dynamicweb.Ecommerce.Common.Context.Country, null, null, Dynamicweb.Ecommerce.Common.Context.ReverseChargeForVatEnabled, DateTime.Now); 208 var customerPrice = p?.GetPrice(customerPriceContext); 209 if(customerPrice.Price > 0) { 210 retailPrice = WithVATBool ? customerPrice.PriceWithVATFormatted : customerPrice.PriceWithoutVATFormatted; 211 } 212 } else if(!string.IsNullOrWhiteSpace(priceFieldName)) { 213 double customerPriceValue = 0.0; 214 if (product.ProductFields.TryGetValue(priceFieldName, out var fieldValue) && fieldValue.Value is double) { 215 customerPriceValue = (double)fieldValue.Value; 216 } 217 if(customerPriceValue > 0) { 218 retailPrice = WithVATBool ? new PriceInfo { PriceWithVAT = customerPriceValue }.PriceWithVATFormatted : new PriceInfo { PriceWithoutVAT = customerPriceValue }.PriceWithoutVATFormatted; 219 } 220 } 221 } 222 223 string yourProfitLabel = Translate("Productdetail.YourProfitLabel", "Uw voordeel:"); 224 225 List<FieldOptionValueViewModel> productRibbons = null; 226 if (product.ProductFields["ProductRibbon"] != null) 227 { 228 productRibbons = (List<FieldOptionValueViewModel>)product.ProductFields["ProductRibbon"].Value; 229 } 230 231 <li class="products-module__slider-cell"> 232 <div class="products-module products-module__slider-cell__innerwrapper"> 233 234 @foreach(var rib in productRibbons) { 235 <p class="products-module__ribbon"> 236 <span class="products-module__ribbon-text">@rib.Value</span> 237 </p> 238 } 239 240 <figure class="products-module__image-container"> 241 @if(!string.IsNullOrWhiteSpace(productImage)) 242 { 243 <img src="@productImage" alt="@productName" loading="lazy" height="200" width="300" /> 244 } 245 </figure> 246 247 <h3 class="products-module__product-name"> 248 @if(!string.IsNullOrWhiteSpace(productManufacturer)) 249 { 250 <span class="products-module__product-name--manufacturer">@productManufacturer</span> 251 } 252 <span class="products-module__product-name--product">@productName</span> 253 </h3> 254 255 @if(!string.IsNullOrWhiteSpace(productNumber)) 256 { 257 <p class="products-module__product-article-number">@productNumber</p> 258 } 259 260 @if (displayPrice && displayProductPrice) 261 { 262 <div class="products-module__product-price-container"> 263 @if(hasVariants) 264 { 265 var pricerange = product.VariantPriceRange(); 266 string minPrice = WithVATBool ? pricerange.min.PriceWithVATFormatted : pricerange.min.PriceWithoutVATFormatted; 267 string maxPrice = WithVATBool ? pricerange.max.PriceWithVATFormatted : pricerange.max.PriceWithoutVATFormatted; 268 269 if(minPrice != maxPrice) 270 { 271 <span class="products-module__product-price 1">@minPrice - @maxPrice</span> 272 } 273 else 274 { 275 <span class="products-module__product-price 2">@minPrice</span> 276 } 277 <span class="products-module__product-price-suffix">@ProductdetailPriceSuffix</span> 278 } 279 else 280 { 281 if (hasDiscount) 282 { 283 <span class="products-module__product-price-original">@OriginalPrice</span> 284 <span class="products-module__product-price">@Price</span> 285 } 286 else 287 { 288 <span class="products-module__product-price">@OriginalPrice</span> 289 } 290 <span class="products-module__product-price-suffix">@ProductdetailPriceSuffix</span> 291 if (!string.IsNullOrWhiteSpace(retailPrice)) 292 { 293 <p class="products-module__product-retail-price"> 294 @String.Format(Translate("ProductBlockTitle.RetailPrice", "Retail price: {0}"), retailPrice) 295 </p> 296 } 297 if (hasDiscount) 298 { 299 <p class="products-module__product-your-discount">@Translate("Productdetail.YourProfitLabel", "Uw voordeel:") @yourDiscount</p> 300 } 301 } 302 </div> 303 } 304 305 <section class="products-module__product-actions"> 306 @if(hasVariants) 307 { 308 <p class="pdp-stockstate"> 309 @Translate("ProductBlockStockInfo.CheckAvailability", "Check Availability") 310 </p> 311 } 312 else 313 { 314 if(enableProductStock) 315 { 316 int jvdStockLimit = 0; 317 if (product.ProductCategories.TryGetValue("Category_Structure", out var categoryStructure) && categoryStructure.Fields.TryGetValue("Stock_limit", out var stockLimitField) && stockLimitField != null) { 318 jvdStockLimit = (int)stockLimitField.Value; 319 } 320 321 DateTime jvdStockUpdateDate = DateTime.MinValue; // Default value in case "ProductStockUpdateDate" is not found or is null 322 if (product.ProductFields.TryGetValue("ProductStockUpdateDate", out var stockUpdateDateValue) && stockUpdateDateValue != null) { 323 if (stockUpdateDateValue.Value is DateTime stockUpdateDateTime) { 324 jvdStockUpdateDate = stockUpdateDateTime; 325 } 326 } 327 328 string jvdStockType = ""; 329 if (product.ProductFields.TryGetValue("ProductStockType", out var stockTypeValue) && stockTypeValue != null) { 330 List<FieldOptionValueViewModel> fieldList = (List<FieldOptionValueViewModel>)stockTypeValue.Value; 331 jvdStockType = fieldList.FirstOrDefault() != null ? fieldList.FirstOrDefault().Value.ToString() : ""; 332 } 333 334 string jvdStockStateClass = ""; 335 string jvdStockText = ""; 336 string jvdStockDescription = ""; 337 338 if(stockSize > jvdStockLimit) 339 { 340 jvdStockStateClass = "pdp-stockstate--instock"; 341 jvdStockText = Translate("ProductBlockStockInfo.AmountInStock", "In stock"); 342 } 343 else if (stockSize > 0) 344 { 345 jvdStockStateClass = "pdp-stockstate--lowstock"; 346 jvdStockText = string.Format(Translate("ProductBlockStockInfo.AmountLowStock", "Low stock"), stockSizeFormatted); 347 } 348 else 349 { 350 if (jvdStockUpdateDate != null && jvdStockUpdateDate > DateTime.Now) 351 { 352 string jvdStockUpdateDateString = jvdStockUpdateDate.ToString("dd-MM-yyyy"); 353 jvdStockStateClass = "pdp-stockstate--expectedstock"; 354 jvdStockText = string.Format(Translate("ProductBlockStockInfo.NextAvailableStock", "Next date available {0}"), jvdStockUpdateDateString); 355 } 356 else 357 { 358 jvdStockStateClass = "pdp-stockstate--outofstock"; 359 jvdStockText = Translate("ProductBlockStockInfo.AmountOutOfStock", "Out of stock"); 360 jvdStockDescription = Translate("ProductBlockStockInfo.OutOfStockDescription", "Available for backorder"); 361 } 362 } 363 364 if(jvdStockType == "Non-Stock" && stockSize <= 0) 365 { 366 jvdStockStateClass = "pdp-stockstate--special"; 367 jvdStockText = Translate("ProductBlockStockInfo.SpecialOrder", "Special order"); 368 jvdStockDescription = ""; 369 } 370 371 <p class="pdp-stockstate @jvdStockStateClass"> 372 @jvdStockText 373 @if(!string.IsNullOrWhiteSpace(jvdStockDescription)) 374 { 375 <i data-tippy-content="@jvdStockDescription" class="fas fa-info-circle"></i> 376 } 377 </p> 378 } 379 } 380 381 @if(!hasVariants && enableShoppingCart && enableProductShoppingCart) 382 { 383 <add-to-cart 384 class="app-addtocart" 385 data-prodid="@productId" 386 data-variantid="@productVariantId" 387 data-show-text="False" 388 data-min-quantity="@product.PurchaseMinimumQuantity" 389 data-step="@product.PurchaseQuantityStep" 390 data-list-id="@listId" 391 data-list-name="@listName"> 392 </add-to-cart> 393 } 394 else 395 { 396 <a href="@productURL" class="btn btn__primary products-module__more-infobtn"> 397 @if(hasVariants) 398 { 399 <span class="btn__text">@string.Format(Translate("ProductOverview.SeeAllVariants", "View variants"), variantCount)</span> 400 } 401 else 402 { 403 <span class="btn__text">@Translate("ProductOverview.MoreInformation", "More Information")</span> 404 } 405 <i class="btn__icon fal fa-arrow-right"></i> 406 </a> 407 } 408 </section> 409 410 <a href="@productURL" class="products-module__link" data-id="@productId" data-variantid="@productVariantId" data-number="@productNumber" data-name="@gtmProductName" data-position="@index" data-brand='@gtmBrand' data-category="@gtmCategory" data-listid="@listId" data-listname="@listName" data-gtmprice="@gtmPrice" data-gtmdiscount="@gtmDiscount" data-gtmvalue="@gtmValue" data-currencycode="@Dynamicweb.Ecommerce.Common.Context.Currency.Code" aria-label="@productName"></a> 411 </div> 412 </li> 413 } 414 415 @helper renderProductListEnhancedEcom(string listId, string listName, IEnumerable<ProductViewModel> products) { 416 var index = 1; 417 <text> 418 <script> 419 if(window.dataLayer) { 420 dataLayer.push({ 421 'event': 'view_item_list', 422 'ecommerce': { 423 'item_list_id': '@listId', 424 'item_list_name': '@listName', 425 'items': [ 426 @foreach (var product in products) { 427 string pName = product.Name.Replace("''", "\\\"").Replace("'", ""); 428 string pGroupName = product.PrimaryOrDefaultGroup?.Name?.Replace("''", "\\\"").Replace("'", ""); 429 string pBrand = product.Manufacturer?.Name?.Replace("''", "\\\"").Replace("'", ""); 430 <text> 431 { 432 'item_id': '@product.Id', 433 'item_name': '@pName', 434 'item_number': '@product.Number', 435 'discount': @product.Discount.Price, 436 'index': @index, 437 'item_brand': '@pBrand', 438 'item_category': '@pGroupName', 439 'item_list_id': '@listId', 440 'item_list_name': '@listName', 441 'item_variant': '@product.VariantId', 442 'price': @product.Price.Price, 443 'quantity': 1, 444 }, 445 </text> 446 index++; 447 } 448 ] 449 } 450 }); 451 } 452 </script> 453 </text> 454 } 455
Haut de Page