Exemplo n.º 1
0
        /// <summary>
        /// Guarda en el sistema de Opera los cargos a habitacion
        /// </summary>
        /// <param name="ReceiptID"></param>
        /// <history>
        /// [vipacheco] 01/Junio/2016 Created
        /// </history>
        public static string SaveRoomChargesOpera(int ReceiptID, string ChargeTo)
        {
            CargoHabitacionTRNRequest     Request      = new CargoHabitacionTRNRequest();
            RmmsttrnRowResponse           Response     = null;
            List <CargoHabitacionRequest> aRoomCharges = new List <CargoHabitacionRequest>();
            List <GiftType> aGifts = new List <GiftType>();

            // obtenemos los regalos con cargo a habitacion
            aRoomCharges = GetGiftsRoomCharges(ReceiptID, ref aGifts, ref Request, ChargeTo);

            // Si algun regalo tiene cargo a habitacion
            if (aRoomCharges.Count > 0)
            {
                // invocamos al servicio web para insertar cada regalo que se pretende asignar
                Response = InsertarCargoHabitacionTRN(Request);

                // actualizamos el consecutivo de cargos a habitacion
                BRRoomCharges.UpdateRoomChargeConsecutive(Request.Hotel, $"{Request.Folio}");

                // actualizamos los regalos para identificarlos como que se guardaron en Opera
                foreach (GiftType _Gift in aGifts)
                {
                    BRGiftsReceiptDetail.UpdateGiftsReceiptDetailRoomChargeOpera(_Gift.Receipt, _Gift.ID, _Gift.TransactionTypeOpera);
                }
                return("Gifts were successfully saved in Opera as Room Charges");
            }
            return(string.Empty);
        }
Exemplo n.º 2
0
        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            //cboGift.ItemsSource  = frmHost._lstGiftsWithPackage;

            switch (_modeOpen)
            {
            case EnumMode.Edit:
                if (_giftCurrent.geInPVPPromo)
                {
                    GiftsReceiptDetail _request = BRGiftsReceiptDetail.GetGiftReceiptDetail(_giftCurrent.gegr, _giftCurrent.gegi);

                    if (_request != null)
                    {
                        txtQty.IsReadOnly = true;
                        cboGift.IsEnabled = false;
                    }
                }

                DataContext = _giftCurrent;
                break;
            }

            // Si se abrio del formulario Cancel External
            if (_CancelExternal)
            {
                // Se ocultan controles innecesarios
                chkAsPromotion.Visibility  = Visibility.Hidden;
                chkCancelSistur.Visibility = Visibility.Hidden;
                chkInOpera.Visibility      = Visibility.Hidden;
                chkInSistur.Visibility     = Visibility.Hidden;
            }
        }
Exemplo n.º 3
0
        /// <summary>
        /// Guarda en el sistema de promociones las promociones de regalo
        /// </summary>
        /// <param name="ReceiptID"></param>
        /// <param name="ChangeBy"></param>
        /// <param name="UserID"></param>
        /// <history>
        /// [vipacheco] 27/Mayo/2016 Created
        /// </history>
        public async static Task <string> SavePromotionsSistur(int ReceiptID, string UserID, string ChangeBy = "")
        {
            return(await Task.Run(async() =>
            {
                List <GiftType> aGifts = new List <GiftType>();
                List <GuardaPromocionForzadaRequest> aPromotions = new List <GuardaPromocionForzadaRequest>();
                GuardaPromocionForzadaRequest Request = null;
                GuardaPromocionForzadaResponse Response = null;
                string GiftsSaved = string.Empty;
                string GiftsNoSaved = string.Empty;

                // obtenemos los regalos de promociones de Sistur
                aPromotions = await GetGiftsPromotionsSistur(ReceiptID, ChangeBy, UserID, aGifts);

                // si algun regalo tiene promociones de Sistur
                if (aPromotions != null)
                {
                    if (aPromotions.Count > 0)
                    {
                        for (int i = 0; i <= aPromotions.Count - 1; i++)
                        {
                            Request = aPromotions[i];

                            // Invocamos al servicio web para insertar cada regalo que se pretende asignar
                            Response = await GuardarPromocionForzada(Request);

                            // si se guardo exitosamente en Sistur
                            if (!Response.hasErrors)
                            {
                                // actualizamos los regalos para identificarlos como que se guardaron en Sistur
                                BRGiftsReceiptDetail.UpdateGiftPromotionSistur(aGifts[i].Receipt, aGifts[i].ID, aGifts[i].Promotion);
                                GiftsSaved += aGifts[i].Descripcion + "\r\n";
                            }
                            else
                            {
                                GiftsNoSaved += aGifts[i].Descripcion + "\r\n";
                            }
                        }
                        // si se pudo guardar todas las promociones
                        if (string.IsNullOrEmpty(GiftsNoSaved))
                        {
                            return "Gifts were successfully saved in Sistur as Promotion";
                        }
                        // si no se pudo guardar ninguna promocion
                        else if (string.IsNullOrEmpty(GiftsSaved))
                        {
                            return "None gift was saved in Sistur as Promotion";
                        }
                        // si no se pudo guardar alguna promocion
                        else
                        {
                            return "The following gifts were saved in Sistur as Promotion:\r\n" + GiftsSaved + "\r\n\r\n" + "But the following gifts were not saved: \r\n" + GiftsNoSaved;
                        }
                    }
                }
                return string.Empty;
            }
                                  ));
        }
Exemplo n.º 4
0
        /// <summary>
        /// Cancela una promoción de Sistur
        /// </summary>
        /// <param name="Gift"></param>
        /// <param name="Promotion"></param>
        /// <param name="GiftsCancelled"></param>
        /// <returns></returns>
        /// <history>
        /// [vipacheco] 26/Mayo/2016 Created
        /// [vipacheco] 25/Julio/2016 Modified --> se agrego asyncronia
        /// </history>
        public async static Task <bool> CancelPromotionSistur(string pGift, string Promotion, string Program, string LeadSource, string PropertyOpera, int ReceiptID, TextBox txtReservation, List <string> pGiftsCancelled)
        {
            try
            {
                ActualizaEstatusPromoForzadaResponse Response = new ActualizaEstatusPromoForzadaResponse();
                string Hotel, Reservation;

                // si es inhouse
                if (Program == "IH")
                {
                    // si es una invitacion inhouse
                    if (!string.IsNullOrEmpty(txtReservation.Text))
                    {
                        Hotel       = LeadSource;
                        Reservation = txtReservation.Text;
                    }
                    // si es una invitacion externa
                    else
                    {
                        Hotel       = PropertyOpera;
                        Reservation = $"{ReceiptID}";
                    }
                }
                // Si es outhouse
                else
                {
                    Hotel       = PropertyOpera;
                    Reservation = $"{ReceiptID}";
                }

                // Si se puede cancelar la promocion de sistur
                if (await AllowCancelPromotionSistur(Hotel, Reservation, Promotion, pGift))
                {
                    // Se da de baja la promocion en el sistema de promociones
                    Response = await ActualizaEstatusPromoForzadaFolio(Hotel, Reservation, Promotion);

                    //Si ocurrio un error
                    if (Response.hasErrors)
                    {
                        throw new Exception(Response.errorInfo);
                    }

                    // cancelamos el regalo en Origos
                    await BRGiftsReceiptDetail.UpdateGiftsPromotionSisturCancel(ReceiptID, pGift);

                    // Agregamos el regalo a la lista de regalos cancelados
                    pGiftsCancelled.Add(pGift);

                    return(true);
                }
                return(false);
            }
            catch (Exception)
            {
                throw;
            }
        }
Exemplo n.º 5
0
        /// <summary>
        /// si ya se entrego por lo menos un paquete en regalos (Para evitar convertir en paquete un regalo ya otorgado)
        /// </summary>
        /// <history>
        /// [emoguel] created 11/07/2016
        /// </history>
        private async void GiftInPack()
        {
            if (enumMode == EnumMode.Edit)
            {
                var lstGiftsDetail = await BRGiftsReceiptDetail.GetGiftsReceiptDetail(new GiftsReceiptDetail { gegi = gift.giID });

                chkgiPack.IsEnabled      = (lstGiftsDetail.Count < 1);
                dgrGiftInPack.IsReadOnly = (lstGiftsDetail.Count > 0);
            }
        }
Exemplo n.º 6
0
        /// <summary>
        /// Obtiene los regalos de cargos a habitacion
        /// </summary>
        /// <param name="ReceiptID"></param>
        /// <param name="aGifts"></param>
        /// <param name="Request"></param>
        /// <param name="ChargeTo"></param>
        /// <returns></returns>
        /// <history>
        /// [vipacheco] 01/Junio/2016 Created
        /// </history>
        public static List <CargoHabitacionRequest> GetGiftsRoomCharges(int ReceiptID, ref List <GiftType> aGifts, ref CargoHabitacionTRNRequest Request, string ChargeTo)
        {
            List <CargoHabitacionRequest> aRoomCharges = new List <CargoHabitacionRequest>();

            // obtenemos los cargos a habitacion de Opera que no se han dado
            List <GiftsReceiptDetailRoomChargesOpera> lstResult = BRGiftsReceiptDetail.GetGiftsReceiptDetailRoomChargesOpera(ReceiptID);

            if (lstResult.Count > 0)
            {
                GiftsReceiptDetailRoomChargesOpera First = lstResult[0];

                // Configuramos el Request
                Request.Hotel    = First.gulsOriginal;
                Request.Folio    = Convert.ToInt32(First.guHReservID);
                Request.PostDate = BRHelpers.GetServerDate();
                Request.Batch    = First.rhConsecutive != null ? $"{First.rhConsecutive}" : "";

                foreach (GiftsReceiptDetailRoomChargesOpera Current in lstResult)
                {
                    // agregamos el cargo a habitacion
                    AddRoomCharge(ref aRoomCharges, Current.gulsOriginal, Convert.ToInt32(Current.guHReservID), ChargeTo, ReceiptID, Current.giN, Current.gePriceA, Current.giOperaTransactionType);

                    // preparamos los regalos con cargos a habitacion que se guardaran en Origos
                    GiftType _Gift = new GiftType();
                    _Gift.ID                   = Current.gegi;
                    _Gift.Descripcion          = Current.giN;
                    _Gift.Quantity             = 0;
                    _Gift.Receipt              = ReceiptID;
                    _Gift.Promotion            = "";
                    _Gift.TransactionTypeOpera = Current.giOperaTransactionType;

                    // Agregamos a la lista
                    aGifts.Add(_Gift);
                }

                Request.CargosHabitacion = aRoomCharges.ToArray();
            }

            return(aRoomCharges);
        }
Exemplo n.º 7
0
        /// <summary>
        /// guardamos los regalos cancelados
        /// </summary>
        /// <param name="pReceiptID"></param>
        /// <param name="pReceiptExchangeID"></param>
        /// <param name="pGiftsCancelled"></param>
        /// <param name="pUseCxCCost"></param>
        /// <returns></returns>
        /// <history>
        /// [vipacheco] 18/Julio/2016 Created
        /// </history>
        public async static Task Save(int pReceiptID, int pReceiptExchangeID, List <string> pGiftsCancelled, bool pUseCxCCost, GiftsReceipt pGiftsReceipt, ObservableCollection <GiftsReceiptDetail> pGiftsReceiptsDetail, ObservableCollection <GiftsReceiptDetailCancel> pGiftsCancel, bool pIsExchange, string pCancelFiel)
        {
            // obtenemos los regalos del recibo original para marcarlos como cancelados
            List <GiftsReceiptDetail> lstResult = await BRGiftsReceiptDetail.GetGiftsReceiptDetail(pReceiptID);

            // Recorremos los regalos cancelados
            foreach (string iGift in pGiftsCancelled)
            {
                // Localizamos los regalos cancelados
                GiftsReceiptDetail giftupdate = lstResult.Where(x => x.gegi == iGift).Single();
                Gift gift = frmHost._lstGifts.Where(x => x.giID == giftupdate.gegi).Single();

                // marcamos el regalo como cancelado en el recibo original
                giftupdate.GetType().GetProperty(pCancelFiel).SetValue(giftupdate, true, null);

                // si se debe generar un recibo exchange
                if (pIsExchange)
                {
                    // agregamos el regalo en el recibo exchange
                    await AddGiftExchange(pReceiptExchangeID, giftupdate, pGiftsCancelled);
                }
            }
        }
Exemplo n.º 8
0
        /// <summary>
        /// Obtiene los regalos de promociones de Sistur
        /// </summary>
        /// <param name="ReceiptID"></param>
        /// <param name="ChangeBy"></param>
        /// <param name="UserID"></param>
        /// <param name="aGifts"></param>
        /// <param name="enumPromotionsSystem"></param>
        /// <returns></returns>
        /// <history>
        /// [vipacheco] 27/Mayo/2016 Created
        /// [vipacheco] 25/Julio/2016 Modified --> Se agreggo asyncronia
        /// </history>
        public async static Task <List <GuardaPromocionForzadaRequest> > GetGiftsPromotionsSistur(int ReceiptID, string ChangeBy, string UserID, List <GiftType> aGifts)
        {
            List <GuardaPromocionForzadaRequest> aPromotions = new List <GuardaPromocionForzadaRequest>();
            string Hotel = string.Empty;
            string Folio = string.Empty;
            //int Company = 0;
            string Application    = string.Empty;
            string MembershipType = string.Empty;

            // obtenemos las promociones de Sistur que no se han dado
            List <GiftsReceiptDetailPromotionsSistur> Result = await BRGiftsReceiptDetail.GetGiftsReceiptDetailPromotionsPVP(ReceiptID);

            // por default se van a guardar al sistema de Promociones de Sistur
            EnumPromotionsSystem enumPromotionsSystem = EnumPromotionsSystem.Sistur;

            if (Result.Count > 0)
            {
                GiftsReceiptDetailPromotionsSistur Detail = Result[0];

                // Si es inhouse
                if (Detail.lspg.Equals("IH"))
                {
                    // Si es una invitacion inhouse
                    if (Detail.guHReservID != null)
                    {
                        Hotel = Detail.gulsOriginal;
                        Folio = Detail.guHReservID;
                    }
                    // si es una invitacion externa
                    else
                    {
                        Hotel = Detail.lsPropertyOpera;
                        Folio = $"{ReceiptID}";
                    }

                    // Si el Lead Source usa sistur
                    if (Detail.lsUseSistur)
                    {
                        enumPromotionsSystem = EnumPromotionsSystem.Sistur;
                    }
                }
                // Si es outhouse
                else
                {
                    Hotel = Detail.srPropertyOpera;
                    Folio = $"{ReceiptID}";

                    // Si la sala de ventas usa sistur
                    if (Detail.srUseSistur)
                    {
                        enumPromotionsSystem = EnumPromotionsSystem.Sistur;
                    }
                }
                // si es una invitacion externa u outhouse
                if ((Detail.lspg.Equals("IH") && Detail.guHReservID == null) || Detail.lspg.Equals("OUT"))
                {
                    // guardamos la reservacion ficticia
                    WirePRHelper.Origos_reservas_ficticias_Guardar(Hotel, Convert.ToInt32(Folio), Detail.guFirstName1, Detail.guLastName1);
                }
            }

            for (int i = 0; i < Result.Count; i++)
            {
                GiftsReceiptDetailPromotionsSistur _Detail = Result[i];

                // preparamos los regalos con promociones que se guardaran en Sistur
                AddPromotion(ref aPromotions, Hotel, Folio, _Detail.giPVPPromotion, _Detail.gegi, ReceiptID, (!string.IsNullOrEmpty(ChangeBy) ? ChangeBy : UserID), enumPromotionsSystem);

                // preparamos los regalos con promociones que se guardaran en Origos
                GiftType typGift = new GiftType();
                typGift.ID                   = _Detail.gegi;
                typGift.Descripcion          = _Detail.giN;
                typGift.Quantity             = 0;
                typGift.Receipt              = ReceiptID;
                typGift.Promotion            = _Detail.giPVPPromotion;
                typGift.TransactionTypeOpera = "";

                // Agregamos a la lista
                aGifts.Add(typGift);
            }

            return(aPromotions);
        }
Exemplo n.º 9
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private async void Window_Loaded(object sender, RoutedEventArgs e)
        {
            _dsSalesRoom  = ((CollectionViewSource)(this.FindResource("dsSalesRoom")));
            _dsPrograms   = ((CollectionViewSource)(this.FindResource("dsPrograms")));
            _dsLeadSource = ((CollectionViewSource)(this.FindResource("dsLeadSource")));
            _dsGifts      = ((CollectionViewSource)(this.FindResource("dsGifts")));

            _dsGiftsReceiptDetailCancel = ((CollectionViewSource)(this.FindResource("dsGiftsReceiptDetailCancel")));
            _dsGiftsReceiptDetail       = ((CollectionViewSource)(this.FindResource("dsGiftsReceiptDetail")));

            // Cargamos los Sales Room
            _dsSalesRoom.Source = frmHost._lstSalesRoom;
            //Cargamos los Programs
            _dsPrograms.Source = frmHost._lstPrograms;
            // Cargamos los LeadSources
            _dsLeadSource.Source = frmHost._lstLeadSources;
            // Cargamos los Gifts
            _dsGifts.Source = frmHost._lstGifts;

            // Obtenemos los regalos a cancelar.
            List <GiftsReceiptDetailCancel> lstResultCancel = BRGiftsReceiptDetail.GetGiftsReceiptDetailCancel(_ReceiptID, _EnumExternalProduct);

            _obsGiftsCancel = new ObservableCollection <GiftsReceiptDetailCancel>(lstResultCancel);
            _dsGiftsReceiptDetailCancel.Source = _obsGiftsCancel;

            //Obtenemos los datos del Huesped.
            _Guest = await BRGuests.GetGuestShort(_GuestID);

            txtReceipt.Text            = $"{_ReceiptID}";
            txtGuestID.Text            = $"{ _GuestID}";
            txtNameInvitation.Text     = _Guest.Name;
            cboSalesRoom.SelectedValue = _Guest.gusr;

            // Si es Inhouse
            if (_Guest.lspg.Equals("IH"))
            {
                // Si es una invitacion inhouse externa
                if (string.IsNullOrEmpty(_Guest.guHReservID))
                {
                    PropertyOpera = _Guest.lsPropertyOpera;
                }
            }
            // Si es OutHouse
            else
            {
                PropertyOpera = _Guest.srPropertyOpera;
            }

            cboProgram.SelectedValue    = _Guest.lspg;
            cboLeadSource.SelectedValue = _Guest.gulsOriginal;
            txtReservation.Text         = _Guest.guHReservID == "" ? null : _Guest.guHReservID;
            dtpArrival.Value            = _Guest.guCheckInD;
            dtpDeparture.Value          = _Guest.guCheckOutD;
            txtQtyEPurses.Text          = $"{_Guest.guQtyGiftsCard}";
            txtAccountInvitation.Text   = _Guest.guAccountGiftsCard == "" ? null : _Guest.guAccountGiftsCard;

            // Monto maximo de reagalos
            txtMaxAuthGifts.Text = string.Format("{0:C2}", _MaxAuthGifts);

            // Totales de regalos
            txtTotalGiftsInvitation.Text = string.Format("{0:C2}", BRGiftsReceipts.CalculateTotalsGiftsInvitation(_GuestID));

            // Si se genera un recibo Exchange
            if (_Exchange)
            {
                txtTotalGiftsCancel.Text = string.Format("{0:C2}", 0.00);
            }
            // si se desea cancelar el recibo
            else
            {
                txtTotalGiftsCancel.Text = string.Format("{0:C2}", _TotalGifts);
            }

            txtTotalGiftsExchange.Text = string.Format("{0:C2}", 0.00);
            CalculateTotalGifts();

            // Totales del cargo
            txtgrcxcAdj.Text = string.Format("{0:C2}", _CurAdjustment);

            // Activamos la bandera para saber si se ajustaran costos CxC
            _applicationAdj = _CurAdjustment > 0 ? true : false;

            ReceiptsGifts.CalculateCharge(_GuestID, _FrmGiftsReceipt.cmbgrct.SelectedItem as ChargeTo, txtTotalCost, _isExchangeReceipt, ref txtgrcxcGifts,
                                          ref txtTotalCxC, ref _FrmGiftsReceipt.txtgrCxCAdj, ref _FrmGiftsReceipt._validateMaxAuthGifts, _Guest.gulsOriginal,
                                          ref _FrmGiftsReceipt.txtgrMaxAuthGifts, ref _FrmGiftsReceipt.txbgrMaxAuthGifts);

            // Si se desea cancelar el recibo
            if (!_Exchange)
            {
                stkGiftsExchange.Visibility = Visibility.Collapsed;
                WindowMain.Height           = 424; // Ajustamos la ventana
            }

            // Impedimos modificar los datos si el sistema esta en modo de solo lectura
            if (ConfigHelper.GetString("ReadOnly").ToUpper().Equals("TRUE"))
            {
                btnSave.Visibility = Visibility.Hidden;
            }

            // si se debe generar un recibo exchange
            if (_Exchange)
            {
                List <GiftsReceiptDetail> lstResult = await BRInvitsGifts.GetGiftsInvitationWithoutReceipt(0);

                _obsGifts                    = new ObservableCollection <GiftsReceiptDetail>(lstResult);
                _obsGiftsComplet             = new ObservableCollection <GiftsReceiptDetail>(lstResult);
                _dsGiftsReceiptDetail.Source = _obsGifts;
            }
            // Si se desea cancelar el recibo
            else
            {
                CheckAllCell(ref dtgCancel, _CancelField);
                TextBox x = null;
                ReceiptsGifts.CalculateTotalGifts(dtgCancel, EnumGiftsType.ReceiptGifts, ref txtTotalCost, ref x, ref x);
                dtgCancel.IsReadOnly = true;
            }
        }