Ejemplo n.º 1
0
        //***Save Amount for offlinebookings bookingdetails
        //**Added by rahul on 29/02/20
        public void SaveBookingDetailsAmounts(CLayer.BookingItem data)
        {
            //BookingItem_Update
            List <DataPlug.Parameter> param = new List <DataPlug.Parameter>();

            param.Add(Connection.GetParameter("pBookingItemId", DataPlug.DataType._BigInt, data.OfflineBookingItemId));
            param.Add(Connection.GetParameter("pAmount", DataPlug.DataType._Decimal, data.Amount));
            param.Add(Connection.GetParameter("pTotalAmount", DataPlug.DataType._Decimal, data.TotalAmount));
            param.Add(Connection.GetParameter("pTotalTax", DataPlug.DataType._Decimal, data.TotalTax));
            param.Add(Connection.GetParameter("pSBMarkup", DataPlug.DataType._Decimal, data.CommissionSB));
            param.Add(Connection.GetParameter("pB2BDiscount", DataPlug.DataType._Decimal, data.CorporateDiscountAmount));
            param.Add(Connection.GetParameter("pGuestAmount", DataPlug.DataType._Decimal, data.GuestAmount));
            param.Add(Connection.GetParameter("pFirstDayCharge", DataPlug.DataType._Decimal, data.FirstDayCharge));
            param.Add(Connection.GetParameter("pRatesApplied", DataPlug.DataType._Varchar, data.RatesApplied));
            param.Add(Connection.GetParameter("pTotalRateTax", DataPlug.DataType._Decimal, data.TotalRateTax));
            param.Add(Connection.GetParameter("pTotalGuestTax", DataPlug.DataType._Decimal, data.TotalGuestTax));

            param.Add(Connection.GetParameter("pPurchaseRateAfterTax", DataPlug.DataType._Decimal, data.PurchaseRateAfterTax));
            param.Add(Connection.GetParameter("pPurchaseRateBeforeTax", DataPlug.DataType._Decimal, data.PurchaseRateBeforeTax));
            param.Add(Connection.GetParameter("pSellRateAfterTax", DataPlug.DataType._Decimal, data.SellRateAfterTax));
            param.Add(Connection.GetParameter("pSellRateBeforeTax", DataPlug.DataType._Decimal, data.SellRateBeforeTax));



            object id = Connection.ExecuteQueryScalar("booking_offlinebookingdetails_Update", param);
        }
Ejemplo n.º 2
0
        //*****

        public void SaveGDSCountry(CLayer.BookingItem data)
        {
            string sql = "Update bookingitems set GDSCountry=" + data.GDSCountry.ToString() +
                         " Where BookingItemId=" + data.BookingItemId.ToString() + " and bookingid=" + data.BookingId + "";

            Connection.ExecuteSqlQuery(sql);
        }
Ejemplo n.º 3
0
 //*Added by rahul for Saving BookingItems table data to Booking details table on 28/02/20
 public static long SaveIntialBookingDetailsData(CLayer.BookingItem data)
 {
     DataLayer.BookingItem bi = new DataLayer.BookingItem();
     if (data.NoOfDays < 1 && data.CheckOut > data.CheckIn)
     {
         data.NoOfDays = (data.CheckOut - data.CheckIn).Days;
     }
     return(bi.SaveIntialBookingDetailsData(data));
 }
Ejemplo n.º 4
0
        //*This is for getting details of offlinebooking
        //*Done by rahul on 06-02-2020
        public List <CLayer.BookingItem> GetAllOfflineDetails(long bookingId, bool IsAmedus = false)
        {
            List <CLayer.BookingItem> result = new List <CLayer.BookingItem>();
            List <DataPlug.Parameter> param  = new List <DataPlug.Parameter>();

            try
            {
                param.Add(Connection.GetParameter("pBookingId", DataPlug.DataType._BigInt, bookingId));
                DataTable dt;

                dt = Connection.GetTable("offlinebooking_GetAllItems", param);



                CLayer.BookingItem bi;
                foreach (DataRow dr in dt.Rows)
                {
                    bi = new CLayer.BookingItem();
                    bi.BookingItemId      = Connection.ToLong(dr["BookingId"]);
                    bi.AccommodationId    = Connection.ToLong(dr["AccommodatoinTypeId"]);
                    bi.BookingId          = Connection.ToLong(dr["Offline_BookingId"]);
                    bi.AccommodationTitle = Connection.ToString(dr["AccommodationType"]);
                    bi.CheckIn            = Connection.ToDate(dr["CheckIn_date"]);
                    bi.CheckOut           = Connection.ToDate(dr["CheckOut_date"]);
                    bi.NoOfAccommodations = Connection.ToInteger(dr["NoOfRooms"]);
                    bi.NoOfAdults         = Connection.ToInteger(dr["NoOfPaxAdult"]);
                    bi.NoOfChildren       = Connection.ToInteger(dr["NoOfPaxChild"]);
                    bi.NoOfDays           = Connection.ToInteger(dr["Noofnight"]);
                    bi.Amount             = Connection.ToDecimal(dr["TotalBuyPrice"]);
                    bi.PropertyTitle      = Connection.ToString(dr["PropertyTitle"]);
                    bi.PropertyAddress    = Connection.ToString(dr["PropertyAddress"]);
                    bi.PropertyId         = Connection.ToLong(dr["PropertyId"]);
                    bi.TotalAmount        = Connection.ToDecimal(dr["TotalAmtForBuyPrice"]);
                    bi.TotalTax           = Connection.ToDecimal(dr["StaxForBuyPrice"]);
                    bi.AccommodationTypeT = Connection.ToString(dr["AccommodationType"]);
                    bi.StayCategoryT      = Connection.ToString(dr["StayCategory"]);
                    bi.DailyRate          = Connection.ToDecimal(dr["DailyRate"]);
                    bi.HotelConfirmNumber = Connection.ToString(dr["HotelConfirmNumber"]);
                    bi.CountryName        = Connection.ToString(dr["CountryName"]);

                    result.Add(bi);
                }
            }
            catch (Exception ex)
            {
                result = null;
            }

            return(result);
        }
Ejemplo n.º 5
0
        public void UpdateGDSCurrencyDetails(CLayer.BookingItem pBookingItem)
        {
            try
            {
                string sql = "UPDATE BookingItems SET GDSCountry=" + pBookingItem.GDSCountry + ",GDSConversionRate=" + pBookingItem.GDSConversionRate + "," +
                             "GDSAmount=" + pBookingItem.GDSAmount + ",GDSConvertedAmount=" + pBookingItem.GDSConvertedAmount + " WHERE bookingID=" + pBookingItem.BookingId + " AND AccommodationID=" + pBookingItem.AccommodationId + "";
                object obj = Connection.ExecuteSQLQueryScalar(sql);
            }
            catch (Exception ex)
            {
                throw ex;
            }

            //  return Connection.ToLong(obj);
        }
Ejemplo n.º 6
0
        public List <CLayer.BookingItem> GetIncompleteGDSBookings()
        {
            DataTable dt = Connection.GetTable("GetIncompleteGDSBookings");
            List <CLayer.BookingItem> result = new List <CLayer.BookingItem>();

            CLayer.BookingItem rt;
            foreach (DataRow dr in dt.Rows)
            {
                rt                    = new CLayer.BookingItem();
                rt.BookingId          = Connection.ToLong(dr["BookingID"]);
                rt.Status             = Connection.ToInteger(dr["BookingStatus"]);
                rt.HotelConfirmNumber = Connection.ToString(dr["HotelConfirmNumber"]);

                result.Add(rt);
            }
            return(result);
        }
Ejemplo n.º 7
0
        public CLayer.BookingItem GetTotalTaxDetails(long bookingItemId)
        {
            CLayer.BookingItem        result = null;
            List <DataPlug.Parameter> param  = new List <DataPlug.Parameter>();

            param.Add(Connection.GetParameter("pbookingItemId", DataPlug.DataType._BigInt, bookingItemId));
            DataTable dt = Connection.GetTable("bookingitems_GetTotalRateTax", param);

            CLayer.BookingItem bi;
            foreach (DataRow dr in dt.Rows)
            {
                bi = new CLayer.BookingItem();
                bi.TotalRateTax  = Connection.ToDecimal(dr["TotalRateTax"]);
                bi.TotalGuestTax = Connection.ToDecimal(dr["TotalGuestTax"]);
                result           = bi;
            }
            return(result);
        }
Ejemplo n.º 8
0
        //*Added by rahul for Saving BookingItems table data to Booking details table on 28/02/20
        public long SaveIntialBookingDetailsData(CLayer.BookingItem data)
        {
            List <DataPlug.Parameter> param = new List <DataPlug.Parameter>();

            param.Add(Connection.GetParameter("pStatus", DataPlug.DataType._Int, data.Status));
            param.Add(Connection.GetParameter("pForUserId", DataPlug.DataType._BigInt, data.ForUser));
            param.Add(Connection.GetParameter("pBookingId", DataPlug.DataType._BigInt, data.BookingId));
            param.Add(Connection.GetParameter("pAccommodationId", DataPlug.DataType._BigInt, data.AccommodationId));
            param.Add(Connection.GetParameter("pNoOfAccommodations", DataPlug.DataType._Int, data.NoOfAccommodations));
            param.Add(Connection.GetParameter("pNoOfAdults", DataPlug.DataType._Int, data.NoOfAdults));
            param.Add(Connection.GetParameter("pNoOfDays", DataPlug.DataType._Int, data.NoOfDays));
            param.Add(Connection.GetParameter("pNoOfChildren", DataPlug.DataType._Int, data.NoOfChildren));
            param.Add(Connection.GetParameter("pCheckIn", DataPlug.DataType._Date, data.CheckIn));
            param.Add(Connection.GetParameter("pCheckOut", DataPlug.DataType._Date, data.CheckOut));
            param.Add(Connection.GetParameter("pLockInTime", DataPlug.DataType._DateTime, data.LockInTime));
            object id = Connection.ExecuteQueryScalar("bookingdetails_SaveInitialData", param);

            return(Connection.ToLong(id));
        }
Ejemplo n.º 9
0
        public List <CLayer.BookingItem> GetAccomodationFromBookingCode(string BookingCode)
        {
            List <DataPlug.Parameter> param = new List <DataPlug.Parameter>();

            param.Add(Connection.GetParameter("pBookingCode", DataPlug.DataType._Varchar, BookingCode));
            DataTable dt = Connection.GetTable("GetAccommodationFromBookingCode", param);
            List <CLayer.BookingItem> result = new List <CLayer.BookingItem>();

            CLayer.BookingItem rt;
            foreach (DataRow dr in dt.Rows)
            {
                rt = new CLayer.BookingItem();
                rt.AccommodationId = Connection.ToLong(dr["AccommodationId"]);
                rt.BookingId       = Connection.ToLong(dr["bookingID"]);

                result.Add(rt);
            }
            return(result);
        }
Ejemplo n.º 10
0
        public List <CLayer.BookingItem> GetAllDetailsforoffline(long bookingId)
        {
            List <CLayer.BookingItem> result = new List <CLayer.BookingItem>();
            List <DataPlug.Parameter> param  = new List <DataPlug.Parameter>();

            param.Add(Connection.GetParameter("pBookingId", DataPlug.DataType._BigInt, bookingId));

            DataTable dt = Connection.GetTable("booking_GetAllItems", param);

            CLayer.BookingItem bi;
            foreach (DataRow dr in dt.Rows)
            {
                bi = new CLayer.BookingItem();
                bi.BookingItemId       = Connection.ToLong(dr["BookingItemId"]);
                bi.AccommodationId     = Connection.ToLong(dr["AccommodationId"]);
                bi.BookingId           = Connection.ToLong(dr["BookingId"]);
                bi.AccommodationTitle  = Connection.ToString(dr["AccommodationType"]);
                bi.CheckIn             = Connection.ToDate(dr["CheckIn"]);
                bi.AccommodationTypeId = Connection.ToLong(dr["AccommodationTypeId"]);
                bi.CheckOut            = Connection.ToDate(dr["CheckOut"]);
                bi.NoOfAccommodations  = Connection.ToInteger(dr["NoOfAccommodations"]);
                bi.NoOfAdults          = Connection.ToInteger(dr["NoOfAdults"]);
                bi.NoOfChildren        = Connection.ToInteger(dr["NoOfChildren"]);
                bi.NoOfGuests          = Connection.ToInteger(dr["NoOfGuests"]);
                bi.NoOfDays            = Connection.ToInteger(dr["NoOfDays"]);
                bi.Amount                  = Connection.ToDecimal(dr["Amount"]);
                bi.PropertyTitle           = Connection.ToString(dr["PropertyTitle"]);
                bi.PropertyAddress         = Connection.ToString(dr["PropertyAddress"]);
                bi.PropertyId              = Connection.ToLong(dr["PropertyId"]);
                bi.TotalAmount             = Connection.ToDecimal(dr["TotalAmount"]);
                bi.TotalTax                = Connection.ToDecimal(dr["TotalTax"]);
                bi.AccommodationTypeT      = Connection.ToString(dr["AccommodationType"]);
                bi.StayCategoryT           = Connection.ToString(dr["StayCategory"]);
                bi.DailyRate               = Connection.ToDecimal(dr["DailyRate"]);
                bi.FirstDayCharge          = Connection.ToDecimal(dr["FirstDayCharge"]);
                bi.CommissionSB            = Connection.ToDecimal(dr["MarkupForSB"]);
                bi.TotalCommissionforother = Connection.ToDecimal(dr["TotalComForOther"]);
                bi.CorporateDiscountAmount = Connection.ToDecimal(dr["B2BDiscount"]);

                result.Add(bi);
            }
            return(result);
        }
Ejemplo n.º 11
0
        public List <CLayer.BookingItem> GetAllDetailsForPartialPay(long bookingId, bool IsAmadeus = false)
        {
            List <CLayer.BookingItem> result = new List <CLayer.BookingItem>();
            List <DataPlug.Parameter> param  = new List <DataPlug.Parameter>();

            param.Add(Connection.GetParameter("pBookingId", DataPlug.DataType._BigInt, bookingId));
            string    Sql = (IsAmadeus) ? "booking_GetGDSAllItemsForPartialPay" : "booking_GetAllItemsForPartialPay";
            DataTable dt  = Connection.GetTable(Sql, param);

            CLayer.BookingItem bi;
            foreach (DataRow dr in dt.Rows)
            {
                bi = new CLayer.BookingItem();
                bi.BookingItemId      = Connection.ToLong(dr["BookingItemId"]);
                bi.AccommodationId    = Connection.ToLong(dr["AccommodationId"]);
                bi.BookingId          = Connection.ToLong(dr["BookingId"]);
                bi.AccommodationTitle = Connection.ToString(dr["AccommodationType"]);
                bi.CheckIn            = Connection.ToDate(dr["CheckIn"]);
                bi.quantity           = Connection.ToInteger(dr["quantity"]);
                bi.CheckOut           = Connection.ToDate(dr["CheckOut"]);
                bi.NoOfAccommodations = Connection.ToInteger(dr["NoOfAccommodations"]);
                bi.NoOfAdults         = Connection.ToInteger(dr["NoOfAdults"]);
                bi.NoOfChildren       = Connection.ToInteger(dr["NoOfChildren"]);
                bi.NoOfGuests         = Connection.ToInteger(dr["NoOfGuests"]);
                bi.NoOfDays           = Connection.ToInteger(dr["NoOfDays"]);
                bi.Amount             = Connection.ToDecimal(dr["Amount"]);
                bi.PropertyTitle      = Connection.ToString(dr["PropertyTitle"]);
                bi.PropertyAddress    = Connection.ToString(dr["PropertyAddress"]);
                bi.PropertyId         = Connection.ToLong(dr["PropertyId"]);
                bi.TotalAmount        = Connection.ToDecimal(dr["TotalAmount"]);
                bi.TotalTax           = Connection.ToDecimal(dr["TotalTax"]);
                bi.AccommodationTypeT = Connection.ToString(dr["AccommodationType"]);
                bi.StayCategoryT      = Connection.ToString(dr["StayCategory"]);
                bi.DailyRate          = Connection.ToDecimal(dr["DailyRate"]);
                bi.FirstDayCharge     = Connection.ToDecimal(dr["FirstDayCharge"]);
                bi.CommissionSB       = Connection.ToDecimal(dr["TotalComForSB"]);


                result.Add(bi);
            }
            return(result);
        }
Ejemplo n.º 12
0
        public List <CLayer.BookingItem> GetAllUnderCart(int status, long userId)
        {
            List <CLayer.BookingItem> result = new List <CLayer.BookingItem>();
            List <DataPlug.Parameter> param  = new List <DataPlug.Parameter>();

            param.Add(Connection.GetParameter("pStatus", DataPlug.DataType._Int, status));
            param.Add(Connection.GetParameter("pUserId", DataPlug.DataType._BigInt, userId));

            DataTable dt = Connection.GetTable("Booking_GetCartItems", param);

            CLayer.BookingItem bi;
            foreach (DataRow dr in dt.Rows)
            {
                bi = new CLayer.BookingItem();
                bi.BookingItemId      = Connection.ToLong(dr["BookingItemId"]);
                bi.BookingId          = Connection.ToLong(dr["BookingId"]);
                bi.AccommodationTitle = Connection.ToString(dr["AccommodationType"]);
                bi.CheckIn            = Connection.ToDate(dr["CheckIn"]);
                bi.CheckOut           = Connection.ToDate(dr["CheckOut"]);
                bi.NoOfAccommodations = Connection.ToInteger(dr["NoOfAccommodations"]);
                bi.NoOfAdults         = Connection.ToInteger(dr["NoOfAdults"]);
                bi.NoOfChildren       = Connection.ToInteger(dr["NoOfChildren"]);
                bi.NoOfGuests         = Connection.ToInteger(dr["NoOfGuests"]);
                bi.NoOfDays           = Connection.ToInteger(dr["NoOfDays"]);
                bi.Amount             = Connection.ToDecimal(dr["Amount"]);
                bi.PropertyTitle      = Connection.ToString(dr["PropertyTitle"]);
                bi.PropertyAddress    = Connection.ToString(dr["PropertyAddress"]);
                bi.ForUserFirstName   = Connection.ToString(dr["ForUserFirstName"]);
                bi.ForUserLastName    = Connection.ToString(dr["ForUserLastName"]);
                bi.ForUserEmail       = Connection.ToString(dr["ForUserEmail"]);
                bi.ForUserMobile      = Connection.ToString(dr["ForUserMobile"]);
                bi.TotalAmount        = Connection.ToDecimal(dr["TotalAmount"]);
                bi.TotalTax           = Connection.ToDecimal(dr["TotalTax"]);
                result.Add(bi);
            }
            return(result);
        }
Ejemplo n.º 13
0
        public CLayer.BookingItem GetDetails(long bookingItemId)
        {
            CLayer.BookingItem        result = null;
            List <DataPlug.Parameter> param  = new List <DataPlug.Parameter>();

            param.Add(Connection.GetParameter("pBookingItemId", DataPlug.DataType._BigInt, bookingItemId));

            DataTable dt = Connection.GetTable("bookingitems_GetDetails", param);

            CLayer.BookingItem bi;
            foreach (DataRow dr in dt.Rows)
            {
                bi = new CLayer.BookingItem();
                bi.BookingItemId      = Connection.ToLong(dr["BookingItemId"]);
                bi.BookingId          = Connection.ToLong(dr["BookingId"]);
                bi.AccommodationTitle = Connection.ToString(dr["AccommodationType"]);
                bi.CheckIn            = Connection.ToDate(dr["CheckIn"]);
                bi.CheckOut           = Connection.ToDate(dr["CheckOut"]);
                bi.NoOfAccommodations = Connection.ToInteger(dr["NoOfAccommodations"]);
                bi.NoOfAdults         = Connection.ToInteger(dr["NoOfAdults"]);
                bi.NoOfChildren       = Connection.ToInteger(dr["NoOfChildren"]);
                bi.NoOfGuests         = Connection.ToInteger(dr["NoOfGuests"]);
                bi.NoOfDays           = Connection.ToInteger(dr["NoOfDays"]);
                bi.Amount             = Connection.ToDecimal(dr["Amount"]);
                bi.PropertyTitle      = Connection.ToString(dr["PropertyTitle"]);
                bi.PropertyAddress    = Connection.ToString(dr["PropertyAddress"]);
                bi.ForUserFirstName   = Connection.ToString(dr["ForUserFirstName"]);
                bi.ForUserLastName    = Connection.ToString(dr["ForUserLastName"]);
                bi.ForUserEmail       = Connection.ToString(dr["ForUserEmail"]);
                bi.ForUserMobile      = Connection.ToString(dr["ForUserMobile"]);
                bi.TotalAmount        = Connection.ToDecimal(dr["TotalAmount"]);
                bi.TotalTax           = Connection.ToDecimal(dr["TotalTax"]);
                result = bi;
            }
            return(result);
        }
Ejemplo n.º 14
0
        // 1 = success, 0 = failed

        public static int BookAccommodations(List <CLayer.BookingAccDetails> bookingInfo, DateTime checkIn, DateTime checkOut, long userId, long bookingId, long offlinebookingId, string orderNo = "", List <CLayer.RoomStaysResult> objRoomStayResult = null, List <CLayer.Rates> pAmedusRates = null, int CountryID = 0)
        {
            long        PropId         = BLayer.Accommodation.GetPropertyId(bookingInfo[0].AccommodationId);
            decimal     tax            = BLayer.PropertyTax.GetTotalTax(PropId);
            long        InventoryAPIID = BLayer.Accommodation.GetInventoryAPIType(PropId);
            int         result         = 0;
            List <long> accIds         = new List <long>();

            //long PId = BLayer.Bookings.GetPropertyId(bookingId);


            foreach (CLayer.BookingAccDetails t in bookingInfo)
            {
                accIds.Add(t.AccommodationId);
            }
            //List<CLayer.Tax> taxes = BLayer.Tax.GetAll()
            List <CLayer.Rates> accrates;

            CLayer.Role.Roles rle = BLayer.User.GetRole(userId);
            if (rle == CLayer.Role.Roles.CorporateUser || rle == CLayer.Role.Roles.Corporate)
            {
                accrates = BLayer.Rate.GetTotalRates(accIds, checkIn, checkOut, CLayer.Role.Roles.Corporate, userId, InventoryAPIID);
            }
            else
            {
                accrates = BLayer.Rate.GetTotalRates(accIds, checkIn, checkOut, CLayer.Role.Roles.Customer, userId, InventoryAPIID);
            }

            int cnt, i;


            //Amadeus Rates
            int InventoryAPIType = BLayer.Property.GetInventoryAPITypeId(PropId);

            List <CLayer.Rates> AmedusRatesList = new List <CLayer.Rates>();

            if (InventoryAPIType == (int)CLayer.ObjectStatus.InventoryAPIType.Amadeus)
            {
                accrates = pAmedusRates;
            }
            //Amadeus Rates end

            cnt = bookingInfo.Count;
            CLayer.Booking bk  = new CLayer.Booking();
            CLayer.Booking bk1 = new CLayer.Booking();
            bk.BookingDate      = DateTime.Today;
            bk.CheckIn          = checkIn;
            bk.CheckOut         = checkOut;
            bk.NoOfDays         = (checkOut - checkIn).Days;
            bk.Status           = (int)CLayer.ObjectStatus.BookingStatus.Cart;
            bk.BookingId        = bookingId;
            bk.ByUserId         = userId;
            bk.InventoryAPIType = BLayer.Property.GetInventoryAPITypeId(PropId);

            bk.BookingId = BLayer.Bookings.SaveInitialData(bk);
            // CLayer.Role.Roles rle = (CLayer.Role.Roles) BLayer.User.GetRole(userId);
            BLayer.Bookings.SetPaymentRefNo(bk.BookingId, rle, orderNo);


            //*Added by rahul for saving initial data to offline bookings on 28/02/20
            bk1.BookingDate      = DateTime.Today;
            bk1.CheckIn          = checkIn;
            bk1.CheckOut         = checkOut;
            bk1.NoOfDays         = (checkOut - checkIn).Days;
            bk1.Status           = (int)CLayer.ObjectStatus.BookingStatus.Cart;
            bk1.BookingId        = offlinebookingId;
            bk1.ByUserId         = userId;
            bk1.InventoryAPIType = BLayer.Property.GetInventoryAPITypeId(PropId);
            bk1.BookingId        = BLayer.Bookings.SaveOfflineBookingInitialData(bk1);



            //*Added by rahul on 28/02/2020 for storing order number in offlinebookings
            BLayer.Bookings.SetOfflinePaymentRefNo(bk1.BookingId, rle, orderNo);
            //****

            bookingId = bk.BookingId;
            List <CLayer.BookingItem> items   = new List <CLayer.BookingItem>();
            List <CLayer.BookingItem> ofitems = new List <CLayer.BookingItem>();

            CLayer.BookingItem bitem;
            CLayer.BookingItem ofbitem;
            DateTime           lockIn = DateTime.Now;
            int minutes = 0;

            int.TryParse(BLayer.Settings.GetValue(CLayer.Settings.LOCKIN_TIME), out minutes);
            lockIn = lockIn.AddMinutes(minutes);



            //// change no of accommodation for external inventory
            //int InventoryAPIType = BLayer.Property.GetInventoryAPITypeId(PropId);
            //List<CLayer.Rates> newaccrates = new List<CLayer.Rates>();
            //if (InventoryAPIType != 0)
            //{
            //    if (accrates.Count > 0)
            //    {
            //        string HotelId = BLayer.Property.GetHotelId(PropId);
            //        if (HotelId != null && HotelId != "")
            //        {
            //            foreach (CLayer.Rates item in accrates)
            //            {
            //                string RoomId = BLayer.Accommodation.GetRoomId(item.AccommodationId);
            //                if (RoomId != null && RoomId != "")
            //                {
            //                    if (item.NoofAcc < 1)
            //                    {
            //                        item.NoofAcc = 10;
            //                    }
            //                }
            //                newaccrates.Add(item);
            //            }
            //        }
            //    }
            //}
            //if (newaccrates.Count == 0)
            //{
            //    newaccrates = accrates;
            //}


            CLayer.BookingItem bGDSCountryItem = new CLayer.BookingItem();

            for (i = 0; i < cnt; i++)
            {
                foreach (CLayer.Rates rt in accrates)
                {
                    if (bookingInfo[i].AccommodationId == rt.AccommodationId)
                    {
                        if (bookingInfo[i].AccCount <= rt.NoofAcc && bookingInfo[i].AccCount != 0)
                        {
                            bitem                    = new CLayer.BookingItem();
                            bitem.CheckIn            = checkIn;
                            bitem.CheckOut           = checkOut;
                            bitem.BookingId          = bookingId;
                            bitem.AccommodationId    = rt.AccommodationId;
                            bitem.ForUser            = userId;
                            bitem.NoOfAccommodations = bookingInfo[i].AccCount;
                            bitem.NoOfAdults         = bookingInfo[i].Adults;
                            bitem.NoOfChildren       = bookingInfo[i].Children;
                            bitem.NoOfGuests         = bookingInfo[i].Guest;
                            bitem.LockInTime         = lockIn;
                            bitem.Status             = (int)CLayer.ObjectStatus.StatusType.Active;
                            bitem.GDSCountry         = CountryID;
                            items.Add(bitem);
                            bitem.BookingItemId = BLayer.BookingItem.SaveIntialData(bitem);
                            bGDSCountryItem     = bitem;


                            //*Added by rahul for Saving BookingDetails data on 28/02/20
                            ofbitem                    = new CLayer.BookingItem();
                            ofbitem.CheckIn            = checkIn;
                            ofbitem.CheckOut           = checkOut;
                            ofbitem.BookingId          = bk1.BookingId;
                            ofbitem.AccommodationId    = rt.AccommodationId;
                            ofbitem.ForUser            = userId;
                            ofbitem.NoOfAccommodations = bookingInfo[i].AccCount;
                            ofbitem.NoOfAdults         = bookingInfo[i].Adults;
                            ofbitem.NoOfChildren       = bookingInfo[i].Children;
                            ofbitem.NoOfGuests         = bookingInfo[i].Guest;
                            ofbitem.LockInTime         = lockIn;
                            ofbitem.Status             = (int)CLayer.ObjectStatus.StatusType.Active;
                            ofbitem.GDSCountry         = CountryID;
                            ofitems.Add(ofbitem);
                            ofbitem.OfflineBookingItemId = BLayer.BookingItem.SaveIntialBookingDetailsData(ofbitem);
                        }
                    }
                }
            }

            //update gdscountry in booking items
            BLayer.BookingItem.SaveGDSCountry(bGDSCountryItem);


            //calculate tax and amount for each accommodation
            //considering booking is for accommodations in a single property
            long propertyId         = BLayer.Accommodation.GetPropertyId(accrates[0].AccommodationId);
            List <CLayer.Tax> taxes = BLayer.Tax.GetAllForProperty(propertyId, checkIn, bk.BookingDate);
            List <CLayer.Tax> onTotalAmountTaxes = taxes.Where(m => m.OnTotalAmount == true).OrderBy(m => m.PriceUpto).ToList();
            List <CLayer.Tax> ordinaryTaxes      = taxes.Where(m => m.OnTotalAmount == false).OrderBy(m => m.PriceUpto).ToList();
            decimal           totalTax           = 0;
            decimal           guestRate          = 0;
            decimal           tt         = 0;
            StringBuilder     ratApplied = new StringBuilder();

            foreach (CLayer.BookingItem item in items)
            {
                foreach (CLayer.Rates rat in accrates)
                {
                    if (item.AccommodationId == rat.AccommodationId)
                    {
                        totalTax = 0;
                        ratApplied.Clear();
                        guestRate = ((rat.GuestRate + rat.TotalGuestTax) * item.NoOfGuests);
                        if (InventoryAPIType == (int)CLayer.ObjectStatus.InventoryAPIType.Amadeus)
                        {
                            item.TotalAmount = (rat.Amount + rat.TotalRateTax);
                        }
                        else
                        {
                            item.TotalAmount = ((rat.Amount + rat.TotalRateTax) * item.NoOfAccommodations) + guestRate;
                        }

                        totalTax    = BLayer.Tax.GetTaxOnAmount(ordinaryTaxes, item.TotalAmount, item.BookingItemId);
                        totalTax    = totalTax + BLayer.Tax.GetTaxOnAmount(onTotalAmountTaxes, item.TotalAmount + totalTax, item.BookingItemId);
                        item.Amount = Math.Round((rat.SupplierRate * item.NoOfAccommodations) + (rat.SupplierGuestRate * item.NoOfGuests));
                        if (rat.RateChanges != null && rat.RateChanges.Count > 0)
                        {
                            for (int ri = 0; ri < rat.RateChanges.Count; ri++)
                            {
                                if (ratApplied.Length > 0)
                                {
                                    ratApplied.Append(",");
                                }
                                ratApplied.Append(rat.RateChanges[ri].StartDate);
                                ratApplied.Append("#");
                                tt = (decimal)Math.Round(rat.RateChanges[ri].DayTotalCharge + (rat.RateChanges[ri].DayTotalGuestCharge * item.NoOfGuests));
                                ratApplied.Append(tt);
                            }
                            tt = (decimal)Math.Round(rat.RateChanges[0].DayTotalCharge + (rat.RateChanges[0].DayTotalGuestCharge * item.NoOfGuests));
                        }
                        else
                        {
                            tt = 0;
                        }
                        item.FirstDayCharge = tt;
                        item.TotalTax       = totalTax;
                        if (InventoryAPIType == (int)CLayer.ObjectStatus.InventoryAPIType.Amadeus)
                        {
                            item.TotalRateTax  = Math.Round(rat.TotalRateTax);
                            item.TotalGuestTax = Math.Round(rat.TotalGuestTax);
                        }
                        else
                        {
                            item.TotalRateTax  = Math.Round(rat.TotalRateTax * item.NoOfAccommodations);
                            item.TotalGuestTax = Math.Round(rat.TotalGuestTax * item.NoOfGuests);
                        }

                        // include tax with amount
                        item.TotalAmount = Math.Round(item.TotalAmount);
                        item.GuestAmount = Math.Round(guestRate);

                        item.RatesApplied            = ratApplied.ToString();
                        item.CorporateDiscountAmount = rat.CorpDiscount;
                        item.CommissionSB            = rat.SBMarkup;
                        if (item.NoOfGuests > 0)
                        {
                            item.CommissionSB            += rat.SBGuestMarkup;
                            item.CorporateDiscountAmount += rat.CorpGuestDiscount;
                        }



                        BLayer.BookingItem.SaveAmounts(item);

                        // save tax rate for each bookingitemid

                        long BItId             = item.BookingItemId;
                        long BookId            = item.BookingId;
                        long Pid               = BLayer.Accommodation.GetPropertyId(rat.AccommodationId);
                        List <CLayer.Tax> tax1 = BLayer.Tax.GetPropertyTaxById(Pid);

                        foreach (CLayer.Tax tx in tax1)
                        {
                            decimal TaxAmountBItem = Math.Round(((tx.Rate / tax) * ((rat.TotalRateTax * item.NoOfAccommodations) + (rat.TotalGuestTax * item.NoOfGuests))));
                            BLayer.BookingItem.SaveBookingtaxdata(BookId, BItId, tx.TaxTitleId, tx.Rate, TaxAmountBItem);
                        }



                        if (rat.AppliedOffers != null && rat.AppliedOffers.Count > 0)
                        {
                            foreach (CLayer.BookingItemOffer bo in rat.AppliedOffers)
                            {
                                BLayer.BookingItem.AddOffer(item.BookingItemId, bo.OfferId, bo.OfferTitle);
                            }
                        }
                    }
                }
            }
            BLayer.Bookings.UpdateAmounts(bookingId);

            //***This is for saving rates for offline bookings - booking details
            foreach (CLayer.BookingItem item in ofitems)
            {
                foreach (CLayer.Rates rat in accrates)
                {
                    if (item.AccommodationId == rat.AccommodationId)
                    {
                        totalTax = 0;
                        ratApplied.Clear();
                        guestRate = ((rat.GuestRate + rat.TotalGuestTax) * item.NoOfGuests);
                        if (InventoryAPIType == (int)CLayer.ObjectStatus.InventoryAPIType.Amadeus)
                        {
                            item.TotalAmount = (rat.Amount + rat.TotalRateTax);
                        }
                        else
                        {
                            item.TotalAmount = ((rat.Amount + rat.TotalRateTax) * item.NoOfAccommodations) + guestRate;
                        }

                        totalTax    = BLayer.Tax.GetTaxOnAmount(ordinaryTaxes, item.TotalAmount, item.OfflineBookingItemId);
                        totalTax    = totalTax + BLayer.Tax.GetTaxOnAmount(onTotalAmountTaxes, item.TotalAmount + totalTax, item.OfflineBookingItemId);
                        item.Amount = Math.Round((rat.SupplierRate * item.NoOfAccommodations) + (rat.SupplierGuestRate * item.NoOfGuests));
                        if (rat.RateChanges != null && rat.RateChanges.Count > 0)
                        {
                            for (int ri = 0; ri < rat.RateChanges.Count; ri++)
                            {
                                if (ratApplied.Length > 0)
                                {
                                    ratApplied.Append(",");
                                }
                                ratApplied.Append(rat.RateChanges[ri].StartDate);
                                ratApplied.Append("#");
                                tt = (decimal)Math.Round(rat.RateChanges[ri].DayTotalCharge + (rat.RateChanges[ri].DayTotalGuestCharge * item.NoOfGuests));
                                ratApplied.Append(tt);
                            }
                            tt = (decimal)Math.Round(rat.RateChanges[0].DayTotalCharge + (rat.RateChanges[0].DayTotalGuestCharge * item.NoOfGuests));
                        }
                        else
                        {
                            tt = 0;
                        }
                        item.FirstDayCharge = tt;
                        item.TotalTax       = totalTax;
                        if (InventoryAPIType == (int)CLayer.ObjectStatus.InventoryAPIType.Amadeus)
                        {
                            item.TotalRateTax  = Math.Round(rat.TotalRateTax);
                            item.TotalGuestTax = Math.Round(rat.TotalGuestTax);
                        }
                        else
                        {
                            item.TotalRateTax  = Math.Round(rat.TotalRateTax * item.NoOfAccommodations);
                            item.TotalGuestTax = Math.Round(rat.TotalGuestTax * item.NoOfGuests);
                        }

                        // include tax with amount
                        item.TotalAmount = Math.Round(item.TotalAmount);
                        item.GuestAmount = Math.Round(guestRate);

                        item.RatesApplied            = ratApplied.ToString();
                        item.CorporateDiscountAmount = rat.CorpDiscount;
                        item.CommissionSB            = rat.SBMarkup;
                        item.SellRateAfterTax        = rat.SellRateAfterTax;
                        item.SellRateBeforeTax       = rat.SellRateBeforeTax;
                        item.PurchaseRateAfterTax    = rat.PurchaseRateAfterTax;
                        item.PurchaseRateBeforeTax   = rat.PurchaseRateBeforeTax;
                        if (item.NoOfGuests > 0)
                        {
                            item.CommissionSB            += rat.SBGuestMarkup;
                            item.CorporateDiscountAmount += rat.CorpGuestDiscount;
                        }



                        BLayer.BookingItem.SaveBookingDetailsAmounts(item);

                        // save tax rate for each bookingitemid

                        long BItId             = item.BookingItemId;
                        long BookId            = item.BookingId;
                        long Pid               = BLayer.Accommodation.GetPropertyId(rat.AccommodationId);
                        List <CLayer.Tax> tax1 = BLayer.Tax.GetPropertyTaxById(Pid);

                        foreach (CLayer.Tax tx in tax1)
                        {
                            decimal TaxAmountBItem = Math.Round(((tx.Rate / tax) * ((rat.TotalRateTax * item.NoOfAccommodations) + (rat.TotalGuestTax * item.NoOfGuests))));
                            BLayer.BookingItem.SaveOfflineBookingtaxdata(BookId, BItId, tx.TaxTitleId, tx.Rate, TaxAmountBItem);
                        }



                        if (rat.AppliedOffers != null && rat.AppliedOffers.Count > 0)
                        {
                            foreach (CLayer.BookingItemOffer bo in rat.AppliedOffers)
                            {
                                BLayer.BookingItem.AddOffer(item.BookingItemId, bo.OfferId, bo.OfferTitle);
                            }
                        }
                    }
                }
            }

            BLayer.Bookings.UpdateOfflinebookingAmounts(bk1.BookingId);



            //add paypal commision outside india users
            long UserId = BLayer.Bookings.GetBookedByUserId(bookingId);

            CLayer.User dat = BLayer.User.GetCountrUser(UserId);
            string      ct  = dat.Country;

            if (ct != "India")
            {
                decimal paypalcomm         = Convert.ToDecimal(BLayer.Settings.GetValue(CLayer.Settings.PAYPAL_COMMISSION));
                decimal GrandTotalAmt      = Math.Round(BLayer.Bookings.GetTotal(bookingId));
                decimal TotalAmtIncPayComm = Math.Round(GrandTotalAmt + (paypalcomm * GrandTotalAmt / 100));
                BLayer.Bookings.SavePaypalComm((GrandTotalAmt * paypalcomm / 100), bookingId);
                BLayer.Bookings.UpdateTotalAmtIncPayComm(TotalAmtIncPayComm, bookingId);
                BLayer.Bookings.UpdateOfflineBookingTotalAmtIncPayComm(TotalAmtIncPayComm, bk1.BookingId);
            }



            //PartialPaymentbooking

            CLayer.Role.Roles UsertypeId        = BLayer.User.GetRole(userId);
            decimal           Partialamountperc = 0;

            if (UsertypeId == CLayer.Role.Roles.Customer)
            {
                Partialamountperc = Math.Round(BLayer.Property.GetPropertyB2CpartialamountPerc(propertyId));
            }
            if (UsertypeId == CLayer.Role.Roles.Administrator || UsertypeId == CLayer.Role.Roles.Corporate || UsertypeId == CLayer.Role.Roles.Affiliate || UsertypeId == CLayer.Role.Roles.Supplier || UsertypeId == CLayer.Role.Roles.CorporateUser)
            {
                Partialamountperc = Math.Round(BLayer.Property.GetPropertyB2BpartialamountPerc(propertyId));
            }

            decimal Partialamount   = Math.Round((Partialamountperc * Math.Round(BLayer.Bookings.GetTotal(bookingId))) / 100);
            decimal remainingamount = Math.Round(Math.Round(BLayer.Bookings.GetTotal(bookingId)) - Partialamount);

            BLayer.BookingItem.SavePartialAmount(bookingId, Partialamountperc, Partialamount, remainingamount);

            result = 1;

            return(result);
        }
Ejemplo n.º 15
0
        //********Ends Here*********
        public List <CLayer.BookingItem> GetAllBookingDetailsForApproval(long bookingId, bool IsAmedus = false)
        {
            List <CLayer.BookingItem> result = new List <CLayer.BookingItem>();
            List <DataPlug.Parameter> param  = new List <DataPlug.Parameter>();

            try
            {
                param.Add(Connection.GetParameter("pBookingId", DataPlug.DataType._BigInt, bookingId));
                DataTable dt;
                if (IsAmedus)
                {
                    dt = Connection.GetTable("booking_GetAllItemsamedusForApproval", param);
                }
                else
                {
                    dt = Connection.GetTable("booking_GetAllItems", param);
                }


                CLayer.BookingItem bi;
                foreach (DataRow dr in dt.Rows)
                {
                    bi = new CLayer.BookingItem();
                    bi.BookingItemId      = Connection.ToLong(dr["BookingItemId"]);
                    bi.AccommodationId    = Connection.ToLong(dr["AccommodationId"]);
                    bi.BookingId          = Connection.ToLong(dr["BookingId"]);
                    bi.AccommodationTitle = Connection.ToString(dr["AccommodationType"]);
                    bi.CheckIn            = Connection.ToDate(dr["CheckIn"]);
                    bi.CheckOut           = Connection.ToDate(dr["CheckOut"]);
                    bi.NoOfAccommodations = Connection.ToInteger(dr["NoOfAccommodations"]);
                    bi.NoOfAdults         = Connection.ToInteger(dr["NoOfAdults"]);
                    bi.NoOfChildren       = Connection.ToInteger(dr["NoOfChildren"]);
                    bi.NoOfGuests         = Connection.ToInteger(dr["NoOfGuests"]);
                    bi.NoOfDays           = Connection.ToInteger(dr["NoOfDays"]);
                    bi.Amount             = Connection.ToDecimal(dr["Amount"]);
                    bi.PropertyTitle      = Connection.ToString(dr["PropertyTitle"]);
                    bi.PropertyAddress    = Connection.ToString(dr["PropertyAddress"]);
                    bi.PropertyId         = Connection.ToLong(dr["PropertyId"]);
                    //bi.ForUserFirstName = Connection.ToString(dr["ForUserFirstName"]);
                    //bi.ForUserLastName = Connection.ToString(dr["ForUserLastName"]);
                    // bi.ForUserEmail = Connection.ToString(dr["ForUserEmail"]);
                    // bi.ForUserMobile = Connection.ToString(dr["ForUserMobile"]);
                    bi.TotalAmount        = Connection.ToDecimal(dr["TotalAmount"]);
                    bi.TotalTax           = Connection.ToDecimal(dr["TotalTax"]);
                    bi.AccommodationTypeT = Connection.ToString(dr["AccommodationType"]);
                    bi.StayCategoryT      = Connection.ToString(dr["StayCategory"]);
                    bi.DailyRate          = Connection.ToDecimal(dr["DailyRate"]);
                    bi.FirstDayCharge     = Connection.ToDecimal(dr["FirstDayCharge"]);
                    //    bi.CommissionSB = Connection.ToDecimal(dr["TotalComForSB"]);
                    bi.CommissionSB            = Connection.ToDecimal(dr["MarkupForSB"]);
                    bi.TotalCommissionforother = Connection.ToDecimal(dr["TotalComForOther"]);
                    bi.CorporateDiscountAmount = Connection.ToDecimal(dr["B2BDiscount"]);
                    bi.HotelConfirmNumber      = Connection.ToString(dr["HotelConfirmNumber"]);
                    bi.TotalRateTax            = Connection.ToDecimal(dr["TotalRateTax"]);
                    bi.CountryName             = Connection.ToString(dr["CountryName"]);
                    bi.cityName = Connection.ToString(dr["City"]);
                    if (IsAmedus)
                    {
                        bi.ApproverName  = Connection.ToString(dr["ApproverName"]);
                        bi.RejectionNote = Connection.ToString(dr["RejectionNote"]);
                    }


                    result.Add(bi);
                }
            }
            catch (Exception ex)
            {
                result = null;
            }

            return(result);
        }
Ejemplo n.º 16
0
 //***Save Amount for offlinebookings bookingdetails
 //**Added by rahul on 29/02/20
 public static void SaveBookingDetailsAmounts(CLayer.BookingItem data)
 {
     DataLayer.BookingItem bi = new DataLayer.BookingItem();
     bi.SaveBookingDetailsAmounts(data);
 }
Ejemplo n.º 17
0
        public static int BookAccommodations(List <CLayer.BookingAccDetails> bookingInfo, DateTime checkIn, DateTime checkOut, long userId, long bookingId, string orderNo = "")
        {
            long        PropId           = BLayer.Accommodation.GetPropertyId(bookingInfo[0].AccommodationId);
            decimal     tax              = BLayer.PropertyTax.GetTotalTax(PropId);
            long        InventoryAPIType = BLayer.Accommodation.GetInventoryAPIType(PropId);
            int         result           = 0;
            List <long> accIds           = new List <long>();

            foreach (CLayer.BookingAccDetails t in bookingInfo)
            {
                accIds.Add(t.AccommodationId);
            }

            List <CLayer.Rates> accrates;

            CLayer.Role.Roles rle = BLayer.User.GetRole(userId);
            if (rle == CLayer.Role.Roles.CorporateUser || rle == CLayer.Role.Roles.Corporate)
            {
                accrates = BLayer.Rate.GetTotalRates(accIds, checkIn, checkOut, CLayer.Role.Roles.Corporate, userId, InventoryAPIType);
            }
            else
            {
                accrates = BLayer.Rate.GetTotalRates(accIds, checkIn, checkOut, CLayer.Role.Roles.Customer, userId, InventoryAPIType);
            }

            int cnt, i;

            cnt = bookingInfo.Count;
            CLayer.Booking bk = new CLayer.Booking();
            bk.BookingDate = DateTime.Today;
            bk.CheckIn     = checkIn;
            bk.CheckOut    = checkOut;
            bk.NoOfDays    = (checkOut - checkIn).Days;
            bk.Status      = (int)CLayer.ObjectStatus.BookingStatus.Offline;
            bk.BookingId   = bookingId;
            bk.ByUserId    = userId;
            bk.BookingId   = BLayer.Bookings.SaveInitialDataForOfflinBeforConfirm(bk);


            BLayer.Bookings.SetPaymentRefNo(bk.BookingId, rle, orderNo);
            bookingId = bk.BookingId;
            List <CLayer.BookingItem> items = new List <CLayer.BookingItem>();

            CLayer.BookingItem bitem;
            DateTime           lockIn = DateTime.Now;
            int minutes = 0;

            int.TryParse(BLayer.Settings.GetValue(CLayer.Settings.LOCKIN_TIME), out minutes);
            lockIn = lockIn.AddMinutes(minutes);


            //Delete All Booking Items Befor Modify to New Booking by booking id

            BLayer.BookingItem.DeleteAllItemsByBookingId(bookingId);
            BLayer.BookingItem.DeleteAllTaxItemsByBookingId(bookingId);

            for (i = 0; i < cnt; i++)
            {
                foreach (CLayer.Rates rt in accrates)
                {
                    if (bookingInfo[i].AccommodationId == rt.AccommodationId)
                    {
                        if (bookingInfo[i].AccCount <= rt.NoofAcc && bookingInfo[i].AccCount != 0)
                        {
                            bitem                    = new CLayer.BookingItem();
                            bitem.CheckIn            = checkIn;
                            bitem.CheckOut           = checkOut;
                            bitem.BookingId          = bookingId;
                            bitem.AccommodationId    = rt.AccommodationId;
                            bitem.ForUser            = userId;
                            bitem.NoOfAccommodations = bookingInfo[i].AccCount;
                            bitem.NoOfAdults         = bookingInfo[i].Adults;
                            bitem.NoOfChildren       = bookingInfo[i].Children;
                            bitem.NoOfGuests         = bookingInfo[i].Guest;

                            bitem.Cus_SupplierAmount   = bookingInfo[i].Cus_SupplierAmount;
                            bitem.Cus_TotalAmount      = bookingInfo[i].Cus_TotalAmount;
                            bitem.Cus_TaxAmount        = bookingInfo[i].Cus_TaxAmount;
                            bitem.Cus_GrandTotalAmount = bookingInfo[i].Cus_GrandTotalAmount;

                            bitem.LockInTime = lockIn;
                            bitem.Status     = (int)CLayer.ObjectStatus.StatusType.Active;
                            items.Add(bitem);
                            bitem.BookingItemId = BLayer.BookingItem.SaveIntialData(bitem);
                        }
                    }
                }
            }

            long propertyId         = BLayer.Accommodation.GetPropertyId(accrates[0].AccommodationId);
            List <CLayer.Tax> taxes = BLayer.Tax.GetAllForProperty(propertyId, checkIn, bk.BookingDate);
            List <CLayer.Tax> onTotalAmountTaxes = taxes.Where(m => m.OnTotalAmount == true).OrderBy(m => m.PriceUpto).ToList();
            List <CLayer.Tax> ordinaryTaxes      = taxes.Where(m => m.OnTotalAmount == false).OrderBy(m => m.PriceUpto).ToList();
            decimal           totalTax           = 0;
            decimal           guestRate          = 0;
            decimal           tt         = 0;
            StringBuilder     ratApplied = new StringBuilder();

            foreach (CLayer.BookingItem item in items)
            {
                foreach (CLayer.Rates rat in accrates)
                {
                    if (item.AccommodationId == rat.AccommodationId)
                    {
                        totalTax = 0;
                        ratApplied.Clear();
                        guestRate        = ((rat.GuestRate + rat.TotalGuestTax) * item.NoOfGuests);
                        item.TotalAmount = ((rat.Amount + rat.TotalRateTax) * item.NoOfAccommodations) + guestRate;
                        totalTax         = BLayer.Tax.GetTaxOnAmount(ordinaryTaxes, item.TotalAmount, item.BookingItemId);
                        totalTax         = totalTax + BLayer.Tax.GetTaxOnAmount(onTotalAmountTaxes, item.TotalAmount + totalTax, item.BookingItemId);
                        item.Amount      = Math.Round((rat.SupplierRate * item.NoOfAccommodations) + (rat.SupplierGuestRate * item.NoOfGuests));
                        if (rat.RateChanges != null && rat.RateChanges.Count > 0)
                        {
                            for (int ri = 0; ri < rat.RateChanges.Count; ri++)
                            {
                                if (ratApplied.Length > 0)
                                {
                                    ratApplied.Append(",");
                                }
                                ratApplied.Append(rat.RateChanges[ri].StartDate);
                                ratApplied.Append("#");
                                tt = (decimal)Math.Round(rat.RateChanges[ri].DayTotalCharge + (rat.RateChanges[ri].DayTotalGuestCharge * item.NoOfGuests));
                                ratApplied.Append(tt);
                            }
                            tt = (decimal)Math.Round(rat.RateChanges[0].DayTotalCharge + (rat.RateChanges[0].DayTotalGuestCharge * item.NoOfGuests));
                        }
                        else
                        {
                            tt = 0;
                        }
                        item.FirstDayCharge = tt;
                        item.TotalTax       = totalTax;
                        item.TotalRateTax   = Math.Round(rat.TotalRateTax * item.NoOfAccommodations);
                        item.TotalGuestTax  = Math.Round(rat.TotalGuestTax * item.NoOfGuests);
                        // include tax with amount
                        item.TotalAmount = Math.Round(item.TotalAmount);
                        item.GuestAmount = Math.Round(guestRate);

                        item.RatesApplied            = ratApplied.ToString();
                        item.CorporateDiscountAmount = rat.CorpDiscount;
                        item.CommissionSB            = rat.SBMarkup;
                        if (item.NoOfGuests > 0)
                        {
                            item.CommissionSB            += rat.SBGuestMarkup;
                            item.CorporateDiscountAmount += rat.CorpGuestDiscount;
                        }


                        BLayer.BookingItem.SaveAmounts(item);
                        BLayer.BookingItem.UpdateCustomBook(item.BookingItemId, 0);

                        //update custom amount
                        if (item.Cus_GrandTotalAmount > 0)
                        {
                            item.Amount                  = item.Cus_GrandTotalAmount;
                            item.TotalAmount             = item.Cus_GrandTotalAmount;
                            item.TotalTax                = item.Cus_TaxAmount;
                            item.TotalRateTax            = item.Cus_TaxAmount;
                            item.CommissionSB            = item.Cus_TotalAmount - item.Cus_SupplierAmount;
                            item.GuestAmount             = 0;
                            item.TotalGuestTax           = 0;
                            item.CorporateDiscountAmount = 0;
                            BLayer.BookingItem.SaveAmounts(item);
                            BLayer.BookingItem.UpdateCustomBook(item.BookingItemId, 1);
                        }



                        // save tax rate for each bookingitemid

                        long BItId             = item.BookingItemId;
                        long BookId            = item.BookingId;
                        long Pid               = BLayer.Accommodation.GetPropertyId(rat.AccommodationId);
                        List <CLayer.Tax> tax1 = BLayer.Tax.GetPropertyTaxById(Pid);

                        if (item.Cus_GrandTotalAmount > 0)
                        {
                        }
                        else
                        {
                            foreach (CLayer.Tax tx in tax1)
                            {
                                decimal TaxAmountBItem = Math.Round(((tx.Rate / tax) * ((rat.TotalRateTax * item.NoOfAccommodations) + (rat.TotalGuestTax * item.NoOfGuests))));
                                BLayer.BookingItem.SaveBookingtaxdata(BookId, BItId, tx.TaxTitleId, tx.Rate, TaxAmountBItem);
                            }
                            if (rat.AppliedOffers != null && rat.AppliedOffers.Count > 0)
                            {
                                foreach (CLayer.BookingItemOffer bo in rat.AppliedOffers)
                                {
                                    BLayer.BookingItem.AddOffer(item.BookingItemId, bo.OfferId, bo.OfferTitle);
                                }
                            }
                        }
                    }
                }
            }


            BLayer.Bookings.UpdateAmounts(bookingId);


            //add paypal commision outside india users
            long UserId = BLayer.Bookings.GetBookedByUserId(bookingId);

            CLayer.User dat = BLayer.User.GetCountrUser(UserId);
            string      ct  = dat.Country;

            if (ct != "India")
            {
                decimal paypalcomm         = Convert.ToDecimal(BLayer.Settings.GetValue(CLayer.Settings.PAYPAL_COMMISSION));
                decimal GrandTotalAmt      = Math.Round(BLayer.Bookings.GetTotal(bookingId));
                decimal TotalAmtIncPayComm = Math.Round(GrandTotalAmt + (paypalcomm * GrandTotalAmt / 100));
                BLayer.Bookings.SavePaypalComm((GrandTotalAmt * paypalcomm / 100), bookingId);
                BLayer.Bookings.UpdateTotalAmtIncPayComm(TotalAmtIncPayComm, bookingId);
            }



            //PartialPaymentbooking

            CLayer.Role.Roles UsertypeId        = BLayer.User.GetRole(userId);
            decimal           Partialamountperc = 0;

            if (UsertypeId == CLayer.Role.Roles.Customer)
            {
                Partialamountperc = Math.Round(BLayer.Property.GetPropertyB2CpartialamountPerc(propertyId));
            }
            if (UsertypeId == CLayer.Role.Roles.Administrator || UsertypeId == CLayer.Role.Roles.Corporate || UsertypeId == CLayer.Role.Roles.Affiliate || UsertypeId == CLayer.Role.Roles.Supplier || UsertypeId == CLayer.Role.Roles.CorporateUser)
            {
                Partialamountperc = Math.Round(BLayer.Property.GetPropertyB2BpartialamountPerc(propertyId));
            }

            decimal Partialamount   = Math.Round((Partialamountperc * Math.Round(BLayer.Bookings.GetTotal(bookingId))) / 100);
            decimal remainingamount = Math.Round(Math.Round(BLayer.Bookings.GetTotal(bookingId)) - Partialamount);

            BLayer.BookingItem.SavePartialAmount(bookingId, Partialamountperc, Partialamount, remainingamount);

            result = 1;

            return(result);
        }
Ejemplo n.º 18
0
        public static void  SaveGDSCountry(CLayer.BookingItem data)
        {
            DataLayer.BookingItem bi = new DataLayer.BookingItem();

            bi.SaveGDSCountry(data);
        }
Ejemplo n.º 19
0
 public static void UpdateGDSCurrencyDetails(CLayer.BookingItem pBookingItem)
 {
     DataLayer.BookingItem bi = new DataLayer.BookingItem();
     bi.UpdateGDSCurrencyDetails(pBookingItem);
 }