diff --git a/AdvertsingProfitControl/BackPageGenerator.cs b/AdvertsingProfitControl/BackPageGenerator.cs
index d5234e6..5494fff 100644
--- a/AdvertsingProfitControl/BackPageGenerator.cs
+++ b/AdvertsingProfitControl/BackPageGenerator.cs
@@ -77,6 +77,7 @@ namespace AdvertsingProfitControl
writer.AddAttribute(HtmlTextWriterAttribute.Style, "border:none");
writer.RenderBeginTag(HtmlTextWriterTag.Td);
//TODO: Validate the last week's date
+ //Grab last week's date
writer.Write("Week Ending " + date.AddDays(-7).ToString("d") + "");
writer.RenderEndTag();//td
writer.RenderEndTag();//tr
@@ -130,25 +131,33 @@ namespace AdvertsingProfitControl
writer.RenderEndTag();//td
//Sunday td
writer.AddAttribute(HtmlTextWriterAttribute.Style, "text-align:left");
+ if (weeklySale == null) writer.AddAttribute(HtmlTextWriterAttribute.Colspan, "2");
writer.RenderBeginTag(HtmlTextWriterTag.Td);
writer.Write("Sunday");
writer.RenderEndTag();//td
- //Dollar amount for Sunday
- writer.AddAttribute(HtmlTextWriterAttribute.Style, "text-align:right");
- writer.RenderBeginTag(HtmlTextWriterTag.Td);
- if (weeklySale != null) writer.Write($"{weeklySale.Sunday:N2}");
- writer.RenderEndTag();//dollar amount Sunday end
- writer.RenderEndTag();//tr
+ if (weeklySale != null)
+ {
+ //Dollar amount for Sunday
+ writer.AddAttribute(HtmlTextWriterAttribute.Style, "text-align:right");
+ writer.RenderBeginTag(HtmlTextWriterTag.Td);
+ writer.Write($"{weeklySale.Sunday:N2}");
+ writer.RenderEndTag();//dollar amount Sunday end
+ writer.RenderEndTag();//tr
+ }
//Row spanned row for the header row.
writer.RenderBeginTag(HtmlTextWriterTag.Tr);
writer.AddAttribute(HtmlTextWriterAttribute.Style, "text-align:left");
+ if (weeklySale == null) writer.AddAttribute(HtmlTextWriterAttribute.Colspan, "2");
writer.RenderBeginTag(HtmlTextWriterTag.Td);//Monday cell
writer.Write("Monday");
writer.RenderEndTag();//Monday end
- writer.AddAttribute(HtmlTextWriterAttribute.Style, "text-align:right");
- writer.RenderBeginTag(HtmlTextWriterTag.Td);//Monday dollar amount
- if (weeklySale != null) writer.Write($"{weeklySale.Monday:N2}");
- writer.RenderEndTag();//end Monday dollar amount
+ if (weeklySale != null)
+ {
+ writer.AddAttribute(HtmlTextWriterAttribute.Style, "text-align:right");
+ writer.RenderBeginTag(HtmlTextWriterTag.Td);//Monday dollar amount
+ writer.Write($"{weeklySale.Monday:N2}");
+ writer.RenderEndTag();//end Monday dollar amount
+ }
writer.RenderEndTag();//end spanned row tr
//
for (var i = 0; i < 33; i++)
@@ -382,62 +391,74 @@ namespace AdvertsingProfitControl
{
case 0:
writer.AddAttribute(HtmlTextWriterAttribute.Style, "text-align:left");
+ if (sales == null) writer.AddAttribute(HtmlTextWriterAttribute.Colspan, "2");
writer.RenderBeginTag(HtmlTextWriterTag.Td);//Tuesday
writer.Write("Tuesday");
writer.RenderEndTag();
+ if (sales == null) break;
writer.AddAttribute(HtmlTextWriterAttribute.Style, "text-align:right");
writer.RenderBeginTag(HtmlTextWriterTag.Td);//Tuesday
- if (sales != null && sales.Tuesday != 0) writer.Write($@"{sales.Tuesday:N2}");
+ writer.Write($@"{sales.Tuesday:N2}");
writer.RenderEndTag();
break;
case 1:
writer.AddAttribute(HtmlTextWriterAttribute.Style, "text-align:left");
+ if(sales == null) writer.AddAttribute(HtmlTextWriterAttribute.Colspan, "2");
writer.RenderBeginTag(HtmlTextWriterTag.Td);//Wednesday
writer.Write("Wednesday");
writer.RenderEndTag();
+ if (sales == null) break;
writer.AddAttribute(HtmlTextWriterAttribute.Style, "text-align:right");
writer.RenderBeginTag(HtmlTextWriterTag.Td);
- if (sales != null && sales.Wednesday != 0) writer.Write($@"{sales.Wednesday:N2}");
+ writer.Write($@"{sales.Wednesday:N2}");
writer.RenderEndTag();
break;
case 2:
writer.AddAttribute(HtmlTextWriterAttribute.Style, "text-align:left");
+ if (sales == null) writer.AddAttribute(HtmlTextWriterAttribute.Colspan, "2");
writer.RenderBeginTag(HtmlTextWriterTag.Td);//Thursday
writer.Write("Thursday");
writer.RenderEndTag();
+ if (sales == null) break;
writer.AddAttribute(HtmlTextWriterAttribute.Style, "text-align:right");
writer.RenderBeginTag(HtmlTextWriterTag.Td);
- if (sales != null && sales.Thursday != 0) writer.Write($@"{sales.Thursday:N2}");
+ writer.Write($@"{sales.Thursday:N2}");
writer.RenderEndTag();
break;
case 3:
writer.AddAttribute(HtmlTextWriterAttribute.Style, "text-align:left");
+ if (sales == null) writer.AddAttribute(HtmlTextWriterAttribute.Colspan, "2");
writer.RenderBeginTag(HtmlTextWriterTag.Td);//Friday
writer.Write("Friday");
writer.RenderEndTag();
+ if (sales == null) break;
writer.AddAttribute(HtmlTextWriterAttribute.Style, "text-align:right");
writer.RenderBeginTag(HtmlTextWriterTag.Td);
- if (sales != null && sales.Friday != 0) writer.Write($@"{sales.Friday:N2}");
+ writer.Write($@"{sales.Friday:N2}");
writer.RenderEndTag();
break;
case 4:
writer.AddAttribute(HtmlTextWriterAttribute.Style, "text-align:left");
+ if (sales == null) writer.AddAttribute(HtmlTextWriterAttribute.Colspan, "2");
writer.RenderBeginTag(HtmlTextWriterTag.Td);//Saturday
writer.Write("Saturday");
writer.RenderEndTag();
+ if (sales == null) break;
writer.AddAttribute(HtmlTextWriterAttribute.Style, "text-align:right");
writer.RenderBeginTag(HtmlTextWriterTag.Td);
- if (sales != null && sales.Saturday != 0) writer.Write($@"{sales.Saturday:N2}");
+ writer.Write($@"{sales.Saturday:N2}");
writer.RenderEndTag();
break;
case 5:
writer.AddAttribute(HtmlTextWriterAttribute.Style, "text-align:left");
+ if (sales == null) writer.AddAttribute(HtmlTextWriterAttribute.Colspan, "2");
writer.RenderBeginTag(HtmlTextWriterTag.Td);//total sales
writer.Write("Total Sales");
writer.RenderEndTag();
+ if (sales == null) break;
writer.AddAttribute(HtmlTextWriterAttribute.Style, "text-align:right");
writer.RenderBeginTag(HtmlTextWriterTag.Td);
- if (sales != null && sales.TotalSales != 0) writer.Write($@"{sales.TotalSales:N2}");
+ writer.Write($@"{sales.TotalSales:N2}");
writer.RenderEndTag();
break;
}
@@ -449,82 +470,98 @@ namespace AdvertsingProfitControl
{
case 7:
writer.AddAttribute(HtmlTextWriterAttribute.Style, "text-align:left");
+ if (taxable == null) writer.AddAttribute(HtmlTextWriterAttribute.Colspan, "2");
writer.RenderBeginTag(HtmlTextWriterTag.Td);//Sunday
writer.Write("Sunday");
writer.RenderEndTag();
+ if (taxable == null) break;
writer.AddAttribute(HtmlTextWriterAttribute.Style, "text-align:right");
writer.RenderBeginTag(HtmlTextWriterTag.Td);
- if (taxable != null && taxable.Sunday != 0) writer.Write($@"{taxable.Sunday:N2}");
+ writer.Write($@"{taxable.Sunday:N2}");
writer.RenderEndTag();
break;
case 8:
writer.AddAttribute(HtmlTextWriterAttribute.Style, "text-align:left");
+ if (taxable == null) writer.AddAttribute(HtmlTextWriterAttribute.Colspan, "2");
writer.RenderBeginTag(HtmlTextWriterTag.Td);//Monday
writer.Write("Monday");
writer.RenderEndTag();
+ if (taxable == null) break;
writer.AddAttribute(HtmlTextWriterAttribute.Style, "text-align:right");
writer.RenderBeginTag(HtmlTextWriterTag.Td);
- if (taxable != null && taxable.Monday != 0) writer.Write($@"{taxable.Monday:N2}");
+ writer.Write($@"{taxable.Monday:N2}");
writer.RenderEndTag();
break;
case 9:
writer.AddAttribute(HtmlTextWriterAttribute.Style, "text-align:left");
+ if (taxable == null) writer.AddAttribute(HtmlTextWriterAttribute.Colspan, "2");
writer.RenderBeginTag(HtmlTextWriterTag.Td);//Tuesday
writer.Write("Tuesday");
writer.RenderEndTag();
+ if (taxable == null) break;
writer.AddAttribute(HtmlTextWriterAttribute.Style, "text-align:right");
writer.RenderBeginTag(HtmlTextWriterTag.Td);//Tuesday
- if (taxable != null && taxable.Tuesday != 0) writer.Write($@"{taxable.Tuesday:N2}");
+ writer.Write($@"{taxable.Tuesday:N2}");
writer.RenderEndTag();
break;
case 10:
writer.AddAttribute(HtmlTextWriterAttribute.Style, "text-align:left");
+ if (taxable == null) writer.AddAttribute(HtmlTextWriterAttribute.Colspan, "2");
writer.RenderBeginTag(HtmlTextWriterTag.Td);//Wednesday
writer.Write("Wednesday");
writer.RenderEndTag();
+ if (taxable == null) break;
writer.AddAttribute(HtmlTextWriterAttribute.Style, "text-align:right");
writer.RenderBeginTag(HtmlTextWriterTag.Td);
- if (taxable != null && taxable.Wednesday != 0) writer.Write($@"{taxable.Wednesday:N2}");
+ writer.Write($@"{taxable.Wednesday:N2}");
writer.RenderEndTag();
break;
case 11:
writer.AddAttribute(HtmlTextWriterAttribute.Style, "text-align:left");
+ if (taxable == null) writer.AddAttribute(HtmlTextWriterAttribute.Colspan, "2");
writer.RenderBeginTag(HtmlTextWriterTag.Td);//Thursday
writer.Write("Thursday");
writer.RenderEndTag();
+ if (taxable == null) break;
writer.AddAttribute(HtmlTextWriterAttribute.Style, "text-align:right");
writer.RenderBeginTag(HtmlTextWriterTag.Td);
- if (taxable != null && taxable.Thursday != 0) writer.Write($@"{taxable.Thursday:N2}");
+ writer.Write($@"{taxable.Thursday:N2}");
writer.RenderEndTag();
break;
case 12:
writer.AddAttribute(HtmlTextWriterAttribute.Style, "text-align:left");
+ if (taxable == null) writer.AddAttribute(HtmlTextWriterAttribute.Colspan, "2");
writer.RenderBeginTag(HtmlTextWriterTag.Td);//Friday
writer.Write("Friday");
writer.RenderEndTag();
+ if (taxable == null) break;
writer.AddAttribute(HtmlTextWriterAttribute.Style, "text-align:right");
writer.RenderBeginTag(HtmlTextWriterTag.Td);
- if (taxable != null && taxable.Friday != 0) writer.Write($@"{taxable.Friday:N2}");
+ writer.Write($@"{taxable.Friday:N2}");
writer.RenderEndTag();
break;
case 13:
writer.AddAttribute(HtmlTextWriterAttribute.Style, "text-align:left");
+ if (taxable == null) writer.AddAttribute(HtmlTextWriterAttribute.Colspan, "2");
writer.RenderBeginTag(HtmlTextWriterTag.Td);//Saturday
writer.Write("Saturday");
writer.RenderEndTag();
+ if (taxable == null) break;
writer.AddAttribute(HtmlTextWriterAttribute.Style, "text-align:right");
writer.RenderBeginTag(HtmlTextWriterTag.Td);
- if (taxable != null && taxable.Saturday != 0) writer.Write($@"{taxable.Saturday:N2}");
+ writer.Write($@"{taxable.Saturday:N2}");
writer.RenderEndTag();
break;
case 14:
writer.AddAttribute(HtmlTextWriterAttribute.Style, "text-align:left");
+ if (taxable == null) writer.AddAttribute(HtmlTextWriterAttribute.Colspan, "2");
writer.RenderBeginTag(HtmlTextWriterTag.Td);//total sales
writer.Write("Total Taxable");
writer.RenderEndTag();
+ if (taxable == null) break;
writer.AddAttribute(HtmlTextWriterAttribute.Style, "text-align:right");
writer.RenderBeginTag(HtmlTextWriterTag.Td);
- if (taxable != null && taxable.Total != 0) writer.Write($@"{taxable.Total:N2}");
+ writer.Write($@"{taxable.Total:N2}");
writer.RenderEndTag();
break;
}
@@ -536,19 +573,23 @@ namespace AdvertsingProfitControl
{
case 16:
writer.AddAttribute(HtmlTextWriterAttribute.Style, "text-align:left");
+ if (sales == null) writer.AddAttribute(HtmlTextWriterAttribute.Colspan, "2");
writer.RenderBeginTag(HtmlTextWriterTag.Td);//Total sales
writer.Write("1. Total Sales");
- writer.RenderEndTag();
+ writer.RenderEndTag();
+ if (sales == null) break;
writer.AddAttribute(HtmlTextWriterAttribute.Style, "text-align:right");
writer.RenderBeginTag(HtmlTextWriterTag.Td);
- if(sales != null && sales.TotalSales != 0) writer.Write($@"{sales.TotalSales:N2}");
+ writer.Write($@"{sales.TotalSales:N2}");
writer.RenderEndTag();
break;
case 17:
writer.AddAttribute(HtmlTextWriterAttribute.Style, "text-align:left");
+ if (sales == null) writer.AddAttribute(HtmlTextWriterAttribute.Colspan, "2");
writer.RenderBeginTag(HtmlTextWriterTag.Td);//Less cost of sales
writer.Write("2. Less Cost of Sales");
writer.RenderEndTag();
+ if (sales == null) break;
writer.AddAttribute(HtmlTextWriterAttribute.Style, "text-align:right");
writer.RenderBeginTag(HtmlTextWriterTag.Td);
if (invoices.Count > 0)
@@ -568,45 +609,45 @@ namespace AdvertsingProfitControl
break;
case 19:
writer.AddAttribute(HtmlTextWriterAttribute.Style, "border-top:none");
+ if (sales == null) writer.AddAttribute(HtmlTextWriterAttribute.Colspan, "2");
writer.RenderBeginTag(HtmlTextWriterTag.Td);//dollar gross amount
writer.Write("
");//Empty cell
writer.RenderEndTag();
+ if (sales == null) break;
writer.AddAttribute(HtmlTextWriterAttribute.Style, "text-align:right");
writer.RenderBeginTag(HtmlTextWriterTag.Td);
- if (sales != null)
+ if (invoices.Count > 0)
{
- if (invoices.Count > 0)
- {
- var dollarGross = sales.TotalSales - invoices.Sum(x => x.InvoiceNetAmountAtCost);
- if(dollarGross != 0)
- writer.Write($@"{dollarGross:N2}");
- }
+ var dollarGross = sales.TotalSales - invoices.Sum(x => x.InvoiceNetAmountAtCost);
+ if(dollarGross != 0)
+ writer.Write($@"{dollarGross:N2}");
}
writer.RenderEndTag();
break;
case 20:
- writer.AddAttribute(HtmlTextWriterAttribute.Style, "border-right:none; text-align:left");
+ writer.AddAttribute(HtmlTextWriterAttribute.Style, sales == null ? string.Empty : "border-right:none;" + " text-align:left");
+ if (sales == null) writer.AddAttribute(HtmlTextWriterAttribute.Colspan, "2");
writer.RenderBeginTag(HtmlTextWriterTag.Td);//Gross dollar percentage
writer.Write("% Gross Profit");
writer.RenderEndTag();
+ if (sales == null) break;
writer.AddAttribute(HtmlTextWriterAttribute.Style, "text-align:right; border-left:none");
writer.RenderBeginTag(HtmlTextWriterTag.Td);
- if (sales != null)
+ if (invoices.Count > 0)
{
- if (invoices.Count > 0)
- {
- var grossDollarPercentage = (sales.TotalSales - invoices.Sum(x => x.InvoiceNetAmountAtCost)) / sales.TotalSales;
- if(grossDollarPercentage != 0)
- writer.Write($@"{grossDollarPercentage:P}");
- }
+ var grossDollarPercentage = (sales.TotalSales - invoices.Sum(x => x.InvoiceNetAmountAtCost)) / sales.TotalSales;
+ if(grossDollarPercentage != 0)
+ writer.Write($@"{grossDollarPercentage:P}");
}
writer.RenderEndTag();
break;
case 21:
writer.AddAttribute(HtmlTextWriterAttribute.Style, "text-align:left");
+ if (sales == null) writer.AddAttribute(HtmlTextWriterAttribute.Colspan, "2");
writer.RenderBeginTag(HtmlTextWriterTag.Td);//Weekly department Expense
writer.Write("Est. Wkly. Dept. Expense");
writer.RenderEndTag();
+ if (sales == null) break;
writer.RenderBeginTag(HtmlTextWriterTag.Td);
writer.Write("
");
writer.RenderEndTag();
diff --git a/AdvertsingProfitControl/FrontPageGenerator.cs b/AdvertsingProfitControl/FrontPageGenerator.cs
index fa60283..6b6f78c 100644
--- a/AdvertsingProfitControl/FrontPageGenerator.cs
+++ b/AdvertsingProfitControl/FrontPageGenerator.cs
@@ -190,7 +190,6 @@ namespace AdvertsingProfitControl
var adSpecialIndex = -1;
for (var i = 0; i < 25; i++)
{
- var skipCheck = false;
if (i < projections.Count)
{
if (projections[i].FkAdSpecialId != null)
@@ -203,7 +202,6 @@ namespace AdvertsingProfitControl
writer.RenderBeginTag(HtmlTextWriterTag.Td);
writer.Write(projections[i].AdSpecial.Name);
writer.RenderEndTag(); //ad special cell
- skipCheck = true;
SelectCostAnalysisCell(i, ref writer, actualA, actualB, departmentRecord, comments);
writer.RenderEndTag(); //end ad special row
}
@@ -276,7 +274,7 @@ namespace AdvertsingProfitControl
//Pad
AppendPaddingRow(ref writer);
}
- if(!skipCheck) SelectCostAnalysisCell(adSpecialIndex != -1 ? i + 1 : i, ref writer, actualA, actualB, departmentRecord, comments);
+ SelectCostAnalysisCell(adSpecialIndex != -1 ? i + 1 : i, ref writer, actualA, actualB, departmentRecord, comments);
writer.RenderEndTag();//tr
}
//Create the totals row
@@ -312,7 +310,7 @@ namespace AdvertsingProfitControl
writer.AddAttribute(HtmlTextWriterAttribute.Style, "border-right:double");
writer.AddAttribute(HtmlTextWriterAttribute.Colspan, "2");
writer.RenderBeginTag(HtmlTextWriterTag.Td);//actual sales B (total profit return)
- writer.Write("(B) " + $"{actualB:N2}");
+ writer.Write("(B) " + $"{actualB:N2}");
writer.RenderEndTag();//end actual sales A (total profit return)
writer.RenderEndTag();//end totals row
//end totals row
@@ -402,25 +400,44 @@ namespace AdvertsingProfitControl
private void SelectCostAnalysisCell(int rowIndex, ref HtmlTextWriter writer, decimal? actualA, decimal? actualB, WeeklySale departmentRecord, Note comments)
{
+ if (actualA == null)
+ {
+ actualA = 0;
+ }
+
+ if (actualB == null)
+ {
+ actualB = 0;
+ }
+
+ if (comments == null)
+ {
+ comments = new Note { Remark = string.Empty };
+ }
+
+ if (departmentRecord == null)
+ {
+ departmentRecord = new WeeklySale {TotalSales = 0};
+ }
+
switch (rowIndex)
{
case 0:
RenderCostsAnalysisCell(CostAnalysisCells.SalesProduced, ref writer, actualA, "3");
break;
case 3:
- if (departmentRecord != null)
- RenderCostsAnalysisCell(CostAnalysisCells.RemainingSales, ref writer, departmentRecord.TotalSales - actualA, "4");
+ RenderCostsAnalysisCell(CostAnalysisCells.RemainingSales, ref writer, departmentRecord.TotalSales - actualA, "4");
break;
case 7:
RenderCostsAnalysisCell(CostAnalysisCells.ProfitReturnFromAdItems, ref writer, actualB, "3");
break;
case 10:
//get cross profit return
- var s = (decimal) 0.3;
+ var s = (decimal) 0.3; //0.3 is the shrink TODO:Change the shrink into a variable.
RenderCostsAnalysisCell(CostAnalysisCells.ProfitReturnFromRemainingSales, ref writer, s * (departmentRecord.TotalSales - actualA), "5");
break;
case 15:
- var x = (decimal) 0.3 * (departmentRecord.TotalSales - actualA);
+ var x = (decimal) 0.3 * (departmentRecord.TotalSales - actualA); //0.3 is the shrink
RenderCostsAnalysisCell(CostAnalysisCells.TotalProfitReturn, ref writer, x + actualB, "4");
break;
case 19:
diff --git a/AdvertsingProfitControl/Properties/AssemblyInfo.cs b/AdvertsingProfitControl/Properties/AssemblyInfo.cs
index a4b27c6..18851d2 100644
--- a/AdvertsingProfitControl/Properties/AssemblyInfo.cs
+++ b/AdvertsingProfitControl/Properties/AssemblyInfo.cs
@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("3.3.0.0")]
-[assembly: AssemblyFileVersion("3.3.0.0")]
+[assembly: AssemblyVersion("3.4.0.0")]
+[assembly: AssemblyFileVersion("3.4.0.0")]