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