I am relatively new to Visual Studio 2010 and new as well to the C# language. I am currently working on a project and have reached a point where I cannot see why my code with its conditions does not finally do the "Check In" procedure. It's a relatively
simple auto rental program where the code can be written once and the "variables" allow change as well so there should be no need of a program ever again. I have come to this part of my "snag" and cannot seem to see a way to make it work.
I had a friend who programs say it's probably something simple I am overlooking. So I will post it here and see the solutions from a different perspective. Here is the following code....the code which allows the calculations to be done on check in right on
this line of code
if (dateTimeInTextBox.Text != "" && odomInTextBox.Text != "")
If the conditions are met....I do not see why the code will not execute...could it be my DateTime or is it something else. I would appreciate any help with this problem.
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace Virginia_Auto_Rental { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void calculateButton_Click(object sender, EventArgs e) { int /*hoursInteger,*/ daysInteger, weeksInteger, monthsInteger; decimal /*hoursRateDecimal, */ daysRateDecimal, /*hoursChargedDecimal, */ daysChargedDecimal, weeksChargedDecimal, monthsChargedDecimal, odomInDecimal, odomOutDecimal, milesDrivenDecimal, milesAllowedDecimal, excessMilesDecimal, excessMilesRateDecimal, excessMilesChargedDecimal, cdwRateDecimal, cdwChargedDecimal, gasDecimal, gasChargedDecimal, subtotalDecimal, SubtotalDecimal, Subtotal1Decimal, Subtotal2Decimal, Subtotal3Decimal, salesTaxRateDecimal, addChargeDecimal, minusChargeDecimal, depositAmountRateDecimal, netDueVARDecimal, prePaidRentDecimal, daysSavedDecimal, daysSavedAmountDecimal, daysAddedDecimal, daysPaidDecimal, extraDaysDecimal, extraCDWDecimal, subDecimal, SubDecimal, Sub1Decimal, Sub2Decimal, Sub3Decimal, Sub4Decimal, newNetDueVarDecimal, newPrePaidRentDecimal, netDueYouDecimal, totalDaysDecimal, totalDaysRentedDecimal, totalCDWChargedDecimal; double daysAddDouble, weeksAddDouble, monthsAddDouble; if (dateTimeOutTextBox.Text != "") { DateTime dateTimeOutDateTime; string.Format("MM'/'dd'/'yyyy hh':'mm tt"); dateTimeOutDateTime = DateTime.Parse(dateTimeOutTextBox.Text); } else { DateTime dateTimeOutDateTime; string.Format("MM'/'dd'/'yyyy hh':'mm tt"); dateTimeOutDateTime = DateTime.Now; dateTimeOutTextBox.Text = dateTimeOutDateTime.ToString("MM'/'dd'/'yyyy hh':'mm tt"); /* try { //Convert input variable to numeric and assign to a variable. hoursInteger = int.Parse(hoursTextBox.Text); try { //Convert input variable to numeric and assign to a variable. hoursRateDecimal = decimal.Parse(hoursRateTextBox.Text); */ try { //Convert input variable to numeric and assign to a variable. daysInteger = int.Parse(daysTextBox.Text); try { //Convert input variable to numeric and assign to a variable. daysRateDecimal = decimal.Parse(daysRateTextBox.Text); try { //Convert input variable to numeric and assign to a variable. weeksInteger = int.Parse(weeksTextBox.Text); try { //Convert input variable to numeric and assign to a variable. monthsInteger = int.Parse(monthsTextBox.Text); try { //Convert input variable to numeric and assign to a variable cdwRateDecimal = decimal.Parse(cdwRateTextBox.Text); try { //Convert the input variable to numeric and assign to a variable odomOutDecimal = decimal.Parse(odomOutTextBox.Text); try { //Convert input variable to numeric and assign to a variable. excessMilesRateDecimal = decimal.Parse(perMileRateTextBox.Text); try { //Convert the input variable to numeric and assign to a variable milesAllowedDecimal = decimal.Parse(milesAllowedTextBox.Text); try { //Convert the input variable to numeric and assign to a variable odomInDecimal = decimal.Parse(odomInTextBox.Text); try { //Convert the input variable to numeric and assign to a variable gasDecimal = decimal.Parse(gasTextBox.Text); try { //Convert the input variable to numeric and assign to a variable salesTaxRateDecimal = decimal.Parse(salesTaxRateTextBox.Text); try { //Convert the input variable to numeric and assign to a variable addChargeDecimal = decimal.Parse(addRateTextBox.Text); try { //Convert the input variable to numeric and assign to a variable minusChargeDecimal = decimal.Parse(minusRateTextBox.Text); try { //Convert the input variable to numeric and assign to a variable depositAmountRateDecimal = decimal.Parse(depositAmountTextBox.Text); if (daysInteger > 0 && weeksInteger == 0 && monthsInteger == 0) { //Perform the calculations daysSavedDecimal = (daysInteger / 7); daysSavedAmountDecimal = daysSavedDecimal * daysRateDecimal; daysChargedDecimal = (daysInteger * daysRateDecimal) - daysSavedAmountDecimal; cdwChargedDecimal = daysInteger * cdwRateDecimal; milesDrivenDecimal = odomInDecimal - odomOutDecimal; excessMilesDecimal = milesDrivenDecimal - milesAllowedDecimal; if (excessMilesDecimal < 0) { excessMilesDecimal = 0; } excessMilesChargedDecimal = excessMilesDecimal * excessMilesRateDecimal; gasChargedDecimal = gasDecimal; subtotalDecimal = excessMilesChargedDecimal + daysChargedDecimal + cdwChargedDecimal + gasChargedDecimal; SubtotalDecimal = (subtotalDecimal * salesTaxRateDecimal) + subtotalDecimal; Subtotal1Decimal = SubtotalDecimal + addChargeDecimal; Subtotal2Decimal = Subtotal1Decimal - minusChargeDecimal; Subtotal3Decimal = Subtotal2Decimal + depositAmountRateDecimal; netDueVARDecimal = Subtotal3Decimal; prePaidRentDecimal = Subtotal3Decimal - depositAmountRateDecimal; //Format the answers daysChargesTextBox.Text = daysChargedDecimal.ToString("C"); cdwRateTextBox.Text = cdwRateDecimal.ToString("N"); cdwChargesTextBox.Text = cdwChargedDecimal.ToString("C"); milesDrivenTextBox.Text = milesDrivenDecimal.ToString("N"); excessMilesTextBox1.Text = excessMilesDecimal.ToString("N"); excessMilesTextBox2.Text = excessMilesDecimal.ToString("N"); perMileChargesTextBox.Text = excessMilesChargedDecimal.ToString("C"); gasChargesTextBox.Text = gasChargedDecimal.ToString("C"); subTotalTextBox.Text = subtotalDecimal.ToString("C"); salesTaxChargesTextBox.Text = SubtotalDecimal.ToString("C"); addChargesTextBox.Text = Subtotal1Decimal.ToString("C"); minusChargesTextBox.Text = Subtotal2Decimal.ToString("C"); depositChargesTextBox.Text = Subtotal3Decimal.ToString("C"); netDueVARTextBox.Text = netDueVARDecimal.ToString("C"); prePaidRentTextBox.Text = prePaidRentDecimal.ToString("C"); depositTextBox.Text = depositAmountRateDecimal.ToString("C"); //Calculate Date/Times TimeSpan days = new System.TimeSpan(daysInteger); daysAddDouble = double.Parse(daysTextBox.Text); DateTime daysAnswer = dateTimeOutDateTime.AddDays(daysAddDouble); dateTimeDueInTextBox.Text = daysAnswer.ToString("MM'/'dd'/'yyyy hh':'mm tt"); if (dateTimeInTextBox.Text != "" && odomInTextBox.Text != "") { addChargesTextBox.Clear(); minusChargesTextBox.Clear(); try { //Convert input variable to DateTime and assign to a variable. DateTime dateTimeInDateTime = DateTime.Parse(dateTimeInTextBox.Text); System.DateTime date1 = DateTime.Parse(dateTimeOutTextBox.Text); System.DateTime date2 = DateTime.Parse(dateTimeDueInTextBox.Text); System.DateTime date3 = dateTimeInDateTime; System.TimeSpan daysAdded = date3.Subtract(date2); System.TimeSpan daysPaid = date2.Subtract(date1); daysAddedDecimal = Convert.ToDecimal(TimeSpan.Parse("daysAdded").TotalDays); daysPaidDecimal = Convert.ToDecimal(TimeSpan.Parse("daysPaid").TotalDays); totalDaysDecimal = daysAddedDecimal + daysPaidDecimal; totalDaysRentedDecimal = totalDaysDecimal * daysRateDecimal; extraDaysDecimal = (daysAddedDecimal * daysRateDecimal); extraCDWDecimal = (daysAddedDecimal * cdwRateDecimal); totalCDWChargedDecimal = extraCDWDecimal + cdwChargedDecimal; subDecimal = excessMilesChargedDecimal + totalDaysRentedDecimal + totalCDWChargedDecimal + gasChargedDecimal; SubDecimal = (subDecimal * salesTaxRateDecimal) + subDecimal; Sub1Decimal = -totalDaysRentedDecimal - totalCDWChargedDecimal; Sub2Decimal = Sub1Decimal + addChargeDecimal; Sub3Decimal = Sub2Decimal - minusChargeDecimal; Sub4Decimal = Sub3Decimal - depositAmountRateDecimal; newNetDueVarDecimal = Sub4Decimal; newPrePaidRentDecimal = prePaidRentDecimal + Sub4Decimal; if (newNetDueVarDecimal < 0) { netDueYouDecimal = (Sub4Decimal * -1); netDueYouTextBox.Text = netDueYouDecimal.ToString("C"); } //Format the answers daysTextBox.Text = totalDaysDecimal.ToString("N"); daysChargesTextBox.Text = totalDaysRentedDecimal.ToString("C"); cdwRateTextBox.Text = cdwRateDecimal.ToString("N"); cdwChargesTextBox.Text = totalCDWChargedDecimal.ToString("C"); milesDrivenTextBox.Text = milesDrivenDecimal.ToString("N"); excessMilesTextBox1.Text = excessMilesDecimal.ToString("N"); excessMilesTextBox2.Text = excessMilesDecimal.ToString("N"); perMileChargesTextBox.Text = excessMilesChargedDecimal.ToString("C"); gasChargesTextBox.Text = gasChargedDecimal.ToString("C"); subTotalTextBox.Text = subDecimal.ToString("C"); salesTaxChargesTextBox.Text = SubDecimal.ToString("C"); addChargesTextBox.Text = Sub2Decimal.ToString("C"); minusChargesTextBox.Text = Sub3Decimal.ToString("C"); depositChargesTextBox.Text = depositAmountRateDecimal.ToString("C"); netDueVARTextBox.Text = newNetDueVarDecimal.ToString("C"); prePaidRentTextBox.Text = newPrePaidRentDecimal.ToString("C"); depositTextBox.Text = depositAmountRateDecimal.ToString("C"); } catch { MessageBox.Show("Date Times must be formatted properly, MM/dd/yyyy hh:mm tt Which is double digits for Month, double digits for days then four edigits for Year then one space and double digits for hours, a colon, then double digits for minutes, then one space and capital AM or PM", "Data Entry Error", MessageBoxButtons.OK); dateTimeInTextBox.Focus(); dateTimeInTextBox.SelectAll(); } } else if (daysInteger == 0 && weeksInteger > 0 && monthsInteger == 0) { //Perform all calculations weeksChargedDecimal = weeksInteger * (daysRateDecimal * 6); cdwChargedDecimal = (weeksInteger * 7) * cdwRateDecimal; milesDrivenDecimal = odomInDecimal - odomOutDecimal; excessMilesDecimal = milesDrivenDecimal - milesAllowedDecimal; if (excessMilesDecimal < 0) { excessMilesDecimal = 0; } excessMilesChargedDecimal = excessMilesDecimal * excessMilesRateDecimal; gasChargedDecimal = gasDecimal; subtotalDecimal = excessMilesChargedDecimal + weeksChargedDecimal + cdwChargedDecimal + gasChargedDecimal; SubtotalDecimal = (subtotalDecimal * salesTaxRateDecimal) + subtotalDecimal; Subtotal1Decimal = SubtotalDecimal + addChargeDecimal; Subtotal2Decimal = Subtotal1Decimal - minusChargeDecimal; Subtotal3Decimal = Subtotal2Decimal + depositAmountRateDecimal; netDueVARDecimal = Subtotal3Decimal; prePaidRentDecimal = Subtotal3Decimal - depositAmountRateDecimal; //Format the answers weeksRateTextBox.Text = weeksChargedDecimal.ToString("N"); weeksChargesTextBox.Text = weeksChargedDecimal.ToString("C"); cdwRateTextBox.Text = cdwRateDecimal.ToString("N"); cdwChargesTextBox.Text = cdwChargedDecimal.ToString("C"); milesDrivenTextBox.Text = milesDrivenDecimal.ToString("N"); excessMilesTextBox1.Text = excessMilesDecimal.ToString("N"); excessMilesTextBox2.Text = excessMilesDecimal.ToString("N"); perMileChargesTextBox.Text = excessMilesChargedDecimal.ToString("C"); gasChargesTextBox.Text = gasChargedDecimal.ToString("C"); subTotalTextBox.Text = subtotalDecimal.ToString("C"); salesTaxChargesTextBox.Text = SubtotalDecimal.ToString("C"); addChargesTextBox.Text = Subtotal1Decimal.ToString("C"); minusChargesTextBox.Text = Subtotal2Decimal.ToString("C"); depositChargesTextBox.Text = Subtotal3Decimal.ToString("C"); netDueVARTextBox.Text = netDueVARDecimal.ToString("C"); prePaidRentTextBox.Text = prePaidRentDecimal.ToString("C"); depositTextBox.Text = depositAmountRateDecimal.ToString("C"); //Calculate Date/Times TimeSpan weeks = new System.TimeSpan(weeksInteger); weeksAddDouble = double.Parse(weeksTextBox.Text); weeksAddDouble = weeksAddDouble * 7; DateTime weeksAnswer = dateTimeOutDateTime.AddDays(weeksAddDouble); dateTimeDueInTextBox.Text = weeksAnswer.ToString("MM'/'dd'/'yyyy hh':'mm tt"); } else if (daysInteger == 0 && weeksInteger == 0 && monthsInteger > 0) { //Perform all calculations monthsChargedDecimal = monthsInteger * (daysRateDecimal * 26); cdwChargedDecimal = (monthsInteger * 30) * cdwRateDecimal; milesDrivenDecimal = odomInDecimal - odomOutDecimal; excessMilesDecimal = milesDrivenDecimal - milesAllowedDecimal; if (excessMilesDecimal < 0) { excessMilesDecimal = 0; } excessMilesChargedDecimal = excessMilesDecimal * excessMilesRateDecimal; gasChargedDecimal = gasDecimal; subtotalDecimal = excessMilesChargedDecimal + monthsChargedDecimal + cdwChargedDecimal + gasChargedDecimal; SubtotalDecimal = (subtotalDecimal * salesTaxRateDecimal) + subtotalDecimal; Subtotal1Decimal = SubtotalDecimal + addChargeDecimal; Subtotal2Decimal = Subtotal1Decimal - minusChargeDecimal; Subtotal3Decimal = Subtotal2Decimal + depositAmountRateDecimal; netDueVARDecimal = Subtotal3Decimal; prePaidRentDecimal = Subtotal3Decimal - depositAmountRateDecimal; //Format the answers monthsRateTextBox.Text = monthsChargedDecimal.ToString("C"); monthsChargesTextBox.Text = monthsChargedDecimal.ToString("C"); cdwRateTextBox.Text = cdwRateDecimal.ToString("N"); cdwChargesTextBox.Text = cdwChargedDecimal.ToString("C"); milesDrivenTextBox.Text = milesDrivenDecimal.ToString("N"); excessMilesTextBox1.Text = excessMilesDecimal.ToString("N"); excessMilesTextBox2.Text = excessMilesDecimal.ToString("N"); perMileChargesTextBox.Text = excessMilesChargedDecimal.ToString("C"); gasChargesTextBox.Text = gasChargedDecimal.ToString("C"); subTotalTextBox.Text = subtotalDecimal.ToString("C"); salesTaxChargesTextBox.Text = SubtotalDecimal.ToString("C"); addChargesTextBox.Text = Subtotal1Decimal.ToString("C"); minusChargesTextBox.Text = Subtotal2Decimal.ToString("C"); depositChargesTextBox.Text = Subtotal3Decimal.ToString("C"); netDueVARTextBox.Text = netDueVARDecimal.ToString("C"); prePaidRentTextBox.Text = prePaidRentDecimal.ToString("C"); depositTextBox.Text = depositAmountRateDecimal.ToString("C"); //Calculate Date/Time TimeSpan months = new System.TimeSpan(monthsInteger); monthsAddDouble = double.Parse(monthsTextBox.Text); monthsAddDouble = monthsAddDouble * 30; DateTime monthsAnswer = dateTimeOutDateTime.AddDays(monthsAddDouble); dateTimeDueInTextBox.Text = monthsAnswer.ToString("MM'/'dd'/'yyyy hh':'mm tt"); } } } catch { MessageBox.Show("Decimal numbers or whole numbers allowed", "Data Entry Error", MessageBoxButtons.OK); depositAmountTextBox.Focus(); depositAmountTextBox.SelectAll(); } } catch { MessageBox.Show("Decimal numbers or whole numbers allowed", "Data Entry Error", MessageBoxButtons.OK); minusRateTextBox.Focus(); minusRateTextBox.SelectAll(); } } catch { MessageBox.Show("Decimal numbers or whole numbers allowed", "Data Entry Error", MessageBoxButtons.OK); addRateTextBox.Focus(); addRateTextBox.SelectAll(); } } catch { MessageBox.Show("You must begin with a decimal point followed by your Rate", "Data Entry Error", MessageBoxButtons.OK); salesTaxRateTextBox.Focus(); salesTaxRateTextBox.SelectAll(); } } catch { MessageBox.Show("Decimal numbers or whole numbers allowed", "Data Entry Error", MessageBoxButtons.OK); gasTextBox.Focus(); gasTextBox.SelectAll(); } } catch { MessageBox.Show("Decimal numbers or whole numbers allowed", "Data Entry Error", MessageBoxButtons.OK); odomInTextBox.Focus(); odomInTextBox.SelectAll(); } } catch { MessageBox.Show("Decimal numbers or whole numbers allowed", "Data Entry Error", MessageBoxButtons.OK); milesAllowedTextBox.Focus(); milesAllowedTextBox.SelectAll(); } } catch { MessageBox.Show("You must begin with a decimal point followed by your Rate", "Data Entry Error", MessageBoxButtons.OK); perMileRateTextBox.Focus(); perMileRateTextBox.SelectAll(); } } catch { MessageBox.Show("Decimal numbers or whole numbers allowed", "Data Entry Error", MessageBoxButtons.OK); odomOutTextBox.Focus(); odomOutTextBox.SelectAll(); } } catch { MessageBox.Show("Decimal numbers or whole numbers allowed", "Data Entry Error", MessageBoxButtons.OK); cdwRateTextBox.Focus(); cdwRateTextBox.SelectAll(); } } catch { MessageBox.Show("Whole numbers only!", "Data Entry Error", MessageBoxButtons.OK); monthsTextBox.Focus(); monthsTextBox.SelectAll(); } } catch { MessageBox.Show("Whole numbers only!", "Data Entry Error", MessageBoxButtons.OK); weeksTextBox.Focus(); weeksTextBox.SelectAll(); } } catch { //Invalid Entry MessageBox.Show("Numeric Data and Decimal Points Only Allowed", "Data Entry Alert", MessageBoxButtons.OK); daysRateTextBox.Focus(); daysRateTextBox.SelectAll(); } } catch { MessageBox.Show("Whole numbers only!", "Data Entry Error", MessageBoxButtons.OK); daysTextBox.Focus(); daysTextBox.SelectAll(); } } } } }