Пример #1
0
        public static void PrintCloseTicket(CloseTicket closeTicket, string nameTicketWindow)
        {
            var typePay = PrintTypePay.GetPrintTypePays(closeTicket);

            _templateCloseTicket = new TemplateCloseTicket(typePay, nameTicketWindow);
            var pd = new PrintDocument();

            pd.PrintPage += PrintPageCloseTicket;
            pd.Print();
        }
Пример #2
0
        public TemplateCloseTicketG(CloseTicketG closeTicketG, ICollection <CloseTicket> closeTickets)
        {
            var dateText = closeTicketG.DateClose.ToShortDateString();
            var timetext = closeTicketG.DateClose.ToShortTimeString();

            const int x        = 0;
            var       y        = 134;
            const int h        = 20;
            const int w        = 280;
            const int sizeLine = 12;

            TextElements.Add(new PrintTextElement("Date : " + dateText + "  -  Heure : " + timetext,
                                                  x, y, w, h, new StringFormat {
                Alignment = StringAlignment.Center, LineAlignment = StringAlignment.Near
            }));
            y += h;

            var printTotals  = new List <PrintTotal>();
            var totalCaseTva = new List <List <PrintTva> >();

            foreach (var closeTicket in closeTickets.OrderBy(ct => ct.NameTicket))
            {
                TextElements.Add(new PrintTextElement(closeTicket.NameTicket.ToUpper(),
                                                      x, y + 15, w, h, new StringFormat {
                    Alignment = StringAlignment.Center
                }, new Font("Arial", 12, FontStyle.Bold)));
                y += h + 15;

                TextElements.Add(new PrintTextElement("**********************************************************",
                                                      x, y, 300, h));
                y += h;

                TextElements.Add(new PrintTextElement(closeTicket.DateClose.ToShortDateString(),
                                                      x, y - 10, w, h, new StringFormat {
                    Alignment = StringAlignment.Center
                }));
                y += h;

                var typePays = PrintTypePay.GetPrintTypePays(closeTicket);
                var sumMoney = typePays.Sum(tp => tp.Money);

                foreach (var typePay in typePays)
                {
                    TextElements.Add(new PrintTextElement(typePay.Type.CheckName,
                                                          x, y, 120, h, new StringFormat {
                        Alignment = StringAlignment.Near
                    }));

                    TextElements.Add(new PrintTextElement(typePay.Money.ToString("C"),
                                                          x + 120, y, 80, h, new StringFormat {
                        Alignment = StringAlignment.Far
                    }));

                    TextElements.Add(new PrintTextElement((typePay.Money / sumMoney).ToString("P"),
                                                          x + 200, y, 80, h, new StringFormat {
                        Alignment = StringAlignment.Far
                    }));
                    y += h;
                }

                TextElements.Add(new PrintTextElement("TOTAL",
                                                      x, y, 120, h, new StringFormat {
                    Alignment = StringAlignment.Near
                }, new Font("Arial", 9, FontStyle.Bold)));

                TextElements.Add(new PrintTextElement(sumMoney.ToString("C"),
                                                      x + 120, y, 80, h, new StringFormat {
                    Alignment = StringAlignment.Far
                }, new Font("Arial", 9, FontStyle.Bold)));

                TextElements.Add(new PrintTextElement(1.ToString("P"),
                                                      x + 200, y, 80, h, new StringFormat {
                    Alignment = StringAlignment.Far
                }, new Font("Arial", 9, FontStyle.Bold)));
                y += h;

                TextElements.Add(new PrintTextElement("*** TVA ***",
                                                      x, y + 10, w, h, new StringFormat {
                    Alignment = StringAlignment.Center
                }, new Font("Arial", 10, FontStyle.Bold)));
                y += h + 10;

                TextElements.Add(new PrintTextElement("  TAUX               HT              TVA                 TTC",
                                                      x, y, w, h, new StringFormat {
                    Alignment = StringAlignment.Near, LineAlignment = StringAlignment.Near
                }, new Font("Arial", 9)));
                y += h;

                var ht  = 0.0m;
                var tva = 0.0m;
                var ttc = 0.0m;

                var caseTva = PrintTva.GetPrintTvases(closeTicket);
                totalCaseTva.Add(caseTva);

                foreach (var printTva in caseTva)
                {
                    TextElements.Add(new PrintTextElement(printTva.Tva.Value + "%",
                                                          x, y, 45, sizeLine, new StringFormat {
                        Alignment = StringAlignment.Far, LineAlignment = StringAlignment.Near
                    }));

                    TextElements.Add(new PrintTextElement(printTva.Ht.ToString("C"),
                                                          x + 50, y, 80, sizeLine, new StringFormat {
                        Alignment = StringAlignment.Far, LineAlignment = StringAlignment.Near
                    }));

                    TextElements.Add(new PrintTextElement(printTva.TvaDecimal.ToString("C"),
                                                          x + 130, y, 70, sizeLine, new StringFormat {
                        Alignment = StringAlignment.Far, LineAlignment = StringAlignment.Near
                    }));

                    TextElements.Add(new PrintTextElement(printTva.Ttc.ToString("C"),
                                                          x + 200, y, 80, sizeLine, new StringFormat {
                        Alignment = StringAlignment.Far, LineAlignment = StringAlignment.Near
                    }));

                    y   += h;
                    ht  += printTva.Ht;
                    tva += printTva.TvaDecimal;
                    ttc += printTva.Ttc;
                }

                TextElements.Add(new PrintTextElement("TOTAL",
                                                      x, y, 50, sizeLine, new StringFormat {
                    Alignment = StringAlignment.Near, LineAlignment = StringAlignment.Near
                }, new Font("Arial", 9, FontStyle.Bold)));

                TextElements.Add(new PrintTextElement(ht.ToString("C"),
                                                      x + 50, y, 80, sizeLine, new StringFormat {
                    Alignment = StringAlignment.Far, LineAlignment = StringAlignment.Near
                }, new Font("Arial", 9, FontStyle.Bold)));

                TextElements.Add(new PrintTextElement(tva.ToString("C"),
                                                      x + 130, y, 70, sizeLine, new StringFormat {
                    Alignment = StringAlignment.Far, LineAlignment = StringAlignment.Near
                }, new Font("Arial", 9, FontStyle.Bold)));

                TextElements.Add(new PrintTextElement(ttc.ToString("C"),
                                                      x + 200, y, 80, sizeLine, new StringFormat {
                    Alignment = StringAlignment.Far, LineAlignment = StringAlignment.Near
                }, new Font("Arial", 9, FontStyle.Bold)));
                y += h;

                var countOfPays = decimal.ToInt32(closeTicket.ChecksTicket.Sum(c => c.PayProducts.Sum(p => p.Qty)));
                var printTotal  = new PrintTotal
                {
                    Count   = countOfPays,
                    SrTotal = ttc / countOfPays,
                    Name    = closeTicket.NameTicket,
                    Total   = sumMoney
                };
                printTotals.Add(printTotal);
            }

            if (closeTickets.Count > 1)
            {
                TextElements.Add(new PrintTextElement("TOTAL GLOBAL",
                                                      x, y + 15, w, h, new StringFormat {
                    Alignment = StringAlignment.Center, LineAlignment = StringAlignment.Near
                }, new Font("Arial", 12, FontStyle.Bold)));
                y += h + 15;

                TextElements.Add(new PrintTextElement("**********************************************************",
                                                      x, y, 300, h));
                y += h;

                var printTypePays = PrintTypePay.GetPrintTypePays(closeTicketG);
                var sumMoneyG     = printTypePays.Sum(l => l.Money);

                foreach (var printTypePay in printTypePays)
                {
                    TextElements.Add(new PrintTextElement(printTypePay.Type.Name,
                                                          x, y, 120, h, new StringFormat {
                        Alignment = StringAlignment.Near
                    }));

                    TextElements.Add(new PrintTextElement(printTypePay.Money.ToString("C"),
                                                          x + 120, y, 80, h, new StringFormat {
                        Alignment = StringAlignment.Far
                    }));

                    TextElements.Add(new PrintTextElement((printTypePay.Money / sumMoneyG).ToString("P"),
                                                          x + 200, y, 80, h, new StringFormat {
                        Alignment = StringAlignment.Far
                    }));
                    y += h;
                }

                TextElements.Add(new PrintTextElement("TOTAL",
                                                      x, y, 120, h, new StringFormat {
                    Alignment = StringAlignment.Near
                }, new Font("Arial", 9, FontStyle.Bold)));

                TextElements.Add(new PrintTextElement(sumMoneyG.ToString("C"),
                                                      x + 120, y, 80, h, new StringFormat {
                    Alignment = StringAlignment.Far
                }, new Font("Arial", 9, FontStyle.Bold)));

                TextElements.Add(new PrintTextElement(1.ToString("P"),
                                                      x + 200, y, 80, h, new StringFormat {
                    Alignment = StringAlignment.Far
                }, new Font("Arial", 9, FontStyle.Bold)));
                y += h;

                var ght  = 0.0m;
                var gtva = 0.0m;
                var gttc = 0.0m;

                var printTvases = new List <PrintTva>();

                foreach (var p in totalCaseTva)
                {
                    foreach (var pTva in p)
                    {
                        var indx = printTvases.FindIndex(l => l.Tva == pTva.Tva);

                        if (indx == -1)
                        {
                            var j = new PrintTva(pTva.Tva, pTva.Ht, pTva.TvaDecimal, pTva.Ttc);

                            printTvases.Add(j);
                        }
                        else
                        {
                            printTvases[indx].Ht         += pTva.Ht;
                            printTvases[indx].Ttc        += pTva.Ttc;
                            printTvases[indx].TvaDecimal += pTva.TvaDecimal;
                        }
                    }
                }

                TextElements.Add(new PrintTextElement("*** TVA ***",
                                                      x, y + 10, w, h, new StringFormat {
                    Alignment = StringAlignment.Center
                }, new Font("Arial", 10, FontStyle.Bold)));
                y += h + 10;

                TextElements.Add(new PrintTextElement("  TAUX               HT              TVA                 TTC",
                                                      x, y, w, h, new StringFormat {
                    Alignment = StringAlignment.Near, LineAlignment = StringAlignment.Near
                }, new Font("Arial", 9)));
                y += h;

                foreach (var pTva in printTvases)
                {
                    TextElements.Add(new PrintTextElement(pTva.Tva.Value + "%",
                                                          x, y, 45, sizeLine, new StringFormat {
                        Alignment = StringAlignment.Far, LineAlignment = StringAlignment.Near
                    }));

                    TextElements.Add(new PrintTextElement(pTva.Ht.ToString("C"),
                                                          x + 50, y, 80, sizeLine, new StringFormat {
                        Alignment = StringAlignment.Far, LineAlignment = StringAlignment.Near
                    }));

                    TextElements.Add(new PrintTextElement(pTva.TvaDecimal.ToString("C"),
                                                          x + 130, y, 70, sizeLine, new StringFormat {
                        Alignment = StringAlignment.Far, LineAlignment = StringAlignment.Near
                    }));

                    TextElements.Add(new PrintTextElement(pTva.Ttc.ToString("C"),
                                                          x + 200, y, 80, sizeLine, new StringFormat {
                        Alignment = StringAlignment.Far, LineAlignment = StringAlignment.Near
                    }));

                    y    += h;
                    ght  += pTva.Ht;
                    gtva += pTva.TvaDecimal;
                    gttc += pTva.Ttc;
                }

                TextElements.Add(new PrintTextElement("TOTAL",
                                                      x, y, 50, sizeLine, new StringFormat {
                    Alignment = StringAlignment.Near, LineAlignment = StringAlignment.Near
                }, new Font("Arial", 9, FontStyle.Bold)));

                TextElements.Add(new PrintTextElement(ght.ToString("C"),
                                                      x + 50, y, 80, sizeLine, new StringFormat {
                    Alignment = StringAlignment.Far, LineAlignment = StringAlignment.Near
                }, new Font("Arial", 9, FontStyle.Bold)));

                TextElements.Add(new PrintTextElement(gtva.ToString("C"),
                                                      x + 130, y, 70, sizeLine, new StringFormat {
                    Alignment = StringAlignment.Far, LineAlignment = StringAlignment.Near
                }, new Font("Arial", 9, FontStyle.Bold)));

                TextElements.Add(new PrintTextElement(gttc.ToString("C"),
                                                      x + 200, y, 80, sizeLine, new StringFormat {
                    Alignment = StringAlignment.Far, LineAlignment = StringAlignment.Near
                }, new Font("Arial", 9, FontStyle.Bold)));
            }

            TextElements.Add(new PrintTextElement("STATISTIQUES",
                                                  x, y + 15, w, h, new StringFormat {
                Alignment = StringAlignment.Center, LineAlignment = StringAlignment.Near
            }, new Font("Arial", 12, FontStyle.Bold)));
            y += h + 15;

            TextElements.Add(new PrintTextElement("**********************************************************",
                                                  x, y, 300, h));
            y += h;

            TextElements.Add(new PrintTextElement("Description             QTY           Moyen             %",
                                                  x, y, w, h, new StringFormat {
                Alignment = StringAlignment.Near, LineAlignment = StringAlignment.Near
            }, new Font("Arial", 9)));
            y += h;

            var sumM = printTotals.Sum(l => l.Total);

            foreach (var printTotal in printTotals)
            {
                TextElements.Add(new PrintTextElement(printTotal.Name,
                                                      x, y, 60, h, new StringFormat {
                    Alignment = StringAlignment.Near
                }));

                TextElements.Add(new PrintTextElement(printTotal.Count.ToString(),
                                                      x + 60, y, 80, h, new StringFormat {
                    Alignment = StringAlignment.Far
                }));

                TextElements.Add(new PrintTextElement(printTotal.SrTotal.ToString("C"),
                                                      x + 140, y, 70, h, new StringFormat {
                    Alignment = StringAlignment.Far
                }));

                TextElements.Add(new PrintTextElement((sumM == 0 ? 0 : (printTotal.Total / sumM)).ToString("P"),
                                                      x + 210, y, 70, h, new StringFormat {
                    Alignment = StringAlignment.Far
                }));

                y += h;
            }

            if (closeTickets.Count > 0)
            {
                TextElements.Add(new PrintTextElement("TOTAL",
                                                      x, y, 60, h, new StringFormat {
                    Alignment = StringAlignment.Near
                }));

                TextElements.Add(new PrintTextElement(printTotals.Sum(l => l.Count).ToString(),
                                                      x + 60, y, 80, h, new StringFormat {
                    Alignment = StringAlignment.Far
                }));

                TextElements.Add(new PrintTextElement(Math.Round(printTotals.Sum(l => l.SrTotal), 2).ToString("C"),
                                                      x + 140, y, 70, h, new StringFormat {
                    Alignment = StringAlignment.Far
                }));

                TextElements.Add(new PrintTextElement(1.ToString("P"),
                                                      x + 210, y, 70, h, new StringFormat {
                    Alignment = StringAlignment.Far
                }));
            }
        }