Exemplo 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();
        }
Exemplo n.º 2
0
        /// <summary>
        /// Druck des Kassenabschlussberichts
        /// </summary>
        /// <param name="cashClosureID">Kassenabschluss-ID</param>
        /// <param name="reprint">Nachdruck</param>
        public static void printCashClosureReport(int cashClosureID, bool reprint)
        {
            if (!LibreOffice.isLibreOfficeInstalled())
            {
                string warning = IniParser.GetSetting("ERRORMSG", "libre");
                MessageBoxEnhanced.Error(warning);
            }

            CashClosureReport report;

            try
            {
                var reports = CashClosureReport.GetCashClosureReports(null, cashClosureID);
                report = reports.FirstOrDefault();
            }
            catch
            {
                return;
            }

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

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

            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("");
            }

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

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

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

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

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

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

            if (success)
            {
                LibreOffice.openWithWriter(tmpFilePath, true, true);
            }
        }
Exemplo n.º 3
0
        /// <summary>
        /// Füllt die Felder aus
        /// Benötigt Kassenabschluss-Instanz und die zugehörigen Kassenabrechnung-Instanz und Kassenabschlussbeleg-Instanz
        /// </summary>
        /// <param name="cashClosure">Kassenabschluss-Instanz</param>
        /// <param name="cashClosureReport">Kassenabschlussbeleg-Instanz</param>
        /// <param name="cashClosureReceipt">Kassenabrechnung-Instanz</param>
        public CashClosureManagerDataGridModel(CashClosure cashClosure, CashClosureReport cashClosureReport, CashClosureReceipt cashClosureReceipt)
        {
            this.cashClosure        = cashClosure;
            this.cashClosureReport  = cashClosureReport;
            this.cashClosureReceipt = cashClosureReceipt;

            this.cashClosureID        = cashClosure.CashClosureID;
            this.closureDate          = SafeStringParser.safeParseToStr(cashClosure.ClosureDate, true);
            this.comment              = SafeStringParser.safeParseToStr(cashClosure.Comment);
            this.revenues             = SafeStringParser.safeParseToMoney(cashClosure.Revenue, true);
            this.expenses             = SafeStringParser.safeParseToMoney(cashClosure.Expense, true);
            this.sum                  = SafeStringParser.safeParseToMoney(cashClosure.Sum, true);
            this.reportPrinted        = cashClosureReport.PrintDone;
            this.reportPrintDate      = SafeStringParser.safeParseToStr(cashClosureReport.PrintDate, true);
            this.reportDone           = cashClosureReport.Done;
            this.reportDoneBoxEnabled = !(cashClosureReport.Done);
            this.reportDoneDate       = SafeStringParser.safeParseToStr(cashClosureReport.DoneDate, true);
            this.receiptPrinted       = cashClosureReceipt.PrintDone;
            this.receiptPrintedDate   = SafeStringParser.safeParseToStr(cashClosureReceipt.PrintDate, true);

            if (cashClosure.ClosureUserAccount != null)
            {
                this.closureUser = SafeStringParser.safeParseToStr(cashClosure.ClosureUserAccount.Username);
            }
            else
            {
                this.closureUser = "";
            }

            if (cashClosureReport.PrintUserAccount != null)
            {
                this.reportPrintUser = SafeStringParser.safeParseToStr(cashClosureReport.PrintUserAccount.Username);
            }
            else
            {
                this.reportPrintUser = "";
            }

            if (cashClosureReport.DoneUserAccount != null)
            {
                this.reportDoneUser = SafeStringParser.safeParseToStr(cashClosureReport.DoneUserAccount.Username);
            }
            else
            {
                this.reportDoneUser = "";
            }

            if (cashClosureReceipt.PrintUserAccount != null)
            {
                this.receiptPrintedUser = SafeStringParser.safeParseToStr(cashClosureReceipt.PrintUserAccount.Username);
            }
            else
            {
                this.receiptPrintedUser = "";
            }
        }
Exemplo n.º 4
0
        /// <summary>
        /// Kassenabschlussbericht als erledigt markieren
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void ReportDone_Checked(object sender, RoutedEventArgs e)
        {
            try
            {
                CheckBox cbSender  = (CheckBox)sender;
                int      closureID = (int)(cbSender).CommandParameter;

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

                CashClosureReport closureReport = CashClosureReport.GetCashClosureReports().Where(c => c.CashClosure.CashClosureID == closureID).FirstOrDefault();

                if (!closureReport.PrintDone)
                {
                    cbSender.IsChecked = false;
                    MessageBoxEnhanced.Error(IniParser.GetSetting("ERRORMSG", "cashClosureReportDoneNotPrinted"));
                    return;
                }

                CashClosure cashClosure = CashClosure.GetCashClosures(closureID).FirstOrDefault();
                DateTime    date        = cashClosure.ClosureDate;
                string      dateTime    = SafeStringParser.safeParseToStr(date, true);
                bool        isReprint   = closureReport.PrintDone;

                MessageBoxResult result = MessageBoxEnhanced.Question(IniParser.GetSetting("CASHCLOSURE", "questionMarkDone").Replace("{0}", dateTime));

                if (result == MessageBoxResult.Yes)
                {
                    int      reportID       = closureReport.CashClosureReportID;
                    bool     printDone      = closureReport.PrintDone;
                    DateTime printDate      = (DateTime)closureReport.PrintDate;
                    int      printUserID    = closureReport.PrintUserAccount.UserAccountID;
                    bool     reportDone     = true;
                    DateTime?reportDoneDate = DateTime.Now;
                    int      reportDoneUser = UserSession.userAccountID;

                    CashClosureReport.Update(reportID, closureID, printDone, printDate, printUserID, reportDone, reportDoneDate, reportDoneUser);
                    refreshCashClosureDataGrid();
                }
            }
            catch
            {
                MessageBoxEnhanced.Error(IniParser.GetSetting("ERRORMSG", "doneCashClosureReport"));
            }
        }
Exemplo n.º 5
0
        /// <summary>
        /// Kassenabschluss durchführen
        /// </summary>
        /// <param name="btn">sendender Button</param>
        private void submitCashClosure(Button btn)
        {
            MessageBoxResult result = MessageBoxEnhanced.Warning(IniParser.GetSetting("ACCOUNTING", "cashClosureWarning"));

            if (result == MessageBoxResult.No)
            {
                return;
            }

            string comment = tbComment.Text;

            int cashClosureID                   = -1;
            int cashClosureReportID             = -1;
            int cashClosureReceiptID            = -1;
            CashClosureHelper cashClosureHelper = new CashClosureHelper();

            try
            {
                // Lege CashClosure, CashClosureReport und CashClosureReceipt an
                cashClosureID        = CashClosure.Add(UserSession.userAccountID, DateTime.Now, this.revenuesTotal, this.expensesTotal, comment);
                cashClosureReportID  = CashClosureReport.Add(cashClosureID, false, null, false, null, null, null);
                cashClosureReceiptID = CashClosureReceipt.Add(cashClosureID, false, null, null);

                // Setze für Kassenabschluss-Konten NewBalance als LatestBalance
                foreach (var accModel in this.accountModels)
                {
                    double latestBalance = accModel.newBalanceDOUBLE;
                    Account.Update(accModel.account.AccountID, accModel.account.Name, accModel.account.Number, accModel.account.ZeroPeriodEnum, accModel.account.IsOfficial, accModel.account.Description, latestBalance, accModel.account.IsCapital, accModel.account.IsFixed);
                }

                // Setze für alle anderen Konten den LatestBalance auf 0 bei Überschreitung des Nullzeitraums
                List <Account> noClosureAccounts = Account.GetAccounts().Where(a => !(a.IsOfficial && a.IsCapital)).ToList();
                foreach (var account in noClosureAccounts)
                {
                    double latestBalance;
                    if (CashClosureHelper.exceededZeroPeriod(account.ZeroPeriodEnum))
                    {
                        latestBalance = 0.0;
                    }
                    else
                    {
                        latestBalance = account.LatestBalance;
                    }
                    Account.Update(account.AccountID, account.Name, account.Number, account.ZeroPeriodEnum, account.IsOfficial, account.Description, latestBalance, account.IsCapital, account.IsFixed);
                }

                MainWindow mainWindow = Application.Current.MainWindow as MainWindow;
                Type       pageType   = typeof(pCashClosureManager);
                mainWindow.switchPage(IniParser.GetSetting("ACCOUNTING", "cashClosure"), pageType);
            }
            catch
            {
                try
                {
                    if (cashClosureID != -1)
                    {
                        CashClosure.Delete(cashClosureID);
                    }
                    if (cashClosureReportID != -1)
                    {
                        CashClosureReport.Delete(cashClosureReportID);
                    }
                    if (cashClosureReceiptID != 1)
                    {
                        CashClosureReceipt.Delete(cashClosureReceiptID);
                    }
                }
                catch
                {
                    MessageBoxEnhanced.Error(IniParser.GetSetting("ERRORMSG", "newCashClosure"));
                }
                MessageBoxEnhanced.Error(IniParser.GetSetting("ERRORMSG", "newCashClosure"));
            }
        }
Exemplo n.º 6
0
        /// <summary>
        /// Kassenabschlussbericht drucken
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void printCashClosureReport_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                int closureID = (int)(((Button)sender).CommandParameter);

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

                CashClosureReport closureReport = CashClosureReport.GetCashClosureReports().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 = closureReport.PrintDone;

                MessageBoxResult result;

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

                // Wenn der Benutzer möchte, kann ausgedruckt werden
                if (result == MessageBoxResult.Yes)
                {
                    PrintForms.printCashClosureReport(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", "questionPrintReportSuccess"));

                if (success == MessageBoxResult.Yes)
                {
                    int      reportID       = closureReport.CashClosureReportID;
                    bool     printDone      = true;
                    DateTime printDate      = DateTime.Now;
                    int      printUserID    = UserSession.userAccountID;
                    bool     reportDone     = closureReport.Done;
                    DateTime?reportDoneDate = closureReport.DoneDate;

                    int?reportDoneUser;
                    if (closureReport.DoneUserAccount != null)
                    {
                        reportDoneUser = closureReport.DoneUserAccount.UserAccountID;
                    }
                    else
                    {
                        reportDoneUser = null;
                    }

                    CashClosureReport.Update(reportID, closureID, printDone, printDate, printUserID, reportDone, reportDoneDate, reportDoneUser);
                    refreshCashClosureDataGrid();
                }
            }
            catch
            {
                MessageBoxEnhanced.Error(IniParser.GetSetting("ERRORMSG", "printCashClosureReport"));
            }
        }