//Insetar venta public string Insertar(DVenta Venta, List <DDetalle_Venta> Detalle) { string rpta = ""; SqlConnection SqlCon = new SqlConnection(); try { //Codigo SqlCon.ConnectionString = cadenaConexion; SqlCon.Open(); //Establecer transaccion SqlTransaction SqlTra = SqlCon.BeginTransaction(); //Establecer 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 ParIdempleado = new SqlParameter(); ParIdempleado.ParameterName = "@idempleado "; ParIdempleado.SqlDbType = SqlDbType.Int; ParIdempleado.Value = Venta.Idempleado; SqlCmd.Parameters.Add(ParIdempleado); SqlParameter ParIdcliente = new SqlParameter(); ParIdcliente.ParameterName = "@idcliente "; ParIdcliente.SqlDbType = SqlDbType.Int; ParIdcliente.Value = Venta.Idcliente; SqlCmd.Parameters.Add(ParIdcliente); SqlParameter ParFecha = new SqlParameter(); ParFecha.ParameterName = "@fechaventa "; ParFecha.SqlDbType = SqlDbType.Date; ParFecha.Value = Venta.Fechaventa; SqlCmd.Parameters.Add(ParFecha); //Ejecutamos rpta = SqlCmd.ExecuteNonQuery() == 1 ? "OK" : "NO se Ingreso el registro"; if (rpta.Equals("OK")) { //Obtener el codigo de la venta generada this.Idventa = Convert.ToInt32(SqlCmd.Parameters["@idventa"].Value); foreach (DDetalle_Venta det in Detalle) { det.IdVenta = this.Idventa; //Llamar al metodo para insetar rpta = det.Insertar(det, ref SqlCon, ref SqlTra); if (!rpta.Equals("OK")) { break; } else { //Actualizar stock rpta = DisminuirStock(det.IdProducto, 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); }