public static SalesServiceTax CalculateSalesServiceTax(SalesServiceTaxRate taxRate, TaxableFees fees) => new SalesServiceTax { Brokerage = taxRate.Brokerage * fees.Brokerage, ClearingFee = taxRate.ClearingFee * fees.ClearingFee, StampDuty = taxRate.StampDuty * fees.StampDuty };
public Calculator(BrokerageFeeRate brokerageFeeRate, ClearingFeeRate clearingFeeRate, StampDutyRate stampDutyRate, SalesServiceTaxRate taxRate) { this.brokerageFeeRate = brokerageFeeRate; this.clearingFeeRate = clearingFeeRate; this.stampDutyRate = stampDutyRate; this.taxRate = taxRate; }
[InlineData(105.14, 4.51, 16, 6.31)] // based on 15,020 purchase value public void CalculateStampDuty_returns_expexted_result(decimal brokerageFee, decimal clearingFee, decimal stampDuty, decimal expectedResult) { var rate = new SalesServiceTaxRate(Percent(6), Percent(0), Percent(0)); var result = ToTotal(CalculateSalesServiceTax(rate, brokerageFee, clearingFee, stampDuty)); result.Should().BeApproximately(expectedResult, 0.01m); }
public void Calculate_returns_expected_result(BrokerageFeeRate brokerageFeeRate, ClearingFeeRate clearingFeeRate, StampDutyRate stampDutyRate, SalesServiceTaxRate salesServiceTaxRate) { var sut = new Calculator(brokerageFeeRate, clearingFeeRate, stampDutyRate, salesServiceTaxRate); var result = sut.Calculate(1, Lot(1), 1.5m); result.Profit.Should().Be(50); }
public static SalesServiceTax CalculateSalesServiceTax(SalesServiceTaxRate taxRate, in decimal brokerageFee,
public static Fee Fee(BrokerageFeeRate brokerageFeeRate, ClearingFeeRate clearingFeeRate, StampDutyRate stampDutyRate, SalesServiceTaxRate salesServiceTaxRate) => new Fee(brokerageFeeRate, clearingFeeRate, stampDutyRate, salesServiceTaxRate);