public List <CLayer.Offers> GetForAccommodation(long accommodationId, int activeStatus) { List <DataPlug.Parameter> param = new List <DataPlug.Parameter>(); param.Add(Connection.GetParameter("pActiveStatus", DataPlug.DataType._Int, activeStatus)); param.Add(Connection.GetParameter("pAccommodationId", DataPlug.DataType._BigInt, accommodationId)); DataTable dt = Connection.GetTable("offer_ForAccommodation", param); List <CLayer.Offers> result = new List <CLayer.Offers>(); CLayer.Offers temp; foreach (DataRow dr in dt.Rows) { temp = new CLayer.Offers(); temp.OfferId = Connection.ToLong(dr["OfferId"]); temp.OfferTitle = Connection.ToString(dr["OfferTitle"]); temp.OfferType = Connection.ToInteger(dr["OfferType"]); temp.RateType = Connection.ToInteger(dr["RateType"]); temp.StartDate = Connection.ToDate(dr["StartDate"]); temp.EndDate = Connection.ToDate(dr["EndDate"]); temp.FreeDays = Connection.ToInteger(dr["FreeDays"]); temp.NoOfDays = Connection.ToInteger(dr["NoOfDays"]); temp.Amount = Connection.ToDecimal(dr["Amount"]); result.Add(temp); } return(result); }
public ActionResult Get(long?OfferId) { Models.OfferModel Setdata = new Models.OfferModel() { OfferId = 0 }; if (OfferId.HasValue) { ViewBag.Saved = false; CLayer.Offers Getdata = BLayer.Offers.GetByOfferId(OfferId.Value, (int)CLayer.ObjectStatus.StatusType.Active); if (Getdata != null) { Setdata = new Models.OfferModel() { OfferTitle = Getdata.OfferTitle, OfferId = Getdata.OfferId, NoOfDays = Getdata.NoOfDays, StartDate = Getdata.StartDate, EndDate = Getdata.EndDate, AccommodationId = Getdata.AccommodationId, Amount = Getdata.Amount, OfferFor = Getdata.OfferFor, RateType = Getdata.RateType, SBCommission = Getdata.SBCommission, FreeDays = Getdata.FreeDays, PropertyId = Getdata.PropertyId, OfferType = Getdata.OfferType, StayCategoryId = Getdata.StayCategoryId } } ; } return(PartialView("~/Areas/Admin/Views/Offer/_Details.cshtml", Setdata)); }
public string StatusEdit(int OfferId, int Status) { try { string userid = User.Identity.GetUserId(); long id = 0; long.TryParse(userid, out id); if (ModelState.IsValid) { CLayer.Offers dataStatus = new CLayer.Offers() { OfferId = OfferId, Status = Status, UpdatedBy = id, UpdatedDate = DateTime.Now }; BLayer.Offers.EditStatusChange(dataStatus); ViewBag.Saved = true; } else { ViewBag.Saved = false; } return(OfferId.ToString()); } catch (Exception ex) { Common.LogHandler.HandleError(ex); return("0"); } }
//[Route("/Admin/Offer/")] public ActionResult Index(long?OfferId) { if (OfferId.HasValue) { Models.OfferModel Setdata1 = new Models.OfferModel() { OfferId = 0 }; ViewBag.Saved = false; CLayer.Offers Getdata1 = BLayer.Offers.GetByOfferId(OfferId.Value, (int)CLayer.ObjectStatus.StatusType.All); if (Getdata1 != null) { Setdata1 = new Models.OfferModel() { SOfferTitle = Getdata1.OfferTitle, SNoOfDays = Getdata1.NoOfDays, SStartDate = Getdata1.StartDate, SEndDate = Getdata1.EndDate, SAccommodationId = Getdata1.AccommodationId, SAmount = Getdata1.Amount, SOfferFor = Getdata1.OfferFor, SRateType = Getdata1.RateType, SSBCommission = Getdata1.SBCommission, SFreeDays = Getdata1.FreeDays, SPropertyId = Getdata1.PropertyId, SOfferType = Getdata1.OfferType, SStayCategoryId = Getdata1.StayCategoryId, SearchValue = Getdata1.OfferType, //second OfferTitle = Getdata1.OfferTitle, NoOfDays = Getdata1.NoOfDays, StartDate = Getdata1.StartDate, EndDate = Getdata1.EndDate, AccommodationId = Getdata1.AccommodationId, Amount = Getdata1.Amount, OfferFor = Getdata1.OfferFor, RateType = Getdata1.RateType, SBCommission = Getdata1.SBCommission, FreeDays = Getdata1.FreeDays, PropertyId = Getdata1.PropertyId, OfferType = Getdata1.OfferType, StayCategoryId = Getdata1.StayCategoryId }; Setdata1.OfferId = OfferId.Value; Setdata1.SOfferId = OfferId.Value; } return(View("~/Areas/Admin/Views/Offer/Index.cshtml", Setdata1)); } else { Models.OfferModel search = new Models.OfferModel(); ViewBag.Filter = search; return(View("~/Areas/Admin/Views/Offer/Index.cshtml", search)); } }
public long SaveAccommodationProperty(CLayer.Offers data) { List <DataPlug.Parameter> param = new List <DataPlug.Parameter>(); param.Add(Connection.GetParameter("pOfferId", DataPlug.DataType._BigInt, data.OfferId)); param.Add(Connection.GetParameter("pOfferType", DataPlug.DataType._Int, data.OfferType)); param.Add(Connection.GetParameter("pIds", DataPlug.DataType._Varchar, data.Ids)); object result = Connection.ExecuteQueryScalar("offer_AccommodationPropertySave", param); return(Connection.ToLong(result)); }
//offerList Update Status public int EditStatusChange(CLayer.Offers data) { List <DataPlug.Parameter> param = new List <DataPlug.Parameter>(); param.Add(Connection.GetParameter("pOfferId", DataPlug.DataType._Int, data.OfferId)); param.Add(Connection.GetParameter("pStatus", DataPlug.DataType._Int, data.Status)); param.Add(Connection.GetParameter("pStatusActive", DataPlug.DataType._Int, (int)CLayer.ObjectStatus.StatusType.Active)); param.Add(Connection.GetParameter("pStatusInactive", DataPlug.DataType._Int, (int)CLayer.ObjectStatus.StatusType.Disabled)); param.Add(Connection.GetParameter("pUpdatedBy", DataPlug.DataType._Int, data.UpdatedBy)); param.Add(Connection.GetParameter("pUpdatedDate", DataPlug.DataType._DateTime, data.UpdatedDate)); object result = Connection.ExecuteQueryScalar("offer_StatusEdit", param); return(Connection.ToInteger(result)); }
public ActionResult SaveAccommodationProperty(Models.OfferModel data) { string idss = ""; try { // if (data.SearchString == null) data.SearchString = ""; if (data.Ids != "" && data.Ids != null) { idss = CSVNumericValidation(data.Ids); } else { idss = ""; } CLayer.Offers of = new CLayer.Offers() { OfferTitle = data.SOfferTitle, OfferId = data.SOfferId, NoOfDays = data.SNoOfDays, StartDate = data.SStartDate, EndDate = data.SEndDate, AccommodationId = data.SAccommodationId, Amount = data.SAmount, OfferFor = data.SOfferFor, RateType = data.SRateType, SBCommission = data.SSBCommission, FreeDays = data.SFreeDays, PropertyId = data.SPropertyId, OfferType = data.SOfferType, StayCategoryId = data.SStayCategoryId, Ids = idss }; of.Status = (int)CLayer.ObjectStatus.StatusType.Active; long id = BLayer.Offers.Save(of); of.OfferId = id; if (data.Ids != "" && data.Ids != null) { BLayer.Offers.SaveAccommodationProperty(of); } return(RedirectToAction("index", "OfferList")); } catch (Exception ex) { Common.LogHandler.HandleError(ex); return(Redirect("~/Admin/ErrorPage")); // } }
public ActionResult OfferDetails(long OfferId) { Models.OfferModel Setdata1 = new Models.OfferModel() { OfferId = 0 }; ViewBag.Saved = false; CLayer.Offers Getdata1 = BLayer.Offers.GetByOfferId(OfferId, (int)CLayer.ObjectStatus.StatusType.All); if (Getdata1 != null) { Setdata1 = new Models.OfferModel() { SOfferTitle = Getdata1.OfferTitle, SOfferId = Getdata1.OfferId, SNoOfDays = Getdata1.NoOfDays, SStartDate = Getdata1.StartDate, SEndDate = Getdata1.EndDate, SAccommodationId = Getdata1.AccommodationId, SAmount = Getdata1.Amount, SOfferFor = Getdata1.OfferFor, SRateType = Getdata1.RateType, SSBCommission = Getdata1.SBCommission, SFreeDays = Getdata1.FreeDays, SPropertyId = Getdata1.PropertyId, SOfferType = Getdata1.OfferType, SStayCategoryId = Getdata1.StayCategoryId, //second OfferTitle = Getdata1.OfferTitle, OfferId = Getdata1.OfferId, NoOfDays = Getdata1.NoOfDays, StartDate = Getdata1.StartDate, EndDate = Getdata1.EndDate, AccommodationId = Getdata1.AccommodationId, Amount = Getdata1.Amount, OfferFor = Getdata1.OfferFor, RateType = Getdata1.RateType, SBCommission = Getdata1.SBCommission, FreeDays = Getdata1.FreeDays, PropertyId = Getdata1.PropertyId, OfferType = Getdata1.OfferType, StayCategoryId = Getdata1.StayCategoryId }; } return(View( "Index", Setdata1)); }
// public string OrderNo { get; set; } public BookingModel() { Items = new List <CLayer.BookingItem>(); OrderedBy = new CLayer.Address(); Forbookings = new BookingForUserModel(); BookingDetails = new CLayer.Booking(); offeritems = new CLayer.Offers(); Supplier = new CLayer.User(); ForPrint = false; ForPdf = false; List <CLayer.B2BUser> CorporateList = BLayer.B2BUser.GetCorporateName(); CorporateName = new SelectList(CorporateList, "B2BId", "FirstName"); //For getting Corporate User's Name under Corporate List <CLayer.B2BUser> CorporateUserList = BLayer.B2BUser.GetOnCorporateUserList((int)CorporateList[0].B2BId); CorporateUserName = new SelectList(CorporateUserList, "UserId", "FirstName"); }
public long Save(CLayer.Offers data) { List <DataPlug.Parameter> param = new List <DataPlug.Parameter>(); param.Add(Connection.GetParameter("pOfferId", DataPlug.DataType._BigInt, data.OfferId)); param.Add(Connection.GetParameter("pNoOfDays", DataPlug.DataType._Int, data.NoOfDays)); param.Add(Connection.GetParameter("pStartDate", DataPlug.DataType._DateTime, data.StartDate)); param.Add(Connection.GetParameter("pEndDate", DataPlug.DataType._DateTime, data.EndDate)); param.Add(Connection.GetParameter("pStatus", DataPlug.DataType._Int, data.Status)); param.Add(Connection.GetParameter("pAmount", DataPlug.DataType._Double, data.Amount)); param.Add(Connection.GetParameter("pOfferFor", DataPlug.DataType._Int, data.OfferFor)); param.Add(Connection.GetParameter("pRateType", DataPlug.DataType._Int, data.RateType)); param.Add(Connection.GetParameter("pSBCommission", DataPlug.DataType._Decimal, data.SBCommission)); param.Add(Connection.GetParameter("pOfferTitle", DataPlug.DataType._Varchar, data.OfferTitle)); param.Add(Connection.GetParameter("pFreeDays", DataPlug.DataType._Int, data.FreeDays)); param.Add(Connection.GetParameter("pOfferType", DataPlug.DataType._Int, data.OfferType)); param.Add(Connection.GetParameter("pStayCategoryId", DataPlug.DataType._Int, data.StayCategoryId)); object result = Connection.ExecuteQueryScalar("Offer_Save", param); return(Connection.ToLong(result)); }
//#Private Region public long savedata(Models.OfferModel Getdata) { CLayer.Offers OfferData = new CLayer.Offers() { OfferTitle = Getdata.OfferTitle, OfferId = Getdata.OfferId, NoOfDays = Getdata.NoOfDays, StartDate = Getdata.StartDate, EndDate = Getdata.EndDate, Status = (int)CLayer.ObjectStatus.StatusType.Active, AccommodationId = Getdata.AccommodationId, Amount = Getdata.Amount, OfferFor = Getdata.OfferFor, RateType = Getdata.RateType, SBCommission = Getdata.SBCommission, FreeDays = Getdata.FreeDays, OfferType = Getdata.OfferType, StayCategoryId = Getdata.StayCategoryId }; long id = BLayer.Offers.Save(OfferData); return(id); }
public CLayer.Offers GetByOfferId(long OfferId, int Status) { CLayer.Offers Offerob = null; List <DataPlug.Parameter> param = new List <DataPlug.Parameter>(); param.Add(Connection.GetParameter("pOfferId", DataPlug.DataType._BigInt, OfferId)); param.Add(Connection.GetParameter("pStatus", DataPlug.DataType._BigInt, Status)); DataTable dt = Connection.GetTable("Offer_GetById", param); if (dt.Rows.Count > 0) { Offerob = new CLayer.Offers(); Offerob.OfferId = OfferId; Offerob.OfferTitle = Connection.ToString(dt.Rows[0]["OfferTitle"]); Offerob.OfferId = Connection.ToLong(dt.Rows[0]["OfferId"]); Offerob.NoOfDays = Connection.ToInteger(dt.Rows[0]["NoOfDays"]); Offerob.StartDate = Connection.ToDate(dt.Rows[0]["StartDate"]); Offerob.EndDate = Connection.ToDate(dt.Rows[0]["EndDate"]); Offerob.Status = Connection.ToInteger(dt.Rows[0]["Status"]); //AccommodationId = Connection.ToLong(dt.Rows[0]["AccommodationId"]); Offerob.Amount = Connection.ToDecimal(dt.Rows[0]["Amount"]); Offerob.OfferFor = Connection.ToInteger(dt.Rows[0]["OfferFor"]); Offerob.RateType = Connection.ToInteger(dt.Rows[0]["RateType"]); Offerob.SBCommission = Connection.ToDecimal(dt.Rows[0]["SBCommission"]); Offerob.OfferTitle = Connection.ToString(dt.Rows[0]["OfferTitle"]); Offerob.FreeDays = Connection.ToInteger(dt.Rows[0]["FreeDays"]); //PropertyId = Connection.ToLong(dt.Rows[0]["PropertyId"]); Offerob.OfferType = Connection.ToInteger(dt.Rows[0]["OfferType"]); Offerob.StayCategoryId = Connection.ToInteger(dt.Rows[0]["StayCategoryId"]); //Display Offerob.Title = Connection.ToString(dt.Rows[0]["Title"]); Offerob.Location = Connection.ToString(dt.Rows[0]["Location"]); Offerob.Address = Connection.ToString(dt.Rows[0]["Address"]); } return(Offerob); }
public static long Save(CLayer.Offers data) { DataLayer.Offers Offer = new DataLayer.Offers(); return(Offer.Save(data)); }
public static long SaveAccommodationProperty(CLayer.Offers data) { DataLayer.Offers Offer = new DataLayer.Offers(); return(Offer.SaveAccommodationProperty(data)); }
public static int EditStatusChange(CLayer.Offers data) { DataLayer.Offers task = new DataLayer.Offers(); return(task.EditStatusChange(data)); }
public static List <CLayer.Rates> GetTotalRates(List <long> accIds, DateTime checkIn, DateTime checkOut, CLayer.Role.Roles rateType, long loggedInUserId, long InventoryAPIID) { List <CLayer.Rates> arates; StringBuilder ids = new StringBuilder(); bool isCorporate = false; long TAMInventoryAPIID = InventoryAPIID; long corpId = 0; if (rateType == CLayer.Role.Roles.Corporate) { CLayer.Role.Roles rle = BLayer.User.GetRole(loggedInUserId); if (rle == CLayer.Role.Roles.CorporateUser) { corpId = BLayer.B2B.GetCorporateIdOfUser(loggedInUserId); } else { corpId = loggedInUserId; } isCorporate = true; } foreach (long id in accIds) { ids.Append(","); ids.Append(id); } ids.Remove(0, 1); List <CLayer.Rates> result = new List <CLayer.Rates>(); if (TAMInventoryAPIID == 4 || TAMInventoryAPIID == 5) { arates = GetAccommodationRatesForAPI(ids.ToString(), checkIn, checkOut, rateType); } else { arates = GetAccommodationRates(ids.ToString(), checkIn, checkOut, rateType); } DateTime currentDate; decimal total, currate, curguest_rate, guest, PurchaseRateaAfterTaxs, totalPurchaseRateAfterTaxs, PurchaseRateBeforeTax, SellRateAfterTax, SellRateBeforeTax, Prch_Rate_AT, Prch_Rate_ATX, PurchaseRateAfterTax; int cnt, idx; int days = (checkOut - checkIn).Days; long propertyId = BLayer.Accommodation.GetPropertyId(accIds[0]); int inventory = 0; CLayer.Discount dicnt = null; if (isCorporate) { dicnt = BLayer.Discount.GetDiscount(corpId, propertyId); } CLayer.RateCommission rc = BLayer.Property.GetCommission(propertyId); List <CLayer.Offers> propertyOffers = BLayer.Offers.GetForPropertyCalc(propertyId, checkIn, checkOut); bool hasPrOffers = (propertyOffers.Count > 0); List <CLayer.Offers> accOffers; CLayer.Offers propOffer = null; if (hasPrOffers) { propOffer = propertyOffers[0]; } CLayer.Offers curOffer = null; DateTime offEndDate, offStartDate; offStartDate = offEndDate = DateTime.Today; List <CLayer.BookingItemOffer> appliedOffers; List <CLayer.Rates.RateValues> bookingRates; int noOfDays = (checkOut - checkIn).Days; int reduceDateBy = 0; int calcDays = 0; long curOfferId = 0; decimal curOldRate = 0; List <DateTime> freeDays = new List <DateTime>(); bool freeDaysExist = false; foreach (long id in accIds) { List <CLayer.Rates> accrates = arates.Where(m => m.AccommodationId == id).OrderBy(x => x.StartDate).ToList(); cnt = accrates.Count(); if (cnt > 0) { inventory = accrates[0].NoofAcc; } else { inventory = 0; result.Add(new CLayer.Rates() { Amount = 0, GuestRate = 0, AccommodationId = id, NoofAcc = 0, RateChanges = new List <CLayer.Rates.RateValues>(), //FirstDayCharge = fctotal, SBMarkup = 0, CorpDiscount = 0, AppliedOffers = new List <CLayer.BookingItemOffer>() }); continue; } accOffers = BLayer.Offers.GetForAccommodationCalc(id, checkIn, checkOut); appliedOffers = new List <CLayer.BookingItemOffer>(); curOffer = null; bookingRates = new List <CLayer.Rates.RateValues>(); if (accOffers.Count > 0) { curOffer = accOffers[0]; } else { curOffer = null; if (hasPrOffers) { curOffer = propOffer; } } curOfferId = 0; currentDate = checkIn; total = 0; guest = 0; PurchaseRateaAfterTaxs = 0; totalPurchaseRateAfterTaxs = 0; currate = 0; curOldRate = 0; curguest_rate = 0; SellRateBeforeTax = 0; PurchaseRateBeforeTax = 0; Prch_Rate_AT = 0; Prch_Rate_ATX = 0; PurchaseRateAfterTax = 0; SellRateAfterTax = 0; freeDays.Clear(); //calculate if free nights offer is available.. reduceDateBy = 0; if (curOffer != null && (!isCorporate)) //offer is not available for corporate { //find offer applicable date if (checkIn > curOffer.StartDate) { offStartDate = checkIn; } else { offStartDate = curOffer.StartDate; } if (checkOut < curOffer.EndDate) { offEndDate = checkOut; } else { offEndDate = curOffer.EndDate; } if (curOffer.RateType == (int)CLayer.ObjectStatus.OfferRateType.OfferFreeRate) { int tot = curOffer.FreeDays + curOffer.NoOfDays; //total days -Example: for 4 days booking 2 days free.. So total - minimum- 6days booking should be there int hwmany = 0; calcDays = (offEndDate - offStartDate).Days; if (calcDays >= tot) { hwmany = calcDays / tot; reduceDateBy = hwmany * curOffer.FreeDays; // currentDate = currentDate.AddDays(reduceDateBy); //reduce freedays from calculation if (reduceDateBy == 1) { if (offEndDate == checkOut) { offEndDate = offEndDate.AddDays(-1); } if (offEndDate >= checkIn) { freeDays.Add(offEndDate); } } else if (reduceDateBy > 1) { if (offEndDate == checkOut) { offEndDate = offEndDate.AddDays(-1); } while (reduceDateBy > 0) { if (offEndDate >= checkIn) { freeDays.Add(offEndDate); } offEndDate.AddDays(-1 * reduceDateBy); reduceDateBy--; } } //to do offer applied markit curOfferId = curOffer.OfferId; appliedOffers.Add(new CLayer.BookingItemOffer() { OfferId = curOffer.OfferId, OfferTitle = curOffer.Title, AccommodationId = id }); } curOffer = null; //avoid checking other offer types } } freeDaysExist = (freeDays.Count > 0); // find tax here decimal tax = BLayer.PropertyTax.GetTotalTax(propertyId); while (currentDate < checkOut) { //never reset currate or curguest_rate here, if a rate is not found for the date then old rate is used for (idx = 0; idx < cnt; idx++) { if (currentDate >= accrates[idx].StartDate && currentDate <= accrates[idx].EndDate) { currate = accrates[idx].Amount; curguest_rate = accrates[idx].GuestRate; PurchaseRateaAfterTaxs = accrates[idx].PurchaseRateAfterTax; Prch_Rate_AT = accrates[idx].PurchaseRateAfterTax; break; } } if (curOldRate != currate) { bookingRates.Add(new CLayer.Rates.RateValues() { StartDate = currentDate.ToShortDateString(), DayCharge = (double)currate, DayGuestCharge = (double)curguest_rate, DayTotalCharge = 0, DayTotalGuestCharge = 0 }); curOldRate = currate; } if (curOffer != null && (!isCorporate)) { if (currentDate >= offStartDate && currentDate <= offEndDate) { if (curOfferId != curOffer.OfferId && curOfferId != 0) { curOfferId = curOffer.OfferId; appliedOffers.Add(new CLayer.BookingItemOffer() { OfferId = curOffer.OfferId, OfferTitle = curOffer.Title, AccommodationId = id }); } switch ((CLayer.ObjectStatus.OfferRateType)curOffer.RateType) { case CLayer.ObjectStatus.OfferRateType.OfferFlatRate: total = total + curOffer.Amount; guest = guest + curguest_rate; break; case CLayer.ObjectStatus.OfferRateType.OfferPercentageRate: total = Math.Round(total + (currate - (currate * curOffer.Amount / 100))); guest = Math.Round(guest + (curguest_rate - (curguest_rate * curOffer.Amount / 100))); break; } } else { total = total + currate; totalPurchaseRateAfterTaxs = totalPurchaseRateAfterTaxs + PurchaseRateaAfterTaxs; guest = guest + curguest_rate; Prch_Rate_ATX = Prch_Rate_ATX + Prch_Rate_AT; } } else { //perform calculations here if (freeDaysExist) { if (!freeDays.Contains(currentDate)) { total = total + currate; totalPurchaseRateAfterTaxs = totalPurchaseRateAfterTaxs + PurchaseRateaAfterTaxs; guest = guest + curguest_rate; Prch_Rate_ATX = Prch_Rate_ATX + Prch_Rate_AT; } } else { total = total + currate; totalPurchaseRateAfterTaxs = totalPurchaseRateAfterTaxs + PurchaseRateaAfterTaxs; guest = guest + curguest_rate; Prch_Rate_ATX = Prch_Rate_ATX + Prch_Rate_AT; } } currentDate = currentDate.AddDays(1); } decimal CalcTotalTax = Math.Round((total * tax) / 100); decimal CalcGuestTax = Math.Round((guest * tax) / 100); //reduce tax from supplier rate SellRateAfterTax = total; total = Math.Round(total / (1 + (tax / 100))); guest = Math.Round(guest / (1 + (tax / 100))); totalPurchaseRateAfterTaxs = Math.Round(totalPurchaseRateAfterTaxs / (1 + (tax / 100))); SellRateBeforeTax = totalPurchaseRateAfterTaxs; PurchaseRateBeforeTax = total; PurchaseRateAfterTax = Prch_Rate_ATX; //calculate corp discount and SB Markup here.. //SB Markup decimal SBMarkup_rate = 0; decimal SBMarkup_guest = 0; if (days < CLayer.Rates.LONG_TERM_DAYS) { if (isCorporate) { SBMarkup_rate = Math.Round(total * ((decimal)rc.B2BShortTerm) / 100); SBMarkup_guest = Math.Round(guest * ((decimal)rc.B2BShortTerm) / 100); //first day charge //diff rates calculation for (int ai = 0; ai < bookingRates.Count; ai++) { bookingRates[ai].DayTotalCharge = bookingRates[ai].DayCharge + Math.Round(bookingRates[ai].DayCharge * rc.B2BShortTerm / 100); bookingRates[ai].DayTotalGuestCharge = bookingRates[ai].DayGuestCharge + Math.Round(bookingRates[ai].DayGuestCharge * rc.B2BShortTerm / 100); } } else { if (TAMInventoryAPIID == 4 || TAMInventoryAPIID == 5) { SBMarkup_rate = Math.Round(total - totalPurchaseRateAfterTaxs); SBMarkup_guest = Math.Round(guest * ((decimal)rc.B2CShortTerm) / 100); } else { SBMarkup_rate = Math.Round(total * ((decimal)rc.B2CShortTerm) / 100); SBMarkup_guest = Math.Round(guest * ((decimal)rc.B2CShortTerm) / 100); } ////first day charge for (int ai = 0; ai < bookingRates.Count; ai++) { bookingRates[ai].DayTotalCharge = bookingRates[ai].DayCharge + Math.Round(bookingRates[ai].DayCharge * rc.B2CShortTerm / 100); bookingRates[ai].DayTotalGuestCharge = bookingRates[ai].DayGuestCharge + Math.Round(bookingRates[ai].DayGuestCharge * rc.B2CShortTerm / 100); } } } else { if (isCorporate) { SBMarkup_rate = Math.Round(total * ((decimal)rc.B2BLongTerm) / 100); SBMarkup_guest = Math.Round(guest * ((decimal)rc.B2BLongTerm) / 100); //first day charge //diff rates calc for (int ai = 0; ai < bookingRates.Count; ai++) { bookingRates[ai].DayTotalCharge = bookingRates[ai].DayTotalCharge + Math.Round(bookingRates[ai].DayCharge * rc.B2BLongTerm / 100); bookingRates[ai].DayTotalGuestCharge = bookingRates[ai].DayTotalGuestCharge + Math.Round(bookingRates[ai].DayGuestCharge * rc.B2BLongTerm / 100); } } else { if (TAMInventoryAPIID == 4 || TAMInventoryAPIID == 5) { SBMarkup_rate = Math.Round(total - totalPurchaseRateAfterTaxs); SBMarkup_guest = Math.Round(guest * ((decimal)rc.B2CLongTerm) / 100); } else { SBMarkup_rate = Math.Round(total * ((decimal)rc.B2CLongTerm) / 100); SBMarkup_guest = Math.Round(guest * ((decimal)rc.B2CLongTerm) / 100); } //diff rates calc for (int ai = 0; ai < bookingRates.Count; ai++) { bookingRates[ai].DayTotalCharge = bookingRates[ai].DayTotalCharge + Math.Round(bookingRates[ai].DayCharge * rc.B2CLongTerm / 100); bookingRates[ai].DayTotalGuestCharge = bookingRates[ai].DayTotalGuestCharge + Math.Round(bookingRates[ai].DayGuestCharge * rc.B2CLongTerm / 100); } } } //Corporate Discount decimal add_discount = 0; decimal base_discount = 0; decimal guest_add_discount = 0; decimal guest_base_discount = 0; if (isCorporate) { if (days < CLayer.Rates.LONG_TERM_DAYS) { if (dicnt.ShortTermRate > 0) { add_discount = Math.Round(total * (decimal)dicnt.ShortTermRate / 100); guest_add_discount = Math.Round(guest * (decimal)dicnt.ShortTermRate / 100); //first day charge //individual rates for (int ai = 0; ai < bookingRates.Count; ai++) { bookingRates[ai].DayTotalCharge = bookingRates[ai].DayTotalCharge - Math.Round(bookingRates[ai].DayCharge * dicnt.ShortTermRate / 100); bookingRates[ai].DayTotalGuestCharge = bookingRates[ai].DayTotalGuestCharge - Math.Round(bookingRates[ai].DayGuestCharge * dicnt.ShortTermRate / 100); } } if (dicnt.BaseShortTerm > 0) { base_discount = Math.Round(total * (decimal)dicnt.BaseShortTerm / 100); guest_base_discount = Math.Round(guest * (decimal)dicnt.BaseShortTerm / 100); //first day charge for (int ai = 0; ai < bookingRates.Count; ai++) { bookingRates[ai].DayTotalCharge = bookingRates[ai].DayTotalCharge - Math.Round(bookingRates[ai].DayCharge * dicnt.BaseShortTerm / 100, 2); bookingRates[ai].DayTotalGuestCharge = bookingRates[ai].DayTotalGuestCharge - Math.Round(bookingRates[ai].DayGuestCharge * dicnt.BaseShortTerm / 100, 2); } } } else { if (dicnt.LongTermRate > 0) { add_discount = Math.Round(total * (decimal)dicnt.LongTermRate / 100); guest_add_discount = Math.Round(guest * (decimal)dicnt.LongTermRate / 100); //first day charge //diff rates calc for (int ai = 0; ai < bookingRates.Count; ai++) { bookingRates[ai].DayTotalCharge = bookingRates[ai].DayTotalCharge - Math.Round(bookingRates[ai].DayCharge * dicnt.LongTermRate / 100); bookingRates[ai].DayTotalGuestCharge = bookingRates[ai].DayTotalGuestCharge - Math.Round(bookingRates[ai].DayGuestCharge * dicnt.LongTermRate / 100); } } if (dicnt.BaseLongTerm > 0) { base_discount = Math.Round(total * (decimal)dicnt.BaseLongTerm / 100); guest_add_discount = Math.Round(guest * (decimal)dicnt.BaseLongTerm / 100); //first day charge //diff rates calc for (int ai = 0; ai < bookingRates.Count; ai++) { bookingRates[ai].DayTotalCharge = bookingRates[ai].DayTotalCharge - Math.Round(bookingRates[ai].DayCharge * dicnt.BaseLongTerm / 100); bookingRates[ai].DayTotalGuestCharge = bookingRates[ai].DayTotalGuestCharge - Math.Round(bookingRates[ai].DayGuestCharge * dicnt.BaseLongTerm / 100); } } } } decimal suppRate = total; decimal suppGuestRate = guest; if (TAMInventoryAPIID == 4 || TAMInventoryAPIID == 5) { total = Math.Round(total); guest = Math.Round(guest + SBMarkup_guest - guest_add_discount - guest_base_discount); } else { total = Math.Round(total + SBMarkup_rate - add_discount - base_discount); guest = Math.Round(guest + SBMarkup_guest - guest_add_discount - guest_base_discount); } //find tax on total amount and guest rate decimal totaltax = (total * tax) / 100; decimal guesttax = (guest * tax) / 100; result.Add(new CLayer.Rates() { SupplierRate = suppRate + CalcTotalTax, SupplierGuestRate = guest + CalcGuestTax, Amount = total, GuestRate = guest, AccommodationId = id, NoofAcc = inventory, RateChanges = bookingRates, //FirstDayCharge = fctotal, SBMarkup = SBMarkup_rate, //(SBMarkup_rate + SBMarkup_guest), SBGuestMarkup = SBMarkup_guest, CorpDiscount = (add_discount + base_discount), CorpGuestDiscount = (guest_add_discount + guest_base_discount), AppliedOffers = appliedOffers, TotalRateTax = totaltax, TotalGuestTax = guesttax, PurchaseRateAfterTax = PurchaseRateAfterTax, SellRateBeforeTax = PurchaseRateBeforeTax, PurchaseRateBeforeTax = SellRateBeforeTax, SellRateAfterTax = SellRateAfterTax }); } return(result); }