零售和第三方物流
# 零售 (POS) Web Services
# 获取 POS 会员记录
获取详细信息,包括 POS 会员的客户编号/ID。
HTTP 请求
POST http://[server]/jsf/rfws/erp/poscore/member/getCustomer/
参数
所有参数都封装在一个 JSON 对象中。请阅读请求示例了解详情。
名字 | 类型 | 说明 |
---|---|---|
beId | int | 必填. 企业法人 ID |
code | string | 会员编号 |
displayName | string | 会员显示名称 |
string | 会员邮箱 | |
mobile | string | 会员手机 |
tel | string | 会员电话 |
结果 (JSON 数组: "data" )
名字 | 类型 | 说明 |
---|---|---|
memCode | string | 会员编号 |
memName | string | 会员显示名称 |
cusId | int | 客户ID |
cusCode | string | 客户编号 |
mobile | string | 会员手机 |
tel | string | 会员电话 |
string | 会员邮箱 |
请求示例:
JsonObject data = new JsonObject();
data.addProperty("beId", 203);
data.addProperty("mobile", "98765432");
RequestBody requestBody = RequestBody.create(MediaType.parse("application/json; charset=utf-8"), data.toString());
String url = "http://" + server + "/jsf/rfws/erp/poscore/member/getCustomer/";
Request request = new Request.Builder()
.url(url)
.addHeader("client_id", MyValue.clientID)
.addHeader("authorization", "Bearer " + access_token)
.addHeader("cache-control", "no-cache")
.post(requestBody)
.build();
OkHttpClient client = new OkHttpClient();
Response response = client.newCall(request).execute();
响应示例:
{
"code": "0",
"data": [
{
"memCode": "KS_M001",
"memName": "Mr. TM Cheung",
"cusId": 27394,
"mobile": "98765432",
"tel": "32459876",
"cusCode": "KS_M001",
"email": "tmchan@mailexpress.com"
},
{
"memCode": "KS_M005",
"memName": "Mr. Expire Cardo",
"cusId": 27408,
"mobile": "98765432",
"tel": "",
"cusCode": "KS_M005",
"email": ""
}
],
"success": true,
"message": "Success"
}
# 获取客户交易历史
获取指定日期范围内客户的交易历史记录(来自wholesale、 e-commerce、 magento 和 POS)。
HTTP 请求
POST http://[server]/jsf/rfws/erp/generalCus/getTransaction/
参数
名字 | 类型 | 说明 |
---|---|---|
beId | int | 必填. 企业法人 ID |
tranType | string | 必填. 交易类型: pos / ecom / magento / wholesale |
customers | JSONArray | 客户编号的JSON数组 |
orders | JSONArray | 订单编号的JSON数组 |
dateFrom | date | 起始日期,格式为 "YYYY-MM-DD" |
dateTo | date | 结束日期,格式为 "YYYY-MM-DD" |
参数 (JSON 数组)
名字 | 类型 | 说明 |
---|---|---|
code | string | 必填. 客户编号 |
orders (JSON 数组)
名字 | 类型 | 说明 |
---|---|---|
code | string | 必填. 订单编号 |
结果 (JSON 数组: "data")
名字 | 类型 | 说明 |
---|---|---|
header | JSON | Header 信息 JSON 字符串 |
footers | JSONArray | Footer 信息 JSON 数组 |
relations | JSONArray | 相关发票或送货单 JSON 数组 |
header (JSON 对象)
名字 | 类型 | 说明 |
---|---|---|
code | string | 交易编号 |
tDate | date | 交易日期 |
cus | JSON | 客户信息 JSON 字符串 |
cur | JSON | 货币信息 JSON 字符串 |
netAmt | decimal | 发票净额 |
invDiscAmt | decimal | 整张发票的折扣金额 |
cus (JSON 对象)
名字 | 类型 | 说明 |
---|---|---|
id | int | 客户 ID |
code | string | 客户编号 |
cur (JSON 对象)
名字 | 类型 | 说明 |
---|---|---|
id | int | 货币 ID |
code | string | 货币编号 |
desc | string | 货币代号 |
footers (JSON 数组)
名字 | 类型 | 说明 |
---|---|---|
proId | int | 产品 ID |
proDesc | String | 产品说明 |
qty | decimal | 数量 |
unit | JSON | 单位信息 JSON 字符串 |
discAmt | decimal | 产品折扣金额 |
amt | decimal | 金额 |
up | decimal | 单价 |
unit (JSON 对象)
名字 | 类型 | 说明 |
---|---|---|
id | int | 单位 ID |
code | string | 单位编号 |
relations (JSON 数组)
名字 | 类型 | 说明 |
---|---|---|
code | string | 编号 |
module | string | 模块名称: pos / dn / siso |
请求示例:
JsonArray orderJsonArray = new JsonArray();
JsonObject orderJsonObj = new JsonObject();
orderJsonObj.put("code", "00320180611193917507");
orderJsonArray.add(orderJsonObj);
orderJsonObj = new JsonObject();
orderJsonObj.put("code", "00320180611170803142");
orderJsonArray.add(orderJsonObj);
JsonObject data = new JsonObject();
data.addProperty("beId", 203);
data.addProperty("dateFrom", "2018-06-11");
data.addProperty("tranType", "pos");
data.addProperty("orders", orderJsonArray);
RequestBody requestBody = RequestBody.create(MediaType.parse("application/json; charset=utf-8"), data.toString());
String url = "http://" + server + "/jsf/rfws/erp/generalCus/getTransaction/";
Request request = new Request.Builder()
.url(url)
.addHeader("client_id", MyValue.clientID)
.addHeader("authorization", "Bearer " + access_token)
.addHeader("cache-control", "no-cache")
.post(requestBody)
.build();
OkHttpClient client = new OkHttpClient();
Response response = client.newCall(request).execute();
响应示例:
{
"code": "0",
"data": [
{
"header": {
"cus": {
"code": "",
"id": 0
},
"tDate": "2018-06-11",
"cur": {
"code": "H",
"id": 2,
"desc": "HK$"
},
"netAmt": 1550,
"code": "00320180611170803142",
"invDiscAmt": 50
},
"relations": [],
"footers": [
{
"proDesc": "KC Computer",
"unit": {
"code": "",
"id": 39321
},
"proId": 4308,
"qty": 1,
"amt": 1600,
"up": 1600,
"discAmt": 0
}
]
},
{
"header": {
"cus": {
"code": "",
"id": 0
},
"tDate": "2018-06-11",
"cur": {
"code": "H",
"id": 2,
"desc": "HK$"
},
"netAmt": 56,
"code": "00320180611193917507",
"invDiscAmt": 20
},
"relations": [
{
"code": "00320180611193230187",
"module": "pos"
}
],
"footers": [
{
"proDesc": "雞肶",
"unit": {
"code": "",
"id": 39298
},
"proId": 4288,
"qty": 1,
"amt": 19,
"up": 19,
"discAmt": 0
},
{
"proDesc": "雞肶",
"unit": {
"code": "",
"id": 39298
},
"proId": 4288,
"qty": 1,
"amt": 19,
"up": 19,
"discAmt": 0
},
{
"proDesc": "雞肶",
"unit": {
"code": "",
"id": 39298
},
"proId": 4288,
"qty": 2,
"amt": 38,
"up": 19,
"discAmt": 0
}
]
}
],
"success": true,
"message": "Success"
}
# 获取 POS 产品定价
从自动定价/价目表(POS)和产品 FM 中加载价格,获取特定日期的产品售价/折扣。
HTTP 请求
POST http://[server]/jsf/rfws/erp/poscore/product/getProInfoByCus/
参数
名字 | 类型 | 说明 |
---|---|---|
beId | int | 必填. 企业法人 ID |
date | date | 必填. 指定日期,格式为 "YYYY-MM-DD" |
customers | JSONArray | 客户编号 JSON 数组 |
products | JSONArray | 产品编号 JSON 数组 |
shopId | int | POS 门店 ID |
customers (JSON 数组)
名字 | 类型 | 说明 |
---|---|---|
code | string | 必填. 客户编号 |
products (JSON 数组)
名字 | 类型 | 说明 |
---|---|---|
code | string | 必填. 产品编号 |
结果 (JSON 数组:"data")
名字 | 类型 | 说明 |
---|---|---|
cusCode | string | 客户编号 |
pros | JSONArray | 产品信息 JSON 数组 |
pros (JSON 数组)
名字 | 类型 | 说明 |
---|---|---|
id | int | 产品 ID |
code | string | 产品编号 |
desc | string | 产品说明 |
unit | JSON | 单位信息 JSON 字符串 |
price | JSON | 价格信息 JSON 字符串 |
series | JSON | 系列信息 JSON 字符串 |
amt | decimal | 金额 |
retailType | string | 零售类型: retail / packPro / service |
unit (JSON 对象)
名字 | 类型 | 说明 |
---|---|---|
id | int | 单位 ID |
code | string | 单位编号 |
price (JSON 对象)
名字 | 类型 | 说明 |
---|---|---|
disc | decimal | 折扣 |
up | int | 单价 |
type | string | 价格来源: autoPricing / priceList / product |
series (JSON 对象)
名字 | 类型 | 说明 |
---|---|---|
id | int | 系列 ID |
code | string | 系列编号 |
desc | string | 系列说明 |
请求示例:
JsonArray cusJsonArray = new JsonArray();
JsonObject cusJsonObj new JsonObject();
cusJsonObj.put("code", "KS_M001");
cusJsonArray.add(cusJsonObj);
JsonArray proJsonArray = new JsonArray();
JsonObject proJsonObj = new JsonObject();
proJsonObj.put("code", "KC_POS_001");
proJsonArray.add(proJsonObj);
proJsonObj = new JsonObject();
proJsonObj.put("code", "KC_PC_001");
proJsonArray.add(proJsonObj);
JsonObject data = new JsonObject();
data.addProperty("beId", 203);
data.addProperty("date", "2018-06-05");
data.addProperty("customers", cusJsonArray);
data.addProperty("products", proJsonArray);
RequestBody requestBody = RequestBody.create(MediaType.parse("application/json; charset=utf-8"), data.toString());
String url = "http://" + server + "/jsf/rfws/erp/poscore/product/getProInfoByCus/";
Request request = new Request.Builder()
.url(url)
.addHeader("client_id", MyValue.clientID)
.addHeader("authorization", "Bearer " + access_token)
.addHeader("cache-control", "no-cache")
.post(requestBody)
.build();
OkHttpClient client = new OkHttpClient();
Response response = client.newCall(request).execute();
响应示例:
{
"code": "0",
"data": [
{
"pros": [
{
"unit": {
"code": "PCS",
"id": 3
},
"retailType": "retail",
"code": "KC_PC_001",
"price": {
"disc": 23,
"up": 369,
"type": "priceList"
},
"series": {
"code": "KC-SES-001",
"id": 3,
"desc": "日常用品"
},
"id": 4308,
"desc": "PC (HX84953)"
},
{
"unit": {
"code": "PCS",
"id": 3
},
"retailType": "retail",
"code": "KC_POS_001",
"price": {
"disc": 10,
"up": 33,
"type": "autoPricing"
},
"series": {
"code": "KC-SES-001",
"id": 3,
"desc": "日常用品"
},
"id": 4288,
"desc": "POS 雞肶"
}
],
"cusCode": "KS_M001"
}
],
"success": true,
"message": "Success"
}
# 注册新 POS 会员
注册新 POS 会员。
HTTP 请求
POST http://[server]/jsf/rfws/erp/poscore/member/add/
参数
所有参数都封装在一个 JSON 对象中。请阅读请求示例了解详情。
名字 | 类型 | 说明 |
---|---|---|
beId | int | 必填. 企业法人 ID |
memTypeId | int | 必填. 会员类别 ID |
mainCardNo | string | 主卡编号 |
cardNameId | int | 卡名 |
mobile | string | 手机 |
titleCode | string | 称谓编号: mr / mrs / miss |
firstName | string | 名字 |
lastName | string | 姓氏 |
displayName | string | 简称 |
dayOfBirth | int | 出生日期 |
monthOfBirth | int | 出生月份 |
age | int | 年龄 |
idNo | string | ID 编号 |
gender | string | 性别: 男 / 女 |
shopId | int | POS 门店 ID |
结果
名字 | 类型 | 说明 |
---|---|---|
success | int | true 表示成功; false 表示错误 |
messageCode | string | 0001 表示成功; 其他信息编号代表着不同的信息 |
message | string | 成功 / 失败原因 |
请求示例:
JsonObject data = new JsonObject();
data.addProperty("beId", 203);
data.addProperty("lastName", "Chan");
data.addProperty("gender", "male");
data.addProperty("displayName", "Mr. Ben Chan");
data.addProperty("mobile", "23456789");
data.addProperty("titleCode", "mr");
data.addProperty("monthOfBirth", 1);
data.addProperty("firstName", "Ben");
data.addProperty("dayOfBirth", 1);
data.addProperty("cardNameId", 15);
data.addProperty("shopId", 2);
data.addProperty("memTypeId", 10);
RequestBody requestBody = RequestBody.create(MediaType.parse("application/json; charset=utf-8"), data.toString());
String url = "http://" + server + "/jsf/rfws/erp/poscore/member/add/";
Request request = new Request.Builder()
.url(url)
.addHeader("client_id", MyValue.clientID)
.addHeader("authorization", "Bearer " + access_token)
.addHeader("cache-control", "no-cache")
.post(requestBody)
.build();
OkHttpClient client = new OkHttpClient();
Response response = client.newCall(request).execute();
响应示例:
{
"success": true,
"messageCode": "0001",
"message":"Success"
}
# 获取会员的储值结余
获取指定日期会员的储值结余。
HTTP 请求
POST http://[server]/jsf/rfws/erp/storeValue/getSVBalance/
参数
名字 | 类型 | 说明 |
---|---|---|
beId | int | 必填. 企业法人 ID |
memId | int | 必填. 会员 ID |
svId | int | 必填. 储值 ID |
chkDate | date | 截至日期,格式为 "YYYY-MM-DD",默认为今天 |
结果 (JSON 对象:"data")
名字 | 类型 | 说明 |
---|---|---|
balance | string | 储值结余 |
请求示例:
JsonObject data = new JsonObject();
data.addProperty("beId", 203);
data.addProperty("memId", 5);
data.addProperty("svId", 28);
data.addProperty("chkDate", "2019-06-28");
RequestBody requestBody = RequestBody.create(MediaType.parse("application/json; charset=utf-8"), data.toString());
String url = "http://" + server + "//jsf/rfws/erp/bonus/getBpBal/";
Request request = new Request.Builder()
.url(url)
.addHeader("client_id", MyValue.clientID)
.addHeader("authorization", "Bearer " + access_token)
.addHeader("cache-control", "no-cache")
.post(requestBody)
.build();
OkHttpClient client = new OkHttpClient();
Response response = client.newCall(request).execute();
响应示例:
{
"success": true,
"code": "0",
"message": "Success",
"data": {
"balance": 25
}
}
# 保存储值明细
保存储值明细。
HTTP 请求
POST http://[server]/jsf/rfws/erp/poscore/storeValue/saveSVLedger/
参数
所有参数都封装在一个 JSON 对象中。请阅读请求示例了解详情。
名字 | 类型 | 说明 |
---|---|---|
beId | int | 企业法人 ID, 数据列表的默认值。 |
memId | int | 会员 ID, 数据列表的默认值。 |
svId | int | 储值 ID, 数据列表的默认值。 |
svfId | int | 储值券 ID, 数据列表的默认值。 |
data | JSONArray | 储值明细数据列表。 |
数据列表 (JSON 对象: "data")
名字 | 类型 | 说明 |
---|---|---|
beId | int | 企业法人 ID |
memId | int | 会员 ID |
svId | int | 储值 ID |
svfId | int | 储值券 ID |
svLedger | decimal | 必填. 储值明细,不能为0。 |
tranType | String | 来源交易类别 |
tranId | int | 来源交易 ID |
tranCode | String | 来源交易编号 |
tranDate | date | 来源交易日期,格式为 "YYYY-MM-DD"。 |
expDate | date | 失效日期,格式为 "YYYY-MM-DD"。 |
desc | String | 说明 |
结果
名字 | 类型 | 说明 |
---|---|---|
status | boolean | true 表示成功;false 表示错误 |
message | string | 失败原因 |
请求示例:
JSONObject data = new JSONObject();
data.put("beId", "298");
data.put("memId", "196");
data.put("svId", "34");
data.put("svfId", "0");
JSONArray dataArray = new JSONArray();
JSONObject obj = new JSONObject();
obj.put("beId", "298");
obj.put("memId", "196");
obj.put("svId", "34");
obj.put("svfId", "0");
obj.put("svLedger", "30297.3600");
obj.put("tranType", "poscoreSVTransfer");
obj.put("tranId", "1");
obj.put("tranDate", "2019-04-22");
obj.put("tranCode", "TEST");
obj.put("expDate", "9999-12-31");
obj.put("desc", "");
dataArray.put(obj);
data.put("data", dataArray);
String path = PRE_URL + "/jsf/rfws/erp/poscore/storeValue/saveSVLedger";
HttpPost post = new HttpPost(path);
post.setEntity(new StringEntity(data.toString()));
post.addHeader("authorization", AUTHORIZATION);
post.addHeader("client_id", clientID);
post.addHeader("Content-Type", "application/json");
HttpResponse res = client.execute(post);
响应示例:
{
"success": true,
"message":"ce01_poscore.dataEmpty"
}
# 电子商务和 Magento Web Services
# 获取电商会员记录
获取详细信息,包括电商会员的客户编号/ID。
HTTP 请求
POST http://[server]/jsf/rfws/erp/ecom/member/getCustomer/
参数
所有参数都封装在一个 JSON 对象中。请阅读请求示例了解详情。
名字 | 类型 | 说明 |
---|---|---|
beId | int | 必填. 企业法人 ID |
name | string | 会员名字 |
string | 会员邮箱 | |
mobile | string | 会员手机 |
结果 (JSON 数组:"data")
名字 | 类型 | 说明 |
---|---|---|
memName | string | 会员名字 |
cusId | int | 客户 ID |
cusCode | string | 客户编号 |
mobile | string | 会员手机 |
string | 会员邮箱 |
请求示例:
JsonObject data = new JsonObject();
data.addProperty("beId", 203);
data.addProperty("name", "Lillie Dach");
RequestBody requestBody = RequestBody.create(MediaType.parse("application/json; charset=utf-8"), data.toString());
String url = "http://" + server + "/jsf/rfws/erp/ecom/member/getCustomer/";
Request request = new Request.Builder()
.url(url)
.addHeader("client_id", MyValue.clientID)
.addHeader("authorization", "Bearer " + access_token)
.addHeader("cache-control", "no-cache")
.post(requestBody)
.build();
OkHttpClient client = new OkHttpClient();
Response response = client.newCall(request).execute();
响应示例:
{
"code": "0",
"data": [
{
"memName": "Lillie Dach",
"cusId": 27406,
"mobile": "",
"cusCode": "CUS180005",
"email": "Lillie.Dach@data-generator.com"
}
],
"success": true,
"message": "Success"
}
# 获取 Magento 会员记录
获取详细信息,包括Magento会员的客户编号/ID。
HTTP 请求
POST http://[server]/jsf/rfws/eshop/getCustomer/
参数
所有参数都封装在一个 JSON 对象中。请阅读请求示例了解详情。
名字 | 类型 | 说明 |
---|---|---|
beId | int | 必填. 企业法人 ID |
firstName | string | 会员名字 |
lastName | string | 会员姓氏 |
string | 会员邮箱 |
结果 (JSON 数组: "data")
名字 | 类型 | 说明 |
---|---|---|
memId | int | 会员 ID |
cusId | int | 客户 ID |
cusCode | string | 客户编号 |
firstName | string | 会员名字 |
lastName | string | 会员姓氏 |
string | 会员邮箱 |
请求示例:
JsonObject data = new JsonObject();
data.addProperty("beId", 203);
data.addProperty("lastName", "Alan");
RequestBody requestBody = RequestBody.create(MediaType.parse("application/json; charset=utf-8"), data.toString());
String url = "http://" + server + "/jsf/rfws/eshop/getCustomer/";
Request request = new Request.Builder()
.url(url)
.addHeader("client_id", MyValue.clientID)
.addHeader("authorization", "Bearer " + access_token)
.addHeader("cache-control", "no-cache")
.post(requestBody)
.build();
OkHttpClient client = new OkHttpClient();
Response response = client.newCall(request).execute();
响应示例:
{
"code": "0",
"data": [
{
"firstName": "Alan",
"lastName": "Alan",
"cusId": 27099,
"cusCode": "CUS170004",
"email": "alan.wk.wong@mac.hk",
"memId": 1
}
],
"success": true,
"message": "Success"
}
# 第三方物流 (3PL) Web Services
# 获取捡货单列表
获取特定企业法人的捡货单列表。
HTTP 请求
POST http://[server]/jsf/rfws/erp/lsp/pickinglist/getList/
参数
所有参数都封装在一个 JSON 对象中。请阅读请求示例了解详情。
名字 | 类型 | 说明 |
---|---|---|
beId | int | 必填. 企业法人 ID |
locId | int | 地点 ID |
notYetScannedOnly | boolean | 如果为true ,结果集将只返回至少有一行下款尚未扫描(scanned = 0 )的捡货单。 |
结果 (JSON 数组: "data")
名字 | 类型 | 说明 |
---|---|---|
id | int | 捡货单 ID |
code | string | 捡货单编号 |
genDate | date | 捡货单的生成日期 |
lastScanDate | date | 捡货单的最后扫描日期 |
plStatus | string | 捡货单状态: open / pending / done |
scanBy | json | 用户信息 JSON 字符串 |
be | json | 企业法人信息 JSON 字符串 |
scanBy (JSON 对象)
名字 | 类型 | 说明 |
---|---|---|
id | int | 用户 ID |
code | string | 用户编号 |
desc | string | 用户说明 |
avatar | string | 用户照片的URL |
be (JSON 对象)
名字 | 类型 | 说明 |
---|---|---|
id | int | 企业法人 ID |
code | string | 企业法人编号 |
desc | string | 企业法人说明 |
请求示例:
JsonObject data = new JsonObject();
data.addProperty("beId", 173);
RequestBody requestBody = RequestBody.create(MediaType.parse("application/json; charset=utf-8"), data.toString());
String url = "http://" + server + "/jsf/rfws/erp/lsp/pickinglist/getList/";
Request request = new Request.Builder()
.url(url)
.addHeader("client_id", MyValue.clientID)
.addHeader("authorization", "Bearer " + access_token)
.addHeader("cache-control", "no-cache")
.post(requestBody)
.build();
OkHttpClient client = new OkHttpClient();
Response response = client.newCall(request).execute();
响应示例:
{
"data": [
{
"code": "PL20170065",
"genDate": "2017-11-09 00:00:00",
"lastScanDate": "1900-01-01 00:00:00",
"scanBy": {
"code": "",
"id": 0,
"desc": "",
"avatar": ""
},
"id": 51,
"plStatus": "open",
"be": {
"code": "KC_TEST_PICKING_LIST",
"id": 216,
"desc": "Test Picking List Company"
}
},
{
"code": "PL20170057",
"genDate": "2017-11-09 00:00:00",
"lastScanDate": "1900-01-01 00:00:00",
"scanBy": {
"code": "",
"id": 0,
"desc": "",
"avatar": ""
},
"id": 49,
"plStatus": "open"",
"be": {
"code": "KC_TEST_PICKING_LIST",
"id": 216,
"desc": "Test Picking List Company"
}
},
{
"code": "PL20170039",
"genDate": "2017-10-13 00:00:00",
"lastScanDate": "1900-01-01 00:00:00",
"plStatus": "open",
"scanBy": 0,
"id": 33",
"be": {
"code": "KC_TEST_PICKING_LIST",
"id": 216,
"desc": "Test Picking List Company"
}
}
],
"success": true,
"messageCode": "0001",
"message": "Success"
}
# 获取捡货单详情
获取特定企业法人的特定捡货单。
HTTP 请求
POST http://[server]/jsf/rfws/erp/lsp/pickinglist/get/
参数
所有参数都封装在一个 JSON 对象中。请阅读请求示例了解详情。
名字 | 类型 | 说明 |
---|---|---|
id | int | 必填. 捡货单 ID |
beId | int | 必填. 企业法人 ID |
结果 (JSON 对象: "data")
名字 | 类型 | 说明 |
---|---|---|
id | int | 捡货单 ID |
code | string | 捡货单编号 |
plStatus | string | 捡货单状态: open / pending / done |
lsp | json | 物流服务供应商信息 JSON 字符串 |
products | json | 产品信息 JSON 数组 |
parcels | json | 包裹信息 JSON 数组 |
lsp (JSON 对象)
名字 | 类型 | 说明 |
---|---|---|
id | int | 物流服务供应商 ID |
code | string | 物流服务供应商编号 |
desc | string | 物流服务供应商说明 |
products (JSON 数组)
名字 | 类型 | 说明 |
---|---|---|
id | int | 产品 ID |
code | string | 产品编号 |
desc | string | 产品说明 |
finalQty | decimal | 要交付的产品数量 |
scanned | decimal | 产品的扫描数量 |
adjQty | decimal | 产品的调整数量 |
photos | JSON | 产品 FM 中选中了 打印 属性的照片列表 |
toBePicked | decimal | 待捡货产品数量 |
useLotno | boolean | 说明产品是否使用批号 |
baseUnit | JSON | 基本单位信息 JSON 字符串 |
lotNos | JSON | 批号信息 JSON 数组 |
baseUnit (JSON 对象)
名字 | 类型 | 说明 |
---|---|---|
id | int | 单位 ID |
code | string | 单位编号 |
lotNos (JSON 数组)
名字 | 类型 | 说明 |
---|---|---|
id | int | 批号 ID |
code | string | 批号编号 |
scanned | decimal | 批号的扫描数量 |
qty | decimal | 批号的最终数量 |
parcels (JSON 数组)
名字 | 类型 | 说明 |
---|---|---|
widthCm | decimal | 包裹的宽 |
heightCm | decimal | 包裹的高 |
lengthCm | decimal | 包裹的长 |
ttlVolumeCBM | decimal | 总体积 |
ttlWeightKG | decimal | 总重量 |
ttlQty | decimal | 总数量 |
parcel | JSON | 包裹信息 JSON 字符串 |
parcel (JSON 对象)
名字 | 类型 | 说明 |
---|---|---|
id | int | 包裹 ID |
code | string | 包裹编号 |
desc | string | 包裹说明 |
请求示例:
JsonObject data = new JsonObject();
data.addProperty("beId", 173);
data.addProperty("id", 33);
RequestBody requestBody = RequestBody.create(MediaType.parse("application/json; charset=utf-8"), data.toString());
String url = "http://" + server + "/jsf/rfws/erp/lsp/pickinglist/get/";
Request request = new Request.Builder()
.url(url)
.addHeader("client_id", MyValue.clientID)
.addHeader("authorization", "Bearer " + access_token)
.addHeader("cache-control", "no-cache")
.post(requestBody)
.build();
OkHttpClient client = new OkHttpClient();
Response response = client.newCall(request).execute();
响应示例:
{
"data": {
"code": "PL20180115",
"lsp": {
"code": "4PX_H3",
"id": 18,
"desc": "4PX Hong Kong"
},
"plStatus": "open",
"id": 89,
"parcels": [
{
"parcel": {
"code": "4PX_H3_P",
"id": 14,
"desc": "4PX Parcel "
},
"widthCm": 2,
"heightCm": 3,
"ttlVolumeCBM": 0.000006,
"lengthCm": 1,
"ttlWeightKG": 1,
"ttlQty": 1
}
],
"products": [
{
"baseUnit": {
"code": "PCS",
"id": 3
},
"code": "IPAD 5",
"finalQty": 10,
"scanned": 0,
"adjQty": 10,
"id": 3982,
"useLotno" : true,
"lotNos": [
{
"code": "OS018015300000000000",
"scanned": 1,
"qty": 4,
"id": 1542
}
],
"photos": [],
"toBePicked": 10,
"desc": "iPad 5"
}
]
},
"success": true,
"messageCode": "0001",
"message": "Success"
}
# 保存捡货单
为特定的企业法人保存捡货单
HTTP 请求
POST http://[server]/jsf/rfws/erp/lsp/pickinglist/save/
参数
所有参数都封装在一个 JSON 对象中。请阅读请求示例了解详情。
如果不提供包裹或产品,下款将保持不变。
名字 | 类型 | 说明 |
---|---|---|
beId | int | 必填. 企业法人 ID |
id | int | 必填. 捡货单 ID |
action | string | pending / done / clear |
lspId | int | 物流服务供应商 ID |
parcels | JSON | 包裹信息 JSON 数组 (可选) |
products | JSON | 产品信息 JSON 数组 (可选) |
parcels (JSON 数组)
名字 | 类型 | 说明 |
---|---|---|
widthCm | decimal | 必填. 包裹的宽 |
heightCm | decimal | 必填. 包裹的高 |
lengthCm | decimal | 必填. 包裹的长 |
ttlVolumeCBM | decimal | 必填. 总体积 |
ttlWeightKG | decimal | 必填. 总重量 |
parcel | JSON | 必填. 包裹信息 JSON 字符串 |
parcel (JSON 对象)
名字 | 类型 | 说明 |
---|---|---|
id | int | 必填. 包裹 ID |
products (JSON 数组)
名字 | 类型 | 说明 |
---|---|---|
id | int | 必填. 产品 ID |
finalQty | decimal | 必填. 要交付的产品数量 |
scanned | decimal | 必填. 产品的扫描数量 |
baseUnit | JSON | 必填. 基本单位信息 JSON 字符串 |
lotNos | JSON | 必填. 批号信息 JSON 数组 |
baseUnit (JSON 对象)
名字 | 类型 | 说明 |
---|---|---|
id | int | 必填. 单位 ID |
lotNos (JSON 数组)
名字 | 类型 | 说明 |
---|---|---|
id | int | 必填. 批号 ID |
code | string | 批号编号 |
scanned | decimal | 必填. 批号的扫描数量 |
qty | decimal | 必填. 批号的最终数量 |
结果
名字 | 类型 | 说明 |
---|---|---|
success | int | true 表示成功; false 表示错误 |
messageCode | string | 0001 表示成功; 其他信息编号代表着不同的信息 |
message | string | 成功 / 失败原因 |
请求示例:
RequestBody requestBody = RequestBody.create(MediaType.parse("application/json; charset=utf-8"), data.toString());
String url = "http://" + server + "/jsf/rfws/erp/lsp/pickinglist/save/";
Request request = new Request.Builder()
.url(url)
.addHeader("client_id", MyValue.clientID)
.addHeader("authorization", "Bearer " + access_token)
.addHeader("cache-control", "no-cache")
.post(requestBody)
.build();
OkHttpClient client = new OkHttpClient();
Response response = client.newCall(request).execute();
响应示例:
{
"success": true,
"messageCode": "0001",
"message":"Success"
}
# 获取包裹列表
获取特定企业法人的包裹列表。
HTTP 请求
POST http://[server]/jsf/rfws/erp/lsp/serviceProvider/getParcelList/
参数
所有参数都封装在一个 JSON 对象中。请阅读请求示例了解详情。
名字 | 类型 | 说明 |
---|---|---|
beId | int | 必填. 企业法人 ID |
lspId | int | 物流服务供应商 ID |
结果 (JSON 数组:"data")
名字 | 类型 | 说明 |
---|---|---|
id | int | 包裹 ID |
code | string | 包裹编号 |
desc | string | 包裹说明 |
length | decimal | 包裹的长 |
width | decimal | 包裹的宽 |
height | decimal | 包裹的高 |
lsp | json | 物流服务供应商信息 JSON 字符串 |
lsp (JSON 对象)
名字 | 类型 | 说明 |
---|---|---|
id | int | 物流服务供应商 ID |
code | String | 物流服务供应商编号 |
desc | String | 物流服务供应商说明 |
请求示例:
JsonObject data = new JsonObject();
data.addProperty("lspId", 17);
RequestBody requestBody = RequestBody.create(MediaType.parse("application/json; charset=utf-8"), data.toString());
String url = "http://" + server + "/jsf/rfws/erp/lsp/serviceProvider/getParcelList/";
Request request = new Request.Builder()
.url(url)
.addHeader("client_id", MyValue.clientID)
.addHeader("authorization", "Bearer " + access_token)
.addHeader("cache-control", "no-cache")
.post(requestBody)
.build();
OkHttpClient client = new OkHttpClient();
Response response = client.newCall(request).execute();
响应示例:
{
"data": [
{
"code": "BIG",
"length": 30,
"width": 40,
"lsp": {
"code": "SF",
"id": 5,
"desc": "S.F. Express"
},
"id": 1,
"desc": "Big size",
"height": 20
},
{
"code": "KC_ZTO_OBJ",
"length": 1,
"width": 2,
"lsp": {
"code": "ZTO",
"id": 7,
"desc": "中通"
},
"id": 3,
"desc": "中通貨",
"height": 3
}
],
"success": true,
"messageCode": "0001",
"message": "Success"
}
# 物流追踪
获取特定企业法人送货单的物流追踪信息。
HTTP 请求
POST http://[server]/jsf/rfws/erp/lsp/service/getTrackStatus/
参数
所有参数都封装在一个 JSON 对象中。请阅读请求示例了解详情。
名字 | 类型 | 说明 |
---|---|---|
beId | int | 必填. 企业法人 ID |
dnCode | string | aiM18中的送货单编号 |
trackCode | string | 物流商提供的追踪编号 |
只需要提供 dnCode 或 trackCode。
结果 (JSON 对象:"data")
名字 | 类型 | 说明 |
---|---|---|
dnCode | string | 送货单编号 |
trackCode | string | 物流追踪编号 |
state | string | 状态 |
tracks | json | 物流追踪信息 JSON 数组 |
tracks (JSON 数组)
名字 | 类型 | 说明 |
---|---|---|
date | date | 日期 |
status | String | 状态 |
remarks | String | 备注 |
请求示例:
JsonObject data = new JsonObject();
data.addProperty("dnCode", "DN201806300125");
RequestBody requestBody = RequestBody.create(MediaType.parse("application/json; charset=utf-8"), data.toString());
String url = "http://" + server + "/jsf/rfws/erp/lsp/serviceProvider/getTrackStatus/";
Request request = new Request.Builder()
.url(url)
.addHeader("client_id", MyValue.clientID)
.addHeader("authorization", "Bearer " + access_token)
.addHeader("cache-control", "no-cache")
.post(requestBody)
.build();
OkHttpClient client = new OkHttpClient();
Response response = client.newCall(request).execute();
# 下载物流标签
下载特定企业法人送货单的物流标签。
HTTP 请求
POST http://[server]/jsf/rfws/erp/lsp/service/printLabel/
参数
所有参数都封装在一个 JSON 对象中。请阅读请求示例了解详情。
名字 | 类型 | 说明 |
---|---|---|
beId | int | 必填. 企业法人 ID |
dnCode | string | aiM18中的送货单编号 |
trackCode | string | 物流商提供的追踪编号 |
只需要提供 dnCode 或 trackCode。
结果
HTML response code = 200,将下载物流标签的 pdf 或 html 文件。
请求示例:
JsonObject data = new JsonObject();
data.addProperty("dnCode", "DN201806300125");
RequestBody requestBody = RequestBody.create(MediaType.parse("application/json; charset=utf-8"), data.toString());
String url = "http://" + server + "/jsf/rfws/erp/lsp/serviceProvider/printLabel/";
Request request = new Request.Builder()
.url(url)
.addHeader("client_id", MyValue.clientID)
.addHeader("authorization", "Bearer " + access_token)
.addHeader("cache-control", "no-cache")
.post(requestBody)
.build();
OkHttpClient client = new OkHttpClient();
Response response = client.newCall(request).execute();