
<pre class='dw-error'>Error executing template "Designs/Rapido/Json/eCom7/CartV2/Step/Cart.cshtml"
System.FormatException: Input string was not in a correct format.
   at System.Number.ParseDouble(String value, NumberStyles options, NumberFormatInfo numfmt)
   at System.Double.Parse(String s, IFormatProvider provider)
   at CompiledRazorTemplates.Dynamic.RazorEngine_73406e08b35c43f4a7b580421d2efeb3.Execute() in D:\Dynamicweb.net\Solutions\Degree\eplast.cloud.dynamicweb-cms.com\Files\Templates\Designs\Rapido\Json\eCom7\CartV2\Step\Cart.cshtml:line 174
   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.&lt;&gt;c__DisplayClass16_0.&lt;RunCompile&gt;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()
<hr/>
<div class='template-code'>
<span class='line-number'>  1</span>     @inherits Dynamicweb.Rendering.RazorTemplateBase&lt;Dynamicweb.Rendering.RazorTemplateModel&lt;Dynamicweb.Rendering.Template&gt;&gt;
<span class='line-number'>  2</span>     @using System.Text.RegularExpressions
<span class='line-number'>  3</span>     @using System.Linq
<span class='line-number'>  4</span>     @using System.Web
<span class='line-number'>  5</span>     @using Dynamicweb.Core
<span class='line-number'>  6</span>     @using Dynamicweb.Ecommerce.Orders
<span class='line-number'>  7</span>     @using System.Globalization
<span class='line-number'>  8</span>     @inherits Dynamicweb.Rendering.RazorTemplateBase&lt;Dynamicweb.Rendering.RazorTemplateModel&lt;Dynamicweb.Rendering.Template&gt;&gt;
<span class='line-number'>  9</span>     
<span class='line-number'> 10</span>     
<span class='line-number'> 11</span>     @* 
<span class='line-number'> 12</span>        This is a temporary fallback for the DefaultImage. The image pattern MUST be set up like this:
<span class='line-number'> 13</span>        
<span class='line-number'> 14</span>        ImageSmall = /{ProductNumber}.jpg
<span class='line-number'> 15</span>        ImageMedium = /{ProductNumber}{VariantOptionLevel1}.jpg
<span class='line-number'> 16</span>        ImageLarge = /{ProductNumber}{VariantComboName}.jpg
<span class='line-number'> 17</span>     
<span class='line-number'> 18</span>        In addition to the ImageDefault setting
<span class='line-number'> 19</span>     *@
<span class='line-number'> 20</span>     
<span class='line-number'> 21</span>     @functions {
<span class='line-number'> 22</span>         public string GetProductImage(LoopItem productObject = null)
<span class='line-number'> 23</span>         {
<span class='line-number'> 24</span>             string theImage = &quot;&quot;;
<span class='line-number'> 25</span>     
<span class='line-number'> 26</span>             if (productObject == null) {
<span class='line-number'> 27</span>                 theImage = GetString(&quot;Ecom:Product.ImageDefault.Default.Clean&quot;);
<span class='line-number'> 28</span>                 theImage = String.IsNullOrEmpty(theImage) ? GetString(&quot;Ecom:Product.ImageLarge.Clean&quot;) : theImage;
<span class='line-number'> 29</span>                 theImage = String.IsNullOrEmpty(theImage) ? GetString(&quot;Ecom:Product.ImageMedium.Clean&quot;) : theImage;
<span class='line-number'> 30</span>                 theImage = String.IsNullOrEmpty(theImage) ? GetString(&quot;Ecom:Product.ImageSmall.Clean&quot;) : theImage;
<span class='line-number'> 31</span>                 theImage = String.IsNullOrEmpty(theImage) ? GetString(&quot;Ecom:Product.ImageLarge.Default.Clean&quot;) : theImage;
<span class='line-number'> 32</span>             } else {
<span class='line-number'> 33</span>                 theImage = productObject.GetString(&quot;Ecom:Product.ImageDefault.Default.Clean&quot;);
<span class='line-number'> 34</span>                 theImage = String.IsNullOrEmpty(theImage) ? productObject.GetString(&quot;Ecom:Product.ImageLarge.Clean&quot;) : theImage;
<span class='line-number'> 35</span>                 theImage = String.IsNullOrEmpty(theImage) ? productObject.GetString(&quot;Ecom:Product.ImageMedium.Clean&quot;) : theImage;
<span class='line-number'> 36</span>                 theImage = String.IsNullOrEmpty(theImage) ? productObject.GetString(&quot;Ecom:Product.ImageSmall.Clean&quot;) : theImage;
<span class='line-number'> 37</span>                 theImage = String.IsNullOrEmpty(theImage) ? productObject.GetString(&quot;Ecom:Product.ImageLarge.Default.Clean&quot;) : theImage;
<span class='line-number'> 38</span>             }
<span class='line-number'> 39</span>     
<span class='line-number'> 40</span>             return theImage;
<span class='line-number'> 41</span>         }
<span class='line-number'> 42</span>     }
<span class='line-number'> 43</span>     @{
<span class='line-number'> 44</span>         int productCatalog = GetPageIdByNavigationTag(&quot;ProductsPage&quot;);
<span class='line-number'> 45</span>         bool useGoogleTagManager = !string.IsNullOrEmpty(Pageview.AreaSettings.GetItem(&quot;Settings&quot;).GetString(&quot;GoogleTagManagerID&quot;));
<span class='line-number'> 46</span>     }
<span class='line-number'> 47</span>     
<span class='line-number'> 48</span>     @functions {
<span class='line-number'> 49</span>         public class ShippingMethod
<span class='line-number'> 50</span>         {
<span class='line-number'> 51</span>             public string id { get; set; }
<span class='line-number'> 52</span>             public string name { get; set; }
<span class='line-number'> 53</span>             public string selected { get; set; }
<span class='line-number'> 54</span>             public string hasShippingProvider { get; set; }
<span class='line-number'> 55</span>             public object shippingProviderContent { get; set; }
<span class='line-number'> 56</span>         }
<span class='line-number'> 57</span>     
<span class='line-number'> 58</span>         public class BomItem
<span class='line-number'> 59</span>         {
<span class='line-number'> 60</span>             public string id { get; set; }
<span class='line-number'> 61</span>             public string productnumber { get; set; }
<span class='line-number'> 62</span>             public string name { get; set; }
<span class='line-number'> 63</span>             public string variantname { get; set; }
<span class='line-number'> 64</span>             public string unitname { get; set; }
<span class='line-number'> 65</span>             public string image { get; set; }
<span class='line-number'> 66</span>             public string link { get; set; }
<span class='line-number'> 67</span>             public string quantity { get; set; }
<span class='line-number'> 68</span>         }
<span class='line-number'> 69</span>     
<span class='line-number'> 70</span>         public class OrderLine
<span class='line-number'> 71</span>         {
<span class='line-number'> 72</span>             public string template { get; set; }
<span class='line-number'> 73</span>             public string id { get; set; }
<span class='line-number'> 74</span>             public string productnumber { get; set; }
<span class='line-number'> 75</span>             public string name { get; set; }
<span class='line-number'> 76</span>             public string variantname { get; set; }
<span class='line-number'> 77</span>             public string variantId { get; set; }
<span class='line-number'> 78</span>             public string quantity { get; set; }
<span class='line-number'> 79</span>             public string totalprice { get; set; }
<span class='line-number'> 80</span>             public string link { get; set; }
<span class='line-number'> 81</span>             public double pointPrice { get; set; }
<span class='line-number'> 82</span>             public string priceWithDiscount { get; set; }
<span class='line-number'> 83</span>             public double pointsTotal { get; set; }
<span class='line-number'> 84</span>             public bool canBePurchasedWithPoints { get; set; }
<span class='line-number'> 85</span>             public string image { get; set; }
<span class='line-number'> 86</span>             public bool isEmpty { get; set; }
<span class='line-number'> 87</span>             public string orderLineId { get; set; }
<span class='line-number'> 88</span>             public string unitname { get; set; }
<span class='line-number'> 89</span>             public string unitprice { get; set; }
<span class='line-number'> 90</span>             public string hideimage { get; set; }
<span class='line-number'> 91</span>             public string hideBomItems { get; set; }
<span class='line-number'> 92</span>             public string googleImpression { get; set; }
<span class='line-number'> 93</span>             public List&lt;BomItem&gt; BomItems { get; set; }
<span class='line-number'> 94</span>             public List&lt;ShippingMethod&gt; ShippingMethods { get; set; }
<span class='line-number'> 95</span>     		public string htmlSnippet { get; set; }
<span class='line-number'> 96</span>     		public string forceOpenDetails { get; set; }
<span class='line-number'> 97</span>     		public string isCustomProduct { get; set; }
<span class='line-number'> 98</span>     		public string cartNote { get; set; }
<span class='line-number'> 99</span>     		public int stockLevel { get; set; }
<span class='line-number'>100</span>     
<span class='line-number'>101</span>         }
<span class='line-number'>102</span>     
<span class='line-number'>103</span>         public class Root
<span class='line-number'>104</span>         {
<span class='line-number'>105</span>             public int numberofproducts { get; set; }
<span class='line-number'>106</span>             public string subtotalprice { get; set; }
<span class='line-number'>107</span>             public string subtotalpricewithouttaxes { get; set; }
<span class='line-number'>108</span>             public string paymentmethod { get; set; }
<span class='line-number'>109</span>             public string paymentfee { get; set; }
<span class='line-number'>110</span>             public bool hidePaymentfee { get; set; }
<span class='line-number'>111</span>             public string shippingmethod { get; set; }
<span class='line-number'>112</span>             public string shippingfee { get; set; }
<span class='line-number'>113</span>             public bool hideShippingfee { get; set; }
<span class='line-number'>114</span>             public bool hideSubTotal { get; set; }
<span class='line-number'>115</span>             public bool hideComment { get; set; }
<span class='line-number'>116</span>             public bool showCheckoutDisclaimer { get; set; }
<span class='line-number'>117</span>             public string checkoutDisclaimer { get; set; }
<span class='line-number'>118</span>             public string totalprice { get; set; }
<span class='line-number'>119</span>             public double earnings { get; set; }
<span class='line-number'>120</span>             public string totalvat { get; set; }
<span class='line-number'>121</span>             public string totaltaxes { get; set; }
<span class='line-number'>122</span>             public bool hasTaxSettings { get; set; }
<span class='line-number'>123</span>             public bool isEmpty { get; set; }
<span class='line-number'>124</span>             public string vouchercode { get; set; }
<span class='line-number'>125</span>             public string giftcardcode { get; set; }
<span class='line-number'>126</span>             public string comment { get; set; }
<span class='line-number'>127</span>             public double userPoints { get; set; }
<span class='line-number'>128</span>             public double pointsUsedInCart { get; set; }
<span class='line-number'>129</span>             public string termsAccepted { get; set; }
<span class='line-number'>130</span>             public string disabledNextStep { get; set; }
<span class='line-number'>131</span>             public string totalPriceWithVat { get; set; }
<span class='line-number'>132</span>             public string vatValue { get; set; }
<span class='line-number'>133</span>             public string totalPriceWithoutVat { get; set; }
<span class='line-number'>134</span>             public string vatPercent { get; set; }
<span class='line-number'>135</span>             public string cartNoteGlobal { get; set; }
<span class='line-number'>136</span>             public List&lt;OrderLine&gt; OrderLines { get; set; }
<span class='line-number'>137</span>         }
<span class='line-number'>138</span>     
<span class='line-number'>139</span>         public class GoogleImpression
<span class='line-number'>140</span>         {
<span class='line-number'>141</span>             public string name { get; set; }
<span class='line-number'>142</span>             public string id { get; set; }
<span class='line-number'>143</span>             public double price { get; set; }
<span class='line-number'>144</span>             public string brand { get; set; }
<span class='line-number'>145</span>             public string category { get; set; }
<span class='line-number'>146</span>             public string variant { get; set; }
<span class='line-number'>147</span>             public int quantity { get; set; }
<span class='line-number'>148</span>             public string currency { get; set; }
<span class='line-number'>149</span>         }
<span class='line-number'>150</span>     }
<span class='line-number'>151</span>     
<span class='line-number'>152</span>     @{
<span class='line-number'>153</span>         string jsonFeed = &quot;&quot;;
<span class='line-number'>154</span>     
<span class='line-number'>155</span>         List&lt;Root&gt; feedObject = new List&lt;Root&gt;();
<span class='line-number'>156</span>         Root feedRoot = new Root();
<span class='line-number'>157</span>      
<span class='line-number'>158</span>         feedRoot.numberofproducts = GetInteger(&quot;Ecom:Order.OrderLines.TotalProductQuantity&quot;);
<span class='line-number'>159</span>         feedRoot.subtotalprice = GetString(&quot;Ecom:Order.PriceWithoutFees.PriceFormatted&quot;);
<span class='line-number'>160</span>         feedRoot.subtotalpricewithouttaxes = Dynamicweb.Ecommerce.Services.Currencies.Format(Dynamicweb.Ecommerce.Common.Context.Currency, (GetDouble(&quot;Ecom:Order.PriceWithoutFees.PriceWithVAT&quot;) - GetDouble(&quot;Ecom:Order.Taxes.Total.PriceWithVAT&quot;)), true);
<span class='line-number'>161</span>         feedRoot.paymentmethod = !string.IsNullOrEmpty(GetString(&quot;Ecom:Order.PaymentMethod&quot;)) ? GetString(&quot;Ecom:Order.PaymentMethod&quot;) : Translate(&quot;Payment&quot;);
<span class='line-number'>162</span>         feedRoot.paymentfee = GetInteger(&quot;Ecom:Order.PaymentFee.Price&quot;) != 0 ? GetString(&quot;Ecom:Order.PaymentFee.PriceFormatted&quot;) : Translate(&quot;Free&quot;);
<span class='line-number'>163</span>         feedRoot.hidePaymentfee = Pageview.AreaSettings.GetItem(&quot;Ecommerce&quot;).GetItem(&quot;Checkout&quot;).GetBoolean(&quot;HideFreeServices&quot;) &amp;&amp; GetInteger(&quot;Ecom:Order.PaymentFee.Price&quot;) == 0;
<span class='line-number'>164</span>         feedRoot.shippingmethod = !string.IsNullOrEmpty(GetString(&quot;Ecom:Order.ShippingMethod&quot;)) ? GetString(&quot;Ecom:Order.ShippingMethod&quot;) : Translate(&quot;Shipping&quot;);
<span class='line-number'>165</span>         feedRoot.shippingfee = GetDouble(&quot;Ecom:Order.ShippingFee.Price&quot;) != 0 ? GetString(&quot;Ecom:Order.ShippingFee.PriceFormatted&quot;) : Translate(&quot;Free&quot;);
<span class='line-number'>166</span>         feedRoot.hideShippingfee = Pageview.AreaSettings.GetItem(&quot;Ecommerce&quot;).GetItem(&quot;Checkout&quot;).GetBoolean(&quot;HideFreeServices&quot;) &amp;&amp; GetInteger(&quot;Ecom:Order.ShippingFee.Price&quot;) == 0;
<span class='line-number'>167</span>         feedRoot.totalprice = GetString(&quot;Ecom:Order.Price.PriceFormatted&quot;);
<span class='line-number'>168</span>         feedRoot.earnings = GetInteger(&quot;Ecom:Order.RewardTotalPoints&quot;);
<span class='line-number'>169</span>         feedRoot.totalvat = GetString(&quot;Ecom:Order.OrderLines.Total.PriceVAT&quot;);
<span class='line-number'>170</span>         feedRoot.totaltaxes = GetDouble(&quot;Ecom:Order.Taxes.Total.Price&quot;) != 0 ? GetString(&quot;Ecom:Order.Taxes.Total&quot;) : &quot;-&quot;;
<span class='line-number'>171</span>         feedRoot.hasTaxSettings = Dynamicweb.Rapido.Services.Countries.HasTaxSettings(GetString(&quot;Ecom:Order.ID&quot;));
<span class='line-number'>172</span>         feedRoot.vatPercent = GetString(&quot;Ecom:Order.PriceWithoutFees.VATPercentFormatted&quot;);
<span class='line-number'>173</span>         var priceString =  GetString(&quot;Ecom:Order.Price.PriceFormatted&quot;).Split(&#39;k&#39;, &#39;r&#39;)[0];
<span class='line-number'>174</span>         double number = double.Parse(priceString, CultureInfo.GetCultureInfo(&quot;fr-FR&quot;));
<span class='line-number'>175</span>         double percent = 25;
<span class='line-number'>176</span>         double result = number * percent / 100;
<span class='line-number'>177</span>         double resultTotal = result + number;
<span class='line-number'>178</span>         string price25PercentString = &quot;&quot;;
<span class='line-number'>179</span>       
<span class='line-number'>180</span>         feedRoot.vatValue = result.ToString(&quot;F2&quot;);
<span class='line-number'>181</span>         feedRoot.totalPriceWithVat = resultTotal.ToString(&quot;F2&quot;);
<span class='line-number'>182</span>         feedRoot.totalPriceWithoutVat = GetString(&quot;Ecom:Order.OrderLines.Total.PriceWithoutVAT&quot;);
<span class='line-number'>183</span>     
<span class='line-number'>184</span>         feedRoot.isEmpty = GetBoolean(&quot;Ecom:Order.IsEmpty&quot;);
<span class='line-number'>185</span>         feedRoot.vouchercode = GetString(&quot;Ecom:Order.Customer.VoucherCode&quot;);
<span class='line-number'>186</span>         feedRoot.giftcardcode = GetString(&quot;Ecom:Order.GiftCardCode&quot;);
<span class='line-number'>187</span>         feedRoot.hideSubTotal = Pageview.AreaSettings.GetItem(&quot;Ecommerce&quot;).GetItem(&quot;Checkout&quot;).GetBoolean(&quot;HideSubtotal&quot;);
<span class='line-number'>188</span>         feedRoot.hideComment = Pageview.AreaSettings.GetItem(&quot;Ecommerce&quot;).GetItem(&quot;Checkout&quot;).GetBoolean(&quot;HideComment&quot;);
<span class='line-number'>189</span>         feedRoot.comment = GetString(&quot;Ecom:Order.Customer.Comment&quot;);
<span class='line-number'>190</span>         feedRoot.showCheckoutDisclaimer = Dynamicweb.Rapido.Services.Countries.HasTaxSettings(GetString(&quot;Ecom:Order.ID&quot;)) &amp;&amp; Pageview.AreaSettings.GetItem(&quot;Ecommerce&quot;).GetItem(&quot;Checkout&quot;).GetBoolean(&quot;ShowCheckoutDisclaimer&quot;) &amp;&amp; (GetDouble(&quot;Ecom:Order.Taxes.Total.Price&quot;) == 0 || string.IsNullOrEmpty(GetString(&quot;Ecom:Order.ShippingMethodID&quot;)));
<span class='line-number'>191</span>         feedRoot.checkoutDisclaimer = string.Format(&quot;{0}&quot;, GetDouble(&quot;Ecom:Order.Taxes.Total.Price&quot;) == 0 &amp;&amp; string.IsNullOrEmpty(GetString(&quot;Ecom:Order.ShippingMethodID&quot;)) ? Translate(&quot;* Sales Tax and Shipping calculated at Checkout&quot;) : string.IsNullOrEmpty(GetString(&quot;Ecom:Order.ShippingMethodID&quot;)) ? Translate(&quot;* Shipping calculated at Checkout&quot;) : Translate(&quot;* Sales Tax Calculated at Checkout&quot;));
<span class='line-number'>192</span>         feedRoot.termsAccepted = GetBoolean(&quot;Ecom:Order.Customer.Accepted&quot;) ? &quot;checked&quot; : &quot;&quot;;
<span class='line-number'>193</span>         feedRoot.disabledNextStep = GetBoolean(&quot;Ecom:Order.Customer.Accepted&quot;) ? &quot;&quot; : &quot;disabled&quot;;
<span class='line-number'>194</span>         feedRoot.cartNoteGlobal = GetLoop(&quot;OrderLines&quot;)[0].GetString(&quot;Ecom:OrderLine.CustomFields.cartnote&quot;);
<span class='line-number'>195</span>     
<span class='line-number'>196</span>         var user = Dynamicweb.Security.UserManagement.User.GetCurrentUser(Dynamicweb.Security.UserManagement.PagePermissionLevels.Frontend);
<span class='line-number'>197</span>         feedRoot.userPoints = user != null ? Converter.ToInt32(user.PointBalance) : 0;
<span class='line-number'>198</span>     
<span class='line-number'>199</span>         var cart = Dynamicweb.Ecommerce.Common.Context.Cart;
<span class='line-number'>200</span>         feedRoot.pointsUsedInCart = cart != null &amp;&amp; cart.TotalPoints.HasValue ? cart.TotalPoints.Value : 0;
<span class='line-number'>201</span>     
<span class='line-number'>202</span>         feedRoot.OrderLines = new List&lt;OrderLine&gt;();
<span class='line-number'>203</span>         foreach (LoopItem orderline in GetLoop(&quot;OrderLines&quot;).Where(o =&gt; o.GetInteger(&quot;Ecom:Order:OrderLine.Type&quot;) != (int)OrderLineType.Tax).OrderBy(o =&gt; o.GetString(&quot;Ecom:OrderLine.CustomFields.SortingIndex&quot;)).ToList())
<span class='line-number'>204</span>         {
<span class='line-number'>205</span>            
<span class='line-number'>206</span>             OrderLine cartOrderLine = new OrderLine();
<span class='line-number'>207</span>             string productLink = &quot;/&quot; + Regex.Replace(orderline.GetString(&quot;Ecom:Product.LinkGroup.Clean&quot;), @&quot;\?ID=\d*\&amp;&quot;, &quot;?ID=&quot; + productCatalog + &quot;&amp;&quot;);
<span class='line-number'>208</span>             productLink += !string.IsNullOrEmpty(orderline.GetString(&quot;Ecom:Order:OrderLine.ProductVariantID&quot;)) ? &quot;&amp;VariantID=&quot; + orderline.GetString(&quot;Ecom:Order:OrderLine.ProductVariantID&quot;) : &quot;&quot;;
<span class='line-number'>209</span>     
<span class='line-number'>210</span>             cartOrderLine.template = Pageview.Device.ToString() != &quot;Mobile&quot; ? &quot;CartOrderline&quot; : &quot;CartOrderlineMobile&quot;;
<span class='line-number'>211</span>             cartOrderLine.template = orderline.GetBoolean(&quot;Ecom:Order:OrderLine.IsProduct&quot;) ? cartOrderLine.template : &quot;CartOrderlineDiscount&quot;;
<span class='line-number'>212</span>             cartOrderLine.id = orderline.GetString(&quot;Ecom:Product.ID&quot;);
<span class='line-number'>213</span>             cartOrderLine.productnumber = orderline.GetString(&quot;Ecom:Order:OrderLine.ProductNumber&quot;);
<span class='line-number'>214</span>             cartOrderLine.isCustomProduct = orderline.GetString(&quot;Ecom:Order:OrderLine.ProductNumber&quot;)[0].ToString() + orderline.GetString(&quot;Ecom:Order:OrderLine.ProductNumber&quot;)[1].ToString() == &quot;EP&quot; ? &quot;true&quot; : &quot;&quot;;
<span class='line-number'>215</span>             cartOrderLine.name = orderline.GetString(&quot;Ecom:Order:OrderLine.ProductName&quot;);
<span class='line-number'>216</span>             cartOrderLine.variantname = orderline.GetString(&quot;Ecom:Order:OrderLine.ProductVariantText&quot;);
<span class='line-number'>217</span>             cartOrderLine.variantId = orderline.GetString(&quot;Ecom:Order:OrderLine.ProductVariantID&quot;);
<span class='line-number'>218</span>             cartOrderLine.quantity = orderline.GetString(&quot;Ecom:Order:OrderLine.Quantity&quot;);
<span class='line-number'>219</span>             cartOrderLine.totalprice = orderline.GetString(&quot;Ecom:Order:OrderLine.Price&quot;);
<span class='line-number'>220</span>             cartOrderLine.link = productLink;
<span class='line-number'>221</span>             cartOrderLine.image = GetProductImage(orderline) == &quot;/Images/missing_image.jpg&quot; ? &quot;/Files/Images/Alvoen/ecom/products/&quot;+ orderline.GetString(&quot;Ecom:Order:OrderLine.ProductNumber&quot;) +&quot;.png&quot; : GetProductImage(orderline);
<span class='line-number'>222</span>             cartOrderLine.pointsTotal = orderline.GetInteger(&quot;Ecom:Order:OrderLine.Points&quot;);
<span class='line-number'>223</span>             cartOrderLine.pointPrice = orderline.GetInteger(&quot;Ecom:Product.PointPrice&quot;);
<span class='line-number'>224</span>             cartOrderLine.canBePurchasedWithPoints = cartOrderLine.pointsTotal == 0 &amp;&amp; cartOrderLine.pointPrice &gt; 0 &amp;&amp; feedRoot.userPoints - feedRoot.pointsUsedInCart &gt;= cartOrderLine.pointPrice;
<span class='line-number'>225</span>             cartOrderLine.isEmpty = GetBoolean(&quot;Ecom:Order.IsEmpty&quot;);
<span class='line-number'>226</span>             cartOrderLine.orderLineId = orderline.GetString(&quot;Ecom:Order:OrderLine.Id&quot;);
<span class='line-number'>227</span>             cartOrderLine.unitname = orderline.GetString(&quot;Ecom:Order:OrderLine.UnitName&quot;);
<span class='line-number'>228</span>             cartOrderLine.unitprice = orderline.GetString(&quot;Ecom:Order:OrderLine.UnitPrice&quot;);
<span class='line-number'>229</span>             cartOrderLine.hideimage = !orderline.GetBoolean(&quot;Ecom:Order:OrderLine.IsProduct&quot;) ? &quot;u-hidden&quot; : &quot;&quot;;
<span class='line-number'>230</span>             cartOrderLine.hideBomItems = orderline.GetLoop(&quot;BOMItems&quot;).Count &gt; 0 ? &quot;&quot; : &quot;u-hidden&quot;;
<span class='line-number'>231</span>     		cartOrderLine.htmlSnippet = orderline.GetString(&quot;Ecom:OrderLine.CustomFields.HtmlSnippet&quot;) != &quot;&quot; ? orderline.GetString(&quot;Ecom:OrderLine.CustomFields.HtmlSnippet&quot;) : orderline.GetString(&quot;Ecom:OrderLine.CustomFields.htmlsnippet&quot;);
<span class='line-number'>232</span>     		cartOrderLine.cartNote = orderline.GetString(&quot;Ecom:OrderLine.CustomFields.CartNote&quot;) != &quot;&quot; ? orderline.GetString(&quot;Ecom:OrderLine.CustomFields.CartNote&quot;) : orderline.GetString(&quot;Ecom:OrderLine.CustomFields.cartnote&quot;);
<span class='line-number'>233</span>     		cartOrderLine.stockLevel = orderline.GetInteger(&quot;Ecom:Product.Stock&quot;);
<span class='line-number'>234</span>     		cartOrderLine.forceOpenDetails = orderline.GetString(&quot;Ecom:OrderLine.CustomFields.ForceOpenDetails&quot;) == &quot;True&quot; ? orderline.GetString(&quot;Ecom:OrderLine.CustomFields.ForceOpenDetails&quot;) : &quot;&quot; ;
<span class='line-number'>235</span>             
<span class='line-number'>236</span>     
<span class='line-number'>237</span>     
<span class='line-number'>238</span>             if (useGoogleTagManager)
<span class='line-number'>239</span>             {
<span class='line-number'>240</span>                 var groupObject = Dynamicweb.Ecommerce.Services.ProductGroups.GetGroup(orderline.GetString(&quot;Ecom:Product.PrimaryOrFirstGroupID&quot;));
<span class='line-number'>241</span>                 cartOrderLine.googleImpression = Newtonsoft.Json.JsonConvert.SerializeObject(new GoogleImpression()
<span class='line-number'>242</span>                 {
<span class='line-number'>243</span>                     name = cartOrderLine.name,
<span class='line-number'>244</span>                     brand = orderline.GetString(&quot;Ecom:Product:Field.brand.Value&quot;),
<span class='line-number'>245</span>                     category = (groupObject != null ? groupObject.Name : &quot;&quot;),
<span class='line-number'>246</span>                     id = cartOrderLine.id,
<span class='line-number'>247</span>                     quantity = Converter.ToInt32(cartOrderLine.quantity),
<span class='line-number'>248</span>                     price = orderline.GetDouble(&quot;Ecom:Order:OrderLine.UnitPrice.Price&quot;),
<span class='line-number'>249</span>                     variant = cartOrderLine.variantId,
<span class='line-number'>250</span>                     currency = orderline.GetString(&quot;Ecom:Product.Price.Currency.Code&quot;)
<span class='line-number'>251</span>                 });
<span class='line-number'>252</span>             }
<span class='line-number'>253</span>     
<span class='line-number'>254</span>             cartOrderLine.BomItems = new List&lt;BomItem&gt;();
<span class='line-number'>255</span>     
<span class='line-number'>256</span>             foreach (LoopItem bomitem in orderline.GetLoop(&quot;BOMItems&quot;))
<span class='line-number'>257</span>             {
<span class='line-number'>258</span>                 BomItem bomItem = new BomItem();
<span class='line-number'>259</span>                 string bomItemLink = &quot;/&quot; + Regex.Replace(bomitem.GetString(&quot;Ecom:Product.LinkGroup.Clean&quot;), @&quot;\?ID=\d*\&amp;&quot;, &quot;?ID=&quot; + productCatalog + &quot;&amp;&quot;);
<span class='line-number'>260</span>     
<span class='line-number'>261</span>                 bomItem.id = bomitem.GetString(&quot;Ecom:Order:OrderLine.Id&quot;);
<span class='line-number'>262</span>                 bomItem.name = bomitem.GetString(&quot;Ecom:Order:OrderLine.ProductName&quot;);
<span class='line-number'>263</span>                 bomItem.productnumber = bomitem.GetString(&quot;Ecom:Order:OrderLine.ProductNumber&quot;);
<span class='line-number'>264</span>                 bomItem.variantname = bomitem.GetString(&quot;Ecom:Order:OrderLine.ProductVariantText&quot;);
<span class='line-number'>265</span>                 bomItem.unitname = bomitem.GetString(&quot;Ecom:Order:OrderLine.UnitName&quot;);
<span class='line-number'>266</span>                 bomItem.image = GetProductImage(bomitem);
<span class='line-number'>267</span>                 bomItem.link = bomItemLink;
<span class='line-number'>268</span>                 bomItem.quantity = bomitem.GetString(&quot;Ecom:Order:OrderLine.Quantity&quot;);
<span class='line-number'>269</span>                 cartOrderLine.BomItems.Add(bomItem);
<span class='line-number'>270</span>             }
<span class='line-number'>271</span>     
<span class='line-number'>272</span>             cartOrderLine.ShippingMethods = new List&lt;ShippingMethod&gt;();
<span class='line-number'>273</span>     
<span class='line-number'>274</span>             List&lt;LoopItem&gt; shippingMethods = GetLoop(&quot;Shippingmethods&quot;);
<span class='line-number'>275</span>             if (Pageview.AreaSettings.GetItem(&quot;Ecommerce&quot;).GetItem(&quot;Checkout&quot;).GetBoolean(&quot;HideShippingWarningsAndErrors&quot;))
<span class='line-number'>276</span>             {
<span class='line-number'>277</span>                 shippingMethods = shippingMethods.Where(s =&gt; !(string.Concat(s.GetString(&quot;Ecom:Cart.Shippingmethod.Error&quot;), s.GetString(&quot;Ecom:Cart.Shippingmethod.Warning&quot;)).IsNotNullOrEmpty() &amp;&amp; s.GetDouble(&quot;Ecom:Cart.ShippingMethod.Price.Price&quot;).Equals(0))).ToList();
<span class='line-number'>278</span>             }
<span class='line-number'>279</span>             foreach (LoopItem shipping in shippingMethods)
<span class='line-number'>280</span>             {
<span class='line-number'>281</span>                 ShippingMethod shippingMethod = new ShippingMethod();
<span class='line-number'>282</span>                 shippingMethod.id = shipping.GetString(&quot;Ecom:Cart.Shippingmethod.ID&quot;);
<span class='line-number'>283</span>                 shippingMethod.name = shipping.GetString(&quot;Ecom:Cart.Shippingmethod.Name&quot;);
<span class='line-number'>284</span>                 shippingMethod.selected = shipping.GetString(&quot;Ecom:Cart.Shippingmethod.Name&quot;) == GetString(&quot;Ecom:Order.ShippingMethod&quot;) ? &quot;checked&quot; : &quot;&quot;;
<span class='line-number'>285</span>                 if (shipping.GetString(&quot;Ecom:Cart.Shippingmethod.Name&quot;) == GetString(&quot;Ecom:Order.ShippingMethod&quot;))
<span class='line-number'>286</span>                 {
<span class='line-number'>287</span>                     shippingMethod.hasShippingProvider = string.IsNullOrWhiteSpace(shipping.GetString(&quot;Ecom:ShippingProvider.Content&quot;)) ? &quot;u-hidden&quot; : &quot;&quot;;
<span class='line-number'>288</span>                     shippingMethod.shippingProviderContent = Newtonsoft.Json.JsonConvert.DeserializeObject(shipping.GetString(&quot;Ecom:ShippingProvider.Content&quot;));
<span class='line-number'>289</span>                 }
<span class='line-number'>290</span>                 else
<span class='line-number'>291</span>                 {
<span class='line-number'>292</span>                     shippingMethod.shippingProviderContent = null;
<span class='line-number'>293</span>                     shippingMethod.hasShippingProvider = &quot;u-hidden&quot;;
<span class='line-number'>294</span>                 }
<span class='line-number'>295</span>                 cartOrderLine.ShippingMethods.Add(shippingMethod);
<span class='line-number'>296</span>             }
<span class='line-number'>297</span>     
<span class='line-number'>298</span>             feedRoot.OrderLines.Add(cartOrderLine);
<span class='line-number'>299</span>         }
<span class='line-number'>300</span>     
<span class='line-number'>301</span>         feedObject.Add(feedRoot);
<span class='line-number'>302</span>         jsonFeed = Newtonsoft.Json.JsonConvert.SerializeObject(feedObject);
<span class='line-number'>303</span>     
<span class='line-number'>304</span>     }
<span class='line-number'>305</span>     
<span class='line-number'>306</span>     @jsonFeed
</div>
</pre>
