Fixed a bug in the Inventory and Actual Sales tables where the user could leave a row without an ad item. Fixed data type mismatch with the database insertion methods.
This commit is contained in:
Binary file not shown.
@@ -262,7 +262,7 @@ namespace AdvertsingProfitControl
|
|||||||
TotalProfitReturn = 7,
|
TotalProfitReturn = 7,
|
||||||
IsHeaderRow = 8,
|
IsHeaderRow = 8,
|
||||||
IsMemberRow = 9,
|
IsMemberRow = 9,
|
||||||
IsDirty = 10,
|
IsDirty = 10
|
||||||
}
|
}
|
||||||
|
|
||||||
public enum InventoryTableColumns
|
public enum InventoryTableColumns
|
||||||
@@ -275,7 +275,7 @@ namespace AdvertsingProfitControl
|
|||||||
EndingInventory = 5,
|
EndingInventory = 5,
|
||||||
IsHeaderRow = 6,
|
IsHeaderRow = 6,
|
||||||
IsMemberRow = 7,
|
IsMemberRow = 7,
|
||||||
IsDirty = 8,
|
IsDirty = 8
|
||||||
}
|
}
|
||||||
|
|
||||||
public enum InvoiceTableColumns
|
public enum InvoiceTableColumns
|
||||||
|
|||||||
@@ -55,7 +55,7 @@ namespace AdvertsingProfitControl
|
|||||||
oleDbCommand.Parameters.AddWithValue("RowAttribute", int.Parse(salesTable.Rows[i][7].ToString()));
|
oleDbCommand.Parameters.AddWithValue("RowAttribute", int.Parse(salesTable.Rows[i][7].ToString()));
|
||||||
oleDbCommand.Parameters.AddWithValue("adSpecialID", int.Parse(salesTable.Rows[i][8].ToString()));
|
oleDbCommand.Parameters.AddWithValue("adSpecialID", int.Parse(salesTable.Rows[i][8].ToString()));
|
||||||
oleDbCommand.Parameters.AddWithValue("RowPosition", int.Parse(salesTable.Rows[i][9].ToString()));
|
oleDbCommand.Parameters.AddWithValue("RowPosition", int.Parse(salesTable.Rows[i][9].ToString()));
|
||||||
oleDbCommand.Parameters.AddWithValue("dateID", salesTable.Rows[i][10]);
|
oleDbCommand.Parameters.AddWithValue("dateID", int.Parse(salesTable.Rows[i][10].ToString()));
|
||||||
oleDbCommand.ExecuteNonQuery();
|
oleDbCommand.ExecuteNonQuery();
|
||||||
oleDbCommand.Parameters.Clear();
|
oleDbCommand.Parameters.Clear();
|
||||||
//Row index is only used to keep track of what row failed to update.
|
//Row index is only used to keep track of what row failed to update.
|
||||||
@@ -150,15 +150,15 @@ namespace AdvertsingProfitControl
|
|||||||
//11:FK_DateID
|
//11:FK_DateID
|
||||||
oleDbCommand.Parameters.AddWithValue("Sold", salesTable.Rows[i][1]);
|
oleDbCommand.Parameters.AddWithValue("Sold", salesTable.Rows[i][1]);
|
||||||
oleDbCommand.Parameters.AddWithValue("SalesPrice", salesTable.Rows[i][2]);
|
oleDbCommand.Parameters.AddWithValue("SalesPrice", salesTable.Rows[i][2]);
|
||||||
oleDbCommand.Parameters.AddWithValue("TotalSales", salesTable.Rows[i][3]);
|
oleDbCommand.Parameters.AddWithValue("TotalSales", int.Parse(salesTable.Rows[i][3].ToString()));
|
||||||
oleDbCommand.Parameters.AddWithValue("Cost", salesTable.Rows[i][4]);
|
oleDbCommand.Parameters.AddWithValue("Cost", int.Parse(salesTable.Rows[i][4].ToString()));
|
||||||
oleDbCommand.Parameters.AddWithValue("ProfitReturn", salesTable.Rows[i][5]);
|
oleDbCommand.Parameters.AddWithValue("ProfitReturn", int.Parse(salesTable.Rows[i][5].ToString()));
|
||||||
oleDbCommand.Parameters.AddWithValue("TotalProfitReturn", salesTable.Rows[i][6]);
|
oleDbCommand.Parameters.AddWithValue("TotalProfitReturn", int.Parse(salesTable.Rows[i][6].ToString()));
|
||||||
oleDbCommand.Parameters.AddWithValue("FK_AdItemID", salesTable.Rows[i][7]);
|
oleDbCommand.Parameters.AddWithValue("FK_AdItemID", int.Parse(salesTable.Rows[i][7].ToString()));
|
||||||
oleDbCommand.Parameters.AddWithValue("RowAttribute", salesTable.Rows[i][8]);
|
oleDbCommand.Parameters.AddWithValue("RowAttribute", int.Parse(salesTable.Rows[i][8].ToString()));
|
||||||
oleDbCommand.Parameters.AddWithValue("adSpecialID", salesTable.Rows[i][9]);
|
oleDbCommand.Parameters.AddWithValue("adSpecialID", int.Parse(salesTable.Rows[i][9].ToString()));
|
||||||
oleDbCommand.Parameters.AddWithValue("RowPosition", salesTable.Rows[i][10]);
|
oleDbCommand.Parameters.AddWithValue("RowPosition", int.Parse(salesTable.Rows[i][10].ToString()));
|
||||||
oleDbCommand.Parameters.AddWithValue("ID", salesTable.Rows[i][0]);
|
oleDbCommand.Parameters.AddWithValue("ID", int.Parse(salesTable.Rows[i][0].ToString()));
|
||||||
oleDbCommand.ExecuteNonQuery();
|
oleDbCommand.ExecuteNonQuery();
|
||||||
oleDbCommand.Parameters.Clear();
|
oleDbCommand.Parameters.Clear();
|
||||||
//Row index is only used to keep track of what row failed to update.
|
//Row index is only used to keep track of what row failed to update.
|
||||||
@@ -253,11 +253,11 @@ namespace AdvertsingProfitControl
|
|||||||
oleDbCommand.Parameters.AddWithValue("Received", table.Rows[i][1]);
|
oleDbCommand.Parameters.AddWithValue("Received", table.Rows[i][1]);
|
||||||
oleDbCommand.Parameters.AddWithValue("TotalInventory", table.Rows[i][2]);
|
oleDbCommand.Parameters.AddWithValue("TotalInventory", table.Rows[i][2]);
|
||||||
oleDbCommand.Parameters.AddWithValue("EndingInventory", table.Rows[i][3]);
|
oleDbCommand.Parameters.AddWithValue("EndingInventory", table.Rows[i][3]);
|
||||||
oleDbCommand.Parameters.AddWithValue("AdItemID", table.Rows[i][4]);
|
oleDbCommand.Parameters.AddWithValue("AdItemID", int.Parse(table.Rows[i][4].ToString()));
|
||||||
oleDbCommand.Parameters.AddWithValue("RowAttribute", table.Rows[i][5]);
|
oleDbCommand.Parameters.AddWithValue("RowAttribute", int.Parse(table.Rows[i][5].ToString()));
|
||||||
oleDbCommand.Parameters.AddWithValue("FK_AdSpecialGroup", table.Rows[i][6]);
|
oleDbCommand.Parameters.AddWithValue("FK_AdSpecialGroup", int.Parse(table.Rows[i][6].ToString()));
|
||||||
oleDbCommand.Parameters.AddWithValue("RowPosition", table.Rows[i][7]);
|
oleDbCommand.Parameters.AddWithValue("RowPosition", int.Parse(table.Rows[i][7].ToString()));
|
||||||
oleDbCommand.Parameters.AddWithValue("DateID", table.Rows[i][8]);
|
oleDbCommand.Parameters.AddWithValue("DateID", int.Parse(table.Rows[i][8].ToString()));
|
||||||
oleDbCommand.ExecuteNonQuery();
|
oleDbCommand.ExecuteNonQuery();
|
||||||
oleDbCommand.Parameters.Clear();
|
oleDbCommand.Parameters.Clear();
|
||||||
//Row index is only used to keep track of what row failed to update.
|
//Row index is only used to keep track of what row failed to update.
|
||||||
@@ -345,11 +345,11 @@ namespace AdvertsingProfitControl
|
|||||||
oleDbCommand.Parameters.AddWithValue("Received", table.Rows[i][2]);
|
oleDbCommand.Parameters.AddWithValue("Received", table.Rows[i][2]);
|
||||||
oleDbCommand.Parameters.AddWithValue("TotalInventory", table.Rows[i][3]);
|
oleDbCommand.Parameters.AddWithValue("TotalInventory", table.Rows[i][3]);
|
||||||
oleDbCommand.Parameters.AddWithValue("EndingInventory", table.Rows[i][4]);
|
oleDbCommand.Parameters.AddWithValue("EndingInventory", table.Rows[i][4]);
|
||||||
oleDbCommand.Parameters.AddWithValue("AdItemID", table.Rows[i][5]);
|
oleDbCommand.Parameters.AddWithValue("AdItemID", int.Parse(table.Rows[i][5].ToString()));
|
||||||
oleDbCommand.Parameters.AddWithValue("RowAttribute", table.Rows[i][6]);
|
oleDbCommand.Parameters.AddWithValue("RowAttribute", int.Parse(table.Rows[i][6].ToString()));
|
||||||
oleDbCommand.Parameters.AddWithValue("FK_AdSpecialGroup", table.Rows[i][7]);
|
oleDbCommand.Parameters.AddWithValue("FK_AdSpecialGroup", int.Parse(table.Rows[i][7].ToString()));
|
||||||
oleDbCommand.Parameters.AddWithValue("RowPosition", table.Rows[i][8]);
|
oleDbCommand.Parameters.AddWithValue("RowPosition", int.Parse(table.Rows[i][8].ToString()));
|
||||||
oleDbCommand.Parameters.AddWithValue("ID", table.Rows[i][0]);
|
oleDbCommand.Parameters.AddWithValue("ID", int.Parse(table.Rows[i][0].ToString()));
|
||||||
oleDbCommand.ExecuteNonQuery();
|
oleDbCommand.ExecuteNonQuery();
|
||||||
oleDbCommand.Parameters.Clear();
|
oleDbCommand.Parameters.Clear();
|
||||||
//Row index is only used to keep track of what row failed to update.
|
//Row index is only used to keep track of what row failed to update.
|
||||||
|
|||||||
@@ -743,6 +743,7 @@ namespace AdvertsingProfitControl
|
|||||||
if (Regex.Replace(projectionsDataGridView.Rows[e.RowIndex].Cells[adItemIndex].EditedFormattedValue.ToString(), @"\s+", "") == "")
|
if (Regex.Replace(projectionsDataGridView.Rows[e.RowIndex].Cells[adItemIndex].EditedFormattedValue.ToString(), @"\s+", "") == "")
|
||||||
{
|
{
|
||||||
MessageBox.Show(@"An ad item is required.", @"No Ad Item Specified");
|
MessageBox.Show(@"An ad item is required.", @"No Ad Item Specified");
|
||||||
|
projectionsDataGridView.Rows[e.RowIndex].Cells[adItemIndex].Selected = true;
|
||||||
e.Cancel = true;
|
e.Cancel = true;
|
||||||
}
|
}
|
||||||
//Check to see if the user left a row that already exists and doesn't require being copied over.
|
//Check to see if the user left a row that already exists and doesn't require being copied over.
|
||||||
@@ -809,16 +810,11 @@ namespace AdvertsingProfitControl
|
|||||||
rowContents[i] = projectionsDataGridView.Rows[e.RowIndex].Cells[i].EditedFormattedValue.ToString();
|
rowContents[i] = projectionsDataGridView.Rows[e.RowIndex].Cells[i].EditedFormattedValue.ToString();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case (int)SalesTableColumns.IsHeaderRow:
|
|
||||||
rowContents[i] = projectionsDataGridView.Rows[e.RowIndex].Cells[(int)SalesTableColumns.IsHeaderRow].Value;
|
|
||||||
break;
|
|
||||||
case (int)SalesTableColumns.IsMemberRow:
|
|
||||||
rowContents[i] = projectionsDataGridView.Rows[e.RowIndex].Cells[(int)SalesTableColumns.IsMemberRow].Value;
|
|
||||||
break;
|
|
||||||
case (int)SalesTableColumns.IsDirty:
|
case (int)SalesTableColumns.IsDirty:
|
||||||
rowContents[i] = true;
|
rowContents[i] = true;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
if(i >= (int)SalesTableColumns.IsHeaderRow) continue;
|
||||||
rowContents[i] = "";
|
rowContents[i] = "";
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -839,12 +835,6 @@ namespace AdvertsingProfitControl
|
|||||||
inventoryNewRow[(int)InventoryTableColumns.AdItem] =
|
inventoryNewRow[(int)InventoryTableColumns.AdItem] =
|
||||||
projectionsDataGridView.Rows[e.RowIndex].Cells[i].EditedFormattedValue.ToString();
|
projectionsDataGridView.Rows[e.RowIndex].Cells[i].EditedFormattedValue.ToString();
|
||||||
break;
|
break;
|
||||||
case (int)SalesTableColumns.IsHeaderRow:
|
|
||||||
rowContents[(int)InventoryTableColumns.IsHeaderRow] = projectionsDataGridView.Rows[e.RowIndex].Cells[i].Value;
|
|
||||||
break;
|
|
||||||
case (int)SalesTableColumns.IsMemberRow:
|
|
||||||
rowContents[(int)InventoryTableColumns.IsMemberRow] = projectionsDataGridView.Rows[e.RowIndex].Cells[i].Value;
|
|
||||||
break;
|
|
||||||
case (int)SalesTableColumns.IsDirty:
|
case (int)SalesTableColumns.IsDirty:
|
||||||
inventoryNewRow[(int)InventoryTableColumns.IsDirty] = true;
|
inventoryNewRow[(int)InventoryTableColumns.IsDirty] = true;
|
||||||
break;
|
break;
|
||||||
@@ -1072,23 +1062,24 @@ namespace AdvertsingProfitControl
|
|||||||
private void ValidateInventoryRow(object sender, DataGridViewCellCancelEventArgs e)
|
private void ValidateInventoryRow(object sender, DataGridViewCellCancelEventArgs e)
|
||||||
{
|
{
|
||||||
//Grab the index of the ad item, assuming the Sales tables and the Inventory table stay in the same position.
|
//Grab the index of the ad item, assuming the Sales tables and the Inventory table stay in the same position.
|
||||||
const int adItemIndex = (int)SalesTableColumns.AdItem;
|
const int adItemIndex = (int)InventoryTableColumns.AdItem;
|
||||||
//Do not even attempt anything since this is a new row and nothing to worry about.
|
//Do not even attempt anything since this is a new row and nothing to worry about.
|
||||||
if (inventoryDataGridView.Rows[e.RowIndex].IsNewRow)
|
if (inventoryDataGridView.Rows[e.RowIndex].IsNewRow)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
//Clear all whitespace and check for a null value in the ad item column.
|
||||||
|
if (Regex.Replace(inventoryDataGridView.Rows[e.RowIndex].Cells[adItemIndex].EditedFormattedValue.ToString(), @"\s+", "") == "")
|
||||||
|
{
|
||||||
|
MessageBox.Show(@"An ad item is required.", @"No Ad Item Specified");
|
||||||
|
inventoryDataGridView.Rows[e.RowIndex].Cells[adItemIndex].Selected = true;
|
||||||
|
e.Cancel = true;
|
||||||
|
}
|
||||||
//Check to see if the user left a row that already exists and doesn't require being copied over.
|
//Check to see if the user left a row that already exists and doesn't require being copied over.
|
||||||
if (inventoryDataGridView.Rows[e.RowIndex].Cells[adItemIndex].EditedFormattedValue.ToString() == actualSalesDataGridView.Rows[e.RowIndex].Cells[adItemIndex].EditedFormattedValue.ToString())
|
if (inventoryDataGridView.Rows[e.RowIndex].Cells[adItemIndex].EditedFormattedValue.ToString() == actualSalesDataGridView.Rows[e.RowIndex].Cells[adItemIndex].EditedFormattedValue.ToString())
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
//Clear all whitespace and check for a null value in the ad item column.
|
|
||||||
if (Regex.Replace(projectionsDataGridView.Rows[e.RowIndex].Cells[adItemIndex].EditedFormattedValue.ToString(), @"\s+", "") == "")
|
|
||||||
{
|
|
||||||
MessageBox.Show(@"An ad item is required.", @"No Ad Item Specified");
|
|
||||||
e.Cancel = true;
|
|
||||||
}
|
|
||||||
//Now check to make sure there is an ad item present, otherwise throw an error and block the user from leaving the current row.
|
//Now check to make sure there is an ad item present, otherwise throw an error and block the user from leaving the current row.
|
||||||
if (inventoryDataGridView.Rows[e.RowIndex].Cells[adItemIndex].EditedFormattedValue.ToString() != "")
|
if (inventoryDataGridView.Rows[e.RowIndex].Cells[adItemIndex].EditedFormattedValue.ToString() != "")
|
||||||
{
|
{
|
||||||
@@ -1124,16 +1115,14 @@ namespace AdvertsingProfitControl
|
|||||||
case (int)SalesTableColumns.AdItem:
|
case (int)SalesTableColumns.AdItem:
|
||||||
rowContents[i] = inventoryDataGridView.Rows[e.RowIndex].Cells[(int)InventoryTableColumns.AdItem].EditedFormattedValue.ToString();
|
rowContents[i] = inventoryDataGridView.Rows[e.RowIndex].Cells[(int)InventoryTableColumns.AdItem].EditedFormattedValue.ToString();
|
||||||
break;
|
break;
|
||||||
case (int)SalesTableColumns.IsHeaderRow:
|
|
||||||
rowContents[i] = inventoryDataGridView.Rows[e.RowIndex].Cells[(int)InventoryTableColumns.IsHeaderRow].Value;
|
|
||||||
break;
|
|
||||||
case (int)SalesTableColumns.IsMemberRow:
|
|
||||||
rowContents[i] = projectionsDataGridView.Rows[e.RowIndex].Cells[(int)InventoryTableColumns.IsMemberRow].Value;
|
|
||||||
break;
|
|
||||||
case (int)SalesTableColumns.IsDirty:
|
case (int)SalesTableColumns.IsDirty:
|
||||||
rowContents[i] = true;
|
rowContents[i] = true;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
if (i >= (int) InventoryTableColumns.IsHeaderRow)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
rowContents[i] = "";
|
rowContents[i] = "";
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -1144,7 +1133,7 @@ namespace AdvertsingProfitControl
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
MessageBox.Show(@"An Ad Item is required.", @"Invalid Ad Item");
|
MessageBox.Show(@"An Ad Item is required.", @"Invalid Ad Item");
|
||||||
projectionsDataGridView.Rows[e.RowIndex].Cells[adItemIndex].Selected = true;
|
inventoryDataGridView.Rows[e.RowIndex].Cells[adItemIndex].Selected = true;
|
||||||
e.Cancel = true;
|
e.Cancel = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1231,17 +1220,18 @@ namespace AdvertsingProfitControl
|
|||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
//Check to see if the user left a row that already exists and doesn't require being copied over.
|
|
||||||
if (actualSalesDataGridView.Rows[e.RowIndex].Cells[adItemIndex].EditedFormattedValue.ToString() == projectionsDataGridView.Rows[e.RowIndex].Cells[adItemIndex].EditedFormattedValue.ToString())
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
//Clear all whitespace and check for a null value in the ad item column.
|
//Clear all whitespace and check for a null value in the ad item column.
|
||||||
if (Regex.Replace(actualSalesDataGridView.Rows[e.RowIndex].Cells[adItemIndex].EditedFormattedValue.ToString(), @"\s+", "") == "")
|
if (Regex.Replace(actualSalesDataGridView.Rows[e.RowIndex].Cells[adItemIndex].EditedFormattedValue.ToString(), @"\s+", "") == "")
|
||||||
{
|
{
|
||||||
MessageBox.Show(@"An ad item is required.", @"No Ad Item Specified");
|
MessageBox.Show(@"An ad item is required.", @"No Ad Item Specified");
|
||||||
|
actualSalesDataGridView.Rows[e.RowIndex].Cells[adItemIndex].Selected = true;
|
||||||
e.Cancel = true;
|
e.Cancel = true;
|
||||||
}
|
}
|
||||||
|
//Check to see if the user left a row that already exists and doesn't require being copied over.
|
||||||
|
if (actualSalesDataGridView.Rows[e.RowIndex].Cells[adItemIndex].EditedFormattedValue.ToString() == projectionsDataGridView.Rows[e.RowIndex].Cells[adItemIndex].EditedFormattedValue.ToString())
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
//Now check to make sure there is an ad item present, otherwise throw an error and block the user from leaving the current row.
|
//Now check to make sure there is an ad item present, otherwise throw an error and block the user from leaving the current row.
|
||||||
if (actualSalesDataGridView.Rows[e.RowIndex].Cells[adItemIndex].EditedFormattedValue.ToString() != "")
|
if (actualSalesDataGridView.Rows[e.RowIndex].Cells[adItemIndex].EditedFormattedValue.ToString() != "")
|
||||||
{
|
{
|
||||||
@@ -1283,16 +1273,11 @@ namespace AdvertsingProfitControl
|
|||||||
case (int)SalesTableColumns.Cost:
|
case (int)SalesTableColumns.Cost:
|
||||||
rowContents[i] = actualSalesDataGridView.Rows[e.RowIndex].Cells[i].EditedFormattedValue.ToString();
|
rowContents[i] = actualSalesDataGridView.Rows[e.RowIndex].Cells[i].EditedFormattedValue.ToString();
|
||||||
break;
|
break;
|
||||||
case (int)SalesTableColumns.IsHeaderRow:
|
|
||||||
rowContents[i] = actualSalesDataGridView.Rows[e.RowIndex].Cells[(int) SalesTableColumns.IsHeaderRow].Value;
|
|
||||||
break;
|
|
||||||
case (int)SalesTableColumns.IsMemberRow:
|
|
||||||
rowContents[i] = actualSalesDataGridView.Rows[e.RowIndex].Cells[(int)SalesTableColumns.IsMemberRow].Value;
|
|
||||||
break;
|
|
||||||
case (int)SalesTableColumns.IsDirty:
|
case (int)SalesTableColumns.IsDirty:
|
||||||
rowContents[i] = true;
|
rowContents[i] = true;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
if (i >= (int)SalesTableColumns.IsHeaderRow) continue;
|
||||||
rowContents[i] = "";
|
rowContents[i] = "";
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -1310,12 +1295,6 @@ namespace AdvertsingProfitControl
|
|||||||
inventoryNewRow[(int)InventoryTableColumns.AdItem] =
|
inventoryNewRow[(int)InventoryTableColumns.AdItem] =
|
||||||
actualSalesDataGridView.Rows[e.RowIndex].Cells[i].EditedFormattedValue.ToString();
|
actualSalesDataGridView.Rows[e.RowIndex].Cells[i].EditedFormattedValue.ToString();
|
||||||
break;
|
break;
|
||||||
case (int)SalesTableColumns.IsHeaderRow:
|
|
||||||
rowContents[(int)InventoryTableColumns.IsHeaderRow] = actualSalesDataGridView.Rows[e.RowIndex].Cells[(int)SalesTableColumns.IsHeaderRow].Value;
|
|
||||||
break;
|
|
||||||
case (int)SalesTableColumns.IsMemberRow:
|
|
||||||
rowContents[(int)InventoryTableColumns.IsMemberRow] = actualSalesDataGridView.Rows[e.RowIndex].Cells[(int)SalesTableColumns.IsMemberRow].Value;
|
|
||||||
break;
|
|
||||||
case (int)SalesTableColumns.IsDirty:
|
case (int)SalesTableColumns.IsDirty:
|
||||||
inventoryNewRow[(int)InventoryTableColumns.IsDirty] = true;
|
inventoryNewRow[(int)InventoryTableColumns.IsDirty] = true;
|
||||||
break;
|
break;
|
||||||
@@ -1332,7 +1311,7 @@ namespace AdvertsingProfitControl
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
MessageBox.Show(@"An Ad Item is required.", @"Invalid Ad Item");
|
MessageBox.Show(@"An Ad Item is required.", @"Invalid Ad Item");
|
||||||
projectionsDataGridView.Rows[e.RowIndex].Cells[adItemIndex].Selected = true;
|
actualSalesDataGridView.Rows[e.RowIndex].Cells[adItemIndex].Selected = true;
|
||||||
e.Cancel = true;
|
e.Cancel = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1715,7 +1694,21 @@ namespace AdvertsingProfitControl
|
|||||||
DataTable updateTable;
|
DataTable updateTable;
|
||||||
informationLabel.Text = @"Compressing data tables...";
|
informationLabel.Text = @"Compressing data tables...";
|
||||||
var operationStatus = ConstructCleanedSalesTable("Projections", dateId, out trimmedTable, out updateTable);
|
var operationStatus = ConstructCleanedSalesTable("Projections", dateId, out trimmedTable, out updateTable);
|
||||||
|
if (operationStatus == TrimmingOperationResult.FailedToTrim)
|
||||||
|
{
|
||||||
|
informationLabel.Text = @"Failed to trim the Projections table.";
|
||||||
|
return;
|
||||||
|
}
|
||||||
ProcessTrimmingStatusResult(projectionsDataGridView, "Projections", operationStatus, trimmedTable, updateTable);
|
ProcessTrimmingStatusResult(projectionsDataGridView, "Projections", operationStatus, trimmedTable, updateTable);
|
||||||
|
trimmedTable.Rows.Clear();
|
||||||
|
updateTable.Rows.Clear();
|
||||||
|
operationStatus = ConstructCleanedInventoryTable(dateId, out trimmedTable, out updateTable);
|
||||||
|
if (operationStatus == TrimmingOperationResult.FailedToTrim)
|
||||||
|
{
|
||||||
|
informationLabel.Text = @"Failed to trim the Inventory table.";
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
ProcessTrimmingStatusForInventory(operationStatus, trimmedTable, updateTable);
|
||||||
//Create the transaction scope.
|
//Create the transaction scope.
|
||||||
//By default the TransactionScopeOption is "Required", so if an ambient transaction does not
|
//By default the TransactionScopeOption is "Required", so if an ambient transaction does not
|
||||||
//exist then the new transaction that is made (in the first method) becomes the root transaction.
|
//exist then the new transaction that is made (in the first method) becomes the root transaction.
|
||||||
@@ -2237,11 +2230,66 @@ namespace AdvertsingProfitControl
|
|||||||
}
|
}
|
||||||
informationLabel.Text += Environment.NewLine + @"All operations completed successfully.";
|
informationLabel.Text += Environment.NewLine + @"All operations completed successfully.";
|
||||||
break;
|
break;
|
||||||
case TrimmingOperationResult.FailedToTrim:
|
|
||||||
errorLabel.Text = @"Failed to trim " + tableName + @".";
|
|
||||||
informationLabel.Text = "";
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
dataGridView.RefreshEdit();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ProcessTrimmingStatusForInventory(TrimmingOperationResult operationStatus, DataTable trimmedTable, DataTable updateTable)
|
||||||
|
{
|
||||||
|
//Create the database interaction objects.
|
||||||
|
var dbT = new DatabaseTracker();
|
||||||
|
var dbW = new DatabaseWriter(dbT.DatabaseConnectionString);
|
||||||
|
DbWriterStatus dbWriterStatus;
|
||||||
|
switch (operationStatus)
|
||||||
|
{
|
||||||
|
case TrimmingOperationResult.NoChangesRequired:
|
||||||
|
informationLabel.Text += Environment.NewLine + @"No changes for the Inventory table detected.";
|
||||||
|
break;
|
||||||
|
case TrimmingOperationResult.CreatedNewInsertionTable:
|
||||||
|
informationLabel.Text += Environment.NewLine + @"Inserting new changes to the Inventory table.";
|
||||||
|
dbWriterStatus = dbW.InsertIntoInventoryTable(trimmedTable, dbT.DatabaseConnectionString);
|
||||||
|
//Spin through the collection and update the affected rows.
|
||||||
|
foreach (var rowIndex in dbWriterStatus.GetRowCollection())
|
||||||
|
{
|
||||||
|
inventoryDataGridView.Rows[rowIndex.Key - 1].Cells[(int)InventoryTableColumns.Id].Value = rowIndex.Value;
|
||||||
|
inventoryDataGridView.Rows[rowIndex.Key - 1].Cells[(int)InventoryTableColumns.IsDirty].Value = false;
|
||||||
|
}
|
||||||
|
informationLabel.Text += Environment.NewLine + @"Inventory table successfully added to the database.";
|
||||||
|
break;
|
||||||
|
case TrimmingOperationResult.CreatedUpdateTable:
|
||||||
|
informationLabel.Text += Environment.NewLine + @"Updating changes made to the Inventory table.";
|
||||||
|
dbWriterStatus = dbW.UpdateInventoryTable(updateTable, dbT.DatabaseConnectionString);
|
||||||
|
//Spin through the collection and update the affected rows.
|
||||||
|
foreach (var rowIndex in dbWriterStatus.GetRowCollection())
|
||||||
|
{
|
||||||
|
//Only reset the IsDirty value to false since the updates when through.
|
||||||
|
inventoryDataGridView.Rows[rowIndex.Key - 1].Cells[(int)InventoryTableColumns.IsDirty].Value = false;
|
||||||
|
}
|
||||||
|
informationLabel.Text += Environment.NewLine + @"Inventory table successfully updated.";
|
||||||
|
break;
|
||||||
|
case TrimmingOperationResult.CreatedNewInsertionAndUpdateTables:
|
||||||
|
//Insert the new values...
|
||||||
|
informationLabel.Text += Environment.NewLine + @"Inserting new changes to the Inventory table.";
|
||||||
|
dbWriterStatus = dbW.InsertIntoInventoryTable(trimmedTable, dbT.DatabaseConnectionString);
|
||||||
|
//Spin through the collection and update the affected rows.
|
||||||
|
foreach (var rowIndex in dbWriterStatus.GetRowCollection())
|
||||||
|
{
|
||||||
|
inventoryDataGridView.Rows[rowIndex.Key - 1].Cells[(int)InventoryTableColumns.Id].Value = rowIndex.Value;
|
||||||
|
inventoryDataGridView.Rows[rowIndex.Key - 1].Cells[(int)InventoryTableColumns.IsDirty].Value = false;
|
||||||
|
}
|
||||||
|
//... and update the existing values.
|
||||||
|
informationLabel.Text += Environment.NewLine + @"Updating changes made to the Inventory table.";
|
||||||
|
dbWriterStatus = dbW.UpdateInventoryTable(updateTable, dbT.DatabaseConnectionString);
|
||||||
|
//Spin through the collection and update the affected rows.
|
||||||
|
foreach (var rowIndex in dbWriterStatus.GetRowCollection())
|
||||||
|
{
|
||||||
|
//Only reset the IsDirty value to false since the updates when through.
|
||||||
|
inventoryDataGridView.Rows[rowIndex.Key - 1].Cells[(int)InventoryTableColumns.IsDirty].Value = false;
|
||||||
|
}
|
||||||
|
informationLabel.Text += Environment.NewLine + @"All operations completed successfully.";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
inventoryDataGridView.RefreshEdit();
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
|
|||||||
Binary file not shown.
@@ -14,7 +14,7 @@
|
|||||||
<dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" />
|
<dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" />
|
||||||
</dsig:Transforms>
|
</dsig:Transforms>
|
||||||
<dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" />
|
<dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" />
|
||||||
<dsig:DigestValue>bbS3aUBt18bmu2EFWZGzfaB2KUwqvo/PJgwQ2X5UpGo=</dsig:DigestValue>
|
<dsig:DigestValue>RAx8Npq1SZBvpDMCKEn72t59h34L92CEq1Pbw42lEP0=</dsig:DigestValue>
|
||||||
</hash>
|
</hash>
|
||||||
</dependentAssembly>
|
</dependentAssembly>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|||||||
@@ -43,14 +43,14 @@
|
|||||||
</dependentAssembly>
|
</dependentAssembly>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<dependentAssembly dependencyType="install" allowDelayedBinding="true" codebase="AdvertsingProfitControl.exe" size="3520512">
|
<dependentAssembly dependencyType="install" allowDelayedBinding="true" codebase="AdvertsingProfitControl.exe" size="3521536">
|
||||||
<assemblyIdentity name="AdvertsingProfitControl" version="0.9.5.2" language="neutral" processorArchitecture="amd64" />
|
<assemblyIdentity name="AdvertsingProfitControl" version="0.9.5.2" language="neutral" processorArchitecture="amd64" />
|
||||||
<hash>
|
<hash>
|
||||||
<dsig:Transforms>
|
<dsig:Transforms>
|
||||||
<dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" />
|
<dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" />
|
||||||
</dsig:Transforms>
|
</dsig:Transforms>
|
||||||
<dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" />
|
<dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" />
|
||||||
<dsig:DigestValue>BnL2vMS++iK9YFGaGKfELbajknBgq+TkNZn3K5yRC8w=</dsig:DigestValue>
|
<dsig:DigestValue>WhwHiylhNOOwlXzM3cD3DBPd29Ezk+2JmpmdTTNjSDI=</dsig:DigestValue>
|
||||||
</hash>
|
</hash>
|
||||||
</dependentAssembly>
|
</dependentAssembly>
|
||||||
</dependency>
|
</dependency>
|
||||||
@@ -84,7 +84,7 @@
|
|||||||
<dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" />
|
<dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" />
|
||||||
</dsig:Transforms>
|
</dsig:Transforms>
|
||||||
<dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" />
|
<dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" />
|
||||||
<dsig:DigestValue>nDAH4e73CtUOempeqgnfoRyypkOO191kktA8yxaiU3g=</dsig:DigestValue>
|
<dsig:DigestValue>heLBQIYVVS62s1jc7c8ySCJryJ3KAmItGoYKY1zxkCg=</dsig:DigestValue>
|
||||||
</hash>
|
</hash>
|
||||||
</file>
|
</file>
|
||||||
<file name="Stretched Logo Collection.ico" size="370070">
|
<file name="Stretched Logo Collection.ico" size="370070">
|
||||||
|
|||||||
@@ -14,7 +14,7 @@
|
|||||||
<dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" />
|
<dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" />
|
||||||
</dsig:Transforms>
|
</dsig:Transforms>
|
||||||
<dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" />
|
<dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" />
|
||||||
<dsig:DigestValue>bbS3aUBt18bmu2EFWZGzfaB2KUwqvo/PJgwQ2X5UpGo=</dsig:DigestValue>
|
<dsig:DigestValue>RAx8Npq1SZBvpDMCKEn72t59h34L92CEq1Pbw42lEP0=</dsig:DigestValue>
|
||||||
</hash>
|
</hash>
|
||||||
</dependentAssembly>
|
</dependentAssembly>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|||||||
@@ -43,14 +43,14 @@
|
|||||||
</dependentAssembly>
|
</dependentAssembly>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<dependentAssembly dependencyType="install" allowDelayedBinding="true" codebase="AdvertsingProfitControl.exe" size="3520512">
|
<dependentAssembly dependencyType="install" allowDelayedBinding="true" codebase="AdvertsingProfitControl.exe" size="3521536">
|
||||||
<assemblyIdentity name="AdvertsingProfitControl" version="0.9.5.2" language="neutral" processorArchitecture="amd64" />
|
<assemblyIdentity name="AdvertsingProfitControl" version="0.9.5.2" language="neutral" processorArchitecture="amd64" />
|
||||||
<hash>
|
<hash>
|
||||||
<dsig:Transforms>
|
<dsig:Transforms>
|
||||||
<dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" />
|
<dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" />
|
||||||
</dsig:Transforms>
|
</dsig:Transforms>
|
||||||
<dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" />
|
<dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" />
|
||||||
<dsig:DigestValue>BnL2vMS++iK9YFGaGKfELbajknBgq+TkNZn3K5yRC8w=</dsig:DigestValue>
|
<dsig:DigestValue>WhwHiylhNOOwlXzM3cD3DBPd29Ezk+2JmpmdTTNjSDI=</dsig:DigestValue>
|
||||||
</hash>
|
</hash>
|
||||||
</dependentAssembly>
|
</dependentAssembly>
|
||||||
</dependency>
|
</dependency>
|
||||||
@@ -84,7 +84,7 @@
|
|||||||
<dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" />
|
<dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" />
|
||||||
</dsig:Transforms>
|
</dsig:Transforms>
|
||||||
<dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" />
|
<dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" />
|
||||||
<dsig:DigestValue>nDAH4e73CtUOempeqgnfoRyypkOO191kktA8yxaiU3g=</dsig:DigestValue>
|
<dsig:DigestValue>heLBQIYVVS62s1jc7c8ySCJryJ3KAmItGoYKY1zxkCg=</dsig:DigestValue>
|
||||||
</hash>
|
</hash>
|
||||||
</file>
|
</file>
|
||||||
<file name="Stretched Logo Collection.ico" size="370070">
|
<file name="Stretched Logo Collection.ico" size="370070">
|
||||||
|
|||||||
@@ -14,7 +14,7 @@
|
|||||||
<dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" />
|
<dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" />
|
||||||
</dsig:Transforms>
|
</dsig:Transforms>
|
||||||
<dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" />
|
<dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" />
|
||||||
<dsig:DigestValue>bbS3aUBt18bmu2EFWZGzfaB2KUwqvo/PJgwQ2X5UpGo=</dsig:DigestValue>
|
<dsig:DigestValue>RAx8Npq1SZBvpDMCKEn72t59h34L92CEq1Pbw42lEP0=</dsig:DigestValue>
|
||||||
</hash>
|
</hash>
|
||||||
</dependentAssembly>
|
</dependentAssembly>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|||||||
@@ -43,14 +43,14 @@
|
|||||||
</dependentAssembly>
|
</dependentAssembly>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<dependentAssembly dependencyType="install" allowDelayedBinding="true" codebase="AdvertsingProfitControl.exe" size="3520512">
|
<dependentAssembly dependencyType="install" allowDelayedBinding="true" codebase="AdvertsingProfitControl.exe" size="3521536">
|
||||||
<assemblyIdentity name="AdvertsingProfitControl" version="0.9.5.2" language="neutral" processorArchitecture="amd64" />
|
<assemblyIdentity name="AdvertsingProfitControl" version="0.9.5.2" language="neutral" processorArchitecture="amd64" />
|
||||||
<hash>
|
<hash>
|
||||||
<dsig:Transforms>
|
<dsig:Transforms>
|
||||||
<dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" />
|
<dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" />
|
||||||
</dsig:Transforms>
|
</dsig:Transforms>
|
||||||
<dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" />
|
<dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" />
|
||||||
<dsig:DigestValue>BnL2vMS++iK9YFGaGKfELbajknBgq+TkNZn3K5yRC8w=</dsig:DigestValue>
|
<dsig:DigestValue>WhwHiylhNOOwlXzM3cD3DBPd29Ezk+2JmpmdTTNjSDI=</dsig:DigestValue>
|
||||||
</hash>
|
</hash>
|
||||||
</dependentAssembly>
|
</dependentAssembly>
|
||||||
</dependency>
|
</dependency>
|
||||||
@@ -84,7 +84,7 @@
|
|||||||
<dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" />
|
<dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" />
|
||||||
</dsig:Transforms>
|
</dsig:Transforms>
|
||||||
<dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" />
|
<dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" />
|
||||||
<dsig:DigestValue>nDAH4e73CtUOempeqgnfoRyypkOO191kktA8yxaiU3g=</dsig:DigestValue>
|
<dsig:DigestValue>heLBQIYVVS62s1jc7c8ySCJryJ3KAmItGoYKY1zxkCg=</dsig:DigestValue>
|
||||||
</hash>
|
</hash>
|
||||||
</file>
|
</file>
|
||||||
<file name="Stretched Logo Collection.ico" size="370070">
|
<file name="Stretched Logo Collection.ico" size="370070">
|
||||||
|
|||||||
Reference in New Issue
Block a user