public CheckoutSheetViewModel()
        {
            CheckoutSheetViewModel.logger.Debug("VIEWMODEL LOADING: CheckoutSheetViewModel");
            this.UnitOfWork = new UnitOfWork();
            if (AuthenticationService.Instance.AuthenticatedMember != null)
            {
                this.AuthenticatedMember = this.UnitOfWork.MemberRepository.GetById(AuthenticationService.Instance.AuthenticatedMember.Id);
            }
            CheckoutSheet lastOpenSheet = this.UnitOfWork.CheckoutSheetRepository.GetLastOpenSheet();

            if (lastOpenSheet == null)
            {
                this.CheckoutSheet = new CheckoutSheet()
                {
                    OpenTime = new DateTime?(DateTime.Now),
                    OpenedBy = this.AuthenticatedMember
                };
            }
            else
            {
                this.CheckoutSheet           = lastOpenSheet;
                this.CheckoutSheet.CloseTime = new DateTime?(DateTime.Now);
                this.CheckoutSheet.ClosedBy  = this.AuthenticatedMember;
            }
            WeakEventManager <AuthenticationService, AuthenticationService.AuthenticationEventArgs> .AddHandler(AuthenticationService.Instance, "MemberAuthenticated", new EventHandler <AuthenticationService.AuthenticationEventArgs>(this.AuthenticationEventHandler));

            PropertyChangedEventManager.AddHandler((INotifyPropertyChanged)this.CheckoutSheet, new EventHandler <PropertyChangedEventArgs>(this.CheckoutSheetPropertyChangedEventHandler), "CloseAmount");
        }
예제 #2
0
 public void GenerateCheckoutSheet(CheckoutSheet sheet)
 {
     try
     {
         string   input    = File.ReadAllText(Path.GetDirectoryName(Process.GetCurrentProcess().MainModule.FileName) + "\\Templates\\Html\\Template_Checkoutsheet.htm");
         DateTime dateTime = sheet.OpenTime ?? DateTime.Now;
         string   str1     = "Kasblad JH Tjok Hove: " + dateTime.ToShortDateString();
         this.FilePath = Path.GetTempPath() + ("Kasblad JH Tjok Hove " + dateTime.ToString("dd_MM_yyyy HH_mm")) + ".pdf";
         List <IGrouping <Product, TicketLine> > list = sheet.Tickets.SelectMany <Ticket, TicketLine>((Func <Ticket, IEnumerable <TicketLine> >)(t => (IEnumerable <TicketLine>)t.TicketLines)).GroupBy <TicketLine, Product>((Func <TicketLine, Product>)(tl => tl.Product)).ToList <IGrouping <Product, TicketLine> >().OrderBy <IGrouping <Product, TicketLine>, string>((Func <IGrouping <Product, TicketLine>, string>)(pl => pl.Key.Name)).ToList <IGrouping <Product, TicketLine> >();
         StringBuilder stringBuilder = new StringBuilder();
         int           num1          = 1;
         foreach (IGrouping <Product, TicketLine> source in list)
         {
             stringBuilder.AppendLine(num1 % 2 > 0 ? "<tr>" : "<tr class=\"alt\">");
             stringBuilder.AppendLine("<td>" + source.Key.Name + "</td>");
             stringBuilder.AppendLine("<td>" + (object)source.Sum <TicketLine>((Func <TicketLine, int>)(l => (int)l.Amount)) + "</td>");
             stringBuilder.AppendLine("</tr>");
             ++num1;
         }
         Dictionary <string, string> formFields = new Dictionary <string, string>((IEqualityComparer <string>)StringComparer.OrdinalIgnoreCase);
         formFields.Add("Title", str1);
         Dictionary <string, string> dictionary1 = formFields;
         DateTime?nullable = sheet.OpenTime;
         string   str2     = nullable.ToString();
         dictionary1.Add("OpeningTime", str2);
         Dictionary <string, string> dictionary2 = formFields;
         nullable = sheet.CloseTime;
         string str3 = nullable.ToString();
         dictionary2.Add("ClosureTime", str3);
         formFields.Add("ClosedBy", sheet.ClosedBy.Fullname);
         formFields.Add("OpenedBy", sheet.OpenedBy.Fullname);
         Dictionary <string, string> dictionary3 = formFields;
         int    num2 = sheet.CloseEur500;
         string str4 = num2.ToString();
         dictionary3.Add("AmountEur500", str4);
         Dictionary <string, string> dictionary4 = formFields;
         num2 = sheet.CloseEur200;
         string str5 = num2.ToString();
         dictionary4.Add("AmountEur200", str5);
         Dictionary <string, string> dictionary5 = formFields;
         num2 = sheet.CloseEur100;
         string str6 = num2.ToString();
         dictionary5.Add("AmountEur100", str6);
         Dictionary <string, string> dictionary6 = formFields;
         num2 = sheet.CloseEur50;
         string str7 = num2.ToString();
         dictionary6.Add("AmountEur50", str7);
         formFields.Add("AmountEur20", sheet.CloseEur20.ToString());
         formFields.Add("AmountEur10", sheet.CloseEur10.ToString());
         Dictionary <string, string> dictionary7 = formFields;
         int    num3 = sheet.CloseEur5;
         string str8 = num3.ToString();
         dictionary7.Add("AmountEur5", str8);
         Dictionary <string, string> dictionary8 = formFields;
         num3 = sheet.CloseEur2;
         string str9 = num3.ToString();
         dictionary8.Add("AmountEur2", str9);
         formFields.Add("AmountEur1", sheet.CloseEur1.ToString());
         Dictionary <string, string> dictionary9 = formFields;
         int    num4  = sheet.CloseEur50c;
         string str10 = num4.ToString();
         dictionary9.Add("AmountEur50c", str10);
         Dictionary <string, string> dictionary10 = formFields;
         num4 = sheet.CloseEur20c;
         string str11 = num4.ToString();
         dictionary10.Add("AmountEur20c", str11);
         Dictionary <string, string> dictionary11 = formFields;
         num4 = sheet.CloseEur10c;
         string str12 = num4.ToString();
         dictionary11.Add("AmountEur10c", str12);
         Dictionary <string, string> dictionary12 = formFields;
         num4 = sheet.CloseEur5c;
         string str13 = num4.ToString();
         dictionary12.Add("AmountEur5c", str13);
         Dictionary <string, string> dictionary13 = formFields;
         num4 = sheet.CloseEur2c;
         string str14 = num4.ToString();
         dictionary13.Add("AmountEur2c", str14);
         Dictionary <string, string> dictionary14 = formFields;
         num4 = sheet.CloseEur1c;
         string str15 = num4.ToString();
         dictionary14.Add("AmountEur1c", str15);
         Dictionary <string, string> dictionary15 = formFields;
         num4 = sheet.CloseEur500 * 500;
         string str16 = num4.ToString("C");
         dictionary15.Add("SubtotalEur500", str16);
         Dictionary <string, string> dictionary16 = formFields;
         num4 = sheet.CloseEur200 * 200;
         string str17 = num4.ToString("C");
         dictionary16.Add("SubtotalEur200", str17);
         Dictionary <string, string> dictionary17 = formFields;
         num4 = sheet.CloseEur100 * 100;
         string str18 = num4.ToString("C");
         dictionary17.Add("SubtotalEur100", str18);
         Dictionary <string, string> dictionary18 = formFields;
         num4 = sheet.CloseEur50 * 50;
         string str19 = num4.ToString("C");
         dictionary18.Add("SubtotalEur50", str19);
         Dictionary <string, string> dictionary19 = formFields;
         num4 = sheet.CloseEur20 * 20;
         string str20 = num4.ToString("C");
         dictionary19.Add("SubtotalEur20", str20);
         Dictionary <string, string> dictionary20 = formFields;
         num4 = sheet.CloseEur10 * 10;
         string str21 = num4.ToString("C");
         dictionary20.Add("SubtotalEur10", str21);
         Dictionary <string, string> dictionary21 = formFields;
         num4 = sheet.CloseEur5 * 5;
         string str22 = num4.ToString("C");
         dictionary21.Add("SubtotalEur5", str22);
         Dictionary <string, string> dictionary22 = formFields;
         num4 = sheet.CloseEur2 * 2;
         string str23 = num4.ToString("C");
         dictionary22.Add("SubtotalEur2", str23);
         Dictionary <string, string> dictionary23 = formFields;
         num4 = sheet.CloseEur1 * 1;
         string str24 = num4.ToString("C");
         dictionary23.Add("SubtotalEur1", str24);
         Dictionary <string, string> dictionary24 = formFields;
         double num5  = (double)sheet.CloseEur50c * 0.5;
         string str25 = num5.ToString("C");
         dictionary24.Add("SubtotalEur50c", str25);
         Dictionary <string, string> dictionary25 = formFields;
         num5 = (double)sheet.CloseEur20c * 0.2;
         string str26 = num5.ToString("C");
         dictionary25.Add("SubtotalEur20c", str26);
         Dictionary <string, string> dictionary26 = formFields;
         num5 = (double)sheet.CloseEur10c * 0.1;
         string str27 = num5.ToString("C");
         dictionary26.Add("SubtotalEur10c", str27);
         Dictionary <string, string> dictionary27 = formFields;
         num5 = (double)sheet.CloseEur5c * 0.05;
         string str28 = num5.ToString("C");
         dictionary27.Add("SubtotalEur5c", str28);
         Dictionary <string, string> dictionary28 = formFields;
         num5 = (double)sheet.CloseEur2c * 0.02;
         string str29 = num5.ToString("C");
         dictionary28.Add("SubtotalEur2c", str29);
         Dictionary <string, string> dictionary29 = formFields;
         num5 = (double)sheet.CloseEur1c * 0.01;
         string str30 = num5.ToString("C");
         dictionary29.Add("SubtotalEur1c", str30);
         Dictionary <string, string> dictionary30 = formFields;
         num5 = sheet.CloseAmount;
         string str31 = num5.ToString("C");
         dictionary30.Add("EndTotal", str31);
         Dictionary <string, string> dictionary31 = formFields;
         num5 = sheet.OpenAmount;
         string str32 = num5.ToString("C");
         dictionary31.Add("BeginTotal", str32);
         Dictionary <string, string> dictionary32 = formFields;
         num5 = sheet.CloseAmount - sheet.OpenAmount;
         string str33 = num5.ToString("C");
         dictionary32.Add("Revenue", str33);
         formFields.Add("Remarks", sheet.Comments);
         formFields.Add("ImagePath", Path.GetDirectoryName(Process.GetCurrentProcess().MainModule.FileName) + "\\Templates\\Html");
         formFields.Add("TableSoldProducts", stringBuilder.ToString());
         string       str34  = new Regex("\\[(\\w+)\\]", RegexOptions.Compiled).Replace(input, (MatchEvaluator)(match => formFields[match.Groups[1].Value]));
         GlobalConfig config = new GlobalConfig();
         config.SetMargins(new Margins(70, 45, 70, 45)).SetPaperSize(PaperKind.A4);
         SimplePechkin simplePechkin = new SimplePechkin(config);
         ObjectConfig  objectConfig  = new ObjectConfig();
         objectConfig.SetLoadImages(true);
         objectConfig.SetPrintBackground(true);
         objectConfig.SetZoomFactor(1.1);
         objectConfig.SetAllowLocalContent(true);
         ObjectConfig doc  = objectConfig;
         string       html = str34;
         File.WriteAllBytes(this.FilePath, simplePechkin.Convert(doc, html));
         PdfReportService.logger.Info("Checkoutsheet PDF created: " + this.FilePath);
     }
     catch (Exception ex)
     {
         PdfReportService.logger.Error("Could not create temporary PDF file:" + ex.Message);
     }
 }
예제 #3
0
 public void GenerateCheckoutTicketOverview(CheckoutSheet sheet)
 {
     try
     {
         string   input    = File.ReadAllText(Path.GetDirectoryName(Process.GetCurrentProcess().MainModule.FileName) + "\\Templates\\Html\\Template_Checkoutsheet_TicketOverview.htm");
         DateTime dateTime = sheet.OpenTime ?? DateTime.Now;
         string   str1     = "Ticketoverzicht: " + dateTime.ToShortDateString();
         this.FilePath = Path.GetTempPath() + ("Ticketoverzicht " + dateTime.ToString("dd_MM_yyyy HH_mm")) + ".pdf";
         StringBuilder stringBuilder1 = new StringBuilder();
         foreach (Ticket ticket in (Collection <Ticket>)sheet.Tickets)
         {
             stringBuilder1.AppendLine("<table class=\"table3\">");
             stringBuilder1.AppendLine("<tr>");
             stringBuilder1.AppendLine("<td colspan=\"6\" class=\"ticketTitle\">Ticket &#35;" + (object)ticket.Id + "</td>");
             stringBuilder1.AppendLine("</tr>");
             stringBuilder1.AppendLine("<tr>");
             stringBuilder1.AppendLine("<td class=\"ticketPropertyTitles\" colspan=\"2\">Datum</td>");
             stringBuilder1.AppendLine("<td class=\"ticketPropertyTitles\">Waarde EUR</td>");
             stringBuilder1.AppendLine("<td class=\"ticketPropertyTitles\">Waarde Bonnen</td>");
             stringBuilder1.AppendLine("<td class=\"ticketPropertyTitles\" colspan=\"2\">Aangemaakt door</td>");
             stringBuilder1.AppendLine("</tr>");
             stringBuilder1.AppendLine("<tr>");
             stringBuilder1.AppendLine("<td class =\"ticketPropertyValues\" colspan=\"2\">" + (object)ticket.CreationTime + "</td>");
             stringBuilder1.AppendLine("<td class=\"ticketPropertyValues\">" + ticket.TotalPrice.ToString("C") + "</td>");
             stringBuilder1.AppendLine("<td class=\"ticketPropertyValues\">" + (object)ticket.TotalCoins + "</td>");
             stringBuilder1.AppendLine("<td class=\"ticketPropertyValues\" colspan=\"2\">" + ticket.CreatedBy.Fullname + "</td>");
             stringBuilder1.AppendLine("</tr>");
             stringBuilder1.AppendLine("<tr>");
             stringBuilder1.AppendLine("<td colspan=\"6\">&nbsp;</td>");
             stringBuilder1.AppendLine("</tr>");
             stringBuilder1.AppendLine("<tr>");
             stringBuilder1.AppendLine(" <td colspan=\"6\" class=\"productsTitle\">Producten</td>");
             stringBuilder1.AppendLine("</tr>");
             stringBuilder1.AppendLine("<tr>");
             stringBuilder1.AppendLine("<td class=\"productsPropertyTitles\">Naam</td>");
             stringBuilder1.AppendLine("<td class =\"productsPropertyTitles\">Hoeveelheid</td>");
             stringBuilder1.AppendLine("<td class=\"productsPropertyTitles\">Stukprijs EUR</td>");
             stringBuilder1.AppendLine("<td class=\"productsPropertyTitles\">Stukprijs Bonnen</td>");
             stringBuilder1.AppendLine("<td class=\"productsPropertyTitles\">Subtotaal EUR</td>");
             stringBuilder1.AppendLine("<td class=\"productsPropertyTitles\">Subtotaal Bonnen</td>");
             stringBuilder1.AppendLine("</tr>");
             foreach (TicketLine ticketLine in (Collection <TicketLine>)ticket.TicketLines)
             {
                 stringBuilder1.AppendLine("<tr>");
                 stringBuilder1.AppendLine("<td class =\"productsPropertyValues\">" + ticketLine.Product.Name + "</td>");
                 stringBuilder1.AppendLine("<td class =\"productsPropertyValues\">" + (object)ticketLine.Amount + "</td>");
                 StringBuilder stringBuilder2 = stringBuilder1;
                 double        num            = ticketLine.UnitPrice;
                 string        str2           = "<td class =\"productsPropertyValues\">" + num.ToString("C") + "</td>";
                 stringBuilder2.AppendLine(str2);
                 stringBuilder1.AppendLine("<td class =\"productsPropertyValues\">" + (object)ticketLine.UnitPriceCoins + "</td>");
                 StringBuilder stringBuilder3 = stringBuilder1;
                 num = ticketLine.LinePriceIncl;
                 string str3 = "<td class =\"productsPropertyValues\">" + num.ToString("C") + "</td>";
                 stringBuilder3.AppendLine(str3);
                 stringBuilder1.AppendLine("<td class =\"productsPropertyValues\">" + (object)ticketLine.LinePriceCoins + "</td>");
                 stringBuilder1.AppendLine("</tr>");
             }
             stringBuilder1.AppendLine("<tr>");
             stringBuilder1.AppendLine("<td colspan=\"6\">&nbsp;</td>");
             stringBuilder1.AppendLine("</tr>");
             stringBuilder1.AppendLine("<tr>");
             stringBuilder1.AppendLine("<td colspan=\"6\" class=\"transactionsTitle\">Transacties</td>");
             stringBuilder1.AppendLine("</tr>");
             stringBuilder1.AppendLine("<tr>");
             stringBuilder1.AppendLine("<td class=\"transactionsPropertyTitles\">Datum</td>");
             stringBuilder1.AppendLine("<td class=\"transactionsPropertyTitles\">Bedrag</td>");
             stringBuilder1.AppendLine("<td class=\"transactionsPropertyTitles\">Betaalmethode</td>");
             stringBuilder1.AppendLine("<td class=\"transactionsPropertyTitles\">Afgehandeld door</td>");
             stringBuilder1.AppendLine("<td class=\"transactionsPropertyTitles\">Ontvangen</td>");
             stringBuilder1.AppendLine("<td class=\"transactionsPropertyTitles\">Wisselgeld</td>");
             stringBuilder1.AppendLine("</tr>");
             foreach (Transaction transaction in (Collection <Transaction>)ticket.Transactions)
             {
                 stringBuilder1.AppendLine("<tr>");
                 stringBuilder1.AppendLine("<td class =\"transactionsPropertyValues\">" + (object)transaction.PayTime + "</td>");
                 stringBuilder1.AppendLine("<td class =\"transactionsPropertyValues\">" + transaction.Amount.ToString("C") + "</td>");
                 stringBuilder1.AppendLine("<td class =\"transactionsPropertyValues\">" + (object)transaction.PaymentMethodUsed + "</td>");
                 stringBuilder1.AppendLine("<td class =\"transactionsPropertyValues\">" + transaction.PaymentHandledBy.Fullname + "</td>");
                 if (transaction.PaymentMethodUsed == Transaction.PaymentMethod.Cash)
                 {
                     stringBuilder1.AppendLine("<td class =\"transactionsPropertyValues\">" + ((CashTransaction)transaction).MoneyReceived.ToString("C") + "</td>");
                     stringBuilder1.AppendLine("<td class =\"transactionsPropertyValues\">" + ((CashTransaction)transaction).MoneyReturned.ToString("C") + "</td>");
                 }
                 else if (transaction.PaymentMethodUsed == Transaction.PaymentMethod.Coin)
                 {
                     stringBuilder1.AppendLine("<td class =\"transactionsPropertyValues\">" + (object)((CoinTransaction)transaction).CoinsReceived + "</td>");
                     stringBuilder1.AppendLine("<td class =\"transactionsPropertyValues\"></td>");
                 }
                 else if (transaction.PaymentMethodUsed == Transaction.PaymentMethod.Free)
                 {
                     stringBuilder1.AppendLine("<td class =\"transactionsPropertyValues\" colspan=\"2\">" + ((FreeTransaction)transaction).Reason + "</td>");
                 }
                 else if (transaction.PaymentMethodUsed == Transaction.PaymentMethod.NFC)
                 {
                     stringBuilder1.AppendLine("<td class =\"transactionsPropertyValues\"></td>");
                     stringBuilder1.AppendLine("<td class =\"transactionsPropertyValues\"></td>");
                 }
                 stringBuilder1.AppendLine("</tr>");
             }
             stringBuilder1.AppendLine("</table>");
             stringBuilder1.AppendLine("<br />");
         }
         string str4 = new Regex("\\[(\\w+)\\]", RegexOptions.Compiled).Replace(input, (MatchEvaluator)(match => new Dictionary <string, string>((IEqualityComparer <string>)StringComparer.OrdinalIgnoreCase)
         {
             {
                 "Title",
                 str1
             },
             {
                 "ImagePath",
                 Path.GetDirectoryName(Process.GetCurrentProcess().MainModule.FileName) + "\\Templates\\Html"
             },
             {
                 "TicketOverviewTable",
                 stringBuilder1.ToString()
             }
         }[match.Groups[1].Value]));
         GlobalConfig config = new GlobalConfig();
         config.SetMargins(new Margins(70, 45, 70, 45)).SetPaperSize(PaperKind.A4);
         SimplePechkin simplePechkin = new SimplePechkin(config);
         ObjectConfig  objectConfig  = new ObjectConfig();
         objectConfig.SetLoadImages(true);
         objectConfig.SetPrintBackground(true);
         objectConfig.SetZoomFactor(1.1);
         objectConfig.SetAllowLocalContent(true);
         ObjectConfig doc  = objectConfig;
         string       html = str4;
         File.WriteAllBytes(this.FilePath, simplePechkin.Convert(doc, html));
         PdfReportService.logger.Info("Ticketoverview PDF created: " + this.FilePath);
     }
     catch (Exception ex)
     {
         PdfReportService.logger.Error("Could not create temporary PDF file:" + ex.Message);
     }
 }