# Purchase Quotation
# Fetch Purchase Quotation List
# 一、Description
 Usage: Fetch Purchase Quotation List.
# 二、API Detail
 1、Request URL
| URL | http://[server]/jsf/rfws/search/search | 
|---|---|
| HTTP Method | GET | 
| Encode | UTF-8 | 
 2、URL Parameters
| Parameter | Type | Required | Remarks | 
|---|---|---|---|
| authorization | String(Header) | Yes | Access Token obtained via Oauth2 | 
| client_id | String(Header) | Yes | Client ID from [OAuth Applications], generated by the M18 | 
| stSearch | String(Query) | Yes | vqu | 
| beId | long(Query) | Yes | Business Entity ID | 
| formatId | long(Query) | No | Lookup Query ID, If not specified, the default format is used. | 
| startRow | int(Query) | No | Resultset offset : start index | 
| endRow | int(Query) | No | Resultset offset : end index | 
| quickSearchStr | String(Query) | No | Quick search keyword | 
 3、Request Sample
	CloseableHttpClient client = HttpClientBuilder.create().build();
	CloseableHttpResponse res = null;
	try {
		String url = "http://" + HostIP + ":" + HostPort + "/jsf/rfws/search/search";
		String param = "&stSearch=vqu&beId=11";
		HttpGet get = new HttpGet(url + "?" + param);
		get.addHeader("authorization", access_token);
		get.addHeader("client_id", ClientID);
		res = client.execute(get);
		if (res.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
			JSONObject json = JSON.parseObject(EntityUtils.toString(res.getEntity()));
		}
		get.releaseConnection();
	} catch (Exception e) {
		e.printStackTrace();
	} finally {
		try {
			if (res != null) {
				res.close();
			}
			if (client != null) {
				client.close();
			}
		} catch (Exception ex) {
			ex.printStackTrace();
		}
	}
 4、Response Sample
{
  	"stSearch": "vqu",
    "size": 10,
    "stSearchDisplay": "Purchase Quotation",
    "values": [
        {
            "code": "ITVQU220324A",
            "tDate": "2022-03-04",
            "mainvqu.venId.ven.code": "2000C-014",
            "mainvqu.venId.ven.desc__lang": "Choi Hop Hong Co., Ltd",
            "mainvqu.curId.cur.sym": "HK$",
            "mainvqu.flowTypeId.flowtype.code": "SALE",
            "mainvqu.flowTypeId.flowtype.desc": "Sales Flow",
            "iRev": 1,
            "lastModifyDate": "2022-03-24 12:24:49",
            "mainvqu.lastModifyUid.simpleUser.desc__lang": "Ivan Tan",
            "id": 47,
            "st_desc": "ITVQU220324A",
            "st_id": 47,
            "st_code": "ITVQU220324A"
        }
  	]
}
# Load Purchase Quotation
# 一、Description
 Usage: Load 【Purchase Quotation】Record
# 二、API Detail
 1、Request URL
| URL | http://[server]/jsf/rfws/root/api/read/vqu | 
|---|---|
| HTTP Method | GET | 
| Encode | UTF-8 | 
 2、URL Parameters
| Parameter | Type | Required | Remarks | 
|---|---|---|---|
| authorization | String(Header) | Yes | Access Token obtained via Oauth2 | 
| client_id | String(Header) | Yes | Client ID from [OAuth Applications], generated by the M18 | 
| menuCode | String(Query) | Yes | vqu | 
| id | long(Query) | Yes | Purchase Quotation ID | 
| param | String(Query) | No | Extra Pamameters: in JSON format | 
 3、Request Sample
		CloseableHttpClient client = HttpClientBuilder.create().build();
		CloseableHttpResponse res = null;
		try {
			String url = "http://" + HostIP + ":" + HostPort + "/jsf/rfws/root/api/read/vqu";
			String param = "&menuCode=vqu&id=" + id;
			HttpGet get = new HttpGet(url + "?" + param);
			get.addHeader("authorization", access_token);
			get.addHeader("client_id", ClientID);
			res = client.execute(get);
			if (res.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
				JSONObject json = JSON.parseObject(EntityUtils.toString(res.getEntity()));
				System.out.println(json);
			}
			get.releaseConnection();
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				if (res != null) {
					res.close();
				}
				if (client != null) {
					client.close();
				}
			} catch (Exception ex) {
				ex.printStackTrace();
			}
		}
 4、Response Sample
{
    "data": {
        "mainvqu": [
            {
                "lastModifyUid": 11,
                "useAccess": false,
                "virDeptId": 0,
                "expiredDate": -2209017600000,
                "position_zh-CN": "",
                "sysJson": "",
                "viewCode": "vqu",
                "expDate": 253402185600000,
                "beId": 11,
                "useAccessBl": false,
                "id": 47,
                "doctypeId": 0,
                "locked": false,
                "position_ctw": "",
                "lastModifyDate": 1648095889000,
                "createUid": 11,
                "rev": "1",
                "lastApproveUid": 11,
                "ttlCharge": 0.0,
                "expiredUid": 0,
                "freeQtyPer": 0.0,
                "descOrigin": "VENREF",
                "position_en": "",
                "position_zh-TW": "",
                "venId": 108,
                "i18nField": "{\"position_zh-CN\": \"\"}",
                "manId": 0,
                "ttlAmt": 0.0,
                "position": "",
                "flowTypeId": 1355,
                "status": "Y",
                "weightUnit": "kg",
                "tDate": 1646323200000,
                "code": "ITVQU220324A",
                "cnDeptId": 0,
                "amt": 0.0,
                "iRev": 1,
                "upOrigin": "POLAST",
                "ce01Module": "vqu",
                "curId": 2,
                "expired": false,
                "rate": 0.8,
                "domAmt": 0.0,
                "measUnit": "cbm",
                "printCount": 0,
                "statusModifyDate": 1648095889000,
                "createDate": 1648095889000,
                "useAccessWl": false,
                "position_ccn": "",
                "ttlDisc": 0.0,
                "position_haha1": "",
                "useAccessAutoCalc": false,
                "staffId": 723,
                "domAmtDiff": 0.0
            }
        ],
        "remvqu": [
            {
                "tradeTerm_ccn": "",
                "country": "",
                "tradeTerm_zh-CN": "",
                "shipAd4_haha1": "",
                "remarks_en": "",
                "packing_ccn": "",
                "recipient_ccn": "",
                "tradeTerm": "",
                "shipAd2_zh-TW": "",
                "shipAd1_en": "",
                "payTerm_zh-TW": "",
                "province": "",
                "packing_haha1": "",
                "tel": "",
                "recipient_haha1": "",
                "id": 47,
                "fax": "",
                "remarks_zh-TW": "",
                "shipAd1_zh-CN": "",
                "hId": 47,
                "payTerm": "",
                "payTerm_ccn": "",
                "remarks_ccn": "",
                "tradeTerm_zh-TW": "",
                "shipAd4_ccn": "",
                "zipcode": "",
                "shipAd2_en": "",
                "shipAd1_haha1": "",
                "i18nField": "{\"packing_zh-CN\": \"\", \"payTerm_zh-CN\": \"\", \"remarks_zh-CN\": \"\", \"shipAd1_zh-CN\": \"\", \"shipAd2_zh-CN\": \"\", \"shipAd3_zh-CN\": \"\", \"shipAd4_zh-CN\": \"\", \"recipient_zh-CN\": \"\", \"tradeTerm_zh-CN\": \"\"}",
                "remarks_zh-CN": "",
                "shipAd4_ctw": "",
                "packing_en": "",
                "shipAd3_zh-TW": "",
                "payTerm_zh-CN": "",
                "payTerm_ctw": "",
                "remarks_ctw": "",
                "lTime": "",
                "shipAd1_ccn": "",
                "tradeTerm_en": "",
                "shipCodeId": 0,
                "city": "",
                "shipAd3_ctw": "",
                "recipient_zh-CN": "",
                "payTerm_en": "",
                "iRev": 1,
                "shipAd4_zh-TW": "",
                "packing": "",
                "shipAd2_ccn": "",
                "ce01Module": "vqu",
                "payTerm_haha1": "",
                "shipAd3_en": "",
                "recipient_en": "",
                "packing_zh-TW": "",
                "shipAd3_zh-CN": "",
                "shipAd4_zh-CN": "",
                "shipAd2_ctw": "",
                "shipAd2_haha1": "",
                "shipAd1_ctw": "",
                "remarks_haha1": "",
                "email": "",
                "shipAd3_ccn": "",
                "recipient_zh-TW": "",
                "packing_ctw": "",
                "recipient_ctw": "",
                "tradeTerm_ctw": "",
                "packing_zh-CN": "",
                "telCountry": "",
                "tradeTerm_haha1": "",
                "shipAd1": "",
                "shipAd2": "",
                "shipAd3": "",
                "shipAd4": "",
                "telArea": "",
                "shipAd1_zh-TW": "",
                "shipAd4_en": "",
                "recipient": "",
                "shipAd2_zh-CN": "",
                "shipAd3_haha1": "",
                "remarks": ""
            }
        ],
        "vqut": [
            {
                "sourceId": 0,
                "unit2Id": 24,
                "dualQty": 0.0,
                "qty2": 0.0,
                "itemNo": "     1",
                "qty1": 1.0,
                "beId": 11,
                "bDesc": "",
                "bDesc_zh-TW": "",
                "newLotno": 0,
                "id": 68,
                "up": 10.0,
                "ctn": 0,
                "dDesc_haha1": "",
                "height": 0.0,
                "hId": 47,
                "perCtn": 0.0,
                "freeQtyPer": 0.0,
                "volume": 0.0,
                "dDesc": "",
                "footerKey": "",
                "i18nField": "{\"bDesc_zh-CN\": \"\", \"dDesc_zh-CN\": \"\"}",
                "sourceType": "pro",
                "qty": 1.0,
                "disc": 0.0,
                "packingDesc": "",
                "refCode": "",
                "lotNoId": 0,
                "dDesc_ctw": "",
                "innerQty": 0.0,
                "unit1Id": 24,
                "costAmt": 0.0,
                "amt": 0.0,
                "nw": 0.0,
                "iRev": 1,
                "leadTime": 0,
                "dDesc_zh-CN": "",
                "packingUnitId": 0,
                "bDesc_ctw": "",
                "ce01Module": "vqu",
                "lot": "A",
                "bDesc_haha1": "",
                "dDesc_zh-TW": "",
                "domAmt": 0.0,
                "bDesc_ccn": "",
                "unitId": 24,
                "innerUnitId": 0,
                "dDesc_ccn": "",
                "locId": 0,
                "bDesc_en": "",
                "sourceCliId": 0,
                "length": 0.0,
                "dDesc_en": "",
                "dualUnitId": 6,
                "gw": 0.0,
                "sourceLot": "",
                "proId": 18,
                "width": 0.0,
                "bDesc_zh-CN": ""
            }
        ]
    },
    "messages": [],
    "status": true
}
# Create Purchase Quotation
# 一、Description
 Usage: create or update 【Purchase Quotation】
# 二、API Detail
 1、Request URL
| URL | http://[server]/jsf/rfws/root/api/save/vqu | 
|---|---|
| HTTP Method | PUT | 
| Encode | UTF-8 | 
 2、URL Parameters
| Parameter | Type | Required | Remarks | 
|---|---|---|---|
| authorization | String(Header) | Yes | Access Token obtained via Oauth2 | 
| client_id | String(Header) | Yes | Client ID from [OAuth Applications], generated by the M18 | 
| menuCode | String(Query) | Yes | vqu | 
| param | String(Query) | No | Extra Pamameters: in JSON format | 
 3、Request Sample
	CloseableHttpClient client = HttpClientBuilder.create().build();
	CloseableHttpResponse res = null;
	try {
		String url = "http://" + HostIP + ":" + HostPort + "/jsf/rfws/root/api/save/vqu";
		String param = "&menuCode=vqu";
		HttpPut put = new HttpPut(url + "?" + param);
		put.addHeader("authorization", access_token);
		put.addHeader("client_id", ClientID);
		StringEntity entity = new StringEntity(data.toJSONString(), ContentType.APPLICATION_JSON);
		entity.setContentEncoding("UTF-8");
		put.setEntity(entity);
		res = client.execute(put);
		if (res.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
			JSONObject json = JSON.parseObject(EntityUtils.toString(res.getEntity()));
			if (json != null) {
				recordId = json.getLongValue("recordId");
			}
			System.out.println(json);
		}
		put.releaseConnection();
	} catch (Exception e) {
		e.printStackTrace();
	} finally {
		try {
			if (res != null) {
				res.close();
			}
			if (client != null) {
				client.close();
			}
		} catch (Exception ex) {
			ex.printStackTrace();
		}
	}
Entity data as JSON format:
{
    "mainvqu": {
        "values": [
            {
                "beId": 11,
                "code": "ITVQU220324A",
                "tDate": "2022-03-04",
                "venId": 108,
                "curId": 2,
                "rate": 0.8,
                "flowTypeId": 1355,
                "staffId": 723
            }
        ]
    },
    "vqut": {
        "values": [
            {
                "sourceType": "pro",
                "proId": 18,
                "unitId": 24,
                "qty": 1,
                "up": 10
            }
        ]
    }
}
 4、Response Sample
{
	"recordId": 47,
	"messages": [],
	"status": true
}
{
    "recordId": 0,
    "messages": [
        {
            "msgDetail": "Required field is empty",
            "msgCode": "core_101905"
        }
    ],
    "status": false
}
# Create Purchase Quotation (Auto Completion)
# 一、Description
 1. Usage: Create 【Purchase Quotation】
 2. This API has the following characteristics:
  a. Support using code instead of id field
				 b. If field  currency has no value specified, the Entity Currency will be used automatically
				c. If field staff has no value specified, the default staff in the User Options will be used automatically
				d. If field document date has no value specified, the value is obtained according to the date option in the [Preference Setup (Trade)]
				 e. If field business process has no value specified, according to the default value set in [Business Process Setup (Trade)]
# 二、API Detail
 1、Request URL
| URL | http://[server]/jsf/rfws/erp/bsFlow/save/vqu | 
|---|---|
| HTTP Method | POST | 
| Encode | UTF-8 | 
 2、URL Parameters
| Parameter | Type | Required | Remarks | 
|---|---|---|---|
| authorization | String(Header) | Yes | Access Token obtained via Oauth2 | 
| client_id | String(Header) | Yes | Client ID from [OAuth Applications], generated by the M18 | 
 3、Request Sample
	CloseableHttpClient client = HttpClientBuilder.create().build();
	CloseableHttpResponse res = null;
	try {
		String url = "http://" + HostIP + ":" + HostPort + "/jsf/rfws/erp/bsFlow/save/vqu";
		HttpPost post = new HttpPost(url);
		post.addHeader("authorization", access_token);
		post.addHeader("client_id", ClientID);
		StringEntity entity = new StringEntity(data.toJSONString(), ContentType.APPLICATION_JSON);
		entity.setContentEncoding("UTF-8");
		post.setEntity(entity);
		res = client.execute(post);
		if (res.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
			JSONObject json = JSON.parseObject(EntityUtils.toString(res.getEntity()));
			if (json != null) {
				recordId = json.getLongValue("tranId");
			}
			System.out.println(json);
		}
		post.releaseConnection();
	} catch (Exception e) {
		e.printStackTrace();
	} finally {
		try {
			if (res != null) {
				res.close();
			}
			if (client != null) {
				client.close();
			}
		} catch (Exception ex) {
			ex.printStackTrace();
		}
	}
Sample data
{
    "beCode": "IT",
    "venCode": "2000C-014",
    "vqut": [
        {
            "proCode": "ITPRO001",
            "unitCode": "个",
            "qty": 1,
            "up": 10
        }
    ]
}
 4、Response Sample
{
  "tranId": 48,
  "tranCode": "PQ22030004",
  "message": "",
  "status": true
}
# Delete Purchase Quotation
# 一、Description
 Usage: Delete Purchase Quotation
# 二、API Detail
 1、Request URL
| URL | http://[server]/jsf/rfws/root/api/delete/vqu | 
|---|---|
| HTTP Method | DELETE | 
| Encode | UTF-8 | 
 2、URL Parameters
| Parameter | Type | Required | Remarks | 
|---|---|---|---|
| authorization | String(Header) | Yes | Access Token obtained via Oauth2 | 
| client_id | String(Header) | Yes | Client ID from [OAuth Applications], generated by the M18 | 
| menuCode | String(Query) | Yes | vqu | 
| id | long(Query) | Yes | Purchase Quotation ID | 
| param | String(Query) | No | Extra Pamameters: in JSON format | 
 3、Request Sample
	CloseableHttpClient client = HttpClientBuilder.create().build();
	CloseableHttpResponse res = null;
	try {
		String url = "http://" + HostIP + ":" + HostPort + "/jsf/rfws/root/api/delete/vqu";
		String param = "&menuCode=vqu&id=" + id;
		HttpDelete delete = new HttpDelete(url + "?" + param);
		delete.addHeader("authorization", access_token);
		delete.addHeader("client_id", ClientID);
		res = client.execute(delete);
		if (res.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
			JSONObject json = JSON.parseObject(EntityUtils.toString(res.getEntity()));
			System.out.println(json);
		}
		delete.releaseConnection();
	} catch (Exception e) {
		e.printStackTrace();
	} finally {
		try {
			if (res != null) {
				res.close();
			}
			if (client != null) {
				client.close();
			}
		} catch (Exception ex) {
			ex.printStackTrace();
		}
	}
 4、Response Sample
{
	"messages": [],
	"status": true
}
{
    "messages": [
        {
            "msgDetail": "Record has been deleted",
            "msgCode": "core_101017"
        }
    ],
    "status": false
}
# Load EBI data:Purchase Quotation List
# 一、Description
 Usage: Run EBI[Purchase Quotation List],return EBI data
# 二、API Detail
 1、Request URL
| URL | http://[server]/jsf/rfws/ebiWidget/loadReport | 
|---|---|
| HTTP Method | GET | 
| Encode | UTF-8 | 
 2、URL Parameters
| Parameter | Type | Required | Remarks | 
|---|---|---|---|
| authorization | String(Header) | Yes | Access Token obtained via Oauth2 | 
| client_id | String(Header) | Yes | Client ID from [OAuth Applications], generated by the M18 | 
| formatId | long(Query) | Yes | Format ID fetched from another API | 
| beId | long(Query) | No | Business Entity ID,If not specified, query all authorized Business Entity data. | 
| offset | int(Query) | No | Resultset offset : start index | 
| rows | int(Query) | No | Resultset offset : end index | 
 3、Request Sample
	CloseableHttpClient client = HttpClientBuilder.create().build();
	CloseableHttpResponse res = null;
	try {
		String url = "http://" + HostIP + ":" + HostPort + "/jsf/rfws/ebiWidget/loadReport";
		String param = "&formatId=" + formatId;
		HttpGet get = new HttpGet(url + "?" + param);
		get.addHeader("authorization", access_token);
		get.addHeader("client_id", ClientID);
		res = client.execute(get);
		if (res.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
			JSONObject json = JSON.parseObject(EntityUtils.toString(res.getEntity()));
			System.out.println(json);
		}
		get.releaseConnection();
	} catch (Exception e) {
		e.printStackTrace();
	} finally {
		try {
			if (res != null) {
				res.close();
			}
			if (client != null) {
				client.close();
			}
		} catch (Exception ex) {
			ex.printStackTrace();
		}
	}				
 4、Response Sample
{
    "size": 5,
    "rows": [
        {
            "M_A_code": "ITVQU002",
            "M_A_ttlAmt": "0.00",
            "M_A_id": "21",
            "M_A_rate": "1.00000000",
            "M18ReservedCol_dataIndex": 1,
            "VEN_A_code": "V0001",
            "VEN_A_desc__lang": "Test Vendor",
            "STAFF_A_id": "3",
            "M_A_curId_desc__lang": "¥",
            "M_A_tDate": "2019.01.09",
            "STAFF_A_code": "IT001",
            "VEN_A_id": "1"
        }
  	]
}

# Load EBI data:Purchase Quotation Report
# 一、Description
 Usage: Run EBI[Purchase Quotation Report],return EBI data
# 二、API Detail
 1、Request URL
| URL | http://[server]/jsf/rfws/ebiWidget/loadReport | 
|---|---|
| HTTP Method | GET | 
| Encode | UTF-8 | 
 2、URL Parameters
| Parameter | Type | Required | Remarks | 
|---|---|---|---|
| authorization | String(Header) | Yes | Access Token obtained via Oauth2 | 
| client_id | String(Header) | Yes | Client ID from [OAuth Applications], generated by the M18 | 
| formatId | long(Query) | Yes | Format ID fetched from another API | 
| beId | long(Query) | No | Business Entity ID,If not specified, query all authorized Business Entity data. | 
| offset | int(Query) | No | Resultset offset : start index | 
| rows | int(Query) | No | Resultset offset : end index | 
 3、Request Sample
	CloseableHttpClient client = HttpClientBuilder.create().build();
	CloseableHttpResponse res = null;
	try {
		String url = "http://" + HostIP + ":" + HostPort + "/jsf/rfws/ebiWidget/loadReport";
		String param = "&formatId=" + formatId;
		HttpGet get = new HttpGet(url + "?" + param);
		get.addHeader("authorization", access_token);
		get.addHeader("client_id", ClientID);
		res = client.execute(get);
		if (res.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
			JSONObject json = JSON.parseObject(EntityUtils.toString(res.getEntity()));
			System.out.println(json);
		}
		get.releaseConnection();
	} catch (Exception e) {
		e.printStackTrace();
	} finally {
		try {
			if (res != null) {
				res.close();
			}
			if (client != null) {
				client.close();
			}
		} catch (Exception ex) {
			ex.printStackTrace();
		}
	}				
 4、Response Sample
{
  "size": 4,
    "rows": [
        {
            "M_A_code": "ITVQU19100001",
            "M_A_id": "24",
            "M18ReservedCol_dataIndex": 1,
            "F_A_unitId_code": "个",
            "M_A_tDate": "2019.10.15",
            "PRO_A_code": "ITPRO001",
            "PRO_A_id": "18",
            "F_A_qty": "10.0000",
            "F_A_up": "44.0000"
        }
  	]
}

# Purchase Order
# Fetch Purchase Order List
# 一、Description
 Usage: Fetch Purchase Order List.
# 二、API Detail
 1、Request URL
| URL | http://[server]/jsf/rfws/search/search | 
|---|---|
| HTTP Method | GET | 
| Encode | UTF-8 | 
 2、URL Parameters
| Parameter | Type | Required | Remarks | 
|---|---|---|---|
| authorization | String(Header) | Yes | Access Token obtained via Oauth2 | 
| client_id | String(Header) | Yes | Client ID from [OAuth Applications], generated by the M18 | 
| stSearch | String(Query) | Yes | po | 
| beId | long(Query) | Yes | Business Entity ID | 
| formatId | long(Query) | No | Lookup Query ID, If not specified, the default format is used. | 
| startRow | int(Query) | No | Resultset offset : start index | 
| endRow | int(Query) | No | Resultset offset : end index | 
| quickSearchStr | String(Query) | No | Quick search keyword | 
 3、Request Sample
	CloseableHttpClient client = HttpClientBuilder.create().build();
	CloseableHttpResponse res = null;
	try {
		String url = "http://" + HostIP + ":" + HostPort + "/jsf/rfws/search/search";
		String param = "&stSearch=po&beId=11";
		HttpGet get = new HttpGet(url + "?" + param);
		get.addHeader("authorization", access_token);
		get.addHeader("client_id", ClientID);
		res = client.execute(get);
		if (res.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
			JSONObject json = JSON.parseObject(EntityUtils.toString(res.getEntity()));
		}
		get.releaseConnection();
	} catch (Exception e) {
		e.printStackTrace();
	} finally {
		try {
			if (res != null) {
				res.close();
			}
			if (client != null) {
				client.close();
			}
		} catch (Exception ex) {
			ex.printStackTrace();
		}
	}
 4、Response Sample
{
  	"stSearch": "po",
    "size": 26,
    "stSearchDisplay": "Purchase Order",
    "values": [
        {
            "code": "ITPO220324A",
            "tDate": "2022-03-24",
            "mainpo.venId.ven.code": "2000C-014",
            "mainpo.venId.ven.desc__lang": "Choi Hop Hong Co., Ltd",
            "mainpo.curId.cur.sym": "¥",
            "mainpo.flowTypeId.flowtype.code": "PURCHASE",
            "mainpo.flowTypeId.flowtype.desc": "Purchase Flow",
            "iRev": 1,
            "lastModifyDate": "2022-03-24 15:40:46",
            "mainpo.lastModifyUid.simpleUser.desc__lang": "Ivan Tan",
            "id": 10661,
            "st_desc": "ITPO220324A",
            "st_id": 10661,
            "st_code": "ITPO220324A"
        }
  	]
}
# Load Purchase Order
# 一、Description
 Usage: Load 【Purchase Order】Record
# 二、API Detail
 1、Request URL
| URL | http://[server]/jsf/rfws/root/api/read/po | 
|---|---|
| HTTP Method | GET | 
| Encode | UTF-8 | 
 2、URL Parameters
| Parameter | Type | Required | Remarks | 
|---|---|---|---|
| authorization | String(Header) | Yes | Access Token obtained via Oauth2 | 
| client_id | String(Header) | Yes | Client ID from [OAuth Applications], generated by the M18 | 
| menuCode | String(Query) | Yes | po | 
| id | long(Query) | Yes | Purchase Order ID | 
| param | String(Query) | No | Extra Pamameters: in JSON format | 
 3、Request Sample
		CloseableHttpClient client = HttpClientBuilder.create().build();
		CloseableHttpResponse res = null;
		try {
			String url = "http://" + HostIP + ":" + HostPort + "/jsf/rfws/root/api/read/po";
			String param = "&menuCode=po&id=" + id;
			HttpGet get = new HttpGet(url + "?" + param);
			get.addHeader("authorization", access_token);
			get.addHeader("client_id", ClientID);
			res = client.execute(get);
			if (res.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
				JSONObject json = JSON.parseObject(EntityUtils.toString(res.getEntity()));
				System.out.println(json);
			}
			get.releaseConnection();
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				if (res != null) {
					res.close();
				}
				if (client != null) {
					client.close();
				}
			} catch (Exception ex) {
				ex.printStackTrace();
			}
		}
 4、Response Sample
{
    "data": {
        "mainpo": [
            {
                "lastModifyUid": 11,
                "useAccess": false,
                "virDeptId": 0,
                "expiredDate": -2209017600000,
                "invShipedStatus": 0,
                "position_zh-CN": "",
                "sysJson": "",
                "viewCode": "po",
                "beId": 11,
                "dDate": 1648051200000,
                "shipedStatus": 0,
                "useAccessBl": false,
                "id": 10661,
                "doctypeId": 0,
                "locked": false,
                "position_ctw": "",
                "lastModifyDate": 1648107646000,
                "createUid": 11,
                "rev": "1",
                "lastApproveUid": 11,
                "ttlCharge": 0,
                "completed": false,
                "expiredUid": 0,
                "freeQtyPer": 0,
                "descOrigin": "VENREF",
                "position_en": "",
                "position_zh-TW": "",
                "venId": 108,
                "i18nField": "{\"position_zh-CN\": \"\"}",
                "manId": 0,
                "deposit": 0,
                "ttlAmt": 0,
                "multiFlowSrcId": 0,
                "position": "",
                "flowTypeId": 1356,
                "status": "Y",
                "weightUnit": "kg",
                "multiFlowFlowId": 0,
                "tDate": 1648051200000,
                "code": "ITPO220324A",
                "cnDeptId": 0,
                "multiFlowSrcModule": "",
                "amt": 0,
                "iRev": 1,
                "upOrigin": "POLAST",
                "ce01Module": "po",
                "curId": 1,
                "expired": false,
                "rate": 1,
                "domAmt": 0,
                "sumMethod": "no",
                "settlementStatus": 0,
                "measUnit": "cbm",
                "printCount": 0,
                "udfsm3": "",
                "statusModifyDate": 1648107646000,
                "createDate": 1648107646000,
                "shipedASIStatus": 0,
                "depoRate": 0,
                "loadGpCoData": false,
                "cp": 0,
                "useAccessWl": false,
                "billingStatus": 0,
                "position_ccn": "",
                "ttlDisc": 0,
                "multiFlowSrcBeId": 0,
                "position_haha1": "",
                "depositStatus": 0,
                "useAccessAutoCalc": false,
                "staffId": 723,
                "domAmtDiff": 0
            }
        ],
        "pot": [
            {
                "sourceId": 0,
                "unit2Id": 40,
                "shipMark": "",
                "dualQty": 0,
                "prqFooterKey": "",
                "qty2": 0,
                "itemNo": "     1",
                "prqSourceId": 0,
                "qty1": 1,
                "beId": 11,
                "dDate": 1648051200000,
                "bDesc": "",
                "bDesc_zh-TW": "",
                "newLotno": 0,
                "id": 11525,
                "up": 10,
                "ctn": 0,
                "qcRequired": false,
                "dDesc_haha1": "",
                "height": 0,
                "hId": 10661,
                "perCtn": 0,
                "prqResultId": 0,
                "completed": false,
                "freeQtyPer": 0,
                "volume": 0,
                "dDesc": "",
                "footerKey": "",
                "i18nField": "{\"bDesc_zh-CN\": \"\", \"dDesc_zh-CN\": \"\"}",
                "sourceType": "pro",
                "qty": 1,
                "disc": 0,
                "packingDesc": "",
                "refCode": "",
                "lotNoId": 0,
                "dDesc_ctw": "",
                "innerQty": 0,
                "unit1Id": 40,
                "costAmt": 0,
                "pproId": 26,
                "amt": 0,
                "nw": 0,
                "iRev": 1,
                "dDesc_zh-CN": "",
                "qup": 0,
                "packingUnitId": 0,
                "udfsm": 0,
                "bDesc_ctw": "",
                "ce01Module": "po",
                "lot": "A",
                "bDesc_haha1": "",
                "dDesc_zh-TW": "",
                "domAmt": 0,
                "bDesc_ccn": "",
                "unitId": 40,
                "innerUnitId": 0,
                "udfsm2": "",
                "dDesc_ccn": "",
                "locId": 0,
                "bDesc_en": "",
                "sourceCliId": 0,
                "length": 0,
                "dDesc_en": "",
                "dualUnitId": 29,
                "gw": 0,
                "prqSourceType": "pro",
                "sourceLot": "",
                "prqSourceLot": "",
                "proId": 26,
                "width": 0,
                "cuspono": "",
                "bDesc_zh-CN": ""
            }
        ],
        "rempo": [
            {
                "tradeTerm_ccn": "",
                "country": "",
                "shipMark": "",
                "heading_en": "",
                "shipMark_zh-CN": "",
                "tradeTerm_zh-CN": "",
                "shipAd4_haha1": "",
                "remarks_en": "",
                "packing_ccn": "",
                "dest": "",
                "recipient_ccn": "",
                "tradeTerm": "",
                "shipAd2_zh-TW": "",
                "heading_ccn": "",
                "shipAd1_en": "",
                "payTerm_zh-TW": "",
                "province": "",
                "packing_haha1": "",
                "tel": "",
                "shipMark_en": "",
                "recipient_haha1": "",
                "id": 10564,
                "fax": "",
                "remarks_zh-TW": "",
                "shipAd1_zh-CN": "",
                "hId": 10661,
                "payTerm": "",
                "heading_zh-TW": "",
                "payTerm_ccn": "",
                "remarks_ccn": "",
                "heading_ctw": "",
                "tradeTerm_zh-TW": "",
                "shipMark_ccn": "",
                "shipAd4_ccn": "",
                "zipcode": "",
                "shipAd2_en": "",
                "shipAd1_haha1": "",
                "i18nField": "{\"heading_zh-CN\": \"\", \"packing_zh-CN\": \"\", \"payTerm_zh-CN\": \"\", \"remarks_zh-CN\": \"\", \"shipAd1_zh-CN\": \"\", \"shipAd2_zh-CN\": \"\", \"shipAd3_zh-CN\": \"\", \"shipAd4_zh-CN\": \"\", \"shipMark_zh-CN\": \"\", \"recipient_zh-CN\": \"\", \"tradeTerm_zh-CN\": \"\"}",
                "remarks_zh-CN": "",
                "shipAd4_ctw": "",
                "packing_en": "",
                "shipAd3_zh-TW": "",
                "payTerm_zh-CN": "",
                "payTerm_ctw": "",
                "shipMark_zh-TW": "",
                "remarks_ctw": "",
                "shipAd1_ccn": "",
                "tradeTerm_en": "",
                "shipCodeId": 0,
                "city": "",
                "shipMark_ctw": "",
                "shipAd3_ctw": "",
                "recipient_zh-CN": "",
                "payTerm_en": "",
                "iRev": 1,
                "shipAd4_zh-TW": "",
                "packing": "",
                "shipAd2_ccn": "",
                "heading_zh-CN": "",
                "ce01Module": "po",
                "payTerm_haha1": "",
                "shipAd3_en": "",
                "recipient_en": "",
                "packing_zh-TW": "",
                "shipAd3_zh-CN": "",
                "shipAd4_zh-CN": "",
                "shipAd2_ctw": "",
                "shipAd2_haha1": "",
                "shipAd1_ctw": "",
                "remarks_haha1": "",
                "email": "",
                "shipAd3_ccn": "",
                "recipient_zh-TW": "",
                "packing_ctw": "",
                "heading_haha1": "",
                "heading": "",
                "recipient_ctw": "",
                "tradeTerm_ctw": "",
                "packing_zh-CN": "",
                "telCountry": "",
                "tradeTerm_haha1": "",
                "shipAd1": "",
                "shipAd2": "",
                "shipAd3": "",
                "shipAd4": "",
                "telArea": "",
                "shipAd1_zh-TW": "",
                "shipAd4_en": "",
                "recipient": "",
                "shipAd2_zh-CN": "",
                "shipAd3_haha1": "",
                "shipMark_haha1": "",
                "smthId": 0,
                "remarks": ""
            }
        ]
    },
    "messages": [],
    "status": true
}
# Create Purchase Order
# 一、Description
 Usage: create or update 【Purchase Order】
# 二、API Detail
 1、Request URL
| URL | http://[server]/jsf/rfws/root/api/save/po | 
|---|---|
| HTTP Method | PUT | 
| Encode | UTF-8 | 
 2、URL Parameters
| Parameter | Type | Required | Remarks | 
|---|---|---|---|
| authorization | String(Header) | Yes | Access Token obtained via Oauth2 | 
| client_id | String(Header) | Yes | Client ID from [OAuth Applications], generated by the M18 | 
| menuCode | String(Query) | Yes | po | 
| param | String(Query) | No | Extra Pamameters: in JSON format | 
 3、Request Sample
	CloseableHttpClient client = HttpClientBuilder.create().build();
	CloseableHttpResponse res = null;
	try {
		String url = "http://" + HostIP + ":" + HostPort + "/jsf/rfws/root/api/save/po";
		String param = "&menuCode=po";
		HttpPut put = new HttpPut(url + "?" + param);
		put.addHeader("authorization", access_token);
		put.addHeader("client_id", ClientID);
		StringEntity entity = new StringEntity(data.toJSONString(), ContentType.APPLICATION_JSON);
		entity.setContentEncoding("UTF-8");
		put.setEntity(entity);
		res = client.execute(put);
		if (res.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
			JSONObject json = JSON.parseObject(EntityUtils.toString(res.getEntity()));
			if (json != null) {
				recordId = json.getLongValue("recordId");
			}
			System.out.println(json);
		}
		put.releaseConnection();
	} catch (Exception e) {
		e.printStackTrace();
	} finally {
		try {
			if (res != null) {
				res.close();
			}
			if (client != null) {
				client.close();
			}
		} catch (Exception ex) {
			ex.printStackTrace();
		}
	}
Entity data as JSON format:
{
    "mainpo": {
        "values": [
            {
                "beId": 11,
                "code": "ITPO220324A",
                "tDate": "2022-03-24",
                "venId": 108,
                "curId": 1,
                "rate": 1,
                "flowTypeId": 1356,
                "staffId": 723
            }
        ]
    },
    "pot": {
        "values": [
            {
                "sourceType": "pro",
                "proId": 26,
                "unitId": 40,
                "qty": 1,
                "up": 10
            }
        ]
    }
}
 4、Response Sample
{
	"recordId": 10661,
	"messages": [],
	"status": true
}
{
    "recordId": 0,
    "messages": [
        {
            "msgDetail": "Required field is empty",
            "msgCode": "core_101905"
        }
    ],
    "status": false
}
# Create Purchase Order (Auto Completion)
# 一、Description
 1. Usage: Create 【Purchase Order】
 2. This API has the following characteristics:
  a. Support using code instead of id field
				 b. If field  currency has no value specified, the Entity Currency will be used automatically
				 c. If field staff has no value specified, the default staff in the User Options will be used automatically
				 d. If field document date has no value specified, the value is obtained according to the date option in the [Preference Setup (Trade)]
				 e. If field business process has no value specified, according to the default value set in [Business Process Setup (Trade)]
# 二、API Detail
 1、Request URL
| URL | http://[server]/jsf/rfws/erp/bsFlow/save/po | 
|---|---|
| HTTP Method | POST | 
| Encode | UTF-8 | 
 2、URL Parameters
| Parameter | Type | Required | Remarks | 
|---|---|---|---|
| authorization | String(Header) | Yes | Access Token obtained via Oauth2 | 
| client_id | String(Header) | Yes | Client ID from [OAuth Applications], generated by the M18 | 
 3、Request Sample
	CloseableHttpClient client = HttpClientBuilder.create().build();
	CloseableHttpResponse res = null;
	try {
		String url = "http://" + HostIP + ":" + HostPort + "/jsf/rfws/erp/bsFlow/save/po";
		HttpPost post = new HttpPost(url);
		post.addHeader("authorization", access_token);
		post.addHeader("client_id", ClientID);
		StringEntity entity = new StringEntity(data.toJSONString(), ContentType.APPLICATION_JSON);
		entity.setContentEncoding("UTF-8");
		post.setEntity(entity);
		res = client.execute(post);
		if (res.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
			JSONObject json = JSON.parseObject(EntityUtils.toString(res.getEntity()));
			if (json != null) {
				recordId = json.getLongValue("tranId");
			}
			System.out.println(json);
		}
		post.releaseConnection();
	} catch (Exception e) {
		e.printStackTrace();
	} finally {
		try {
			if (res != null) {
				res.close();
			}
			if (client != null) {
				client.close();
			}
		} catch (Exception ex) {
			ex.printStackTrace();
		}
	}
Sample data
{
    "beCode": "IT",
    "venCode": "VIT001",
    "pot": [
        {
            "proCode": "ITPRO002",
            "unitCode": "PCS",
            "qty": 1,
            "up": 10,
            "amt": 10
        }
    ]
}
 4、Response Sample
{
  "tranId": 10662,
  "tranCode": "PO2203010064",
  "message": "",
  "status": true
}
# Delete Purchase Order
# 一、Description
 Usage: Delete Purchase Order
# 二、API Detail
 1、Request URL
| URL | http://[server]/jsf/rfws/root/api/delete/po | 
|---|---|
| HTTP Method | DELETE | 
| Encode | UTF-8 | 
 2、URL Parameters
| Parameter | Type | Required | Remarks | 
|---|---|---|---|
| authorization | String(Header) | Yes | Access Token obtained via Oauth2 | 
| client_id | String(Header) | Yes | Client ID from [OAuth Applications], generated by the M18 | 
| menuCode | String(Query) | Yes | po | 
| id | long(Query) | Yes | Purchase Order ID | 
| param | String(Query) | No | Extra Pamameters: in JSON format | 
 3、Request Sample
	CloseableHttpClient client = HttpClientBuilder.create().build();
	CloseableHttpResponse res = null;
	try {
		String url = "http://" + HostIP + ":" + HostPort + "/jsf/rfws/root/api/delete/po";
		String param = "&menuCode=po&id=" + id;
		HttpDelete delete = new HttpDelete(url + "?" + param);
		delete.addHeader("authorization", access_token);
		delete.addHeader("client_id", ClientID);
		res = client.execute(delete);
		if (res.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
			JSONObject json = JSON.parseObject(EntityUtils.toString(res.getEntity()));
			System.out.println(json);
		}
		delete.releaseConnection();
	} catch (Exception e) {
		e.printStackTrace();
	} finally {
		try {
			if (res != null) {
				res.close();
			}
			if (client != null) {
				client.close();
			}
		} catch (Exception ex) {
			ex.printStackTrace();
		}
	}
 4、Response Sample
{
	"messages": [],
	"status": true
}
{
    "messages": [
        {
            "msgDetail": "Record has been deleted",
            "msgCode": "core_101017"
        }
    ],
    "status": false
}
# Load EBI data:Purchase Order List
# 一、Description
 Usage: Run EBI[Purchase Order List],return EBI data
# 二、API Detail
 1、Request URL
| URL | http://[server]/jsf/rfws/ebiWidget/loadReport | 
|---|---|
| HTTP Method | GET | 
| Encode | UTF-8 | 
 2、URL Parameters
| Parameter | Type | Required | Remarks | 
|---|---|---|---|
| authorization | String(Header) | Yes | Access Token obtained via Oauth2 | 
| client_id | String(Header) | Yes | Client ID from [OAuth Applications], generated by the M18 | 
| formatId | long(Query) | Yes | Format ID fetched from another API | 
| beId | long(Query) | No | Business Entity ID,If not specified, query all authorized Business Entity data. | 
| offset | int(Query) | No | Resultset offset : start index | 
| rows | int(Query) | No | Resultset offset : end index | 
 3、Request Sample
	CloseableHttpClient client = HttpClientBuilder.create().build();
	CloseableHttpResponse res = null;
	try {
		String url = "http://" + HostIP + ":" + HostPort + "/jsf/rfws/ebiWidget/loadReport";
		String param = "&formatId=" + formatId;
		HttpGet get = new HttpGet(url + "?" + param);
		get.addHeader("authorization", access_token);
		get.addHeader("client_id", ClientID);
		res = client.execute(get);
		if (res.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
			JSONObject json = JSON.parseObject(EntityUtils.toString(res.getEntity()));
			System.out.println(json);
		}
		get.releaseConnection();
	} catch (Exception e) {
		e.printStackTrace();
	} finally {
		try {
			if (res != null) {
				res.close();
			}
			if (client != null) {
				client.close();
			}
		} catch (Exception ex) {
			ex.printStackTrace();
		}
	}				
 4、Response Sample
{
    "size": 26,
    "rows": [
        {
            "PO_A_dDate": "2016.08.22",
            "PO_A_curId": "1",
            "PO_A_id": "2",
            "M18ReservedCol_dataIndex": 1,
            "PO_A_ttlCharge": "0.00",
            "PO_A_code": "ITPO16080001",
            "PO_A_curId_code": "R",
            "PO_A_amt": "4,350.00",
            "PO_A_ttlAmt": "4,350.00",
            "PO_A_tDate": "2016.08.15",
            "PO_A_rate": "1.00000000",
            "VEN_A_code": "V0001",
            "PO_A_ttlDisc": "0.00",
            "VEN_A_id": "1"
        }
    ]
}

# Load EBI data:Purchase Order Report
# 一、Description
 Usage: Run EBI[Purchase Order Report],return EBI data
# 二、API Detail
 1、Request URL
| URL | http://[server]/jsf/rfws/ebiWidget/loadReport | 
|---|---|
| HTTP Method | GET | 
| Encode | UTF-8 | 
 2、URL Parameters
| Parameter | Type | Required | Remarks | 
|---|---|---|---|
| authorization | String(Header) | Yes | Access Token obtained via Oauth2 | 
| client_id | String(Header) | Yes | Client ID from [OAuth Applications], generated by the M18 | 
| formatId | long(Query) | Yes | Format ID fetched from another API | 
| beId | long(Query) | No | Business Entity ID,If not specified, query all authorized Business Entity data. | 
| offset | int(Query) | No | Resultset offset : start index | 
| rows | int(Query) | No | Resultset offset : end index | 
 3、Request Sample
	CloseableHttpClient client = HttpClientBuilder.create().build();
	CloseableHttpResponse res = null;
	try {
		String url = "http://" + HostIP + ":" + HostPort + "/jsf/rfws/ebiWidget/loadReport";
		String param = "&formatId=" + formatId;
		HttpGet get = new HttpGet(url + "?" + param);
		get.addHeader("authorization", access_token);
		get.addHeader("client_id", ClientID);
		res = client.execute(get);
		if (res.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
			JSONObject json = JSON.parseObject(EntityUtils.toString(res.getEntity()));
			System.out.println(json);
		}
		get.releaseConnection();
	} catch (Exception e) {
		e.printStackTrace();
	} finally {
		try {
			if (res != null) {
				res.close();
			}
			if (client != null) {
				client.close();
			}
		} catch (Exception ex) {
			ex.printStackTrace();
		}
	}				
 4、Response Sample
{
    "size": 46,
    "rows": [
        {
            "PO_A_dDate": "2016.08.22",
            "PO_A_tDate": "2016.08.15",
            "PO_A_id": "2",
            "M18ReservedCol_dataIndex": 1,
            "VEN_A_code": "V0001",
            "POT_A_qty": "10.0000",
            "PO_A_code": "ITPO16080001",
            "POT_A_unitId_code": "个",
            "PRO_A_code": "COMPUTER_01",
            "PRO_A_id": "3",
            "VEN_A_id": "1"
        }
    ]
}

# Vendor Shipment Note
# Fetch Vendor Shipment Note List
# 一、Description
 Usage: Fetch Vendor Shipment Note List.
# 二、API Detail
 1、Request URL
| URL | http://[server]/jsf/rfws/search/search | 
|---|---|
| HTTP Method | GET | 
| Encode | UTF-8 | 
 2、URL Parameters
| Parameter | Type | Required | Remarks | 
|---|---|---|---|
| authorization | String(Header) | Yes | Access Token obtained via Oauth2 | 
| client_id | String(Header) | Yes | Client ID from [OAuth Applications], generated by the M18 | 
| stSearch | String(Query) | Yes | asi | 
| beId | long(Query) | Yes | Business Entity ID | 
| formatId | long(Query) | No | Lookup Query ID, If not specified, the default format is used. | 
| startRow | int(Query) | No | Resultset offset : start index | 
| endRow | int(Query) | No | Resultset offset : end index | 
| quickSearchStr | String(Query) | No | Quick search keyword | 
 3、Request Sample
	CloseableHttpClient client = HttpClientBuilder.create().build();
	CloseableHttpResponse res = null;
	try {
		String url = "http://" + HostIP + ":" + HostPort + "/jsf/rfws/search/search";
		String param = "&stSearch=asi&beId=11";
		HttpGet get = new HttpGet(url + "?" + param);
		get.addHeader("authorization", access_token);
		get.addHeader("client_id", ClientID);
		res = client.execute(get);
		if (res.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
			JSONObject json = JSON.parseObject(EntityUtils.toString(res.getEntity()));
		}
		get.releaseConnection();
	} catch (Exception e) {
		e.printStackTrace();
	} finally {
		try {
			if (res != null) {
				res.close();
			}
			if (client != null) {
				client.close();
			}
		} catch (Exception ex) {
			ex.printStackTrace();
		}
	}
 4、Response Sample
{
  	"stSearch": "asi",
    "size": 10,
    "stSearchDisplay": "Vendor Shipment Note",
    "values": [
        {
            "code": "ITVSN220330A",
            "tDate": "2022-03-30",
            "mainasi.flowTypeId.flowtype.code": "PURCHASE",
            "mainasi.flowTypeId.flowtype.desc": "Purchase Flow",
            "iRev": 1,
            "lastModifyDate": "2022-03-30 12:59:52",
            "mainasi.lastModifyUid.simpleUser.desc__lang": "Ivan Tan",
            "id": 51,
            "st_desc": "ITVSN220330A",
            "st_id": 51,
            "st_code": "ITVSN220330A"
        }
  	]
}
# Load Vendor Shipment Note
# 一、Description
 Usage: Load 【Vendor Shipment Note】Record
# 二、API Detail
 1、Request URL
| URL | http://[server]/jsf/rfws/root/api/read/asi | 
|---|---|
| HTTP Method | GET | 
| Encode | UTF-8 | 
 2、URL Parameters
| Parameter | Type | Required | Remarks | 
|---|---|---|---|
| authorization | String(Header) | Yes | Access Token obtained via Oauth2 | 
| client_id | String(Header) | Yes | Client ID from [OAuth Applications], generated by the M18 | 
| menuCode | String(Query) | Yes | asi | 
| id | long(Query) | Yes | Vendor Shipment Note ID | 
| param | String(Query) | No | Extra Pamameters: in JSON format | 
 3、Request Sample
		CloseableHttpClient client = HttpClientBuilder.create().build();
		CloseableHttpResponse res = null;
		try {
			String url = "http://" + HostIP + ":" + HostPort + "/jsf/rfws/root/api/read/asi";
			String param = "&menuCode=asi&id=" + id;
			HttpGet get = new HttpGet(url + "?" + param);
			get.addHeader("authorization", access_token);
			get.addHeader("client_id", ClientID);
			res = client.execute(get);
			if (res.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
				JSONObject json = JSON.parseObject(EntityUtils.toString(res.getEntity()));
				System.out.println(json);
			}
			get.releaseConnection();
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				if (res != null) {
					res.close();
				}
				if (client != null) {
					client.close();
				}
			} catch (Exception ex) {
				ex.printStackTrace();
			}
		}
 4、Response Sample
{
    "data": {
        "asit": [
            {
                "lotnoNumAttr17": 0,
                "lotnoNumAttr16": 0,
                "unit2Id": 40,
                "lotnoNumAttr15": 0,
                "lotnoNumAttr14": 0,
                "lotnoNumAttr19": 0,
                "lotnoNumAttr18": 0,
                "qty2": 0,
                "lotnoLookupAttr20": 0,
                "lotnoNumAttr13": 0,
                "lotnoNumAttr12": 0,
                "qty1": -5,
                "lotnoNumAttr11": 0,
                "lotnoNumAttr10": 0,
                "lotnoLookupAttr16": 0,
                "lotnoLookupAttr17": 0,
                "lotnoLookupAttr14": 0,
                "lotnoLookupAttr15": 0,
                "lotnoLookupAttr18": 0,
                "lotnoLookupAttr19": 0,
                "bDesc_zh-TW": "",
                "id": 75,
                "ctn": 0,
                "dDesc_haha1": "",
                "height": 30,
                "perCtn": 20,
                "lotnoNumAttr20": 0,
                "completed": false,
                "lotnoLookupAttr12": 0,
                "lotnoLookupAttr13": 0,
                "lotnoLookupAttr10": 0,
                "freeQtyPer": 0,
                "lotnoLookupAttr11": 0,
                "i18nField": "{\"bDesc_zh-CN\": \"Lot no. can be duplicated\", \"dDesc_zh-CN\": \"\"}",
                "sourceType": "pro",
                "packingDesc": "",
                "innerQty": 0,
                "iRev": 1,
                "poId": 0,
                "bDesc_ctw": "",
                "ce01Module": "asi",
                "lot": "A",
                "lotnoDateAttr3": -2209017600000,
                "lotnoDateAttr4": -2209017600000,
                "lotnoDateAttr1": -2209017600000,
                "lotnoDateAttr2": -2209017600000,
                "lotnoDateAttr7": -2209017600000,
                "lotnoDateAttr8": -2209017600000,
                "lotnoDateAttr5": -2209017600000,
                "bDesc_ccn": "",
                "lotnoDateAttr6": -2209017600000,
                "unitId": 40,
                "lotnoDateAttr9": -2209017600000,
                "bDesc_en": "",
                "lotnoTextAttr1": "",
                "lotnoTextAttr2": "",
                "lotnoTextAttr3": "",
                "lotnoTextAttr4": "",
                "lotnoTextAttr5": "",
                "lotnoTextAttr6": "",
                "lotnoTextAttr7": "",
                "width": 38,
                "lotnoTextAttr8": "",
                "lotnoTextAttr9": "",
                "bDesc_zh-CN": "Lot no. can be duplicated",
                "sourceId": 0,
                "dualQty": -5,
                "itemNo": "     1",
                "poLot": "",
                "beId": 11,
                "bDesc": "Lot no. can be duplicated",
                "up": 6,
                "qcRequired": false,
                "hId": 51,
                "lotnoNumAttr1": 0,
                "lotnoNumAttr2": 0,
                "lotnoNumAttr3": 0,
                "lotnoNumAttr4": 0,
                "volume": 0.066,
                "lotnoExpDate": 253402185600000,
                "dDesc": "",
                "qty": -5,
                "lotnoNumAttr5": 0,
                "lotnoNumAttr6": 0,
                "lotnoNumAttr7": 0,
                "disc": 0,
                "lotnoNumAttr8": 0,
                "lotnoNumAttr9": 0,
                "refCode": "",
                "lotnoTextAttr16": "",
                "lotnoTextAttr15": "",
                "dDesc_ctw": "",
                "lotnoTextAttr18": "",
                "unit1Id": 40,
                "lotnoTextAttr17": "",
                "lotnoTextAttr12": "",
                "lotnoTextAttr11": "",
                "lotnoDateAttr20": -2209017600000,
                "lotnoTextAttr14": "",
                "lotnoTextAttr13": "",
                "nw": 0.135,
                "amt": -30,
                "dDesc_zh-CN": "",
                "lotnoTextAttr19": "",
                "packingUnitId": 3,
                "bDesc_haha1": "",
                "dDesc_zh-TW": "",
                "domAmt": -30,
                "innerUnitId": 3,
                "dDesc_ccn": "",
                "lotnoTextAttr10": "",
                "length": 58,
                "dDesc_en": "",
                "dualUnitId": 29,
                "gw": 0.135,
                "lotnoLookupAttr5": 0,
                "lotnoLookupAttr6": 0,
                "sourceLot": "",
                "lotnoDateAttr18": -2209017600000,
                "lotnoLookupAttr7": 0,
                "lotnoDateAttr19": -2209017600000,
                "lotnoLookupAttr8": 0,
                "lotno": "",
                "lotnoLookupAttr9": 0,
                "proId": 26,
                "lotnoDateAttr12": -2209017600000,
                "lotnoDateAttr13": -2209017600000,
                "lotnoDateAttr10": -2209017600000,
                "lotnoTextAttr20": "",
                "lotnoDateAttr11": -2209017600000,
                "lotnoDateAttr16": -2209017600000,
                "lotnoLookupAttr1": 0,
                "lotnoDateAttr17": -2209017600000,
                "lotnoLookupAttr2": 0,
                "lotnoDateAttr14": -2209017600000,
                "lotnoLookupAttr3": 0,
                "lotnoDateAttr15": -2209017600000,
                "lotnoLookupAttr4": 0
            }
        ],
        "mainasi": [
            {
                "lastModifyUid": 11,
                "useAccess": false,
                "virDeptId": 0,
                "expiredDate": -2209017600000,
                "invShipedStatus": 0,
                "position_zh-CN": "",
                "sysJson": "",
                "viewCode": "asi",
                "venDnNo": "",
                "beId": 11,
                "shipedStatus": 20,
                "useAccessBl": false,
                "id": 51,
                "doctypeId": 0,
                "locked": false,
                "position_ctw": "",
                "lastModifyDate": 1648616392000,
                "createUid": 11,
                "rev": "1",
                "lastApproveUid": 11,
                "ttlCharge": 0,
                "completed": false,
                "expiredUid": 0,
                "freeQtyPer": 0,
                "descOrigin": "VENREF",
                "position_en": "",
                "position_zh-TW": "",
                "i18nField": "{\"position_zh-CN\": \"\"}",
                "manId": 0,
                "ttlAmt": -30,
                "multiFlowSrcId": 0,
                "position": "",
                "flowTypeId": 1356,
                "status": "Y",
                "weightUnit": "kg",
                "multiFlowFlowId": 0,
                "tDate": 1648569600000,
                "code": "ITVSN220330A",
                "cnDeptId": 0,
                "multiFlowSrcModule": "",
                "amt": -30,
                "iRev": 1,
                "upOrigin": "POLAST",
                "ce01Module": "asi",
                "curId": 1,
                "expired": false,
                "asnRefId": 592,
                "rate": 1,
                "domAmt": -30,
                "measUnit": "cbm",
                "printCount": 0,
                "statusModifyDate": 1648616392000,
                "createDate": 1648616392000,
                "asnRefType": "ven",
                "useAccessWl": false,
                "position_ccn": "",
                "ttlDisc": 0,
                "multiFlowSrcBeId": 0,
                "position_haha1": "",
                "useAccessAutoCalc": false,
                "staffId": 723,
                "domAmtDiff": 0
            }
        ],
        "remasi": [
            {
                "tradeTerm_ccn": "",
                "tradeTerm_en": "",
                "shipMark": "",
                "heading_en": "",
                "shipMark_zh-CN": "",
                "tradeTerm_zh-CN": "",
                "shipMark_ctw": "",
                "remarks_en": "",
                "payTerm_en": "",
                "iRev": 1,
                "packing_ccn": "",
                "packing": "",
                "heading_zh-CN": "",
                "ce01Module": "asi",
                "tradeTerm": "",
                "heading_ccn": "",
                "payTerm_haha1": "",
                "packing_zh-TW": "",
                "payTerm_zh-TW": "",
                "packing_haha1": "",
                "remarks_haha1": "",
                "shipMark_en": "",
                "id": 40,
                "remarks_zh-TW": "",
                "hId": 51,
                "packing_ctw": "",
                "heading_haha1": "",
                "payTerm": "",
                "heading_zh-TW": "",
                "payTerm_ccn": "",
                "heading": "",
                "remarks_ccn": "",
                "heading_ctw": "",
                "tradeTerm_ctw": "",
                "packing_zh-CN": "",
                "tradeTerm_zh-TW": "",
                "shipMark_ccn": "",
                "tradeTerm_haha1": "",
                "i18nField": "{\"heading_zh-CN\": \"\", \"packing_zh-CN\": \"\", \"payTerm_zh-CN\": \"\", \"remarks_zh-CN\": \"\", \"shipMark_zh-CN\": \"\", \"tradeTerm_zh-CN\": \"\"}",
                "remarks_zh-CN": "",
                "packing_en": "",
                "shipMark_haha1": "",
                "payTerm_zh-CN": "",
                "payTerm_ctw": "",
                "shipMark_zh-TW": "",
                "remarks": "",
                "remarks_ctw": ""
            }
        ]
    },
    "messages": [],
    "status": true
}
# Create Vendor Shipment Note
# 一、Description
 Usage: create or update 【Vendor Shipment Note】
# 二、API Detail
 1、Request URL
| URL | http://[server]/jsf/rfws/root/api/save/asi | 
|---|---|
| HTTP Method | PUT | 
| Encode | UTF-8 | 
 2、URL Parameters
| Parameter | Type | Required | Remarks | 
|---|---|---|---|
| authorization | String(Header) | Yes | Access Token obtained via Oauth2 | 
| client_id | String(Header) | Yes | Client ID from [OAuth Applications], generated by the M18 | 
| menuCode | String(Query) | Yes | asi | 
| param | String(Query) | No | Extra Pamameters: in JSON format | 
 3、Request Sample
	CloseableHttpClient client = HttpClientBuilder.create().build();
	CloseableHttpResponse res = null;
	try {
		String url = "http://" + HostIP + ":" + HostPort + "/jsf/rfws/root/api/save/asi";
		String param = "&menuCode=asi";
		HttpPut put = new HttpPut(url + "?" + param);
		put.addHeader("authorization", access_token);
		put.addHeader("client_id", ClientID);
		StringEntity entity = new StringEntity(data.toJSONString(), ContentType.APPLICATION_JSON);
		entity.setContentEncoding("UTF-8");
		put.setEntity(entity);
		res = client.execute(put);
		if (res.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
			JSONObject json = JSON.parseObject(EntityUtils.toString(res.getEntity()));
			if (json != null) {
				recordId = json.getLongValue("recordId");
			}
			System.out.println(json);
		}
		put.releaseConnection();
	} catch (Exception e) {
		e.printStackTrace();
	} finally {
		try {
			if (res != null) {
				res.close();
			}
			if (client != null) {
				client.close();
			}
		} catch (Exception ex) {
			ex.printStackTrace();
		}
	}				
Entity data as JSON format:
{
    "mainasi": {
        "values": [
            {
                "beId": 11,
                "code": "ITVSN220324A",
                "tDate": "2022-03-24",
                "asnRefId": 592,
                "curId": 1,
                "rate": 1,
                "flowTypeId": 1356,
                "staffId": 723
            }
        ]
    },
    "asit": {
        "values": [
            {
                "sourceType": "pro",
                "proId": 26,
                "unitId": 40,
                "qty": 1,
                "up": 10,
                "amt": 10
            }
        ]
    }
}
 4、Response Sample
{
	"recordId": 49,
	"messages": [],
	"status": true
}
{
    "recordId": 0,
    "messages": [
        {
            "msgDetail": "Required field is empty",
            "msgCode": "core_101905"
        }
    ],
    "status": false
}
# Create Vendor Shipment Note (Auto Completion)
# 一、Description
 1. Usage: Create 【Vendor Shipment Note】
 2. This API has the following characteristics:
  a. Support using code instead of id field
				 b. If field  currency has no value specified, the Entity Currency will be used automatically
				 c. If field staff has no value specified, the default staff in the User Options will be used automatically
				 d. If field document date has no value specified, the value is obtained according to the date option in the [Preference Setup (Trade)]
				 e. If field business process has no value specified, according to the default value set in [Business Process Setup (Trade)]
# 二、API Detail
 1、Request URL
| URL | http://[server]/jsf/rfws/erp/bsFlow/save/asi | 
|---|---|
| HTTP Method | POST | 
| Encode | UTF-8 | 
 2、URL Parameters
| Parameter | Type | Required | Remarks | 
|---|---|---|---|
| authorization | String(Header) | Yes | Access Token obtained via Oauth2 | 
| client_id | String(Header) | Yes | Client ID from [OAuth Applications], generated by the M18 | 
 3、Request Sample
	CloseableHttpClient client = HttpClientBuilder.create().build();
	CloseableHttpResponse res = null;
	try {
		String url = "http://" + HostIP + ":" + HostPort + "/jsf/rfws/erp/bsFlow/save/asi";
		HttpPost post = new HttpPost(url);
		post.addHeader("authorization", access_token);
		post.addHeader("client_id", ClientID);
		StringEntity entity = new StringEntity(data.toJSONString(), ContentType.APPLICATION_JSON);
		entity.setContentEncoding("UTF-8");
		post.setEntity(entity);
		res = client.execute(post);
		if (res.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
			JSONObject json = JSON.parseObject(EntityUtils.toString(res.getEntity()));
			if (json != null) {
				recordId = json.getLongValue("tranId");
			}
			System.out.println(json);
		}
		post.releaseConnection();
	} catch (Exception e) {
		e.printStackTrace();
	} finally {
		try {
			if (res != null) {
				res.close();
			}
			if (client != null) {
				client.close();
			}
		} catch (Exception ex) {
			ex.printStackTrace();
		}
	}
Sample data
{
    "beCode": "IT",
    "asnRefCode": "VIT001",
    "asit": [
        {
            "proCode": "ITPRO002",
            "unitCode": "PCS",
            "qty": 1,
            "up": 10,
            "amt": 10
        }
    ]
}
 4、Response Sample
{
  "tranId": 50,
  "tranCode": "ASI220002",
  "message": "",
  "status": true
}
# Delete Vendor Shipment Note
# 一、Description
 Usage: Delete Vendor Shipment Note
# 二、API Detail
 1、Request URL
| URL | http://[server]/jsf/rfws/root/api/delete/asi | 
|---|---|
| HTTP Method | DELETE | 
| Encode | UTF-8 | 
 2、URL Parameters
| Parameter | Type | Required | Remarks | 
|---|---|---|---|
| authorization | String(Header) | Yes | Access Token obtained via Oauth2 | 
| client_id | String(Header) | Yes | Client ID from [OAuth Applications], generated by the M18 | 
| menuCode | String(Query) | Yes | asi | 
| id | long(Query) | Yes | Vendor Shipment Note ID | 
| param | String(Query) | No | Extra Pamameters: in JSON format | 
 3、Request Sample
	CloseableHttpClient client = HttpClientBuilder.create().build();
	CloseableHttpResponse res = null;
	try {
		String url = "http://" + HostIP + ":" + HostPort + "/jsf/rfws/root/api/delete/asi";
		String param = "&menuCode=asi&id=" + id;
		HttpDelete delete = new HttpDelete(url + "?" + param);
		delete.addHeader("authorization", access_token);
		delete.addHeader("client_id", ClientID);
		res = client.execute(delete);
		if (res.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
			JSONObject json = JSON.parseObject(EntityUtils.toString(res.getEntity()));
			System.out.println(json);
		}
		delete.releaseConnection();
	} catch (Exception e) {
		e.printStackTrace();
	} finally {
		try {
			if (res != null) {
				res.close();
			}
			if (client != null) {
				client.close();
			}
		} catch (Exception ex) {
			ex.printStackTrace();
		}
	}
 4、Response Sample
{
	"messages": [],
	"status": true
}
{
    "messages": [
        {
            "msgDetail": "Record has been deleted",
            "msgCode": "core_101017"
        }
    ],
    "status": false
}
# Load EBI data:Vendor Shipment Note Report
# 一、Description
 Usage: Run EBI[Vendor Shipment Note Report],return EBI data
# 二、API Detail
 1、Request URL
| URL | http://[server]/jsf/rfws/ebiWidget/loadReport | 
|---|---|
| HTTP Method | GET | 
| Encode | UTF-8 | 
 2、URL Parameters
| Parameter | Type | Required | Remarks | 
|---|---|---|---|
| authorization | String(Header) | Yes | Access Token obtained via Oauth2 | 
| client_id | String(Header) | Yes | Client ID from [OAuth Applications], generated by the M18 | 
| formatId | long(Query) | Yes | Format ID fetched from another API | 
| beId | long(Query) | No | Business Entity ID,If not specified, query all authorized Business Entity data. | 
| offset | int(Query) | No | Resultset offset : start index | 
| rows | int(Query) | No | Resultset offset : end index | 
 3、Request Sample
	CloseableHttpClient client = HttpClientBuilder.create().build();
	CloseableHttpResponse res = null;
	try {
		String url = "http://" + HostIP + ":" + HostPort + "/jsf/rfws/ebiWidget/loadReport";
		String param = "&formatId=" + formatId;
		HttpGet get = new HttpGet(url + "?" + param);
		get.addHeader("authorization", access_token);
		get.addHeader("client_id", ClientID);
		res = client.execute(get);
		if (res.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
			JSONObject json = JSON.parseObject(EntityUtils.toString(res.getEntity()));
			System.out.println(json);
		}
		get.releaseConnection();
	} catch (Exception e) {
		e.printStackTrace();
	} finally {
		try {
			if (res != null) {
				res.close();
			}
			if (client != null) {
				client.close();
			}
		} catch (Exception ex) {
			ex.printStackTrace();
		}
	}				
 4、Response Sample
{
    "size": 11,
    "rows": [
        {
            "ASIT_A_qty": "10.0000",
            "ASI_A_tDate": "2018.12.11",
            "M18ReservedCol_dataIndex": 1,
            "VEN_A_code": "VIT001",
            "ASIT_A_unitId_code": "个",
            "ASI_A_code": "ASI180003",
            "ASI_A_id": "11",
            "PRO_A_code": "ITPRO001",
            "PRO_A_id": "18",
            "VEN_A_id": "592"
        }
    ]
}

# Goods Receipt Note
# Fetch Goods Receipt Note List
# 一、Description
 Usage: Fetch Goods Receipt Note List.
# 二、API Detail
 1、Request URL
| URL | http://[server]/jsf/rfws/search/search | 
|---|---|
| HTTP Method | GET | 
| Encode | UTF-8 | 
 2、URL Parameters
| Parameter | Type | Required | Remarks | 
|---|---|---|---|
| authorization | String(Header) | Yes | Access Token obtained via Oauth2 | 
| client_id | String(Header) | Yes | Client ID from [OAuth Applications], generated by the M18 | 
| stSearch | String(Query) | Yes | an | 
| beId | long(Query) | Yes | Business Entity ID | 
| formatId | long(Query) | No | Lookup Query ID, If not specified, the default format is used. | 
| startRow | int(Query) | No | Resultset offset : start index | 
| endRow | int(Query) | No | Resultset offset : end index | 
| quickSearchStr | String(Query) | No | Quick search keyword | 
 3、Request Sample
	CloseableHttpClient client = HttpClientBuilder.create().build();
	CloseableHttpResponse res = null;
	try {
		String url = "http://" + HostIP + ":" + HostPort + "/jsf/rfws/search/search";
		String param = "&stSearch=an&beId=11";
		HttpGet get = new HttpGet(url + "?" + param);
		get.addHeader("authorization", access_token);
		get.addHeader("client_id", ClientID);
		res = client.execute(get);
		if (res.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
			JSONObject json = JSON.parseObject(EntityUtils.toString(res.getEntity()));
		}
		get.releaseConnection();
	} catch (Exception e) {
		e.printStackTrace();
	} finally {
		try {
			if (res != null) {
				res.close();
			}
			if (client != null) {
				client.close();
			}
		} catch (Exception ex) {
			ex.printStackTrace();
		}
	}
 4、Response Sample
{
  	"stSearch": "an",
    "size": 36,
    "stSearchDisplay": "Goods Receipt Note",
    "values": [
        {
            "code": "ITAN220325A",
            "tDate": "2022-03-25",
            "mainan.venId.ven.code": "2000C-014",
            "mainan.venId.ven.desc__lang": "Choi Hop Hong Co., Ltd",
            "venDnNo": "",
            "mainan.curId.cur.sym": "¥",
            "mainan.flowTypeId.flowtype.code": "PURCHASE",
            "mainan.flowTypeId.flowtype.desc": "Purchase Flow",
            "iRev": 1,
            "lastModifyDate": "2022-03-25 10:51:16",
            "mainan.lastModifyUid.simpleUser.desc__lang": "Ivan Tan",
            "id": 679,
            "st_desc": "ITAN220325A",
            "st_id": 679,
            "st_code": "ITAN220325A"
        }
  	]
}
# Load Goods Receipt Note
# 一、Description
 Usage: Load 【Goods Receipt Note】Record
# 二、API Detail
 1、Request URL
| URL | http://[server]/jsf/rfws/root/api/read/an | 
|---|---|
| HTTP Method | GET | 
| Encode | UTF-8 | 
 2、URL Parameters
| Parameter | Type | Required | Remarks | 
|---|---|---|---|
| authorization | String(Header) | Yes | Access Token obtained via Oauth2 | 
| client_id | String(Header) | Yes | Client ID from [OAuth Applications], generated by the M18 | 
| menuCode | String(Query) | Yes | an | 
| id | long(Query) | Yes | Goods Receipt Note ID | 
| param | String(Query) | No | Extra Pamameters: in JSON format | 
 3、Request Sample
		CloseableHttpClient client = HttpClientBuilder.create().build();
		CloseableHttpResponse res = null;
		try {
			String url = "http://" + HostIP + ":" + HostPort + "/jsf/rfws/root/api/read/an";
			String param = "&menuCode=an&id=" + id;
			HttpGet get = new HttpGet(url + "?" + param);
			get.addHeader("authorization", access_token);
			get.addHeader("client_id", ClientID);
			res = client.execute(get);
			if (res.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
				JSONObject json = JSON.parseObject(EntityUtils.toString(res.getEntity()));
				System.out.println(json);
			}
			get.releaseConnection();
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				if (res != null) {
					res.close();
				}
				if (client != null) {
					client.close();
				}
			} catch (Exception ex) {
				ex.printStackTrace();
			}
		}
 4、Response Sample
{
    "data": {
        "antlot": [
            {
                "lotnoNumAttr17": 0,
                "lotnoNumAttr16": 0,
                "lotnoNumAttr15": 0,
                "lotnoNumAttr14": 0,
                "lotnoNumAttr19": 0,
                "lotnoNumAttr18": 0,
                "lotnoLookupAttr20": 0,
                "lotnoNumAttr13": 0,
                "lotnoNumAttr12": 0,
                "lotnoNumAttr11": 0,
                "lotnoNumAttr10": 0,
                "lotnoLookupAttr16": 0,
                "lotnoLookupAttr17": 0,
                "lotnoLookupAttr14": 0,
                "lotnoLookupAttr15": 0,
                "lotnoLookupAttr18": 0,
                "lotnoLookupAttr19": 0,
                "newLotno": 1,
                "lotnoLot": "A",
                "id": 332,
                "lotnoNumAttr20": 0,
                "lotnoLookupAttr12": 0,
                "lotnoLookupAttr13": 0,
                "lotnoLookupAttr10": 0,
                "lotnoLookupAttr11": 0,
                "iRev": 1,
                "ce01Module": "an",
                "lotnoDateAttr3": -2209017600000,
                "lotnoDateAttr4": -2209017600000,
                "lotnoDateAttr1": -2209017600000,
                "lotnoDateAttr2": -2209017600000,
                "lotnoDateAttr7": -2209017600000,
                "lotnoDateAttr8": -2209017600000,
                "lotnoDateAttr5": -2209017600000,
                "lotnoDateAttr6": -2209017600000,
                "unitId": 40,
                "lotnoDateAttr9": -2209017600000,
                "locId": 7,
                "lotnoTextAttr1": "",
                "udfaaa": "",
                "lotnoTextAttr2": "",
                "lotnoTextAttr3": "",
                "lotnoTextAttr4": "",
                "lotnoTextAttr5": "",
                "lotnoTextAttr6": "",
                "lotnoTextAttr7": "",
                "lotnoTextAttr8": "",
                "lotnoTextAttr9": "",
                "dualQty": 0,
                "itemNo": "",
                "hId": 679,
                "lotnoNumAttr1": 0,
                "lotnoNumAttr2": 0,
                "lotnoNumAttr3": 0,
                "lotnoNumAttr4": 0,
                "lotnoExpDate": 253402271999000,
                "footerKey": "     1",
                "qty": 1,
                "lotnoNumAttr5": 0,
                "lotnoNumAttr6": 0,
                "lotnoNumAttr7": 0,
                "lotnoNumAttr8": 0,
                "lotnoNumAttr9": 0,
                "lotNoId": 5479,
                "lotnoTextAttr16": "",
                "lotnoTextAttr15": "",
                "lotnoTextAttr18": "",
                "lotnoTextAttr17": "",
                "lotnoTextAttr12": "",
                "lotnoTextAttr11": "",
                "lotnoDateAttr20": -2209017600000,
                "lotnoTextAttr14": "",
                "lotnoTextAttr13": "",
                "lotnoTextAttr19": "",
                "lotnoTextAttr10": "",
                "dualUnitId": 29,
                "lotnoLookupAttr5": 0,
                "lotnoLookupAttr6": 0,
                "lotnoLookupAttr7": 0,
                "lotnoDateAttr18": -2209017600000,
                "lotnoLookupAttr8": 0,
                "lotnoDateAttr19": -2209017600000,
                "lotno": "ITAN220325A00",
                "lotnoLookupAttr9": 0,
                "proId": 26,
                "lotnoDateAttr12": -2209017600000,
                "lotnoDateAttr13": -2209017600000,
                "lotnoDateAttr10": -2209017600000,
                "lotnoDateAttr11": -2209017600000,
                "lotnoTextAttr20": "",
                "lotnoLookupAttr1": 0,
                "lotnoDateAttr16": -2209017600000,
                "lotnoLookupAttr2": 0,
                "lotnoDateAttr17": -2209017600000,
                "lotnoLookupAttr3": 0,
                "lotnoDateAttr14": -2209017600000,
                "lotnoLookupAttr4": 0,
                "lotnoDateAttr15": -2209017600000
            }
        ],
        "reman": [
            {
                "hId": 679,
                "i18nField": "{\"remarks_zh-CN\": \"\"}",
                "remarks_zh-CN": "",
                "remarks_ccn": "",
                "remarks_en": "",
                "remarks_haha1": "",
                "iRev": 1,
                "id": 679,
                "remarks_zh-TW": "",
                "remarks": "",
                "remarks_ctw": "",
                "ce01Module": "an"
            }
        ],
        "ant": [
            {
                "sourceId": 10661,
                "unit2Id": 40,
                "scrapQty2": 0,
                "scrapQty1": 0,
                "dualQty": 0,
                "qty2": 0,
                "itemNo": "     1",
                "venDnNo": "",
                "qty1": 1,
                "poLot": "A",
                "beId": 11,
                "passQty1": 0,
                "passQty2": 0,
                "bDesc": "",
                "bDesc_zh-TW": "",
                "newLotno": 0,
                "udfString": "",
                "id": 1006,
                "up": 10,
                "ctn": 0,
                "dDesc_haha1": "",
                "height": 0,
                "isInventory": true,
                "hId": 679,
                "perCtn": 0,
                "reDeliveryId": 10661,
                "completed": false,
                "freeQtyPer": 0,
                "passQty": 0,
                "volume": 0,
                "dDesc": "",
                "footerKey": "     1",
                "i18nField": "{\"bDesc_zh-CN\": \"\", \"dDesc_zh-CN\": \"\"}",
                "sourceType": "po",
                "qty": 1,
                "invup": 10,
                "asnLot": "",
                "disc": 0,
                "asnId": 0,
                "packingDesc": "",
                "refCode": "",
                "lotNoId": 0,
                "dDesc_ctw": "",
                "innerQty": 0,
                "unit1Id": 40,
                "costAmt": 0,
                "reDeliveryType": "po",
                "amt": 10,
                "nw": 0,
                "iRev": 1,
                "dDesc_zh-CN": "",
                "qup": 0,
                "packingUnitId": 0,
                "poId": 10661,
                "bDesc_ctw": "",
                "ce01Module": "an",
                "lot": "A",
                "bDesc_haha1": "",
                "reDeliveryLot": "A",
                "dDesc_zh-TW": "",
                "domAmt": 10,
                "reShipType": "asi",
                "udfCheck": false,
                "bDesc_ccn": "",
                "unitId": 40,
                "innerUnitId": 0,
                "dDesc_ccn": "",
                "locId": 7,
                "bDesc_en": "",
                "reDelivery": false,
                "scrapQty": 0,
                "sourceCliId": 0,
                "length": 0,
                "dDesc_en": "",
                "dualUnitId": 29,
                "gw": 0,
                "sourceLot": "A",
                "proId": 26,
                "width": 0,
                "qcId": 0,
                "bDesc_zh-CN": ""
            }
        ],
        "mainan": [
            {
                "lastModifyUid": 11,
                "useAccess": false,
                "virDeptId": 0,
                "expiredDate": -2209017600000,
                "position_zh-CN": "",
                "sysJson": "",
                "viewCode": "an",
                "venDnNo": "",
                "beId": 11,
                "useAccessBl": false,
                "id": 679,
                "doctypeId": 0,
                "locked": false,
                "position_ctw": "",
                "lastModifyDate": 1648176676000,
                "createUid": 11,
                "rev": "1",
                "lastApproveUid": 0,
                "ttlCharge": 0,
                "completed": false,
                "expiredUid": 0,
                "freeQtyPer": 0,
                "descOrigin": "VENREF",
                "position_en": "",
                "position_zh-TW": "",
                "venId": 108,
                "i18nField": "{\"position_zh-CN\": \"\"}",
                "manId": 0,
                "ttlAmt": 10,
                "multiFlowSrcId": 0,
                "position": "",
                "flowTypeId": 1356,
                "status": "N",
                "weightUnit": "kg",
                "multiFlowFlowId": 0,
                "tDate": 1648137600000,
                "code": "ITAN220325A",
                "cnDeptId": 0,
                "multiFlowSrcModule": "",
                "amt": 10,
                "iRev": 1,
                "upOrigin": "POLAST",
                "ce01Module": "an",
                "curId": 1,
                "expired": false,
                "rate": 1,
                "domAmt": 10,
                "measUnit": "cbm",
                "printCount": 0,
                "statusModifyDate": 1648176676000,
                "locId": 0,
                "createDate": 1648176676000,
                "loadGpCoData": false,
                "useAccessWl": false,
                "position_ccn": "",
                "ttlDisc": 0,
                "multiFlowSrcBeId": 0,
                "position_haha1": "",
                "useAccessAutoCalc": false,
                "staffId": 723,
                "domAmtDiff": 0
            }
        ]
    },
    "messages": [],
    "status": true
}
# Create Goods Receipt Note
# 一、Description
 Usage: create or update 【Goods Receipt Note】
# 二、API Detail
 1、Request URL
| URL | http://[server]/jsf/rfws/root/api/save/an | 
|---|---|
| HTTP Method | PUT | 
| Encode | UTF-8 | 
 2、URL Parameters
| Parameter | Type | Required | Remarks | 
|---|---|---|---|
| authorization | String(Header) | Yes | Access Token obtained via Oauth2 | 
| client_id | String(Header) | Yes | Client ID from [OAuth Applications], generated by the M18 | 
| menuCode | String(Query) | Yes | an | 
| param | String(Query) | No | Extra Pamameters: in JSON format | 
 3、Request Sample
	CloseableHttpClient client = HttpClientBuilder.create().build();
	CloseableHttpResponse res = null;
	try {
		String url = "http://" + HostIP + ":" + HostPort + "/jsf/rfws/root/api/save/an";
		String param = "&menuCode=an";
		HttpPut put = new HttpPut(url + "?" + param);
		put.addHeader("authorization", access_token);
		put.addHeader("client_id", ClientID);
		StringEntity entity = new StringEntity(data.toJSONString(), ContentType.APPLICATION_JSON);
		entity.setContentEncoding("UTF-8");
		put.setEntity(entity);
		res = client.execute(put);
		if (res.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
			JSONObject json = JSON.parseObject(EntityUtils.toString(res.getEntity()));
			if (json != null) {
				recordId = json.getLongValue("recordId");
			}
			System.out.println(json);
		}
		put.releaseConnection();
	} catch (Exception e) {
		e.printStackTrace();
	} finally {
		try {
			if (res != null) {
				res.close();
			}
			if (client != null) {
				client.close();
			}
		} catch (Exception ex) {
			ex.printStackTrace();
		}
	}				
Entity data as JSON format:
{
    "mainan": {
        "values": [
            {
                "beId": 11,
                "code": "ITAN220325A",
                "venId": 108,
                "curId": 1,
                "rate": 1,
                "flowTypeId": 1356,
                "staffId": 723
            }
        ]
    },
    "ant": {
        "values": [
            {
                "sourceType": "po",
                "sourceId": 10661,
                "sourceLot": "A",
                "proId": 26,
                "locId": 7,
                "unitId": 40,
                "qty": 1,
                "up": 10,
                "amt": 10
            }
        ]
    }
}
 4、Response Sample
{
	"recordId": 679,
	"messages": [],
	"status": true
}
{
    "recordId": 0,
    "messages": [
        {
            "msgDetail": "Required field is empty",
            "msgCode": "core_101905"
        }
    ],
    "status": false
}
# Create Goods Receipt Note (Auto Completion)
# 一、Description
 1. Usage: Create 【Goods Receipt Note】
 2. This API has the following characteristics:
  a. Support using code instead of id field
				 b. If field  currency has no value specified, the Entity Currency will be used automatically
				 c. If field staff has no value specified, the default staff in the User Options will be used automatically
				 d. If field document date has no value specified, the value is obtained according to the date option in the [Preference Setup (Trade)]
				 e. If field business process has no value specified, according to the default value set in [Business Process Setup (Trade)]
# 二、API Detail
 1、Request URL
| URL | http://[server]/jsf/rfws/erp/bsFlow/save/an | 
|---|---|
| HTTP Method | POST | 
| Encode | UTF-8 | 
 2、URL Parameters
| Parameter | Type | Required | Remarks | 
|---|---|---|---|
| authorization | String(Header) | Yes | Access Token obtained via Oauth2 | 
| client_id | String(Header) | Yes | Client ID from [OAuth Applications], generated by the M18 | 
 3、Request Sample
	CloseableHttpClient client = HttpClientBuilder.create().build();
	CloseableHttpResponse res = null;
	try {
		String url = "http://" + HostIP + ":" + HostPort + "/jsf/rfws/erp/bsFlow/save/an";
		HttpPost post = new HttpPost(url);
		post.addHeader("authorization", access_token);
		post.addHeader("client_id", ClientID);
		StringEntity entity = new StringEntity(data.toJSONString(), ContentType.APPLICATION_JSON);
		entity.setContentEncoding("UTF-8");
		post.setEntity(entity);
		res = client.execute(post);
		if (res.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
			JSONObject json = JSON.parseObject(EntityUtils.toString(res.getEntity()));
			if (json != null) {
				recordId = json.getLongValue("tranId");
			}
			System.out.println(json);
		}
		post.releaseConnection();
	} catch (Exception e) {
		e.printStackTrace();
	} finally {
		try {
			if (res != null) {
				res.close();
			}
			if (client != null) {
				client.close();
			}
		} catch (Exception ex) {
			ex.printStackTrace();
		}
	}
Sample data
{
    "beCode": "IT",
    "venCode": "VIT001",
    "ant": [
        {
            "proCode": "ITPRO002",
            "unitCode": "PCS",
            "locCode": "SZO",
            "qty": 1,
            "up": 10,
            "amt": 10
        }
    ]
}
 4、Response Sample
{
  "tranId": 680,
  "tranCode": "AN0220006",
  "message": "",
  "status": true
}
# Delete Goods Receipt Note
# 一、Description
 Usage: Delete Goods Receipt Note
# 二、API Detail
 1、Request URL
| URL | http://[server]/jsf/rfws/root/api/delete/an | 
|---|---|
| HTTP Method | DELETE | 
| Encode | UTF-8 | 
 2、URL Parameters
| Parameter | Type | Required | Remarks | 
|---|---|---|---|
| authorization | String(Header) | Yes | Access Token obtained via Oauth2 | 
| client_id | String(Header) | Yes | Client ID from [OAuth Applications], generated by the M18 | 
| menuCode | String(Query) | Yes | an | 
| id | long(Query) | Yes | Goods Receipt Note ID | 
| param | String(Query) | No | Extra Pamameters: in JSON format | 
 3、Request Sample
	CloseableHttpClient client = HttpClientBuilder.create().build();
	CloseableHttpResponse res = null;
	try {
		String url = "http://" + HostIP + ":" + HostPort + "/jsf/rfws/root/api/delete/an";
		String param = "&menuCode=an&id=" + id;
		HttpDelete delete = new HttpDelete(url + "?" + param);
		delete.addHeader("authorization", access_token);
		delete.addHeader("client_id", ClientID);
		res = client.execute(delete);
		if (res.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
			JSONObject json = JSON.parseObject(EntityUtils.toString(res.getEntity()));
			System.out.println(json);
		}
		delete.releaseConnection();
	} catch (Exception e) {
		e.printStackTrace();
	} finally {
		try {
			if (res != null) {
				res.close();
			}
			if (client != null) {
				client.close();
			}
		} catch (Exception ex) {
			ex.printStackTrace();
		}
	}
 4、Response Sample
{
	"messages": [],
	"status": true
}
{
    "messages": [
        {
            "msgDetail": "Record has been deleted",
            "msgCode": "core_101017"
        }
    ],
    "status": false
}
# Load EBI data:Goods Receipt Note List
# 一、Description
 Usage: Run EBI[Goods Receipt Note List],return EBI data
# 二、API Detail
 1、Request URL
| URL | http://[server]/jsf/rfws/ebiWidget/loadReport | 
|---|---|
| HTTP Method | GET | 
| Encode | UTF-8 | 
 2、URL Parameters
| Parameter | Type | Required | Remarks | 
|---|---|---|---|
| authorization | String(Header) | Yes | Access Token obtained via Oauth2 | 
| client_id | String(Header) | Yes | Client ID from [OAuth Applications], generated by the M18 | 
| formatId | long(Query) | Yes | Format ID fetched from another API | 
| beId | long(Query) | No | Business Entity ID,If not specified, query all authorized Business Entity data. | 
| offset | int(Query) | No | Resultset offset : start index | 
| rows | int(Query) | No | Resultset offset : end index | 
 3、Request Sample
	CloseableHttpClient client = HttpClientBuilder.create().build();
	CloseableHttpResponse res = null;
	try {
		String url = "http://" + HostIP + ":" + HostPort + "/jsf/rfws/ebiWidget/loadReport";
		String param = "&formatId=" + formatId;
		HttpGet get = new HttpGet(url + "?" + param);
		get.addHeader("authorization", access_token);
		get.addHeader("client_id", ClientID);
		res = client.execute(get);
		if (res.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
			JSONObject json = JSON.parseObject(EntityUtils.toString(res.getEntity()));
			System.out.println(json);
		}
		get.releaseConnection();
	} catch (Exception e) {
		e.printStackTrace();
	} finally {
		try {
			if (res != null) {
				res.close();
			}
			if (client != null) {
				client.close();
			}
		} catch (Exception ex) {
			ex.printStackTrace();
		}
	}				
 4、Response Sample
{
    "size": 36,
    "rows": [
        {
            "AN_A_ttlDisc": "0.00",
            "AN_A_curId": "1",
            "AN_A_id": "7",
            "M18ReservedCol_dataIndex": 1,
            "AN_A_curId_code": "R",
            "LOC_A_id": "1",
            "AN_A_tDate": "2016.08.22",
            "AN_A_ttlCharge": "0.00",
            "LOC_A_code": "PHY",
            "AN_A_rate": "1.00000000",
            "AN_A_ttlAmt": "4,350.00",
            "VEN_A_code": "V0001",
            "AN_A_amt": "4,350.00",
            "AN_A_code": "ITGRN16080001",
            "VEN_A_id": "1"
        }
    ]
}

# Load EBI data:Goods Receipt Note Report
# 一、Description
 Usage: Run EBI[Goods Receipt Note Report],return EBI data
# 二、API Detail
 1、Request URL
| URL | http://[server]/jsf/rfws/ebiWidget/loadReport | 
|---|---|
| HTTP Method | GET | 
| Encode | UTF-8 | 
 2、URL Parameters
| Parameter | Type | Required | Remarks | 
|---|---|---|---|
| authorization | String(Header) | Yes | Access Token obtained via Oauth2 | 
| client_id | String(Header) | Yes | Client ID from [OAuth Applications], generated by the M18 | 
| formatId | long(Query) | Yes | Format ID fetched from another API | 
| beId | long(Query) | No | Business Entity ID,If not specified, query all authorized Business Entity data. | 
| offset | int(Query) | No | Resultset offset : start index | 
| rows | int(Query) | No | Resultset offset : end index | 
 3、Request Sample
	CloseableHttpClient client = HttpClientBuilder.create().build();
	CloseableHttpResponse res = null;
	try {
		String url = "http://" + HostIP + ":" + HostPort + "/jsf/rfws/ebiWidget/loadReport";
		String param = "&formatId=" + formatId;
		HttpGet get = new HttpGet(url + "?" + param);
		get.addHeader("authorization", access_token);
		get.addHeader("client_id", ClientID);
		res = client.execute(get);
		if (res.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
			JSONObject json = JSON.parseObject(EntityUtils.toString(res.getEntity()));
			System.out.println(json);
		}
		get.releaseConnection();
	} catch (Exception e) {
		e.printStackTrace();
	} finally {
		try {
			if (res != null) {
				res.close();
			}
			if (client != null) {
				client.close();
			}
		} catch (Exception ex) {
			ex.printStackTrace();
		}
	}				
 4、Response Sample
{
    "size": 56,
    "rows": [
        {
            "MAIN_lotAmt": "4,350.00",
            "AN_A_id": "7",
            "ANT_A_qty": "500.0000",
            "ANT_A_unitId_code": "PCS",
            "M18ReservedCol_dataIndex": 1,
            "MAIN_lotQty": "500.0000",
            "AN_A_code": "ITGRN16080001",
            "PRO_A_code": "PRO004",
            "PRO_A_id": "8",
            "LOTNO_A_lotno": "ITGRN16080001-01"
        }
    ]
}

# Purchase Return
# Fetch Purchase Return List
# 一、Description
 Usage: Fetch Purchase Return List.
# 二、API Detail
 1、Request URL
| URL | http://[server]/jsf/rfws/search/search | 
|---|---|
| HTTP Method | GET | 
| Encode | UTF-8 | 
 2、URL Parameters
| Parameter | Type | Required | Remarks | 
|---|---|---|---|
| authorization | String(Header) | Yes | Access Token obtained via Oauth2 | 
| client_id | String(Header) | Yes | Client ID from [OAuth Applications], generated by the M18 | 
| stSearch | String(Query) | Yes | pret | 
| beId | long(Query) | Yes | Business Entity ID | 
| formatId | long(Query) | No | Lookup Query ID, If not specified, the default format is used. | 
| startRow | int(Query) | No | Resultset offset : start index | 
| endRow | int(Query) | No | Resultset offset : end index | 
| quickSearchStr | String(Query) | No | Quick search keyword | 
 3、Request Sample
	CloseableHttpClient client = HttpClientBuilder.create().build();
	CloseableHttpResponse res = null;
	try {
		String url = "http://" + HostIP + ":" + HostPort + "/jsf/rfws/search/search";
		String param = "&stSearch=pret&beId=11";
		HttpGet get = new HttpGet(url + "?" + param);
		get.addHeader("authorization", access_token);
		get.addHeader("client_id", ClientID);
		res = client.execute(get);
		if (res.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
			JSONObject json = JSON.parseObject(EntityUtils.toString(res.getEntity()));
		}
		get.releaseConnection();
	} catch (Exception e) {
		e.printStackTrace();
	} finally {
		try {
			if (res != null) {
				res.close();
			}
			if (client != null) {
				client.close();
			}
		} catch (Exception ex) {
			ex.printStackTrace();
		}
	}
 4、Response Sample
{
  	"stSearch": "pret",
    "size": 8,
    "stSearchDisplay": "Purchase Return",
    "values": [
        {
            "code": "ITPRET220330A",
            "tDate": "2022-03-30",
            "mainpret.venId.ven.code": "VIT001",
            "mainpret.venId.ven.desc__lang": "Global Shared (Test printing long text stretch with overflow)",
            "mainpret.curId.cur.sym": "¥",
            "mainpret.flowTypeId.flowtype.code": "PURCHASE",
            "mainpret.flowTypeId.flowtype.desc": "Purchase Flow",
            "iRev": 1,
            "lastModifyDate": "2022-03-30 14:24:48",
            "mainpret.lastModifyUid.simpleUser.desc__lang": "Ivan Tan",
            "id": 88,
            "st_desc": "ITPRET220330A",
            "st_id": 88,
            "st_code": "ITPRET220330A"
        }
  	]
}
# Load Purchase Return
# 一、Description
 Usage: Load 【Purchase Return】Record
# 二、API Detail
 1、Request URL
| URL | http://[server]/jsf/rfws/root/api/read/pret | 
|---|---|
| HTTP Method | GET | 
| Encode | UTF-8 | 
 2、URL Parameters
| Parameter | Type | Required | Remarks | 
|---|---|---|---|
| authorization | String(Header) | Yes | Access Token obtained via Oauth2 | 
| client_id | String(Header) | Yes | Client ID from [OAuth Applications], generated by the M18 | 
| menuCode | String(Query) | Yes | pret | 
| id | long(Query) | Yes | Purchase Return ID | 
| param | String(Query) | No | Extra Pamameters: in JSON format | 
 3、Request Sample
		CloseableHttpClient client = HttpClientBuilder.create().build();
		CloseableHttpResponse res = null;
		try {
			String url = "http://" + HostIP + ":" + HostPort + "/jsf/rfws/root/api/read/pret";
			String param = "&menuCode=pret&id=" + id;
			HttpGet get = new HttpGet(url + "?" + param);
			get.addHeader("authorization", access_token);
			get.addHeader("client_id", ClientID);
			res = client.execute(get);
			if (res.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
				JSONObject json = JSON.parseObject(EntityUtils.toString(res.getEntity()));
				System.out.println(json);
			}
			get.releaseConnection();
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				if (res != null) {
					res.close();
				}
				if (client != null) {
					client.close();
				}
			} catch (Exception ex) {
				ex.printStackTrace();
			}
		}
 4、Response Sample
{
    "data": {
        "prettlot": [
            {
                "lotnoNumAttr17": 0,
                "lotnoNumAttr16": 0,
                "lotnoNumAttr15": 0,
                "lotnoNumAttr14": 0,
                "lotnoNumAttr19": 0,
                "lotnoNumAttr18": 0,
                "lotnoLookupAttr20": 0,
                "lotnoNumAttr13": 0,
                "lotnoNumAttr12": 0,
                "lotnoNumAttr11": 0,
                "lotnoNumAttr10": 0,
                "lotnoLookupAttr16": 0,
                "lotnoLookupAttr17": 0,
                "lotnoLookupAttr14": 0,
                "lotnoLookupAttr15": 0,
                "lotnoLookupAttr18": 0,
                "lotnoLookupAttr19": 0,
                "newLotno": 0,
                "lotnoLot": "A",
                "id": 34,
                "lotnoNumAttr20": 0,
                "lotnoLookupAttr12": 0,
                "lotnoLookupAttr13": 0,
                "lotnoLookupAttr10": 0,
                "lotnoLookupAttr11": 0,
                "iRev": 1,
                "ce01Module": "pret",
                "lotnoDateAttr3": -2561356800000,
                "lotnoDateAttr4": -2435126400000,
                "lotnoDateAttr1": -2561356800000,
                "lotnoDateAttr2": -2561356800000,
                "lotnoDateAttr7": -2209017600000,
                "lotnoDateAttr8": -2209017600000,
                "lotnoDateAttr5": -2209017600000,
                "lotnoDateAttr6": -2209017600000,
                "unitId": 40,
                "lotnoDateAttr9": -2209017600000,
                "locId": 7,
                "lotnoTextAttr1": "",
                "lotnoTextAttr2": "",
                "lotnoTextAttr3": "",
                "lotnoTextAttr4": "",
                "lotnoTextAttr5": "",
                "lotnoTextAttr6": "",
                "lotnoTextAttr7": "",
                "lotnoTextAttr8": "",
                "lotnoTextAttr9": "",
                "dualQty": 1,
                "itemNo": "",
                "hId": 88,
                "lotnoNumAttr1": 0,
                "lotnoNumAttr2": 0,
                "lotnoNumAttr3": 0,
                "lotnoNumAttr4": 0,
                "lotnoExpDate": 253144540800000,
                "footerKey": "     1",
                "qty": 1,
                "lotnoNumAttr5": 0,
                "lotnoNumAttr6": 0,
                "lotnoNumAttr7": 0,
                "lotnoNumAttr8": 0,
                "lotnoNumAttr9": 0,
                "lotNoId": 625,
                "lotnoTextAttr16": "",
                "lotnoTextAttr15": "",
                "lotnoTextAttr18": "",
                "lotnoTextAttr17": "",
                "lotnoTextAttr12": "",
                "lotnoTextAttr11": "",
                "lotnoDateAttr20": -2209017600000,
                "lotnoTextAttr14": "",
                "lotnoTextAttr13": "",
                "lotnoTextAttr19": "",
                "lotnoTextAttr10": "",
                "dualUnitId": 29,
                "lotnoLookupAttr5": 0,
                "lotnoLookupAttr6": 0,
                "lotnoLookupAttr7": 0,
                "lotnoDateAttr18": -2209017600000,
                "lotnoLookupAttr8": 0,
                "lotnoDateAttr19": -2209017600000,
                "lotno": "XXXXXXXXXXXOS0160069-01",
                "lotnoLookupAttr9": 0,
                "proId": 26,
                "lotnoDateAttr12": -2209017600000,
                "lotnoDateAttr13": -2209017600000,
                "lotnoDateAttr10": -2209017600000,
                "lotnoDateAttr11": -2209017600000,
                "lotnoTextAttr20": "",
                "lotnoLookupAttr1": 0,
                "lotnoDateAttr16": -2209017600000,
                "lotnoLookupAttr2": 0,
                "lotnoDateAttr17": -2209017600000,
                "lotnoLookupAttr3": 0,
                "lotnoDateAttr14": -2209017600000,
                "lotnoLookupAttr4": 3,
                "lotnoDateAttr15": -2209017600000
            }
        ],
        "mainpret": [
            {
                "lastModifyUid": 11,
                "useAccess": false,
                "virDeptId": 0,
                "expiredDate": -2209017600000,
                "position_zh-CN": "",
                "sysJson": "",
                "viewCode": "pret",
                "beId": 11,
                "useAccessBl": false,
                "id": 88,
                "doctypeId": 0,
                "locked": false,
                "position_ctw": "",
                "lastModifyDate": 1648621488000,
                "createUid": 11,
                "rev": "1",
                "lastApproveUid": 11,
                "ttlCharge": 0,
                "completed": false,
                "expiredUid": 0,
                "freeQtyPer": 0,
                "descOrigin": "POLAST",
                "position_en": "",
                "position_zh-TW": "",
                "venId": 592,
                "i18nField": "{\"position_zh-CN\": \"\"}",
                "manId": 0,
                "ttlAmt": 6,
                "multiFlowSrcId": 0,
                "position": "",
                "flowTypeId": 1356,
                "status": "Y",
                "multiFlowFlowId": 0,
                "tDate": 1648569600000,
                "code": "ITPRET220330A",
                "cnDeptId": 29,
                "multiFlowSrcModule": "",
                "amt": 6,
                "iRev": 1,
                "upOrigin": "POLAST",
                "ce01Module": "pret",
                "curId": 1,
                "expired": false,
                "rate": 1,
                "domAmt": 6,
                "printCount": 0,
                "statusModifyDate": 1648621488000,
                "locId": 7,
                "createDate": 1648621488000,
                "loadGpCoData": false,
                "useAccessWl": false,
                "position_ccn": "",
                "ttlDisc": 0,
                "multiFlowSrcBeId": 0,
                "position_haha1": "",
                "useAccessAutoCalc": false,
                "staffId": 723,
                "domAmtDiff": 0
            }
        ],
        "prett": [
            {
                "sourceId": 51,
                "unit2Id": 40,
                "dualQty": 1,
                "qty2": 0,
                "itemNo": "     1",
                "qty1": 1,
                "poLot": "",
                "beId": 11,
                "bDesc": "Lot no. can be duplicated",
                "bDesc_zh-TW": "",
                "newLotno": 0,
                "id": 178,
                "up": 6,
                "dDesc_haha1": "",
                "isInventory": true,
                "hId": 88,
                "reDeliveryId": 0,
                "completed": false,
                "freeQtyPer": 0,
                "dDesc": "",
                "footerKey": "     1",
                "i18nField": "{\"bDesc_zh-CN\": \"Lot no. can be duplicated\", \"dDesc_zh-CN\": \"\"}",
                "sourceType": "asi",
                "qty": 1,
                "invup": 6,
                "asnLot": "A",
                "disc": 0,
                "asnId": 51,
                "refCode": "",
                "lotNoId": 0,
                "dDesc_ctw": "",
                "unit1Id": 40,
                "costAmt": 0,
                "reDeliveryType": "",
                "amt": 6,
                "iRev": 1,
                "dDesc_zh-CN": "",
                "poId": 0,
                "bDesc_ctw": "",
                "ce01Module": "pret",
                "lot": "A",
                "bDesc_haha1": "",
                "reDeliveryLot": "",
                "dDesc_zh-TW": "",
                "domAmt": 6,
                "reShipType": "asi",
                "bDesc_ccn": "",
                "unitId": 40,
                "dDesc_ccn": "",
                "locId": 7,
                "bDesc_en": "",
                "reDelivery": false,
                "sourceCliId": 0,
                "dDesc_en": "",
                "dualUnitId": 29,
                "sourceLot": "A",
                "proId": 26,
                "qcId": 0,
                "bDesc_zh-CN": "Lot no. can be duplicated"
            }
        ],
        "rempret": [
            {
                "hId": 88,
                "heading_haha1": "",
                "heading_en": "",
                "heading_zh-TW": "",
                "heading": "",
                "remarks_ccn": "",
                "remarks_en": "",
                "heading_ctw": "",
                "iRev": 1,
                "heading_zh-CN": "",
                "ce01Module": "pret",
                "heading_ccn": "",
                "i18nField": "{\"heading_zh-CN\": \"\", \"remarks_zh-CN\": \"\"}",
                "remarks_zh-CN": "",
                "remarks_haha1": "",
                "id": 88,
                "remarks_zh-TW": "",
                "remarks": "",
                "remarks_ctw": ""
            }
        ]
    },
    "messages": [],
    "status": true
}
# Create Purchase Return
# 一、Description
 Usage: create or update 【Purchase Return】
# 二、API Detail
 1、Request URL
| URL | http://[server]/jsf/rfws/root/api/save/pret | 
|---|---|
| HTTP Method | PUT | 
| Encode | UTF-8 | 
 2、URL Parameters
| Parameter | Type | Required | Remarks | 
|---|---|---|---|
| authorization | String(Header) | Yes | Access Token obtained via Oauth2 | 
| client_id | String(Header) | Yes | Client ID from [OAuth Applications], generated by the M18 | 
| menuCode | String(Query) | Yes | pret | 
| param | String(Query) | No | Extra Pamameters: in JSON format | 
 3、Request Sample
	CloseableHttpClient client = HttpClientBuilder.create().build();
	CloseableHttpResponse res = null;
	try {
		String url = "http://" + HostIP + ":" + HostPort + "/jsf/rfws/root/api/save/pret";
		String param = "&menuCode=pret";
		HttpPut put = new HttpPut(url + "?" + param);
		put.addHeader("authorization", access_token);
		put.addHeader("client_id", ClientID);
		StringEntity entity = new StringEntity(data.toJSONString(), ContentType.APPLICATION_JSON);
		entity.setContentEncoding("UTF-8");
		put.setEntity(entity);
		res = client.execute(put);
		if (res.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
			JSONObject json = JSON.parseObject(EntityUtils.toString(res.getEntity()));
			if (json != null) {
				recordId = json.getLongValue("recordId");
			}
			System.out.println(json);
		}
		put.releaseConnection();
	} catch (Exception e) {
		e.printStackTrace();
	} finally {
		try {
			if (res != null) {
				res.close();
			}
			if (client != null) {
				client.close();
			}
		} catch (Exception ex) {
			ex.printStackTrace();
		}
	}				
Entity data as JSON format:
 {
    "mainpret": {
        "values": [
            {
                "beId": 11,
                "code": "ITPRET220325A",
                "venId": 108,
                "curId": 1,
                "rate": 1,
                "flowTypeId": 1356,
                "staffId": 723
            }
        ]
    },
    "prett": {
        "values": [
            {
                "sourceType": "pro",
                "proId": 26,
                "locId": 7,
                "unitId": 40,
                "qty": 1
            }
        ]
    }
}
 4、Response Sample
{
	"recordId": 86,
	"messages": [],
	"status": true
}
{
    "recordId": 0,
    "messages": [
        {
            "msgDetail": "Required field is empty",
            "msgCode": "core_101905"
        }
    ],
    "status": false
}
# Create Purchase Return (Auto Completion)
# 一、Description
 1. Usage: Create 【Purchase Return】
 2. This API has the following characteristics:
  a. Support using code instead of id field
				 b. If field  currency has no value specified, the Entity Currency will be used automatically
				 c. If field staff has no value specified, the default staff in the User Options will be used automatically
				 d. If field document date has no value specified, the value is obtained according to the date option in the [Preference Setup (Trade)]
				 e. If field business process has no value specified, according to the default value set in [Business Process Setup (Trade)]
# 二、API Detail
 1、Request URL
| URL | http://[server]/jsf/rfws/erp/bsFlow/save/pret | 
|---|---|
| HTTP Method | POST | 
| Encode | UTF-8 | 
 2、URL Parameters
| Parameter | Type | Required | Remarks | 
|---|---|---|---|
| authorization | String(Header) | Yes | Access Token obtained via Oauth2 | 
| client_id | String(Header) | Yes | Client ID from [OAuth Applications], generated by the M18 | 
 3、Request Sample
	CloseableHttpClient client = HttpClientBuilder.create().build();
	CloseableHttpResponse res = null;
	try {
		String url = "http://" + HostIP + ":" + HostPort + "/jsf/rfws/erp/bsFlow/save/pret";
		HttpPost post = new HttpPost(url);
		post.addHeader("authorization", access_token);
		post.addHeader("client_id", ClientID);
		StringEntity entity = new StringEntity(data.toJSONString(), ContentType.APPLICATION_JSON);
		entity.setContentEncoding("UTF-8");
		post.setEntity(entity);
		res = client.execute(post);
		if (res.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
			JSONObject json = JSON.parseObject(EntityUtils.toString(res.getEntity()));
			if (json != null) {
				recordId = json.getLongValue("tranId");
			}
			System.out.println(json);
		}
		post.releaseConnection();
	} catch (Exception e) {
		e.printStackTrace();
	} finally {
		try {
			if (res != null) {
				res.close();
			}
			if (client != null) {
				client.close();
			}
		} catch (Exception ex) {
			ex.printStackTrace();
		}
	}
Sample data
{
    "beCode": "IT",
    "venCode": "VIT001",
    "prett": [
        {
            "proCode": "ITPRO002",
            "unitCode": "PCS",
            "locCode": "SZO",
            "qty": 1
        }
    ]
}
 4、Response Sample
{
  "tranId": 87,
  "tranCode": "PRE220001",
  "message": "",
  "status": true
}
# Delete Purchase Return
# 一、Description
 Usage: Delete Purchase Return
# 二、API Detail
 1、Request URL
| URL | http://[server]/jsf/rfws/root/api/delete/pret | 
|---|---|
| HTTP Method | DELETE | 
| Encode | UTF-8 | 
 2、URL Parameters
| Parameter | Type | Required | Remarks | 
|---|---|---|---|
| authorization | String(Header) | Yes | Access Token obtained via Oauth2 | 
| client_id | String(Header) | Yes | Client ID from [OAuth Applications], generated by the M18 | 
| menuCode | String(Query) | Yes | pret | 
| id | long(Query) | Yes | Purchase Return ID | 
| param | String(Query) | No | Extra Pamameters: in JSON format | 
 3、Request Sample
	CloseableHttpClient client = HttpClientBuilder.create().build();
	CloseableHttpResponse res = null;
	try {
		String url = "http://" + HostIP + ":" + HostPort + "/jsf/rfws/root/api/delete/pret";
		String param = "&menuCode=pret&id=" + id;
		HttpDelete delete = new HttpDelete(url + "?" + param);
		delete.addHeader("authorization", access_token);
		delete.addHeader("client_id", ClientID);
		res = client.execute(delete);
		if (res.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
			JSONObject json = JSON.parseObject(EntityUtils.toString(res.getEntity()));
			System.out.println(json);
		}
		delete.releaseConnection();
	} catch (Exception e) {
		e.printStackTrace();
	} finally {
		try {
			if (res != null) {
				res.close();
			}
			if (client != null) {
				client.close();
			}
		} catch (Exception ex) {
			ex.printStackTrace();
		}
	}
 4、Response Sample
{
	"messages": [],
	"status": true
}
{
    "messages": [
        {
            "msgDetail": "Record has been deleted",
            "msgCode": "core_101017"
        }
    ],
    "status": false
}
# Load EBI data:Purchase Return List
# 一、Description
 Usage: Run EBI[Purchase Return List],return EBI data
# 二、API Detail
 1、Request URL
| URL | http://[server]/jsf/rfws/ebiWidget/loadReport | 
|---|---|
| HTTP Method | GET | 
| Encode | UTF-8 | 
 2、URL Parameters
| Parameter | Type | Required | Remarks | 
|---|---|---|---|
| authorization | String(Header) | Yes | Access Token obtained via Oauth2 | 
| client_id | String(Header) | Yes | Client ID from [OAuth Applications], generated by the M18 | 
| formatId | long(Query) | Yes | Format ID fetched from another API | 
| beId | long(Query) | No | Business Entity ID,If not specified, query all authorized Business Entity data. | 
| offset | int(Query) | No | Resultset offset : start index | 
| rows | int(Query) | No | Resultset offset : end index | 
 3、Request Sample
	CloseableHttpClient client = HttpClientBuilder.create().build();
	CloseableHttpResponse res = null;
	try {
		String url = "http://" + HostIP + ":" + HostPort + "/jsf/rfws/ebiWidget/loadReport";
		String param = "&formatId=" + formatId;
		HttpGet get = new HttpGet(url + "?" + param);
		get.addHeader("authorization", access_token);
		get.addHeader("client_id", ClientID);
		res = client.execute(get);
		if (res.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
			JSONObject json = JSON.parseObject(EntityUtils.toString(res.getEntity()));
			System.out.println(json);
		}
		get.releaseConnection();
	} catch (Exception e) {
		e.printStackTrace();
	} finally {
		try {
			if (res != null) {
				res.close();
			}
			if (client != null) {
				client.close();
			}
		} catch (Exception ex) {
			ex.printStackTrace();
		}
	}				
 4、Response Sample
{
    "size": 8,
    "rows": [
        {
            "M_A_code": "ITPR16080001",
            "M_A_ttlDisc": "0.00",
            "M_A_amt": "87.00",
            "M18ReservedCol_dataIndex": 1,
            "M_A_tDate": "2016.08.23",
            "M_A_curId": "1",
            "M_A_ttlAmt": "87.00",
            "M_A_id": "4",
            "M_A_rate": "1.00000000",
            "VEN_A_code": "V0001",
            "M_A_curId_code": "R",
            "VEN_A_id": "1",
            "M_A_ttlCharge": "0.00"
        }
    ]
}

# Load EBI data:Purchase Return Report
# 一、Description
 Usage: Run EBI[Purchase Return Report],return EBI data
# 二、API Detail
 1、Request URL
| URL | http://[server]/jsf/rfws/ebiWidget/loadReport | 
|---|---|
| HTTP Method | GET | 
| Encode | UTF-8 | 
 2、URL Parameters
| Parameter | Type | Required | Remarks | 
|---|---|---|---|
| authorization | String(Header) | Yes | Access Token obtained via Oauth2 | 
| client_id | String(Header) | Yes | Client ID from [OAuth Applications], generated by the M18 | 
| formatId | long(Query) | Yes | Format ID fetched from another API | 
| beId | long(Query) | No | Business Entity ID,If not specified, query all authorized Business Entity data. | 
| offset | int(Query) | No | Resultset offset : start index | 
| rows | int(Query) | No | Resultset offset : end index | 
 3、Request Sample
	CloseableHttpClient client = HttpClientBuilder.create().build();
	CloseableHttpResponse res = null;
	try {
		String url = "http://" + HostIP + ":" + HostPort + "/jsf/rfws/ebiWidget/loadReport";
		String param = "&formatId=" + formatId;
		HttpGet get = new HttpGet(url + "?" + param);
		get.addHeader("authorization", access_token);
		get.addHeader("client_id", ClientID);
		res = client.execute(get);
		if (res.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
			JSONObject json = JSON.parseObject(EntityUtils.toString(res.getEntity()));
			System.out.println(json);
		}
		get.releaseConnection();
	} catch (Exception e) {
		e.printStackTrace();
	} finally {
		try {
			if (res != null) {
				res.close();
			}
			if (client != null) {
				client.close();
			}
		} catch (Exception ex) {
			ex.printStackTrace();
		}
	}				
 4、Response Sample
{
    "size": 7,
    "rows": [
        {
            "PRETT_A_sourceType": "Product / Material",
            "MAIN_multiFlowSrcId": "0",
            "M18ReservedCol_dataIndex": 1,
            "PRET_A_id": "5",
            "PRETT_A_qty": "10.0000",
            "MAIN_multiFlowSrcCode": "",
            "LOC_A_id": "1",
            "PRETT_A_unitId_code": "PCS",
            "LOT_A_lotno": "ITGRN16080001-01",
            "PRET_A_code": "ITPR16080002",
            "PRO_A_id": "8",
            "LOC_A_code": "PHY",
            "MAIN_multiFlowSrcModule": "",
            "PRO_A_code": "PRO004"
        }
    ]
}

# Purchase Invoice
# Fetch Purchase Invoice List
# 一、Description
 Usage: Fetch Purchase Invoice List.
# 二、API Detail
 1、Request URL
| URL | http://[server]/jsf/rfws/search/search | 
|---|---|
| HTTP Method | GET | 
| Encode | UTF-8 | 
 2、URL Parameters
| Parameter | Type | Required | Remarks | 
|---|---|---|---|
| authorization | String(Header) | Yes | Access Token obtained via Oauth2 | 
| client_id | String(Header) | Yes | Client ID from [OAuth Applications], generated by the M18 | 
| stSearch | String(Query) | Yes | pi | 
| beId | long(Query) | Yes | Business Entity ID | 
| formatId | long(Query) | No | Lookup Query ID, If not specified, the default format is used. | 
| startRow | int(Query) | No | Resultset offset : start index | 
| endRow | int(Query) | No | Resultset offset : end index | 
| quickSearchStr | String(Query) | No | Quick search keyword | 
 3、Request Sample
	CloseableHttpClient client = HttpClientBuilder.create().build();
	CloseableHttpResponse res = null;
	try {
		String url = "http://" + HostIP + ":" + HostPort + "/jsf/rfws/search/search";
		String param = "&stSearch=pi&beId=11";
		HttpGet get = new HttpGet(url + "?" + param);
		get.addHeader("authorization", access_token);
		get.addHeader("client_id", ClientID);
		res = client.execute(get);
		if (res.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
			JSONObject json = JSON.parseObject(EntityUtils.toString(res.getEntity()));
		}
		get.releaseConnection();
	} catch (Exception e) {
		e.printStackTrace();
	} finally {
		try {
			if (res != null) {
				res.close();
			}
			if (client != null) {
				client.close();
			}
		} catch (Exception ex) {
			ex.printStackTrace();
		}
	}
 4、Response Sample
{
  	"stSearch": "pi",
    "size": 6,
    "stSearchDisplay": "Purchase Invoice",
    "values": [
        {
            "code": "ITPI220328A",
            "tDate": "2022-03-28",
            "maintap.venId.ven.code": "2000C-014",
            "maintap.venId.ven.desc__lang": "Choi Hop Hong Co., Ltd",
            "venInvNo": "",
            "maintap.curId.cur.sym": "¥",
            "maintap.flowTypeId.flowtype.code": "PURCHASE",
            "maintap.flowTypeId.flowtype.desc": "Purchase Flow",
            "iRev": 1,
            "lastModifyDate": "2022-03-28 16:31:35",
            "maintap.lastModifyUid.simpleUser.desc__lang": "Ivan Tan",
            "id": 962,
            "st_desc": "ITPI220328A",
            "st_id": 962,
            "st_code": "ITPI220328A"
        }
  	]
}
# Load Purchase Invoice
# 一、Description
 Usage: Load 【Purchase Invoice】Record
# 二、API Detail
 1、Request URL
| URL | http://[server]/jsf/rfws/root/api/read/pi | 
|---|---|
| HTTP Method | GET | 
| Encode | UTF-8 | 
 2、URL Parameters
| Parameter | Type | Required | Remarks | 
|---|---|---|---|
| authorization | String(Header) | Yes | Access Token obtained via Oauth2 | 
| client_id | String(Header) | Yes | Client ID from [OAuth Applications], generated by the M18 | 
| menuCode | String(Query) | Yes | pi | 
| id | long(Query) | Yes | Purchase Invoice ID | 
| param | String(Query) | No | Extra Pamameters: in JSON format | 
 3、Request Sample
		CloseableHttpClient client = HttpClientBuilder.create().build();
		CloseableHttpResponse res = null;
		try {
			String url = "http://" + HostIP + ":" + HostPort + "/jsf/rfws/root/api/read/pi";
			String param = "&menuCode=pi&id=" + id;
			HttpGet get = new HttpGet(url + "?" + param);
			get.addHeader("authorization", access_token);
			get.addHeader("client_id", ClientID);
			res = client.execute(get);
			if (res.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
				JSONObject json = JSON.parseObject(EntityUtils.toString(res.getEntity()));
				System.out.println(json);
			}
			get.releaseConnection();
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				if (res != null) {
					res.close();
				}
				if (client != null) {
					client.close();
				}
			} catch (Exception ex) {
				ex.printStackTrace();
			}
		}
 4、Response Sample
{
    "data": {
        "maintap": [
            {
                "useAccess": false,
                "virDeptId": 0,
                "accDesc_ccn": "",
                "installNo": 0,
                "expiredDate": -2209017600000,
                "AI1": 0,
                "AI2": 0,
                "sysJson": "",
                "AI3": 0,
                "AI4": 0,
                "viewCode": "pi",
                "accDesc": "",
                "AI5": 0,
                "AI6": 0,
                "AI7": 0,
                "AI8": 0,
                "AI9": 0,
                "useAccessBl": false,
                "id": 962,
                "position_ctw": "",
                "lastModifyDate": 1648456295000,
                "createUid": 11,
                "accDesc_ctw": "",
                "method": "cod",
                "acCompletedDate": -2209017600000,
                "completed": false,
                "freeQtyPer": 0,
                "descOrigin": "VENREF",
                "i18nField": "{\"accDesc_zh-CN\": \"\", \"position_zh-CN\": \"\"}",
                "dayOfMonth": 0,
                "accDesc_en": "",
                "manId": 0,
                "multiFlowSrcId": 0,
                "flowTypeId": 1356,
                "status": "Y",
                "weightUnit": "kg",
                "multiFlowFlowId": 0,
                "cnDeptId": 0,
                "jlTypeId": 0,
                "iRev": 1,
                "upOrigin": "POLAST",
                "aInvMonth": 0,
                "AI19": 0,
                "ce01Module": "pi",
                "AI17": 0,
                "AI18": 0,
                "AI15": 0,
                "AI16": 0,
                "AI13": 0,
                "AI14": 0,
                "AI11": 0,
                "AI12": 0,
                "AI10": 0,
                "statusModifyDate": 1648456295000,
                "locId": 0,
                "createDate": 1648456295000,
                "loadNeed": true,
                "cp": 0,
                "useAccessWl": false,
                "AI28": 0,
                "AI29": 0,
                "AI26": 0,
                "AI27": 0,
                "AI24": 0,
                "AI25": 0,
                "AI22": 0,
                "multiFlowSrcBeId": 0,
                "AI23": 0,
                "position_haha1": "",
                "AI20": 0,
                "AI21": 0,
                "useAccessAutoCalc": false,
                "domAmtDiff": 0,
                "cpDate": 1648396800000,
                "lastModifyUid": 11,
                "position_zh-CN": "",
                "accDesc_haha1": "",
                "eDiscRate": 0,
                "beId": 11,
                "comRate": 0,
                "AI30": 0,
                "locked": false,
                "showEarlyPayDisc": false,
                "fromModule": "",
                "rev": "1",
                "batchNo": "",
                "lastApproveUid": 11,
                "ttlCharge": 0,
                "acCompleted": false,
                "expiredUid": 0,
                "completedDate": -2209017600000,
                "position_en": "",
                "position_zh-TW": "",
                "venId": 108,
                "monthEndDate": 0,
                "ttlAmt": 10,
                "position": "",
                "venInvNo": "",
                "hpSetting": "dayAfterInv",
                "tDate": 1648396800000,
                "code": "ITPI220328A",
                "multiFlowSrcModule": "",
                "amt": 10,
                "accDesc_zh-TW": "",
                "depoAmt": 0,
                "curId": 1,
                "expired": false,
                "rate": 1,
                "domAmt": 10,
                "measUnit": "cbm",
                "printCount": 0,
                "domDepoAmt": 0,
                "accDesc_zh-CN": "",
                "loadGpCoData": false,
                "position_ccn": "",
                "ttlDisc": 0,
                "attachmentCount": 0,
                "staffId": 723
            }
        ],
        "remtap": [
            {
                "tradeTerm_ccn": "",
                "tradeTerm_en": "",
                "shipMark": "",
                "heading_en": "",
                "shipMark_zh-CN": "",
                "tradeTerm_zh-CN": "",
                "shipMark_ctw": "",
                "remarks_en": "",
                "payTerm_en": "",
                "iRev": 1,
                "heading_zh-CN": "",
                "ce01Module": "pi",
                "tradeTerm": "",
                "heading_ccn": "",
                "payTerm_haha1": "",
                "payTerm_zh-TW": "",
                "remarks_haha1": "",
                "shipMark_en": "",
                "id": 962,
                "remarks_zh-TW": "",
                "particular_ccn": "",
                "hId": 962,
                "heading_haha1": "",
                "payTerm": "",
                "particular_en": "",
                "heading_zh-TW": "",
                "payTerm_ccn": "",
                "heading": "",
                "particular_haha1": "",
                "remarks_ccn": "",
                "particular_zh-TW": "",
                "heading_ctw": "",
                "tradeTerm_ctw": "",
                "particular": "",
                "tradeTerm_zh-TW": "",
                "shipMark_ccn": "",
                "tradeTerm_haha1": "",
                "particular_zh-CN": "",
                "i18nField": "{\"heading_zh-CN\": \"\", \"payTerm_zh-CN\": \"\", \"remarks_zh-CN\": \"\", \"shipMark_zh-CN\": \"\", \"tradeTerm_zh-CN\": \"\", \"particular_zh-CN\": \"\"}",
                "remarks_zh-CN": "",
                "particular_ctw": "",
                "shipMark_haha1": "",
                "payTerm_zh-CN": "",
                "payTerm_ctw": "",
                "shipMark_zh-TW": "",
                "remarks": "",
                "remarks_ctw": ""
            }
        ],
        "apt": [
            {
                "unit2Id": 40,
                "qty2": 0,
                "AI1": 0,
                "AI2": 0,
                "AI3": 0,
                "AI4": 0,
                "AI5": 0,
                "qty1": 1,
                "AI6": 0,
                "AI7": 0,
                "AI8": 0,
                "AI9": 0,
                "bDesc_zh-TW": "",
                "newLotno": 0,
                "id": 1431,
                "ctn": 0,
                "dDesc_haha1": "",
                "height": 0,
                "perCtn": 0,
                "completed": false,
                "freeQtyPer": 0,
                "passQty": 0,
                "i18nField": "{\"bDesc_zh-CN\": \"\", \"dDesc_zh-CN\": \"\"}",
                "sourceType": "pro",
                "asnLot": "",
                "asnId": 0,
                "packingDesc": "",
                "innerQty": 0,
                "costAmt": 0,
                "iRev": 1,
                "poId": 0,
                "AI19": 0,
                "bDesc_ctw": "",
                "ce01Module": "pi",
                "lot": "A",
                "AI17": 0,
                "AI18": 0,
                "AI15": 0,
                "AI16": 0,
                "AI13": 0,
                "reShipType": "asi",
                "AI14": 0,
                "AI11": 0,
                "bDesc_ccn": "",
                "AI12": 0,
                "unitId": 40,
                "AI10": 0,
                "locId": 0,
                "bDesc_en": "",
                "scrapQty": 0,
                "sourceCliId": 0,
                "AI28": 0,
                "AI29": 0,
                "AI26": 0,
                "AI27": 0,
                "AI24": 0,
                "AI25": 0,
                "AI22": 0,
                "AI23": 0,
                "width": 0,
                "AI20": 0,
                "AI21": 0,
                "bDesc_zh-CN": "",
                "sourceId": 0,
                "scrapQty2": 0,
                "scrapQty1": 0,
                "dualQty": 0,
                "itemNo": "     1",
                "venDnNo": "",
                "poLot": "",
                "beId": 11,
                "passQty1": 0,
                "passQty2": 0,
                "bDesc": "",
                "up": 10,
                "AI30": 0,
                "isInventory": false,
                "hId": 962,
                "reDeliveryId": 0,
                "volume": 0,
                "dDesc": "",
                "footerKey": "",
                "qty": 1,
                "invup": 10,
                "disc": 0,
                "refCode": "",
                "lotNoId": 0,
                "dDesc_ctw": "",
                "unit1Id": 40,
                "reDeliveryType": "",
                "amt": 10,
                "nw": 0,
                "dDesc_zh-CN": "",
                "qup": 0,
                "packingUnitId": 0,
                "bDesc_haha1": "",
                "reDeliveryLot": "",
                "dDesc_zh-TW": "",
                "domAmt": 10,
                "innerUnitId": 0,
                "dDesc_ccn": "",
                "reDelivery": false,
                "length": 0,
                "dDesc_en": "",
                "dualUnitId": 29,
                "gw": 0,
                "sourceLot": "",
                "proId": 26,
                "qcId": 0
            }
        ]
    },
    "messages": [],
    "status": true
}
# Create Purchase Invoice
# 一、Description
 Usage: create or update 【Purchase Invoice】
# 二、API Detail
 1、Request URL
| URL | http://[server]/jsf/rfws/root/api/save/pi | 
|---|---|
| HTTP Method | PUT | 
| Encode | UTF-8 | 
 2、URL Parameters
| Parameter | Type | Required | Remarks | 
|---|---|---|---|
| authorization | String(Header) | Yes | Access Token obtained via Oauth2 | 
| client_id | String(Header) | Yes | Client ID from [OAuth Applications], generated by the M18 | 
| menuCode | String(Query) | Yes | pi | 
| param | String(Query) | No | Extra Pamameters: in JSON format | 
 3、Request Sample
	CloseableHttpClient client = HttpClientBuilder.create().build();
	CloseableHttpResponse res = null;
	try {
		String url = "http://" + HostIP + ":" + HostPort + "/jsf/rfws/root/api/save/pi";
		String param = "&menuCode=pi";
		HttpPut put = new HttpPut(url + "?" + param);
		put.addHeader("authorization", access_token);
		put.addHeader("client_id", ClientID);
		StringEntity entity = new StringEntity(data.toJSONString(), ContentType.APPLICATION_JSON);
		entity.setContentEncoding("UTF-8");
		put.setEntity(entity);
		res = client.execute(put);
		if (res.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
			JSONObject json = JSON.parseObject(EntityUtils.toString(res.getEntity()));
			if (json != null) {
				recordId = json.getLongValue("recordId");
			}
			System.out.println(json);
		}
		put.releaseConnection();
	} catch (Exception e) {
		e.printStackTrace();
	} finally {
		try {
			if (res != null) {
				res.close();
			}
			if (client != null) {
				client.close();
			}
		} catch (Exception ex) {
			ex.printStackTrace();
		}
	}				
Entity data as JSON format:
{
    "maintap": {
        "values": [
            {
                "beId": 11,
                "code": "ITPI220328A",
                "venId": 108,
                "curId": 1,
                "rate": 1,
                "flowTypeId": 1356,
                "staffId": 723
            }
        ]
    },
    "apt": {
        "values": [
            {
                "sourceType": "pro",
                "proId": 26,
                "unitId": 40,
                "qty": 1,
                "up": 10,
                "amt": 10
            }
        ]
    }
}
 4、Response Sample
{
	"recordId": 962,
	"messages": [],
	"status": true
}
{
    "recordId": 0,
    "messages": [
        {
            "msgDetail": "Required field is empty",
            "msgCode": "core_101905"
        }
    ],
    "status": false
}
# Create Purchase Invoice (Auto Completion)
# 一、Description
 1. Usage: Create 【Purchase Invoice】
 2. This API has the following characteristics:
  a. Support using code instead of id field
				 b. If field  currency has no value specified, the Entity Currency will be used automatically
				 c. If field staff has no value specified, the default staff in the User Options will be used automatically
				 d. If field document date has no value specified, the value is obtained according to the date option in the [Preference Setup (Trade)]
				 e. If field business process has no value specified, according to the default value set in [Business Process Setup (Trade)]
# 二、API Detail
 1、Request URL
| URL | http://[server]/jsf/rfws/erp/bsFlow/save/pi | 
|---|---|
| HTTP Method | POST | 
| Encode | UTF-8 | 
 2、URL Parameters
| Parameter | Type | Required | Remarks | 
|---|---|---|---|
| authorization | String(Header) | Yes | Access Token obtained via Oauth2 | 
| client_id | String(Header) | Yes | Client ID from [OAuth Applications], generated by the M18 | 
 3、Request Sample
	CloseableHttpClient client = HttpClientBuilder.create().build();
	CloseableHttpResponse res = null;
	try {
		String url = "http://" + HostIP + ":" + HostPort + "/jsf/rfws/erp/bsFlow/save/pi";
		HttpPost post = new HttpPost(url);
		post.addHeader("authorization", access_token);
		post.addHeader("client_id", ClientID);
		StringEntity entity = new StringEntity(data.toJSONString(), ContentType.APPLICATION_JSON);
		entity.setContentEncoding("UTF-8");
		post.setEntity(entity);
		res = client.execute(post);
		if (res.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
			JSONObject json = JSON.parseObject(EntityUtils.toString(res.getEntity()));
			if (json != null) {
				recordId = json.getLongValue("tranId");
			}
			System.out.println(json);
		}
		post.releaseConnection();
	} catch (Exception e) {
		e.printStackTrace();
	} finally {
		try {
			if (res != null) {
				res.close();
			}
			if (client != null) {
				client.close();
			}
		} catch (Exception ex) {
			ex.printStackTrace();
		}
	}
Sample data
{
    "beCode": "IT",
    "venCode": "VIT001",
    "apt": [
        {
            "proCode": "ITPRO002",
            "unitCode": "PCS",
            "qty": 1
        }
    ]
}
 4、Response Sample
{
  "tranId": 963,
  "tranCode": "PI0220206",
  "message": "",
  "status": true
}
# Delete Purchase Invoice
# 一、Description
 Usage: Delete Purchase Invoice
# 二、API Detail
 1、Request URL
| URL | http://[server]/jsf/rfws/root/api/delete/pi | 
|---|---|
| HTTP Method | DELETE | 
| Encode | UTF-8 | 
 2、URL Parameters
| Parameter | Type | Required | Remarks | 
|---|---|---|---|
| authorization | String(Header) | Yes | Access Token obtained via Oauth2 | 
| client_id | String(Header) | Yes | Client ID from [OAuth Applications], generated by the M18 | 
| menuCode | String(Query) | Yes | pi | 
| id | long(Query) | Yes | Purchase Invoice ID | 
| param | String(Query) | No | Extra Pamameters: in JSON format | 
 3、Request Sample
	CloseableHttpClient client = HttpClientBuilder.create().build();
	CloseableHttpResponse res = null;
	try {
		String url = "http://" + HostIP + ":" + HostPort + "/jsf/rfws/root/api/delete/pi";
		String param = "&menuCode=pi&id=" + id;
		HttpDelete delete = new HttpDelete(url + "?" + param);
		delete.addHeader("authorization", access_token);
		delete.addHeader("client_id", ClientID);
		res = client.execute(delete);
		if (res.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
			JSONObject json = JSON.parseObject(EntityUtils.toString(res.getEntity()));
			System.out.println(json);
		}
		delete.releaseConnection();
	} catch (Exception e) {
		e.printStackTrace();
	} finally {
		try {
			if (res != null) {
				res.close();
			}
			if (client != null) {
				client.close();
			}
		} catch (Exception ex) {
			ex.printStackTrace();
		}
	}
 4、Response Sample
{
	"messages": [],
	"status": true
}
{
    "messages": [
        {
            "msgDetail": "Record has been deleted",
            "msgCode": "core_101017"
        }
    ],
    "status": false
}
# Load EBI data:Purchase Invoice List
# 一、Description
 Usage: Run EBI[Purchase Invoice List],return EBI data
# 二、API Detail
 1、Request URL
| URL | http://[server]/jsf/rfws/ebiWidget/loadReport | 
|---|---|
| HTTP Method | GET | 
| Encode | UTF-8 | 
 2、URL Parameters
| Parameter | Type | Required | Remarks | 
|---|---|---|---|
| authorization | String(Header) | Yes | Access Token obtained via Oauth2 | 
| client_id | String(Header) | Yes | Client ID from [OAuth Applications], generated by the M18 | 
| formatId | long(Query) | Yes | Format ID fetched from another API | 
| beId | long(Query) | No | Business Entity ID,If not specified, query all authorized Business Entity data. | 
| offset | int(Query) | No | Resultset offset : start index | 
| rows | int(Query) | No | Resultset offset : end index | 
 3、Request Sample
	CloseableHttpClient client = HttpClientBuilder.create().build();
	CloseableHttpResponse res = null;
	try {
		String url = "http://" + HostIP + ":" + HostPort + "/jsf/rfws/ebiWidget/loadReport";
		String param = "&formatId=" + formatId;
		HttpGet get = new HttpGet(url + "?" + param);
		get.addHeader("authorization", access_token);
		get.addHeader("client_id", ClientID);
		res = client.execute(get);
		if (res.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
			JSONObject json = JSON.parseObject(EntityUtils.toString(res.getEntity()));
			System.out.println(json);
		}
		get.releaseConnection();
	} catch (Exception e) {
		e.printStackTrace();
	} finally {
		try {
			if (res != null) {
				res.close();
			}
			if (client != null) {
				client.close();
			}
		} catch (Exception ex) {
			ex.printStackTrace();
		}
	}				
 4、Response Sample
{
    "size": 6,
    "rows": [
        {
            "M_A_code": "ITPI17060001",
            "M_A_ttlAmt": "500.00",
            "M_A_amt": "490.00",
            "M_A_id": "60",
            "M_A_rate": "1.00000000",
            "M18ReservedCol_dataIndex": 1,
            "VEN_A_code": "V0001",
            "M_A_curId_code": "R",
            "M_A_depoAmt": "0.00",
            "M_A_tDate": "2017.06.23",
            "M_A_curId": "1",
            "VEN_A_id": "1"
        }
    ]
}

# Load EBI data:Purchase Invoice Report
# 一、Description
 Usage: Run EBI[Purchase Invoice Report],return EBI data
# 二、API Detail
 1、Request URL
| URL | http://[server]/jsf/rfws/ebiWidget/loadReport | 
|---|---|
| HTTP Method | GET | 
| Encode | UTF-8 | 
 2、URL Parameters
| Parameter | Type | Required | Remarks | 
|---|---|---|---|
| authorization | String(Header) | Yes | Access Token obtained via Oauth2 | 
| client_id | String(Header) | Yes | Client ID from [OAuth Applications], generated by the M18 | 
| formatId | long(Query) | Yes | Format ID fetched from another API | 
| beId | long(Query) | No | Business Entity ID,If not specified, query all authorized Business Entity data. | 
| offset | int(Query) | No | Resultset offset : start index | 
| rows | int(Query) | No | Resultset offset : end index | 
 3、Request Sample
	CloseableHttpClient client = HttpClientBuilder.create().build();
	CloseableHttpResponse res = null;
	try {
		String url = "http://" + HostIP + ":" + HostPort + "/jsf/rfws/ebiWidget/loadReport";
		String param = "&formatId=" + formatId;
		HttpGet get = new HttpGet(url + "?" + param);
		get.addHeader("authorization", access_token);
		get.addHeader("client_id", ClientID);
		res = client.execute(get);
		if (res.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
			JSONObject json = JSON.parseObject(EntityUtils.toString(res.getEntity()));
			System.out.println(json);
		}
		get.releaseConnection();
	} catch (Exception e) {
		e.printStackTrace();
	} finally {
		try {
			if (res != null) {
				res.close();
			}
			if (client != null) {
				client.close();
			}
		} catch (Exception ex) {
			ex.printStackTrace();
		}
	}				
 4、Response Sample
{
    "size": 7,
    "rows": [
        {
            "APT_A_unitId_code": "PCS",
            "M_A_code": "ITPI17060001",
            "M_A_id": "60",
            "M18ReservedCol_dataIndex": 1,
            "APT_A_amt": "500.00",
            "APT_A_qty": "5.0000",
            "M_A_tDate": "2017.06.23",
            "APT_A_up": "100.0000",
            "PRO_A_code": "ITPRO002",
            "PRO_A_id": "26"
        }
    ]
}
