示例#1
0
        /// <summary>
        /// Calculate tax on total amount
        /// Sorting by PriceUpTo is important
        /// </summary>
        /// <param name="propertyTaxes">Sorting by PriceUpTo is important</param>
        /// <param name="totalAmount"></param>
        /// <returns></returns>
        public static decimal GetTaxOnAmount(List <CLayer.Tax> propertyTaxes, decimal totalAmount, long bookingItemId)
        {
            decimal taxAmnt = 0;
            decimal calcTax = 0;
            int     i, cnt;

            CLayer.BookingItemTax itemTax = new CLayer.BookingItemTax();
            List <CLayer.Tax>     calcTaxes = propertyTaxes.Where(m => m.PriceUpto >= totalAmount || m.Unlimited == true).OrderBy(m => m.PriceUpto).ToList(); // .OrderByDescending(m => m.Unlimited).GroupBy(m =>m.TaxTitleId && m.Country && m.StateId && m.CityId).ToList();

            cnt = calcTaxes.Count;
            itemTax.BookingItemId = bookingItemId;
            for (i = 0; i < cnt; i++)
            {
                if (calcTaxes[i].Unlimited || totalAmount <= calcTaxes[i].PriceUpto)
                {
                    calcTax              = totalAmount * calcTaxes[i].Rate / 100;
                    itemTax.TaxId        = calcTaxes[i].TaxId;
                    itemTax.Amount       = (double)calcTax;
                    itemTax.Rate         = (double)calcTaxes[i].Rate;
                    itemTax.OnGrandTotal = calcTaxes[i].OnTotalAmount;

                    AddTaxForBookingItem(itemTax);
                    taxAmnt = taxAmnt + calcTax;
                }
            }

            return(Math.Round(taxAmnt, 2));
        }
示例#2
0
        public void AddTaxForBookingItem(CLayer.BookingItemTax data)
        {
            List <DataPlug.Parameter> param = new List <DataPlug.Parameter>();

            param.Add(Connection.GetParameter("pBookingItemId", DataPlug.DataType._BigInt, data.BookingItemId));
            param.Add(Connection.GetParameter("pTaxId", DataPlug.DataType._BigInt, data.TaxId));
            param.Add(Connection.GetParameter("pOnGrandTotal", DataPlug.DataType._Bool, data.OnGrandTotal));
            param.Add(Connection.GetParameter("pRate", DataPlug.DataType._Decimal, data.Rate));
            param.Add(Connection.GetParameter("pAmount", DataPlug.DataType._Decimal, data.Amount));

            Connection.ExecuteQuery("BookingItemTax_AddTax", param);
        }
示例#3
0
        public List <CLayer.BookingItemTax> GetAllByBookingItem(long bookingItemId)
        {
            string sql = "SELECT tt.Title,bt.Rate,bt.Amount,bt.OnGrandTotal FROM bookingitem_tax bt INNER JOIN tax t ON bt.TaxId = t.TaxId ";

            sql = sql + " INNER JOIN taxtitle tt ON t.TaxTitleId = tt.TaxTitleId Where bt.BookingItemId=" + bookingItemId.ToString();
            DataTable dt = Connection.GetSQLTable(sql);
            List <CLayer.BookingItemTax> result = new List <CLayer.BookingItemTax>();

            CLayer.BookingItemTax temp;
            foreach (DataRow dr in dt.Rows)
            {
                temp              = new CLayer.BookingItemTax();
                temp.Title        = Connection.ToString(dr["Title"]);
                temp.OnGrandTotal = Connection.ToBoolean(dr["OnGrandTotal"]);
                temp.Amount       = Connection.ToDouble(dr["Amount"]);
                temp.Rate         = Connection.ToDouble(dr["Rate"]);
                result.Add(temp);
            }
            return(result);
        }
示例#4
0
 public static void AddTaxForBookingItem(CLayer.BookingItemTax data)
 {
     DataLayer.Tax task = new DataLayer.Tax();
     task.AddTaxForBookingItem(data);
 }