public static taxCoreModel.TaxRequest ToTaxRequest(this coreModel.QuoteRequest quoteRequest)
 {
     var retVal = new taxCoreModel.TaxRequest();
     retVal.Id = quoteRequest.Id;
     retVal.Code = quoteRequest.Number;
     retVal.Currency = quoteRequest.Currency;
     retVal.Address = quoteRequest.Addresses != null ? quoteRequest.Addresses.FirstOrDefault() : null;
     retVal.Type = quoteRequest.GetType().Name;
     foreach(var quoteItem in quoteRequest.Items)
     {
         var line = new taxCoreModel.TaxLine
         {
             Id = quoteItem.Id,
             Code = quoteItem.Sku,
             Name = quoteItem.Name,
             TaxType = quoteItem.TaxType,
             Amount = quoteItem.SelectedTierPrice.Price * quoteItem.SelectedTierPrice.Quantity
         };
         retVal.Lines.Add(line);
     }
     return retVal;
 }
 public static taxCoreModel.TaxRequest ToTaxRequest(this ShoppingCart cart)
 {
     var retVal = new taxCoreModel.TaxRequest();
     retVal.Id = cart.Id;
     retVal.Code = cart.Name;
     retVal.Currency = cart.Currency;
     retVal.Address = cart.Addresses != null ? cart.Addresses.FirstOrDefault() : null;
     retVal.Type = cart.GetType().Name;
     foreach (var cartItem in cart.Items)
     {
         var line = new taxCoreModel.TaxLine
         {
             Id = cartItem.Id,
             Code = cartItem.Sku,
             Name = cartItem.Name,
             TaxType = cartItem.TaxType,
             Amount = cartItem.SalePrice * cartItem.Quantity
         };
         retVal.Lines.Add(line);
     }
     return retVal;
 }
Exemple #3
0
        public static taxCoreModel.TaxRequest ToTaxRequest(this ShoppingCart cart)
        {
            var retVal = new taxCoreModel.TaxRequest();

            retVal.Id       = cart.Id;
            retVal.Code     = cart.Name;
            retVal.Currency = cart.Currency;
            retVal.Address  = cart.Addresses != null?cart.Addresses.FirstOrDefault() : null;

            retVal.Type = cart.GetType().Name;
            foreach (var cartItem in cart.Items)
            {
                var line = new taxCoreModel.TaxLine
                {
                    Id      = cartItem.Id,
                    Code    = cartItem.Sku,
                    Name    = cartItem.Name,
                    TaxType = cartItem.TaxType,
                    Amount  = cartItem.SalePrice * cartItem.Quantity
                };
                retVal.Lines.Add(line);
            }
            return(retVal);
        }
Exemple #4
0
        public static taxCoreModel.TaxRequest ToTaxRequest(this coreModel.QuoteRequest quoteRequest)
        {
            var retVal = new taxCoreModel.TaxRequest();

            retVal.Id       = quoteRequest.Id;
            retVal.Code     = quoteRequest.Number;
            retVal.Currency = quoteRequest.Currency;
            retVal.Address  = quoteRequest.Addresses != null?quoteRequest.Addresses.FirstOrDefault() : null;

            retVal.Type = quoteRequest.GetType().Name;
            foreach (var quoteItem in quoteRequest.Items)
            {
                var line = new taxCoreModel.TaxLine
                {
                    Id      = quoteItem.Id,
                    Code    = quoteItem.Sku,
                    Name    = quoteItem.Name,
                    TaxType = quoteItem.TaxType,
                    Amount  = quoteItem.SelectedTierPrice.Price * quoteItem.SelectedTierPrice.Quantity
                };
                retVal.Lines.Add(line);
            }
            return(retVal);
        }
        private List<TaxRate> GetTaxRates(TaxRequest taxRequest)
        {
            List<TaxRate> retVal = new List<TaxRate>();
            LogInvoker<AvalaraLogger.TaxRequestContext>.Execute(log =>
            {
                if (IsEnabled && !string.IsNullOrEmpty(AccountNumber)
                    && !string.IsNullOrEmpty(LicenseKey)
                    && !string.IsNullOrEmpty(ServiceUrl)
                    && !string.IsNullOrEmpty(CompanyCode))
                {                    
                    var request = taxRequest.ToAvaTaxRequest(CompanyCode, false);
                    if (request != null)
                    {
                        log.docCode = request.DocCode;
                        log.docType = request.DocType.ToString();
                        log.customerCode = request.CustomerCode;                        

                        var taxSvc = new JsonTaxSvc(AccountNumber, LicenseKey, ServiceUrl);
                        var getTaxResult = taxSvc.GetTax(request);

                        if (!getTaxResult.ResultCode.Equals(SeverityLevel.Success))
                        {
                            //if tax calculation failed create exception with provided error info
                            var error = string.Join(Environment.NewLine, getTaxResult.Messages.Select(m => m.Summary));
                            throw new Exception(error);
                        }
                        
                        foreach (var taxLine in getTaxResult.TaxLines ?? Enumerable.Empty<AvaTaxCalcREST.TaxLine>())
                        {                            
                                var rate = new TaxRate
                                {
                                    Rate = taxLine.Tax,
                                    Currency = taxRequest.Currency,
                                    TaxProvider = this,
                                    Line = taxRequest.Lines.First(l => l.Id == taxLine.LineNo)
                                };
                                retVal.Add(rate);                            
                        }
                    }
                    else
                    {
                        throw new Exception("Failed to create get tax request");
                    }
                }
                else
                {
                    throw new Exception("Failed to create get tax request");
                }
            })
            .OnError(_logger, AvalaraLogger.EventCodes.TaxCalculationError)
            .OnSuccess(_logger, AvalaraLogger.EventCodes.GetSalesInvoiceRequestTime);

            return retVal;
        }        
 public TaxEvaluationContext(TaxRequest taxRequest)
 {
     TaxRequest = taxRequest;
 }
Exemple #7
0
 public TaxEvaluationContext(TaxRequest taxRequest)
 {
     TaxRequest = taxRequest;
 }