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