-
Notifications
You must be signed in to change notification settings - Fork 4
/
FixedRateTaxProvider.cs
80 lines (71 loc) · 2.82 KB
/
FixedRateTaxProvider.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
using System.Web.Routing;
using Nop.Core.Plugins;
using Nop.Services.Configuration;
using Nop.Services.Localization;
using Nop.Services.Tax;
namespace Nop.Plugin.Tax.FixedRate
{
/// <summary>
/// Fixed rate tax provider
/// </summary>
public class FixedRateTaxProvider : BasePlugin, ITaxProvider
{
private readonly ISettingService _settingService;
public FixedRateTaxProvider(ISettingService settingService)
{
this._settingService = settingService;
}
/// <summary>
/// Gets tax rate
/// </summary>
/// <param name="calculateTaxRequest">Tax calculation request</param>
/// <returns>Tax</returns>
public CalculateTaxResult GetTaxRate(CalculateTaxRequest calculateTaxRequest)
{
var result = new CalculateTaxResult()
{
TaxRate = GetTaxRate(calculateTaxRequest.TaxCategoryId)
};
return result;
}
/// <summary>
/// Gets a tax rate
/// </summary>
/// <param name="taxCategoryId">The tax category identifier</param>
/// <returns>Tax rate</returns>
protected decimal GetTaxRate(int taxCategoryId)
{
decimal rate = this._settingService.GetSettingByKey<decimal>(string.Format("Tax.TaxProvider.FixedRate.TaxCategoryId{0}", taxCategoryId));
return rate;
}
/// <summary>
/// Gets a route for provider configuration
/// </summary>
/// <param name="actionName">Action name</param>
/// <param name="controllerName">Controller name</param>
/// <param name="routeValues">Route values</param>
public void GetConfigurationRoute(out string actionName, out string controllerName, out RouteValueDictionary routeValues)
{
actionName = "Configure";
controllerName = "TaxFixedRate";
routeValues = new RouteValueDictionary() { { "Namespaces", "Nop.Plugin.Tax.FixedRate.Controllers" }, { "area", null } };
}
public override void Install()
{
//locales
this.AddOrUpdatePluginLocaleResource("Plugins.Tax.FixedRate.Fields.TaxCategoryName", "Tax category");
this.AddOrUpdatePluginLocaleResource("Plugins.Tax.FixedRate.Fields.Rate", "Rate");
base.Install();
}
/// <summary>
/// Uninstall plugin
/// </summary>
public override void Uninstall()
{
//locales
this.DeletePluginLocaleResource("Plugins.Tax.FixedRate.Fields.TaxCategoryName");
this.DeletePluginLocaleResource("Plugins.Tax.FixedRate.Fields.Rate");
base.Uninstall();
}
}
}