Cleaned up the table trimming methods. Group creation now proper marks rows as dirty when row attribute changes. Projections table processes successfully on the new modify record form.
This commit is contained in:
@@ -1174,7 +1174,7 @@ namespace AdvertsingProfitControl
|
||||
{
|
||||
//Grab the DataGirdView that fired the event and make it into a local variable.
|
||||
var dataGridView = ((DataGridView)sender);
|
||||
var userInput = dataGridView.Rows[e.RowIndex].Cells[e.ColumnIndex].EditedFormattedValue.ToString();
|
||||
var userInput = dataGridView.Rows[e.RowIndex].Cells[e.ColumnIndex].EditedFormattedValue.ToString().Trim();
|
||||
//TODO: Write a custom parsing engine for detecting when bins are entered.
|
||||
var textInfo = new CultureInfo("en-US", false).TextInfo;
|
||||
//Check for isNewRow if it is, return no need to check it for anything.
|
||||
@@ -1246,6 +1246,7 @@ namespace AdvertsingProfitControl
|
||||
else if (userInput != _beginningCellValue)
|
||||
{
|
||||
dataGridView.Rows[e.RowIndex].Cells[(int)InventoryTableColumns.IsDirty].Value = true;
|
||||
dataGridView.Rows[e.RowIndex].HeaderCell.Style.BackColor = ApplicationColors.PendingEdit;
|
||||
}
|
||||
//Check to see if the current column is the ad item column.
|
||||
switch (e.ColumnIndex)
|
||||
@@ -1278,7 +1279,12 @@ namespace AdvertsingProfitControl
|
||||
break;
|
||||
default:
|
||||
//Purely here for protection against parsing the Boolean columns by mistake.
|
||||
if (e.ColumnIndex == (int)InventoryTableColumns.Id || e.ColumnIndex >= (int)InventoryTableColumns.IsHeaderRow) { return; }
|
||||
if (e.ColumnIndex == (int)InventoryTableColumns.Id || e.ColumnIndex >= (int)InventoryTableColumns.IsHeaderRow) return;
|
||||
if (userInput == string.Empty)
|
||||
{
|
||||
dataGridView.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = userInput;
|
||||
return;
|
||||
}
|
||||
//This Reg-ex pattern will match any number followed by the word bin(s), to allow specifying the number of bins of product were ordered.
|
||||
var inventoryStringCheck = new Regex(@"^[0-9]{1,2} \bbin(s){0,1}\b", RegexOptions.IgnoreCase);
|
||||
|
||||
@@ -1294,7 +1300,7 @@ namespace AdvertsingProfitControl
|
||||
}
|
||||
double parsedNumber;
|
||||
//Try parsing the text entered as a number and if that fails then break out and clear the value entered.
|
||||
if (userInput != "" && double.TryParse(userInput, out parsedNumber))
|
||||
if (userInput != string.Empty && double.TryParse(userInput, out parsedNumber))
|
||||
{
|
||||
//Add the value to the cell.
|
||||
dataGridView.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = userInput;
|
||||
@@ -1302,7 +1308,7 @@ namespace AdvertsingProfitControl
|
||||
return;
|
||||
}
|
||||
//Prevent the user from being bombarded by message boxes. All validation has been completed at this point so there's nothing to worry about.
|
||||
if (userInput != "")
|
||||
if (userInput != string.Empty)
|
||||
{
|
||||
MessageBox.Show(@"Non numeric characters in column " + (e.ColumnIndex + 1) + @" are not allowed.", @"Invalid Characters Detected");
|
||||
dataGridView.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = "";
|
||||
@@ -2107,14 +2113,6 @@ namespace AdvertsingProfitControl
|
||||
if (dbW.InsertIntoWeekEnding(weekEndingCalendar.SelectionStart.ToString("d")))
|
||||
{
|
||||
dateId = dbR.RetrieveDateIdByDateString(weekEndingCalendar.SelectionStart.ToString("d"), dbT.DatabaseConnectionString);
|
||||
//Now if its still zero (0) then that means something went really wrong and failed to insert.
|
||||
if (dateId == 0)
|
||||
{
|
||||
MessageBox.Show(
|
||||
@"Failed to retrieve date ID after supposedly inserting the date into the database.",
|
||||
@"Failed To Get Date ID", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
return;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -2465,76 +2463,6 @@ namespace AdvertsingProfitControl
|
||||
return TrimmingOperationResult.FailedToTrim;
|
||||
}
|
||||
}
|
||||
//Check for repeated ad items in the ad special section
|
||||
if (_adSpecialIndex != -1 && row.Index > _adSpecialIndex)
|
||||
{
|
||||
//Attempt to grab the index of an ad item, if it is not found then the return value is -1.
|
||||
var repeatedItemIndex = _usedAdItems[0].FindIndex(x => x == row.Cells[(int)SalesTableColumns.AdItem].EditedFormattedValue.ToString());
|
||||
//Skip checking this row if an index is found, and use the values in the row at the previous index found.
|
||||
if (repeatedItemIndex != -1)
|
||||
{
|
||||
//Add the values to their respective data table.
|
||||
if (rowIdNumber == 0)
|
||||
{
|
||||
//This table is full of data not in the database so the ID column isn't needed.
|
||||
var newRow = new object[11];
|
||||
newRow[0] = dataGridView.Rows[repeatedItemIndex].Cells[(int)SalesTableColumns.Sold].EditedFormattedValue.ToString();//Sold, is string
|
||||
newRow[1] = dataGridView.Rows[repeatedItemIndex].Cells[(int)SalesTableColumns.SalePrice].EditedFormattedValue.ToString();//SalePrice, is string
|
||||
newRow[2] = dataGridView.Rows[repeatedItemIndex].Cells[(int)SalesTableColumns.TotalSales].EditedFormattedValue.ToString() == "" ? 0 : double.Parse(dataGridView.Rows[repeatedItemIndex].Cells[(int)SalesTableColumns.TotalSales].EditedFormattedValue.ToString());//TotalSales, must be a number
|
||||
newRow[3] = dataGridView.Rows[repeatedItemIndex].Cells[(int)SalesTableColumns.Cost].EditedFormattedValue.ToString() == "" ? 0 : double.Parse(dataGridView.Rows[repeatedItemIndex].Cells[(int)SalesTableColumns.Cost].EditedFormattedValue.ToString());//Cost, must be a number
|
||||
newRow[4] = dataGridView.Rows[repeatedItemIndex].Cells[(int)SalesTableColumns.ProfitReturn].EditedFormattedValue.ToString() == "" ? 0 : double.Parse(dataGridView.Rows[repeatedItemIndex].Cells[(int)SalesTableColumns.ProfitReturn].EditedFormattedValue.ToString());//ProfitReturn, must be a number
|
||||
newRow[5] = dataGridView.Rows[repeatedItemIndex].Cells[(int)SalesTableColumns.TotalProfitReturn].EditedFormattedValue.ToString() == "" ? 0 : double.Parse(dataGridView.Rows[repeatedItemIndex].Cells[(int)SalesTableColumns.TotalProfitReturn].EditedFormattedValue.ToString());//TotalProfitReturn, must be a number
|
||||
newRow[6] = adItemId;
|
||||
if ((bool)dataGridView.Rows[repeatedItemIndex].Cells[(int) SalesTableColumns.IsHeaderRow].Value)
|
||||
{
|
||||
newRow[7] = 1;
|
||||
}
|
||||
else if ((bool)dataGridView.Rows[repeatedItemIndex].Cells[(int) SalesTableColumns.IsMemberRow].Value)
|
||||
{
|
||||
newRow[7] = 2;
|
||||
}
|
||||
else
|
||||
{
|
||||
newRow[7] = 0;
|
||||
}
|
||||
newRow[8] = adSpecialId;
|
||||
newRow[9] = row.Index; //"Subtract" one since we don't need to acknowledge the Ad Special Row's existence.
|
||||
newRow[10] = dateId;
|
||||
insertNewTable.Rows.Add(newRow);
|
||||
continue;
|
||||
}
|
||||
else
|
||||
{
|
||||
//This table is full of data that is already in the database.
|
||||
var newRow = new object[11];
|
||||
newRow[0] = rowIdNumber;
|
||||
newRow[1] = dataGridView.Rows[repeatedItemIndex].Cells[(int)SalesTableColumns.Sold].EditedFormattedValue.ToString();//Sold, is string
|
||||
newRow[2] = dataGridView.Rows[repeatedItemIndex].Cells[(int)SalesTableColumns.SalePrice].EditedFormattedValue.ToString();//SalePrice, is string
|
||||
newRow[3] = dataGridView.Rows[repeatedItemIndex].Cells[(int)SalesTableColumns.TotalSales].EditedFormattedValue.ToString() == "" ? 0 : double.Parse(dataGridView.Rows[repeatedItemIndex].Cells[(int)SalesTableColumns.TotalSales].EditedFormattedValue.ToString());//TotalSales, must be a number
|
||||
newRow[4] = dataGridView.Rows[repeatedItemIndex].Cells[(int)SalesTableColumns.Cost].EditedFormattedValue.ToString() == "" ? 0 : double.Parse(dataGridView.Rows[repeatedItemIndex].Cells[(int)SalesTableColumns.Cost].EditedFormattedValue.ToString());//Cost, must be a number
|
||||
newRow[5] = dataGridView.Rows[repeatedItemIndex].Cells[(int)SalesTableColumns.ProfitReturn].EditedFormattedValue.ToString() == "" ? 0 : double.Parse(dataGridView.Rows[repeatedItemIndex].Cells[(int)SalesTableColumns.ProfitReturn].EditedFormattedValue.ToString());//ProfitReturn, must be a number
|
||||
newRow[6] = dataGridView.Rows[repeatedItemIndex].Cells[(int)SalesTableColumns.TotalProfitReturn].EditedFormattedValue.ToString() == "" ? 0 : double.Parse(dataGridView.Rows[repeatedItemIndex].Cells[(int)SalesTableColumns.TotalProfitReturn].EditedFormattedValue.ToString());//TotalProfitReturn, must be a number
|
||||
newRow[7] = adItemId;
|
||||
if ((bool)dataGridView.Rows[repeatedItemIndex].Cells[(int)SalesTableColumns.IsHeaderRow].Value)
|
||||
{
|
||||
newRow[8] = 1;
|
||||
}
|
||||
else if ((bool)dataGridView.Rows[repeatedItemIndex].Cells[(int)SalesTableColumns.IsMemberRow].Value)
|
||||
{
|
||||
newRow[8] = 2;
|
||||
}
|
||||
else
|
||||
{
|
||||
newRow[8] = 0;
|
||||
}
|
||||
newRow[9] = adSpecialId;
|
||||
newRow[10] = row.Index; //"Subtract" one since we don't need to acknowledge the Ad Special Row's existence.
|
||||
newRow[11] = dateId;
|
||||
insertNewTable.Rows.Add(newRow);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
//Determine the row's attribute.
|
||||
var rowAttribute = 0; //Zero (0) means no grouping, its not a header nor a member.
|
||||
if ((bool)row.Cells[(int)SalesTableColumns.IsHeaderRow].Value && !(bool)row.Cells[(int)SalesTableColumns.IsMemberRow].Value)
|
||||
@@ -2597,13 +2525,6 @@ namespace AdvertsingProfitControl
|
||||
newRow[11] = dateId;
|
||||
updateExistingTable.Rows.Add(newRow);
|
||||
}
|
||||
//LogConsole.WriteToLog(FrmLogConsole.Level.Verbose, "Row Dump for row number " + (row.Index + 1) + ".");
|
||||
//LogConsole.WriteToLog(FrmLogConsole.Level.Verbose, "ID : " + rowIdNumber + " Sold: " + row.Cells[(int)SalesTableColumns.Sold].EditedFormattedValue);
|
||||
//LogConsole.WriteToLog(FrmLogConsole.Level.Verbose, "Sale Price : " + row.Cells[(int)SalesTableColumns.SalePrice].EditedFormattedValue + " Total Sales: " + row.Cells[(int)SalesTableColumns.TotalSales].EditedFormattedValue);
|
||||
//LogConsole.WriteToLog(FrmLogConsole.Level.Verbose, "Cost: " + row.Cells[(int)SalesTableColumns.Cost].EditedFormattedValue + " Profit Return: " + row.Cells[(int)SalesTableColumns.ProfitReturn].EditedFormattedValue);
|
||||
//LogConsole.WriteToLog(FrmLogConsole.Level.Verbose, "Total Profit Return: " + row.Cells[(int)SalesTableColumns.TotalProfitReturn].EditedFormattedValue + " Ad Item ID: " + adItemId);
|
||||
//LogConsole.WriteToLog(FrmLogConsole.Level.Verbose, "Row Attribute: " + rowAttribute + " Ad Special ID: " + adSpecialId);
|
||||
//LogConsole.WriteToLog(FrmLogConsole.Level.Verbose, "Row Position: " + row.Index + (_adSpecialIndex != -1 && row.Index > _adSpecialIndex ? 1 : 0) + " Date ID: " + dateId);
|
||||
}
|
||||
|
||||
if (insertNewTable.Rows.Count == 0 && updateExistingTable.Rows.Count == 0)
|
||||
@@ -2698,76 +2619,6 @@ namespace AdvertsingProfitControl
|
||||
return TrimmingOperationResult.FailedToTrim;
|
||||
}
|
||||
}
|
||||
//Check for repeated ad items in the ad special section
|
||||
if (_adSpecialIndex != -1 && row.Index > _adSpecialIndex)
|
||||
{
|
||||
//Attempt to grab the index of an ad item, if it is not found then the return value is -1.
|
||||
var repeatedItemIndex =
|
||||
_usedAdItems[0].FindIndex(x => x == row.Cells[(int)InventoryTableColumns.AdItem].EditedFormattedValue.ToString());
|
||||
//Skip checking this row if an index is found, and use the values in the row at the previous index found.
|
||||
if (repeatedItemIndex != -1)
|
||||
{
|
||||
//Add the values to their respective data table.
|
||||
if (rowIdNumber == 0)
|
||||
{
|
||||
//This table is full of data not in the database so the ID column isn't needed.
|
||||
//0:Beginning Inventory 1:Received 2:Total Inventory 3:Ending Inventory
|
||||
//4:AdItemID 5:RowAttribute 6:GroupID 7:RowPosition 8:DateID
|
||||
var newRow = new object[9];
|
||||
newRow[0] = inventoryDataGridView.Rows[repeatedItemIndex].Cells[(int)InventoryTableColumns.BeginningInventory].EditedFormattedValue.ToString();//Sold, is string
|
||||
newRow[1] = inventoryDataGridView.Rows[repeatedItemIndex].Cells[(int)InventoryTableColumns.Recieved].EditedFormattedValue.ToString();//SalePrice, is string
|
||||
newRow[2] = inventoryDataGridView.Rows[repeatedItemIndex].Cells[(int) InventoryTableColumns.Total].EditedFormattedValue.ToString(); //Total Inventory is string
|
||||
newRow[3] = inventoryDataGridView.Rows[repeatedItemIndex].Cells[(int)InventoryTableColumns.EndingInventory].EditedFormattedValue.ToString();//Ending Inventory, is string
|
||||
newRow[4] = adItemId;
|
||||
if ((bool)inventoryDataGridView.Rows[repeatedItemIndex].Cells[(int)InventoryTableColumns.IsHeaderRow].Value)
|
||||
{
|
||||
newRow[5] = 1;
|
||||
}
|
||||
else if ((bool)inventoryDataGridView.Rows[repeatedItemIndex].Cells[(int)InventoryTableColumns.IsMemberRow].Value)
|
||||
{
|
||||
newRow[5] = 2;
|
||||
}
|
||||
else
|
||||
{
|
||||
newRow[5] = 0;
|
||||
}
|
||||
newRow[6] = adSpecialId;
|
||||
newRow[7] = row.Index; //"Subtract" one since we don't need to acknowledge the Ad Special Row's existence.
|
||||
newRow[8] = dateId;
|
||||
insertNewTable.Rows.Add(newRow);
|
||||
continue;
|
||||
}
|
||||
else
|
||||
{
|
||||
//This table is full of data that is already in the database.
|
||||
//0:ID 1:BeginningInventory 2:Received 3:TotalInventory 4:EndingInventory
|
||||
//5:AdItemID 6:RowAttribute 7:GroupID 8:RowPosition 9:DateID
|
||||
var newRow = new object[10];
|
||||
newRow[0] = rowIdNumber;
|
||||
newRow[1] = inventoryDataGridView.Rows[repeatedItemIndex].Cells[(int)InventoryTableColumns.BeginningInventory].EditedFormattedValue.ToString();//Sold, is string
|
||||
newRow[2] = inventoryDataGridView.Rows[repeatedItemIndex].Cells[(int)InventoryTableColumns.Recieved].EditedFormattedValue.ToString();//SalePrice, is string
|
||||
newRow[3] = inventoryDataGridView.Rows[repeatedItemIndex].Cells[(int)InventoryTableColumns.Total].EditedFormattedValue.ToString(); //Total Inventory is string
|
||||
newRow[4] = inventoryDataGridView.Rows[repeatedItemIndex].Cells[(int)InventoryTableColumns.EndingInventory].EditedFormattedValue.ToString();//Ending Inventory, is string
|
||||
newRow[5] = adItemId;
|
||||
if ((bool)inventoryDataGridView.Rows[repeatedItemIndex].Cells[(int)InventoryTableColumns.IsHeaderRow].Value)
|
||||
{
|
||||
newRow[6] = 1;
|
||||
}
|
||||
else if ((bool)inventoryDataGridView.Rows[repeatedItemIndex].Cells[(int)InventoryTableColumns.IsMemberRow].Value)
|
||||
{
|
||||
newRow[6] = 2;
|
||||
}
|
||||
else
|
||||
{
|
||||
newRow[6] = 0;
|
||||
}
|
||||
newRow[7] = adSpecialId;
|
||||
newRow[8] = row.Index; //"Subtract" one since we don't need to acknowledge the Ad Special Row's existence.
|
||||
newRow[9] = dateId;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
//Determine the row's attribute.
|
||||
var rowAttribute = 0; //Zero (0) means no grouping, its not a header nor a member.
|
||||
if ((bool)row.Cells[(int)InventoryTableColumns.IsHeaderRow].Value && !(bool)row.Cells[(int)InventoryTableColumns.IsMemberRow].Value)
|
||||
|
||||
Reference in New Issue
Block a user