/// <summary>
        /// Inserta la informacion de una factura y su detalle.
        /// </summary>
        /// <param name="factura"></param>
        /// <returns></returns>
        public bool InsertarFactura(ref Factura factura)
        {
            bool retorno = false;

            using (SqlConnection connection = new SqlConnection(CONNECTIONSTRING))
            {
                connection.Open();
                SqlCommand     command = connection.CreateCommand();
                SqlTransaction transaction;
                transaction         = connection.BeginTransaction();
                command.Connection  = connection;
                command.Transaction = transaction;
                try
                {
                    ManejadorFactura facturadb = new ManejadorFactura(connection, transaction);
                    facturadb.Factura = factura;



                    if (facturadb.Insertar())
                    {
                        factura.IdFactura = int.Parse(facturadb.Identity.ToString());

                        foreach (DetalleFactura item in factura.DetalleFactura)
                        {
                            ManejadorTarifaServicio tarifaserviciobd = new ManejadorTarifaServicio(connection, transaction);
                            TarifaServicio          tarifaservicio   = tarifaserviciobd.SeleccionarTarifa(item.Servicio.IdServicio, factura.Cliente.Estrato.IdEstrato);

                            item.Factura      = factura;
                            item.ValorConsumo = item.CantidadConsumo * tarifaservicio.ValorServicio;


                            ManejadorDetalleFactura ManejadorDetalleFactura = new ManejadorDetalleFactura(connection, transaction);
                            ManejadorDetalleFactura.DetalleFactura = item;
                            if (!ManejadorDetalleFactura.Insertar())
                            {
                                throw new Exception("Error registrando el detalle");
                            }
                        }



                        transaction.Commit();
                        retorno = true;
                    }
                }
                catch (Exception ex)
                {
                    transaction.Rollback();
                    throw ex;
                }
            }
            return(retorno);
        }
        protected override object ConstruirObjeto(SqlDataReader reader)
        {
            TarifaServicio item = new TarifaServicio();

            while (reader.Read())
            {
                item.ValorServicio = decimal.Parse(reader["ValorServicio"].ToString());
                item.Unidad        = new UnidadTarifa()
                {
                    IdUnidad = byte.Parse(reader["IdUnidad"].ToString()), NombreUnidad = reader["NombreUnidad"].ToString()
                };
                item.Estrato = (Estrato)(new ManejadorEstrato(this.Connection, this.Transaction).SeleccionarId(byte.Parse(reader["IdEstrato"].ToString())));
            }
            reader.Close();
            return(item);
        }