Esempio n. 1
0
        private void button7_Click(object sender, EventArgs e)
        {
            try
            {
                Decimal specialDiscount = Convert.ToDecimal(textBoxSpecialDiscount.Text);
                if (specialDiscount > TotalAmount || ItemList.Count == 0)
                {
                    MessageBox.Show("Special discount is too high or the booking contains no items!");
                }
                else
                {
                    itemsChanged = true;

                    string startDateStrShort = dbUtil.FormatDate(this.StartDatePicker.Value);
                    string endDateStrShort   = dbUtil.FormatDate(this.ReturnDatePicker.Value);

                    object[] parameters = new object[8];
                    parameters[0] = "Special discount";
                    parameters[1] = 0.00;
                    parameters[2] = textBoxSpecialDiscount.Text;;
                    parameters[3] = startDateStrShort;
                    parameters[4] = endDateStrShort;
                    parameters[5] = null;
                    parameters[6] = null;
                    parameters[7] = textBoxDiscountNote.Text;

                    item = new BookingItems();
                    item.BookingNumber = booking.BookingNumber;
                    item.ItemName      = "Special discount";
                    item.StartDate     = dbUtil.FormatDate(this.StartDatePicker.Value);
                    item.ReturnDate    = dbUtil.FormatDate(this.ReturnDatePicker.Value);
                    item.ItemPrice     = 0;
                    item.Discount      = Convert.ToDecimal(textBoxSpecialDiscount.Text);
                    item.ItemProvider  = null;
                    item.ArrivalTime   = null;
                    item.DepartueTime  = null;
                    item.BookingNote   = this.textBoxDiscountNote.Text;
                    item.ItemType      = "Special discount";
                    item.VersionCode   = 1;

                    ItemList.Add(item);
                    dataGridView1.Rows.Add(parameters);
                    decimal discountedPrice = item.ItemPrice - item.Discount;
                    TotalAmount += discountedPrice;
                    this.textBoxTotalPrice.Text  = TotalAmount.ToString();
                    TotalOutstanding            += discountedPrice;
                    this.textBoxOutstanding.Text = TotalOutstanding.ToString();
                }
            }
            catch (System.FormatException)
            {
                MessageBox.Show("Please check the special discount field! It must be a decimal value!");
            }
        }
Esempio n. 2
0
        public int InsertItem(BookingItems item)
        {
            try
            {
                conn.Open();
                trans = conn.BeginTransaction();
                SqlCommand cmd = new SqlCommand("AddBookingItem", conn);
                cmd.Transaction = trans;
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.Add(new SqlParameter("@BookingNumber", item.BookingNumber));
                cmd.Parameters.Add(new SqlParameter("@ProductNumber", item.ItemNumber));
                cmd.Parameters.Add(new SqlParameter("@ItemName", item.ItemName));
                cmd.Parameters.Add(new SqlParameter("@StartDate", item.StartDate));
                cmd.Parameters.Add(new SqlParameter("@ReturnDate", item.ReturnDate));
                //cmd.Parameters.Add(new SqlParameter("@Qty", item.Qty));
                cmd.Parameters.Add(new SqlParameter("@ItemPrice", item.ItemPrice));
                cmd.Parameters.Add(new SqlParameter("@Discount", item.Discount));
                cmd.Parameters.Add(new SqlParameter("@ArrivalTime", item.ArrivalTime));
                cmd.Parameters.Add(new SqlParameter("@DepartureTime", item.DepartueTime));
                cmd.Parameters.Add(new SqlParameter("@ItemProvider", item.ItemProvider));
                cmd.Parameters.Add(new SqlParameter("@BookingNote", item.BookingNote));
                cmd.Parameters.Add(new SqlParameter("@ItemType", item.ItemType));
                cmd.Parameters.Add(new SqlParameter("@VersionCode", item.VersionCode));

                int result = cmd.ExecuteNonQuery();
                trans.Commit();
                //conn.Close();
                return(result);
            }
            catch (System.Exception)
            {
                trans.Rollback();
                return(13);
            }
            finally
            {
                conn.Close();
            }
        }
Esempio n. 3
0
        private void button1_Click(object sender, EventArgs e)
        {
            //Broker broker = new Broker();

            string newDatabaseConnStr = ConfigurationManager.AppSettings["NewConnStr"].ToString();
            string oldDatabaseConnStr = ConfigurationManager.AppSettings["ConnStr"].ToString();

            conn = new SqlConnection(newDatabaseConnStr);

            DataSet           ds_OldUSers = new DataSet();
            SqlDataAdapter    adapter     = new SqlDataAdapter("SELECT * FROM Contacts", oldDatabaseConnStr);
            SqlCommandBuilder builder     = new SqlCommandBuilder(adapter);

            adapter.Fill(ds_OldUSers, "Contacts");

            foreach (DataRow contact_dr in ds_OldUSers.Tables[0].Rows)
            {
                listBox1.Items.Add("------------------------");
                //1. insert contact
                Contact contact          = new Contact();
                int     newContactNumber = 0;

                int oldContactNumber = Convert.ToInt32(contact_dr["ContactNumber"].ToString());

                contact.FirstName       = contact_dr["FirstName"].ToString();
                contact.LastName        = contact_dr["LastName"].ToString();
                contact.DateOfBirth     = contact_dr["DateOfBirth"].ToString();
                contact.PassportNumber  = contact_dr["PassportNum"].ToString();
                contact.Address         = contact_dr["ContactAddress"].ToString();
                contact.City            = contact_dr["City"].ToString();
                contact.PoBox           = contact_dr["PoBox"].ToString();
                contact.Phone           = contact_dr["Phone"].ToString();
                contact.MobilePhone     = contact_dr["MobilePhone"].ToString();
                contact.Email           = contact_dr["Email"].ToString();
                contact.MotherName      = contact_dr["MotherName"].ToString();
                contact.FatherName      = contact_dr["FatherName"].ToString();
                contact.MotherPhone     = contact_dr["MotherPhone"].ToString();
                contact.FatherPhone     = contact_dr["FatherPhone"].ToString();
                contact.ContactType     = contact_dr["ContactType"].ToString();
                contact.GroupLeader     = contact_dr["GroupLeader"].ToString();
                contact.SchoolName      = contact_dr["SchoolName"].ToString();
                contact.SchoolAddress   = contact_dr["SchoolAddress"].ToString();
                contact.TeacherPhone    = contact_dr["TeacherPhone"].ToString();
                contact.AgencyName      = contact_dr["AgencyName"].ToString();
                contact.EBClubMember    = contact_dr["EBClubMember"].ToString();
                contact.PromoCodeMember = contact_dr["PromoCodeMember"].ToString();
                contact.MarketingSource = contact_dr["MarketingMaterial"].ToString();
                contact.VersionCode     = 1;

                int result = this.InsertContact(contact);

                if (result != 13)
                {
                    newContactNumber = this.GetLastContactRecord();
                    listBox1.Items.Add("CONTACT ADDED!!");
                }
                else
                {
                    listBox1.Items.Add("INSERT CONTACT FAILED!!");
                }

                //3. check for bookings
                DataSet ds_oldBookings = broker.GetBookingsByContact(oldContactNumber);

                //-----REPEAT FOR EVERY BOOKING-----

                if (ds_oldBookings.Tables[0].Rows.Count > 0)
                {
                    //4. get booking
                    foreach (DataRow bookingRow in ds_oldBookings.Tables[0].Rows)
                    {
                        //5. insert booking, using NEW user code
                        Booking booking = new Booking();

                        int oldBookingNumber = Convert.ToInt32(bookingRow["BookingNumber"]);
                        booking.ContactNumber = newContactNumber;
                        //DateTime DateOfBookingVal = Convert.ToDateTime(bookingRow["DateOfBooking"]);
                        booking.DateOfBooking            = bookingRow["DateOfBooking"].ToString();
                        booking.TotalPrice               = Convert.ToDecimal(bookingRow["TotalPrice"]);
                        booking.RequiresVisa             = bookingRow["RequiresVisa"].ToString();
                        booking.VisaAppointmentScheduled = bookingRow["VisaAppointmentScheduled"].ToString();
                        booking.DateOfAppointment        = bookingRow["DateOfAppointment"].ToString();
                        booking.TimeOfAppointment        = bookingRow["TimeOfAppointment"].ToString();
                        booking.VisaObtained             = bookingRow["VisaObtained"].ToString();
                        booking.VisaRejected             = bookingRow["VisaRejected"].ToString();
                        booking.IsBooked              = bookingRow["Isbooked"].ToString();
                        booking.IsCancelled           = bookingRow["IsCancelled"].ToString();
                        booking.ReasonForCancellation = bookingRow["ReasonForCancellation"].ToString();
                        booking.BookingCode           = bookingRow["BookingCode"].ToString();
                        //DateTime PaymentDeadlineVal = Convert.ToDateTime(bookingRow["PaymentDeadline"]);
                        booking.PaymentDeadline    = bookingRow["PaymentDeadline"].ToString();
                        booking.OutstandingBalance = Convert.ToDecimal(bookingRow["OutstandingBalance"]);
                        booking.GWFnumber          = bookingRow["GWFnumber"].ToString();
                        booking.VersionCode        = 1;

                        //6. get new booking number
                        int result2 = this.InsertBooking(booking);

                        if (result2 != 13)
                        {
                            listBox1.Items.Add("BOOKING ADDED!!");
                        }
                        else
                        {
                            listBox1.Items.Add("INSERT BOOKING FAILED!!");
                        }

                        int newBookingNumber = this.GetLastBookingRecord();

                        //7. get items
                        DataSet ds_OldItems = broker.GetBookingItemsByBookingNumber(oldBookingNumber);

                        //-----ADDING ITEMS-----
                        if (ds_OldItems.Tables[0].Rows.Count > 0)
                        {
                            foreach (DataRow itemRow in ds_OldItems.Tables[0].Rows)
                            {
                                //8. insert items using NEW booking number
                                BookingItems item = new BookingItems();

                                item.BookingNumber = newBookingNumber;
                                //sada ovde treba izvaditi sifru proizvoda
                                item.ItemName   = itemRow["ItemName"].ToString();
                                item.ItemNumber = 0;
                                //item.ItemNumber = this.ReturnNewProductCode(item.ItemName);
                                item.StartDate    = itemRow["StartDate"].ToString();
                                item.ReturnDate   = itemRow["ReturnDate"].ToString();
                                item.Qty          = Convert.ToInt32(itemRow["Qty"]);
                                item.ItemPrice    = Convert.ToDecimal(itemRow["ItemPrice"]);
                                item.Discount     = Convert.ToDecimal(itemRow["Discount"]);
                                item.ArrivalTime  = itemRow["ArrivalTime"].ToString();
                                item.DepartueTime = itemRow["DepartureTime"].ToString();
                                item.ItemProvider = itemRow["ItemProvider"].ToString();
                                item.BookingNote  = itemRow["Note"].ToString();
                                item.ItemType     = itemRow["ItemType"].ToString();
                                item.VersionCode  = 1;

                                int itemResult = this.InsertItem(item);

                                if (itemResult != 13)
                                {
                                    this.listBox1.Items.Add("ITEM ADDED TO BOOKING!");
                                }
                                else
                                {
                                    this.listBox1.Items.Add("ITEM INSERT FAILED!");
                                }
                            }
                        }
                        //9. get rates
                        //10. insert rates using NEW booking number

                        //-----ADDING RATES-----
                        DataSet ds_rates = broker.GetPaymentRatesByBookingNumber(oldBookingNumber);

                        if (ds_rates.Tables[0].Rows.Count > 0)
                        {
                            foreach (DataRow rateRow in ds_rates.Tables[0].Rows)
                            {
                                PaymentRate rate = new PaymentRate();

                                rate.BookingNumber = newBookingNumber;
                                //rate.RateNumber = Convert.ToInt32(rateRow["RateNumber"]);
                                rate.date             = rateRow["RateDate"].ToString();
                                rate.AmountPaid       = Convert.ToDecimal(rateRow["AmountPaid"]);
                                rate.Currency         = rateRow["Currency"].ToString();
                                rate.PaymentMethod    = rateRow["PaymentMethod"].ToString();
                                rate.ConversionValue  = Convert.ToDecimal(rateRow["ConversionValue"]);
                                rate.RateNote         = rateRow["RateNote"].ToString();
                                rate.OriginalValue    = Convert.ToDecimal(rateRow["OriginalValue"]);
                                rate.OriginalCurrency = "CURRENCY";

                                int rateResult = this.InsertPaymentRate(rate);

                                if (rateResult != 13)
                                {
                                    listBox1.Items.Add("RATE ADDED!!");
                                }
                                else
                                {
                                    listBox1.Items.Add("RATE INSERT FAILED!");
                                }
                            }
                        }
                    }
                }
            }
        }
Esempio n. 4
0
        //-----------------------------------------------------------------------------------
        //Load Booking data
        private void LoadBookingData()
        {
            this.panel1.Enabled = true;
            this.panel3.Enabled = true;
            this.panel5.Enabled = true;

            this.dataGridView1.Rows.Clear();
            this.dataGridView2.Rows.Clear();

            string code = bcode;

            booking = new Booking();
            ds      = broker.GetBookingByCode(code);

            ItemList.Clear();

            foreach (DataRow row in ds.Tables[0].Rows)
            {
                booking.BookingNumber            = Convert.ToInt32(row["BookingNumber"]);
                booking.ContactNumber            = Convert.ToInt32(row["ContactNumber"]);
                DateOfBookingVal                 = Convert.ToDateTime(row["DateOfBooking"]);
                booking.DateOfBooking            = DateOfBookingVal.ToString("dd/MM/yyyy");
                booking.TotalPrice               = Convert.ToDecimal(row["TotalPrice"]);
                booking.RequiresVisa             = row["RequiresVisa"].ToString();
                booking.VisaAppointmentScheduled = row["VisaAppointmentScheduled"].ToString();
                booking.DateOfAppointment        = row["DateOfAppointment"].ToString();
                booking.TimeOfAppointment        = row["TimeOfAppointment"].ToString();
                booking.VisaObtained             = row["VisaObtained"].ToString();
                booking.VisaRejected             = row["VisaRejected"].ToString();
                booking.IsBooked                 = row["Isbooked"].ToString();
                booking.IsCancelled              = row["IsCancelled"].ToString();
                booking.ReasonForCancellation    = row["ReasonForCancellation"].ToString();
                booking.BookingCode              = code;
                PaymentDeadlineVal               = Convert.ToDateTime(row["PaymentDeadline"]);
                booking.PaymentDeadline          = PaymentDeadlineVal.ToString("dd/MM/yyyy");
                booking.OutstandingBalance       = Convert.ToDecimal(row["OutstandingBalance"]);
                booking.GWFnumber                = row["GWFnumber"].ToString();
                booking.VisaDocumentsObtained    = row["VisaDocsObtained"].ToString();
                booking.VersionCode              = Convert.ToInt32(row["VersionCode"]);
                booking.BookingType              = row["BookingStringA"].ToString();
                booking.BusNeeded                = row["BookingStringB"].ToString();

                CurrentBookingNumber = booking.BookingNumber;
                CurrentBookingCode   = booking.BookingCode;
                BookingVersionCode   = booking.VersionCode;
            }

            TotalAmount = booking.TotalPrice;

            ds = broker.GetBookingItemsByBookingNumber(booking.BookingNumber);

            foreach (DataRow row in ds.Tables[0].Rows)
            {
                item = new BookingItems();
                item.BookingNumber = booking.BookingNumber;
                item.ItemNumber    = Convert.ToInt32(row["ItemNumber"]);
                item.ItemName      = row["ItemName"].ToString();
                item.StartDate     = dbUtil.FormatDate(Convert.ToDateTime(row["StartDate"]));
                item.ReturnDate    = dbUtil.FormatDate(Convert.ToDateTime(row["ReturnDate"]));
                item.ItemPrice     = Convert.ToDecimal(row["ItemPrice"]);
                item.Discount      = Convert.ToDecimal(row["Discount"]);
                item.ArrivalTime   = row["ArrivalTime"].ToString();
                item.DepartueTime  = row["DepartureTime"].ToString();
                item.ItemProvider  = row["ItemProvider"].ToString();
                item.BookingNote   = row["Note"].ToString();
                item.ItemType      = row["ItemType"].ToString();
                ItemList.Add(item);
                itemCounter++;
            }

            //loading booking rates
            ds = broker.GetPaymentRatesByBookingNumber(booking.BookingNumber);

            foreach (DataRow row in ds.Tables[0].Rows)
            {
                rate = new PaymentRate();
                rate.BookingNumber   = booking.BookingNumber;
                rate.RateNumber      = Convert.ToInt32(row["RateNumber"]);
                rate.date            = dbUtil.FormatDate(Convert.ToDateTime(row["RateDate"]));
                rate.AmountPaid      = Convert.ToDecimal(row["AmountPaid"]);
                rate.Currency        = row["Currency"].ToString();
                rate.PaymentMethod   = row["PaymentMethod"].ToString();
                rate.ConversionValue = Convert.ToDecimal(row["ConversionValue"]);
                rate.RateNote        = row["RateNote"].ToString();
                rate.OriginalValue   = Convert.ToDecimal(row["OriginalValue"]);
                PaymentRates.Add(rate);
                rateSynchronizerList.Add(rate);
                rateCounter++;
            }

            textBox1.Text               = code;
            textBoxBookingDate.Text     = booking.DateOfBooking;
            textBoxTotalPrice.Text      = booking.TotalPrice.ToString();
            textBoxOutstanding.Text     = booking.OutstandingBalance.ToString();
            textBoxPaymentDeadline.Text = booking.PaymentDeadline;
            comboBoxBookingType.Text    = booking.BookingType;

            TotalAmount      = booking.TotalPrice;
            TotalOutstanding = booking.OutstandingBalance;

            textBoxGwf.Text = booking.GWFnumber;

            if (broker.ReturnVisaDocStatus(booking.ContactNumber) == "yes")
            {
                this.checkBoxVisaDocsSubmitted.Checked = true;
            }

            if (booking.IsBooked == "yes")
            {
                checkBoxBooked.Checked = true;
            }
            else
            {
                checkBoxBooked.Checked = false;
            }

            if (booking.IsCancelled == "yes")
            {
                checkBoxCancel.Checked         = true;
                textBoxCancellationReason.Text = booking.ReasonForCancellation;
            }
            else
            {
                checkBoxCancel.Checked = false;
                textBoxCancellationReason.Clear();
            }

            if (booking.RequiresVisa == "yes")
            {
                VisaCheckBox.Checked = true;
            }
            else
            {
                VisaCheckBox.Checked = false;
            }

            if (booking.VisaAppointmentScheduled == "yes")
            {
                VisaApointmentScheduledCheckBox.Checked = true;
                VisaTimeTextBox.Text = booking.TimeOfAppointment;
                VisaDatePicker.Value = Convert.ToDateTime(booking.DateOfAppointment);
            }
            else
            {
                VisaApointmentScheduledCheckBox.Checked = false;
                VisaTimeTextBox.Clear();
            }

            if (booking.VisaDocumentsObtained == "yes")
            {
                checkBoxVisaDocsSubmitted.Checked = true;
            }
            else
            {
                checkBoxVisaDocsSubmitted.Checked = false;
            }

            if (booking.VisaObtained == "yes")
            {
                checkBoxVisaObtained.Checked = true;
            }
            else
            {
                checkBoxVisaObtained.Checked = false;
            }

            if (booking.VisaRejected == "yes")
            {
                checkBoxVisaReject.Checked = true;
            }
            else
            {
                checkBoxVisaReject.Checked = false;
            }

            if (booking.BookingType.Equals("Kopaonik"))
            {
                cbBusNeeded.Visible = true;
                cbBusNeeded.Enabled = true;

                if (booking.BusNeeded.Equals("Yes"))
                {
                    cbBusNeeded.Checked = true;
                }
            }

            if (ItemList.Count > 0)
            {
                foreach (BookingItems item in ItemList)
                {
                    object[] parameters = new object[8];
                    parameters[0] = item.ItemName;
                    parameters[1] = item.ItemPrice;
                    parameters[2] = item.Discount;
                    if (item.StartDate.Equals(string.Empty) || item.StartDate == null)
                    {
                        parameters[3] = null;
                        parameters[5] = null;
                    }
                    else
                    {
                        parameters[3] = item.StartDate;
                        parameters[5] = item.ReturnDate;
                    }
                    parameters[4] = item.DepartueTime;
                    parameters[6] = item.ArrivalTime;
                    parameters[7] = item.BookingNote;

                    dataGridView1.Rows.Add(parameters);
                }
            }

            if (PaymentRates.Count > 0)
            {
                foreach (PaymentRate rate in PaymentRates)
                {
                    object[] parameters = new object[7];
                    parameters[0] = rate.AmountPaid;
                    parameters[1] = rate.Currency;
                    parameters[2] = rate.OriginalValue;
                    parameters[3] = rate.PaymentMethod;
                    parameters[4] = rate.ConversionValue;
                    parameters[5] = dbUtil.ChangeDateToSerbianFormat(rate.date);
                    parameters[6] = rate.RateNote;
                    dataGridView2.Rows.Add(parameters);
                }
            }

            //show contract data
            contract = broker.GetContractByBookingNumber(booking.BookingNumber);
            if (contract != null)
            {
                tbContractNumber.Text = contract.ContractNumber;
                tbReceiptNumber.Text  = contract.ReceiptNumber.ToString();
                dtpContractDate.Value = Convert.ToDateTime(contract.ContractDate);

                if (!contract.ReceiptIssueDate.Equals(String.Empty))
                {
                    dtpReceiptIssueDate.Value  = Convert.ToDateTime(contract.ReceiptIssueDate);
                    dtpReceiptIssueDate.Format = DateTimePickerFormat.Short;
                }
                else
                {
                    dtpReceiptIssueDate.Format       = DateTimePickerFormat.Custom;
                    dtpReceiptIssueDate.CustomFormat = " ";
                }

                btnDeleteContract.Enabled = true;
            }
            else
            {
                btnDeleteContract.Enabled = false;
            }

            this.contractInfoChnaged = false;

            //RUNNING CONSISTENCY CHECKS

            bool BookingHasErrors = CheckIfbookingHasItems(ItemList);

            bool BookingPriceNotOK = CheckIfBookingPriceIsCorrect(ItemList, TotalAmount);

            bool BookingBalanceNotOK = CheckIfOutstandingBalanceIsCorrect(PaymentRates, TotalOutstanding, TotalAmount);

            if (BookingHasErrors == true || BookingPriceNotOK == true || BookingBalanceNotOK == true)
            {
                //1. Lock the UI
                this.panel1.Enabled  = false;
                this.panel3.Enabled  = false;
                this.panel5.Enabled  = false;
                this.button5.Enabled = false;

                //2. Show the message, depending on what was wrong with the booking.

                if (BookingHasErrors == true)
                {
                    MessageBox.Show("This booking contains the following error: booking has no items.");
                }

                if (BookingBalanceNotOK == true)
                {
                    MessageBox.Show("This booking contains the following error: the outstanding balance is negative.");
                }

                if (BookingPriceNotOK == true)
                {
                    MessageBox.Show("This booking contains the following error: the booking price is not correct.");
                }
            }

            PaymentRates.Clear();
        }
Esempio n. 5
0
        //-------------------------------------------------------------------------------------
        //add items button
        private void button4_Click(object sender, EventArgs e)
        {
            string productName = comboBoxProducts.Text;

            if (productName == "" || productName.Equals(noProductSelectedNotice))
            {
                MessageBox.Show("You must choose a product!");
            }

            if (this.StartDatePicker.Value >= this.ReturnDatePicker.Value)
            {
                MessageBox.Show("Please change the dates!!");
            }
            else
            {
                itemsChanged = true;

                if (checkBoxContra.Checked == true && textBoxNote.Text == string.Empty)
                {
                    MessageBox.Show("You cannot add contra item without a note!!");
                }
                else
                {
                    foreach (DataRow dr in ds_products.Tables[0].Rows)
                    {
                        if (dr["ProductName"].ToString() == productName)
                        {
                            object[] parameters = new object[9];

                            parameters[0] = dr["ProductName"].ToString();

                            if (checkBoxContra.Checked == true)
                            {
                                decimal contra_amount = -1 * Convert.ToDecimal(dr["ProductPrice"]);
                                parameters[1] = contra_amount;
                            }
                            else
                            {
                                parameters[1] = Convert.ToDecimal(dr["ProductPrice"]);
                            }

                            if (textBoxDiscount.Text == string.Empty)
                            {
                                parameters[2] = Convert.ToDecimal(0.00);
                            }
                            else
                            {
                                parameters[2] = Convert.ToDecimal(textBoxDiscount.Text);
                            }

                            string startDateStrShort = dbUtil.FormatDate(this.StartDatePicker.Value);
                            string endDateStrShort   = dbUtil.FormatDate(this.ReturnDatePicker.Value);

                            parameters[3] = startDateStrShort;
                            parameters[4] = this.mtbDepartureTime.Text;
                            parameters[5] = endDateStrShort;
                            parameters[6] = this.mtbArrivalTime.Text;
                            parameters[7] = this.textBoxNote.Text;

                            itemCounter++;

                            dataGridView1.Rows.Add(parameters);

                            item = new BookingItems();

                            item.BookingNumber = booking.BookingNumber;
                            item.ItemName      = dr["ProductName"].ToString();
                            item.StartDate     = startDateStrShort; //this.StartDatePicker.Value.ToShortDateString();
                            item.ReturnDate    = endDateStrShort;   //this.ReturnDatePicker.Value.ToShortDateString();

                            if (checkBoxContra.Checked == true)
                            {
                                decimal contra_price = -1 * Convert.ToDecimal(dr["ProductPrice"].ToString());
                                item.ItemPrice = contra_price;
                            }
                            else
                            {
                                item.ItemPrice = Convert.ToDecimal(dr["ProductPrice"].ToString());
                            }

                            item.ItemProvider = dr["ProductProvider"].ToString();
                            item.ArrivalTime  = this.mtbDepartureTime.Text;
                            item.DepartueTime = this.mtbArrivalTime.Text;
                            item.BookingNote  = this.textBoxNote.Text;
                            item.ItemType     = dr["ProductType"].ToString();

                            if (textBoxDiscount.Text == string.Empty)
                            {
                                item.Discount = 0;
                            }
                            else
                            {
                                item.Discount = Convert.ToDecimal(textBoxDiscount.Text);
                            }

                            item.VersionCode = 1;

                            ItemList.Add(item);

                            decimal discountedPrice = item.ItemPrice - item.Discount;
                            TotalAmount                 += discountedPrice;
                            TotalOutstanding            += discountedPrice;
                            this.textBoxTotalPrice.Text  = TotalAmount.ToString();
                            this.textBoxOutstanding.Text = TotalOutstanding.ToString();
                        }
                    }//end foreach

                    comboBoxProducts.ResetText();
                    comboBoxProducts.SelectedIndex = 0;
                    textBoxDiscount.Clear();
                    mtbDepartureTime.Clear();
                    mtbArrivalTime.Clear();
                    textBoxNote.Clear();
                    textBoxDiscount.Text = "0.00";
                }
            }
        }
        private void button4_Click(object sender, EventArgs e)
        {
            string productName = comboBoxProducts.Text;

            if (productName.Equals(string.Empty) ||
                productName.Equals(noProductSelectedNotice))
            {
                MessageBox.Show("You must choose a product!");
            }

            if (this.StartDatePicker.Value >= this.ReturnDatePicker.Value)
            {
                MessageBox.Show("Please check the start and return date!");
            }
            else
            {
                foreach (DataRow dr in ds.Tables[0].Rows)
                {
                    if (dr["ProductName"].ToString() == productName)
                    {
                        object[] parameters = new object[8];
                        parameters[0] = dr["ProductName"].ToString();
                        parameters[1] = dr["ProductPrice"].ToString();

                        if (textBoxDiscount.Text == string.Empty)
                        {
                            parameters[2] = 0.00;
                        }
                        else
                        {
                            parameters[2] = Convert.ToDecimal(textBoxDiscount.Text);
                        }

                        string startDateStrShort = dbUtil.FormatDate(this.StartDatePicker.Value);
                        string endDateStrShort   = dbUtil.FormatDate(this.ReturnDatePicker.Value);

                        parameters[3] = startDateStrShort;
                        parameters[4] = this.mtbDepartureTime.Text;
                        parameters[5] = endDateStrShort;
                        parameters[6] = this.mtbArrivalTime.Text;
                        parameters[7] = this.textBoxNote.Text;

                        item              = new BookingItems();
                        item.ItemName     = dr["ProductName"].ToString();
                        item.StartDate    = startDateStrShort;
                        item.ReturnDate   = endDateStrShort;
                        item.ItemPrice    = Convert.ToDecimal(dr["ProductPrice"].ToString());
                        item.ItemProvider = dr["ProductProvider"].ToString();
                        item.ArrivalTime  = this.mtbArrivalTime.Text;
                        item.DepartueTime = this.mtbDepartureTime.Text;
                        item.BookingNote  = this.textBoxNote.Text;
                        item.ItemType     = dr["ProductType"].ToString();

                        if (item.ItemType.Equals("Course"))
                        {
                            PaymentDeadlineDatePicker.Value = StartDatePicker.Value.AddDays(-14);
                        }

                        if (textBoxDiscount.Text == string.Empty)
                        {
                            item.Discount = 0;
                        }
                        else
                        {
                            item.Discount = Convert.ToDecimal(textBoxDiscount.Text);
                        }

                        item.VersionCode = 1;

                        dataGridView1.Rows.Add(parameters);

                        ItemList.Add(item);

                        decimal discountedPrice = item.ItemPrice - item.Discount;
                        TotalAmount += discountedPrice;
                        this.textBoxTotalPrice.Text = TotalAmount.ToString();
                    }
                }
                comboBoxProducts.ResetText();
                comboBoxProducts.SelectedIndex = 0;
                textBoxDiscount.Clear();
                mtbDepartureTime.Clear();
                mtbArrivalTime.Clear();
                textBoxNote.Clear();
                textBoxDiscount.Text = "0.00";
            }
        }