<pre class='dw-error'>Error compiling template "Designs/Swift/eCom7/CartV2/Step/Custom_GetPWPDiscounttems.cshtml"
Line 15: The type or namespace name 'TAF' could not be found (are you missing a using directive or an assembly reference?)
Line 42: The type or namespace name 'PWPDiscountHandler' could not be found (are you missing a using directive or an assembly reference?)
Line 42: The type or namespace name 'PWPDiscountHandler' could not be found (are you missing a using directive or an assembly reference?)
Line 57: 'ProductService.ProductService()' is obsolete: 'This is no longer suitable for manual construction. Please either use constructor injection or Dynamicweb.Ecommerce.Products.'
<hr/>
<div class='source-code'>
<span class='line-number'>  1</span>     // &lt;auto-generated/&gt;
<span class='line-number'>  2</span>     #pragma warning disable 1591
<span class='line-number'>  3</span>     namespace CompiledRazorTemplates.Dynamic
<span class='line-number'>  4</span>     {
<span class='line-number'>  5</span>         #line hidden
<span class='line-number'>  6</span>         using System.Threading.Tasks;
<span class='line-number'>  7</span>         using System;
<span class='line-number'>  8</span>         using System.Collections.Generic;
<span class='line-number'>  9</span>         using System.Linq;
<span class='line-number'> 10</span>         using Dynamicweb.Environment;
<span class='line-number'> 11</span>         using System.Globalization;
<span class='line-number'> 12</span>         using Dynamicweb.Ecommerce.Orders.Vouchers;
<span class='line-number'> 13</span>         using Dynamicweb.Ecommerce.Orders.Discounts;
<span class='line-number'> 14</span>         using Dynamicweb.Ecommerce.Orders;
<span class='line-number'> 15</span>         using TAF.Dynamicweb.Ecommerce.DynamicwebLiveIntegration;
<span class='line-number'> 16</span>         using Dynamicweb.Ecommerce.ProductCatalog;
<span class='line-number'> 17</span>         internal class RazorEngine_7e75623db8724bf6bc9ebc5e8ebc2e0c : Dynamicweb.Rendering.RazorTemplateBase&lt;Dynamicweb.Rendering.RazorTemplateModel&lt;Dynamicweb.Rendering.Template&gt;&gt;
<span class='line-number'> 18</span>         {
<span class='line-number'> 19</span>             #pragma warning disable 1998
<span class='line-number'> 20</span>             public async override global::System.Threading.Tasks.Task ExecuteAsync()
<span class='line-number'> 21</span>             {
<span class='line-number'> 22</span>                 WriteLiteral(&quot;\r\n&quot;);
<span class='line-number'> 23</span>                 WriteLiteral(&quot;\r\n&quot;);
<span class='line-number'> 24</span>                   
<span class='line-number'> 25</span>     	string orderId = GetString(&quot;Ecom:Order.ID&quot;);
<span class='line-number'> 26</span>     	string customerNum = GetString(&quot;UserManagement:User.CustomerNumber&quot;);
<span class='line-number'> 27</span>     	PWPDiscountItems pWPDiscounts = new PWPDiscountItems();
<span class='line-number'> 28</span>     	pWPDiscounts.CartDiscounts = new List&lt;CartDiscountItems&gt;();
<span class='line-number'> 29</span>     	pWPDiscounts.SubTotals = new List&lt;SubtotalItems&gt;();
<span class='line-number'> 30</span>     	pWPDiscounts.Discounts = new List&lt;PWPDiscountItem&gt;();
<span class='line-number'> 31</span>     
<span class='line-number'> 32</span>     	ProductViewModelSettings productSetting = new ProductViewModelSettings
<span class='line-number'> 33</span>     			{
<span class='line-number'> 34</span>     				LanguageId = Dynamicweb.Ecommerce.Common.Context.LanguageID,
<span class='line-number'> 35</span>     				CurrencyCode = Dynamicweb.Ecommerce.Common.Context.Currency.Code,
<span class='line-number'> 36</span>     				CountryCode = Dynamicweb.Ecommerce.Common.Context.Country.Code2,
<span class='line-number'> 37</span>     				ShopId = Pageview.Area.EcomShopId
<span class='line-number'> 38</span>     			};
<span class='line-number'> 39</span>     
<span class='line-number'> 40</span>     	if (!string.IsNullOrEmpty(orderId))
<span class='line-number'> 41</span>     	{
<span class='line-number'> 42</span>     		PWPDiscountHandler pWPDiscountHandler = new PWPDiscountHandler();
<span class='line-number'> 43</span>     		var pWPDiscountItems =pWPDiscountHandler.GetPWPDiscountItems(orderId, customerNum);
<span class='line-number'> 44</span>     
<span class='line-number'> 45</span>     		var ols = GetLoop(&quot;OrderLines&quot;);
<span class='line-number'> 46</span>     
<span class='line-number'> 47</span>     		if (pWPDiscountItems != null)
<span class='line-number'> 48</span>     		{
<span class='line-number'> 49</span>     			if (pWPDiscountItems.Discounts.Count &gt; 0)
<span class='line-number'> 50</span>     			{
<span class='line-number'> 51</span>     				pWPDiscounts.haveDiscountItem = true;
<span class='line-number'> 52</span>     			}
<span class='line-number'> 53</span>     			foreach (var dis in pWPDiscountItems.Discounts)
<span class='line-number'> 54</span>     			{
<span class='line-number'> 55</span>     				PWPDiscountItem pWPDiscount = new PWPDiscountItem();
<span class='line-number'> 56</span>     				string number = dis.ItemNumber;
<span class='line-number'> 57</span>     				Dynamicweb.Ecommerce.Products.ProductService productService = new Dynamicweb.Ecommerce.Products.ProductService();
<span class='line-number'> 58</span>     				Dynamicweb.Ecommerce.Products.Product product = productService.GetProductByNumber(number, Dynamicweb.Ecommerce.Common.Context.LanguageID);
<span class='line-number'> 59</span>     
<span class='line-number'> 60</span>     				if (product != null)
<span class='line-number'> 61</span>     				{
<span class='line-number'> 62</span>     					ProductViewModel dwproduct = ViewModelFactory.CreateView(productSetting, product.Id, product.VariantId);
<span class='line-number'> 63</span>     					if (dwproduct != null)
<span class='line-number'> 64</span>     					{
<span class='line-number'> 65</span>     						if (dwproduct.Active)
<span class='line-number'> 66</span>     						{
<span class='line-number'> 67</span>     						pWPDiscount.ItemNumber = dis.ItemNumber;
<span class='line-number'> 68</span>     						pWPDiscount.Quantity = dis.Quantity;
<span class='line-number'> 69</span>     						pWPDiscount.MaxStock = dis.Quantity;
<span class='line-number'> 70</span>     						pWPDiscount.UnitPrice = dis.UnitPriceWithVAT;
<span class='line-number'> 71</span>     						pWPDiscount.UnitPriceVAT = dis.UnitPriceVATPercent;
<span class='line-number'> 72</span>     						pWPDiscount.ItemImage = dwproduct.DefaultImage.Value;
<span class='line-number'> 73</span>     						pWPDiscount.ItemName = dwproduct.Name;
<span class='line-number'> 74</span>     						pWPDiscount.ItemProductId = dwproduct.Id;
<span class='line-number'> 75</span>     						pWPDiscount.ItemVariantId = dwproduct.VariantId;
<span class='line-number'> 76</span>     						var artistname = &quot;&quot;;
<span class='line-number'> 77</span>     						FieldValueViewModel availableArtistObject;
<span class='line-number'> 78</span>     						dwproduct.ProductFields.TryGetValue(&quot;Artist_Name&quot;, out availableArtistObject);
<span class='line-number'> 79</span>     						var fieldval = availableArtistObject.Value;
<span class='line-number'> 80</span>     						if (fieldval != null)
<span class='line-number'> 81</span>     						{
<span class='line-number'> 82</span>     							if (fieldval.GetType() == typeof(System.Collections.Generic.List&lt;FieldOptionValueViewModel&gt;))
<span class='line-number'> 83</span>     							{
<span class='line-number'> 84</span>     								var fieldoptions = fieldval as System.Collections.Generic.List&lt;FieldOptionValueViewModel&gt;;
<span class='line-number'> 85</span>     								foreach (FieldOptionValueViewModel option in fieldoptions)
<span class='line-number'> 86</span>     								{
<span class='line-number'> 87</span>     									artistname = option.Name.ToString();
<span class='line-number'> 88</span>     								}
<span class='line-number'> 89</span>     							}
<span class='line-number'> 90</span>     							else
<span class='line-number'> 91</span>     							{
<span class='line-number'> 92</span>     								artistname = fieldval.ToString();
<span class='line-number'> 93</span>     							}
<span class='line-number'> 94</span>     						}
<span class='line-number'> 95</span>     						pWPDiscount.ArtistName = artistname;
<span class='line-number'> 96</span>     						for (int i = ols.Count - 1; i &gt;= 0; i--)
<span class='line-number'> 97</span>     						{
<span class='line-number'> 98</span>     							var ol = ols[i];
<span class='line-number'> 99</span>     							string pronumber = ol.GetString(&quot;Ecom:Order:OrderLine.ProductNumber&quot;);
<span class='line-number'>100</span>     							string isPWP = &quot;&quot;;
<span class='line-number'>101</span>     							foreach (LoopItem cf in ol.GetLoop(&quot;Order.OrderLineFields&quot;))
<span class='line-number'>102</span>     							{
<span class='line-number'>103</span>     								var value = cf.GetString(&quot;Ecom:Order:OrderLine.OrderLineField.Value&quot;);
<span class='line-number'>104</span>     								var label = cf.GetString(&quot;Ecom:Order:OrderLine.OrderLineField.Name&quot;);
<span class='line-number'>105</span>     								if (label == &quot;IsPWP&quot;)
<span class='line-number'>106</span>     								{
<span class='line-number'>107</span>     									isPWP = value;
<span class='line-number'>108</span>     								}
<span class='line-number'>109</span>     							}
<span class='line-number'>110</span>     							if (pronumber == dis.ItemNumber &amp;&amp; isPWP == &quot;True&quot;)
<span class='line-number'>111</span>     							{
<span class='line-number'>112</span>     								pWPDiscount.TotalPrice = ol.GetString(&quot;Ecom:Order:OrderLine.Price.PriceFormatted&quot;);
<span class='line-number'>113</span>     								pWPDiscount.Quantity = ol.GetString(&quot;Ecom:Order:OrderLine.Quantity&quot;);
<span class='line-number'>114</span>     								pWPDiscount.OrderLineId = ol.GetString(&quot;Ecom:Order:OrderLine.Id&quot;);
<span class='line-number'>115</span>     								break;
<span class='line-number'>116</span>     							}
<span class='line-number'>117</span>     							else
<span class='line-number'>118</span>     							{
<span class='line-number'>119</span>     								pWPDiscount.Quantity = &quot;0&quot;;
<span class='line-number'>120</span>     								pWPDiscount.OrderLineId = &quot;&quot;;
<span class='line-number'>121</span>     							}
<span class='line-number'>122</span>     						}
<span class='line-number'>123</span>     						pWPDiscounts.Discounts.Add(pWPDiscount);
<span class='line-number'>124</span>     					}
<span class='line-number'>125</span>     				}
<span class='line-number'>126</span>     				}
<span class='line-number'>127</span>     
<span class='line-number'>128</span>     
<span class='line-number'>129</span>     			}
<span class='line-number'>130</span>     
<span class='line-number'>131</span>     			for (int i = ols.Count - 1; i &gt;= 0; i--)
<span class='line-number'>132</span>     			{
<span class='line-number'>133</span>     				var ol = ols[i];
<span class='line-number'>134</span>     				var qty = ol.GetDouble(&quot;Ecom:Order:OrderLine.Quantity&quot;);
<span class='line-number'>135</span>     				var proName = ol.GetString(&quot;Ecom:Order:OrderLine.ProductName&quot;);
<span class='line-number'>136</span>     				var proartistname = ol.GetString(&quot;Ecom:Product:Field.Artist_Name&quot;);
<span class='line-number'>137</span>     				var olPrice = ol.GetString(&quot;Ecom:Order:OrderLine.Price.PriceFormatted&quot;);
<span class='line-number'>138</span>     				bool isPIdOrNumber = !string.IsNullOrEmpty(ol.GetString(&quot;Ecom:Order:OrderLine.ProductID&quot;)) || !string.IsNullOrEmpty(ol.GetString(&quot;Ecom:Order:OrderLine.ProductNumber&quot;));
<span class='line-number'>139</span>     				bool isProduct = ol.GetBoolean(&quot;Ecom:Order:OrderLine.IsProduct&quot;) || (ol.GetBoolean(&quot;Ecom:Order:OrderLine.IsDiscount&quot;) &amp;&amp; isPIdOrNumber);
<span class='line-number'>140</span>     				if (isProduct)
<span class='line-number'>141</span>     				{
<span class='line-number'>142</span>     					string cartItemName = qty + &quot; x &quot; + proName;
<span class='line-number'>143</span>     					if (!string.IsNullOrEmpty(proartistname))
<span class='line-number'>144</span>     					{
<span class='line-number'>145</span>     						cartItemName = cartItemName + &quot; By &quot; + proartistname;
<span class='line-number'>146</span>     					}
<span class='line-number'>147</span>     
<span class='line-number'>148</span>     					SubtotalItems subtotalItems = new SubtotalItems();
<span class='line-number'>149</span>     					subtotalItems.ItemName = cartItemName;
<span class='line-number'>150</span>     					subtotalItems.ItemPrice = olPrice;
<span class='line-number'>151</span>     
<span class='line-number'>152</span>     					string pronumber = ol.GetString(&quot;Ecom:Order:OrderLine.ProductNumber&quot;);
<span class='line-number'>153</span>     					foreach (var dis in pWPDiscountItems.Discounts)
<span class='line-number'>154</span>     					{
<span class='line-number'>155</span>     						if (dis.ItemNumber == pronumber)
<span class='line-number'>156</span>     						{
<span class='line-number'>157</span>     							subtotalItems.ItemCss = &quot;cus-cart__popbold&quot;;
<span class='line-number'>158</span>     						}
<span class='line-number'>159</span>     					}
<span class='line-number'>160</span>     
<span class='line-number'>161</span>     					pWPDiscounts.SubTotals.Add(subtotalItems);
<span class='line-number'>162</span>     				}
<span class='line-number'>163</span>     			}
<span class='line-number'>164</span>     
<span class='line-number'>165</span>     			if (GetInteger(&quot;Ecom:Order.TotalDiscount.Price.Value&quot;) != 0)
<span class='line-number'>166</span>     			{
<span class='line-number'>167</span>     				                 foreach (LoopItem discount in GetLoop(&quot;OrderLines&quot;).Where(o =&gt; o.GetInteger(&quot;Ecom:Order:OrderLine.Type&quot;) == (int)OrderLineType.Discount))
<span class='line-number'>168</span>     				{
<span class='line-number'>169</span>     					var discountId = discount.GetString(&quot;Ecom:Order:OrderLine.DiscountID&quot;);
<span class='line-number'>170</span>     					int discountIdInt = !string.IsNullOrEmpty(discountId) ? Convert.ToInt32(discountId) : 0;
<span class='line-number'>171</span>     
<span class='line-number'>172</span>     					if (discountId == &quot;&quot;)
<span class='line-number'>173</span>     					{
<span class='line-number'>174</span>     						CartDiscountItems cartDiscountItems = new CartDiscountItems();
<span class='line-number'>175</span>     						cartDiscountItems.ItemName = Translate(&quot;GiftCard&quot;);
<span class='line-number'>176</span>     						cartDiscountItems.ItemPrice = discount.GetString(&quot;Ecom:Order:OrderLine.TotalPriceWithProductDiscounts.PriceFormatted&quot;).Replace(&quot;-&quot;, &quot;&quot;);
<span class='line-number'>177</span>     						pWPDiscounts.CartDiscounts.Add(cartDiscountItems);
<span class='line-number'>178</span>     					}
<span class='line-number'>179</span>     					else
<span class='line-number'>180</span>     					{
<span class='line-number'>181</span>     						var discountName = discount.GetString(&quot;Ecom:Order:OrderLine.ProductName&quot;);
<span class='line-number'>182</span>     						Dynamicweb.Ecommerce.Orders.Discounts.DiscountService discountService = new Dynamicweb.Ecommerce.Orders.Discounts.DiscountService();
<span class='line-number'>183</span>     						Dynamicweb.Ecommerce.Orders.Discounts.Discount discountobj = discountService.GetDiscount(discountIdInt);
<span class='line-number'>184</span>     						if (discountobj.Name == discountName)
<span class='line-number'>185</span>     						{
<span class='line-number'>186</span>     							if (discountobj.VoucherListId &gt; 0 || discountobj.OrderFieldName == &quot;OrderVoucherCode&quot;)
<span class='line-number'>187</span>     							{
<span class='line-number'>188</span>     								CartDiscountItems cartDiscountItems = new CartDiscountItems();
<span class='line-number'>189</span>     								cartDiscountItems.ItemName = Translate(&quot;Promo Code&quot;);
<span class='line-number'>190</span>     								cartDiscountItems.ItemPrice = discount.GetString(&quot;Ecom:Order:OrderLine.TotalPriceWithProductDiscounts.PriceFormatted&quot;).Replace(&quot;-&quot;, &quot;&quot;);
<span class='line-number'>191</span>     								pWPDiscounts.CartDiscounts.Add(cartDiscountItems);
<span class='line-number'>192</span>     							}
<span class='line-number'>193</span>     							else
<span class='line-number'>194</span>     							{
<span class='line-number'>195</span>     								CartDiscountItems cartDiscountItems = new CartDiscountItems();
<span class='line-number'>196</span>     								cartDiscountItems.ItemName = discountName;
<span class='line-number'>197</span>     								cartDiscountItems.ItemPrice = @discount.GetString(&quot;Ecom:Order:OrderLine.TotalPriceWithProductDiscounts.PriceFormatted&quot;).Replace(&quot;-&quot;, &quot;&quot;);
<span class='line-number'>198</span>     								pWPDiscounts.CartDiscounts.Add(cartDiscountItems);
<span class='line-number'>199</span>     							}
<span class='line-number'>200</span>     						}
<span class='line-number'>201</span>     					}
<span class='line-number'>202</span>     				}                 
<span class='line-number'>203</span>     				if (pWPDiscounts.CartDiscounts.Count &gt; 0)
<span class='line-number'>204</span>     				{
<span class='line-number'>205</span>     					pWPDiscounts.haveCartDiscounts = true;
<span class='line-number'>206</span>     				}
<span class='line-number'>207</span>     			}
<span class='line-number'>208</span>     
<span class='line-number'>209</span>     			pWPDiscounts.TotalPriceWithVAT = GetString(&quot;Ecom:Order.Price.PriceWithVATFormatted&quot;);
<span class='line-number'>210</span>     			pWPDiscounts.Shipping = GetString(&quot;Ecom:Order.ShippingFee.PriceFormatted&quot;);
<span class='line-number'>211</span>     			pWPDiscounts.GST = GetString(&quot;Ecom:Order.Price.VATFormatted&quot;);
<span class='line-number'>212</span>     		}
<span class='line-number'>213</span>     	}
<span class='line-number'>214</span>     
<span class='line-number'>215</span>     	var ret = Newtonsoft.Json.JsonConvert.SerializeObject(pWPDiscounts);
<span class='line-number'>216</span>                 Write(ret);
<span class='line-number'>217</span>                 WriteLiteral(&quot;\r\n&quot;);
<span class='line-number'>218</span>             }
<span class='line-number'>219</span>             #pragma warning restore 1998
<span class='line-number'>220</span>                         
<span class='line-number'>221</span>     	public class PWPDiscountItems
<span class='line-number'>222</span>     	{
<span class='line-number'>223</span>     		public bool haveDiscountItem { get; set; }
<span class='line-number'>224</span>     		public List&lt;PWPDiscountItem&gt; Discounts { get; set; }
<span class='line-number'>225</span>     		public List&lt;SubtotalItems&gt; SubTotals { get; set; }
<span class='line-number'>226</span>     		public bool haveCartDiscounts { get; set; }
<span class='line-number'>227</span>     		public List&lt;CartDiscountItems&gt; CartDiscounts { get; set; }
<span class='line-number'>228</span>     		public string TotalPriceWithVAT { get; set; }
<span class='line-number'>229</span>     		public string Shipping { get; set; }
<span class='line-number'>230</span>     		public string GST { get; set; }
<span class='line-number'>231</span>     	}
<span class='line-number'>232</span>     	public class PWPDiscountItem
<span class='line-number'>233</span>     	{
<span class='line-number'>234</span>     		public string ItemNumber { get; set; }
<span class='line-number'>235</span>     		public string ItemProductId { get; set; }
<span class='line-number'>236</span>     		public string ItemVariantId { get; set; }
<span class='line-number'>237</span>     		public string ItemName { get; set; }
<span class='line-number'>238</span>     		public string ItemImage { get; set; }
<span class='line-number'>239</span>     		public string ArtistName { get; set; }
<span class='line-number'>240</span>     		public string Quantity { get; set; }
<span class='line-number'>241</span>     		public string MaxStock { get; set; }
<span class='line-number'>242</span>     		public string OrderLineId { get; set; }
<span class='line-number'>243</span>     		public string UnitPrice { get; set; }
<span class='line-number'>244</span>     		public string UnitPriceVAT { get; set; }
<span class='line-number'>245</span>     		public string TotalPrice { get; set; }
<span class='line-number'>246</span>     	}
<span class='line-number'>247</span>     	public class SubtotalItems
<span class='line-number'>248</span>     	{
<span class='line-number'>249</span>     		public string ItemName { get; set; }
<span class='line-number'>250</span>     		public string ItemPrice { get; set; }
<span class='line-number'>251</span>     		public string ItemCss { get; set; }
<span class='line-number'>252</span>     	}
<span class='line-number'>253</span>     	public class CartDiscountItems
<span class='line-number'>254</span>     	{
<span class='line-number'>255</span>     		public string ItemName { get; set; }
<span class='line-number'>256</span>     		public string ItemPrice { get; set; }
<span class='line-number'>257</span>     	}
<span class='line-number'>258</span>         }
<span class='line-number'>259</span>     }
<span class='line-number'>260</span>     #pragma warning restore 1591
<span class='line-number'>261</span>     
</div>
<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 Dynamicweb.Environment
<span class='line-number'>  3</span>     @using System.Globalization;
<span class='line-number'>  4</span>     @using Dynamicweb.Ecommerce.Orders.Vouchers;
<span class='line-number'>  5</span>     @using Dynamicweb.Ecommerce.Orders.Discounts;
<span class='line-number'>  6</span>     @using Dynamicweb.Ecommerce.Orders;
<span class='line-number'>  7</span>     @using TAF.Dynamicweb.Ecommerce.DynamicwebLiveIntegration;
<span class='line-number'>  8</span>     @using Dynamicweb.Ecommerce.ProductCatalog
<span class='line-number'>  9</span>     
<span class='line-number'> 10</span>     @functions {
<span class='line-number'> 11</span>     	public class PWPDiscountItems
<span class='line-number'> 12</span>     	{
<span class='line-number'> 13</span>     		public bool haveDiscountItem { get; set; }
<span class='line-number'> 14</span>     		public List&lt;PWPDiscountItem&gt; Discounts { get; set; }
<span class='line-number'> 15</span>     		public List&lt;SubtotalItems&gt; SubTotals { get; set; }
<span class='line-number'> 16</span>     		public bool haveCartDiscounts { get; set; }
<span class='line-number'> 17</span>     		public List&lt;CartDiscountItems&gt; CartDiscounts { get; set; }
<span class='line-number'> 18</span>     		public string TotalPriceWithVAT { get; set; }
<span class='line-number'> 19</span>     		public string Shipping { get; set; }
<span class='line-number'> 20</span>     		public string GST { get; set; }
<span class='line-number'> 21</span>     	}
<span class='line-number'> 22</span>     	public class PWPDiscountItem
<span class='line-number'> 23</span>     	{
<span class='line-number'> 24</span>     		public string ItemNumber { get; set; }
<span class='line-number'> 25</span>     		public string ItemProductId { get; set; }
<span class='line-number'> 26</span>     		public string ItemVariantId { get; set; }
<span class='line-number'> 27</span>     		public string ItemName { get; set; }
<span class='line-number'> 28</span>     		public string ItemImage { get; set; }
<span class='line-number'> 29</span>     		public string ArtistName { get; set; }
<span class='line-number'> 30</span>     		public string Quantity { get; set; }
<span class='line-number'> 31</span>     		public string MaxStock { get; set; }
<span class='line-number'> 32</span>     		public string OrderLineId { get; set; }
<span class='line-number'> 33</span>     		public string UnitPrice { get; set; }
<span class='line-number'> 34</span>     		public string UnitPriceVAT { get; set; }
<span class='line-number'> 35</span>     		public string TotalPrice { get; set; }
<span class='line-number'> 36</span>     	}
<span class='line-number'> 37</span>     	public class SubtotalItems
<span class='line-number'> 38</span>     	{
<span class='line-number'> 39</span>     		public string ItemName { get; set; }
<span class='line-number'> 40</span>     		public string ItemPrice { get; set; }
<span class='line-number'> 41</span>     		public string ItemCss { get; set; }
<span class='line-number'> 42</span>     	}
<span class='line-number'> 43</span>     	public class CartDiscountItems
<span class='line-number'> 44</span>     	{
<span class='line-number'> 45</span>     		public string ItemName { get; set; }
<span class='line-number'> 46</span>     		public string ItemPrice { get; set; }
<span class='line-number'> 47</span>     	}
<span class='line-number'> 48</span>     }
<span class='line-number'> 49</span>     
<span class='line-number'> 50</span>     @{
<span class='line-number'> 51</span>     	string orderId = GetString(&quot;Ecom:Order.ID&quot;);
<span class='line-number'> 52</span>     	string customerNum = GetString(&quot;UserManagement:User.CustomerNumber&quot;);
<span class='line-number'> 53</span>     	PWPDiscountItems pWPDiscounts = new PWPDiscountItems();
<span class='line-number'> 54</span>     	pWPDiscounts.CartDiscounts = new List&lt;CartDiscountItems&gt;();
<span class='line-number'> 55</span>     	pWPDiscounts.SubTotals = new List&lt;SubtotalItems&gt;();
<span class='line-number'> 56</span>     	pWPDiscounts.Discounts = new List&lt;PWPDiscountItem&gt;();
<span class='line-number'> 57</span>     
<span class='line-number'> 58</span>     	ProductViewModelSettings productSetting = new ProductViewModelSettings
<span class='line-number'> 59</span>     			{
<span class='line-number'> 60</span>     				LanguageId = Dynamicweb.Ecommerce.Common.Context.LanguageID,
<span class='line-number'> 61</span>     				CurrencyCode = Dynamicweb.Ecommerce.Common.Context.Currency.Code,
<span class='line-number'> 62</span>     				CountryCode = Dynamicweb.Ecommerce.Common.Context.Country.Code2,
<span class='line-number'> 63</span>     				ShopId = Pageview.Area.EcomShopId
<span class='line-number'> 64</span>     			};
<span class='line-number'> 65</span>     
<span class='line-number'> 66</span>     	if (!string.IsNullOrEmpty(orderId))
<span class='line-number'> 67</span>     	{
<span class='line-number'> 68</span>     		PWPDiscountHandler pWPDiscountHandler = new PWPDiscountHandler();
<span class='line-number'> 69</span>     		var pWPDiscountItems =pWPDiscountHandler.GetPWPDiscountItems(orderId, customerNum);
<span class='line-number'> 70</span>     
<span class='line-number'> 71</span>     		var ols = GetLoop(&quot;OrderLines&quot;);
<span class='line-number'> 72</span>     
<span class='line-number'> 73</span>     		if (pWPDiscountItems != null)
<span class='line-number'> 74</span>     		{
<span class='line-number'> 75</span>     			if (pWPDiscountItems.Discounts.Count &gt; 0)
<span class='line-number'> 76</span>     			{
<span class='line-number'> 77</span>     				pWPDiscounts.haveDiscountItem = true;
<span class='line-number'> 78</span>     			}
<span class='line-number'> 79</span>     			foreach (var dis in pWPDiscountItems.Discounts)
<span class='line-number'> 80</span>     			{
<span class='line-number'> 81</span>     				PWPDiscountItem pWPDiscount = new PWPDiscountItem();
<span class='line-number'> 82</span>     				string number = dis.ItemNumber;
<span class='line-number'> 83</span>     				Dynamicweb.Ecommerce.Products.ProductService productService = new Dynamicweb.Ecommerce.Products.ProductService();
<span class='line-number'> 84</span>     				Dynamicweb.Ecommerce.Products.Product product = productService.GetProductByNumber(number, Dynamicweb.Ecommerce.Common.Context.LanguageID);
<span class='line-number'> 85</span>     
<span class='line-number'> 86</span>     				if (product != null)
<span class='line-number'> 87</span>     				{
<span class='line-number'> 88</span>     					ProductViewModel dwproduct = ViewModelFactory.CreateView(productSetting, product.Id, product.VariantId);
<span class='line-number'> 89</span>     					if (dwproduct != null)
<span class='line-number'> 90</span>     					{
<span class='line-number'> 91</span>     						if (dwproduct.Active)
<span class='line-number'> 92</span>     						{
<span class='line-number'> 93</span>     						pWPDiscount.ItemNumber = dis.ItemNumber;
<span class='line-number'> 94</span>     						pWPDiscount.Quantity = dis.Quantity;
<span class='line-number'> 95</span>     						pWPDiscount.MaxStock = dis.Quantity;
<span class='line-number'> 96</span>     						pWPDiscount.UnitPrice = dis.UnitPriceWithVAT;
<span class='line-number'> 97</span>     						pWPDiscount.UnitPriceVAT = dis.UnitPriceVATPercent;
<span class='line-number'> 98</span>     						pWPDiscount.ItemImage = dwproduct.DefaultImage.Value;
<span class='line-number'> 99</span>     						pWPDiscount.ItemName = dwproduct.Name;
<span class='line-number'>100</span>     						pWPDiscount.ItemProductId = dwproduct.Id;
<span class='line-number'>101</span>     						pWPDiscount.ItemVariantId = dwproduct.VariantId;
<span class='line-number'>102</span>     						var artistname = &quot;&quot;;
<span class='line-number'>103</span>     						FieldValueViewModel availableArtistObject;
<span class='line-number'>104</span>     						dwproduct.ProductFields.TryGetValue(&quot;Artist_Name&quot;, out availableArtistObject);
<span class='line-number'>105</span>     						var fieldval = availableArtistObject.Value;
<span class='line-number'>106</span>     						if (fieldval != null)
<span class='line-number'>107</span>     						{
<span class='line-number'>108</span>     							if (fieldval.GetType() == typeof(System.Collections.Generic.List&lt;FieldOptionValueViewModel&gt;))
<span class='line-number'>109</span>     							{
<span class='line-number'>110</span>     								var fieldoptions = fieldval as System.Collections.Generic.List&lt;FieldOptionValueViewModel&gt;;
<span class='line-number'>111</span>     								foreach (FieldOptionValueViewModel option in fieldoptions)
<span class='line-number'>112</span>     								{
<span class='line-number'>113</span>     									artistname = option.Name.ToString();
<span class='line-number'>114</span>     								}
<span class='line-number'>115</span>     							}
<span class='line-number'>116</span>     							else
<span class='line-number'>117</span>     							{
<span class='line-number'>118</span>     								artistname = fieldval.ToString();
<span class='line-number'>119</span>     							}
<span class='line-number'>120</span>     						}
<span class='line-number'>121</span>     						pWPDiscount.ArtistName = artistname;
<span class='line-number'>122</span>     						for (int i = ols.Count - 1; i &gt;= 0; i--)
<span class='line-number'>123</span>     						{
<span class='line-number'>124</span>     							var ol = ols[i];
<span class='line-number'>125</span>     							string pronumber = ol.GetString(&quot;Ecom:Order:OrderLine.ProductNumber&quot;);
<span class='line-number'>126</span>     							string isPWP = &quot;&quot;;
<span class='line-number'>127</span>     							foreach (LoopItem cf in ol.GetLoop(&quot;Order.OrderLineFields&quot;))
<span class='line-number'>128</span>     							{
<span class='line-number'>129</span>     								var value = cf.GetString(&quot;Ecom:Order:OrderLine.OrderLineField.Value&quot;);
<span class='line-number'>130</span>     								var label = cf.GetString(&quot;Ecom:Order:OrderLine.OrderLineField.Name&quot;);
<span class='line-number'>131</span>     								if (label == &quot;IsPWP&quot;)
<span class='line-number'>132</span>     								{
<span class='line-number'>133</span>     									isPWP = value;
<span class='line-number'>134</span>     								}
<span class='line-number'>135</span>     							}
<span class='line-number'>136</span>     							if (pronumber == dis.ItemNumber &amp;&amp; isPWP == &quot;True&quot;)
<span class='line-number'>137</span>     							{
<span class='line-number'>138</span>     								pWPDiscount.TotalPrice = ol.GetString(&quot;Ecom:Order:OrderLine.Price.PriceFormatted&quot;);
<span class='line-number'>139</span>     								pWPDiscount.Quantity = ol.GetString(&quot;Ecom:Order:OrderLine.Quantity&quot;);
<span class='line-number'>140</span>     								pWPDiscount.OrderLineId = ol.GetString(&quot;Ecom:Order:OrderLine.Id&quot;);
<span class='line-number'>141</span>     								break;
<span class='line-number'>142</span>     							}
<span class='line-number'>143</span>     							else
<span class='line-number'>144</span>     							{
<span class='line-number'>145</span>     								pWPDiscount.Quantity = &quot;0&quot;;
<span class='line-number'>146</span>     								pWPDiscount.OrderLineId = &quot;&quot;;
<span class='line-number'>147</span>     							}
<span class='line-number'>148</span>     						}
<span class='line-number'>149</span>     						pWPDiscounts.Discounts.Add(pWPDiscount);
<span class='line-number'>150</span>     					}
<span class='line-number'>151</span>     				}
<span class='line-number'>152</span>     				}
<span class='line-number'>153</span>     
<span class='line-number'>154</span>     
<span class='line-number'>155</span>     			}
<span class='line-number'>156</span>     
<span class='line-number'>157</span>     			for (int i = ols.Count - 1; i &gt;= 0; i--)
<span class='line-number'>158</span>     			{
<span class='line-number'>159</span>     				var ol = ols[i];
<span class='line-number'>160</span>     				var qty = ol.GetDouble(&quot;Ecom:Order:OrderLine.Quantity&quot;);
<span class='line-number'>161</span>     				var proName = ol.GetString(&quot;Ecom:Order:OrderLine.ProductName&quot;);
<span class='line-number'>162</span>     				var proartistname = ol.GetString(&quot;Ecom:Product:Field.Artist_Name&quot;);
<span class='line-number'>163</span>     				var olPrice = ol.GetString(&quot;Ecom:Order:OrderLine.Price.PriceFormatted&quot;);
<span class='line-number'>164</span>     				bool isPIdOrNumber = !string.IsNullOrEmpty(ol.GetString(&quot;Ecom:Order:OrderLine.ProductID&quot;)) || !string.IsNullOrEmpty(ol.GetString(&quot;Ecom:Order:OrderLine.ProductNumber&quot;));
<span class='line-number'>165</span>     				bool isProduct = ol.GetBoolean(&quot;Ecom:Order:OrderLine.IsProduct&quot;) || (ol.GetBoolean(&quot;Ecom:Order:OrderLine.IsDiscount&quot;) &amp;&amp; isPIdOrNumber);
<span class='line-number'>166</span>     				if (isProduct)
<span class='line-number'>167</span>     				{
<span class='line-number'>168</span>     					string cartItemName = qty + &quot; x &quot; + proName;
<span class='line-number'>169</span>     					if (!string.IsNullOrEmpty(proartistname))
<span class='line-number'>170</span>     					{
<span class='line-number'>171</span>     						cartItemName = cartItemName + &quot; By &quot; + proartistname;
<span class='line-number'>172</span>     					}
<span class='line-number'>173</span>     
<span class='line-number'>174</span>     					SubtotalItems subtotalItems = new SubtotalItems();
<span class='line-number'>175</span>     					subtotalItems.ItemName = cartItemName;
<span class='line-number'>176</span>     					subtotalItems.ItemPrice = olPrice;
<span class='line-number'>177</span>     
<span class='line-number'>178</span>     					string pronumber = ol.GetString(&quot;Ecom:Order:OrderLine.ProductNumber&quot;);
<span class='line-number'>179</span>     					foreach (var dis in pWPDiscountItems.Discounts)
<span class='line-number'>180</span>     					{
<span class='line-number'>181</span>     						if (dis.ItemNumber == pronumber)
<span class='line-number'>182</span>     						{
<span class='line-number'>183</span>     							subtotalItems.ItemCss = &quot;cus-cart__popbold&quot;;
<span class='line-number'>184</span>     						}
<span class='line-number'>185</span>     					}
<span class='line-number'>186</span>     
<span class='line-number'>187</span>     					pWPDiscounts.SubTotals.Add(subtotalItems);
<span class='line-number'>188</span>     				}
<span class='line-number'>189</span>     			}
<span class='line-number'>190</span>     
<span class='line-number'>191</span>     			if (GetInteger(&quot;Ecom:Order.TotalDiscount.Price.Value&quot;) != 0)
<span class='line-number'>192</span>     			{
<span class='line-number'>193</span>     				@foreach (LoopItem discount in GetLoop(&quot;OrderLines&quot;).Where(o =&gt; o.GetInteger(&quot;Ecom:Order:OrderLine.Type&quot;) == (int)OrderLineType.Discount))
<span class='line-number'>194</span>     				{
<span class='line-number'>195</span>     					var discountId = discount.GetString(&quot;Ecom:Order:OrderLine.DiscountID&quot;);
<span class='line-number'>196</span>     					int discountIdInt = !string.IsNullOrEmpty(discountId) ? Convert.ToInt32(discountId) : 0;
<span class='line-number'>197</span>     
<span class='line-number'>198</span>     					if (discountId == &quot;&quot;)
<span class='line-number'>199</span>     					{
<span class='line-number'>200</span>     						CartDiscountItems cartDiscountItems = new CartDiscountItems();
<span class='line-number'>201</span>     						cartDiscountItems.ItemName = Translate(&quot;GiftCard&quot;);
<span class='line-number'>202</span>     						cartDiscountItems.ItemPrice = discount.GetString(&quot;Ecom:Order:OrderLine.TotalPriceWithProductDiscounts.PriceFormatted&quot;).Replace(&quot;-&quot;, &quot;&quot;);
<span class='line-number'>203</span>     						pWPDiscounts.CartDiscounts.Add(cartDiscountItems);
<span class='line-number'>204</span>     					}
<span class='line-number'>205</span>     					else
<span class='line-number'>206</span>     					{
<span class='line-number'>207</span>     						var discountName = discount.GetString(&quot;Ecom:Order:OrderLine.ProductName&quot;);
<span class='line-number'>208</span>     						Dynamicweb.Ecommerce.Orders.Discounts.DiscountService discountService = new Dynamicweb.Ecommerce.Orders.Discounts.DiscountService();
<span class='line-number'>209</span>     						Dynamicweb.Ecommerce.Orders.Discounts.Discount discountobj = discountService.GetDiscount(discountIdInt);
<span class='line-number'>210</span>     						if (discountobj.Name == discountName)
<span class='line-number'>211</span>     						{
<span class='line-number'>212</span>     							if (discountobj.VoucherListId &gt; 0 || discountobj.OrderFieldName == &quot;OrderVoucherCode&quot;)
<span class='line-number'>213</span>     							{
<span class='line-number'>214</span>     								CartDiscountItems cartDiscountItems = new CartDiscountItems();
<span class='line-number'>215</span>     								cartDiscountItems.ItemName = Translate(&quot;Promo Code&quot;);
<span class='line-number'>216</span>     								cartDiscountItems.ItemPrice = discount.GetString(&quot;Ecom:Order:OrderLine.TotalPriceWithProductDiscounts.PriceFormatted&quot;).Replace(&quot;-&quot;, &quot;&quot;);
<span class='line-number'>217</span>     								pWPDiscounts.CartDiscounts.Add(cartDiscountItems);
<span class='line-number'>218</span>     							}
<span class='line-number'>219</span>     							else
<span class='line-number'>220</span>     							{
<span class='line-number'>221</span>     								CartDiscountItems cartDiscountItems = new CartDiscountItems();
<span class='line-number'>222</span>     								cartDiscountItems.ItemName = discountName;
<span class='line-number'>223</span>     								cartDiscountItems.ItemPrice = @discount.GetString(&quot;Ecom:Order:OrderLine.TotalPriceWithProductDiscounts.PriceFormatted&quot;).Replace(&quot;-&quot;, &quot;&quot;);
<span class='line-number'>224</span>     								pWPDiscounts.CartDiscounts.Add(cartDiscountItems);
<span class='line-number'>225</span>     							}
<span class='line-number'>226</span>     						}
<span class='line-number'>227</span>     					}
<span class='line-number'>228</span>     				}
<span class='line-number'>229</span>     				if (pWPDiscounts.CartDiscounts.Count &gt; 0)
<span class='line-number'>230</span>     				{
<span class='line-number'>231</span>     					pWPDiscounts.haveCartDiscounts = true;
<span class='line-number'>232</span>     				}
<span class='line-number'>233</span>     			}
<span class='line-number'>234</span>     
<span class='line-number'>235</span>     			pWPDiscounts.TotalPriceWithVAT = GetString(&quot;Ecom:Order.Price.PriceWithVATFormatted&quot;);
<span class='line-number'>236</span>     			pWPDiscounts.Shipping = GetString(&quot;Ecom:Order.ShippingFee.PriceFormatted&quot;);
<span class='line-number'>237</span>     			pWPDiscounts.GST = GetString(&quot;Ecom:Order.Price.VATFormatted&quot;);
<span class='line-number'>238</span>     		}
<span class='line-number'>239</span>     	}
<span class='line-number'>240</span>     
<span class='line-number'>241</span>     	var ret = Newtonsoft.Json.JsonConvert.SerializeObject(pWPDiscounts);
<span class='line-number'>242</span>     }
<span class='line-number'>243</span>     @ret
<span class='line-number'>244</span>     
</div>
</pre>
