Пример #1
0
        /// <summary>
        /// Method to generate current sales report and print receipt X
        /// </summary>
        public void GenerateCurrentSalesReport()
        {
            EndOfSalesType = "X";
            SaveRegisterCashAmount();

            if (master)
            {
                CalculateSales(false, true);
                CalculateDelta();
                CollectEndOfSalesReceiptInformation();
                //Record End Of Sales Transaction in db
                Transaction.RecordEndOfDaySalesTransaction(Constants.DataFolderPath + Constants.CurrentDaySalesFileName,
                                                           _pos.LastCorteZNumber + 1, TransactionData.FirstReceiptNumber, TransactionData.LastReceiptNumber, TransactionData.TotalItemsSold,
                                                           TransactionData.PointsTotal, TransactionData.CashTotal, TransactionData.CardTotal, TransactionData.CheckTotal,
                                                           TransactionData.BankTotal, TransactionData.OtherTotal, TransactionData.TotalAmountSold, TransactionData.ReturnsCash,
                                                           TransactionData.ReturnsCard, _pos.ExchangeRate, DateTime.Now.ToString(CultureInfo.CurrentCulture));
                //Print Receipt
                PrintReceipt(ReceiptType.DailyInternal, true);
            }
            else
            {
                CalculateSales(false);
                CalculateDelta();
                CollectEndOfSalesReceiptInformation();
                //Record End Of Sales Transaction in db
                Transaction.RecordEndOfDaySalesTransaction(Constants.DataFolderPath + Constants.CurrentDaySalesFileName,
                                                           _pos.LastCorteZNumber + 1, TransactionData.FirstReceiptNumber, TransactionData.LastReceiptNumber, TransactionData.TotalItemsSold,
                                                           TransactionData.PointsTotal, TransactionData.CashTotal, TransactionData.CardTotal, TransactionData.CheckTotal,
                                                           TransactionData.BankTotal, TransactionData.OtherTotal, TransactionData.TotalAmountSold, TransactionData.ReturnsCash,
                                                           TransactionData.ReturnsCard, _pos.ExchangeRate, DateTime.Now.ToString(CultureInfo.CurrentCulture));
                //Print Receipt
                PrintReceipt(ReceiptType.DailyRegular, true);
            }

            //BackUp X Files
            Transaction.BackUpTransactionFile(Constants.DataFolderPath + Constants.TransactionsXFileName, false);
            //Transaction.BackUpTransactionMasterFile(Constants.DataFolderPath + Constants.TransactionsMasterFileName);
            Transaction.ClearTransactionFile(Constants.DataFolderPath + Constants.TransactionsXFileName);
            //Transaction.ClearTransactionMasterFile(Constants.DataFolderPath + Constants.TransactionsMasterFileName);
            // Inventory.InventoryBackUp(Constants.DataFolderPath + Constants.InventoryFileName);
            FileIO.FileBackUp(Constants.DataFolderPath + Constants.InventoryFileName, Constants.DataFolderPath + Constants.InventoryBackupFolderPath);
            //BackUp X Expenses files
            Expense.BackUpExpensesFile(Constants.DataFolderPath + Constants.ExpenseXFileName, false);
            Expense.ClearExpensesFile(Constants.DataFolderPath + Constants.ExpenseXFileName);
            //Backup X Payments Files
            Transaction.BackUpPaymentsFile(Constants.DataFolderPath + Constants.TransactionsPaymentsXFileName, false);
            Transaction.ClearPaymentsFile(Constants.DataFolderPath + Constants.TransactionsPaymentsXFileName);

            //Update POS Data
            _pos.LastReceiptNumber     = TransactionData.LastReceiptNumber;
            _pos.LastTransactionNumber = TransactionData.LastTransactionNumber;
            _pos.LastCashierAmountMxn  = RegisterNewCash;
            _pos.UpdateAllData();
            _pos.SaveDataTableToCsv();
        }
Пример #2
0
        /// <summary>
        /// Method to generate current sales report and print receipt X
        /// </summary>
        public void GenerateCurrentSalesReport()
        {
            EndOfSalesType = "X";
            SaveRegisterCashAmount();
            MainWindowViewModel.GetInstance(null, null).Log.Write(MainWindowViewModel.GetInstance(null, null).CurrentUser.Name,
                                                                  this.ToString() + " " + System.Reflection.MethodBase.GetCurrentMethod().Name, "Comienzo de corte X");
            if (master)
            {
                CalculateSales(false, MainWindowViewModel.SystemConfig.IntFlag);
                CalculateDelta();
                CollectEndOfSalesReceiptInformation();
                //Record End Of Sales Transaction in db
                Transaction.RecordEndOfDaySalesTransaction(Constants.DataFolderPath + Constants.CurrentDaySalesFileName,
                                                           Pos.LastCorteZNumber + 1, TransactionData.FirstReceiptNumber, TransactionData.LastReceiptNumber, TransactionData.TotalItemsSold,
                                                           TransactionData.PointsTotal, TransactionData.CashTotal, TransactionData.CardTotal, TransactionData.CheckTotal,
                                                           TransactionData.BankTotal, TransactionData.OtherTotal, TransactionData.TotalAmountSold, TransactionData.ReturnsCash,
                                                           TransactionData.ReturnsCard, Pos.ExchangeRate, DateTime.Now.ToString(CultureInfo.CurrentCulture));
                //Print Receipt
                PrintReceipt(ReceiptType.DailyInternal, true);
            }
            else
            {
                CalculateSales(false);
                CalculateDelta();
                CollectEndOfSalesReceiptInformation();
                //Record End Of Sales Transaction in db
                Transaction.RecordEndOfDaySalesTransaction(Constants.DataFolderPath + Constants.CurrentDaySalesFileName,
                                                           Pos.LastCorteZNumber + 1, TransactionData.FirstReceiptNumber, TransactionData.LastReceiptNumber, TransactionData.TotalItemsSold,
                                                           TransactionData.PointsTotal, TransactionData.CashTotal, TransactionData.CardTotal, TransactionData.CheckTotal,
                                                           TransactionData.BankTotal, TransactionData.OtherTotal, TransactionData.TotalAmountSold, TransactionData.ReturnsCash,
                                                           TransactionData.ReturnsCard, Pos.ExchangeRate, DateTime.Now.ToString(CultureInfo.CurrentCulture));
                //Print Receipt
                PrintReceipt(ReceiptType.DailyRegular, true);
            }

            MainWindowViewModel.GetInstance(null, null).Log.Write(MainWindowViewModel.GetInstance(null, null).CurrentUser.Name,
                                                                  this.ToString() + " " + System.Reflection.MethodBase.GetCurrentMethod().Name, "Corte X realizado y recibo impreso");

            //Email Receipts if option is enabled
            if (MainWindowViewModel.SystemConfig.EmailTransactionsFileAfterEndSalesReport)
            {
                try
                {
                    //TODO: Make it generic based on POS data later
                    var toName         = Pos.GetInstance(Constants.DataFolderPath + Constants.PosDataFileName).BusinessName;
                    var toEmailAddress = Pos.GetInstance(Constants.DataFolderPath + Constants.PosDataFileName)
                                         .EmailReports;
                    Thread.CurrentThread.CurrentCulture = new CultureInfo("es-MX");
                    var subject = "Reporte " + DateTime.Now.ToShortDateString() + " " +
                                  Pos.GetInstance(Constants.DataFolderPath + Constants.PosDataFileName).BusinessName;
                    var body = "Reporte X del dia " + DateTime.Now.ToString("g") + "realizado por " +
                               MainWindowViewModel.GetInstance(null, null).CurrentUser.Name +
                               " para " + Pos.GetInstance(Constants.DataFolderPath + Constants.PosDataFileName)
                               .BusinessName + " desde " +
                               Pos.GetInstance(Constants.DataFolderPath + Constants.PosDataFileName)
                               .FiscalStreetAddress;
                    Thread.CurrentThread.CurrentCulture = new CultureInfo("es-MX");
                    //Files to be emailed
                    var transactionsFile = Constants.DataFolderPath + Constants.TransactionsXFileName;
                    var expensesFile     = Constants.DataFolderPath + Constants.ExpenseXFileName;
                    var paymentsFile     = Constants.DataFolderPath + Constants.TransactionsPaymentsXFileName;

                    var attachments = new List <string>()
                    {
                        transactionsFile,
                        expensesFile,
                        paymentsFile
                    };

                    var dirPath = Constants.DataFolderPath + Constants.EndOfDaySalesBackupFolderPath;
                    dirPath = dirPath.TrimEnd('\\');
                    var directory    = new DirectoryInfo(dirPath);
                    var searchString = "*" + DateTime.Now.Day.ToString("00") + DateTime.Now.Month.ToString("00") +
                                       DateTime.Now.Year.ToString("0000") + "*";

                    var receipts = directory.GetFiles(searchString);

                    foreach (var receipt in receipts)
                    {
                        attachments.Add(receipt.FullName);
                    }

                    var fromEmailAddress = Pos.GetInstance(Constants.DataFolderPath + Constants.PosDataFileName)
                                           .EmailSender;
                    var fromPassword = Pos.GetInstance(Constants.DataFolderPath + Constants.PosDataFileName)
                                       .EmailSenderPassword;

                    if (!Notification.SendNotificationMultipleAttachments(toName, toEmailAddress, subject, body,
                                                                          attachments, fromEmailAddress, fromPassword))
                    {
                        MainWindowViewModel.GetInstance(null, null).Code      = "Error al enviar reportes";
                        MainWindowViewModel.GetInstance(null, null).CodeColor = Constants.ColorCodeError;
                        MainWindowViewModel.GetInstance(null, null).Log.Write(MainWindowViewModel.GetInstance(null, null).CurrentUser.Name,
                                                                              this.ToString() + " " + System.Reflection.MethodBase.GetCurrentMethod().Name, "Error al enviar corte Z por correo");
                    }
                    attachments.Clear();
                }
                catch (Exception e)
                {
                    MainWindowViewModel.GetInstance(null, null).Log.Write(MainWindowViewModel.GetInstance(null, null).CurrentUser.Name,
                                                                          this.ToString() + MethodBase.GetCurrentMethod().Name, e.ToString());
                    MainWindowViewModel.GetInstance(null, null).Code      = "Error al leer directorio";
                    MainWindowViewModel.GetInstance(null, null).CodeColor = Constants.ColorCodeError;
                    MainWindowViewModel.GetInstance(null, null).Log.Write(MainWindowViewModel.GetInstance(null, null).CurrentUser.Name,
                                                                          this.ToString() + " " + System.Reflection.MethodBase.GetCurrentMethod().Name, "Error al enviar corte Z por correo");
                }
            }

            //BackUp X Files
            Transaction.BackUpTransactionFile(Constants.DataFolderPath + Constants.TransactionsXFileName, false);
            //Transaction.BackUpTransactionMasterFile(Constants.DataFolderPath + Constants.TransactionsMasterFileName);
            Transaction.ClearTransactionFile(Constants.DataFolderPath + Constants.TransactionsXFileName);
            //Transaction.ClearTransactionMasterFile(Constants.DataFolderPath + Constants.TransactionsMasterFileName);
            // Inventory.InventoryBackUp(Constants.DataFolderPath + Constants.InventoryFileName);
            //if (MainWindowViewModel.SystemConfig.LocalInventory)
            //{
            //    FileIO.FileBackUp(Constants.DataFolderPath + Constants.InventoryFileName, Constants.DataFolderPath + Constants.InventoryBackupFolderPath);
            //}
            //else if (MainWindowViewModel.SystemConfig.CloudInventory)
            //{
            //    Thread.CurrentThread.CurrentCulture = new CultureInfo("es-MX");
            //    var currentTime = DateTime.Now;
            //    var fileName = Path.GetFileNameWithoutExtension("Inventario");

            //    //Load inventory csv file and create a backup copy
            //    var inventoryFileBackUpCopyName = Constants.DataFolderPath + Constants.InventoryBackupFolderPath
            //                                                               + fileName + currentTime.Day.ToString("00") + currentTime.Month.ToString("00") +
            //                                                               currentTime.Year.ToString("0000") + currentTime.Hour.ToString("00") + currentTime.Minute.ToString("00") +
            //                                                               currentTime.Second.ToString("00") + ".csv";
            //    var dataTable = MainWindowViewModel.MySqlInventoryDb.SelectAll(MainWindowViewModel.InventoryInstance.DbColumns);
            //    Utilities.SaveDataTableToCsv(inventoryFileBackUpCopyName, dataTable);
            //}
            //BackUp X Expenses files
            Expense.BackUpExpensesFile(Constants.DataFolderPath + Constants.ExpenseXFileName, false);
            Expense.ClearExpensesFile(Constants.DataFolderPath + Constants.ExpenseXFileName);
            //Backup X Payments Files
            Transaction.BackUpPaymentsFile(Constants.DataFolderPath + Constants.TransactionsPaymentsXFileName, false);
            Transaction.ClearPaymentsFile(Constants.DataFolderPath + Constants.TransactionsPaymentsXFileName);

            MainWindowViewModel.GetInstance(null, null).Log.Write(MainWindowViewModel.GetInstance(null, null).CurrentUser.Name,
                                                                  this.ToString() + " " + System.Reflection.MethodBase.GetCurrentMethod().Name, "Archivos de gastos y transacciones X respaldados");

            //Update POS Data
            Pos.LastReceiptNumber     = TransactionData.LastReceiptNumber;
            Pos.LastTransactionNumber = TransactionData.LastTransactionNumber;
            Pos.LastCashierAmountMxn  = RegisterNewCash;
            Pos.UpdateAllData();
            Pos.SaveDataTableToCsv();
        }
Пример #3
0
        /// <summary>
        /// Method to calculate the sales, record transaction, print receipt, and backup files
        /// </summary>
        void GenerateEndOfDaySalesReport()
        {
            EndOfSalesType = "Z";
            _pos.GetNextCorteZNumber();
            //Calculate sales and print receipts
            if (master)
            {
                //Regular
                CalculateSales(true);
                //Record End Of Sales Transaction in db
                Transaction.RecordEndOfDaySalesTransaction(Constants.DataFolderPath + Constants.EndOfDaySalesFileName,
                                                           _pos.LastCorteZNumber, TransactionData.FirstReceiptNumber, TransactionData.LastReceiptNumber, TransactionData.TotalItemsSold,
                                                           TransactionData.PointsTotal, TransactionData.CashTotal, TransactionData.CardTotal, TransactionData.CheckTotal,
                                                           TransactionData.BankTotal, TransactionData.OtherTotal, TransactionData.TotalAmountSold, TransactionData.ReturnsCash,
                                                           TransactionData.ReturnsCard, _pos.ExchangeRate, DateTime.Now.ToString(CultureInfo.CurrentCulture));
                //Print Receipt
                PrintReceipt(ReceiptType.DailyRegular, false);

                CalculateSales(true, true);
                //Record End Of Sales Transaction in db
                Transaction.RecordEndOfDaySalesTransaction(Constants.DataFolderPath + Constants.MasterEndOfDaySalesFileName,
                                                           _pos.LastCorteZNumber, TransactionData.FirstReceiptNumber, TransactionData.LastReceiptNumber, TransactionData.TotalItemsSold,
                                                           TransactionData.PointsTotal, TransactionData.CashTotal, TransactionData.CardTotal, TransactionData.CheckTotal,
                                                           TransactionData.BankTotal, TransactionData.OtherTotal, TransactionData.TotalAmountSold, TransactionData.ReturnsCash,
                                                           TransactionData.ReturnsCard, _pos.ExchangeRate, DateTime.Now.ToString(CultureInfo.CurrentCulture));
                //Print Receipt
                PrintReceipt(ReceiptType.DailyInternal, false);
            }
            else
            {
                CalculateSales(true);
                CalculateDelta();
                CollectEndOfSalesReceiptInformation();
                //Record End Of Sales Transaction in db
                Transaction.RecordEndOfDaySalesTransaction(Constants.DataFolderPath + Constants.EndOfDaySalesFileName,
                                                           _pos.LastCorteZNumber, TransactionData.FirstReceiptNumber, TransactionData.LastReceiptNumber, TransactionData.TotalItemsSold,
                                                           TransactionData.PointsTotal, TransactionData.CashTotal, TransactionData.CardTotal, TransactionData.CheckTotal,
                                                           TransactionData.BankTotal, TransactionData.OtherTotal, TransactionData.TotalAmountSold, TransactionData.ReturnsCash,
                                                           TransactionData.ReturnsCard, _pos.ExchangeRate, DateTime.Now.ToString(CultureInfo.CurrentCulture));
                //Print Full Detailed Receipt
                PrintReceipt(ReceiptType.DailyRegular, false);
            }

            //BackUp Z Files and Clear
            Transaction.BackUpTransactionFile(Constants.DataFolderPath + Constants.TransactionsZFileName, true);
            //Transaction.BackUpTransactionMasterFile(Constants.DataFolderPath + Constants.TransactionsMasterFileName);
            Transaction.ClearTransactionFile(Constants.DataFolderPath + Constants.TransactionsZFileName);
            //Transaction.ClearTransactionMasterFile(Constants.DataFolderPath + Constants.TransactionsMasterFileName);
            FileIO.FileBackUp(Constants.DataFolderPath + Constants.InventoryFileName, Constants.DataFolderPath + Constants.InventoryBackupFolderPath);
            //Inventory.InventoryBackUp(Constants.DataFolderPath + Constants.InventoryFileName);
            //BackUp Z Expenses files
            Expense.BackUpExpensesFile(Constants.DataFolderPath + Constants.ExpenseZFileName, true);
            Expense.ClearExpensesFile(Constants.DataFolderPath + Constants.ExpenseZFileName);
            //Backup Z Paymenets Files
            Transaction.BackUpPaymentsFile(Constants.DataFolderPath + Constants.TransactionsPaymentsZFileName, true);
            Transaction.ClearPaymentsFile(Constants.DataFolderPath + Constants.TransactionsPaymentsZFileName);

            //Update POS Data
            //           _pos.LastReceiptNumber = TransactionData.LastReceiptNumber;
            //           _pos.LastTransactionNumber = TransactionData.LastTransactionNumber;
            //          _pos.LastCashierAmountMxn = RegisterNewCash;
            //        _pos.UpdateAllData();
            //      _pos.SaveDataTableToCsv();
        }