/// <summary> /// This function saves all the changes of current invoice into the database /// and returns the invoice number of the invoice that it saves change to /// </summary> /// <param name="Invoice">clsInvoice</param> /// <param name="isNewInvoice">Boolean</param> /// <returns>InvoiceNum</returns> public int SaveChanges(clsMainLogic Invoice, bool isNewInvoice) { try { int invoiceNum; // if this is not a new added invoice if (isNewInvoice == false) { invoiceNum = Invoice.InvoiceNum; DataSet ds = new DataSet(); int iRet = 0; ds = db.ExecuteSQLStatement(SQLQueries.SelectLineItems(Invoice.InvoiceNum), ref iRet); // Clear all the line items that is associated with this invoice for (int i = 0; i < iRet; i++) { int lineItemNum = Convert.ToInt32(ds.Tables[0].Rows[i][0].ToString()); db.ExecuteNonQuery(SQLQueries.deleteLineItem(Invoice.InvoiceNum, lineItemNum)); } // Update the date and total charge for this invoice db.ExecuteNonQuery(SQLQueries.updateInvoice(Invoice.InvoiceNum, Invoice.InvoiceDate, Invoice.TotalCharge)); } // If this is a new invoice else { db.ExecuteNonQuery(SQLQueries.InsertNewInvoice(Invoice.InvoiceDateString, Invoice.TotalCharge)); // Retrieves the invoice number that just got created invoiceNum = Convert.ToInt32(db.ExecuteScalarSQL(SQLQueries.SelectTheLatestInvNum())); } // Insert all the line items related to this invoice in database for (int i = 0; i < Invoice.ItemsCollection.Count; i++) { int lineItemNum = Invoice.ItemsCollection[i].LineItemNum; string itemCode = Invoice.ItemsCollection[i].ItemCode; db.ExecuteNonQuery(SQLQueries.InsertNewLineItem(invoiceNum, lineItemNum, itemCode)); } return(invoiceNum); } catch (Exception ex) { //Just throw the exception throw new Exception(MethodInfo.GetCurrentMethod().DeclaringType.Name + "." + MethodInfo.GetCurrentMethod().Name + " -> " + ex.Message); } }