コード例 #1
0
        /// <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);
            }
        }