コード例 #1
0
ファイル: Purchase.cs プロジェクト: fhoner/Kasse
 public Purchase(int purchaseId, Cart cart, User user, DateTime date)
 {
     this.PurchaseID = purchaseId;
     this.articles = cart;
     this.User = user;
     this.Date = date;
 }
コード例 #2
0
ファイル: Printer.cs プロジェクト: fhoner/Kasse
        public void PrintDepositReturnReceipt(string organization, Cart articles, User person)
        {
            if (profile == null)
                throw new Exception("Druck konnte nicht ausgeführt werden: Kein Profil angegeben.");
            
            ReceiptBuilder printedBy = new ReceiptBuilder();
            printedBy.Alignment = PrintAlignment.Center;
            printedBy.Font = FontType.B;
            printedBy.FeedLines(1);
            printedBy.Append("Gebucht auf " + person.Username);
            printedBy.Font = FontType.A;
            printedBy.Alignment = PrintAlignment.Right;
            printedBy.FeedLines(1);

            try
            {
                StringBuilder builder = new StringBuilder();

                builder.Append("\x1B\x40");
                builder.Append("\x1B\x61\x1");
                builder.Append("\x1B\x21\x0");
                builder.Append(organization);
                builder.Append("\x1B\x64\x1");
                builder.Append("\x1B\x21\x29");
                builder.Append(profile.Name + "\n\nPfandrückgabe\n\n"); // max 21 Zeichen!
                builder.Append("\n\xa");

                //Beginn Artikel
                foreach (ArticleCount ac in articles.Container)
                {
                    if (ac.Article.Deposit == Deposit.NullDeposit) 
                        continue;

                    builder.Append("\x1B\x21\x1");
                    builder.Append("\x1B\x61\x0"); //linksbündig
                    builder.Append("    " + ac.Count + "x " + string.Format("{0:0.00 EUR}", ac.Article.Deposit.Amount));
                    builder.Append("\x1B\x21\x0");
                    builder.Append("    " + ac.Article.Deposit.Name + "\xA");
                    builder.Append("\x1B\x61\x2"); //rechtsbündig
                    builder.Append(string.Format("{0:0.00 EUR}", ac.Article.Deposit.Amount * ac.Count) + "    ");
                    builder.Append("\x1B\x64\x1"); //drucken + LF 2x
                }

                //ende Artikel
                builder.Append("\x1B\x64\x1"); //drucken + LF 1x
                builder.Append("------------------------------------------");
                //Endsumme
                builder.Append("\x1B\x64\x1"); //drucken + LF 1x
                builder.Append("\x1B\x21\x29"); //Schriftgröße (Chr B, emph, d-width)
                builder.Append("SUMME         " + string.Format("{0:0.00 EUR}", articles.AmountWithDeposit - articles.Amount));
                //Ende Endsumme
                builder.Append("\x1B\x64\x2"); //drucken + LF 2x
                builder.Append(printedBy.ToString());
                builder.Append("\x1B\x61\x2"); //rechtsbündig
                builder.Append("\x1B\x21\x1"); //Schriftgröße (klein)
                builder.Append(DateTime.Now.ToShortDateString());
                builder.Append("\x1D\x56\x42");
                builder.Append("\x1B\x64\x05");     // line feed
                builder.Append("\x1D\x56\x1");      // partial cut


                Thread t = new Thread(delegate() { PrintThread(builder.ToString()); });
                t.Start();
            }
            catch (Exception ex)
            {
                WriteLog(ex.ToString());
                throw new Exception("Drucker nicht erreichbar.");
            }
        }
コード例 #3
0
ファイル: Printer.cs プロジェクト: fhoner/Kasse
        public void PrintReceipt(string organization, Cart articles)
        {
            if (profile == null)
                throw new Exception("Druck konnte nicht ausgeführt werden: Kein Profil angegeben.");

            try
            {
                StringBuilder builder = new StringBuilder();

                builder.Append("\x1B\x40");
                builder.Append("\x1B\x61\x1");
                builder.Append("\x1B\x21\x0");
                builder.Append(organization);
                builder.Append("\x1B\x64\x1");
                builder.Append("\x1B\x21\x29");
                builder.Append(profile.Name); // max 21 Zeichen!
                builder.Append("\n\xa");

                //Beginn Artikel
                foreach (ArticleCount ac in articles.Container)
                {
                    builder.Append("\x1B\x21\x1");
                    builder.Append("\x1B\x61\x0"); //linksbündig
                    builder.Append("    " + ac.Count + "x " + string.Format("{0:0.00 EUR}", ac.Article.PriceWithDeposit));
                    builder.Append("\x1B\x21\x0");
                    builder.Append("    " + ac.Article.Name + "\xA");
                    builder.Append("\x1B\x61\x2"); //rechtsbündig
                    builder.Append(string.Format("{0:0.00 EUR}", ac.Article.PriceWithDeposit * ac.Count) + "    ");
                    builder.Append("\x1B\x64\x1"); //drucken + LF 2x
                }                

                //ende Artikel
                builder.Append("\x1B\x64\x1"); //drucken + LF 1x
                builder.Append("------------------------------------------");
                //Endsumme
                builder.Append("\x1B\x64\x1"); //drucken + LF 1x
                builder.Append("\x1B\x21\x29"); //Schriftgröße (Chr B, emph, d-width)
                builder.Append("SUMME         " + string.Format("{0:0.00 EUR}", articles.AmountWithDeposit));
                //Ende Endsumme
                builder.Append("\x1B\x64\x2"); //drucken + LF 2x
                builder.Append("\x1B\x61\x2"); //rechtsbündig
                builder.Append("\x1B\x21\x1"); //Schriftgröße (klein)
                builder.Append(DateTime.Now.ToShortDateString());
                //builder.Append("\x1D\x56\x42");
                builder.Append("\x1B\x64\x05");     // line feed
                builder.Append("\x1D\x56\x1");      // partial cut


                Thread t = new Thread(delegate() { PrintThread(builder.ToString()); });
                t.Start();
            }
            catch (Exception ex)
            {
                WriteLog(ex.ToString());
                throw new Exception("Drucker nicht erreichbar.");
            }
        }
コード例 #4
0
ファイル: Printer.cs プロジェクト: fhoner/Kasse
        public void PrintBons(string organization, Cart articles, User person)
        {
            if (profile == null)
                throw new Exception("Druck konnte nicht ausgeführt werden: Kein Profil angegeben.");

            ReceiptBuilder printedBy = new ReceiptBuilder();
            printedBy.Alignment = PrintAlignment.Center;
            printedBy.Font = FontType.B;
            printedBy.FeedLines(1);
            printedBy.Append("Ausgestellt von " + person.Username);
            printedBy.Font = FontType.A;
            printedBy.Alignment = PrintAlignment.Right;

            try
            {
                StringBuilder builder = new StringBuilder();

                ReadOnlyCollection<Article> ro = articles.ToSeperatedArticleCollection();
                foreach (Article art in ro)
                {
                    if (!art.DoPrint) continue;

                    builder.Append("\x1B\x40");
                    builder.Append("\x1B\x61\x1");
                    builder.Append("\x1B\x21\x0");
                    builder.Append(organization);
                    builder.Append("\x1B\x64\x1");
                    builder.Append("\x1B\x21\x29");
                    builder.Append(profile.Name + "\xA");  // max 21 Zeichen!
                    builder.Append("\xa");
                    builder.Append("\x1B\x21\x38");
                    builder.Append("\x1B\x2D\x2");
                    builder.Append(art.Name + "\xA");
                    builder.Append("\x1B\x21\x0");
                    builder.Append(printedBy.ToString());
                    //builder.Append("\r\nAusgestellt von " + person.Username + "\r\n");
                    builder.Append("\x1B\x64\x2");
                    builder.Append("\x1B\x61\x2");
                    builder.Append(DateTime.Now.ToString("D") + "\xA");
                    builder.Append("\x1D\x56\x42\x0");
                    builder.Append("@@@@@");
                }


                Thread t = new Thread(delegate() { PrintThread(builder.ToString()); });
                t.Start();
            }
            catch (Exception ex)
            {
                WriteLog("Fehler beim Drucken der Bons: " + ex.Message);
                throw new Exception("Drucker nicht erreichbar.");
            }
        }
コード例 #5
0
 public SaleSuccessedEventArgs(Cart cart)
 {
     this.cart = cart;
 }
コード例 #6
0
ファイル: DepositReturnTemplate.cs プロジェクト: fhoner/Kasse
 public DepositReturnTemplate(Cart cart, User user, Profile profile)
 {
     this.cart = cart;
     this.user = user;
     this.profile = profile;
 }
コード例 #7
0
ファイル: DatabaseHandler.cs プロジェクト: fhoner/Kasse
        public static Cart GetUserCancellationSummary(Profile profile, User user)
        {
            Cart c = new Cart();

            try
            {
                SqlConnection connection = new SqlConnection(ConnectionString);
                SqlCommand cmd = new SqlCommand("SELECT [Artikel],[Anzahl] FROM [KASSE].[dbo].[vCancellationSummaryUserDetailed] WHERE Benutzer = '" + user.Username + "' AND Veranstaltung = '" + profile.Name + "' ORDER BY Summe DESC", connection);
                connection.Open();
                SqlDataReader reader = cmd.ExecuteReader();
                while (reader.Read())
                {
                    ArticleCount ac = new ArticleCount(GetArticle(profile.ProfileID, reader["Artikel"].ToString()), Convert.ToInt32(reader["Anzahl"]));
                    c.Add(ac);
                }
                connection.Close();
            }
            catch (Exception ex)
            {
                LogWriter.Write(ex, LOGFILE_NAME);
                string errmsg = "Fehler beim Abrufen der Benutzerstornos.\n\n";
                errmsg += "DatabaseHandler.GetUserCancellationSummary(profile, user): " + ex.Message;
                throw new Exception(errmsg);
            }

            return c;
        }
コード例 #8
0
ファイル: DatabaseHandler.cs プロジェクト: fhoner/Kasse
        public static ObservableCollection<Purchase> GetUserPurchases(Profile profile, User user)
        {
            _loadPurchasesUserCache = new List<User>();
            _loadPurchasesArticleCache = new List<Article>();

            ObservableCollection<Purchase> purchases = new ObservableCollection<Purchase>();
            GetPurchaseArticleCache = new List<Article>();
            GetPurchaseUserCache = new List<User>();

            int currentPurchaseId = -1;
            Purchase p = null;
            Cart c = null;
            User u = null;
            Article a = null;

            try
            {
                SqlConnection connection = new SqlConnection(ConnectionString);
                SqlCommand cmd = new SqlCommand("SELECT PurchaseID, UserID, ArticleID, ArticleCount, [Date] FROM vPurchaseProfile WHERE ProfileID = " + profile.ProfileID +
                    " AND UserID = " + user.UserID + " ORDER BY [Date] DESC", connection);
                connection.Open();
                SqlDataReader reader = cmd.ExecuteReader();
                while (reader.Read())
                {
                    int pid = Convert.ToInt32(reader["PurchaseID"]);
                    int artId = Convert.ToInt32(reader["ArticleID"]);

                    // article cache
                    a = (from art in _loadPurchasesArticleCache where art.ArticleID == artId select art as Article).FirstOrDefault();
                    if (a == null) { a = GetArticle(artId); _loadPurchasesArticleCache.Add(a); }

                    if (currentPurchaseId == -1 || pid != currentPurchaseId)    // create new purchase object
                    {
                        int userId = Convert.ToInt32(reader["UserID"]);

                        if (p != null) purchases.Add(p);

                        // user cache
                        u = (from usr in _loadPurchasesUserCache where usr.UserID == userId select usr as User).FirstOrDefault();
                        if (u == null) { u = GetUser(userId); _loadPurchasesUserCache.Add(u); }

                        currentPurchaseId = pid;
                        c = new Cart();
                        p = new Purchase(pid, c, u, Convert.ToDateTime(reader["Date"]));
                        c.Add(a, Convert.ToInt32(reader["ArticleCount"]));
                    }
                    else    // add article to purchase object
                    {
                        c.Add(a, Convert.ToInt32(reader["ArticleCount"]));
                    }
                }
                if (!purchases.Contains(p) && p != null) purchases.Add(p);
                connection.Close();
            }
            catch (Exception ex)
            {
                string errmsg = "Fehler beim Abrufen der Verkäufe.\n\n";
                errmsg += "DatabaseHandler.GetUserPurchases(profile, user): " + ex.ToString();
                throw new Exception(errmsg);
            }

            return purchases;
        }
コード例 #9
0
ファイル: Purchase.cs プロジェクト: fhoner/Kasse
 public PurchaseTemplate(Cart articles, User user)
 {
     this.Articles = articles;
     this.User = user;
 }