private double CalculateTax(Product product) { double taxToApply = 0; BaseTax baseTax = new BaseTax(product); double calculatedBaseTax = baseTax.Calculate(); taxToApply += calculatedBaseTax; if (product.Category == ProductCategory.Other) { RegularTax regularTax = new RegularTax(product); double calculatedRegularTax = regularTax.Calculate(); taxToApply += calculatedRegularTax; } if (product.IsImported) { ImportTax importTax = new ImportTax(product); double calculatedImportTax = importTax.Calculate(); taxToApply += calculatedImportTax; } return(taxToApply); }
public void Calculate(BaseTax tax) { tax.Calculate(); }
public override PdxSublist GetHistoryFile() { var data = new PdxSublist(null, FileName); foreach (var core in Cores) { if (core != null) { data.KeyValuePairs.Add("add_core", core.CountryTag); } } if (Owner != null) { data.KeyValuePairs["owner"] = Owner.CountryTag; } if (ControllerTag != null) { data.AddValue("controller", ControllerTag); } if (Culture != null) { data.KeyValuePairs["culture"] = Culture; } if (Religion != null) { data.KeyValuePairs["religion"] = Religion; } data.BoolValues["hre"] = new List <bool>(); data.BoolValues["hre"].Add(IsHRE); data.AddValue("base_tax", BaseTax.ToString()); data.AddValue("base_production", BaseProduction.ToString()); data.AddValue("base_manpower", BaseManpower.ToString()); //todo: trade goods data.AddValue("is_city", (Owner != null) ? "yes" : "no"); if (LatentTradeGoods.Count != 0) { var latentGoods = new PdxSublist(); LatentTradeGoods.ForEach((good) => { latentGoods.AddValue(good); }); data.AddSublist("latent_trade_goods", latentGoods); } if (TradeGood != null) { data.AddValue("trade_goods", TradeGood); } if (CentreOfTradeWeight >= 1) { data.AddValue("center_of_trade", ((int)Math.Min(3, CentreOfTradeWeight)).ToString()); } foreach (var mod in Modifiers) { var modSub = new PdxSublist(); modSub.AddValue("name", mod); modSub.AddValue("duration", "-1"); data.AddSublist("add_permanent_province_modifier", modSub); } //TODO: something more sophisticated data.AddValue("discovered_by", "western"); data.AddValue("discovered_by", "muslim"); data.AddValue("discovered_by", "ottoman"); data.AddValue("discovered_by", "eastern"); data.AddValue("discovered_by", "indian"); data.AddValue("discovered_by", "sub_saharan"); if (Revolt != null && RevoltArmy != -1) { var revolt = new PdxSublist(); revolt.AddValue("type", Revolt); revolt.AddValue("size", RevoltArmy.ToString()); if (RevoltLeader != null) { revolt.AddValue("leader", RevoltLeader); } data.AddSublist("revolt", revolt); } return(data); }