diff --git a/AdvertsingProfitControl/APCDatabase.accdb b/AdvertsingProfitControl/APCDatabase.accdb index 763f584..b12af87 100644 Binary files a/AdvertsingProfitControl/APCDatabase.accdb and b/AdvertsingProfitControl/APCDatabase.accdb differ diff --git a/AdvertsingProfitControl/DatabaseReader.cs b/AdvertsingProfitControl/DatabaseReader.cs index a1101c9..ed5d404 100644 --- a/AdvertsingProfitControl/DatabaseReader.cs +++ b/AdvertsingProfitControl/DatabaseReader.cs @@ -466,6 +466,40 @@ namespace AdvertsingProfitControl return comments; } + /// + /// Created for the new modify record form, returns the ID of the comment being grabbed. + /// + /// + /// + /// + public List RetrieveComments(int dateId, string connectionString) + { + var dataTable = new DataTable(); + var oleDbCommand = new OleDbCommand + { + CommandText = "SELECT Comment.ID, Comment.Comment FROM Comment WHERE Comment.FK_DateID = ?" + }; + oleDbCommand.Parameters.AddWithValue("DateID", dateId); + var connection = new OleDbConnection(connectionString); + oleDbCommand.Connection = connection; + using (connection) + { + using (oleDbCommand) + { + connection.Open(); + using (var dataAdapter = new OleDbDataAdapter(oleDbCommand)) + { + dataAdapter.Fill(dataTable); + } + } + } + var comments = new List(); + if (dataTable.Rows.Count != 1) return comments; + comments.Add(dataTable.Rows[0].ItemArray[0].ToString()); + comments.Add(dataTable.Rows[0].ItemArray[1].ToString()); + return comments; + } + #endregion #region Ad Special Functions @@ -781,7 +815,7 @@ namespace AdvertsingProfitControl var dataTable = new DataTable(); var oleDbCommand = new OleDbCommand() { - CommandText = "SELECT Supplier.SupplierName, Invoice.InvoiceNumber, Invoice.InvoiceDate, Invoice.InvoiceNetAmountAtCost, Invoice.InvoiceNetAmount, Invoice.InvoiceNote FROM (Supplier INNER JOIN Invoice ON Supplier.ID = Invoice.FK_Supplier) WHERE FK_DateID = ?" + CommandText = "SELECT Invoice.ID, Invoice.InvoiceDate, Supplier.SupplierName, Invoice.InvoiceNumber, Invoice.InvoiceNetAmountAtCost, Invoice.InvoiceNetAmount, Invoice.InvoiceNote FROM (Supplier INNER JOIN Invoice ON Supplier.ID = Invoice.FK_Supplier) WHERE FK_DateID = ?" }; oleDbCommand.Parameters.AddWithValue("DateID", dateId); var connection = new OleDbConnection(connectionString); @@ -806,7 +840,7 @@ namespace AdvertsingProfitControl var dataTable = new DataTable(); var oleDbCommand = new OleDbCommand() { - CommandText = "SELECT WeeklySales.Sunday, WeeklySales.Monday, WeeklySales.Tuesday, WeeklySales.Wednesday, WeeklySales.Thursday, WeeklySales.Friday, WeeklySales.Saturday, WeeklySales.TotalSales FROM WeeklySales WHERE FK_DateID = ?" + CommandText = "SELECT WeeklySales.ID, WeeklySales.Sunday, WeeklySales.Monday, WeeklySales.Tuesday, WeeklySales.Wednesday, WeeklySales.Thursday, WeeklySales.Friday, WeeklySales.Saturday, WeeklySales.TotalSales FROM WeeklySales WHERE FK_DateID = ?" }; oleDbCommand.Parameters.AddWithValue("DateID", dateId); var connection = new OleDbConnection(connectionString); @@ -829,9 +863,9 @@ namespace AdvertsingProfitControl public DataTable ReturnTaxableFromDateId(string dateId, string connectionString) { var dataTable = new DataTable(); - var oleDbCommand = new OleDbCommand() + var oleDbCommand = new OleDbCommand { - CommandText = "SELECT Taxable.Sunday, Taxable.Monday, Taxable.Tuesday, Taxable.Wednesday, Taxable.Thursday, Taxable.Friday, Taxable.Saturday, Taxable.Total FROM Taxable WHERE FK_DateID = ?" + CommandText = "SELECT Taxable.ID, Taxable.Sunday, Taxable.Monday, Taxable.Tuesday, Taxable.Wednesday, Taxable.Thursday, Taxable.Friday, Taxable.Saturday, Taxable.Total FROM Taxable WHERE FK_DateID = ?" }; oleDbCommand.Parameters.AddWithValue("DateID", dateId); var connection = new OleDbConnection(connectionString); @@ -851,6 +885,32 @@ namespace AdvertsingProfitControl return dataTable; } + public DataTable ReturnCostAnalysis(int dateId, string connectionString) + { + var dataTable = new DataTable(); + var oleDbCommand = new OleDbCommand + { + CommandText = "SELECT CostOfSalesAnalysis.ID, CostOfSalesAnalysis.SalesPerManHour, CostOfSalesAnalysis.SalaryPercentage, CostOfSalesAnalysis.SalaryDollars, CostOfSalesAnalysis.Supplies FROM CostOfSalesAnalysis WHERE FK_DateID = ?" + }; + oleDbCommand.Parameters.AddWithValue("DateID", dateId); + var connection = new OleDbConnection(connectionString); + oleDbCommand.Connection = connection; + + using (connection) + { + using (oleDbCommand) + { + connection.Open(); + using (var dataAdapter = new OleDbDataAdapter(oleDbCommand)) + { + dataAdapter.Fill(dataTable); + } + } + } + + return dataTable; + } + public DataTable ReturnWeekEndingTable(string connectionString) { var dataTable = new DataTable(); diff --git a/AdvertsingProfitControl/FrmMain.cs b/AdvertsingProfitControl/FrmMain.cs index 5d674fd..100864e 100644 --- a/AdvertsingProfitControl/FrmMain.cs +++ b/AdvertsingProfitControl/FrmMain.cs @@ -416,8 +416,8 @@ namespace AdvertsingProfitControl _gCostOfSalesCalculatedTotal = costOfSalesSum; object[] invoiceTotalRow = new object[invoiceTable.Columns.Count]; - invoiceTotalRow[0] = "Total Purchases"; - invoiceTotalRow[4] = costOfSalesSum; + invoiceTotalRow[2] = "Total Purchases"; + invoiceTotalRow[5] = costOfSalesSum; invoiceTable.Rows.Add(invoiceTotalRow); return invoiceTable; diff --git a/AdvertsingProfitControl/NewModifyRecord.cs b/AdvertsingProfitControl/NewModifyRecord.cs index abe57ea..5a61e59 100644 --- a/AdvertsingProfitControl/NewModifyRecord.cs +++ b/AdvertsingProfitControl/NewModifyRecord.cs @@ -95,7 +95,6 @@ namespace AdvertsingProfitControl actualSalesDataGridView.EditingControlShowing += DisplayAutoCompleteOnEditingControlShowing; //After all events have been set, construct the DataGridVeiws for use. ConstructApcDataGridViews(); - LoadDate(date); //Set-up events for the Invoice table. invoicesDataGridView.CellEnter += StoreBeginningCellValue; //Validate that the row the user is trying to leave is legal (has at least an ad item entered) and prevent the user from leaving the row is its not. @@ -155,6 +154,7 @@ namespace AdvertsingProfitControl salaryDollarsTextBox.Validating += ValidateCostAnalysisValues; suppliesTextBox.Enter += StoreBeginningTextBoxValue; suppliesTextBox.Validating += ValidateCostAnalysisValues; + LoadDate(date); } public sealed override string Text @@ -163,16 +163,6 @@ namespace AdvertsingProfitControl set { base.Text = value; } } - //private void RestoreActiveDate(object sender, EventArgs e) - //{ - // var calendar = (MonthCalendar) sender; - // if (calendar.SelectionStart == _currentActiveDate || calendar.BoldedDates.Contains(calendar.SelectionStart)) return; - // MessageBox.Show(@"This date doesn't appear to be in the database.", @"Date not Found"); - // weekEndingCalendar.DateChanged -= ValidateDateChanged; - // weekEndingCalendar.SelectionStart = _currentActiveDate; - // weekEndingCalendar.DateChanged += ValidateDateChanged; - //} - #region Global Event Handlers /// @@ -1909,6 +1899,7 @@ namespace AdvertsingProfitControl #region Weekly Sales Events /// + /// Event Used: Validating /// Validates the contents of the weekly sales text boxes and adds up the total. /// /// @@ -1937,6 +1928,11 @@ namespace AdvertsingProfitControl textBox.Text = ""; } } + if (isWeeklySalesDirtyCheckBox.Tag != null) + { + isWeeklySalesDirtyCheckBox.Checked = true; + _isFormDirty = true; + } //Update the total sales text box before returning. var totalWeeklySales = 0.00; if (sundayWeeklySalesTextBox.Text != "") totalWeeklySales += double.Parse(sundayWeeklySalesTextBox.Text); @@ -2002,6 +1998,11 @@ namespace AdvertsingProfitControl textBox.Text = ""; } } + if (isTaxableDirtyCheckBox.Tag != null) + { + isTaxableDirtyCheckBox.Checked = true; + _isFormDirty = true; + } //Update the total sales text box before returning. var totalTaxable = 0.00; if (sundayTaxableTextBox.Text != "") totalTaxable += double.Parse(sundayTaxableTextBox.Text); @@ -2118,7 +2119,6 @@ namespace AdvertsingProfitControl if (result == DialogResult.Yes) { _currentActiveDate = e.Start; - _isFormDirty = false; } else { @@ -2127,8 +2127,10 @@ namespace AdvertsingProfitControl } } Text = @"Modify Record (Current Record: " + e.Start.ToString("d") + @")"; + //Clear the form state. + ClearFormState(); //Load the specified date from the database. - + LoadDate(e.Start); } private void LoadDate(DateTime date) @@ -2143,22 +2145,238 @@ namespace AdvertsingProfitControl LoadInventory(inventory); LoadActualSales(actualSales); var invoices = databaseReader.ReturnInvoiceTable(dateId, databaseTracker.DatabaseConnectionString); + var comments = databaseReader.RetrieveComments(int.Parse(dateId), databaseTracker.DatabaseConnectionString); + if (comments.Count == 2) + { + LoadComments(int.Parse(comments[0]), comments[1]); + } + else + { + LogConsole.WriteToLog(FrmLogConsole.Level.Info, "No comments to display for the date of " + _currentActiveDate.ToString("d") + "."); + informationLabel.Text += @"No comments to display." + Environment.NewLine; + } + var weeklySales = databaseReader.ReturnWeeklySalesFromDateId(dateId, + databaseTracker.DatabaseConnectionString); + if (weeklySales.Rows.Count == 1) + { + LoadWeeklySales(weeklySales); + } + else + { + informationLabel.Text += @"No weekly sales to display." + Environment.NewLine; + } - //Re-enable the events + var taxable = databaseReader.ReturnTaxableFromDateId(dateId, databaseTracker.DatabaseConnectionString); + if (taxable.Rows.Count == 1) + { + LoadTaxable(taxable); + } + else + { + informationLabel.Text += @"No taxable data to display." + Environment.NewLine; + } + LoadInvoices(invoices); + var costAnalysis = databaseReader.ReturnCostAnalysis(int.Parse(dateId), + databaseTracker.DatabaseConnectionString); + if (costAnalysis.Rows.Count == 1) + { + LoadCostAnalysis(costAnalysis); + } + else + { + informationLabel.Text += @"No cost analysis data to display." + Environment.NewLine; + } + } + + private void ClearFormState() + { + projectionsDataGridView.CellEnter -= StoreBeginningCellValue; + projectionsDataGridView.RowLeave -= UpdateUsedAdItemCollectionOnRowLeave; + projectionsDataGridView.CellValidating -= ValidateSalesDataGridViewCellContents; + projectionsDataGridView.RowValidating -= ValidateProjectedRow; + projectionsDataGridView.RowsRemoved -= ProjectionRowRemoved; + inventoryDataGridView.CellEnter -= StoreBeginningCellValue; + inventoryDataGridView.RowLeave -= UpdateUsedAdItemCollectionOnRowLeave; + inventoryDataGridView.CellValidating -= ValidateInventoryCellContents; + inventoryDataGridView.RowValidating -= ValidateInventoryRow; + inventoryDataGridView.RowsRemoved -= InventoryRowRemoved; + actualSalesDataGridView.CellEnter -= StoreBeginningCellValue; + actualSalesDataGridView.RowLeave -= UpdateUsedAdItemCollectionOnRowLeave; + actualSalesDataGridView.CellValidating -= ValidateSalesDataGridViewCellContents; + actualSalesDataGridView.RowValidating -= ValidateActualSalesRow; + actualSalesDataGridView.RowsRemoved -= ActualSalesRowRemoved; + invoicesDataGridView.CellEnter -= StoreBeginningCellValue; + invoicesDataGridView.RowValidating -= ValidateInvoiceRow; + invoicesDataGridView.CellValidating -= ValidateInvoicesCellContents; + commentsTextBox.Enter -= StoreBeginningTextBoxValue; + commentsTextBox.KeyDown -= CheckForKeyCommand; + commentsTextBox.Leave -= CheckForTextChangeOnLeave; + sundayWeeklySalesTextBox.Enter -= StoreBeginningTextBoxValue; + sundayWeeklySalesTextBox.Validating -= ValidateWeeklySales; + mondayWeeklySalesTextBox.Enter -= StoreBeginningTextBoxValue; + mondayWeeklySalesTextBox.Validating -= ValidateWeeklySales; + tuesdayWeeklySalesTextBox.Enter -= StoreBeginningTextBoxValue; + tuesdayWeeklySalesTextBox.Validating -= ValidateWeeklySales; + wednesdayWeeklySalesTextBox.Enter -= StoreBeginningTextBoxValue; + wednesdayWeeklySalesTextBox.Validating -= ValidateWeeklySales; + thursdayWeeklySalesTextBox.Enter -= StoreBeginningTextBoxValue; + thursdayWeeklySalesTextBox.Validating -= ValidateWeeklySales; + fridayWeeklySalesTextBox.Enter -= StoreBeginningTextBoxValue; + fridayWeeklySalesTextBox.Validating -= ValidateWeeklySales; + saturdayWeeklySalesTextBox.Enter -= StoreBeginningTextBoxValue; + saturdayWeeklySalesTextBox.Validating -= ValidateWeeklySales; + totalWeeklySalesTextBox.Enter -= StoreBeginningTextBoxValue; + totalWeeklySalesTextBox.Validating -= ValidateWeeklySales; + sundayTaxableTextBox.Enter -= StoreBeginningTextBoxValue; + sundayTaxableTextBox.Validating -= ValidateTaxableFields; + mondayTaxableTextBox.Enter -= StoreBeginningTextBoxValue; + mondayTaxableTextBox.Validating -= ValidateTaxableFields; + tuesdayTaxableTextBox.Enter -= StoreBeginningTextBoxValue; + tuesdayTaxableTextBox.Validating -= ValidateTaxableFields; + wednesdayTaxableTextBox.Enter -= StoreBeginningTextBoxValue; + wednesdayTaxableTextBox.Validating -= ValidateTaxableFields; + thursdayTaxableTextBox.Enter -= StoreBeginningTextBoxValue; + thursdayTaxableTextBox.Validating -= ValidateTaxableFields; + fridayTaxableTextBox.Enter -= StoreBeginningTextBoxValue; + fridayTaxableTextBox.Validating -= ValidateTaxableFields; + saturdayTaxableTextBox.Enter -= StoreBeginningTextBoxValue; + saturdayTaxableTextBox.Validating -= ValidateTaxableFields; + totalTaxableTextBox.Enter -= StoreBeginningTextBoxValue; + totalTaxableTextBox.Validating -= ValidateTaxableFields; + salesPerManHourTextBox.Enter -= StoreBeginningTextBoxValue; + salesPerManHourTextBox.Validating -= ValidateCostAnalysisValues; + salaryPercentageTextBox.Enter -= StoreBeginningTextBoxValue; + salaryPercentageTextBox.Validating -= ValidateCostAnalysisValues; + salaryDollarsTextBox.Enter -= StoreBeginningTextBoxValue; + salaryDollarsTextBox.Validating -= ValidateCostAnalysisValues; + suppliesTextBox.Enter -= StoreBeginningTextBoxValue; + suppliesTextBox.Validating -= ValidateCostAnalysisValues; + //Clear errors and information. + informationLabel.Text = ""; + errorLabel.Text = ""; + //Clear projections + projectionsDataGridView.Rows.Clear(); + //Clear inventory + inventoryDataGridView.Rows.Clear(); + //Clear actual sales + actualSalesDataGridView.Rows.Clear(); + //Reset the ad special index. + _adSpecialIndex = -1; + //Clear the beginning cell value variable. + _beginningCellValue = ""; + //Reset the form's dirty flag + _isFormDirty = false; + //Clear invoices + invoicesDataGridView.Rows.Clear(); + //Clear comments + isCommentDirtyCheckBox.Checked = false; + isCommentDirtyCheckBox.Text = @"IsCommentDirty"; + isCommentDirtyCheckBox.Tag = null; + commentsTextBox.Text = ""; + commentsGroupBox.Text = @"Comments (Characters Remaining: " + commentsTextBox.MaxLength + @")"; + //Clear weekly sales. + isWeeklySalesDirtyCheckBox.Checked = false; + isWeeklySalesDirtyCheckBox.Text = @"IsWeeklySalesDirty"; + isWeeklySalesDirtyCheckBox.Tag = null; + sundayWeeklySalesTextBox.Text = ""; + mondayWeeklySalesTextBox.Text = ""; + tuesdayWeeklySalesTextBox.Text = ""; + wednesdayWeeklySalesTextBox.Text = ""; + thursdayWeeklySalesTextBox.Text = ""; + fridayWeeklySalesTextBox.Text = ""; + saturdayWeeklySalesTextBox.Text = ""; + totalWeeklySalesTextBox.Text = ""; + //Clear taxable. + isTaxableDirtyCheckBox.Checked = false; + isTaxableDirtyCheckBox.Text = @"IsTaxableDirty"; + isTaxableDirtyCheckBox.Tag = null; + sundayTaxableTextBox.Text = ""; + mondayTaxableTextBox.Text = ""; + tuesdayTaxableTextBox.Text = ""; + wednesdayTaxableTextBox.Text = ""; + thursdayTaxableTextBox.Text = ""; + fridayTaxableTextBox.Text = ""; + saturdayTaxableTextBox.Text = ""; + totalTaxableTextBox.Text = ""; + //Clear cost analysis + isCostAnalysisDirtyCheckBox.Checked = false; + isCostAnalysisDirtyCheckBox.Text = @"IsCostAnalysisDirty"; + isCostAnalysisDirtyCheckBox.Tag = null; + salesPerManHourTextBox.Text = ""; + salaryPercentageTextBox.Text = ""; + salaryDollarsTextBox.Text = ""; + suppliesTextBox.Text = ""; + //Re-enable the events for all the controls. projectionsDataGridView.CellEnter += StoreBeginningCellValue; projectionsDataGridView.RowLeave += UpdateUsedAdItemCollectionOnRowLeave; projectionsDataGridView.CellValidating += ValidateSalesDataGridViewCellContents; projectionsDataGridView.RowValidating += ValidateProjectedRow; + projectionsDataGridView.RowsRemoved += ProjectionRowRemoved; inventoryDataGridView.CellEnter += StoreBeginningCellValue; inventoryDataGridView.RowLeave += UpdateUsedAdItemCollectionOnRowLeave; inventoryDataGridView.CellValidating += ValidateInventoryCellContents; inventoryDataGridView.RowValidating += ValidateInventoryRow; + inventoryDataGridView.RowsRemoved += InventoryRowRemoved; actualSalesDataGridView.CellEnter += StoreBeginningCellValue; actualSalesDataGridView.RowLeave += UpdateUsedAdItemCollectionOnRowLeave; actualSalesDataGridView.CellValidating += ValidateSalesDataGridViewCellContents; actualSalesDataGridView.RowValidating += ValidateActualSalesRow; + actualSalesDataGridView.RowsRemoved += ActualSalesRowRemoved; + + invoicesDataGridView.CellEnter += StoreBeginningCellValue; + invoicesDataGridView.RowValidating += ValidateInvoiceRow; + invoicesDataGridView.CellValidating += ValidateInvoicesCellContents; + + commentsTextBox.Enter += StoreBeginningTextBoxValue; + commentsTextBox.KeyDown += CheckForKeyCommand; + commentsTextBox.Leave += CheckForTextChangeOnLeave; + + sundayWeeklySalesTextBox.Enter += StoreBeginningTextBoxValue; + sundayWeeklySalesTextBox.Validating += ValidateWeeklySales; + mondayWeeklySalesTextBox.Enter += StoreBeginningTextBoxValue; + mondayWeeklySalesTextBox.Validating += ValidateWeeklySales; + tuesdayWeeklySalesTextBox.Enter += StoreBeginningTextBoxValue; + tuesdayWeeklySalesTextBox.Validating += ValidateWeeklySales; + wednesdayWeeklySalesTextBox.Enter += StoreBeginningTextBoxValue; + wednesdayWeeklySalesTextBox.Validating += ValidateWeeklySales; + thursdayWeeklySalesTextBox.Enter += StoreBeginningTextBoxValue; + thursdayWeeklySalesTextBox.Validating += ValidateWeeklySales; + fridayWeeklySalesTextBox.Enter += StoreBeginningTextBoxValue; + fridayWeeklySalesTextBox.Validating += ValidateWeeklySales; + saturdayWeeklySalesTextBox.Enter += StoreBeginningTextBoxValue; + saturdayWeeklySalesTextBox.Validating += ValidateWeeklySales; + totalWeeklySalesTextBox.Enter += StoreBeginningTextBoxValue; + totalWeeklySalesTextBox.Validating += ValidateWeeklySales; + + sundayTaxableTextBox.Enter += StoreBeginningTextBoxValue; + sundayTaxableTextBox.Validating += ValidateTaxableFields; + mondayTaxableTextBox.Enter += StoreBeginningTextBoxValue; + mondayTaxableTextBox.Validating += ValidateTaxableFields; + tuesdayTaxableTextBox.Enter += StoreBeginningTextBoxValue; + tuesdayTaxableTextBox.Validating += ValidateTaxableFields; + wednesdayTaxableTextBox.Enter += StoreBeginningTextBoxValue; + wednesdayTaxableTextBox.Validating += ValidateTaxableFields; + thursdayTaxableTextBox.Enter += StoreBeginningTextBoxValue; + thursdayTaxableTextBox.Validating += ValidateTaxableFields; + fridayTaxableTextBox.Enter += StoreBeginningTextBoxValue; + fridayTaxableTextBox.Validating += ValidateTaxableFields; + saturdayTaxableTextBox.Enter += StoreBeginningTextBoxValue; + saturdayTaxableTextBox.Validating += ValidateTaxableFields; + totalTaxableTextBox.Enter += StoreBeginningTextBoxValue; + totalTaxableTextBox.Validating += ValidateTaxableFields; + + salesPerManHourTextBox.Enter += StoreBeginningTextBoxValue; + salesPerManHourTextBox.Validating += ValidateCostAnalysisValues; + salaryPercentageTextBox.Enter += StoreBeginningTextBoxValue; + salaryPercentageTextBox.Validating += ValidateCostAnalysisValues; + salaryDollarsTextBox.Enter += StoreBeginningTextBoxValue; + salaryDollarsTextBox.Validating += ValidateCostAnalysisValues; + suppliesTextBox.Enter += StoreBeginningTextBoxValue; + suppliesTextBox.Validating += ValidateCostAnalysisValues; } + #region Data Loading Methods + private void LoadProjectionsTable(DataTable projections) { //Assuming all the tables are correctly aligned. @@ -2242,6 +2460,11 @@ namespace AdvertsingProfitControl } projectionsDataGridView.Rows.Add(newRow); } + //Re-enable the events + projectionsDataGridView.CellEnter += StoreBeginningCellValue; + projectionsDataGridView.RowLeave += UpdateUsedAdItemCollectionOnRowLeave; + projectionsDataGridView.CellValidating += ValidateSalesDataGridViewCellContents; + projectionsDataGridView.RowValidating += ValidateProjectedRow; } private void LoadInventory(DataTable inventoryTable) @@ -2329,6 +2552,11 @@ namespace AdvertsingProfitControl } inventoryDataGridView.Rows.Add(newRow); } + //Re-enable the events + inventoryDataGridView.CellEnter += StoreBeginningCellValue; + inventoryDataGridView.RowLeave += UpdateUsedAdItemCollectionOnRowLeave; + inventoryDataGridView.CellValidating += ValidateInventoryCellContents; + inventoryDataGridView.RowValidating += ValidateInventoryRow; } public void LoadActualSales(DataTable actualSales) @@ -2416,11 +2644,362 @@ namespace AdvertsingProfitControl } actualSalesDataGridView.Rows.Add(newRow); } + //Re-enable the events + actualSalesDataGridView.CellEnter += StoreBeginningCellValue; + actualSalesDataGridView.RowLeave += UpdateUsedAdItemCollectionOnRowLeave; + actualSalesDataGridView.CellValidating += ValidateSalesDataGridViewCellContents; + actualSalesDataGridView.RowValidating += ValidateActualSalesRow; } - private void NormalizeApcTables(DataTable projetions, DataTable inventory, DataTable actualSales, string dateId) + private void LoadInvoices(DataTable invoices) { - + for (var rowIndex = 0; rowIndex < invoices.Rows.Count; rowIndex++) + { + var row = new DataGridViewRow(); + for (var cellIndex = 0; cellIndex < invoices.Rows[rowIndex].ItemArray.Length; cellIndex++) + { + //Get the + //Format the invoice date. + if (cellIndex == 1) + { + var date = DateTime.Parse(invoices.Rows[rowIndex].ItemArray[cellIndex].ToString()); + var cell = new DataGridViewTextBoxCell + { + Value = date.ToString("d") + }; + row.Cells.Add(cell); + continue; + } + if (invoices.Rows[rowIndex].ItemArray[cellIndex].ToString() != "0") + { + var cell = new DataGridViewTextBoxCell + { + Value = invoices.Rows[rowIndex].ItemArray[cellIndex].ToString() + }; + row.Cells.Add(cell); + } + else + { + var cell = new DataGridViewTextBoxCell + { + Value = "" + }; + row.Cells.Add(cell); + } + } + invoicesDataGridView.Rows.Add(row); + } } + + private void LoadComments(int id, string comments) + { + //commentsTextBox.TextChanged -= DisplayRemainingCommentCharacterCount; + commentsTextBox.Enter -= StoreBeginningTextBoxValue; + commentsTextBox.KeyDown -= CheckForKeyCommand; + commentsTextBox.Leave -= CheckForTextChangeOnLeave; + + isCommentDirtyCheckBox.Text = @"isCommentsDirty (" + id + @")"; + isCommentDirtyCheckBox.Tag = id; + + commentsTextBox.Text = comments; + + //commentsGroupBox.Text = @"Comments (Characters Remaining: " + commentsTextBox.MaxLength + @")"; + //commentsTextBox.TextChanged += DisplayRemainingCommentCharacterCount; + commentsTextBox.Enter += StoreBeginningTextBoxValue; + commentsTextBox.KeyDown += CheckForKeyCommand; + commentsTextBox.Leave += CheckForTextChangeOnLeave; + } + + private void LoadWeeklySales(DataTable weeklySales) + { + sundayWeeklySalesTextBox.Enter -= StoreBeginningTextBoxValue; + sundayWeeklySalesTextBox.Validating -= ValidateWeeklySales; + mondayWeeklySalesTextBox.Enter -= StoreBeginningTextBoxValue; + mondayWeeklySalesTextBox.Validating -= ValidateWeeklySales; + tuesdayWeeklySalesTextBox.Enter -= StoreBeginningTextBoxValue; + tuesdayWeeklySalesTextBox.Validating -= ValidateWeeklySales; + wednesdayWeeklySalesTextBox.Enter -= StoreBeginningTextBoxValue; + wednesdayWeeklySalesTextBox.Validating -= ValidateWeeklySales; + thursdayWeeklySalesTextBox.Enter -= StoreBeginningTextBoxValue; + thursdayWeeklySalesTextBox.Validating -= ValidateWeeklySales; + fridayWeeklySalesTextBox.Enter -= StoreBeginningTextBoxValue; + fridayWeeklySalesTextBox.Validating -= ValidateWeeklySales; + saturdayWeeklySalesTextBox.Enter -= StoreBeginningTextBoxValue; + saturdayWeeklySalesTextBox.Validating -= ValidateWeeklySales; + totalWeeklySalesTextBox.Enter -= StoreBeginningTextBoxValue; + totalWeeklySalesTextBox.Validating -= ValidateWeeklySales; + + //Spin through the only row in the weekly sales table. Item in item + //array index zero (0) is the ID number of the weekly sales. + for (var cellIndex = 0; cellIndex < weeklySales.Rows[0].ItemArray.Length; cellIndex++) + { + if (cellIndex == 0) + { + //ID number + var id = int.Parse(weeklySales.Rows[0].ItemArray[cellIndex].ToString()); + isWeeklySalesDirtyCheckBox.Tag = id; + isWeeklySalesDirtyCheckBox.Text = @"IsWeeklySalesDirty (" + id + @")"; + continue; + } + string formattedNumber; + switch (cellIndex) + { + case 1: //Sunday + formattedNumber = Math.Round(double.Parse(weeklySales.Rows[0].ItemArray[cellIndex].ToString()), 2).ToString("N", new CultureInfo("en-US")); + if (formattedNumber != "0.00") + { + sundayWeeklySalesTextBox.Text = formattedNumber; + } + break; + case 2: //Monday + formattedNumber = Math.Round(double.Parse(weeklySales.Rows[0].ItemArray[cellIndex].ToString()), 2).ToString("N", new CultureInfo("en-US")); + if (formattedNumber != "0.00") + { + mondayWeeklySalesTextBox.Text = formattedNumber; + } + break; + case 3: //Tuesday + formattedNumber = Math.Round(double.Parse(weeklySales.Rows[0].ItemArray[cellIndex].ToString()), 2).ToString("N", new CultureInfo("en-US")); + if (formattedNumber != "0.00") + { + tuesdayWeeklySalesTextBox.Text = formattedNumber; + } + break; + case 4: //Wednesday + formattedNumber = Math.Round(double.Parse(weeklySales.Rows[0].ItemArray[cellIndex].ToString()), 2).ToString("N", new CultureInfo("en-US")); + if (formattedNumber != "0.00") + { + wednesdayWeeklySalesTextBox.Text = formattedNumber; + } + break; + case 5: //Thursday + formattedNumber = Math.Round(double.Parse(weeklySales.Rows[0].ItemArray[cellIndex].ToString()), 2).ToString("N", new CultureInfo("en-US")); + if (formattedNumber != "0.00") + { + thursdayWeeklySalesTextBox.Text = formattedNumber; + } + break; + case 6: //Friday + formattedNumber = Math.Round(double.Parse(weeklySales.Rows[0].ItemArray[cellIndex].ToString()), 2).ToString("N", new CultureInfo("en-US")); + if (formattedNumber != "0.00") + { + fridayWeeklySalesTextBox.Text = formattedNumber; + } + break; + case 7: //Saturday + formattedNumber = Math.Round(double.Parse(weeklySales.Rows[0].ItemArray[cellIndex].ToString()), 2).ToString("N", new CultureInfo("en-US")); + if (formattedNumber != "0.00") + { + saturdayWeeklySalesTextBox.Text = formattedNumber; + } + break; + case 8: //Total Sales + formattedNumber = Math.Round(double.Parse(weeklySales.Rows[0].ItemArray[cellIndex].ToString()), 2).ToString("N", new CultureInfo("en-US")); + if (formattedNumber != "0.00") + { + totalWeeklySalesTextBox.Text = formattedNumber; + } + break; + } + } + + sundayWeeklySalesTextBox.Enter += StoreBeginningTextBoxValue; + sundayWeeklySalesTextBox.Validating += ValidateWeeklySales; + mondayWeeklySalesTextBox.Enter += StoreBeginningTextBoxValue; + mondayWeeklySalesTextBox.Validating += ValidateWeeklySales; + tuesdayWeeklySalesTextBox.Enter += StoreBeginningTextBoxValue; + tuesdayWeeklySalesTextBox.Validating += ValidateWeeklySales; + wednesdayWeeklySalesTextBox.Enter += StoreBeginningTextBoxValue; + wednesdayWeeklySalesTextBox.Validating += ValidateWeeklySales; + thursdayWeeklySalesTextBox.Enter += StoreBeginningTextBoxValue; + thursdayWeeklySalesTextBox.Validating += ValidateWeeklySales; + fridayWeeklySalesTextBox.Enter += StoreBeginningTextBoxValue; + fridayWeeklySalesTextBox.Validating += ValidateWeeklySales; + saturdayWeeklySalesTextBox.Enter += StoreBeginningTextBoxValue; + saturdayWeeklySalesTextBox.Validating += ValidateWeeklySales; + totalWeeklySalesTextBox.Enter += StoreBeginningTextBoxValue; + totalWeeklySalesTextBox.Validating += ValidateWeeklySales; + } + + private void LoadTaxable(DataTable taxable) + { + sundayTaxableTextBox.Enter -= StoreBeginningTextBoxValue; + sundayTaxableTextBox.Validating -= ValidateTaxableFields; + mondayTaxableTextBox.Enter -= StoreBeginningTextBoxValue; + mondayTaxableTextBox.Validating -= ValidateTaxableFields; + tuesdayTaxableTextBox.Enter -= StoreBeginningTextBoxValue; + tuesdayTaxableTextBox.Validating -= ValidateTaxableFields; + wednesdayTaxableTextBox.Enter -= StoreBeginningTextBoxValue; + wednesdayTaxableTextBox.Validating -= ValidateTaxableFields; + thursdayTaxableTextBox.Enter -= StoreBeginningTextBoxValue; + thursdayTaxableTextBox.Validating -= ValidateTaxableFields; + fridayTaxableTextBox.Enter -= StoreBeginningTextBoxValue; + fridayTaxableTextBox.Validating -= ValidateTaxableFields; + saturdayTaxableTextBox.Enter -= StoreBeginningTextBoxValue; + saturdayTaxableTextBox.Validating -= ValidateTaxableFields; + totalTaxableTextBox.Enter -= StoreBeginningTextBoxValue; + totalTaxableTextBox.Validating -= ValidateTaxableFields; + //Spin through the only row in the taxable table. Item in item + //array index zero (0) is the ID number of the weekly sales. + for (var cellIndex = 0; cellIndex < taxable.Rows[0].ItemArray.Length; cellIndex++) + { + if (cellIndex == 0) + { + //ID number + var id = int.Parse(taxable.Rows[0].ItemArray[cellIndex].ToString()); + isTaxableDirtyCheckBox.Tag = id; + isTaxableDirtyCheckBox.Text = @"IsTaxableDirty (" + id + @")"; + continue; + } + string formattedNumber; + switch (cellIndex) + { + case 1: //Sunday + formattedNumber = Math.Round(double.Parse(taxable.Rows[0].ItemArray[cellIndex].ToString()), 2).ToString("N", new CultureInfo("en-US")); + if (formattedNumber != "0.00") + { + sundayTaxableTextBox.Text = formattedNumber; + } + break; + case 2: //Monday + formattedNumber = Math.Round(double.Parse(taxable.Rows[0].ItemArray[cellIndex].ToString()), 2).ToString("N", new CultureInfo("en-US")); + if (formattedNumber != "0.00") + { + mondayTaxableTextBox.Text = formattedNumber; + } + break; + case 3: //Tuesday + formattedNumber = Math.Round(double.Parse(taxable.Rows[0].ItemArray[cellIndex].ToString()), 2).ToString("N", new CultureInfo("en-US")); + if (formattedNumber != "0.00") + { + tuesdayTaxableTextBox.Text = formattedNumber; + } + break; + case 4: //Wednesday + formattedNumber = Math.Round(double.Parse(taxable.Rows[0].ItemArray[cellIndex].ToString()), 2).ToString("N", new CultureInfo("en-US")); + if (formattedNumber != "0.00") + { + wednesdayTaxableTextBox.Text = formattedNumber; + } + break; + case 5: //Thursday + formattedNumber = Math.Round(double.Parse(taxable.Rows[0].ItemArray[cellIndex].ToString()), 2).ToString("N", new CultureInfo("en-US")); + if (formattedNumber != "0.00") + { + thursdayTaxableTextBox.Text = formattedNumber; + } + break; + case 6: //Friday + formattedNumber = Math.Round(double.Parse(taxable.Rows[0].ItemArray[cellIndex].ToString()), 2).ToString("N", new CultureInfo("en-US")); + if (formattedNumber != "0.00") + { + fridayTaxableTextBox.Text = formattedNumber; + } + break; + case 7: //Saturday + formattedNumber = Math.Round(double.Parse(taxable.Rows[0].ItemArray[cellIndex].ToString()), 2).ToString("N", new CultureInfo("en-US")); + if (formattedNumber != "0.00") + { + saturdayTaxableTextBox.Text = formattedNumber; + } + break; + case 8: //Total Taxable + formattedNumber = Math.Round(double.Parse(taxable.Rows[0].ItemArray[cellIndex].ToString()), 2).ToString("N", new CultureInfo("en-US")); + if (formattedNumber != "0.00") + { + totalTaxableTextBox.Text = formattedNumber; + } + break; + } + } + sundayTaxableTextBox.Enter += StoreBeginningTextBoxValue; + sundayTaxableTextBox.Validating += ValidateTaxableFields; + mondayTaxableTextBox.Enter += StoreBeginningTextBoxValue; + mondayTaxableTextBox.Validating += ValidateTaxableFields; + tuesdayTaxableTextBox.Enter += StoreBeginningTextBoxValue; + tuesdayTaxableTextBox.Validating += ValidateTaxableFields; + wednesdayTaxableTextBox.Enter += StoreBeginningTextBoxValue; + wednesdayTaxableTextBox.Validating += ValidateTaxableFields; + thursdayTaxableTextBox.Enter += StoreBeginningTextBoxValue; + thursdayTaxableTextBox.Validating += ValidateTaxableFields; + fridayTaxableTextBox.Enter += StoreBeginningTextBoxValue; + fridayTaxableTextBox.Validating += ValidateTaxableFields; + saturdayTaxableTextBox.Enter += StoreBeginningTextBoxValue; + saturdayTaxableTextBox.Validating += ValidateTaxableFields; + totalTaxableTextBox.Enter += StoreBeginningTextBoxValue; + totalTaxableTextBox.Validating += ValidateTaxableFields; + } + + private void LoadCostAnalysis(DataTable costAnalysis) + { + salesPerManHourTextBox.Enter -= StoreBeginningTextBoxValue; + salesPerManHourTextBox.Validating -= ValidateCostAnalysisValues; + salaryPercentageTextBox.Enter -= StoreBeginningTextBoxValue; + salaryPercentageTextBox.Validating -= ValidateCostAnalysisValues; + salaryDollarsTextBox.Enter -= StoreBeginningTextBoxValue; + salaryDollarsTextBox.Validating -= ValidateCostAnalysisValues; + suppliesTextBox.Enter -= StoreBeginningTextBoxValue; + suppliesTextBox.Validating -= ValidateCostAnalysisValues; + //Spin through the only row in the taxable table. Item in item + //array index zero (0) is the ID number of the weekly sales. + for (var cellIndex = 0; cellIndex < costAnalysis.Rows[0].ItemArray.Length; cellIndex++) + { + if (cellIndex == 0) + { + //ID number + var id = int.Parse(costAnalysis.Rows[0].ItemArray[cellIndex].ToString()); + isCostAnalysisDirtyCheckBox.Tag = id; + isCostAnalysisDirtyCheckBox.Text = @"IsCostAnalysisDirty (" + id + @")"; + continue; + } + string formattedNumber; + switch (cellIndex) + { + case 1: //Sales per man hour + formattedNumber = Math.Round(double.Parse(costAnalysis.Rows[0].ItemArray[cellIndex].ToString()), 2).ToString("N", new CultureInfo("en-US")); + if (formattedNumber != "0.00") + { + salesPerManHourTextBox.Text = formattedNumber; + } + break; + case 2: //Salary Percentage + formattedNumber = Math.Round(double.Parse(costAnalysis.Rows[0].ItemArray[cellIndex].ToString()), 2).ToString("N", new CultureInfo("en-US")); + if (formattedNumber != "0.00") + { + salaryPercentageTextBox.Text = formattedNumber; + } + break; + case 3: //Salary Dollars + formattedNumber = Math.Round(double.Parse(costAnalysis.Rows[0].ItemArray[cellIndex].ToString()), 2).ToString("N", new CultureInfo("en-US")); + if (formattedNumber != "0.00") + { + salaryDollarsTextBox.Text = formattedNumber; + } + break; + case 4: //Supplies + formattedNumber = Math.Round(double.Parse(costAnalysis.Rows[0].ItemArray[cellIndex].ToString()), 2).ToString("N", new CultureInfo("en-US")); + if (formattedNumber != "0.00") + { + suppliesTextBox.Text = formattedNumber; + } + break; + } + } + salesPerManHourTextBox.Enter += StoreBeginningTextBoxValue; + salesPerManHourTextBox.Validating += ValidateCostAnalysisValues; + salaryPercentageTextBox.Enter += StoreBeginningTextBoxValue; + salaryPercentageTextBox.Validating += ValidateCostAnalysisValues; + salaryDollarsTextBox.Enter += StoreBeginningTextBoxValue; + salaryDollarsTextBox.Validating += ValidateCostAnalysisValues; + suppliesTextBox.Enter += StoreBeginningTextBoxValue; + suppliesTextBox.Validating += ValidateCostAnalysisValues; + } + + #endregion + + //private void NormalizeApcTables(DataTable projections, DataTable inventory, DataTable actualSales, string dateId) + //{ + + //} } } diff --git a/AdvertsingProfitControl/bin/Debug/AdvertsingProfitControl.vshost.application b/AdvertsingProfitControl/bin/Debug/AdvertsingProfitControl.vshost.application index 1e6f4da..e2cc48b 100644 --- a/AdvertsingProfitControl/bin/Debug/AdvertsingProfitControl.vshost.application +++ b/AdvertsingProfitControl/bin/Debug/AdvertsingProfitControl.vshost.application @@ -14,7 +14,7 @@ - hjoJ6F3S2mx0T7+16nfA9mg2vO2CJ4FO+GQ/EyPYf58= + v/vV1JQ1KwJ475DzlF/9pMJ1BiE2M9/K5exyQW56JdA= diff --git a/AdvertsingProfitControl/bin/Debug/AdvertsingProfitControl.vshost.exe.manifest b/AdvertsingProfitControl/bin/Debug/AdvertsingProfitControl.vshost.exe.manifest index e78bcf3..c56988c 100644 --- a/AdvertsingProfitControl/bin/Debug/AdvertsingProfitControl.vshost.exe.manifest +++ b/AdvertsingProfitControl/bin/Debug/AdvertsingProfitControl.vshost.exe.manifest @@ -43,14 +43,14 @@ - + - vZ/15zn6UnQyxvEn4XYMV+E1MUxIXiQdJmnSal6RNFc= + X9LoHKI4Q8rmL073oAPMcfETygEZnYWzLirYaKYjcvQ= @@ -93,7 +93,7 @@ - ZGKhdhvn6U66O06l/eGiap8UW45ciijpPInT3o/xuMc= + dJHxM6HPIKo4c5VqxwCZb6aI2vGij+MP5mUPlilWJ/A=