public IActionResult CalculateTax(string taxType, [FromBody] TaxCalculation taxCalcModel) { decimal tax = 0M; string postalCode = taxCalcModel.PostalCode; decimal annualIncome = taxCalcModel.AnnualIncome; switch (taxType) { case "Progressive": tax = _calculateTax.CalculateProgressiveTax(annualIncome); break; case "Flat Value": tax = _calculateTax.CalculateFlatValueTax(annualIncome); break; case "Flat Rate": tax = _calculateTax.CalculateFlatRateTax(annualIncome); break; } TaxCalculation calculation = new TaxCalculation() { AnnualIncome = annualIncome, PostalCode = postalCode, TaxResult = tax, Timestamp = DateTime.Now }; //Insert result in database _dataLayer.AddNewTaxCalculationResult(calculation); return(Ok(tax.ToString())); }
public TaxCalculation Put([FromBody] TaxCalculation calculation) { calculation.CreatedDate = DateTime.UtcNow; _calculationComms.AddCalculation(calculation); return(calculation); }
static void Main(string[] args) { ILogger logger = new XmlLogger(); TaxCalculation taxCalculation = new TaxCalculation(logger); Console.WriteLine(taxCalculation.Calculation(10, 0)); }
public bool DeleteCalculation(TaxCalculation calculation) { _context.Attach(calculation).State = Microsoft.EntityFrameworkCore.EntityState.Deleted; _context.SaveChanges(); return(true); }
public (string, int) GetCalcTaxStageText() { switch (_calcTaxStage) { case 1: return("\U0001F4B5\U0001F4B6 Выберите валюту покупки автомобиля:", _calcTaxStage); case 2: return("\U0001F4C4 Введите стоимость автомобиля:", _calcTaxStage); case 3: return("\U000026FD Выберите тип двигателя:", _calcTaxStage); case 4: return((CarEngineType == EngineType.Electro) ? "\U0001F50B Введите ёмкость батареи (кВт/ч):" : "\U00002747 Введите объём двигателя (куб.см):", _calcTaxStage); case 5: return("\U0001F3AB Введите год выпуска автомобиля:", _calcTaxStage); case 6: return("\U0001F4B5\U0001F4B6 Выберите валюту транспортировки до границы Украины:", _calcTaxStage); case 7: return("\U0001F4C4 Введите цену транспортировки до границы Украины:", _calcTaxStage); default: string tax = TaxCalculation.CalculateTax(this); LogService.PrintLogText($"{_Customer.FirstName} {_Customer.LastName}", "calculated customs tax"); return(tax, -1); } }
public static void Go(Customer customer) { customer.TaxEuroForm = null; customer.ActionType = ActionType.TaxCalculation; customer.TaxForm = new TaxForm(customer); TaxCalculation.TaxCalculationProcess(Bot, customer); }
static void Main(string[] args) { TaxCalculation txc = new TaxCalculation(LogType.XML); Console.WriteLine(txc.Calculate(10, 5)); Console.WriteLine(txc.Calculate(0, 0)); Console.Read(); }
public TaxCalculation AddCalculation(TaxCalculation calculation) { calculation.CalculatedTax = Math.Round(calculation.CalculatedTax, 2); calculation.Income = Math.Round(calculation.Income, 2); _context.Add(calculation); _context.SaveChanges(); return(calculation); }
static void Main() { //call the dll TaxCalculation taxCalculation = new TaxCalculation(); taxCalculation.CalculateTax(900000.00f); Console.Read(); }
public TaxCalculation TaxCalculationInspetor(TaxCalculation calculation, IQueryProvider <PostalCode> postalCodes , IProgressiveTaxCalculator progressiveTaxCalculator, IFlatRateTaxCalculator flatRateTaxCalculator, IFlatValueTaxCalculator flatValueTaxCalculator) { var postalCode = calculation.PostalCode; var taxTypeId = postalCodes.Query.Where(i => i.CodeName == postalCode).First().TaxTypeId; calculation = TaxTypeSelector(calculation, (int)taxTypeId, progressiveTaxCalculator, flatRateTaxCalculator, flatValueTaxCalculator); return(calculation); }
public TaxCalculation UpdateCalculation(TaxCalculation calculation) { calculation.CalculatedTax = Math.Round(calculation.CalculatedTax, 2); calculation.Income = Math.Round(calculation.Income, 2); _context.Attach(calculation).State = Microsoft.EntityFrameworkCore.EntityState.Modified; _context.Update(calculation); _context.SaveChanges(); return(calculation); }
public bool Save(TaxCalculation taxCalculation) { _taxDbContext.TaxCalculation.Add(taxCalculation); var result = _taxDbContext.SaveChanges(); if (result > double.Epsilon) { return(true); } return(false); }
private async Task <int> SaveCalculation(int taxCalcTypeId, decimal annualIncome, decimal taxDue) { var taxCalculationResult = new TaxCalculation { AnnualIncome = annualIncome, TaxCalculationTypeId = taxCalcTypeId, TaxDue = taxDue }; var result = await _taxCalculationRepository.InsertOrUpdateTaxCalculationAsync(taxCalculationResult); return(result); }
public TaxCalculation ProcessTax(TaxCalculation calculation) { if (calculation.Income >= 200000) { calculation.CalculatedTax = 10000; } else { calculation.CalculatedTax = GetActualTax((decimal)GetPercentage(5), calculation.Income); } return(calculation); }
private async Task SaveCalculation(TaxCalculationRequest request, TaxCalculationResponse response, TaxYear taxYear) { var calculation = new TaxCalculation { AnnualIncome = request.AnnualIncome, TaxAmount = response.TaxAmount, CalculationType = response.CalculationType, CreatedBy = request.RequestedBy, CreationDate = _clock.GetCurrentDateTime(), PostalCode = request.PostalCode, TaxYear = taxYear }; await _calculationRepository.AddAsync(calculation).ConfigureAwait(false); }
public TaxCalculation TaxTypeSelector(TaxCalculation calculation, int taxTypeId , IProgressiveTaxCalculator progressiveTaxCalculator, IFlatRateTaxCalculator flatRateTaxCalculator, IFlatValueTaxCalculator flatValueTaxCalculator) { if ((TaxTypeEnum)taxTypeId == TaxTypeEnum.ProgressiveTax) { calculation = progressiveTaxCalculator.ProcessTax(calculation); } else if ((TaxTypeEnum)taxTypeId == TaxTypeEnum.FlatRateTax) { calculation = flatRateTaxCalculator.ProcessTax(calculation); } else if ((TaxTypeEnum)taxTypeId == TaxTypeEnum.FlatValueTax) { calculation = flatValueTaxCalculator.ProcessTax(calculation); } return(calculation); }
public bool PublishMessage(TaxCalculation taxCalculation) { try { using (var channel = _rabbitConnection.Connect().CreateModel()) { var message = Newtonsoft.Json.JsonConvert.SerializeObject(taxCalculation); var body = Encoding.UTF8.GetBytes(message); channel.BasicPublish(exchange: _setting.ExchangeName, routingKey: _setting.RoutingKey, basicProperties: null, body: body); } } catch (Exception) { return(false); } return(true); }
public static void Go(Customer customer) { ActiveCustomersCollection.TryGetValue(customer.ChatId, out customer); if (customer == null) { return; } switch (customer.ActionType) { case ActionType.TaxCalculation: TaxCalculation.TaxCalculationProcess(Bot, customer); break; case ActionType.TaxEuroCalculation: TaxEuroCalculation.TaxCalculationProcess(Bot, customer); break; default: break; } }
public void Can_Get_TaxType_By_CodeName_And_Calculate_Tax() { A.CallTo(() => _postalCodeQueryProvider.Query).WithAnyArguments().Returns(AcceleratorTestData.PostalCodes); A.CallTo(() => _taxCalculationTypesQueryProvider.Query).WithAnyArguments().Returns(AcceleratorTestData.TaxTypes); var calculation = new TaxCalculation(); calculation.Id = 1; calculation.FullName = "Joe Soup"; calculation.Income = 784684; calculation.CreatedDate = System.DateTime.UtcNow; calculation.CalculatedTax = 0; calculation.PostalCode = "Area0007"; _acceleratorController = new AcceleratorController(_taxCalculationQueryProvider, _postalCodeQueryProvider, _taxCalculationTypesQueryProvider , _progressiveRatesQueryProvider, _inspector, _progressiveTaxCalculator, _flatRateTaxCalculator, _flatValueTaxCalculator); var results = _acceleratorController.Get(calculation); Assert.IsNotNull(results.Value); }
public TaxCalculation ProcessTax(TaxCalculation calculation) { decimal income = calculation.Income; decimal monthlyIncome = income / 12; if (monthlyIncome <= 8350)//10% { decimal perc = (decimal)GetPercentage(10); calculation.CalculatedTax = GetActualTax(perc, income); } else if (monthlyIncome >= 8351 && monthlyIncome <= 33950) //15% { decimal perc = (decimal)GetPercentage(15); calculation.CalculatedTax = GetActualTax(perc, income); } else if (monthlyIncome >= 33951 && monthlyIncome <= 82250) { // 25% decimal perc = (decimal)GetPercentage(25); calculation.CalculatedTax = GetActualTax(perc, income); } else if (monthlyIncome >= 82251 && monthlyIncome <= 171550) { //28% decimal perc = (decimal)GetPercentage(28); calculation.CalculatedTax = GetActualTax(perc, income); } else if (monthlyIncome >= 171551 && monthlyIncome <= 372950) {//33% decimal perc = (decimal)GetPercentage(33); calculation.CalculatedTax = GetActualTax(perc, income); } else if (monthlyIncome >= 372951) {//35% decimal perc = (decimal)GetPercentage(35); calculation.CalculatedTax = GetActualTax(perc, income); } return(calculation); }
/// <summary> /// 签名失败处理数据 /// </summary> private void SignFilureData() { //签名失败,客户端处理税款明细 if (Credit != null && Credit.Productes != null) { TaxList = Credit.Productes.GroupBy(a => a.TaxType.Id).Select(g => new InvoiceTax { TaxItemCode = g.First().TaxType.Label, TaxItemDesc = g.First().TaxType.Name, TaxRate = g.First().TaxType.Rate, TaxAmount = g.Sum(b => { return(TaxCalculation.Calculation(b.TaxInclusive, b.TaxType.CalculationMode, b.Price, b.Count, b.TaxType.Rate, b.TaxType.FixTaxAmount)); }) }).ToList(); if (TaxList != null && TaxList.Count > 0) { TotalTaxAmount = Math.Round(TaxList.Sum(a => a.TaxAmount), 2); } } }
public async Task Add_Should_Save_TaxCalculation() { //Arrange var options = new DbContextOptionsBuilder <ApplicationContext>() .UseInMemoryDatabase(databaseName: GetType().Name + Guid.NewGuid()) .Options; await using var context = new ApplicationContext(options); var taxCalculation = new TaxCalculation { CalculationType = TaxCalculationType.FLAT_RATE, TaxYear = new TaxYear(), AnnualIncome = 300000, CreatedBy = Guid.Parse("b11ac84a-028e-4288-ae85-49f647cee187"), CreationDate = new DateTime(2020, 10, 10), PostalCode = "1212", TaxAmount = 200.45M }; _repository = new TaxCalculationRepository(context); //Act await _repository.AddAsync(taxCalculation); //Assert var entity = await context.TaxCalculations.FirstOrDefaultAsync(); Assert.IsNotNull(entity); Assert.AreEqual(taxCalculation.TaxYear, entity.TaxYear); Assert.AreEqual(taxCalculation.CalculationType, entity.CalculationType); Assert.AreEqual(taxCalculation.AnnualIncome, entity.AnnualIncome); Assert.AreEqual(taxCalculation.CreatedBy, entity.CreatedBy); Assert.AreEqual(taxCalculation.CreationDate, entity.CreationDate); Assert.AreEqual(taxCalculation.PostalCode, entity.PostalCode); Assert.AreEqual(taxCalculation.TaxAmount, entity.TaxAmount); }
public TaxCalculation ProcessTax(TaxCalculation calculation) { calculation.CalculatedTax = GetActualTax((decimal)GetPercentage(17.5), calculation.Income); return(calculation); }
public async Task <IActionResult> Submit(TaxCalculation model) { if (ModelState.IsValid) { IEnumerable <TaxType> postalCodes = null; decimal calculationResult = 0M; string baseUri = _configuration["ApiBaseUri:BaseUri"]; using (var client = new HttpClient()) { client.BaseAddress = new Uri(baseUri); using (var response = await client.GetAsync($"{baseUri}TaxServices")) { string apiResponse = await response.Content.ReadAsStringAsync(); postalCodes = JsonConvert.DeserializeObject <List <TaxType> >(apiResponse); } } var singlePostalcode = postalCodes.Where(p => p.PostalCode == model.PostalCode); if (!singlePostalcode.Any()) { ModelState.AddModelError("PostalCode", "Postal Code is not catered for, please enter postal code from this selection (7441, A100, 7000, 1000)."); return(View("Index", model)); } else { //call api to calculate tax and insert in database string taxType = singlePostalcode.FirstOrDefault().Type; TaxCalculation calculation = new TaxCalculation() { AnnualIncome = model.AnnualIncome, PostalCode = model.PostalCode, }; var client = new RestClient(baseUri); string url = $"{baseUri}TaxServices/CalculateTax/"; var request = new RestRequest(url, Method.POST); var json = JsonConvert.SerializeObject(calculation); request.AddParameter("taxType", taxType, ParameterType.QueryString); request.AddParameter("text/json", json, ParameterType.RequestBody); var response = client.Execute(request); string strCalculationResult = JsonConvert.DeserializeObject <string>(response.Content); calculationResult = Convert.ToDecimal(strCalculationResult); } var postalCode = model.PostalCode; var annualIncome = model.AnnualIncome; var taxResult = calculationResult; return(RedirectToAction("TaxCalculationSubmitted", new { postalCode, annualIncome, taxResult })); } else { return(View("Index", model)); } }
private void Save(SignRequest request, SignResponse signResponse) { //保存销售订单主表 InvoiceAbbreviation invoiceAbbreviation = new InvoiceAbbreviation { CashierId = Const.CashierId, TaxpayerTin = TaxPayerInfo.Tin, TotalTaxAmount = TotalTaxAmount, TenderAmount = ActualPay, Change = Change, QrcodePath = "", }; if (Credit != null) { invoiceAbbreviation.SalesorderNum = Credit.OrderNumber; if (Credit.SelectedPaymentType != null) { invoiceAbbreviation.PaymentType = Credit.SelectedPaymentType.Code; } invoiceAbbreviation.BuyerTin = Credit.Buyer.Tin; invoiceAbbreviation.BuyerName = Credit.Buyer.Name; invoiceAbbreviation.TotalAmount = Credit.GrandTotal; } //if (request != null) //{ // invoiceAbbreviation.HashCode = request.Hash; //} ///sdc取值 if (signResponse != null) { invoiceAbbreviation.TaxpayerName = signResponse.TaxpayerName; //sdc取值 //invoiceAbbreviation.TaxpayerLocation = signResponse.LocationName;//sdc取值 invoiceAbbreviation.TaxpayerAddress = signResponse.Addreess; //sdc取值 //invoiceAbbreviation.TaxpayerDistrit = signResponse.District;//sdc取值 invoiceAbbreviation.InvoiceNumber = signResponse.InvoiceNumber; //sdc取值 invoiceAbbreviation.IssueDate = request.IssueTime; //sdc取值 invoiceAbbreviation.VerificationUrl = signResponse.VerificationUrl; } Const.dB.Insert <InvoiceAbbreviation>(invoiceAbbreviation); //保存订单销售子表 InvoiceItems invoiceItem = null; if (Credit != null && Credit.Productes != null) { foreach (var item in Credit.Productes) { invoiceItem = new InvoiceItems(); invoiceItem.Sn = null; invoiceItem.TaxtypeId = item.TaxType.Id; invoiceItem.SalesorderNum = Credit.OrderNumber; invoiceItem.GoodsId = item.No; invoiceItem.GoodsGin = item.BarCode; invoiceItem.GoodsDesc = item.Name; invoiceItem.GoodsPrice = item.Price; invoiceItem.GoodsQty = item.Count; invoiceItem.TotalAmount = item.Price * item.Count; invoiceItem.TaxtypeId = item.TaxType.Id; invoiceItem.TaxItem = item.TaxType.Name; invoiceItem.TaxRate = item.TaxType.Rate; invoiceItem.TaxAmount = TaxCalculation.Calculation(item.TaxInclusive, item.TaxType.CalculationMode, item.Price, item.Count, item.TaxType.Rate, item.TaxType.FixTaxAmount); Const.dB.Insert <InvoiceItems>(invoiceItem); } } }
public CalculationFacade() { basePremiumCalculation = new BasePremiumCalculation(); taxCalculation = new TaxCalculation(); discountCalculation = new DiscountCalculation(); }
public TaxCalculation Patch([FromBody] TaxCalculation calculation) { _calculationComms.UpdateCalculation(calculation); return(calculation); }
public void AddNewTaxCalculationResult(TaxCalculation taxCalculation) { _appDbContext.Add <TaxCalculation>(taxCalculation); _appDbContext.SaveChanges(); }
static void Main(string[] args) { TaxCalculation taxCalculation = new TaxCalculation(LogType.TXT); Console.WriteLine(taxCalculation.Calculation(5, 0)); }
public async Task AddAsync(TaxCalculation calculation) { _context.TaxCalculations.Add(calculation); await _context.SaveChangesAsync(); }