public static void TestTaxCalculator(TaxParams obj) { decimal taxAmount = 0; TaxCalculator taxCalculator = new TaxCalculator(); ICountryTaxCalculator cT = null; switch (obj.Country) { case "PS": cT = new TaxCalculatorForPS(); break; case "JD": cT = new TaxCalculatorForJD(); break; case "US": cT = new TaxCalculatorForUS(); break; case "UK": cT = new TaxCalculatorForUK(); break; } cT.TotalIncome = obj.TotalIncome; cT.TotalDeduction = obj.TotalDeduction; taxAmount = taxCalculator.Calculat(cT); Console.WriteLine($"Tax Amount: {taxAmount}"); }
/// <summary> /// Предмет расчета /// </summary> /// <param name="name">Наименование</param> /// <param name="price">Цена единицы</param> /// <param name="quantity">Количество</param> /// <param name="tax">Налог</param> /// <param name="paymentMethodType">Способ расчета</param> /// <param name="paymentObjectType">Тип предмета расчета</param> public PositionDocumentParams(string name, decimal price, double quantity, TaxParams tax, PaymentMethodType paymentMethodType, PaymentObjectType paymentObjectType) : base( PrintDocumentType.Position) { if (name.IsNullOrEmptyOrWhiteSpace()) { throw new ArgumentException( string.Format(ErrorStrings.ResourceManager.GetString("StringFormatError"), this.GetType().GetProperty(nameof(Name)).GetDisplayName()), nameof(name)); } if (price < 0) { throw new ArgumentException( string.Format(ErrorStrings.ResourceManager.GetString("DigitRangeValuesError"), this.GetType().GetProperty(nameof(Price)).GetDisplayName(), 0, decimal.MaxValue), nameof(price)); } if (quantity < 0.001) { throw new ArgumentException( string.Format(ErrorStrings.ResourceManager.GetString("DigitRangeValuesError"), this.GetType().GetProperty(nameof(Price)).GetDisplayName(), 0.001, double.MaxValue), nameof(price)); } Name = name; Price = price; Quantity = quantity; Tax = tax ?? throw new ArgumentNullException(nameof(tax)); PaymentMethod = paymentMethodType; PaymentObject = paymentObjectType; }
static void Main(string[] args) { TaxCalculatorForUS t1 = new TaxCalculatorForUS(); TaxCalculatorForPS t2 = new TaxCalculatorForPS(); TaxCalculatorForJD t3 = new TaxCalculatorForJD(); TaxParams t = new TaxParams(); t.TotalIncome = 5000; t.TotalDeduction = 500; t.Country = "US"; TestTaxCalculator(t); //ShowDetail(t1); //ShowDetail(t2); //ShowDetail(t3); }