/// <summary>
        /// Updates a record in the <c>ResellRateHistory</c> table.
        /// </summary>
        /// <param name="value">The <see cref="ResellRateHistoryRow"/>
        /// object used to update the table record.</param>
        /// <returns>true if the record was updated; otherwise, false.</returns>
        public virtual bool Update(ResellRateHistoryRow value)
        {
            string sqlStr = "UPDATE [dbo].[ResellRateHistory] SET " +
                            "[date_off]=" + _db.CreateSqlParameterName("Date_off") + ", " +
                            "[rate_info_id]=" + _db.CreateSqlParameterName("Rate_info_id") + ", " +
                            "[commision_type]=" + _db.CreateSqlParameterName("Commision_type") + ", " +
                            "[markup_dollar]=" + _db.CreateSqlParameterName("Markup_dollar") + ", " +
                            "[markup_percent]=" + _db.CreateSqlParameterName("Markup_percent") + ", " +
                            "[markup_per_call]=" + _db.CreateSqlParameterName("Markup_per_call") + ", " +
                            "[markup_per_minute]=" + _db.CreateSqlParameterName("Markup_per_minute") +
                            " WHERE " +
                            "[resell_acct_id]=" + _db.CreateSqlParameterName("Resell_acct_id") + " AND " +
                            "[wholesale_route_id]=" + _db.CreateSqlParameterName("Wholesale_route_id") + " AND " +
                            "[date_on]=" + _db.CreateSqlParameterName("Date_on");
            IDbCommand cmd = _db.CreateCommand(sqlStr);

            AddParameter(cmd, "Date_off", value.Date_off);
            AddParameter(cmd, "Rate_info_id", value.Rate_info_id);
            AddParameter(cmd, "Commision_type", value.Commision_type);
            AddParameter(cmd, "Markup_dollar", value.Markup_dollar);
            AddParameter(cmd, "Markup_percent", value.Markup_percent);
            AddParameter(cmd, "Markup_per_call", value.Markup_per_call);
            AddParameter(cmd, "Markup_per_minute", value.Markup_per_minute);
            AddParameter(cmd, "Resell_acct_id", value.Resell_acct_id);
            AddParameter(cmd, "Wholesale_route_id", value.Wholesale_route_id);
            AddParameter(cmd, "Date_on", value.Date_on);
            return(0 != cmd.ExecuteNonQuery());
        }
        /// <summary>
        /// Reads data from the provided data reader and returns
        /// an array of mapped objects.
        /// </summary>
        /// <param name="reader">The <see cref="System.Data.IDataReader"/> object to read data from the table.</param>
        /// <param name="startIndex">The index of the first record to map.</param>
        /// <param name="length">The number of records to map.</param>
        /// <param name="totalRecordCount">A reference parameter that returns the total number
        /// of records in the reader object if 0 was passed into the method; otherwise it returns -1.</param>
        /// <returns>An array of <see cref="ResellRateHistoryRow"/> objects.</returns>
        protected virtual ResellRateHistoryRow[] MapRecords(IDataReader reader,
                                                            int startIndex, int length, ref int totalRecordCount)
        {
            if (0 > startIndex)
            {
                throw new ArgumentOutOfRangeException("startIndex", startIndex, "StartIndex cannot be less than zero.");
            }
            if (0 > length)
            {
                throw new ArgumentOutOfRangeException("length", length, "Length cannot be less than zero.");
            }

            int resell_acct_idColumnIndex     = reader.GetOrdinal("resell_acct_id");
            int wholesale_route_idColumnIndex = reader.GetOrdinal("wholesale_route_id");
            int date_onColumnIndex            = reader.GetOrdinal("date_on");
            int date_offColumnIndex           = reader.GetOrdinal("date_off");
            int rate_info_idColumnIndex       = reader.GetOrdinal("rate_info_id");
            int commision_typeColumnIndex     = reader.GetOrdinal("commision_type");
            int markup_dollarColumnIndex      = reader.GetOrdinal("markup_dollar");
            int markup_percentColumnIndex     = reader.GetOrdinal("markup_percent");
            int markup_per_callColumnIndex    = reader.GetOrdinal("markup_per_call");
            int markup_per_minuteColumnIndex  = reader.GetOrdinal("markup_per_minute");

            System.Collections.ArrayList recordList = new System.Collections.ArrayList();
            int ri = -startIndex;

            while (reader.Read())
            {
                ri++;
                if (ri > 0 && ri <= length)
                {
                    ResellRateHistoryRow record = new ResellRateHistoryRow();
                    recordList.Add(record);

                    record.Resell_acct_id     = Convert.ToInt16(reader.GetValue(resell_acct_idColumnIndex));
                    record.Wholesale_route_id = Convert.ToInt32(reader.GetValue(wholesale_route_idColumnIndex));
                    record.Date_on            = Convert.ToDateTime(reader.GetValue(date_onColumnIndex));
                    record.Date_off           = Convert.ToDateTime(reader.GetValue(date_offColumnIndex));
                    record.Rate_info_id       = Convert.ToInt32(reader.GetValue(rate_info_idColumnIndex));
                    record.Commision_type     = Convert.ToByte(reader.GetValue(commision_typeColumnIndex));
                    record.Markup_dollar      = Convert.ToDecimal(reader.GetValue(markup_dollarColumnIndex));
                    record.Markup_percent     = Convert.ToDecimal(reader.GetValue(markup_percentColumnIndex));
                    record.Markup_per_call    = Convert.ToDecimal(reader.GetValue(markup_per_callColumnIndex));
                    record.Markup_per_minute  = Convert.ToDecimal(reader.GetValue(markup_per_minuteColumnIndex));

                    if (ri == length && 0 != totalRecordCount)
                    {
                        break;
                    }
                }
            }

            totalRecordCount = 0 == totalRecordCount ? ri + startIndex : -1;
            return((ResellRateHistoryRow[])(recordList.ToArray(typeof(ResellRateHistoryRow))));
        }
        /// <summary>
        /// Adds a new record into the <c>ResellRateHistory</c> table.
        /// </summary>
        /// <param name="value">The <see cref="ResellRateHistoryRow"/> object to be inserted.</param>
        public virtual void Insert(ResellRateHistoryRow value)
        {
            string sqlStr = "INSERT INTO [dbo].[ResellRateHistory] (" +
                            "[resell_acct_id], " +
                            "[wholesale_route_id], " +
                            "[date_on], " +
                            "[date_off], " +
                            "[rate_info_id], " +
                            "[commision_type], " +
                            "[markup_dollar], " +
                            "[markup_percent], " +
                            "[markup_per_call], " +
                            "[markup_per_minute]" +
                            ") VALUES (" +
                            _db.CreateSqlParameterName("Resell_acct_id") + ", " +
                            _db.CreateSqlParameterName("Wholesale_route_id") + ", " +
                            _db.CreateSqlParameterName("Date_on") + ", " +
                            _db.CreateSqlParameterName("Date_off") + ", " +
                            _db.CreateSqlParameterName("Rate_info_id") + ", " +
                            _db.CreateSqlParameterName("Commision_type") + ", " +
                            _db.CreateSqlParameterName("Markup_dollar") + ", " +
                            _db.CreateSqlParameterName("Markup_percent") + ", " +
                            _db.CreateSqlParameterName("Markup_per_call") + ", " +
                            _db.CreateSqlParameterName("Markup_per_minute") + ")";
            IDbCommand cmd = _db.CreateCommand(sqlStr);

            AddParameter(cmd, "Resell_acct_id", value.Resell_acct_id);
            AddParameter(cmd, "Wholesale_route_id", value.Wholesale_route_id);
            AddParameter(cmd, "Date_on", value.Date_on);
            AddParameter(cmd, "Date_off", value.Date_off);
            AddParameter(cmd, "Rate_info_id", value.Rate_info_id);
            AddParameter(cmd, "Commision_type", value.Commision_type);
            AddParameter(cmd, "Markup_dollar", value.Markup_dollar);
            AddParameter(cmd, "Markup_percent", value.Markup_percent);
            AddParameter(cmd, "Markup_per_call", value.Markup_per_call);
            AddParameter(cmd, "Markup_per_minute", value.Markup_per_minute);
            cmd.ExecuteNonQuery();
        }
        /// <summary>
        /// Converts <see cref="System.Data.DataRow"/> to <see cref="ResellRateHistoryRow"/>.
        /// </summary>
        /// <param name="row">The <see cref="System.Data.DataRow"/> object to be mapped.</param>
        /// <returns>A reference to the <see cref="ResellRateHistoryRow"/> object.</returns>
        protected virtual ResellRateHistoryRow MapRow(DataRow row)
        {
            ResellRateHistoryRow mappedObject = new ResellRateHistoryRow();
            DataTable            dataTable    = row.Table;
            DataColumn           dataColumn;

            // Column "Resell_acct_id"
            dataColumn = dataTable.Columns["Resell_acct_id"];
            if (!row.IsNull(dataColumn))
            {
                mappedObject.Resell_acct_id = (short)row[dataColumn];
            }
            // Column "Wholesale_route_id"
            dataColumn = dataTable.Columns["Wholesale_route_id"];
            if (!row.IsNull(dataColumn))
            {
                mappedObject.Wholesale_route_id = (int)row[dataColumn];
            }
            // Column "Date_on"
            dataColumn = dataTable.Columns["Date_on"];
            if (!row.IsNull(dataColumn))
            {
                mappedObject.Date_on = (System.DateTime)row[dataColumn];
            }
            // Column "Date_off"
            dataColumn = dataTable.Columns["Date_off"];
            if (!row.IsNull(dataColumn))
            {
                mappedObject.Date_off = (System.DateTime)row[dataColumn];
            }
            // Column "Rate_info_id"
            dataColumn = dataTable.Columns["Rate_info_id"];
            if (!row.IsNull(dataColumn))
            {
                mappedObject.Rate_info_id = (int)row[dataColumn];
            }
            // Column "Commision_type"
            dataColumn = dataTable.Columns["Commision_type"];
            if (!row.IsNull(dataColumn))
            {
                mappedObject.Commision_type = (byte)row[dataColumn];
            }
            // Column "Markup_dollar"
            dataColumn = dataTable.Columns["Markup_dollar"];
            if (!row.IsNull(dataColumn))
            {
                mappedObject.Markup_dollar = (decimal)row[dataColumn];
            }
            // Column "Markup_percent"
            dataColumn = dataTable.Columns["Markup_percent"];
            if (!row.IsNull(dataColumn))
            {
                mappedObject.Markup_percent = (decimal)row[dataColumn];
            }
            // Column "Markup_per_call"
            dataColumn = dataTable.Columns["Markup_per_call"];
            if (!row.IsNull(dataColumn))
            {
                mappedObject.Markup_per_call = (decimal)row[dataColumn];
            }
            // Column "Markup_per_minute"
            dataColumn = dataTable.Columns["Markup_per_minute"];
            if (!row.IsNull(dataColumn))
            {
                mappedObject.Markup_per_minute = (decimal)row[dataColumn];
            }
            return(mappedObject);
        }
 /// <summary>
 /// Deletes the specified object from the <c>ResellRateHistory</c> table.
 /// </summary>
 /// <param name="value">The <see cref="ResellRateHistoryRow"/> object to delete.</param>
 /// <returns>true if the record was deleted; otherwise, false.</returns>
 public bool Delete(ResellRateHistoryRow value)
 {
     return(DeleteByPrimaryKey(value.Resell_acct_id, value.Wholesale_route_id, value.Date_on));
 }