/// <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)); }
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); }
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); }
public static void AddTaxForBookingItem(CLayer.BookingItemTax data) { DataLayer.Tax task = new DataLayer.Tax(); task.AddTaxForBookingItem(data); }