Вы находитесь на странице: 1из 20

Solid Commerce || NetSuite Integration

December 19th,2014

Table Contents
Preface: ......................................................................................................................................................... 1
Basic Flow of Information: ............................................................................................................................ 1
Assumptions:................................................................................................................................................. 1
Tools: ............................................................................................................................................................. 2
Appendix A: SearchOrdersV2 Method Documentation................................................................................ 3
Sample XML Response .............................................................................................................................. 6
Appendix B: InsertShippingRecord Method Documentation ..................................................................... 11
Examples: ................................................................................................................................................ 17

Preface:
Solid Commerce would like to integrate with NetSuite, so customers could enjoy the benefits of
NetSuite while utilizing Solid Commerce to operate on the eCommerce realm. The integration
will include orders sync, inventory and tracking information.

Basic Flow of Information:

Assumptions:
1. NetSuite will be in charge of quantities: When the user changes the quantity on
NetSuite, the change will be pushed to Solid Commerce. The user will not change the
quantity manually on Solid Commerce (this scenario is out of the scope).
2. Orders will be pushed from Solid Commerce to NetSuite and will be used as a mean to
deduct the quantities on NetSuite.
3. The tracking information pushed from NetSuite will include, but not limited to: tracking
number, shipping method, shipping weight, and shipping cost.
4. When pushing the order information to NetSuite, the buyer and customer information
(not always the same), will be populated in the appropriate locations in NetSuite.

Tools:
In order to communicate with Solid Commerce, the integration will use Solid Commerces web
services (webservices.solidcommerce.com). The list of methods to be used for the different
scenarios are listed below:
1. Update Solid Commerce with inventory coming from Solid Commerce:
UpdateItemQtyAndCost.
2. Update Solid Commerce with tracking information: SaveShipmentRecord.
3. Pull orders information from Solid Commerce to NetSuite: SearchOrdersV2.

Appendix A: SearchOrdersV2 Method Documentation


<parameter name="appKey">WebServices Company API Key</parameter>
<parameter name="xslUri">obsolete</parameter>
<parameter name="securityKey">WebServices Developer Security Key</parameter>
<parameter name="page">Requested page number (Examples: 1, 2, 3...)</parameter>
<parameter name="recordCount">Requested records count per page number (Examples: 100, 500).
Default -50
</parameter>
<parameter name="filterHasStoreNotNotifiedShipmentItems">get only orders with items with not
notified shipments status. Empty string (Optional values: 1 or 0) </parameter>
<parameter name="orderStatus">Filter by order status. Values:
NOTAVAILABLE = 0,
COMPLETED = 1,
PAID = 2,
WAITINGFORBUYER = 3,
WAITINGFORSELLER = 4,
CANCELLED = 5,
PARTIALLYCOMPLETED = 6
</parameter>
<parameter name="filterCustomOrderStatus"> Filter by custom order status:
0 - Do not filter (show all)
1 - Filter by custom order status (Requires
CustomOrderStatusID)
"2" - Search order without custom order status
</parameter>
<parameter name="customOrderStatusID"> the value of the custom order status (ID or Name).
Requires filterCustomOrderStatus = 1
</parameter>
<parameter name="filterAddressVerificationFailed">Obsolete. Values: "0" or "1"</parameter>
<parameter name="filterByDates">Enable filter by dates.
3

Empty string or "0" Do not filter


"1" Filter by dates (Requires at least one of the dates defined)
</parameter>
<parameter name="fromDate">Earliest order date. Format "MM/DD/YYYY"</parameter>
<parameter name="toDate"> Latest order date. Format "MM/DD/YYYY"</parameter>
<parameter name="searchType">Filter Order by:

ByProductName = 0
ByManufacture = 1
BySKU =2
ByUPC = 3
ByASIN = 4
ByISBN = 5
BuyerName = 6
BuyerEmail = 7
BuyerZipCode = 8
BuyerScreenName = 9
MarketOrderNumber = 10
InvoiceNumber = 11
ManufactureModelNumber = 12
PackageID = 13
ListingID = 14
BySCOrderID = 15
ByBuyerLastName = 16
ByStorage = 17
ByBuyerStreet1 = 18
ByBuyerCountry = 19
ByBuyerCity=20
ByBuyerState=21
ByPO=22
ByPartialSKU = 23
4

BySalesChannel = 24
ByBuyerCompany = 25
</parameter>
<parameter name="searchValue">Filter value used according to SearchType selection. </parameter>
<parameter name="sortBy">Obsolete </parameter>
<parameter name="sortDescend">sort order. "0" or empty value Asc "1" Desc </parameter>
<parameter name="ordersSearchFormat">Output format types. Different format will return different
set of data.
Values: ByOrder = 0
ByOrderItems = 1
ByTrackingNumbers = 2
</parameter>
<parameter name="fromOrderStatusChangedDate">Format: "MM/DD/YYYY"</parameter>
<parameter name="showOrderStatusLastChangeDT">0 (Default) / 1</parameter>
<parameter name="filterByWarehouse">Warehouse/Vendor SolidCommerce ID separated by comma.
</parameter>
<parameter name="viewOptions">View options allow to select which additional order item information
to add to the output. Requires OrdersSearchFormat =
1
(When not selected output columns are not populated)
Multiple options are allowed. For example: "ASIN,UPC"

Values: "ALL" this will return ASIN, UPC, Item Cost, Warehouse name, Weight
"ASIN" - Fill ASIN column
"UPC" - Fill UPC column
"Cost" - Fill Cost column
"Weight" - Fill Weight column
"WarehouseName" - Fill Warehouse Name column
</parameter>

Sample XML Response


<LiquidateDirect schema="http://webservices.liquidatedirect.com/xmlschema.xsd
">
<SearchOrders>
<DateTime>04/09/2014 09:32:59</DateTime>
<PageNo>1</PageNo>
<SearchRequest>
<OrdersSearchFormat>1</OrdersSearchFormat>
</SearchRequest>
<Orders>
<Order>
<StoreOrderID>058-9282321-9866711</StoreOrderID>
<saleID>381803139</saleID>
<ProductName>
<![CDATA[ ]]>
</ProductName>
<TotalSale>0.00</TotalSale>
<Qty>1</Qty>
<ItemCost></ItemCost>
<BuyerName>
<![CDATA[ ]]>
</BuyerName>
<BuyerEmail>
<![CDATA[ ]]>
</BuyerEmail>
<BuyerStreet1>
<![CDATA[ ]]>
</BuyerStreet1>
<BuyerStreet2>
<![CDATA[ ]]>
</BuyerStreet2>
<BuyerState>

<![CDATA[ ]]>
</BuyerState>
<BuyerCity>
<![CDATA[ ]]>
</BuyerCity>
<BuyerCountry>
<![CDATA[ ]]>
</BuyerCountry>
<BuyerZipCode>
<![CDATA[ ]]>
</BuyerZipCode>
<Status>2</Status>
<Manufacture>
<![CDATA[ ]]>
</Manufacture>
<SKU>
<![CDATA[ ]]>
</SKU>
<WarehouseID>
<![CDATA[ 205596793314493 ]]>
</WarehouseID>
<Weight>0</Weight>
<ShipService>0</ShipService>
<ShipServiceName>USPS Media</ShipServiceName>
<ShipFee>5.0000</ShipFee>
<Tax>0.0000</Tax>
<BusinessName>
<![CDATA[ ]]>
</BusinessName>
<ShipToName>
<![CDATA[ Jody Panchyshyn ]]>
</ShipToName>

<ShipToStreet1>
<![CDATA[ 5249 Penn Ave N ]]>
</ShipToStreet1>
<ShipToStreet2>
<![CDATA[ ]]>
</ShipToStreet2>
<ShipToCity>
<![CDATA[ na ]]>
</ShipToCity>
<ShipToZip>
<![CDATA[ 55430 ]]>
</ShipToZip>
<ShipToState>
<![CDATA[ PW ]]>
</ShipToState>
<ShipToCountry>
<![CDATA[ US ]]>
</ShipToCountry>
<ShipToPhone>
<![CDATA[ ]]>
</ShipToPhone>
<StorageLocation>
<![CDATA[ FBA Warehouse ]]>
</StorageLocation>
<ASIN>
<![CDATA[ ]]>
</ASIN>
<UPC>
<![CDATA[ ]]>
</UPC>
<SalesTaxAmount>
<![CDATA[ 0.0000 ]]>

</SalesTaxAmount>
<DiscountAmount>
<![CDATA[ 1.0000 ]]>
</DiscountAmount>
<SoldPrice>
<![CDATA[ 0.0000 ]]>
</SoldPrice>
<WarehouseName>
<![CDATA[ ]]>
</WarehouseName>
<MarketLocal>
<![CDATA[ Amazon ]]>
</MarketLocal>
<OrderDate>
<![CDATA[ 8/18/2003 12:00:00 AM ]]>
</OrderDate>
<SalesChannel>
<![CDATA[ ]]>
</SalesChannel>
<CostAtTimeOfPurchase>
<![CDATA[ 100.0000 ]]>
</CostAtTimeOfPurchase>
<AsinAtTimeOfPurchase>
<![CDATA[ aaa ]]>
</AsinAtTimeOfPurchase>
<ManufacturerAtTimeOfPurchase>
<![CDATA[ bbb ]]>
</ManufacturerAtTimeOfPurchase>
<ModelNumberAtTimeOfPurchase>
<![CDATA[ ccc ]]>
</ModelNumberAtTimeOfPurchase>
</Order>

</Orders>
<TotalOrders>110</TotalOrders>
</SearchOrders>
</LiquidateDirect>

10

Appendix B: InsertShippingRecord Method Documentation


SaveShipmentRecord (string appKey, string securityKey, string xslUrl, string
shipmentDataXml)
appKey: WebServices Company API Key.
xslUri: obsolete.
securityKey: WebServices Developer Security Key.
shipmentDataXml: see format below
<UploadShippingDetails xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Shipment>
<UploadShippingDetailsShipment>
<Marketplace></Marketplace>
<StoreOrderID></StoreOrderID>
<SCSaleID></SCSaleID>
<poID></poID>
<TrackingNumber></TrackingNumber>
<ShipMethod></ShipMethod>
<ShipDate></ShipDate>
<ShippedQty></ShippedQty>
<ShipCost></ShipCost>
<ShipProcessor></ShipProcessor>
<PackageType></PackageType>
<listingID></listingID>
<exchangeID></exchangeID>
<warehouseID></warehouseID>
</UploadShippingDetailsShipment>
</Shipment>
</UploadShippingDetails>
At least one of the following fields should be provided: StoreOrderID/ SCSaleID / poID
When StoreOrderID is used, MarketPlace is required.
Listing ID (Optional) is a product id issued by specific market place (like ItemID on eBay or
product_id in Magento)
exchangeID (Optional) is a market place transaction id issued by specific market place
Multiple Shipment nodes are allowed in a single call.

Marketplace values:
Amazon = 1,
Half = 2,
eBay = 3,
Yahoo = 4,
MyStore = 5,
Buy = 32,
Shop = 33,
Sears = 34
Shipping methods (public enum ShipTypesEnum
11

{
Media = 0,
Express = 1,
Priority = 2,
NotAvailable = 3,
BoundedPrintedMatter = 4,
FirstClass = 5,
LibraryMail = 6,
ParcelPost = 7,
PostCard = 8,
PreSortedFirst = 9,
PreSortedStandard = 10,
NextDayDomestic = 11,
SecondDayDomestic = 12,
NextDayInternational = 13,
SecondDayInternational = 14,
Standard = 15,
OvernightFlatRate = 16,
USPSExpress = 17,
FedexGround = 18,
FedexGroundInternational = 181,
FedexFirstOvernight = 19,
Fedex2ndDay = 20,
Fedex2ndDayAM = 201,
FedexExpressSaver = 24,
FedexStandardOvernight = 25,
FedexPriorityOvernight = 26,
FedexGroundHomeDelivery = 27,
FedexGroundDateCertainHomeDelivery = 271,
FedexGroundEveningHomeDelivery = 272,
FedexGroundAppointmentHomeDelivery = 273,
FedexSmartPost = 28,
FedexIntEconomy = 29,
FedexIntEconomyFreight = 30,
FedexIntFirst = 31,
FedexIntPriority = 32,
FedexIntPriorityFreight = 33,
DHLExpress = 34,
DHLExpress1030AM = 35,
DHLExpressSaturday = 36,
DHLGround = 37,
DHLNextAfternoon = 38,
DHLSecondDay = 39,
UPSNextDayAir = 40,
UPSSecondDayAir = 41,
UPSGround = 42,
UPSExpress = 43,
UPSExpedited = 44,
UPSStandard = 45,
UPSThreeDaySelect = 46,
UPSNextDayAirSaver = 47,
12

UPSNextDayAirEarlyAM = 48,
UPSExpressPlus = 49,
UPSSecondDayAirAM = 50,
UPSSaver = 51,
UPSTodayStandard = 52,
UPSTodayDedicatedCourier = 53,
UPSTodayIntercity = 54,
UPSTodayExpress = 55,
UPSTodayExpressSaver = 56,
OverstockBestGround = 57,
Overstock1Day = 58,
Overstock2Day = 59,
Overstock3Day = 60,
StandardInternational = 61,
LocalDelivery = 62,
Other = 63,
USPSGlobalExpress = 64,
USPSGlobalPriority = 65,
OtherInternational = 66,
FreightShipping = 67,
FreightShippingInternational = 68,
ExpeditedInternational = 69,
UPSWorldWideExpedited = 70,
UPSWorldWideExpress = 71,
UPSWorldWideExpressPlus = 72,
USPSPriorityMailInternationalFlatRate = 77,
USPSParcelSelect = 78,
USPSFirstClassInternational = 79,
UPSStandardToCanada = 80,
USPSPriorityFlatRateBoxSmall = 81,
USPSPriorityFlatRateBoxMedium = 82,
USPSPriorityFlatRateBoxLarge = 83,
USPSPriorityFlatRateEnvelope = 84,
USPSIntPriorityFlatRateBoxSmall = 85,
USPSIntPriorityFlatRateBoxMedium = 86,
USPSIntPriorityFlatRateBoxLarge = 87,
USPSIntExpressFlatRateEnvelope = 88,
USPSIntPriorityFlatRateEnvelope = 89,
USPSPriorityFlatRateBoxRegionalA = 90,
USPSPriorityFlatRateBoxRegionalB = 91,
USPSPriorityMailPaddedFlatRateEnvelope = 92,
USPSInternationalExpress= 93,
USPSEconomyParcel = 94,
USPSEconomyEnvelope = 95,
EconomyShippingFromOutsideUS = 96,
StandardShippingFromOutsideUS = 97,
ExpeditedShippingFromOutsideUS = 98,
USPSExpressMailLegalFlatRateEnvelope = 99,
USPSPriorityMailInternationalLegalFlatRateEnvelope = 100,
USPSPriorityMailInternationalPaddedFlatRateEnvelope = 101,
USPSPriorityMailLegalFlatRateEnvelope = 102,
13

USPSExpressFlatRateEnvelope = 103,
UPSSurePost = 104,
UPSSurePostMedia = 105,
UPSSurePostBoundedPrintedMatter = 106,
UPSMailInnovation = 107,
USPSGSSIntPriorityAirmail = 108,
USPSGSSIntPriorityAirmailMBag = 109,
USPSGSSIntSurfaceAirLift = 110,
USPSGSSIntSurfaceAirLiftMBag = 111,
USPSGSSLBO = 112,
USPSPriorityMailFlatRateBoxSmall = 113,
USPSPriorityMailFlatRateBoxMedium = 114,
USPSPriorityMailFlatRateBoxLarge = 115,
USPSPriorityMailFlatRateEnvelope = 116,
DHLGlobalMailFirstClassParcels = 117,
USPSGSSPriorityMail = 118,
USPSGSSPriorityMailInternational = 119,
USPSGSSExpressMailInternational = 120,
PickUpNow = 121,
PickUpToday = 122,
PickUpLater = 123,
DHLGlobalMailFirstClassProduct = 124,
DHLGlobalMailPriorityMail = 125,
DHLGlobalMailParcelPlusGround = 126,
DHLGlobalMailParcelsGround = 127,
DHLGlobalMailParcelsExpedited = 128,
DHLGlobalMailMediaMailGround = 129,
DHLGlobalMailCatalogBPMGround = 130,
DHLGlobalMailCatalogBPMExpedited = 131,
DHLGlobalMailBPMGround = 132,
DHLGlobalMailBPMExpedited = 133,
DHLGlobalMailParcelPlusExpedited = 134,
EbayGlobalShipping = 135,
Expedited = 136,
LocalPickup = 137,
LocalDeliveryOrPickup = 138,
UPSMailInnovationFirstClassMail = 139,
UPSMailInnovationPriorityMail = 140,
UPSMailInnovationExpeditedMailInnovations = 141,
UPSMailInnovationPriorityMailInnovations = 142,
UPSMailInnovationEconomyMailInnovations = 143
}
Shipping processor (public enum ShipProccesorsEnum
{
ENDICIA = 0,
USPS = 1,
NONE = 2,
FedEx = 3,
UPS = 4,
DHL = 5,
14

Other = 6,
DeutschePost = 7,
HongKongPost = 8,
Chronopost = 9,
ColiposteDomestic = 10,
ColiposteInternational = 11,
Correos = 12,
Hermes = 13,
iLoxx = 14,
Nacex = 15,
CityLink = 16,
RoyalMail = 17,
Yodel = 18,
Singaporepost = 19,
Swisspost = 20
}
Package type (public enum ShippingPackageTypeEnum {
NotDefined = -1,
CustomPackaging = 0,
Fedex10KgBox = 1,
Fedex25KgBox = 2,
FedexBox = 3,
FedexPak = 4,
FedexEnvelope = 5,
FedexTube = 6,
DHLLetter = 7,
DHLPackage = 8,
UPSLetter = 9,
UPSTube = 10,
UPSPAK = 11,
UPSSmallExpressBox = 12,
UPSMediumExpressBox = 13,
UPSLargeExpressBox = 14,
UPSPallet = 15,
UPS25KGBox = 20,
UPS10KGBox = 21,
USPSLetter = 17,
USPSTube = 19,
USPSFlat = 22,
USPSRectParcel = 23,
USPSNonRectParcel = 24,
USPSFlatRateEnvelope = 25,
USPSFlatRateMediumBox = 26,
USPSFlatRateLargeBox = 27,
USPSFlatRateSmallBox = 28,
USPSFlatRatePaddedEnvelope = 29,
USPSPostcard = 30,
USPSEnvelope = 31,
USPSRegionalRateBoxA = 32,
USPSRegionalRateBoxB = 33,
15

USPSInternationalFlatRateDVDBox = 34,
USPSInternationalFlatRateLargeVideoBox = 35,
USPSFlatRateLegalEnvelope = 36,
USPSFlatRateGiftCardEnvelope = 37,
USPSFlatRateWindowEnvelope = 38,
USPSFlatRateCardBoardEnvelope = 39,
USPSFlatRateSmallEnvelope = 40,
USPSRegionalRateBoxC = 41,
USPSFlatRateLargeBoardGameBox = 42,
USPSFlatRateRegularBox = 43
})

16

Examples:
Request example1:
<?xml version="1.0" ?>
<UploadShippingDetails xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Shipment>
<UploadShippingDetailsShipment>
<Marketplace>Amazon</Marketplace>
<StoreOrderID>058-8936591-6755566</StoreOrderID>
<TrackingNumber>1234567890</TrackingNumber>
<ShipMethod>USPS Media</ShipMethod>
<ShipDate></ShipDate>
<ShippedQty></ShippedQty>
<ShipCost></ShipCost>
</UploadShippingDetailsShipment>
</Shipment>
</UploadShippingDetails>
Response:
<SaveShipmentRecord>
<DateTime>09/06/2013 10:50:30</DateTime>
<Result>Success</Result>
</SaveShipmentRecord>
Request example 2:
<?xml version="1.0"?>
<UploadShippingDetails xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Shipment>
<UploadShippingDetailsShipment>
<Marketplace>MyStore</Marketplace>
<StoreOrderID>MA7665085</StoreOrderID>
<TrackingNumber>1234567890</TrackingNumber>
<ShipMethod>UPS Ground</ShipMethod>
<ShipDate>2013-09-09T08:57:23.162658-07:00</ShipDate>
<ShippedQty>0</ShippedQty>
<ShipCost>0</ShipCost>
</UploadShippingDetailsShipment>
</Shipment>
</UploadShippingDetails>
Response:
<SaveShipmentRecord>
<DateTime>09/09/2013 09:10:30</DateTime>
<Result>Success</Result>
</SaveShipmentRecord>
17

Request example 3
<?xml version="1.0"?>
<UploadShippingDetails xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Shipment>
<UploadShippingDetailsShipment>
<TrackingNumber>11223344556</TrackingNumber>
<ShipMethod>Standard</ShipMethod>
<ShipDate>2013-09-09T10:14:28.2555175-07:00</ShipDate>
<SCSaleID>405297467</SCSaleID>
<ShippedQty>0</ShippedQty>
<ShipCost>23.5</ShipCost>
</UploadShippingDetailsShipment>
</Shipment>
</UploadShippingDetails>
Response:
<SaveShipmentRecord>
<DateTime>09/09/2013 10:14:30</DateTime>
<Result>Success</Result>
</SaveShipmentRecord>

18

Вам также может понравиться