/// <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 tax rate /// </summary> /// <param name="calculateTaxRequest">Tax calculation request</param> /// <returns>Tax</returns> public CalculateTaxResult GetTaxRate(CalculateTaxRequest calculateTaxRequest) { var result = new CalculateTaxResult(); if (calculateTaxRequest.Address == null) { result.Errors.Add("Address is not set"); return result; } var taxRates = _taxRateService.GetAllTaxRates(calculateTaxRequest.TaxCategoryId, calculateTaxRequest.Address.Country != null ? calculateTaxRequest.Address.Country.Id: 0, calculateTaxRequest.Address.StateProvince != null ? calculateTaxRequest.Address.StateProvince.Id : 0, calculateTaxRequest.Address.ZipPostalCode); if (taxRates.Count > 0) result.TaxRate = taxRates[0].Percentage; return result; }
/// <summary> /// Create request for tax calculation /// </summary> /// <param name="productVariant">Product variant</param> /// <param name="taxCategoryId">Tax category identifier</param> /// <param name="customer">Customer</param> /// <returns>Package for tax calculation</returns> protected CalculateTaxRequest CreateCalculateTaxRequest(ProductVariant productVariant, int taxCategoryId, Customer customer) { var calculateTaxRequest = new CalculateTaxRequest(); calculateTaxRequest.Customer = customer; if (taxCategoryId > 0) { calculateTaxRequest.TaxCategoryId = taxCategoryId; } else { if (productVariant != null) { calculateTaxRequest.TaxCategoryId = productVariant.TaxCategoryId; } } var basedOn = _taxSettings.TaxBasedOn; if (basedOn == TaxBasedOn.BillingAddress) { if (customer == null || customer.BillingAddress == null) { basedOn = TaxBasedOn.DefaultAddress; } } if (basedOn == TaxBasedOn.ShippingAddress) { if (customer == null || customer.ShippingAddress == null) { basedOn = TaxBasedOn.DefaultAddress; } } Address address = null; switch (basedOn) { case TaxBasedOn.BillingAddress: { address = customer.BillingAddress; } break; case TaxBasedOn.ShippingAddress: { address = customer.ShippingAddress; } break; case TaxBasedOn.DefaultAddress: default: { address = _addressService.GetAddressById(_taxSettings.DefaultTaxAddressId); } break; } calculateTaxRequest.Address = address; return(calculateTaxRequest); }
/// <summary> /// Create request for tax calculation /// </summary> /// <param name="productVariant">Product variant</param> /// <param name="taxCategoryId">Tax category identifier</param> /// <param name="customer">Customer</param> /// <returns>Package for tax calculation</returns> protected CalculateTaxRequest CreateCalculateTaxRequest(ProductVariant productVariant, int taxCategoryId, Customer customer) { var calculateTaxRequest = new CalculateTaxRequest(); calculateTaxRequest.Customer = customer; if (taxCategoryId > 0) { calculateTaxRequest.TaxCategoryId = taxCategoryId; } else { if (productVariant != null) calculateTaxRequest.TaxCategoryId = productVariant.TaxCategoryId; } var basedOn = _taxSettings.TaxBasedOn; if (basedOn == TaxBasedOn.BillingAddress) { if (customer == null || customer.BillingAddress == null) { basedOn = TaxBasedOn.DefaultAddress; } } if (basedOn == TaxBasedOn.ShippingAddress) { if (customer == null || customer.ShippingAddress == null) { basedOn = TaxBasedOn.DefaultAddress; } } Address address = null; switch (basedOn) { case TaxBasedOn.BillingAddress: { address = customer.BillingAddress; } break; case TaxBasedOn.ShippingAddress: { address = customer.ShippingAddress; } break; case TaxBasedOn.DefaultAddress: default: { address = _addressService.GetAddressById(_taxSettings.DefaultTaxAddressId); } break; } calculateTaxRequest.Address = address; return calculateTaxRequest; }