private void btnSeleccionar_Click(object sender, EventArgs e)
        {
            if (ValidateChildren())
            {
                var camposValores = gdDataBase.newParameters();
                if (textBoxDni.Text.Trim() != "")
                    camposValores.Add("dni", new gdDataBase.ValorTipo(textBoxDni.Text, SqlDbType.Int));
                camposValores.Add("hoy", new gdDataBase.ValorTipo(Config.fecha.ToString(), SqlDbType.DateTime));

                Dictionary<int, String> errorMensaje = new Dictionary<int, string>();

                errorMensaje.Add(69018, "El cliente no tiene ninguna milla acumulada. Seleccione un cliente con millas por favor.");

                var historialMillas = new SPExecGetData("ÑUFLO.DetalleMillasDe", camposValores, errorMensaje);
                DataTable dt = (DataTable)historialMillas.Exec();
                if (dt.Rows.Count == 0 && !historialMillas.huboError())
                    MessageBox.Show("No hay resultados que satisfagan la búsqueda", "Cliente inexistente",
                                     MessageBoxButtons.OK, MessageBoxIcon.Warning);
                else
                {
                    camposValores.Remove("hoy");
                    dataGridViewDetalleAcumulacion.DataSource = dt;
                    textBoxMillasAcumuladas.Text = new gdDataBase().ExecAndGetData("ÑUFLO.MillasTotalesDe", camposValores, new Dictionary<int, String>()).Rows[0].ItemArray[0].ToString();
                }
            }
        }
        private void generarCompra()
        {
            Dictionary<String, gdDataBase.ValorTipo> camposValores = new Dictionary<string, gdDataBase.ValorTipo>();
            Dictionary<int, String> errorMensaje = new Dictionary<int, string>();

            camposValores.Add("id_viaje", new gdDataBase.ValorTipo(compraARealizar.idViaje.ToString(), SqlDbType.Int));
            camposValores.Add("dni", new gdDataBase.ValorTipo(textBoxDNI.Text, SqlDbType.Int));
            camposValores.Add("hoy", new gdDataBase.ValorTipo(Config.fecha.ToString(), SqlDbType.DateTime));

            var spExec = new SPExecGetData("ÑUFLO.CrearCompra", camposValores, null);

            var dt = (DataTable)spExec.Exec();

            if (spExec.huboError())
            {
                spExec.mostrarErrorSqlProducido();
                MessageBox.Show(spExec.codError().ToString());
                throw new CompraException();
            }
            compraARealizar = new FormSeleccionViaje.Compra(compraARealizar.idViaje,
                Convert.ToInt32(textBoxDNI.Text), Convert.ToInt32(dt.Rows[0].ItemArray[0]));

            pnr = Convert.ToInt32(dt.Rows[0].ItemArray[0]);
        }
        //cantidadButacasVentanillaPasillo
        private void btnBajaVidaUtil_Click(object sender, EventArgs e)
        {
            DataGridViewRow filaSeleccionada = getFilaSeleccionada();

            Dictionary<String, gdDataBase.ValorTipo> camposValores = new Dictionary<string, gdDataBase.ValorTipo>();
            Dictionary<int, String> errorMensaje = new Dictionary<int, string>();

            camposValores.Add("id_aeronave", new gdDataBase.ValorTipo(filaSeleccionada.Cells[0].FormattedValue.ToString(), SqlDbType.Int));
            camposValores.Add("fecha_hoy", new gdDataBase.ValorTipo(Config.fecha.ToString(), SqlDbType.DateTime));

            errorMensaje.Add(60003, "La nave ya se encuentra en mantenimiento");
            errorMensaje.Add(60004, "La nave ya se encuentra fuera de su vida util");
            errorMensaje.Add(62004, "La fecha de reincorporacion debe ser mayor a la fecha de hoy");

            var ejecucion = new SPExecGetData("ÑUFLO.ValidarAeronaveActiva", camposValores, errorMensaje);

            DataTable dt = (DataTable)ejecucion.Exec();

            if (!ejecucion.huboError())
            {
                int cantidadViajesPendientes = -1;
                if (dt.Rows.Count > 0)
                    cantidadViajesPendientes = Convert.ToInt32(dt.Rows[0].ItemArray[0]);

                if (cantidadViajesPendientes > 0)
                {
                    DialogResult dialogResult = MessageBox.Show("¿Desea Reprogramar los " + cantidadViajesPendientes
                        + " viajes pendientes asociados a la Aeronave dada en baja?\nDe elegir no, simplemente se cancelarán esos viajes",
                        "Baja por vida útil de Aeronave con viajes asignados", MessageBoxButtons.YesNo);
                    if (dialogResult == DialogResult.Yes)
                    {
                        // fecha inicio la considero como la fecha actual
                        camposValores.Clear();
                        camposValores.Add("id_aeronave", new gdDataBase.ValorTipo(filaSeleccionada.Cells[0].FormattedValue.ToString(), SqlDbType.Int));
                        camposValores.Add("fecha_inicio", new gdDataBase.ValorTipo(Config.fecha.ToString(), SqlDbType.DateTime));

                        errorMensaje.Clear();
                        errorMensaje.Add(60005, "No se pudieron reemplazar todos los viajes");

                        var ejecucionReemplazo = new SPPureExec("ÑUFLO.ReemplazarAeronavePara", camposValores, errorMensaje,
                            "Pasajes/Encomiendas de la aeronave " + filaSeleccionada.Cells[2].FormattedValue.ToString() + " reprogramadas exitosamente");

                        ejecucionReemplazo.Exec();

                        if (ejecucionReemplazo.huboError())
                        {
                            DialogResult dialogResultReemplazo = MessageBox.Show("Desea generar una nueva aeronave para poder reprogramar los viajes?\n En caso de seleccionar no se cancelaran los mismos",
                        "Agregar nueva aeronave para reprogramar", MessageBoxButtons.YesNo);

                            if (dialogResultReemplazo == DialogResult.Yes)
                            {

                                Abm_Aeronave.FormAltaAeronave formularioAltaAeronave = new FormAltaAeronave();
                                formularioAltaAeronave.setPadre(this);
                                formularioAltaAeronave.setPadreEsVidaUtil(true);
                                formularioAltaAeronave.esReemplazoDe((int)filaSeleccionada.Cells[0].Value);
                                formularioAltaAeronave.ShowDialog();
                            }
                            else if (dialogResultReemplazo == DialogResult.No)
                            {
                                cancelarPasajesVidaUtil();
                                bajaVidaUtil();
                            }
                        }
                        else
                        {
                            bajaVidaUtil();
                        }
                    }
                    else if (dialogResult == DialogResult.No)
                    {
                        cancelarPasajesVidaUtil();
                        bajaVidaUtil();
                    }
                }
                else
                {
                    bajaVidaUtil();

                }
            }
        }