Exemplo n.º 1
0
        private void btnGestorDeClientes_Click(object sender, EventArgs e)
        {
            FrmHuesped c = new FrmHuesped();

            this.Hide();
            c.ShowDialog();
            this.Close();
        }
        private void btnEntrada_Click(object sender, EventArgs e)
        {
            string obtenerCantidadDeHospedados           = "SELECT Cantidad_Huespedes FROM AEFI.TL_Reserva r WHERE r.ID_Reserva = @idReserva";
            String recepcionistaHabilitadoReservaCheckIn = "SELECT ID_Reserva FROM AEFI.TL_Reserva r, AEFI.TL_Usuario_Por_Hotel uph, AEFI.TL_Habitacion h " +
                                                           "WHERE r.ID_Habitacion = h.ID_Habitacion AND h.ID_Hotel = uph.ID_Hotel " +
                                                           "AND r.Estado = 'Correcta' " +
                                                           "AND uph.ID_Usuario = @idUsuario AND uph.ID_Rol = 2 AND uph.ID_Rol = @idRol AND r.ID_Reserva = @idReserva " +
                                                           "AND NOT EXISTS(SELECT re.ID_Estadia FROM AEFI.TL_Registro_Evento re, AEFI.TL_Estadia e WHERE e.ID_Reserva = @idReserva AND e.ID_Estadia = re.ID_Estadia AND re.Descripcion ='Ingreso')";

            String verificarFechaDeIngresoHoy = " SELECT * FROM AEFI.TL_Reserva r WHERE MONTH(r.Fecha_Desde) = MONTH(GETDATE()) AND YEAR(r.fecha_desde) = YEAR(GETDATE()) AND DAY(r.Fecha_Desde) = DAY(GETDATE()) AND r.Estado = 'Correcta' AND r.ID_Reserva = " + reservaTxtBox.Text;


            try
            {
                conexion.Open();



                if (verificarRecepcionistaHabilitado(recepcionistaHabilitadoReservaCheckIn))
                {
                    SqlCommand    comando = new SqlCommand(verificarFechaDeIngresoHoy, conexion);
                    SqlDataReader reader  = comando.ExecuteReader();
                    if (!reader.HasRows)
                    {
                        comando             = new SqlCommand("AEFI.cancelarReserva", conexion);
                        comando.CommandType = CommandType.StoredProcedure;
                        comando.Parameters.Add(new SqlParameter("@IDReserva", reservaTxtBox.Text));
                        comando.ExecuteNonQuery();

                        MessageBox.Show("La reserva no corresponde al día corriente. Realice una nueva reserva", "", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        button3_Click(this, e);
                    }
                    else
                    {
                        comando = new SqlCommand(obtenerCantidadDeHospedados, conexion);
                        comando.Parameters.Add(new SqlParameter("@idReserva", reservaTxtBox.Text));
                        reader = comando.ExecuteReader();
                        reader.Read();
                        int numeroHospedados = Convert.ToInt32(reader[0]);
                        reader.Close();

                        for (int i = 0; i < numeroHospedados; i++)
                        {
                            int j = i;
                            MessageBox.Show("Ingrese el huesped número: " + (++j), "", MessageBoxButtons.OK, MessageBoxIcon.Information);

                            FrmHuesped huesped = new FrmHuesped(1);
                            huesped.ShowDialog();
                        }

                        //Creo la factura
                        comando             = new SqlCommand("AEFI.insertar_factura", conexion);
                        comando.CommandType = CommandType.StoredProcedure;
                        comando.Parameters.Add(new SqlParameter("@fecha", Program.fecha));
                        comando.Parameters.Add(new SqlParameter("@id_reserva", reservaTxtBox.Text));
                        SqlParameter par = new SqlParameter("@id_factura", 0);
                        par.Direction = ParameterDirection.Output;
                        comando.Parameters.Add(par);
                        comando.ExecuteNonQuery();
                        int idFactura = Convert.ToInt32(par.Value);


                        //Genero el ingreso
                        comando             = new SqlCommand("AEFI.generarIngresoEstadia", conexion);
                        comando.CommandType = CommandType.StoredProcedure;
                        comando.Parameters.Add(new SqlParameter("@idFactura", idFactura));
                        comando.Parameters.Add(new SqlParameter("@idReserva", reservaTxtBox.Text));
                        comando.Parameters.Add(new SqlParameter("@idUsuario", Program.idUsuario));
                        comando.ExecuteNonQuery();

                        MessageBox.Show("El check in de la estadía fue correctamente procesado", "", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                }
            }

            catch (SqlException exc)
            {
                MessageBox.Show(exc.Message, "", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }

            finally
            {
                conexion.Close();
            }
        }