public static string Insertar(int idtrabajador,int idproveedor, DateTime fecha, string tipo_comprobante,string serie,string correlativo, decimal igv, string estado,DataTable dtDetalles) { DIngreso Obj = new DIngreso(); Obj.Idtrabajador = idtrabajador; Obj.Idproveedor = idproveedor; Obj.Fecha = fecha; Obj.Tipo_Comprobante = tipo_comprobante; Obj.Serie = serie; Obj.Correlativo = correlativo; Obj.Igv = igv; Obj.Estado = estado; List<DDetalle_Ingreso> detalles = new List<DDetalle_Ingreso>(); foreach (DataRow row in dtDetalles.Rows) { DDetalle_Ingreso detalle = new DDetalle_Ingreso(); detalle.Idarticulo = Convert.ToInt32(row["idarticulo"].ToString()); detalle.Precio_Compra = Convert.ToDecimal(row["precio_compra"].ToString()); detalle.Precio_Venta = Convert.ToDecimal(row["precio_venta"].ToString()); detalle.Stock_Inicial = Convert.ToInt32(row["stock_inicial"].ToString()); detalle.Stock_Actual = Convert.ToInt32(row["stock_inicial"].ToString()); detalle.Fecha_Produccion = Convert.ToDateTime(row["fecha_produccion"].ToString()); detalle.Fecha_Vencimiento = Convert.ToDateTime(row["fecha_vencimiento"].ToString()); detalles.Add(detalle); } return Obj.Insertar(Obj,detalles); }
//Anular public string Anular(DIngreso Ingreso) { string respuesta = ""; SqlConnection SqlConectar = new SqlConnection(); try { //conexion con la Base de Datos SqlConectar.ConnectionString = Conexion.CadenaConexion; SqlConectar.Open(); //comandos SqlCommand SqlComando = new SqlCommand(); SqlComando.Connection = SqlConectar; SqlComando.CommandText = "Anular_Ingreso"; SqlComando.CommandType = CommandType.StoredProcedure; //parametros //parametro id SqlParameter Parametro_Id_Ingreso = new SqlParameter(); Parametro_Id_Ingreso.ParameterName = "@IdIngreso"; Parametro_Id_Ingreso.SqlDbType = SqlDbType.Int; Parametro_Id_Ingreso.Value = Ingreso.Id_Ingreso; SqlComando.Parameters.Add(Parametro_Id_Ingreso); //ejecuta y lo envia en comentario respuesta = SqlComando.ExecuteNonQuery() == 1 ? "OK" : "No se anulo el registro"; } catch (Exception excepcion) { respuesta = excepcion.Message; } //se cierra la conexion de la Base de Datos finally { if (SqlConectar.State == ConnectionState.Open) { SqlConectar.Close(); } } return(respuesta); }
public string Anular(DIngreso Ingreso) { string rpta = ""; SqlConnection Sqlconexion = new SqlConnection(); try { //abrir conexion Sqlconexion.ConnectionString = Conexion.Conectar; Sqlconexion.Open(); //conexion al procedimiento almacenado SqlCommand sqlcmd = new SqlCommand(); sqlcmd.Connection = Sqlconexion; sqlcmd.CommandText = "Ingreso_Anular"; sqlcmd.CommandType = CommandType.StoredProcedure; //conexion con variables del SP SqlParameter paridIngreso = new SqlParameter(); paridIngreso.ParameterName = "@idIngreso"; paridIngreso.SqlDbType = SqlDbType.Int; paridIngreso.Value = Ingreso.IdIngreso; sqlcmd.Parameters.Add(paridIngreso); //conexion nombre rpta = sqlcmd.ExecuteNonQuery() == 1 ? "OK" : "NO SE ANULO EL REGISTRO"; } catch (Exception ex) { rpta = ex.Message; } finally { if (Sqlconexion.State == ConnectionState.Open) { Sqlconexion.Close(); Sqlconexion.Dispose(); } } return(rpta); }
//Metodo Anular public string Anular(DIngreso Ingreso) { string rpta = ""; SqlConnection SqlCon = new SqlConnection(); try { //Codigo SqlCon.ConnectionString = Conexion.Cn; SqlCon.Open(); //Establecer el comando SqlCommand SqlCmd = new SqlCommand(); SqlCmd.Connection = SqlCon; SqlCmd.CommandText = "spanular_ingreso"; SqlCmd.CommandType = CommandType.StoredProcedure; SqlParameter ParIdingreso = new SqlParameter(); ParIdingreso.ParameterName = "@idingreso"; ParIdingreso.SqlDbType = SqlDbType.Int; ParIdingreso.Value = Ingreso.Idingreso; SqlCmd.Parameters.Add(ParIdingreso); //Ejecutamos nuestro comando rpta = SqlCmd.ExecuteNonQuery() == 1 ? "OK" : "No se Anulo ningun registro"; } catch (Exception ex) { rpta = ex.Message; } finally { if (SqlCon.State == ConnectionState.Open) { SqlCon.Close(); } } return(rpta); }
//Metodos public string Insertar(DIngreso Ingreso, List <DDetalle_Ingreso> Detalle) { string rpta = ""; SqlConnection SqlCon = new SqlConnection(); try { //Codigo SqlCon.ConnectionString = Conexion.Cn; SqlCon.Open(); //Establecer la Transaccion SqlTransaction SqlTra = SqlCon.BeginTransaction(); //Establecer el comando SqlCommand SqlCmd = new SqlCommand(); SqlCmd.Connection = SqlCon; SqlCmd.Transaction = SqlTra; SqlCmd.CommandText = "spinsertar_ingreso"; SqlCmd.CommandType = CommandType.StoredProcedure; SqlParameter ParIdingreso = new SqlParameter(); ParIdingreso.ParameterName = "@idingreso"; ParIdingreso.SqlDbType = SqlDbType.Int; ParIdingreso.Direction = ParameterDirection.Output; SqlCmd.Parameters.Add(ParIdingreso); SqlParameter ParIdtrabajador = new SqlParameter(); ParIdtrabajador.ParameterName = "@idtrabajador"; ParIdtrabajador.SqlDbType = SqlDbType.Int; ParIdtrabajador.Value = Ingreso.Idtrabajador; SqlCmd.Parameters.Add(ParIdtrabajador); SqlParameter ParIdproveedor = new SqlParameter(); ParIdproveedor.ParameterName = "@idproveedor"; ParIdproveedor.SqlDbType = SqlDbType.Int; ParIdproveedor.Value = Ingreso.Idproveedor; SqlCmd.Parameters.Add(ParIdproveedor); SqlParameter ParFecha = new SqlParameter(); ParFecha.ParameterName = "@fecha"; ParFecha.SqlDbType = SqlDbType.Date; ParFecha.Value = Ingreso.Fecha; SqlCmd.Parameters.Add(ParFecha); SqlParameter ParTipo_Comprobante = new SqlParameter(); ParTipo_Comprobante.ParameterName = "@tipo_comprobante"; ParTipo_Comprobante.SqlDbType = SqlDbType.VarChar; ParTipo_Comprobante.Size = 20; ParTipo_Comprobante.Value = Ingreso.Tipo_Comprobante; SqlCmd.Parameters.Add(ParTipo_Comprobante); SqlParameter ParSerie = new SqlParameter(); ParSerie.ParameterName = "@serie"; ParSerie.SqlDbType = SqlDbType.VarChar; ParSerie.Size = 4; ParSerie.Value = Ingreso.Serie; SqlCmd.Parameters.Add(ParSerie); SqlParameter ParCorrelativo = new SqlParameter(); ParCorrelativo.ParameterName = "@correlativo"; ParCorrelativo.SqlDbType = SqlDbType.VarChar; ParCorrelativo.Size = 7; ParCorrelativo.Value = Ingreso.Correlativo; SqlCmd.Parameters.Add(ParCorrelativo); SqlParameter ParIgv = new SqlParameter(); ParIgv.ParameterName = "@igv"; ParIgv.SqlDbType = SqlDbType.Decimal; ParIgv.Precision = 4; ParIgv.Scale = 2; ParIgv.Value = Ingreso.Igv; SqlCmd.Parameters.Add(ParIgv); SqlParameter ParEstado = new SqlParameter(); ParEstado.ParameterName = "@estado"; ParEstado.SqlDbType = SqlDbType.VarChar; ParEstado.Size = 7; ParEstado.Value = Ingreso.Estado; SqlCmd.Parameters.Add(ParEstado); //Ejecutamos nuestro comando rpta = SqlCmd.ExecuteNonQuery() == 1 ? "OK" : "No se Ingreso el Registro"; if (rpta.Equals("OK")) { //Obtener el código del ingreso generado this.Idingreso = Convert.ToInt32(SqlCmd.Parameters["@idingreso"].Value); foreach (DDetalle_Ingreso det in Detalle) { det.Idingreso = this.Idingreso; //Llamar al método insertar de la clase DDetalle_Ingreso rpta = det.Insertar(det, ref SqlCon, ref SqlTra); if (!rpta.Equals("OK")) { break; } } } if (rpta.Equals("OK")) { SqlTra.Commit(); } else { SqlTra.Rollback(); } } catch (Exception ex) { rpta = ex.Message; } finally { if (SqlCon.State == ConnectionState.Open) { SqlCon.Close(); } } return(rpta); }
//metodos public string Insertar(DIngreso Ingreso, List <DDetalle_Ingreso> Detalle) { string respuesta = ""; SqlConnection SqlConectar = new SqlConnection(); try { //conexion con la Base de Datos SqlConectar.ConnectionString = Conexion.CadenaConexion; SqlConectar.Open(); //transaccion SqlTransaction SqlTransaccion = SqlConectar.BeginTransaction(); //comandos SqlCommand SqlComando = new SqlCommand(); SqlComando.Connection = SqlConectar; SqlComando.Transaction = SqlTransaccion; SqlComando.CommandText = "Insertar_Ingreso"; SqlComando.CommandType = CommandType.StoredProcedure; //parametros //parametro id ingreso SqlParameter Parametro_Id_Ingreso = new SqlParameter(); Parametro_Id_Ingreso.ParameterName = "@IdIngreso"; Parametro_Id_Ingreso.SqlDbType = SqlDbType.Int; Parametro_Id_Ingreso.Direction = ParameterDirection.Output; SqlComando.Parameters.Add(Parametro_Id_Ingreso); //parametro id trabajador SqlParameter Parametro_Id_Trabajador = new SqlParameter(); Parametro_Id_Trabajador.ParameterName = "@IdTrabajador"; Parametro_Id_Trabajador.SqlDbType = SqlDbType.VarChar; Parametro_Id_Trabajador.Size = 20; Parametro_Id_Trabajador.Value = Ingreso.Id_Trabajador; SqlComando.Parameters.Add(Parametro_Id_Trabajador); //parametro id proveedor SqlParameter Parametro_Id_Proveedor = new SqlParameter(); Parametro_Id_Proveedor.ParameterName = "@IdProveedor"; Parametro_Id_Proveedor.SqlDbType = SqlDbType.VarChar; Parametro_Id_Proveedor.Size = 20; Parametro_Id_Proveedor.Value = Ingreso.Id_Proveedor; SqlComando.Parameters.Add(Parametro_Id_Proveedor); //parametro fecha SqlParameter Parametro_Fecha_Ingreso = new SqlParameter(); Parametro_Fecha_Ingreso.ParameterName = "@Fecha"; Parametro_Fecha_Ingreso.SqlDbType = SqlDbType.Date; Parametro_Fecha_Ingreso.Value = Ingreso.Fecha; SqlComando.Parameters.Add(Parametro_Fecha_Ingreso); //parametro Precio Total SqlParameter Parametro_PrecioTotal_Ingreso = new SqlParameter(); Parametro_PrecioTotal_Ingreso.ParameterName = "@PrecioTotal"; Parametro_PrecioTotal_Ingreso.SqlDbType = SqlDbType.Money; Parametro_PrecioTotal_Ingreso.Value = Ingreso.Precio_Total; SqlComando.Parameters.Add(Parametro_PrecioTotal_Ingreso); //parametro estado SqlParameter Parametro_Estado = new SqlParameter(); Parametro_Estado.ParameterName = "@Estado"; Parametro_Estado.SqlDbType = SqlDbType.VarChar; Parametro_Estado.Size = 20; Parametro_Estado.Value = Ingreso.Estado; SqlComando.Parameters.Add(Parametro_Estado); //ejecuta y lo envia en comentario respuesta = SqlComando.ExecuteNonQuery() == 1 ? "OK" : "No se ingreso el Registro del Proveedor"; if (respuesta.Equals("OK")) { this.Id_Ingreso = Convert.ToInt32(SqlComando.Parameters["@IdIngreso"].Value); foreach (DDetalle_Ingreso det in Detalle) { det.Id_Ingreso = this.Id_Ingreso; //llamar a insertar respuesta = det.Insertar(det, ref SqlConectar, ref SqlTransaccion); if (!respuesta.Equals("OK")) { break; } } } if (respuesta.Equals("OK")) { SqlTransaccion.Commit(); } else { //si se recibe una espuesta contraria a ok negamos la transaccion SqlTransaccion.Rollback(); } } catch (Exception excepcion) { respuesta = excepcion.Message; } //se cierra la conexion de la Base de Datos finally { if (SqlConectar.State == ConnectionState.Open) { SqlConectar.Close(); } } return(respuesta); }
public string Anular(DIngreso Ingreso) { string rpta = ""; SqlConnection SqlCon = new SqlConnection(); try { //Código SqlCon.ConnectionString = Conexion.Cn; SqlCon.Open(); //Establecer el Comando SqlCommand SqlCmd = new SqlCommand(); SqlCmd.Connection = SqlCon; SqlCmd.CommandText = "spanular_ingreso"; SqlCmd.CommandType = CommandType.StoredProcedure; SqlParameter ParIdingreso = new SqlParameter(); ParIdingreso.ParameterName = "@idingreso"; ParIdingreso.SqlDbType = SqlDbType.Int; ParIdingreso.Value = Ingreso.Idingreso; SqlCmd.Parameters.Add(ParIdingreso); //Ejecutamos nuestro comando rpta = SqlCmd.ExecuteNonQuery() == 1 ? "OK" : "NO se anulo el Registro"; } catch (Exception ex) { rpta = ex.Message; } finally { if (SqlCon.State == ConnectionState.Open) SqlCon.Close(); } return rpta; }
//Métodos public string Insertar(DIngreso Ingreso,List<DDetalle_Ingreso> Detalle) { string rpta = ""; SqlConnection SqlCon = new SqlConnection(); try { //Código SqlCon.ConnectionString = Conexion.Cn; SqlCon.Open(); //Establecer la trasacción SqlTransaction SqlTra = SqlCon.BeginTransaction(); //Establecer el Comando SqlCommand SqlCmd = new SqlCommand(); SqlCmd.Connection = SqlCon; SqlCmd.Transaction = SqlTra; SqlCmd.CommandText = "spinsertar_ingreso"; SqlCmd.CommandType = CommandType.StoredProcedure; SqlParameter ParIdingreso = new SqlParameter(); ParIdingreso.ParameterName = "@idingreso"; ParIdingreso.SqlDbType = SqlDbType.Int; ParIdingreso.Direction = ParameterDirection.Output; SqlCmd.Parameters.Add(ParIdingreso); SqlParameter ParIdtrabajador = new SqlParameter(); ParIdtrabajador.ParameterName = "@idtrabajador"; ParIdtrabajador.SqlDbType = SqlDbType.Int; ParIdtrabajador.Value = Ingreso.Idtrabajador; SqlCmd.Parameters.Add(ParIdtrabajador); SqlParameter ParIdproveedor = new SqlParameter(); ParIdproveedor.ParameterName = "@idproveedor"; ParIdproveedor.SqlDbType = SqlDbType.Int; ParIdproveedor.Value = Ingreso.Idproveedor; SqlCmd.Parameters.Add(ParIdproveedor); SqlParameter ParFecha = new SqlParameter(); ParFecha.ParameterName = "@fecha"; ParFecha.SqlDbType = SqlDbType.Date; ParFecha.Value = Ingreso.Fecha; SqlCmd.Parameters.Add(ParFecha); SqlParameter ParTipo_Comprobante = new SqlParameter(); ParTipo_Comprobante.ParameterName = "@tipo_comprobante"; ParTipo_Comprobante.SqlDbType = SqlDbType.VarChar; ParTipo_Comprobante.Size = 20; ParTipo_Comprobante.Value = Ingreso.Tipo_Comprobante; SqlCmd.Parameters.Add(ParTipo_Comprobante); SqlParameter ParSerie = new SqlParameter(); ParSerie.ParameterName = "@serie"; ParSerie.SqlDbType = SqlDbType.VarChar; ParSerie.Size = 4; ParSerie.Value = Ingreso.Serie; SqlCmd.Parameters.Add(ParSerie); SqlParameter ParCorrelativo = new SqlParameter(); ParCorrelativo.ParameterName = "@correlativo"; ParCorrelativo.SqlDbType = SqlDbType.VarChar; ParCorrelativo.Size = 7; ParCorrelativo.Value = Ingreso.Correlativo; SqlCmd.Parameters.Add(ParCorrelativo); SqlParameter ParIgv = new SqlParameter(); ParIgv.ParameterName = "@igv"; ParIgv.SqlDbType = SqlDbType.Decimal; ParIgv.Precision = 4; ParIgv.Scale = 2; ParIgv.Value = Ingreso.Igv; SqlCmd.Parameters.Add(ParIgv); SqlParameter ParEstado = new SqlParameter(); ParEstado.ParameterName = "@estado"; ParEstado.SqlDbType = SqlDbType.VarChar; ParEstado.Size = 7; ParEstado.Value = Ingreso.Estado; SqlCmd.Parameters.Add(ParEstado); //Ejecutamos nuestro comando rpta = SqlCmd.ExecuteNonQuery() == 1 ? "OK" : "NO se Ingreso el Registro"; if (rpta.Equals("OK")) { //Obtener el código del ingreso generado this.Idingreso = Convert.ToInt32(SqlCmd.Parameters["@idingreso"].Value); foreach (DDetalle_Ingreso det in Detalle) { det.Idingreso = this.Idingreso; //Llamar al método insertar de la clase DDetalle_Ingreso rpta = det.Insertar(det,ref SqlCon,ref SqlTra); if (!rpta.Equals("OK")) { break; } } } if (rpta.Equals("OK")) { SqlTra.Commit(); } else { SqlTra.Rollback(); } } catch (Exception ex) { rpta = ex.Message; } finally { if (SqlCon.State == ConnectionState.Open) SqlCon.Close(); } return rpta; }
public string Insertar(DIngreso Ingresos, List <DDetalle_Ingreso> Detalle) { string rpta = ""; SqlConnection Sqlconexion = new SqlConnection(); try { //abrir conexion Sqlconexion.ConnectionString = Conexion.Conectar; Sqlconexion.Open(); //conexion al procedimiento almacenado SqlTransaction SqlTra = Sqlconexion.BeginTransaction(); SqlCommand sqlcmd = new SqlCommand(); sqlcmd.Connection = Sqlconexion; sqlcmd.Transaction = SqlTra; sqlcmd.CommandText = "Ingreso_Insertar"; sqlcmd.CommandType = CommandType.StoredProcedure; //conexion con variables del SP SqlParameter paridIngreso = new SqlParameter(); paridIngreso.ParameterName = "@idIngreso"; paridIngreso.SqlDbType = SqlDbType.Int; paridIngreso.Direction = ParameterDirection.Output; sqlcmd.Parameters.Add(paridIngreso); SqlParameter paridEmpleado = new SqlParameter(); paridEmpleado.ParameterName = "@idEmpleado"; paridEmpleado.SqlDbType = SqlDbType.Int; paridEmpleado.Value = Ingresos.IdEmpleado; sqlcmd.Parameters.Add(paridEmpleado); SqlParameter parFecha = new SqlParameter(); parFecha.ParameterName = "@fecha"; parFecha.SqlDbType = SqlDbType.Date; parFecha.Value = Ingresos.Fecha; sqlcmd.Parameters.Add(parFecha); SqlParameter parSerie = new SqlParameter(); parSerie.ParameterName = "@serie"; parSerie.SqlDbType = SqlDbType.VarChar; parSerie.Size = 4; parSerie.Value = Ingresos.Serie; sqlcmd.Parameters.Add(parSerie); SqlParameter parEstado = new SqlParameter(); parEstado.ParameterName = "@estado"; parEstado.SqlDbType = SqlDbType.VarChar; parEstado.Size = 7; parEstado.Value = Ingresos.Estado; sqlcmd.Parameters.Add(parEstado); rpta = sqlcmd.ExecuteNonQuery() == 1 ? "OK" : "NO SE REALIZO EL REGISTRO DE INGRESO"; if (rpta.Equals("OK")) { //obtener codigo del ingreso generado this.IdIngreso = Convert.ToInt32(sqlcmd.Parameters["@idIngreso"].Value); foreach (DDetalle_Ingreso det in Detalle) { det.IdIngreso = this.IdIngreso; rpta = det.Insertar(det, ref Sqlconexion, ref SqlTra); if (!rpta.Equals("OK")) { break; } } } if (rpta.Equals("OK")) { SqlTra.Commit(); } else { SqlTra.Rollback(); } } catch (Exception ex) { rpta = ex.Message; } finally { if (Sqlconexion.State == ConnectionState.Open) { Sqlconexion.Close(); Sqlconexion.Dispose(); } } return(rpta); }
public static DataTable MostrarDetalle(string textobuscar) { DIngreso Obj = new DIngreso(); return Obj.MostrarDetalle(textobuscar); }
//Método BuscarFecha que llama al método BuscarNombre //de la clase DIngreso de la CapaDatos public static DataTable BuscarFechas(string textobuscar,string textobuscar2) { DIngreso Obj = new DIngreso(); return Obj.BuscarFechas(textobuscar,textobuscar2); }
public static string Anular(int idingreso) { DIngreso Obj = new DIngreso(); Obj.Idingreso = idingreso; return Obj.Anular(Obj); }
//MÉTODOS //MÉTODO INSERTAR //Parámetro del tipo: LIst, y va a hacer una instanccia a la clase DDetalle_Ingreso... //... lo va recibir como una lista a todos los detalles de ingreso, así va a insertar de este modo... //... todo el ingreso y va a insertar uno a uno los detalles que tenga ese ingreso con el segundo... //... parámetro que va a ser un objeto del tipo List. public string Insertar(DIngreso Ingreso, List <DDetalle_Ingreso> Detalle) { string rpta = ""; SqlConnection SqlCon = new SqlConnection(); try { //Código SqlCon.ConnectionString = Conexion.Cn; SqlCon.Open(); //Establecer la trasacción //Iniciamos una nueva transacción para que si cada detalle de ingreso sea relacionado... //...únicamente con un solo ingreso y esto lo vamos a trabajar mediante la transacción.. //...mediante el objeto: SqlTra SqlTransaction SqlTra = SqlCon.BeginTransaction(); //Establecer el Comando SqlCommand SqlCmd = new SqlCommand(); SqlCmd.Connection = SqlCon; //Le decimos a éste comando que trabaje con la transacción SqlTra: SqlCmd.Transaction = SqlTra; SqlCmd.CommandText = "spinsertar_ingreso"; SqlCmd.CommandType = CommandType.StoredProcedure; SqlParameter ParIdingreso = new SqlParameter(); ParIdingreso.ParameterName = "@idingreso"; ParIdingreso.SqlDbType = SqlDbType.Int; ParIdingreso.Direction = ParameterDirection.Output; SqlCmd.Parameters.Add(ParIdingreso); SqlParameter ParIdtrabajador = new SqlParameter(); ParIdtrabajador.ParameterName = "@idtrabajador"; ParIdtrabajador.SqlDbType = SqlDbType.Int; ParIdtrabajador.Value = Ingreso.Idtrabajador; SqlCmd.Parameters.Add(ParIdtrabajador); SqlParameter ParIdproveedor = new SqlParameter(); ParIdproveedor.ParameterName = "@idproveedor"; ParIdproveedor.SqlDbType = SqlDbType.Int; ParIdproveedor.Value = Ingreso.Idproveedor; SqlCmd.Parameters.Add(ParIdproveedor); SqlParameter ParFecha = new SqlParameter(); ParFecha.ParameterName = "@fecha"; ParFecha.SqlDbType = SqlDbType.Date; ParFecha.Value = Ingreso.Fecha; SqlCmd.Parameters.Add(ParFecha); SqlParameter ParTipo_Comprobante = new SqlParameter(); ParTipo_Comprobante.ParameterName = "@tipo_comprobante"; ParTipo_Comprobante.SqlDbType = SqlDbType.VarChar; ParTipo_Comprobante.Size = 20; ParTipo_Comprobante.Value = Ingreso.Tipo_Comprobante; SqlCmd.Parameters.Add(ParTipo_Comprobante); SqlParameter ParSerie = new SqlParameter(); ParSerie.ParameterName = "@serie"; ParSerie.SqlDbType = SqlDbType.VarChar; ParSerie.Size = 4; ParSerie.Value = Ingreso.Serie; SqlCmd.Parameters.Add(ParSerie); SqlParameter ParCorrelativo = new SqlParameter(); ParCorrelativo.ParameterName = "@correlativo"; ParCorrelativo.SqlDbType = SqlDbType.VarChar; ParCorrelativo.Size = 7; ParCorrelativo.Value = Ingreso.Correlativo; SqlCmd.Parameters.Add(ParCorrelativo); SqlParameter ParIgv = new SqlParameter(); ParIgv.ParameterName = "@igv"; ParIgv.SqlDbType = SqlDbType.Decimal; ParIgv.Precision = 4; ParIgv.Scale = 2; ParIgv.Value = Ingreso.Igv; SqlCmd.Parameters.Add(ParIgv); SqlParameter ParEstado = new SqlParameter(); ParEstado.ParameterName = "@estado"; ParEstado.SqlDbType = SqlDbType.VarChar; ParEstado.Size = 7; ParEstado.Value = Ingreso.Estado; SqlCmd.Parameters.Add(ParEstado); //Ejecutamos nuestro comando rpta = SqlCmd.ExecuteNonQuery() == 1 ? "OK" : "NO se Ingreso el Registro"; //Escribimos las sentencias para poder insertar los detalles: if (rpta.Equals("OK")) { //Obtener el código del ingreso generado //De este clase, de la propiedad Idingreso, convertimos el valor que vamos a obtener.. //... en este caso SqlCmd. Y qué parámetro? el parámetro @idingreso, que es un parámetro de salida. //... Entonces este valor (value) lo vamos a almacenar en la propiedad Idingreso: this.Idingreso = Convert.ToInt32(SqlCmd.Parameters["@idingreso"].Value); //Vamos a recorrer ese conjunto de detalles que vamos a enviarlos desde al Capa Negocio: //Recorremos detalle por detalle e ir insertándolo en la BD junto con su ingreso específico: foreach (DDetalle_Ingreso det in Detalle) { //Cada detalle que voy recorriendo dónde lo almaceno? en mi objeto: det, que es de la clase... //... DDetelle_Ingreso: //De mi objeto det, su Idingreso, porque éste Idingreso no lo tengo no lo tengo en el detalle... //...porque recién lo he generado, va a ser igual al Idingreso que se me ha devuelto en esta parte... //...porque ya sé qué Idingreso que se ha generado, el identity que se ha generado. det.Idingreso = this.Idingreso; //Llamar al método insertar de la clase DDetalle_Ingreso rpta = det.Insertar(det, ref SqlCon, ref SqlTra); //Establezco una conexión si se pudo insertar o no éste detalle de ingreso: if (!rpta.Equals("OK")) { //Como es un error salgo del bucle: break; } } } //Si se pudo insertar: if (rpta.Equals("OK")) { //Decirle a mi variable SqlTra, confirmar la transacción para ingresar el ingreso... //... con su detalle de ingreso que puede ser uno o varios detalles de ingresos: SqlTra.Commit(); } else { //Caso contrario negamos la transacción: SqlTra.Rollback(); } } catch (Exception ex) { rpta = ex.Message; } finally { if (SqlCon.State == ConnectionState.Open) { SqlCon.Close(); } } return(rpta); }