public static decimal CalculateTax(OrderItem orderItem, TaxElement tax) { switch (tax.Type) { case RateType.LumpSum: return(tax.RegionalRates.Count > 0 ? tax.RegionalRates.First().Rate : tax.FederalRate); case RateType.Proportional: { decimal returnTax = tax.RegionalRates.Count > 0 ? tax.RegionalRates.First().Rate : tax.FederalRate; if (tax.ShowInPrice) { returnTax = returnTax * orderItem.Price * orderItem.Amount / (100.0M + returnTax); } else { returnTax = returnTax * orderItem.Price * orderItem.Amount / 100.0M; } return(returnTax); } default: return(0); //case RateType.Progressive: // //TODO: доделать работу с прогрессивной ставкой налога // return 0; } }
public static void CreateTax(TaxElement t) { SQLDataAccess.ExecuteNonQuery( "INSERT INTO [Catalog].[Tax]([Name], [Enabled], [ShowInPrice], [Rate]) VALUES (@name, @enabled, @showInPrice, @Rate)", CommandType.Text, new SqlParameter("@name", t.Name), new SqlParameter("@enabled", t.Enabled), new SqlParameter("@showInPrice", t.ShowInPrice), new SqlParameter("@Rate", t.Rate)); }
public static void UpdateTax(TaxElement t) { SQLDataAccess.ExecuteNonQuery( @"UPDATE [Catalog].[Tax] SET [Name] = @name, [Enabled] = @enabled, [ShowInPrice] = @showInPrice, [Rate] = @Rate WHERE [TaxId] = @TaxId", CommandType.Text, new SqlParameter("@TaxId", t.TaxId), new SqlParameter("@name", t.Name), new SqlParameter("@enabled", t.Enabled), new SqlParameter("@showInPrice", t.ShowInPrice), new SqlParameter("@Rate", t.Rate)); }
public bool Equals(TaxElement other) { if (ReferenceEquals(null, other)) { return(false); } if (ReferenceEquals(this, other)) { return(true); } return(other.TaxId == TaxId); }
public static void UpdateTax(TaxElement t) { using (var da = new SQLDataAccess()) { da.cmd.CommandText = @"UPDATE [Catalog].[Tax] SET [Name] = @name, [Enabled] = @enabled, [Priority] = @priority, [DependsOnAddress] = @dependsOnAddress, [ShowInPrice] = @showInPrice, [RegNumber] = @regNumber, [CountryID] = @countryId, [RateType] = @rateType, [FederalRate] = @federalRate WHERE [TaxId] = @TaxId"; da.cmd.CommandType = CommandType.Text; da.cmd.Parameters.Clear(); da.cmd.Parameters.AddWithValue("@TaxId", t.TaxId); da.cmd.Parameters.AddWithValue("@name", t.Name); da.cmd.Parameters.AddWithValue("@enabled", t.Enabled); da.cmd.Parameters.AddWithValue("@priority", t.Priority); da.cmd.Parameters.AddWithValue("@dependsOnAddress", (int)t.DependsOnAddress); da.cmd.Parameters.AddWithValue("@showInPrice", t.ShowInPrice); da.cmd.Parameters.AddWithValue("@regNumber", t.RegNumber ?? (object)DBNull.Value); da.cmd.Parameters.AddWithValue("@countryId", t.CountryID); da.cmd.Parameters.AddWithValue("@rateType", (int)t.Type); da.cmd.Parameters.AddWithValue("@federalRate", t.FederalRate); da.cnOpen(); da.cmd.ExecuteNonQuery(); t.RegionalRates.Any(); //DO NOT DELETE!!! предзагрузка региональных ставок da.cmd.CommandText = "DELETE FROM [Catalog].[TaxRegionRate] WHERE [TaxId] = @TaxId"; da.cmd.Parameters.Clear(); da.cmd.Parameters.AddWithValue("@TaxId", t.TaxId); da.cmd.ExecuteNonQuery(); da.cnClose(); if (t.RegionalRates.Count > 0) { da.cnOpen(); da.cmd.CommandText = "INSERT INTO [Catalog].[TaxRegionRate]([TaxId], [RegionID], [RegionRate]) VALUES (@TaxId, @regionId, @regionRate)"; foreach (var rr in t.RegionalRates) { da.cmd.Parameters.Clear(); da.cmd.Parameters.AddWithValue("@TaxId", t.TaxId); da.cmd.Parameters.AddWithValue("@regionId", rr.RegionId); da.cmd.Parameters.AddWithValue("@regionRate", rr.Rate); da.cmd.ExecuteNonQuery(); } da.cnClose(); } } }
private static TaxElement ReadTax(SqlDataReader reader) { var t = new TaxElement { TaxId = SQLDataHelper.GetInt(reader, "TaxId"), Enabled = SQLDataHelper.GetBoolean(reader, "Enabled"), Name = SQLDataHelper.GetString(reader, "Name"), Rate = SQLDataHelper.GetFloat(reader, "Rate"), ShowInPrice = SQLDataHelper.GetBoolean(reader, "ShowInPrice") }; return(t); }
private static float CalculateTax(float price, TaxElement tax) { float returnTax = tax.Rate; if (tax.ShowInPrice) { returnTax = returnTax * price / (100.0F + returnTax); } else { returnTax = returnTax * price / 100.0F; } return(returnTax); }
private static TaxElement ReadTax(SqlDataReader reader) { var t = new TaxElement { TaxId = SQLDataHelper.GetInt(reader, "TaxId"), CountryID = SQLDataHelper.GetInt(reader, "CountryID"), Enabled = SQLDataHelper.GetBoolean(reader, "Enabled"), DependsOnAddress = (TypeRateDepends)SQLDataHelper.GetInt(reader, "DependsOnAddress"), Name = SQLDataHelper.GetString(reader, "Name"), Priority = SQLDataHelper.GetInt(reader, "Priority"), FederalRate = SQLDataHelper.GetDecimal(reader, "FederalRate"), Type = (RateType)SQLDataHelper.GetInt(reader, "RateType"), RegNumber = SQLDataHelper.GetString(reader, "RegNumber"), ShowInPrice = SQLDataHelper.GetBoolean(reader, "ShowInPrice") }; return(t); }
public static void CreateTax(TaxElement t) { using (var da = new SQLDataAccess()) { da.cmd.CommandText = "INSERT INTO [Catalog].[Tax]([Name], [Enabled], [Priority], [DependsOnAddress], [ShowInPrice], [RegNumber], [CountryID], [RateType], [FederalRate]) VALUES (@name, @enabled, @priority, @dependsOnAddress, @showInPrice, @regNumber, @countryId, @rateType, @federalRate); SELECT scope_identity()"; da.cmd.CommandType = CommandType.Text; da.cmd.Parameters.Clear(); da.cmd.Parameters.AddWithValue("@name", t.Name); da.cmd.Parameters.AddWithValue("@enabled", t.Enabled); da.cmd.Parameters.AddWithValue("@priority", t.Priority); da.cmd.Parameters.AddWithValue("@dependsOnAddress", (int)t.DependsOnAddress); da.cmd.Parameters.AddWithValue("@showInPrice", t.ShowInPrice); da.cmd.Parameters.AddWithValue("@regNumber", t.RegNumber ?? (object)DBNull.Value); da.cmd.Parameters.AddWithValue("@countryId", t.CountryID); da.cmd.Parameters.AddWithValue("@rateType", (int)t.Type); da.cmd.Parameters.AddWithValue("@federalRate", t.FederalRate); da.cnOpen(); t.TaxId = SQLDataHelper.GetInt(da.cmd.ExecuteScalar()); da.cnClose(); if (t.RegionalRates != null) { da.cnOpen(); da.cmd.CommandText = "INSERT INTO [Catalog].[TaxRegionRate] ([TaxId], [RegionID], [RegionRate]) VALUES (@TaxId, @regionId, @regionRate)"; foreach (var rr in t.RegionalRates) { da.cmd.Parameters.Clear(); da.cmd.Parameters.AddWithValue("@TaxId", t.TaxId); da.cmd.Parameters.AddWithValue("@regionId", rr.RegionId); da.cmd.Parameters.AddWithValue("@regionRate", rr.Rate); da.cmd.ExecuteNonQuery(); } da.cnClose(); } } }