Example #1
0
        private Agencia ObtenerDatosAgencia(string Agencia, MapeoHoteles mph)
        {
            Agencia     ag  = new Agencia();
            UConnection DB  = new UConnection(mph.Hotel_ip, mph.Hotel_cn, mph.Hotel_un, mph.Hotel_pw);
            string      sql = "select AG_MAYORISTA, AG_PAIS, AG_REGIM_ALIM, AG_DIAS_PREPAGO from FRAGEN where AG_AGENCIA = '" + Agencia + "'";

            try
            {
                if (DB.EjecutaSQL(sql))
                {
                    while (DB.ora_DataReader.Read())
                    {
                        ag.Mayorista    = Convert.ToString(DB.ora_DataReader["AG_MAYORISTA"]);
                        ag.Pais         = Convert.ToString(DB.ora_DataReader["AG_PAIS"]);
                        ag.Regim_alim   = Convert.ToString(DB.ora_DataReader["AG_REGIM_ALIM"]);
                        ag.Dias_prepago = Convert.ToInt16(DB.ora_DataReader["AG_DIAS_PREPAGO"]);
                    }
                }
            }
            catch (Exception ex)
            {
                //rv.Rva_error = ex.Message;
            }
            finally
            {
                DB.Dispose();
            }
            return(ag);
        }
Example #2
0
        private MapeoHoteles ObtenerParamsBDHotel(string IdHotelOB)
        {
            UConnection  DB  = new UConnection(Properties.Settings.Default.ipBD, Properties.Settings.Default.serverBD, Properties.Settings.Default.usuarioBD, Properties.Settings.Default.passBD);
            string       sql = "select * from obhotelmap where oh_hotel_ob = '" + IdHotelOB + "'";
            MapeoHoteles mh  = new MapeoHoteles();

            try
            {
                if (DB.EjecutaSQL(sql))
                {
                    while (DB.ora_DataReader.Read())
                    {
                        mh.Desc_ob      = Convert.ToString(DB.ora_DataReader["OH_DESC_OB"]);
                        mh.Hotel_os     = Convert.ToString(DB.ora_DataReader["OH_HOTEL_OS"]);
                        mh.Hotel_un     = Convert.ToString(DB.ora_DataReader["OH_HOTEL_UN"]);
                        mh.Hotel_pw     = Convert.ToString(DB.ora_DataReader["OH_HOTEL_PW"]);
                        mh.Hotel_cn     = Convert.ToString(DB.ora_DataReader["OH_HOTEL_CN"]);
                        mh.Hotel_siglas = Convert.ToString(DB.ora_DataReader["OH_HOTEL_SIGLAS"]);
                        mh.Hotel_fase   = Convert.ToString(DB.ora_DataReader["OH_HOTEL_FASE"]);
                        mh.Hotel_ip     = Convert.ToString(DB.ora_DataReader["OH_HOTEL_IP"]);
                    }
                }
            }
            catch (Exception ex)
            {
                //rv.Rva_error = ex.Message;
            }
            finally
            {
                DB.Dispose();
            }

            return(mh);
        }
Example #3
0
        private double ObtenerTipoCambio(string Moneda, MapeoHoteles mph)
        {
            double   TipoCambio = 0.0;
            DateTime Hoy        = DateTime.Today;

            fecha_actual = Hoy.ToString("dd/mm/yy", CultureInfo.CreateSpecificCulture("en-US"));
            UConnection DB  = new UConnection(mph.Hotel_ip, mph.Hotel_cn, mph.Hotel_un, mph.Hotel_pw);
            string      sql = "select TC_FRONT from frtipoca where TC_FECHA = '" + fecha_actual + "' and TC_MONEDA = '" + Moneda + "'";

            try
            {
                if (DB.EjecutaSQL(sql))
                {
                    while (DB.ora_DataReader.Read())
                    {
                        TipoCambio = Convert.ToDouble(DB.ora_DataReader["TC_FRONT"]);
                    }
                }
            }
            catch (Exception ex)
            {
                //rv.Rva_error = ex.Message;
            }
            finally
            {
                DB.Dispose();
            }
            return(TipoCambio);
        }
Example #4
0
        private bool InsertarNombre(Freserno frn, MapeoHoteles mph)
        {
            UConnection DB    = new UConnection(mph.Hotel_ip, mph.Hotel_cn, mph.Hotel_un, mph.Hotel_pw);
            string      sql   = "";
            int         filas = 0;

            sql = "insert into freserno (VN_RESERVA,VN_SECUENCIA,VN_APELLIDO,VN_NOMBRE) VALUES (" + "'"
                  + frn.Vn_reserva + "'," + "'" + frn.Vn_secuencia + "'," + "'" + frn.Vn_apellido + "'," + "'"
                  + frn.Vn_nombre + "')";
            bool ok = DB.EjecutaSQL(sql, ref filas);

            DB.Dispose();
            return(filas > 0);
        }
Example #5
0
        private string ObtenerIdReservacion(MapeoHoteles mh)
        {
            string      Existe = "";
            int         filas = 0, Reservacion = 0;
            UConnection DB  = new UConnection(mh.Hotel_ip, mh.Hotel_cn, mh.Hotel_un, mh.Hotel_pw);
            string      sql = "select pr_reserva from frparam";

            try
            {
                if (DB.EjecutaSQL(sql))
                {
                    while (DB.ora_DataReader.Read())
                    {
                        Reservacion = Convert.ToInt32(DB.ora_DataReader["PR_RESERVA"]);
                        Reservacion = Reservacion + 1;
                        string sql2 = string.Format("update frparam set pr_reserva = '{0}'", Reservacion);
                        bool   ok   = DB.EjecutaSQL(sql2, ref filas);
                    }
                }

                string sql3 = "select RV_RESERVA from freserva where RV_RESERVA = '" + Convert.ToString(Reservacion) + "'";
                if (DB.EjecutaSQL(sql3))
                {
                    while (DB.ora_DataReader.Read())
                    {
                        Existe = Convert.ToString(DB.ora_DataReader["RV_RESERVA"]);
                    }
                }

                if (!string.IsNullOrEmpty(Existe))
                {
                    Reservacion = 0;
                }
            }
            catch (Exception ex)
            {
                //rv.Rva_error = ex.Message;
            }
            finally
            {
                DB.Dispose();
            }
            return(Convert.ToString(Reservacion));
        }
Example #6
0
        private bool InsertaReserva(Reservacion rv, MapeoHoteles mph)
        {
            UConnection DB    = new UConnection(mph.Hotel_ip, mph.Hotel_cn, mph.Hotel_un, mph.Hotel_pw);
            string      sql   = "";
            int         filas = 0;
            DateTime    Hoy   = DateTime.Today;

            fecha_actual = Hoy.ToString("dd-MMM-yyyy", CultureInfo.CreateSpecificCulture("en-US"));
            hora_actual  = DateTime.Now.ToString("hh:mm");
            string fecha_llegada = rv.Rva_llegada.ToString("dd-MMM-yyyy", CultureInfo.CreateSpecificCulture("en-US"));
            string fecha_salida  = rv.Rva_salida.ToString("dd-MMM-yyyy", CultureInfo.CreateSpecificCulture("en-US"));

            sql = string.Format("insert into freserva (rv_reserva, rv_mayorista, rv_agencia, rv_grupo, rv_pais, rv_tipo_huesped, rv_origen, rv_procede, rv_notas, rv_llegada, rv_salida, rv_noches, rv_llegada_h, " +
                                "rv_salida_h, rv_tipo_hab, rv_tarifa, rv_adulto, rv_menor, rv_bebe, rv_fase, rv_habi, rv_voucher, rv_importe, rv_deposito, rv_cap_f, rv_cap_h, rv_cap_u, rv_status, rv_planes, rv_tipo_hab_renta, " +
                                "rv_hotel_renta, rv_email, rv_moneda, rv_prepago_f, rv_prepago_i, rv_promocion, rv_tc, rv_junior, rv_edificio, rv_tipo_venta) values ('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}', " +
                                "'{10}',{11},'{12}','{13}','{14}','{15}',{16},{17},{18},'{19}','{20}','{21}',{22},{23},'{24}','{25}','{26}','{27}','{28}','{29}','{30}','{31}','{32}','{33}',{34},'{35}',{36},{37},'{38}','{39}')",
                                rv.Rva_oasis_rva, rv.Rva_may, rv.Rva_agen, rv.Rva_grupo, rv.Rva_pais, rv.Rva_tipo_huesped, "WB", rv.Rva_may, rv.Rva_notas, fecha_llegada, fecha_salida, rv.Rva_noches, "15:00", "12:00",
                                rv.Rva_hab_renta, rv.Rva_tarifa, rv.Rva_adulto, rv.Rva_menor, rv.Rva_bebe, mph.Hotel_fase, null, rv.Rva_uniqueID, Convert.ToDouble(rv.Rva_importe).ToString(CultureInfo.InvariantCulture), 3,
                                fecha_actual, hora_actual, "OBEES", "R", rv.Rva_mealplan, rv.Rva_tarifa, mph.Hotel_os, rv.Rva_email, rv.Rva_moneda, null, 0, "XX", rv.Rva_tc, rv.Rva_junior, null, "LEISURE");
            bool ok = DB.EjecutaSQL(sql, ref filas);

            DB.Dispose();
            return(filas > 0);
        }
Example #7
0
        private OTA_HotelResNotifRS procesa(OTA_HotelResNotifRQ reservation)
        {
            Reservacion rv = new Reservacion();
            List <HotelReservationIDrs> reservations = new List <HotelReservationIDrs>();

            // rutina momentanea para guardar el xml enviado
            var StringWriter = new System.IO.StringWriter();
            var serializer   = new XmlSerializer(reservation.GetType());

            serializer.Serialize(StringWriter, reservation);

            try
            {
                rv.Rva_echotoken = reservation.EchoToken;

                foreach (HotelReservation g in reservation.HotelReservations.HotelReservation)
                {
                    switch (g.ResStatus)
                    {
                    case "Booked":
                    {
                        rv.Rva_action          = g.ResStatus;
                        rv.Rva_uniqueID        = g.UniqueID.ID;
                        rv.Rva_ResID_Type      = g.UniqueID.Type;
                        rv.Rva_ResID_Source    = g.UniqueID.ID_Context;
                        rv.Rva_create_datetime = Convert.ToDateTime(g.CreateDateTime);

                        foreach (Service sv in g.Services.Service)
                        {
                            rv.Rva_servicio        = sv.ServiceDetails.ServiceDescription.Text;
                            rv.Rva_serv_price_type = sv.ServicePricingType;
                        }

                        foreach (Source s in g.POS.Source)
                        {
                            rv.Rva_agencia_obees     = s.PseudoCityCode;
                            rv.Rva_companycode_obees = s.BookingChannel.CompanyName.Code;
                            rv.Rva_codecontext_obees = s.BookingChannel.CompanyName.CodeContext;
                            rv.Rva_chanelname_obees  = s.BookingChannel.CompanyName.Value;
                        }

                        if (!Util.isNull(g.RoomStays.RoomStay))
                        {
                            foreach (RoomStay rs in g.RoomStays.RoomStay)
                            {
                                rv.Rva_llegada = Convert.ToDateTime(rs.TimeSpan.Start);
                                rv.Rva_salida  = Convert.ToDateTime(rs.TimeSpan.End);

                                foreach (RoomRate rr in rs.RoomRates.RoomRate)
                                {
                                    rv.Rva_hab_renta = rr.RoomTypeCode;
                                    rv.Rva_plan      = rr.RatePlanCode;
                                    rv.Rva_grupo     = rr.GroupCode;
                                    rv.Rva_tarifa    = rr.RoomTypeCode;
                                    rv.Rva_moneda    = rr.Total.CurrencyCode;
                                    rv.Rva_importe   = rr.Total.AmountAfterTax;
                                }

                                foreach (GuestCount gc in rs.GuestCounts.GuestCount)
                                {
                                    // valido los adultos - juniors - menores - bebes
                                    if (gc.AgeQualifyingCode == 10)
                                    {
                                        rv.Rva_adulto = gc.Count;
                                    }
                                    else
                                    {
                                        // junior
                                        if (gc.Age >= 12 && gc.Age <= 17)
                                        {
                                            rv.Rva_junior = gc.Count;
                                        }
                                        else if (gc.Age >= 3 && gc.Age <= 11)         // menor
                                        {
                                            rv.Rva_menor = gc.Count;
                                        }
                                        else
                                        {
                                            rv.Rva_bebe = gc.Count;
                                        }
                                    }
                                }

                                foreach (RatePlan rp in rs.RatePlans.RatePlan)
                                {
                                    rv.Rva_planindicador = Convert.ToBoolean(rp.MealsIncluded.MealPlanIndicator);
                                    rv.Rva_plancode      = rp.MealsIncluded.MealPlanCodes;
                                    rv.Rva_tipo_garantia = rp.Guarantee.GuaranteeType;
                                }
                            }
                        }

                        foreach (ResGuest rg in g.ResGuests.ResGuest)
                        {
                            // si la bandera es true, quiere decir que es el huesped principal
                            if (rg.PrimaryIndicator == "true")
                            {
                                rv.Rva_sec = "1";
                            }
                            else
                            {
                                rv.Rva_sec = rg.ResGuestRPH;
                            }

                            foreach (ProfileInfo pi in rg.Profiles.ProfileInfo)
                            {
                                rv.Rva_nombre = pi.Profile.Customer.PersonName.GivenName;
                                rv.Rva_apell  = pi.Profile.Customer.PersonName.Surname;
                                rv.Rva_email  = pi.Profile.Customer.Email;
                                rv.Rva_pais   = pi.Profile.Customer.Address.CountryName.Code;

                                UConnection DB    = new UConnection(Properties.Settings.Default.ipBD, Properties.Settings.Default.serverBD, Properties.Settings.Default.usuarioBD, Properties.Settings.Default.passBD);
                                string      sql   = "";
                                int         filas = 0;

                                sql = "insert into OBNOMBRES (ON_RESERVA,ON_SECUENCIA,ON_APELLIDO,ON_NOMBRE) VALUES (" + "'"
                                      + g.UniqueID.ID + "'," + "'" + rv.Rva_sec + "'," + "'" + rv.Rva_apell + "'," + "'"
                                      + rv.Rva_nombre + "')";
                                bool ok = DB.EjecutaSQL(sql, ref filas);
                                DB.Dispose();

                                if (filas == 0)
                                {
                                    rv.Rva_error = "OCURRIO UN ERROR EN EL GUARDADO DE NOMBRES: " + sql;
                                    return(null);
                                }
                            }
                        }

                        rv.Rva_hotel_renta = g.ResGlobalInfo.BasicPropertyInfo.HotelCode;
                        rv.Rva_chaincode   = g.ResGlobalInfo.BasicPropertyInfo.ChainCode;
                        rv.Rva_importe     = g.ResGlobalInfo.Total.AmountAfterTax;

                        foreach (Comment cm in g.ResGlobalInfo.Comments.Comment)
                        {
                            rv.Rva_notas = cm.Text.Value;
                        }

                        // inserto el request completo como referencia
                        bool     ok2 = GuardaReservaOMNI(rv);
                        DateTime Hoy = new DateTime();
                        fecha_actual = Hoy.ToString();
                        // guardado temporal del xml en el servidor
                        File.WriteAllText(@"C:\AppServ\www\interface_ota\docs\" + rv.Rva_uniqueID + ".xml", StringWriter.ToString());

                        ///////////////////////////////////////////////////////// primera fase ////////////////////////////////////////////////////////////////////////////////
                        int stop = 0;         // un bloqueo momentaneo para no afectar reservas reales
                        if (ok2)
                        {
                            // obtengo los parametros de base de datos del hotel a donde va la reserva
                            MapeoHoteles mh = new MapeoHoteles();
                            mh = ObtenerParamsBDHotel(g.ResGlobalInfo.BasicPropertyInfo.HotelCode);
                            // verifico si existen parametros para este hotel
                            if (mh.Hotel_cn != null)
                            {
                                // obtengo el numero de reservacion
                                rv.Rva_oasis_rva = ObtenerIdReservacion(mh);
                                if (!string.IsNullOrEmpty(rv.Rva_oasis_rva))
                                {
                                    Freserno frn = new Freserno();
                                    frn.Vn_reserva = rv.Rva_oasis_rva;
                                    // una vez que ya tengo el numero de reservacion, guardo primero los nombres en freserno
                                    foreach (ResGuest rg2 in g.ResGuests.ResGuest)
                                    {
                                        // si la bandera es true, quiere decir que es el huesped principal
                                        if (rg2.PrimaryIndicator == "true")
                                        {
                                            frn.Vn_secuencia = 1;
                                        }
                                        else
                                        {
                                            frn.Vn_secuencia = Convert.ToInt16(rg2.ResGuestRPH);
                                        }

                                        foreach (ProfileInfo pi2 in rg2.Profiles.ProfileInfo)
                                        {
                                            frn.Vn_nombre   = pi2.Profile.Customer.PersonName.GivenName;
                                            frn.Vn_apellido = pi2.Profile.Customer.PersonName.Surname;
                                            bool ok6 = InsertarNombre(frn, mh);
                                        }
                                    }
                                    // valido el plan
                                    switch (rv.Rva_plancode)
                                    {
                                    case 1:
                                        rv.Rva_mealplan = "AI";
                                        break;

                                    case 14:
                                        rv.Rva_mealplan = "EP";
                                        break;

                                    case 19:
                                        rv.Rva_mealplan = "DI";
                                        break;

                                    default:
                                        rv.Rva_mealplan = "NA";
                                        break;
                                    }
                                    // CONSULTO EL CODIGO DE LA AGENCIA por su canal y plan de comida
                                    rv.Rva_agen = ObtenerCodigoAgencia(rv.Rva_chanelname_obees, rv.Rva_mealplan);
                                    // obtengo los datos de la agencia
                                    Agencia ag = new Agencia();
                                    ag          = ObtenerDatosAgencia(rv.Rva_agen, mh);
                                    rv.Rva_pais = ag.Pais;
                                    rv.Rva_may  = ag.Mayorista;
                                    // verifico el timpo de huesped
                                    switch (rv.Rva_may)
                                    {
                                    case "MEX":
                                    case "BRA":
                                    case "SDA":
                                    {
                                        if (rv.Rva_agen.Substring(0, 2) == "FI" || rv.Rva_agen.Substring(0, 2) == "BK")
                                        {
                                            rv.Rva_tipo_huesped = "WB";
                                        }
                                        else
                                        {
                                            rv.Rva_tipo_huesped = "EM";
                                        }
                                        break;
                                    }

                                    case "COR":
                                    case "USO":
                                    {
                                        rv.Rva_tipo_huesped = "CO";
                                        break;
                                    }

                                    case "DIR":
                                    case "AME":
                                    case "EUR":
                                    case "SUD":
                                    {
                                        rv.Rva_tipo_huesped = "WB";
                                        break;
                                    }

                                    case "INT":
                                    {
                                        rv.Rva_tipo_huesped = "CE";
                                        break;
                                    }
                                    }         // tipo de huesped
                                              // diferencia de fechas para determinar las noches
                                    System.TimeSpan ts = Convert.ToDateTime(rv.Rva_salida) - Convert.ToDateTime(rv.Rva_llegada);
                                    rv.Rva_noches = ts.Days;
                                    // verifico la fecha del prepago, por el momento queda null
                                    //if (ag.Dias_prepago > 0)
                                    //{
                                    //    // obtengo la fecha del prepago

                                    //}
                                    // obtengo el tipo de cambio por la moneda enviada
                                    rv.Rva_tc = ObtenerTipoCambio(rv.Rva_moneda, mh);
                                    // inserto la cabecera en freserva
                                    bool ok8 = InsertaReserva(rv, mh);
                                    HotelReservationIDrs hris = new HotelReservationIDrs();
                                    hris.ResID_Type   = "10";
                                    hris.ResID_Value  = rv.Rva_oasis_rva;
                                    hris.ResID_Source = "PMS";
                                    reservations.Add(hris);

                                    //rv.Rva_oasis_rva = Reserva;
                                    rv.Rva_oasis_errcode = ErrorCode;
                                    rv.Rva_oasis_errdesc = ErrDesc;
                                }
                                else
                                {
                                    // guardo el proceso que falló al tratar de obtener el id de la reserva
                                    bool ok5 = GuardarSuceso(mh.Hotel_siglas, rv.Rva_uniqueID, "NO SE PUDO OBTENER EL ID DE LA RESERVA PARA ESTE HOTEL");
                                    rv.Rva_error = "OCURRIO UN ERROR EN EL GUARDADO DE LA RESERVA.";
                                    return(obtenerMensajeError(rv, reservations));
                                }
                            }
                            else
                            {
                                // guardo el proceso que falló al tratar de OBTENER los parametros de conexion para el hotel
                                bool ok3 = GuardarSuceso(rv.Rva_hotel_renta, rv.Rva_uniqueID, "NO SE OBTUVIERON PARAMETROS DE BASE DE DATOS PARA EL HOTEL");
                                rv.Rva_error = "OCURRIO UN ERROR EN EL GUARDADO DE LA RESERVA.";
                                return(obtenerMensajeError(rv, reservations));
                            }         // parametros de conexion del hotel
                        }
                        else
                        {
                            // guardo el proceso que falló al tratar de guardar en la principal, tal cual la envió Omnibees
                            // SE PONE MENSAJE PROVISIONAL PARA ANALIZAR LOS XML ENVIADOS POR OMNI
                            bool ok4 = GuardarSuceso(rv.Rva_hotel_renta, rv.Rva_uniqueID, "SE OBTUVO EL XML SATISFACTORIAMENTE");
                            rv.Rva_error = "SE RECIBIO LA RESERVACION SATISFACTORIAMENTE.";
                            return(obtenerMensajeError(rv, reservations));
                        }         // inserta tabla principal
                        break;
                    }

                    case "Modified":
                    {
                        break;
                    }

                    case "Cancelled":
                    {
                        break;
                    }
                    } // accion de la reserva resstatus
                }     // hotelreservation

                return(obtenerMensajeSatisfaccion(rv, reservations));
            } catch (Exception ex)
            {
                rv.Rva_error = ex.Message;
            }

            return(null);
        }