Esempio n. 1
0
        /// <summary>
        /// Liste der Kassenabschlüsse aktualisieren
        /// </summary>
        private void refreshCashClosureDataGrid()
        {
            IEnumerable <CashClosure>              cashClosures              = CashClosure.GetCashClosures();
            IEnumerable <CashClosureReport>        cashClosureReports        = CashClosureReport.GetCashClosureReports();
            IEnumerable <CashClosureReceipt>       cashClosureReceipts       = CashClosureReceipt.GetCashClosureReceipts();
            List <CashClosureManagerDataGridModel> cashClosureDataGridModels = new List <CashClosureManagerDataGridModel>();

            foreach (var cashClosure in cashClosures)
            {
                if (cashClosure == null)
                {
                    return;
                }

                try
                {
                    CashClosureReport  cashClosureReport  = cashClosureReports.Where(c => c.CashClosure.CashClosureID == cashClosure.CashClosureID).FirstOrDefault();
                    CashClosureReceipt cashClosureReceipt = cashClosureReceipts.Where(c => c.CashClosure.CashClosureID == cashClosure.CashClosureID).FirstOrDefault();

                    if (cashClosureReport == null || cashClosureReceipt == null)
                    {
                        return;
                    }

                    cashClosureDataGridModels.Add(new CashClosureManagerDataGridModel(cashClosure, cashClosureReport, cashClosureReceipt));
                }
                catch
                { }
            }
            CashClosureDataGrid.ItemsSource = cashClosureDataGridModels;
            CashClosureDataGrid.Items.Refresh();
        }
Esempio n. 2
0
        /// <summary>
        /// Druck der Kassenabrechnung
        /// </summary>
        /// <param name="cashClosureID">Kassenabschluss-ID</param>
        /// <param name="reprint">Nachdruck</param>
        public static void printCashClosureReceipt(int cashClosureID, bool reprint)
        {
            if (!LibreOffice.isLibreOfficeInstalled())
            {
                string warning = IniParser.GetSetting("ERRORMSG", "libre");
                MessageBoxEnhanced.Error(warning);
            }

            CashClosureReceipt receipt;

            try
            {
                IEnumerable <CashClosureReceipt> receipts = CashClosureReceipt.GetCashClosureReceipts(null, cashClosureID);
                receipt = receipts.FirstOrDefault();
            }
            catch
            {
                return;
            }

            string currentDir = System.IO.Directory.GetCurrentDirectory();
            string path       = IniParser.GetSetting("DOCUMENTS", "path").Replace("%PROGRAMPATH%", currentDir) + "\\" + IniParser.GetSetting("DOCUMENTS", "cashClosureReceipt");

            List <string> toReplace = new List <string>();
            List <string> replaceSt = new List <string>();

            toReplace.Add("<text:placeholder text:placeholder-type=\"text\">&lt;Kassenabschlussdatum&gt;</text:placeholder>");
            replaceSt.Add(SafeStringParser.safeParseToStr(receipt.CashClosure.ClosureDate));

            toReplace.Add("<text:placeholder text:placeholder-type=\"text\">&lt;Einnahmen&gt;</text:placeholder>");
            replaceSt.Add(SafeStringParser.safeParseToMoney(receipt.CashClosure.Revenue, true));

            toReplace.Add("<text:placeholder text:placeholder-type=\"text\">&lt;Ausgaben&gt;</text:placeholder>");
            replaceSt.Add(SafeStringParser.safeParseToMoney(receipt.CashClosure.Expense, true));

            toReplace.Add("<text:placeholder text:placeholder-type=\"text\">&lt;Saldo&gt;</text:placeholder>");
            replaceSt.Add(SafeStringParser.safeParseToMoney(receipt.CashClosure.Sum, true));

            toReplace.Add("<text:placeholder text:placeholder-type=\"text\">&lt;abgerechnet_durch&gt;</text:placeholder>");
            try
            {
                // Hole CashClosure Objekt direkt aus der DB, da die Referenz von CashClosureReceipt auf CashClosure manchmal nicht gültig ist(?)
                CashClosure cashClosure = CashClosure.GetCashClosures(cashClosureID).FirstOrDefault();
                string      username    = cashClosure.ClosureUserAccount.Username;
                replaceSt.Add(SafeStringParser.safeParseToStr(username));
            }
            catch
            {
                replaceSt.Add("-");
            }

            toReplace.Add("<text:placeholder text:placeholder-type=\"text\">&lt;Nachdruck&gt;</text:placeholder>");
            if (reprint)
            {
                replaceSt.Add(SafeStringParser.safeParseToStr(IniParser.GetSetting("DOCUMENTS", "reprint")));
            }
            else
            {
                replaceSt.Add("");
            }


            string tmpFilePath;
            bool   success = LibreOffice.replaceXMLstringInODT(path, toReplace, replaceSt, out tmpFilePath);

            if (success)
            {
                LibreOffice.openWithWriter(tmpFilePath, true, true);
            }
        }
Esempio n. 3
0
        /// <summary>
        /// Kassenabrechnung drucken
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void printCashClosureReceipt_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                int closureID = (int)(((Button)sender).CommandParameter);

                if (!(closureID >= 0))
                {
                    throw new Exception();
                }

                CashClosureReceipt closureReceipt = CashClosureReceipt.GetCashClosureReceipts().Where(c => c.CashClosure.CashClosureID == closureID).FirstOrDefault();
                CashClosure        cashClosure    = CashClosure.GetCashClosures(closureID).FirstOrDefault();
                DateTime           date           = cashClosure.ClosureDate;
                string             dateTime       = SafeStringParser.safeParseToStr(date, true);
                bool isReprint = closureReceipt.PrintDone;

                MessageBoxResult result;

                // Wenn bereits das Original gedruckt wurde, drucke automatisch den Nachdruck
                if (isReprint)
                {
                    result = MessageBoxEnhanced.Question(IniParser.GetSetting("CASHCLOSURE", "questionReceiptCopyPrint").Replace("{0}", dateTime));
                }
                else
                {
                    result = MessageBoxEnhanced.Question(IniParser.GetSetting("CASHCLOSURE", "questionReceiptOriginalPrint").Replace("{0}", dateTime));
                }

                // Wenn der Benutzer möchte, kann ausgedruckt werden
                if (result == MessageBoxResult.Yes)
                {
                    PrintForms.printCashClosureReceipt(closureID, isReprint);
                }
                else
                {
                    return;
                }

                // Wenn Nachdruck, dann ändere nichts an dem Datensatz
                if (isReprint)
                {
                    return;
                }

                // Damit die Nachfrage nicht sofort aufploppt
                Thread.Sleep(1000);

                MessageBoxResult success = MessageBoxEnhanced.Question(IniParser.GetSetting("CASHCLOSURE", "questionPrintReceiptSuccess"));

                if (success == MessageBoxResult.Yes)
                {
                    int      receiptID   = closureReceipt.CashClosureReceiptID;
                    bool     printDone   = true;
                    DateTime printDate   = DateTime.Now;
                    int      printUserID = UserSession.userAccountID;

                    CashClosureReceipt.Update(receiptID, closureID, printDone, printDate, printUserID);
                    refreshCashClosureDataGrid();
                }
            }
            catch
            {
                MessageBoxEnhanced.Error(IniParser.GetSetting("ERRORMSG", "printCashClosureReceipt"));
            }
        }