public void CalculateTax(OriginAddress originAddress, CustomerOrder customerOrder) { Website website = customerOrder.Website; if (website == null || customerOrder.OrderLines.Count < 1) { return; } if (customerOrder.WebsiteId != null) { customSettings.OverrideCurrentWebsite(customerOrder.WebsiteId); } var Excert = customerOrder.ShipTo.CustomProperties.Where(x => x.Name.Equals("EXCert", StringComparison.OrdinalIgnoreCase)).FirstOrDefault(); if (Excert != null && !string.IsNullOrEmpty(Excert.Value)) { customerOrder.StateTax = Decimal.Zero; return; } var taxCalculation = this.TaxesSettings.TaxCalculation; if (taxCalculation.ToString().EqualsIgnoreCase("Calculate") && ValidateOrderAddressForAvalara(customerOrder)) { var requestFromOrder = GetCalcTaxRequestFromOrder(originAddress, customerOrder, DocumentType.SalesOrder); var configuredTaxService = GetConfiguredTaxService(); string message1; try { LogHelper.For(this).Info("AvalaraTax call for Order Number " + customerOrder.OrderNumber, "TaxCalculator_Avalara"); //BUSA-481 : Tax Exempt. Truncate country code from customer number Starts. requestFromOrder.CustomerCode = !string.IsNullOrEmpty(requestFromOrder.CustomerCode) ? requestFromOrder.CustomerCode.Trim().Substring(1, requestFromOrder.CustomerCode.Length - 1) : string.Empty; //BUSA-481 : Tax Exempt. Truncate country code from customer number Ends. var tax = configuredTaxService.GetTax(requestFromOrder); message1 = ProcessAvalaraResponseMessage(tax); customerOrder.StateTax = tax.TotalTax; } catch (Exception ex) { LogHelper.For(this).Error("Error running Avalara GetTax method: " + ex.Message, "TaxCalculator_Avalara"); throw; } if (!string.IsNullOrEmpty(message1)) { LogHelper.For(this).Debug(message1, "Avalara Result, PostTax: "); } } else { customerOrder.StateTax = Decimal.Zero; string message = !taxCalculation.ToString().EqualsIgnoreCase("Calculate") ? "Select taxcalculation as calculate." : "The billto/shipto customer does not have an address specified. In order to calculate tax this must be set up."; LogHelper.For(this).Debug(message, "TaxCalculator_Avalara"); } }
//BUSA-450 Cenpos - address for New Web Customer is not being populated correctly end //protected virtual ProcessCardRequest GetCardRequestForToken(SubmitTransactionParameter parameter) //{ // customSettings.OverrideCurrentWebsite(SiteContext.Current.WebsiteDto.Id); // ProcessCardRequest processCardRequest1 = null; // if (parameter.PaymentProfileId != null) // { // ProcessCardRecurringSaleRequest recurringSaleRequest = new ProcessCardRecurringSaleRequest(); // string userId = customSettings.PaymentGateway_Cenpos_UserId; // recurringSaleRequest.UserId = userId; // string password = customSettings.PaymentGateway_Cenpos_Password; // recurringSaleRequest.Password = password; // int merchantId = customSettings.PaymentGateway_Cenpos_MerchantId; // recurringSaleRequest.MerchantId = merchantId; // Decimal amount = parameter.Amount; // recurringSaleRequest.Amount = amount; // string str1 = parameter.CreditCard.ExpirationMonth.ToString("00") + parameter.CreditCard.ExpirationYear.ToString().Substring(2); // recurringSaleRequest.CardExpirationDate = str1; // string customerNumber = parameter.CustomerNumber; // recurringSaleRequest.CustomerCode = customerNumber; // string address1 = parameter.BillToAddress.Address1; // recurringSaleRequest.CustomerBillingAddress = address1; // string email = parameter.BillToAddress.Email; // recurringSaleRequest.CustomerEmailAddress = email; // string postalCode = parameter.BillToAddress.PostalCode; // recurringSaleRequest.CustomerZipCode = postalCode; // string referenceNumber = parameter.ReferenceNumber; // recurringSaleRequest.InvoiceNumber = referenceNumber; // the invoicenumber in SpForce will be same as original transaction reference number? // string currencyCode = parameter.CurrencyCode; // recurringSaleRequest.CurrencyCode = currencyCode; // // setting SpecialForce for sale transaction type for invoice amount // //recurringSaleRequest.TransactionType = parameter.TransactionType == TransactionType.Sale ? "RecurringSale2" : "RecurringAuth"; // switch (parameter.TransactionType) // { // case TransactionType.Authorization: // recurringSaleRequest.TransactionType = "RecurringAuth"; // break; // case TransactionType.Capture: // recurringSaleRequest.TransactionType = "RecurringSale2"; //saving card through invoice // break; // case TransactionType.Sale: // recurringSaleRequest.TransactionType = "Sale"; //only payment through invoicing // break; // case TransactionType.Void: // recurringSaleRequest.TransactionType = "Void"; // break; // case TransactionType.Credit: // recurringSaleRequest.TransactionType = "Refund"; // break; // default : recurringSaleRequest.TransactionType = "RecurringAuth"; // break; // } // string str3 = parameter.PaymentProfileId + "|" + (object)merchantId; // recurringSaleRequest.RecurringSaleTokenId = str3; // processCardRequest1 = (ProcessCardRequest)recurringSaleRequest; // } // return processCardRequest1; //} protected virtual UseTokenRequest GetCardRequestForToken(SubmitTransactionParameter parameter) { customSettings.OverrideCurrentWebsite(SiteContext.Current.WebsiteDto.Id); UseTokenRequest processCardRequest1 = new UseTokenRequest(); if (parameter.PaymentProfileId != null) { string userId = customSettings.PaymentGateway_Cenpos_UserId; processCardRequest1.UserId = userId; string password = customSettings.PaymentGateway_Cenpos_Password; processCardRequest1.Password = password; int merchantId = customSettings.PaymentGateway_Cenpos_MerchantId; processCardRequest1.MerchantId = merchantId; Decimal amount = parameter.Amount; processCardRequest1.Amount = amount; string referenceNumber = parameter.ReferenceNumber; processCardRequest1.InvoiceNumber = referenceNumber; // the invoicenumber in SpForce will be same as original transaction reference number? string currencyCode = parameter.CurrencyCode; processCardRequest1.CurrencyCode = currencyCode; // setting SpecialForce for sale transaction type for invoice amount //recurringSaleRequest.TransactionType = parameter.TransactionType == TransactionType.Sale ? "RecurringSale2" : "RecurringAuth"; switch (parameter.TransactionType) { case TransactionType.Authorization: processCardRequest1.TransactionType = "Auth"; break; case TransactionType.Capture: processCardRequest1.TransactionType = "RecurringSale2"; //saving card through invoice break; case TransactionType.Sale: processCardRequest1.TransactionType = "Sale"; //only payment through invoicing break; case TransactionType.Void: processCardRequest1.TransactionType = "Void"; break; case TransactionType.Credit: processCardRequest1.TransactionType = "Refund"; break; default: processCardRequest1.TransactionType = "Auth"; break; } string str3 = parameter.PaymentProfileId + "|" + (object)merchantId; processCardRequest1.TokenId = str3; } return(processCardRequest1); }