/// <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); }
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; } }
/// <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; } )); }
/// <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; } }
/// <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); } }
/// <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); }
/// <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); } } }
/// <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); }
/// <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; } }