Error executing template "/Designs/Dwsimple/Paragraph/syseddel.cshtml"
System.NullReferenceException: Object reference not set to an instance of an object.
   at CompiledRazorTemplates.Dynamic.RazorEngine_b22b86ab8fdf40c0bd184774c04d3bbe.Execute() in C:\inetpub\PagunetteDW\Files\Templates\Designs\Dwsimple\Paragraph\syseddel.cshtml:line 20
   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.b__0(TextWriter writer)
   at RazorEngine.Templating.RazorEngineServiceExtensions.WithWriter(Action`1 withWriter)
   at Dynamicweb.Rendering.Template.RenderRazorTemplate()

1 @inherits Dynamicweb.Rendering.RazorTemplateBase<Dynamicweb.Rendering.RazorTemplateModel<Dynamicweb.Rendering.Template>> 2 @using System; 3 @using System.Web; 4 @using Pagunette.CustomModules; 5 @using Pagunette.CustomModules.Classes; 6 @using System.Configuration; 7 @using Pagunette.Models; 8 @using Newtonsoft.Json; 9 @using Pagunette.CustomModules.Utils; 10 @using Dynamicweb; 11 @using Dynamicweb.Logging; 12 @using Dynamicweb.Ecommerce.Orders; 13 14 @{ 15 ILogger logger = LogManager.Current.GetLogger("internalReceipt"); 16 17 var request = HttpContext.Current.Request; 18 19 Order ordre = Dynamicweb.Ecommerce.Orders.Order.GetOrderById(request.QueryString["OrderID"]); 20 OrderFieldValueCollection orderFields = ordre.OrderFieldValues; 21 22 var localeString = "pl-PL"; 23 24 var printStyle = new HtmlString("@media"); 25 26 string vismaOrderNo = ""; 27 28 if (ordre.OrderFieldValues.GetOrderFieldValue("VismaOrderID") != null) 29 { 30 if (ordre.OrderFieldValues.GetOrderFieldValue("VismaOrderID").Value.ToString().Contains(",")) 31 { 32 vismaOrderNo = ordre.OrderFieldValues.GetOrderFieldValue("VismaOrderID").Value.ToString().Split(',')[0]; 33 } 34 else 35 { 36 vismaOrderNo = ordre.OrderFieldValues.GetOrderFieldValue("VismaOrderID").Value.ToString(); 37 } 38 } 39 40 } 41 <html> 42 <head> 43 <meta charset="utf-8"> 44 <style> 45 #cookieWarningDiv { 46 display: none 47 } 48 </style> 49 </head> 50 51 <body> 52 @{ 53 var logoimage = Dynamicweb.Frontend.PageView.GetPageviewByPageID(ordre.CheckoutPageId).Area.Item["GeneralLogo"].ToString(); 54 var logotext = Dynamicweb.Frontend.PageView.GetPageviewByPageID(ordre.CheckoutPageId).Area.Item["GeneralLogoText"].ToString(); 55 int i = 1; 56 string[] produktionsNumre = new string[0]; 57 } 58 59 @foreach (OrderLine orderline in ordre.OrderLines.Where(ol => ol.ProductNumber == ConfigurationManager.AppSettings["ConfiguratorProductNumber"])) 60 { 61 string productNumber = orderline.ProductNumber; 62 bool isConfiguratorProduct = productNumber == ConfigurationManager.AppSettings["ConfiguratorProductNumber"]; 63 ConfiguratorSelectionModel configuratorSelection = null; 64 ConfiguratorPriceDetailsModel selectionPrices = null; 65 string image = string.Empty; 66 OrderLineFieldValueCollection items = orderline.OrderLineFieldValues; 67 string assumedProductionNo = orderFields.GetOrderFieldValue("VismaProductionIDs").Value.ToString().Split(',').ElementAtOrDefault((i - 1)); 68 // hvis ProductionNo er sendt med 69 if (!string.IsNullOrEmpty(request.QueryString["ProductionNo"])) 70 { 71 if (request.QueryString["ProductionNo"] != assumedProductionNo) 72 { 73 // hvis ProductionNo ikke matcher det antaget produktions nummer fra Visma 74 i++; 75 continue; 76 } 77 } 78 79 foreach (OrderLineFieldValue item in items) 80 { 81 82 switch (item.OrderLineFieldSystemName) 83 { 84 case "ConfiguratorData": 85 try 86 { 87 //@item.GetString("Ecom:Order:OrderLine.OrderLineField.Value"); 88 configuratorSelection = JsonConvert.DeserializeObject<ConfiguratorSelectionModel>(item.Value); 89 selectionPrices = ConfiguratorOperations.GetPriceDetails(configuratorSelection, orderline.Quantity, true, true, ordre); 90 91 if ("PLK" != configuratorSelection.PerfionLanguage) 92 { 93 configuratorSelection.ChangeLanguage(configuratorSelection, "PLK"); 94 } 95 96 image = PIMComUtilities.GetPerfionImageUrl(configuratorSelection.Vare.Image1, "100x100"); 97 } 98 catch (Exception e) { } 99 break; 100 101 case "VismaProductionIDs": 102 if (!string.IsNullOrEmpty(item.Value)) 103 { 104 produktionsNumre = item.Value.Split(','); 105 } 106 break; 107 108 default: 109 break; 110 } 111 } 112 113 114 115 if (string.IsNullOrEmpty(image) && orderline.get_OrderLineFieldValue("MainProductImage") != null) 116 { 117 image = PIMComUtilities.GetPerfionImageUrl(orderline.get_OrderLineFieldValue("MainProductImage").Value.ToString(), "100x100"); 118 } 119 <h2>@Translate("InternalReceipt", "Intern kopi af ordrekvittering", localeString)</h2> 120 121 <table width="800" border="0" cellspacing="0" cellpadding="0" ID="Table3"> 122 <tr> 123 <td width="50%" valign="top"> 124 <table width="100%" border="0" cellspacing="0" cellpadding="0" ID="Table2"> 125 <tr> 126 <td width="100%" valign="top" colspan="3"><b>@Translate("Billingaddress", "Billing address", localeString)</b></td> 127 </tr> 128 <tr> 129 <td width="40%" valign="top">@Translate("Company", "Company", localeString)</td> 130 <td width="60%" valign="top">@ordre.CustomerCompany</td> 131 </tr> 132 <tr> 133 <td width="40%" valign="top">@Translate("Address", "Address", localeString)</td> 134 135 <td width="60%" valign="top">@ordre.CustomerAddress</td> 136 </tr> 137 138 <tr> 139 <td width="40%" valign="top">@Translate("Zipcode", "Zipcode", localeString)</td> 140 141 <td width="60%" valign="top">@ordre.CustomerZip<text>&nbsp;</text>@ordre.CustomerCity</td> 142 </tr> 143 <tr> 144 <td width="40%" valign="top">@Translate("Country", "Country", localeString)</td> 145 146 <td width="60%" valign="top">@ordre.CustomerCountry</td> 147 </tr> 148 149 </table> 150 <br> 151 <table width="100%" border="0" cellspacing="0" cellpadding="0" ID="Table5"> 152 <tr> 153 <td width="100%" valign="top" colspan="3"><b>@Translate("Orderinformation", "Orderinformation", localeString)</b></td> 154 </tr> 155 <tr> 156 <td width="40%" valign="top">@Translate("Customer number", "Kundenr", localeString)</td> 157 158 <td width="60%" valign="top">@ordre.CustomerNumber</td> 159 </tr> 160 @if (!string.IsNullOrWhiteSpace(@ordre.TransactionNumber)) 161 { 162 <tr> 163 <td width="40%" valign="top">@Translate("Transaction number", "Transaction number", localeString)</td> 164 165 <td width="60%" valign="top">@ordre.TransactionNumber</td> 166 </tr> 167 } 168 <tr> 169 <td width="40%" valign="top">@Translate("ReqNo", "Rekv.nummer", localeString)</td> 170 171 <td width="60%" valign="top">@orderFields.GetOrderFieldValue("RequisitionNumber").Value.ToString()</td> 172 </tr> 173 <tr> 174 <td width="40%" valign="top">@Translate("Order date", "Order date", localeString)</td> 175 176 <td width="60%" valign="top">@ordre.CompletedDate.Value.ToString("dd-MM-yyyy")</td> 177 </tr> 178 @if (!string.IsNullOrEmpty(orderFields.GetOrderFieldValue("DesiredDeliveryDate").Value.ToString()) && DateTime.Parse(orderFields.GetOrderFieldValue("DesiredDeliveryDate").Value.ToString()) >= DateTime.UtcNow) 179 { 180 <tr> 181 <td width="40%" valign="top">@Translate("Desired delivery date", "Desired delivery date", localeString)</td> 182 183 <td width="60%" valign="top">@DateTime.Parse(orderFields.GetOrderFieldValue("DesiredDeliveryDate").Value.ToString()).ToString(Dynamicweb.Core.Helpers.DateHelper.DateOnlyFormatStringShort)</td> 184 185 </tr> 186 } 187 188 189 </table> 190 </td> 191 @if (!string.IsNullOrWhiteSpace(ordre.DeliveryAddress)) 192 { 193 <td width="50%" valign="top"> 194 <table width="100%" border="0" cellspacing="0" cellpadding="0" ID="Table4"> 195 <tr> 196 <td width="100%" valign="top" colspan="3"><b>@Translate("Delivery address", "Delivery address", localeString)</b></td> 197 </tr> 198 <tr> 199 <td width="40%" valign="top">@Translate("Company", "Company", localeString)</td> 200 201 <td width="60%" valign="top">ordre.DeliveryCompany</td> 202 </tr> 203 <tr> 204 <td width="40%" valign="top">@Translate("Att", "Att.", localeString)</td> 205 206 <td width="60%" valign="top">ordre.DeliveryName</td> 207 </tr> 208 <tr> 209 <td width="40%" valign="top">@Translate("Address", "Address", localeString)</td> 210 211 <td width="60%" valign="top">ordre.DeliveryAddress</td> 212 </tr> 213 214 <tr> 215 <td width="40%" valign="top">@Translate("Zipcode", "Zipcode", localeString)</td> 216 217 <td width="60%" valign="top">ordre.DeliveryZip<text>&nbsp;</text>ordre.DeliveryCity</td> 218 </tr> 219 <tr> 220 <td width="40%" valign="top">@Translate("Country", "Country", localeString)</td> 221 222 <td width="60%" valign="top">ordre.DeliveryCountry</td> 223 </tr> 224 225 226 227 </table> 228 </td> 229 } 230 </tr> 231 </table> 232 233 <table cellspacing="0" cellpadding="0" border="0" width="800" style="margin-top: 15px;"> 234 <tr> 235 <td colspan="3"> 236 <b>@Translate("Ordrespecifikation", "Ordrespecifikation", localeString)</b> 237 </td> 238 </tr> 239 <tr class="basketheader"> 240 <th style="text-align:left;">@Translate("Product", "Product2", localeString)</th> 241 <th>&nbsp;</th> 242 <th style="text-align:right;">@Translate("Qty", "Qty", localeString)</th> 243 </tr> 244 <tr class="separator"> 245 <td colspan="3"><hr /></td> 246 </tr> 247 @if (ordre.OrderLines.Count > 0) 248 { 249 250 <tr> 251 <td colspan="3">@Translate("VismaSalesnumber", "Sales ordernumber", localeString): @vismaOrderNo, @Translate("VismaProductionOrder", "Production order", localeString) @assumedProductionNo</td> 252 </tr> 253 <tr> 254 <td colspan="3"><hr /></td> 255 </tr> 256 } 257 258 <tr> 259 <td width="120"> 260 <img src="@image" class="receipt-image" width="100" height="100" /> 261 262 @if (configuratorSelection == null) 263 { 264 <span class="receipt-p-number"> @orderline.ProductNumber</span> 265 if (orderline.Type == "1") 266 { 267 <small>@Translate("Discount", "Discount", localeString)</small> 268 } 269 } 270 </td> 271 <td> 272 @if (configuratorSelection != null) 273 { 274 <b>@configuratorSelection.Vare.Name</b> 275 } 276 else 277 { 278 <a href="@orderline.Reference"> 279 @orderline.ProductName 280 @if (!string.IsNullOrWhiteSpace(orderline.ProductVariantText)) 281 { 282 @orderline.ProductVariantText; 283 } 284 </a> 285 } 286 @if (orderline.OrderLineFieldValues.Any()) 287 { 288 <table class="table receipt-table"> 289 @foreach (OrderLineFieldValue item in items) 290 { 291 var label = ""; 292 var value = item.Value.ToString(); 293 294 switch (item.OrderLineFieldSystemName) 295 { 296 case "DesiredDeliveryDate": 297 label = Translate("ReceptOrderLineDeliveryDate", "Ønsket leveringsdato", localeString); 298 if (string.IsNullOrEmpty(value)) 299 { 300 value = Translate("ReceptOrderLineDeliveryDateASAP", "Hurtigst muligt", localeString); 301 } 302 break; 303 case "Comment": 304 if (configuratorSelection != null) 305 { 306 label = null; 307 } 308 else 309 { 310 label = Translate("ReceptOrderLineComment", "Kommentar"); 311 } 312 if (!string.IsNullOrEmpty(value)) 313 { 314 value = value.Replace("\n", "<br/>"); 315 } 316 break; 317 } 318 319 if (!string.IsNullOrWhiteSpace(label) && !string.IsNullOrWhiteSpace(value)) 320 { 321 <tr> 322 <td>@label</td> 323 <td>@value</td> 324 </tr> 325 } 326 } 327 </table> 328 } 329 </td> 330 <td style="text-align:right;">@orderline.Quantity</td> 331 </tr> 332 333 334 335 336 @if (isConfiguratorProduct && configuratorSelection != null) 337 { 338 339 340 var combined = new ConfiguratorCombinedModel() { selection = configuratorSelection, prices = selectionPrices, dwOrderline = Dynamicweb.Ecommerce.Orders.OrderLine.GetOrderLineById(orderline.Id) }; 341 var imageList = ConfiguratorOperations.GetConfiguratorImages(configuratorSelection); 342 if (imageList.Count() > 0) 343 { 344 345 foreach (var objWithImage in imageList) 346 { 347 <tr> 348 <td width="120"> 349 <img src='@objWithImage.ImageUrl' width="100" height="100" /> 350 </td> 351 <td>@objWithImage.Name</td> 352 <td></td> 353 </tr> 354 } 355 356 } 357 var descriptionText = ""; 358 foreach (var text in ConfiguratorOperations.GetProductionDescription(combined, configuratorSelection.PerfionLanguage, "syseddel")) 359 { 360 var style = ""; 361 if (text.style == ConfiguratorDescriptionTextStyle.bold) 362 { 363 style = "style='font-weight:bold'"; 364 } 365 descriptionText += "<div " + style + "> " + text.text + "</div>"; 366 } 367 <tr> 368 <td colspan="3">@descriptionText</td> 369 </tr> 370 371 372 } 373 <tr> 374 <td> 375 &nbsp; 376 </td> 377 </tr> 378 <tr> 379 <td colspan="3"> 380 <strong>@Translate("OrderComment", "Comment", localeString)</strong> <br /> 381 @ordre.CustomerComment 382 </td> 383 </tr> 384 </table> 385 386 if (string.IsNullOrEmpty(request.QueryString["ProductionNo"]) && i < ordre.OrderLines.Count) 387 { 388 <div style="page-break-before:always"> &nbsp;</div> 389 } 390 391 i++; 392 393 } 394 @* 395 <table cellspacing="0" cellpadding="0" border="0" width="800" style=""> 396 <tr class="separator"> 397 <td colspan="3">&nbsp;</td> 398 </tr> 399 <tr> 400 <td> 401 <strong>@Translate("OrderComment", "Comment", localeString)</strong> <br /> 402 @ordre.CustomerComment 403 </td> 404 </tr> 405 406 </table> 407 *@ 408 </body> 409 410 </html> 411