/// <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); }