private void BtnAnularVenta_Click(object sender, RoutedEventArgs e) { if (MessageBox.Show("Esta Seguro de Anular esta venta?", "Anular Venta", MessageBoxButton.YesNo, MessageBoxImage.Question) == MessageBoxResult.Yes) { if (dgdListaVentas.Items.Count > 0 && dgdListaVentas.SelectedItem != null) { //Realizamos Get try { DataRowView dataRow = (DataRowView)dgdListaVentas.SelectedItem; idVen = int.Parse(dataRow.Row.ItemArray[0].ToString()); brl = new VentaBRL(); venta = brl.Get(idVen); LoadDataGridIdItems(); MotivoAnulacionVenta motivoAnulacionVenta = new MotivoAnulacionVenta(); motivoAnulacionVenta.ShowDialog(); txtmotivodeAnulacion.Text = motivoAnulacionVenta.txtmotivoAnulacion.Text; //Anular Venta DateTime fecha = DateTime.Now; brl = new VentaBRL(); DataTable dt = brl.SelectIdItemsAnular(idVen); List <Item> items = new List <Item>(); for (int i = 0; i < dt.Rows.Count; i++) { items.Add(new Item() { IdItem = int.Parse(dt.Rows[i][0].ToString()) }); } Venta ventaa = new Venta() { IdVenta = idVen }; Garantia garantia = new Garantia() { IdGarantia = idVen }; VentaAnulada ventaNull = new VentaAnulada() { IdVentaAnulada = idVen, IdEmpleado = Sesion.idSesion, FechaRegistro = fecha, Motivo = txtmotivodeAnulacion.Text }; brl.AnularVentas(ventaa, garantia, items, ventaNull); LoadDataGrid(); } catch (Exception ex) { MessageBox.Show("Ocurrio un error comuniquese con el administrador de sistemas"); } } } }
/// <summary> /// Metodo Anular Venta /// </summary> /// <param name="venta"></param> /// <param name="garantia"></param> /// <param name="items"></param> /// <param name="ventaAnulada"></param> public void AnularVenta(Venta venta, Garantia garantia, List <Item> items, VentaAnulada ventaAnulada) { SqlConnection connection = Methods.GetConnection(); connection.Open(); SqlCommand command = connection.CreateCommand(); //inicio transaccion SqlTransaction transaction; transaction = connection.BeginTransaction("AnularVenta"); command.Connection = connection; command.Transaction = transaction; try { //query 1 Venta Methods.GenerateLogsActivities(DateTime.Now, "Inicio del Metodo Anular Venta con transacciones", Sesion.usuarioSesion); command.CommandText = "UPDATE Venta SET estadoVenta=0, total=0 WHERE idVenta=@idVenta"; command.Parameters.AddWithValue("@idVenta", venta.IdVenta); command.ExecuteNonQuery(); //query Venta Item command.CommandText = "UPDATE Item SET estadoItem=1 WHERE idItem=@idItem"; int cont = 0; foreach (Item producto in items) { command.Parameters.AddWithValue("@idItem", producto.IdItem); command.ExecuteNonQuery(); command.Parameters.Clear(); cont++; } //query Garantia command.CommandText = "UPDATE Garantia SET estadoGarantia=0 WHERE idGarantia=@idGarantia"; command.Parameters.AddWithValue("@idGarantia", garantia.IdGarantia); command.ExecuteNonQuery(); //query Venta Anulada command.CommandText = "INSERT INTO VentaAnulada(idVentaAnulada,idEmpleado,fechaHora,motivo) VALUES (@idVentaAnulada,@idEmpleado,@fechaHora,@motivo)"; command.Parameters.AddWithValue("@idVentaAnulada", ventaAnulada.IdVentaAnulada); command.Parameters.AddWithValue("@idEmpleado", Sesion.idSesion); command.Parameters.AddWithValue("@fechaHora", ventaAnulada.FechaRegistro); command.Parameters.AddWithValue("@motivo", ventaAnulada.Motivo); command.ExecuteNonQuery(); //query Auditoria Proceso principal string descripcionVenta = "ID Venta: " + venta.IdVenta + ", Venta de: " + cont + " Items" + ", Total: " + venta.Total + ", ID Garantia: " + venta.IdVenta + ", Motivo de Anulacion: " + ventaAnulada.Motivo; string tabla = "Venta"; char c = 'D'; command.CommandText = "INSERT INTO AuditoriaPrincipal (tabla,creaDele,descripcion,idUsuario)VALUES(@tabla,@creaDele,@descripcion,@idUsuario)"; command.Parameters.AddWithValue("@tabla", tabla); command.Parameters.AddWithValue("@creaDele", c); command.Parameters.AddWithValue("@descripcion", descripcionVenta); command.Parameters.AddWithValue("@idUsuario", Sesion.idSesion); command.ExecuteNonQuery(); // Attempt to commit the transaction. transaction.Commit(); Methods.GenerateLogsActivities(DateTime.Now, "Anular Venta con transacciones Realizada", Sesion.usuarioSesion); } catch (SqlException ex) { Methods.GenerateLogsErrors(DateTime.Now, ex.Message); } catch (Exception ex) { transaction.Rollback(); Methods.GenerateLogsErrors(DateTime.Now, ex.Message); } }
/// <summary> /// Metodo AnularVentas VentaBRL /// </summary> /// <param name="venta"></param> /// <param name="garantia"></param> /// <param name="items"></param> /// <param name="ventaAnulada"></param> public void AnularVentas(Venta venta, Garantia garantia, List <Item> items, VentaAnulada ventaAnulada) { dal.AnularVenta(venta, garantia, items, ventaAnulada); }