Esempio n. 1
0
        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;
            }
        }
Esempio n. 2
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));
 }
Esempio n. 3
0
 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));
 }
Esempio n. 4
0
 public bool Equals(TaxElement other)
 {
     if (ReferenceEquals(null, other))
     {
         return(false);
     }
     if (ReferenceEquals(this, other))
     {
         return(true);
     }
     return(other.TaxId == TaxId);
 }
Esempio n. 5
0
        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();
                }
            }
        }
Esempio n. 6
0
        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);
        }
Esempio n. 7
0
        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);
        }
Esempio n. 8
0
        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);
        }
Esempio n. 9
0
        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();
                }
            }
        }