CartService
Release Date: 3/26/2018
Web Services CartService provides methods to support an e-commerce shopping cart. It is expected more methods will be provided over time to support necessary shopping cart processing. Currently, these services and methods are scattered in other web services. As of this writing, the following methods are supported.
- GetSalesTax
GetSalesTax
This method provides sales tax information for a shopping cart. The typical use case is to retrieve sales tax information and present them to the user during checkout, before the order is created.
This method can be used to retrieve just the tax rates. It can also be used to retrieve the tax rates and calculated tax amount. In most cases, you will want the web service to return the calculated tax amount. This is because the tax calculation could get complicated even if all the tax rates information is given.
To get the tax rate, the caller must provide at least one of the following pieces of the information:
- Customer Number
- Customer + Ship to number
- Ship to postal code
To get the sales tax rate and get the calculated tax amount, the caller must also specify the taxable amount. This can be done by specifying one of the following pieces of information:
- FreightAmount (CartRequest. ORD_FREIGHT_AMOUNT),
- MiscChargeAmount (CartRequest. ORDER_MISC_CHRG_AMT) if applicable,
- SalesAmount. To specify the SalesAmount, you specify one of the following: CartRequest. ORDER_TOTAL_SALE_AMT, or CartRequest. ORDER_TOTL_TAXBL_AMT, or specify the items in the shopping cart via CartRequest.CartItems/
Example: You have the zip code and you know the total sale amount and freight amount. You want to find out the sales tax amount. Since different tax jurisdictions may treat freight taxable status differently, passing the freight amount will allow Elliott back end logic to calculate the tax amount accurately.
/// <summary>
/// Retrieve sales tax by postal code and total sale amount
/// </summary>
public void GetSalesTaxByPostalCodeAndTotalSaleAmount() {
using (var client = new CartService.CartServiceSoapClient()) {
// setup reqeust
var request = new CartService.CartRequest();
request.ORDER_SHIP_TO_ZIPCD = "91789";
request.ORDER_TOTAL_SALE_AMT = 100;
request.ORD_FREIGHT_AMOUNT = 10;
var response = client.GetSalesTax(request);
// Act on response
if (response.ReturnCode != 0) {
// TODO: handle error
}
Console.WriteLine($"total sales tax: {response.OrderTotalTaxAmount}");
}
}
Example: You have the zip code and the items in the shopping cart. You want to find out the sales tax amount.
/// <summary>
/// Retrieve sales tax by postal code and cart items
/// </summary>
public void GetSalesTaxByPostalCodeAndCartItems() {
Console.WriteLine($"Running {System.Reflection.MethodInfo.GetCurrentMethod().Name}.");
using (var client = new CartService.CartServiceSoapClient()) {
// setup reqeust
var request = new CartService.CartRequest();
request.ORDER_SHIP_TO_ZIPCD = "91789";
var items = new List<CartService.CartItem>();
items.Add(new CartService.CartItem() {
LINE_ITM_ITEM_NO = "5249A",
LINE_ITM_QTY_ORDRD = 1
});
request.CartItems = items.ToArray();
var response = client.GetSalesTax(request);
// Act on response
if (response.ReturnCode != 0) {
// TODO: handle error
}
Console.WriteLine($"total sales tax: {response.OrderTotalTaxAmount}");
}
}
Example: You have the customer number. You do not know the sales amount and freight amount. You want to know the sales tax rates, tax codes and related flags. Note: Normally you would want the tax caculated by the web service.
public void GetSalesTaxRateByCustomer() {
using (var client = new CartService.CartServiceSoapClient()) {
var request = new CartService.CartRequest();
request.ORDER_CUSTOMER_NO = "007020";
var response = client.GetSalesTax(request);
if (response.ReturnCode != 0) {
// TODO: handle error
}
Console.WriteLine($"taxable: {response.IsTaxableFlag}");
Console.WriteLine($"state tax code: {response.ORDER_TAX_CODE_1}");
Console.WriteLine($"state tax percent: {response.ORDER_TAX_PERCENT_1}");
Console.WriteLine($"state tax include freight: {response.OrderTax1FreightFlag}");
Console.WriteLine($"state tax include misc charge: {response.OrderTax1MiscChargeFlag}");
Console.WriteLine($"county tax code: {response.ORDER_TAX_CODE_2}");
Console.WriteLine($"county tax percent: {response.ORDER_TAX_PERCENT_2}");
Console.WriteLine($"county tax include freight: {response.OrderTax2FreightFlag}");
Console.WriteLine($"county tax include misc charge: {response.OrderTax2MiscChargeFlag}");
Console.WriteLine($"city tax code: {response.ORDER_TAX_CODE_3}");
Console.WriteLine($"city tax percent: {response.ORDER_TAX_PERCENT_3}");
Console.WriteLine($"city tax include freight: {response.OrderTax3FreightFlag}");
Console.WriteLine($"city tax include misc charge: {response.OrderTax3MiscChargeFlag}");
}
}
Override EliorderService.CreateOrder Sales Tax Calculation for M iscellaneous C ustomer
Miscellaneous customers are customer numbers that start with "*" (Aesteric) like "*XXXX." A miscellaneous customer account is a shared account for miscellaneous orders from multiple "customers" where the actual "customer" is stored as an eContact attached to the customer record.
ORDER_TAX_CODE_1
ORDER_TAX_PERCENT_1
ORD_SALES_TAX_AMT_2
ORDER_TAX_CODE_2
ORDER_TAX_PERCENT_2
ORD_SALES_TAX_AMT_3
ORDER_TAX_CODE_3
ORDER_TAX_PERCENT_3
Property Name |
Length |
Type |
Upper |
Detail |
AchPayments |
|
CartAchPayment[] |
|
Not Used |
Attributes |
|
CartAttribute[] |
|
Not Used |
CartItems |
|
CartItem[] |
|
Specify the items in the shopping cart. The items will be used to calculate the taxable sales amount. There are multiple ways caller can specify the taxable sales amount for the items in shopping cart, CartItems, ORDER_TOTL_TAXBL_AMT, ORDER_TOTAL_SALE_AMT, listed in the order they are considered. |
Contacts |
|
CartContact[] |
|
Not Used |
CreditCardPayments |
|
CartCreditCardPayment |
|
Not Used |
ErrorDupPoFlag |
|
String |
|
Not Used |
Notes |
|
CartNote[] |
|
Not Used |
ORD_BILL_TO_COUNTRY |
|
String |
|
Not Used |
ORD_FREIGHT_AMOUNT |
|
Decimal |
|
Freight Amount. If freight is taxable, it will be included in the calculated tax amount. |
ORD_SHIP_TO_COUNTRY |
|
String |
|
Not Used |
ORDER_BILL_TO_ADDR_1 |
|
String |
|
Not Used |
ORDER_BILL_TO_ADDR_2 |
|
String |
|
Not used |
ORDER_BILL_TO_CITY |
|
String |
|
Not Used |
ORDER_BILL_TO_NAME |
|
String |
|
Not Used |
ORDER_BILL_TO_NO |
|
String |
|
Not used |
ORDER_BILL_TO_ST |
|
String |
|
Not Used |
ORDER_BILL_TO_ZIPCD |
|
String |
|
Not used |
ORDER_CHECK_DATE |
|
Date |
|
Not used |
ORDER_CHECK_NO |
|
Integer |
|
Not Used |
ORDER_COMMENT1 |
|
String |
|
Not Used |
ORDER_COMMENT2 |
|
String |
|
Not Used |
ORDER_COMMENT3 |
|
String |
|
Not Used |
ORDER_CUSTOMER_NO |
|
String |
|
Specify the customer number for tax calculation. The specified customer’s tax rates will be used for tax calculation. Depends on the input, tax rates are calculated differently. The following are the possible inputs, listed in the order that are considered: ORDER_CUSTOMER_NO + ORDER_SHIP_TO_NO, ORDER_CUSTOMER_NO, ORDER_SHIP_TO_ZIPCD |
ORDER_EDI_EXP_FLG |
|
String |
|
Not Used |
ORDER_EDI_FLAG |
|
String |
|
Not Used |
ORDER_FRGHT_PAY_CODE |
|
String |
|
Not Used |
ORDER_JOB_NO |
|
String |
|
Not Used |
ORDER_MFGING_LOC |
|
String |
|
Not Used |
ORDER_MISC_CHRG_AMT |
|
Decimal |
|
Miscellaneous charge amount. If misc charge is taxable, it will be included in the calculated tax amount. |
ORDER_PAYMENT_AMOUNT |
|
Decimal |
|
Not Used |
ORDER_PAYMENT_TP |
|
String |
|
Not Used |
ORDER_PROFIT_CENTER |
|
String |
|
Not Used |
ORDER_PURCH_ORDER_NO |
|
String |
|
Not Used |
ORDER_SALESMAN_NO_1 |
|
String |
|
Not Used |
ORDER_SALESMAN_NO_2 |
|
String |
|
Not Used |
ORDER_SALESMAN_NO_3 |
|
String |
|
Not Used |
ORDER_SHIP_TO_ADDR_1 |
|
String |
|
Not Used |
ORDER_SHIP_TO_ADDR_2 |
|
String |
|
Not Used |
ORDER_SHIP_TO_CITY |
|
String |
|
Not Used |
ORDER_SHIP_TO_NAME |
|
String |
|
Not Used |
ORDER_SHIP_TO_NO |
|
String |
|
Specify the ship-to number for tax calculation. The specified ship-to tax rates will be used for tax calculation. Must also specify the ORDER_CUSTOMER_NO. See ORDER_CUSTOMER_NO. |
ORDER_SHIP_TO_ZIPCD |
|
String |
|
Specify the ship-to zip code. The specified zip code location (state, county, city) tax rates will be used for calculation. See ORDER_CUSTOMER_NO. |
ORDER_SHIP_VIA_CODE |
|
String |
|
Not Used |
ORDER_SHIPPING_DATE |
|
Date |
|
Not Used |
ORDER_SLS_PCT_COMM_1 |
|
Decimal |
|
Not Used |
ORDER_SLS_PCT_COMM_2 |
|
Decimal |
|
Not Used |
ORDER_SLS_PCT_COMM_3 |
|
Decimal |
|
Not Used |
ORDER_TAX_CODE_1 |
|
String |
|
Not Used |
ORDER_TAX_CODE_2 |
|
String |
|
Not Used |
ORDER_TAX_CODE_3 |
|
String |
|
Not Used |
ORDER_TAX_PERCENT_1 |
|
Decimal |
|
Not Used |
ORDER_TAX_PERCENT_2 |
|
Decimal |
|
Not Used |
ORDER_TAX_PERCENT_3 |
|
Decimal |
|
Not Used |
ORDER_TERMS_CODE |
|
String |
|
Not Used |
ORDER_TOTAL_SALE_AMT |
|
Decimal |
|
Specify the total sales amount for tax calculation. See CartItems. |
ORDER_TOTAL_WEIGHT |
|
Decimal |
|
Not Used |
ORDER_TOTL_TAXBL_AMT |
|
Decimal |
|
Specify the total taxable sales amount for tax calculation. See CartItems. |
ORDER_TYPE |
|
String |
|
Not Used |
OrderInstruction |
|
String |
|
Not Used |
OrderTimeRelease |
|
Integer |
|
Not Used |
SendConfirmationEmail |
|
String |
|
Not Used |
UseAutoFreight |
|
String |
|
Not Used |
UseAutoMiscChrg |
|
String |
|
Not Used |
VendorNo |
|
String |
|
Not Used |
VoucherNo |
|
String |
|
Not Used |
Property Name |
Length |
Type |
Upper |
Detail |
Attributes |
|
CartAttribute[] |
|
Not Used |
IMHLTFIL_TRX_ID |
|
Decimal |
|
Not Used |
LINE_ITM_DESC1 |
|
String |
|
Not Used |
LINE_ITM_DESC2 |
|
String |
|
Not Used |
LINE_ITM_DISC_PCT |
|
Decimal |
|
Not Used |
LINE_ITM_EDI_TURNAR |
|
String |
|
Not Used |
LINE_ITM_ITEM_NO |
|
String |
|
Specify the item number. |
LINE_ITM_ORG_ITM_NO |
|
String |
|
Not Used |
LINE_ITM_PROD_CATE |
|
String |
|
Not Used |
LINE_ITM_PROMISE_DT |
|
Date |
|
Not Used |
LINE_ITM_QTY_BCK_ORD |
|
Decimal |
|
Not Used |
LINE_ITM_QTY_ORDRD |
|
Decimal |
|
Specify the quantity ordered. |
LINE_ITM_QTY_TO_SHIP |
|
Decimal |
|
Not Used |
LINE_ITM_REASON_CODE |
|
String |
|
Not Used |
LINE_ITM_REQST_DATE |
|
Date |
|
Not Used |
LINE_ITM_SERL_LOT_NO |
|
String |
|
Not Used |
LINE_ITM_UNIT_PRICE |
|
Decimal |
|
Not Used |
LINE_ITM_UOM |
|
String |
|
Not Used |
LINE_ITM_VENDOR_NO |
|
String |
|
Not Used |
Notes |
|
CartNote[] |
|
Not Used |
UseSetDiscPct |
|
String |
|
Not Used |
UseSetUnitPrice |
|
String |
|
Not Used |
Property Name |
Type |
Detail |
IsTaxableFlag |
String |
“Y” or “N” flag. Indicate whether the order will be taxable. |
ORD_FREIGHT_AMOUNT |
Decimal |
Not Used |
ORD_SALES_TAX_AMT_1 |
Decimal |
Indicate state sales tax amount |
ORD_SALES_TAX_AMT_2 |
Decimal |
Indicate county sales tax amount |
ORD_SALES_TAX_AMT_3 |
Decimal |
Indicate city sales tax amount |
ORDER_BILL_TO_NAME |
String |
Not Used |
ORDER_BILL_TO_NO |
String |
Not used |
ORDER_COMM_AMOUNT |
Decimal |
Not Used |
ORDER_COMM_PERCENT |
Decimal |
Not Used |
ORDER_CUSTOMER_NO |
String |
Not Used |
ORDER_DATE |
Date |
Not Used |
ORDER_DATE_ENTERED |
Date |
Not Used |
ORDER_DEPT_NO |
String |
Not Used |
ORDER_EDI_FLAG |
String |
Not Used |
ORDER_JOB_NO |
String |
Not Used |
ORDER_MFGING_LOC |
String |
Not Used |
ORDER_MISC_CHRG_AMT |
Decimal |
Not Used |
ORDER_NO |
Integer |
Not Used |
ORDER_ORD_ACK_SENT |
String |
Not Used |
ORDER_PHANTM_INV_FLG |
String |
Not Used |
ORDER_RMA_STATUS |
String |
Not Used |
ORDER_SALESMAN_NO_1 |
String |
Not Used |
ORDER_SHIP_TO_NAME |
String |
Not Used |
ORDER_SHIP_TO_NO |
String |
Not Used |
ORDER_SHIP_TO_XREF |
String |
Not Used |
ORDER_SHIP_VIA_CODE |
String |
Not Used |
ORDER_SHIPPING_DATE |
Date |
Not Used |
ORDER_STORE_NO |
String |
Not Used |
ORDER_TAX_CODE_1 |
String |
Indicate the state sales tax code. Blank if no configured state sales tax. |
ORDER_TAX_CODE_2 |
String |
Indicate the county sales tax code. Blank if no configured county sales tax. |
ORDER_TAX_CODE_3 |
String |
Indicate the city sales tax code. Blank if no configured city sales tax |
ORDER_TAX_PERCENT_1 |
Decimal |
Indicate state sales tax percentage. |
ORDER_TAX_PERCENT_2 |
Decimal |
Indicate county sales tax percentage. |
ORDER_TAX_PERCENT_3 |
Decimal |
Indicate city sales tax percentage. |
ORDER_TERMS_CODE |
String |
Not Used |
ORDER_TOTAL_SALE_AMT |
Decimal |
Not Used |
ORDER_TOTAL_WEIGHT |
Decimal |
Not Used |
ORDER_TYPE |
String |
Not Used |
OrderBillToCity |
String |
Not Used |
OrderBillToState |
String |
Not Used |
OrderBillToZipCode |
String |
Not Used |
OrderHoldStatus |
String |
Not Used |
OrderLineItems |
CartOrderLineItem[] |
Not Used |
OrderPurchaseNo |
String |
Not Used |
OrderShipToCity |
String |
Not Used |
OrderShipToState |
String |
Not Used |
OrderShipToZipCode |
String |
Not Used |
OrderTax1FreightFlag |
String |
“Y” or “N” flag. Indicate whether freight is taxable in state sales tax. |
OrderTax1MiscChargeFlag |
String |
“Y” or “N” flag. Indicate whether miscellaneous charge is taxable in state sales tax. |
OrderTax2FreightFlag |
String |
“Y” or “N” flag. Indicate whether freight is taxable in county sales tax. |
OrderTax2MiscChargeFlag |
String |
“Y” or “N” flag. Indicate whether miscellaneous is taxable in county sales tax. |
OrderTax3FreightFlag |
String |
“Y” or “N” flag. Indicate whether freight is taxable in city sales tax. |
OrderTax3MiscChargeFlag |
String |
“Y” or “N” flag. Indicate whether miscellaneous charge is taxable in city sales tax. |
OrderTotalTaxAmount |
Decimal |
Indicate the total sales tax amount. This is the sum of ORD_SALES_TAX_AMT_1 + ORD_SALES_TAX_AMT_2 + ORD_SALES_TAX_AMT_3 |
SplitOrders |
CartOrder[] |
Not Used |