void Anular()
        {
            string res;
            bool   anular = true;

            if (string.IsNullOrWhiteSpace(txtRazon.Text))
            {
                anular = false;
                dxErrorProvider1.SetError(txtRazon, "ESTE CAMPO ES OBLIGATORIO");
            }
            if (anular)
            {
                if (XtraMessageBox.Show("¿ANULAR DOCUMENTO?", Configuraciones.Configuraciones.NombreDelSistema, MessageBoxButtons.YesNo) != DialogResult.No)
                {
                    MAnularOperacion objAnular = new MAnularOperacion();
                    objAnular.Codito            = codigo;
                    objAnular.IdTiendaDestino   = id_tienda_destino;
                    objAnular.IdTienda          = Configuraciones.Configuraciones.idtienda;
                    objAnular.IdTipoDeDocumento = id_tipo_documento;
                    objAnular.IdEncabezado      = id_encabezado;
                    objAnular.Opcion            = 0;

                    List <MAnularOperacionDetalle> listaEliminar = new List <MAnularOperacionDetalle>();
                    for (int i = 0; i < gridViewDetalle.DataRowCount; i++)
                    {
                        MAnularOperacionDetalle objDetalle = new MAnularOperacionDetalle();
                        objDetalle.IdEncabezado = id_encabezado;
                        objDetalle.IdTienda     = Configuraciones.Configuraciones.idtienda;
                        objDetalle.IdDetalle    = Convert.ToInt32(gridViewDetalle.GetRowCellValue(i, "id_movimiento_det"));
                        objDetalle.IdProducto   = Convert.ToInt32(gridViewDetalle.GetRowCellValue(i, "idproducto"));
                        objDetalle.IdBodega     = Convert.ToInt32(gridViewDetalle.GetRowCellValue(i, "id_bodega"));
                        objDetalle.Cantidad     = Convert.ToInt32(gridViewDetalle.GetRowCellValue(i, "cantidad"));
                        objDetalle.Opcion       = 0;
                        objDetalle.Opcion       = id_tipo_documento;
                        listaEliminar.Add(objDetalle);
                    }

                    res = ControllerAnulaciones.AnularOperacion(objAnular, listaEliminar);
                    if (res == "OK")
                    {
                        this.Close();
                    }
                    else
                    {
                        XtraMessageBox.Show("ERROR AL REALIZAR LA OPERACIÓN " + res);
                    }
                }
            }
        }
        public static string AnularOperacion(MAnularOperacion encabezado, List <MAnularOperacionDetalle> detalle)
        {
            string         rpta      = "";
            MProcedimiento objProc   = new MProcedimiento();
            MExecute       objExcute = new MExecute();

            try
            {
                objProc.NombreProcedimiento = "SPUpdate_AnularDocumentos";
                objProc.Parametros.Add(new MParametro {
                    Nombre = "@codigo", Valor = encabezado.Codito, Tipo = DbType.Int64, Out = false
                });
                objProc.Parametros.Add(new MParametro {
                    Nombre = "@id_encabezado", Valor = encabezado.IdEncabezado, Tipo = DbType.Int64, Out = false
                });
                objProc.Parametros.Add(new MParametro {
                    Nombre = "@id_tienda", Valor = encabezado.IdTienda, Tipo = DbType.Int64, Out = false
                });
                objProc.Parametros.Add(new MParametro {
                    Nombre = "@id_documento", Valor = encabezado.IdTipoDeDocumento, Tipo = DbType.Int64, Out = false
                });
                objProc.Parametros.Add(new MParametro {
                    Nombre = "@opcion", Valor = encabezado.Opcion, Tipo = DbType.Int64, Out = false
                });
                objExcute.IniciarTran();
                rpta = objExcute.UpsertTransaction(objProc);

                if (detalle != null)
                {
                    if (rpta.Equals("OK"))
                    {
                        foreach (MAnularOperacionDetalle item in detalle)
                        {
                            MProcedimiento objProc1 = new MProcedimiento();
                            objProc1.NombreProcedimiento = "SPUpdate_AnularDocumentosDetalle";
                            objProc1.Parametros.Add(new MParametro {
                                Nombre = "@id_encabezado", Valor = item.IdEncabezado, Tipo = DbType.Int32, Out = false
                            });
                            objProc1.Parametros.Add(new MParametro {
                                Nombre = "@id_tienda", Valor = item.IdTienda, Tipo = DbType.Int32, Out = false
                            });
                            objProc1.Parametros.Add(new MParametro {
                                Nombre = "@id_detalle", Valor = item.IdDetalle, Tipo = DbType.Int32, Out = false
                            });
                            objProc1.Parametros.Add(new MParametro {
                                Nombre = "@id_producto", Valor = item.IdProducto, Tipo = DbType.Int32, Out = false
                            });
                            objProc1.Parametros.Add(new MParametro {
                                Nombre = "@id_bodega", Valor = item.IdBodega, Tipo = DbType.Int32, Out = false
                            });
                            objProc1.Parametros.Add(new MParametro {
                                Nombre = "@cantidad", Valor = item.Cantidad, Tipo = DbType.Int32, Out = false
                            });
                            objProc1.Parametros.Add(new MParametro {
                                Nombre = "@opcion", Valor = item.Opcion, Tipo = DbType.Int32, Out = false
                            });
                            objProc1.Parametros.Add(new MParametro {
                                Nombre = "@id_documento", Valor = item.IdDocumento, Tipo = DbType.Int32, Out = false
                            });
                            rpta = objExcute.UpsertTransaction(objProc1);
                            if (!rpta.Equals("OK"))
                            {
                                break;
                            }
                        }
                    }
                }

                if (rpta.Equals("OK"))
                {
                    objExcute.TranasctionCommit();
                }
                else
                {
                    objExcute.TranasctionRollback();
                }
            }
            catch (Exception)
            {
                throw;
            }
            finally
            {
                objExcute.cerrarConexionTransaccion();
            }
            return(rpta);
        }