public string Anular(CD_Ingreso Ingreso) { string rpta = ""; SqlConnection SqlCon = new SqlConnection(); try { //Código SqlConnection cn = ConexionBD.Instancia.Conectar(); //SqlCon.ConnectionString = Conexion.Cn; cn.Open(); //Establecer el Comando SqlCommand SqlCmd = new SqlCommand(); SqlCmd.Connection = cn; 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 Ingreso"; } catch (Exception ex) { rpta = ex.Message; } finally { if (SqlCon.State == ConnectionState.Open) { SqlCon.Close(); } } return(rpta); }
//Métodos public string Insertar(CD_Ingreso Ingreso, List <CD_DetalleIngreso> Detalles) { string rpta = ""; SqlConnection SqlCon = new SqlConnection(); try { //Código // SqlConnection cn = ConexionBD.Instancia.Conectar(); SqlCon.ConnectionString = ConexionBD.Cn; SqlCon.Open(); //Establecer la transacció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; //Parámetros SqlParameter ParIdingreso = new SqlParameter(); ParIdingreso.ParameterName = "@idingreso"; ParIdingreso.SqlDbType = SqlDbType.Int; ParIdingreso.Direction = ParameterDirection.Output; SqlCmd.Parameters.Add(ParIdingreso); SqlParameter ParIdproveedor = new SqlParameter(); ParIdproveedor.ParameterName = "@Id_Proveedor"; ParIdproveedor.SqlDbType = SqlDbType.Int; ParIdproveedor.Value = Ingreso.Idproveedor; SqlCmd.Parameters.Add(ParIdproveedor); SqlParameter ParFecha = new SqlParameter(); ParFecha.ParameterName = "@fecha"; ParFecha.SqlDbType = SqlDbType.VarChar; ParFecha.Value = Ingreso.Fecha; SqlCmd.Parameters.Add(ParFecha); SqlParameter ParTipo_Comprobante = new SqlParameter(); ParTipo_Comprobante.ParameterName = "@Id_TipCom"; ParTipo_Comprobante.SqlDbType = SqlDbType.Int; //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); SqlParameter ParUsuarioCreacion_Ingreso = new SqlParameter(); ParUsuarioCreacion_Ingreso.ParameterName = "@UsuarioCreacion_Ingreso"; ParUsuarioCreacion_Ingreso.SqlDbType = SqlDbType.Int; ParUsuarioCreacion_Ingreso.Value = Ingreso.UsuarioCreacion_Ingreso; SqlCmd.Parameters.Add(ParUsuarioCreacion_Ingreso); SqlParameter ParUsuarioUpdate_Ingreso = new SqlParameter(); ParUsuarioUpdate_Ingreso.ParameterName = "@UsuarioUpdate_Ingreso"; ParUsuarioUpdate_Ingreso.SqlDbType = SqlDbType.Int; ParUsuarioUpdate_Ingreso.Value = Ingreso.UsuarioUpdate_Ingreso; SqlCmd.Parameters.Add(ParUsuarioUpdate_Ingreso); //Ejecutamos nuestro comando rpta = SqlCmd.ExecuteNonQuery() == 1 ? "OK" : "NO se Ingreso el Registro"; if (rpta.Equals("OK")) { //Obtenemos el codigo del ingreso que se genero por la base de datos this.Idingreso = Convert.ToInt32(SqlCmd.Parameters["@idingreso"].Value); foreach (CD_DetalleIngreso det in Detalles) { //Establecemos el codigo del ingreso que se autogenero det.Idingreso = this.Idingreso; //Llamamos al metodo insertar de la clase DetalleIngreso //y le pasamos la conexion y la transaccion que debe de usar rpta = det.Insertar(det, ref SqlCon, ref SqlTra); if (!rpta.Equals("OK")) { //Si ocurre un error al insertar un detalle de ingreso salimos del for break; } } } if (rpta.Equals("OK")) { //Se inserto todo los detalles y confirmamos la transaccion SqlTra.Commit(); } else { //Algun detalle no se inserto y negamos la transaccion SqlTra.Rollback(); } } catch (Exception ex) { rpta = ex.Message; } finally { if (SqlCon.State == ConnectionState.Open) { SqlCon.Close(); } } return(rpta); }