public string Insertar(DVenta Venta, List <DDetalle_Venta> Detalle) { string rpta = ""; SqlConnection SqlCon = new SqlConnection(); try { //Código SqlCon.ConnectionString = RRSOFT.CnnStr; 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_venta"; SqlCmd.CommandType = CommandType.StoredProcedure; SqlParameter ParIdventa = new SqlParameter(); ParIdventa.ParameterName = "@idventa"; ParIdventa.SqlDbType = SqlDbType.Int; ParIdventa.Direction = ParameterDirection.Output; SqlCmd.Parameters.Add(ParIdventa); SqlParameter ParIdCliente = new SqlParameter(); ParIdCliente.ParameterName = "@idcliente"; ParIdCliente.SqlDbType = SqlDbType.Int; ParIdCliente.Value = Venta.Idcliente; SqlCmd.Parameters.Add(ParIdCliente); SqlParameter ParIdtrabajador = new SqlParameter(); ParIdtrabajador.ParameterName = "@idtrabajador"; ParIdtrabajador.SqlDbType = SqlDbType.Int; ParIdtrabajador.Value = Venta.Idtrabajador; SqlCmd.Parameters.Add(ParIdtrabajador); SqlParameter ParFecha = new SqlParameter(); ParFecha.ParameterName = "@fecha"; ParFecha.SqlDbType = SqlDbType.Date; ParFecha.Value = Venta.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 = Venta.Tipo_Comprobante; SqlCmd.Parameters.Add(ParTipo_Comprobante); SqlParameter ParSerie = new SqlParameter(); ParSerie.ParameterName = "@serie"; ParSerie.SqlDbType = SqlDbType.VarChar; ParSerie.Size = 4; ParSerie.Value = Venta.Serie; SqlCmd.Parameters.Add(ParSerie); SqlParameter ParCorrelativo = new SqlParameter(); ParCorrelativo.ParameterName = "@correlativo"; ParCorrelativo.SqlDbType = SqlDbType.VarChar; ParCorrelativo.Size = 7; ParCorrelativo.Value = Venta.Correlativo; SqlCmd.Parameters.Add(ParCorrelativo); SqlParameter ParIgv = new SqlParameter(); ParIgv.ParameterName = "@igv"; ParIgv.SqlDbType = SqlDbType.Decimal; ParIgv.Precision = 4; ParIgv.Scale = 2; ParIgv.Value = Venta.Igv; SqlCmd.Parameters.Add(ParIgv); //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.Idventa = Convert.ToInt32(SqlCmd.Parameters["@idventa"].Value); foreach (DDetalle_Venta det in Detalle) { det.Idventa = this.Idventa; //Llamar al método insertar de la clase DDetalle_Ingreso rpta = det.Insertar(det, ref SqlCon, ref SqlTra); if (!rpta.Equals("OK")) { break; } else { //Actualizamos el stock rpta = DisminuirStock(det.Iddetalle_ingreso, det.Cantidad); 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); }