หมายเหตุ
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลอง ลงชื่อเข้าใช้หรือเปลี่ยนไดเรกทอรีได้
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลองเปลี่ยนไดเรกทอรีได้
บทความนี้จะอธิบาย API สาธารณะที่ให้ไว้โดยการมองเห็นสินค้าคงคลัง
REST API สาธารณะของ Add-in การมองเห็นสินค้าคงคลัง แสดงถึงปลายทางเฉพาะสำหรับการรวมหลายแห่ง ซึ่งสนับสนุนการโต้ตอบหลักสี่ประเภท:
- การลงรายการบัญชีการเปลี่ยนแปลงปริมาณคงคลังคงเหลือไปที่ add-in จากระบบภายนอก
- การตั้งค่าหรือการแทนที่ปริมาณคงคลังคงเหลือใน add-in จากระบบภายนอก
- การบันทึกการจองไปยังโปรแกรมเสริมจากระบบภายนอก
- การคิวรีปริมาณคงคลังคงเหลือปัจจุบันจากระบบภายนอก
ตารางต่อไปนี้แสดง API ที่พร้อมใช้งานในขณะนี้:
| เส้นทาง | เมธอด | คำอธิบาย |
|---|---|---|
/api/environment/{environmentId}/onhand |
ไปรษณีย์ | สร้างเหตุการณ์การเปลี่ยนแปลงคงเหลือหนึ่งเหตุการณ์ |
/api/environment/{environmentId}/onhand/bulk |
ไปรษณีย์ | สร้างเหตุการณ์การเปลี่ยนแปลงหลายเหตุการณ์ |
/api/environment/{environmentId}/setonhand/{inventorySystem}/bulk |
ไปรษณีย์ | ตั้งค่า/แทนที่ปริมาณคงคลังคงเหลือ |
/api/environment/{environmentId}/onhand/reserve |
ไปรษณีย์ | สร้างเหตุการณ์การจองชั่วคราวหนึ่งเหตุการณ์ |
/api/environment/{environmentId}/onhand/reserve/bulk |
ไปรษณีย์ | สร้างเหตุการณ์การจองชั่วคราวหลายเหตุการณ์ |
/api/environment/{environmentId}/onhand/unreserve |
ไปรษณีย์ | ย้อนกลับเหตุการณ์การจองชั่วคราวหนึ่งเหตุการณ์ |
/api/environment/{environmentId}/onhand/unreserve/bulk |
ไปรษณีย์ | ย้อนกลับเหตุการณ์การจองชั่วคราวหลายเหตุการณ์ |
/api/environment/{environmentId}/onhand/reserve/resyncjob |
ไปรษณีย์ | ล้างข้อมูลการจอง |
/api/environment/{environmentId}/getJobProgress |
ดาวน์โหลด | รับความคืบหน้าการดําเนินการงาน |
/api/environment/{environmentId}/onhand/changeschedule |
ไปรษณีย์ | สร้างการเปลี่ยนแปลงปริมาณคงเหลือตามกำหนดการหนึ่งเหตุการณ์ |
/api/environment/{environmentId}/onhand/changeschedule/bulk |
ไปรษณีย์ | สร้างการเปลี่ยนแปลงปริมาณคงเหลือตามวันที่ |
/api/environment/{environmentId}/onhand/indexquery |
ไปรษณีย์ | สอบถามโดยใช้วิธีการประกาศ (แนะนำ) |
/api/environment/{environmentId}/onhand |
ดาวน์โหลด | การสอบถามโดยใช้วิธีการรับ |
/api/environment/{environmentId}/onhand/exactquery |
ไปรษณีย์ | แยกการสอบถามโดยใช้วิธีการประกาศ |
/api/environment/{environmentId}/allocation/allocate |
ไปรษณีย์ | สร้างเหตุการณ์การปันส่วนหนึ่งเหตุการณ์ |
/api/environment/{environmentId}/allocation/unallocate |
ไปรษณีย์ | สร้างเหตุการณ์การไม่ได้ปันส่วนหนึ่งเหตุการณ์ |
/api/environment/{environmentId}/allocation/reallocate |
ไปรษณีย์ | สร้างเหตุการณ์การปันส่วนปริมาณใหม่หนึ่งเหตุการณ์ |
/api/environment/{environmentId}/allocation/consume |
ไปรษณีย์ | สร้างเหตุการณ์การใช้หนึ่งเหตุการณ์ |
/api/environment/{environmentId}/allocation/query |
ไปรษณีย์ | ผลลัพธ์การปันส่วนการสอบถาม |
/api/environment/{environmentId}/onhand/productsearch/indexquery |
ไปรษณีย์ | โพสต์การสอบถามดัชนีด้วยการค้นหาผลิตภัณฑ์ |
/api/environment/{environmentId}/onhand/productsearch/exactquery |
ไปรษณีย์ | โพสต์การสอบถามที่แน่นอนด้วยการค้นหาผลิตภัณฑ์ |
/api/environment/{environmentId}/transaction/adjustment/bulk |
ไปรษณีย์ | ซิงค์การเปลี่ยนแปลงสินค้าคงคลังภายนอกผ่านการมองเห็นสินค้าคงคลัง |
Note
ส่วน {environmentId} ของเส้นทางคือ ID สภาพแวดล้อมของการจัดการห่วงโซ่อุปทานของ Microsoft Dynamics 365 ID นี้เป็นรหัสเดียวที่ระบุสําหรับการจัดการห่วงโซ่อุปทานใน Microsoft Dynamics Lifecycle Services ไม่ใช่ ID ของสภาพแวดล้อม Power Platform ที่เชื่อมโยงกับสภาพแวดล้อม Supply Chain Management
API จำนวนมากสามารถส่งคืนเรกคอร์ดได้สูงสุด 512 เรกคอร์ดต่อการร้องขอแต่ละครั้ง
การรับรองความถูกต้อง
โทเค็นความปลอดภัยของแพลตฟอร์มจะถูกใช้ในการเรียก API สาธารณะของการมองเห็นสินค้าคงคลัง ดังนั้นคุณต้องสร้าง โทเค็น Microsoft Entra โดยใช้แอปพลิเคชัน Microsoft Entra ของคุณ จากนั้นคุณต้องใช้โทเค็น Microsoft Entra เพื่อรับ โทเค็นการเข้าถึง จากบริการรักษาความปลอดภัย
เมื่อต้องการรับโทเค็นบริการความปลอดภัย ให้ทําตามขั้นตอนเหล่านี้:
ลงชื่อเข้าใช้พอร์ทัล Azure และใช้เพื่อค้นหา
clientIdค่า และclientSecretสําหรับแอป Dynamics 365 Supply Chain Management ของคุณดึงข้อมูลโทเค็น Microsoft Entra (
aadToken) โดยการส่งคําขอ HTTP ที่มีคุณสมบัติต่อไปนี้:เว็บไซต์:
https://login.microsoftonline.com/${aadTenantId}/oauth2/v2.0/tokenวิธีการ:
GETเนื้อหาของเนื้อหา (ข้อมูลฟอร์ม):
คีย์ มูลค่า client_id ${aadAppId} client_secret ${aadAppSecret} ชนิด_การให้สิทธิ์ ข้อมูลประจำตัว_ไคลเอ็นต์ ขอบเขต 0cdb527f-a8d1-4bf8-9436-b352c68682b2/.default
คุณควรได้รับโทเค็น Microsoft Entra (
aadToken) ในคำตอบ ผลลัพธ์ควรมีลักษณะคล้ายกับตัวอย่างต่อไปนี้{ "token_type": "Bearer", "expires_in": "3599", "ext_expires_in": "3599", "access_token": "eyJ0eX...8WQ" }กําหนดคําขอ JavaScript Object Notation (JSON) ที่คล้ายกับตัวอย่างต่อไปนี้
{ "grant_type": "client_credentials", "client_assertion_type": "aad_app", "client_assertion": "${Your_Microsoft_EntraToken}", "scope": "https://inventoryservice.operations365.dynamics.com/.default", "context": "${fno_environment_id}", "context_type": "finops-env" }บันทึกคะแนนต่อไปนี้:
- ค่า
client_assertionต้องเป็นโทเค็น Microsoft Entra (aadToken) ที่คุณได้รับในขั้นตอนก่อนหน้า - ค่า
contextต้องเป็นรหัสสภาพแวดล้อมการจัดการห่วงโซ่อุปทานที่คุณต้องการปรับใช้ add-in - ตั้งค่าอื่นๆ ทั้งหมดตามที่แสดงในตัวอย่าง
- ค่า
ดึงข้อมูลโทเค็นการเข้าถึง (
access_token) โดยการส่งคําขอ HTTP ที่มีคุณสมบัติต่อไปนี้:เว็บไซต์:
https://securityservice.operations365.dynamics.com/tokenวิธีการ:
POSTส่วนหัว HTTP:
คีย์ มูลค่า Api-Version 1.0 ชนิดเนื้อหา application/json เนื้อหาเนื้อหา: รวมคําขอ JSON ที่คุณสร้างขึ้นในขั้นตอนก่อนหน้า
คุณควรได้รับโทเค็นการเข้าถึง (
access_token) ในการตอบสนอง คุณต้องใช้โทเค็นนี้ในฐานะโทเค็นผู้ถือสิทธิ์เพื่อเรียก API ของการมองเห็นสินค้าคงคลัง ต่อไปนี้คือตัวอย่าง{ "access_token": "${Returned_Token}", "token_type": "bearer", "expires_in": 3600 }Note
หากคุณได้รับการตอบกลับด้วยรหัสสถานะ 307 ให้ใช้ค่าของ
Locationส่วนหัวเพื่อส่งคําขอโทเค็นไปยัง URL ใหม่ ไลบรารี HTTP ส่วนใหญ่จะจัดการการเปลี่ยนเส้นทางโดยอัตโนมัติ
สร้างเหตุการณ์การเปลี่ยนแปลงปริมาณคงคลังคงเหลือ
มี API อยู่สองรายการสำหรับการสร้างเหตุการณ์การเปลี่ยนแปลงปริมาณคงคลังคงเหลือ:
- สร้างหนึ่งระเบียน:
/api/environment/{environmentId}/onhand - สร้างหลายเรกคอร์ด:
/api/environment/{environmentId}/onhand/bulk
ตารางต่อไปนี้สรุปความหมายของแต่ละเขตข้อมูลในเนื้อความ JSON
| รหัสฟิลด์ | คำอธิบาย |
|---|---|
id |
ID เฉพาะสําหรับเหตุการณ์การเปลี่ยนแปลงเฉพาะ ถ้าการส่งอีกครั้งเกิดขึ้นเนื่องจากความล้มเหลวของบริการ ID นี้จะถูกใช้เพื่อให้แน่ใจว่าเหตุการณ์เดียวกันจะไม่ถูกนับสองครั้งในระบบ |
organizationId |
ตัวระบุขององค์กรที่ลิงก์ไปยังเหตุการณ์ ค่านี้จะถูกแมปไปยังองค์กรหรือรหัสพื้นที่ข้อมูลใน Supply Chain Management |
productId |
รหัสของผลิตภัณฑ์ |
quantities |
ปริมาณที่ต้องมีการเปลี่ยนแปลงปริมาณคงคลังคงเหลือ ตัวอย่างเช่น ถ้ามีการเพิ่มหนังสือใหม่ 10 เล่มไปยังชั้นวาง ค่านี้จะเป็นquantities:{ shelf:{ received: 10 }} ถ้าหนังสือสามเล่มถูกลบออกจากชั้นวางหรือขาย ค่านี้จะเป็นquantities:{ shelf:{ sold: 3 }} |
dimensionDataSource |
แหล่งข้อมูลของมิติที่ใช้ในเหตุการณ์การเปลี่ยนแปลงโพสต์และการค้นหา หากคุณระบุแหล่งข้อมูล คุณสามารถใช้มิติแบบกําหนดเองจากแหล่งข้อมูลที่ระบุได้ การมองเห็นสินค้าคงคลังสามารถใช้การกําหนดค่ามิติเพื่อแมปมิติแบบกําหนดเองไปยังมิติเริ่มต้นทั่วไปได้ ถ้าไม่ได้ dimensionDataSource ระบุค่า ไว้ คุณสามารถใช้ได้เฉพาะ มิติฐาน ทั่วไปในคิวรีของคุณเท่านั้น |
dimensions |
คู่คีย์และค่าที่เป็นแบบไดนามิก ค่าต่าง ๆ ถูกแมปเข้ากับมิติบางอย่างในการจัดการห่วงโซ่อุปทาน อย่างไรก็ตาม คุณยังสามารถเพิ่มมิติที่กำหนดเอง (ตัวอย่างเช่น ต้นทาง) เพื่อบ่งชี้ว่าเหตุการณ์มาจากการ Supply Chain Management หรือระบบภายนอก |
Note
ถ้ากฎพาร์ติชันข้อมูลของคุณถูกตั้งค่าเป็นตามรหัสสินค้าsiteIdและlocationIdจะเป็นมิติทางเลือก มิฉะนั้น มิติเหล่านั้นจะเป็นมิติที่จำเป็น กฎนี้ยังใช้กับการปันส่วน สํารองแบบไม่จํากัด และเปลี่ยน API ตามกําหนดการด้วย
ส่วนย่อยต่อไปนี้แสดงตัวอย่างที่แสดงวิธีการใช้ API เหล่านี้
สร้างเหตุการณ์การเปลี่ยนแปลงคงเหลือหนึ่งเหตุการณ์
API นี้จะสร้างเหตุการณ์การเปลี่ยนแปลงปริมาณคงคลังคงเหลือเหตุการณ์เดียว
Path:
/api/environment/{environmentId}/onhand
Method:
Post
Headers:
Api-Version="1.0"
Authorization="Bearer $access_token"
ContentType:
application/json
Body:
{
id: string,
organizationId: string,
productId: string,
dimensionDataSource: string, # Optional
dimensions: {
[key:string]: string,
},
quantities: {
[dataSourceName:string]: {
[key:string]: number,
},
},
}
ตัวอย่างต่อไปนี้จะแสดงเนื้อหาตัวอย่าง ในตัวอย่างนี้ บริษัทมีระบบขายหน้าร้าน (POS) ที่ประมวลผลธุรกรรมในร้านค้า และดังนั้นจึงมีการเปลี่ยนแปลงสินค้าคงคลัง ลูกค้าได้ส่งกลับเสื้อยืดสีแดงไปยังร้านค้าของคุณ หากต้องการสะท้อนการเปลี่ยนแปลง คุณต้องโพสต์เหตุการณ์การเปลี่ยนแปลงเดียวสําหรับผลิตภัณฑ์เสื้อยืด เหตุการณ์นี้จะเพิ่มจำนวนของผลิตภัณฑ์ เสื้อยืด ขึ้น 1
{
"id": "Test201",
"organizationId": "usmf",
"productId": "T-shirt",
"dimensionDataSource": "pos",
"dimensions": {
"siteId": "1",
"locationId": "11",
"posMachineId": "0001",
"colorId": "red"
},
"quantities": {
"pos": {
"inbound": 1
}
}
}
ตัวอย่างต่อไปนี้แสดงเนื้อหาเนื้อความตัวอย่างโดยไม่มีdimensionDataSource ในกรณีนี้ dimensions จะเป็นมิติพื้นฐาน ถ้า dimensionDataSource ถูกตั้งค่า dimensions สามารถเป็นมิติแหล่งข้อมูลหรือมิติฐานได้
{
"id": "Test202",
"organizationId": "usmf",
"productId": "T-shirt",
"dimensions": {
"siteId": "1",
"locationId": "11",
"colorId": "red"
},
"quantities": {
"pos": {
"inbound": 1
}
}
}
สร้างเหตุการณ์การเปลี่ยนแปลงหลายรายการ
API นี้สามารถสร้างเหตุการณ์เปลี่ยนแปลง เช่นเดียวกับ API เหตุการณ์เดียว สามารถ ข้อแตกต่างเพียงอย่างเดียวคือ API นี้สามารถสร้างหลายระเบียนในเวลาเดียวกันได้ ดังนั้น Path ค่า และ Body จึงแตกต่างกัน สำหรับ API Body นี้ ให้แถวข้อมูล จํานวนสูงสุดของระเบียนคือ 512 ดังนั้น API จํานวนมากที่เปลี่ยนด้วยตนเองสามารถสนับสนุนได้สูงสุด 512 เหตุการณ์การเปลี่ยนแปลงในแต่ละครั้ง
ตัวอย่างเช่น เครื่อง POS ของร้านค้าปลีกจะประมวลผลธุรกรรมสองรายการต่อไปนี้
- การส่งคืนเสื้อยืดสีแดงหนึ่งตัว
- ธุรกรรมการขายหนึ่งรายการของเสื้อยืดสีดำสามตัว
ในกรณีนี้ คุณสามารถรวมการอัปเดตสินค้าคงคลังทั้งสองรายการในการเรียกใช้ API เดียว
Path:
/api/environment/{environmentId}/onhand/bulk
Method:
Post
Headers:
Api-Version="1.0"
Authorization="Bearer $access_token"
ContentType:
application/json
Body:
[
{
id: string,
organizationId: string,
productId: string,
dimensionDataSource: string, # Optional
dimensions: {
[key:string]: string,
},
quantities: {
[dataSourceName:string]: {
[key:string]: number,
},
},
},
...
]
ตัวอย่างต่อไปนี้จะแสดงเนื้อหาตัวอย่าง
[
{
"id": "Test203",
"organizationId": "usmf",
"productId": "T-shirt",
"dimensionDataSource": "pos",
"dimensions": {
"SiteId": "Site1",
"LocationId": "11",
"posMachineId": "0001"
"colorId": "red"
},
"quantities": {
"pos": { "inbound": 1 }
}
},
{
"id": "Test204",
"organizationId": "usmf",
"productId": "T-shirt",
"dimensions": {
"siteId": "1",
"locationId": "11",
"colorId": "black"
},
"quantities": {
"pos": { "outbound": 3 }
}
}
]
กําหนด/แทนที่ปริมาณคงคลังคงเหลือ
API ตั้งค่าปริมาณคงคลังคงเหลือ จะแทนที่ข้อมูลปัจจุบันสําหรับผลิตภัณฑ์ที่ระบุ โดยทั่วไป ฟังก์ชันนี้จะใช้ในการทําการอัพเดตการนับสินค้าคงคลัง ตัวอย่างเช่น ในระหว่างการนับสินค้าคงคลังประจําวัน ร้านค้าอาจพบว่าปริมาณคงคลังคงเหลือจริงสําหรับเสื้อยืดสีแดงคือ 100 ปริมาณขาเข้าของ POS ต้องถูกอัพเดตเป็น 100 โดยไม่คํานึงถึงปริมาณก่อนหน้านี้ คุณสามารถใช้ API นี้เพื่อแทนที่ค่าที่มีอยู่
Path:
/api/environment/{environmentId}/setonhand/{inventorySystem}/bulk
Method:
Post
Headers:
Api-Version="1.0"
Authorization="Bearer $access_token"
ContentType:
application/json
Body:
[
{
id: string,
organizationId: string,
productId: string,
dimensionDataSource: string, # Optional
dimensions: {
[key:string]: string,
},
quantities: {
[dataSourceName:string]: {
[key:string]: number,
},
},
modifiedDateTimeUTC: datetime,
},
...
]
ตัวอย่างต่อไปนี้จะแสดงเนื้อหาตัวอย่าง ลักษณะการทํางานของ API นี้แตกต่างจากลักษณะการทํางานของ API ที่อธิบายไว้ในส่วน สร้างเหตุการณ์การเปลี่ยนแปลงปริมาณคงคลังคงเหลือ ก่อนหน้าในบทความนี้ ในตัวอย่างนี้ ปริมาณของผลิตภัณฑ์ เสื้อยืด จะถูกตั้งค่าเป็น 1
[
{
"id": "Test204",
"organizationId": "usmf",
"productId": "T-shirt",
"dimensionDataSource": "pos",
"dimensions": {
"SiteId": "1",
"LocationId": "11",
"posMachineId": "0001"
"colorId": "red"
},
"quantities": {
"pos": {
"inbound": 100
}
}
}
]
สร้างเหตุการณ์การจอง
หากต้องการใช้ API สํารอง คุณต้องเปิดคุณสมบัติการจองและกําหนดค่าการจองให้เสร็จสมบูรณ์ สำหรับข้อมูลเพิ่มเติม (รวมถึงกระแสข้อมูลและสถานการณ์ตัวอย่าง) โปรดดู การจองในการมองเห็นสินค้าคงคลัง
สร้างเหตุการณ์การจองหนึ่งเหตุการณ์
การจองสินค้าสามารถทำได้โดยเทียบกับการตั้งค่าแหล่งข้อมูลที่แตกต่างกัน ถ้าต้องการตั้งค่าคอนฟิกการจองชนิดนี้ ก่อนอื่นให้ระบุแหล่งข้อมูลใน dimensionDataSource พารามิเตอร์ จากนั้น ในพารามิเตอร์ ให้ dimensions ระบุมิติตามการตั้งค่ามิติในแหล่งข้อมูลเป้าหมาย
เมื่อคุณเรียกใช้ API การจอง คุณสามารถควบคุมการตรวจสอบความถูกต้องของการจองได้โดยการระบุพารามิเตอร์ ifCheckAvailForReserv แบบบูลีนในเนื้อหาคำขอ ค่าของ True หมายความว่าต้องตรวจสอบความถูกต้อง ในขณะที่ค่าของ False หมายความว่าไม่จําเป็นต้องมีการตรวจสอบความถูกต้อง ค่าเริ่มต้นคือ True
ถ้าคุณต้องการกลับรายการการจองสินค้าหรือยังไม่ได้แก้ไขปริมาณสินค้าคงคลังที่ระบุ ให้ตั้งค่าปริมาณเป็นค่าลบ และตั้งค่า ifCheckAvailForReserv พารามิเตอร์เพื่อ False ข้ามการตรวจสอบความถูกต้อง นอกจากนี้ยังมี API เฉพาะเพื่อยกเลิกการจองเพื่อทำหน้าที่เดียวกัน ความแตกต่างมีเพียงวิธีการที่เรียกใช้ API สองตัวเท่านั้น การยกเลิกเหตุการณ์การจองเฉพาะด้วยการใช้ reservationId กับ API ยกเลิกการจอง นั้นทำได้ง่ายขึ้น เรียนรู้เพิ่มเติมในส่วน การยกเลิกการจองหนึ่งเหตุการณ์
Path:
/api/environment/{environmentId}/onhand/reserve
Method:
Post
Headers:
Api-Version="1.0"
Authorization="Bearer $access_token"
ContentType:
application/json
Body:
{
id: string,
organizationId: string,
productId: string,
dimensionDataSource: string,
dimensions: {
[key:string]: string,
},
quantityDataSource: string, # optional
quantities: {
[dataSourceName:string]: {
[key:string]: number,
},
},
modifier: string,
quantity: number,
ifCheckAvailForReserv: boolean,
}
ตัวอย่างต่อไปนี้จะแสดงเนื้อหาตัวอย่าง
{
"id": "reserve-0",
"organizationId": "SCM_IV",
"productId": "iv_contoso_product",
"quantity": 1,
"quantityDataSource": "iv",
"modifier": "softReservOrdered",
"ifCheckAvailForReserv": true,
"dimensions": {
"siteId": "iv_contoso_site",
"locationId": "iv_contoso_location",
"colorId": "red",
"sizeId": "small"
}
}
ตัวอย่างต่อไปนี้แสดงการตอบสนองที่เสร็จเรียบร้อยแล้ว
{
"reservationId": "RESERVATION_ID",
"id": "ohre~id-822-232959-524",
"processingStatus": "success",
"message": "",
"statusCode": 200
}
สร้างเหตุการณ์การจองหลายรายการ
API นี้เป็นเวอร์ชันกลุ่มของ API เหตุการณ์เดียว
Path:
/api/environment/{environmentId}/onhand/reserve/bulk
Method:
Post
Headers:
Api-Version="1.0"
Authorization="Bearer $access_token"
ContentType:
application/json
Body:
[
{
id: string,
organizationId: string,
productId: string,
dimensionDataSource: string,
dimensions: {
[key:string]: string,
},
quantityDataSource: string, # optional
quantities: {
[dataSourceName:string]: {
[key:string]: number,
},
},
modifier: string,
quantity: number,
ifCheckAvailForReserv: boolean,
},
...
]
ย้อนกลับกิจกรรมการจอง
API Unreserve ทําหน้าที่เป็นการดําเนินการย้อนกลับสําหรับเหตุการณ์การจอง ซึ่งจะให้วิธีการกลับรายการเหตุการณ์การจองที่ระบุโดย reservationId หรือลดปริมาณการจอง
ย้อนกลับเหตุการณ์การจองหนึ่งเหตุการณ์
เมื่อมีการสร้างการจอง ข้อมูลใน reservationId จะถูกรวมอยู่ในเนื้อหาการตอบกลับ คุณต้องระบุ reservationId เดียวกันเพื่อยกเลิกการจอง และรวม organizationId, productId เดียวกัน และ dimensions ถูกใช้สำหรับการเรียก API การจอง ในขั้นสุดท้าย ให้ระบุค่า OffsetQty ที่แสดงถึงจํานวนของรายการที่จะว่าง จากการจองก่อนหน้านี้ คุณสามารถกลับรายการการจองทั้งหมดหรือบางส่วนได้ โดยขึ้นอยู่กับ ที่ระบุOffsetQty ตัวอย่างเช่น ถ้ามีการจองสินค้า จํานวน 100 หน่วย คุณสามารถระบุ OffsetQty: 10 เพื่อยกเลิกการแก้ไข จํานวน 10 ของจํานวนที่สงวนไว้เริ่มต้น
Path:
/api/environment/{environmentId}/onhand/unreserve
Method:
Post
Headers:
Api-Version="1.0"
Authorization="Bearer $access_token"
ContentType:
application/json
Body:
{
id: string,
organizationId: string,
productId: string,
reservationId: string,
dimensions: {
[key:string]: string,
},
OffsetQty: number
}
โค้ดต่อไปนี้แสดงตัวอย่างของเนื้อหา
{
"id": "unreserve-0",
"organizationId": "SCM_IV",
"productId": "iv_contoso_product",
"reservationId": "RESERVATION_ID",
"dimensions": {
"siteid":"iv_contoso_site",
"locationid":"iv_contoso_location",
"ColorId": "red",
"SizeId": "small"
},
"OffsetQty": 1
}
รหัสต่อไปนี้แสดงตัวอย่างของเนื้อหาคําตอบที่ประสบความสําเร็จ
{
"reservationId": "RESERVATION_ID",
"totalInvalidOffsetQtyByReservId": 0,
"id": "ohoe~id-823-11744-883",
"processingStatus": "success",
"message": "",
"statusCode": 200
}
Note
ในเนื้อหาคําตอบ เมื่อOffsetQtyน้อยกว่าหรือเท่ากับปริมาณprocessingStatusการจอง จะเป็น "ความสําเร็จ" และtotalInvalidOffsetQtyByReservIdจะเป็น 0
ถ้า OffsetQty มากกว่าจำนวนที่จองไว้ processingStatus จะเป็น "partialSuccess" และ totalInvalidOffsetQtyByReservId จะเป็นผลต่างระหว่าง OffsetQty และจำนวนที่จองไว้
ตัวอย่างเช่น ถ้าการจองสินค้ามีปริมาณเท่ากับ 10 และOffsetQtyมีค่าเท่ากับ 12totalInvalidOffsetQtyByReservId จะเป็น 2
ย้อนกลับเหตุการณ์การจองหลายเหตุการณ์
API นี้เป็นเวอร์ชันกลุ่มของ API เหตุการณ์เดียว
Path:
/api/environment/{environmentId}/onhand/unreserve/bulk
Method:
Post
Headers:
Api-Version="1.0"
Authorization="Bearer $access_token"
ContentType:
application/json
Body:
[
{
id: string,
organizationId: string,
productId: string,
reservationId: string,
dimensions: {
[key:string]: string,
},
OffsetQty: number
}
...
]
ล้างข้อมูลการจอง
API ล้างข้อมูลการจอง ใช้เพื่อล้างข้อมูลการจองในอดีต เนื้อความควรเป็นรายการแหล่งข้อมูล หากรายการว่างเปล่า แหล่งข้อมูลทั้งหมดจะถูกล้างข้อมูล
Path:
/api/environment/{environmentId}/onhand/reserve/resyncjob
Method:
Post
Headers:
Api-Version="1.0"
Authorization="Bearer $access_token"
ContentType:
application/json
Body:
[
"iv",
"pos"
]
ถ้างานการล้างข้อมูลถูกสร้างขึ้นเสร็จเรียบร้อยแล้ว จะมีการส่งกลับรหัสงานในการตอบสนอง ซึ่งสามารถใช้เพื่อรับ ความคืบหน้าของการดําเนินการงานได้
รับความคืบหน้าการดําเนินการงาน
ใช้ API ความคืบหน้าการดําเนินการรับงาน เพื่อรับความคืบหน้าการดําเนินการของงาน จําเป็นต้องมี ID งานเพื่อระบุงาน
Path:
/api/environment/{environmentId}/getJobProgress
Method:
Get
Headers:
Api-Version="1.0"
Authorization="Bearer $access_token"
ContentType:
application/json
Query(Url Parameters):
jobId
นี่คือตัวอย่าง URL สำหรับการร้องขอ GET
/api/environment/{environmentId}/getJobProgress?jobId=SomeJob:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
ปริมาณคงคลังคงเหลือของการสอบถาม
ใช้ API ปริมาณคงคลังคงเหลือของการสอบถาม เพื่อดึงข้อมูลปริมาณคงคลังคงเหลือปัจจุบันสำหรับผลิตภัณฑ์ของคุณ คุณสามารถใช้ API นี้เมื่อใดก็ตามที่คุณต้องรู้จักหุ้น เช่น เมื่อคุณต้องการตรวจสอบระดับสต็อกผลิตภัณฑ์บนเว็บไซต์อีคอมเมิร์ซของคุณ หรือเมื่อคุณต้องการตรวจสอบความพร้อมใช้งานของผลิตภัณฑ์ในภูมิภาคหรือในร้านค้าและคลังสินค้าใกล้เคียง ขณะนี้ API รองรับการคิวรีได้ถึง 5,000 รายการตาม productID ค่า นอกจากนี้ ยังสามารถระบุค่า siteID และ locationID ได้หลายค่าในแต่ละคิวรี เมื่อ กฎพาร์ติชันข้อมูลของคุณ ถูกตั้งค่าเป็น ตามตําแหน่งที่ตั้ง ขีดจํากัดสูงสุดจะถูกกําหนดโดยสมการต่อไปนี้:
NumOf(SiteID) × NumOf(LocationID) <= 10,000
การสอบถามโดยใช้วิธีการโพสต์
API สำหรับการเรียกค้นข้อมูลโดยโพสต์มีให้เลือกสองเวอร์ชัน ตารางต่อไปนี้แสดงความแตกต่าง
| API เวอร์ชัน 1.0 | API เวอร์ชัน 2.0 |
|---|---|
| สามารถคิวรี ID องค์กรได้เพียงหนึ่ง ID เท่านั้น | สามารถสอบถาม ID ขององค์กรได้หลายรายการ |
| สามารถสอบถามชุดข้อมูลไซต์และคลังสินค้าได้สูงสุด 10,000 ชุด | สามารถสอบถามชุด ID องค์กร ไซต์ และคลังสินค้าได้มากกว่า 10,000 ชุด สามารถส่งกลับผลลัพธ์ในหลายหน้าได้ |
ส่วนย่อยต่อไปนี้แสดงวิธีการใช้ API แต่ละเวอร์ชัน
การสอบถามผ่าน API เวอร์ชัน 1.0
Path:
/api/environment/{environmentId}/onhand/indexquery
Method:
Post
Headers:
Api-Version="1.0"
Authorization="Bearer $access_token"
ContentType:
application/json
Body:
{
dimensionDataSource: string, # Optional
filters: {
organizationId: string[],
productId: string[],
siteId: string[],
locationId: string[],
[dimensionKey:string]: string[],
},
groupByValues: string[],
returnNegative: boolean,
}
ในส่วนเนื้อความของคําขอ dimensionDataSource นี้คือพารามิเตอร์ทางเลือก ถ้าไม่ได้ตั้งค่าไว้ filters จะถือว่าเป็น มิติพื้นฐาน
พารามิเตอร์ returnNegative จะควบคุมว่าผลลัพธ์มีรายการค่าลบหรือไม่
ข้อมูลการสอบถามที่จัดเก็บตามที่ตั้ง
ส่วนนี้จะใช้เมื่อ กฎพาร์ติชันข้อมูล ของคุณได้รับการตั้งค่าเป็น ตามที่ตั้ง
-
organizationIdควรจะเป็นอาร์เรย์ที่มีค่าตรงกับหนึ่งค่า -
productIdสามารถมีค่าหนึ่งค่าหรือมากกว่า หากเป็นอาร์เรย์ว่าง ระบบจะส่งคืนผลิตภัณฑ์ทั้งหมดของที่ตั้งและสถานที่ที่ระบุ ในกรณีนี้siteIdและlocationIdไม่ควรว่างเปล่า -
siteIdและlocationIdจะถูกใช้สําหรับการแบ่งพาร์ติชัน คุณสามารถระบุค่าsiteIdในlocationIdมากกว่าหนึ่งค่าในคำขอ แบบสอบถามคงเหลือ ถ้าอาร์เรย์ทั้งสองว่างเปล่า ระบบจะแสดงไซต์และตําแหน่งที่ตั้งทั้งหมดสําหรับผลิตภัณฑ์ที่ระบุ ในกรณีนี้productIdไม่ควรว่างเปล่า
เราขอแนะนําให้ใช้ groupByValues พารามิเตอร์ในลักษณะที่สอดคล้องกับการกําหนดค่าดัชนีของคุณ เรียนรู้เพิ่มเติมในการกําหนดค่าดัชนีปริมาณคงคลังคงเหลือ
ข้อมูลคิวรีที่จัดเก็บโดย ID ผลิตภัณฑ์
ส่วนนี้จะนําไปใช้เมื่อกฎพาร์ติชันข้อมูลของคุณถูกตั้งค่าเป็น โดย ID ผลิตภัณฑ์ ในกรณีนี้ จําเป็นต้องมีเขตข้อมูลสองfiltersเขต: organizationId, productId
-
organizationIdควรจะเป็นอาร์เรย์ที่มีค่าตรงกับหนึ่งค่า -
productIdควรเป็นอาร์เรย์ที่มีอย่างน้อยหนึ่งค่า
แตกต่างจากเมื่อจัดเก็บข้อมูลตามที่ตั้ง ถ้าคุณไม่ระบุค่าสำหรับ siteId และ locationId ข้อมูลสินค้าคงคลังของแต่ละรหัสผลิตภัณฑ์จะถูกรวมไว้ในไซต์และ/หรือที่ตั้งทั้งหมด
Note
ถ้าคุณได้เปิดใช้งานคุณลักษณะกําหนดเวลาการเปลี่ยนแปลงปริมาณคงคลังคงเหลือและคุณลักษณะที่พร้อมใช้งาน (ATP) คิวรีของคุณยังสามารถรวม QueryATP พารามิเตอร์บูลีนซึ่งควบคุมว่าผลลัพธ์คิวรีมีข้อมูล ATP หรือไม่ สําหรับข้อมูลและตัวอย่างเพิ่มเติม โปรดดู ตารางการเปลี่ยนแปลงสินค้าคงคลังและความพร้อมในการส่งมอบ
ตัวอย่างต่อไปนี้จะแสดงเนื้อหาตัวอย่าง ซึ่งแสดงให้เห็นว่าคุณสามารถสอบถามเกี่ยวกับปริมาณคงคลังคงเหลือจากสถานที่เก็บหลายแห่ง (คลังสินค้า) ได้
{
"dimensionDataSource": "pos",
"filters": {
"organizationId": ["usmf"],
"productId": ["T-shirt"],
"siteId": ["1"],
"locationId": ["11","12","13"],
"colorId": ["red"]
},
"groupByValues": ["colorId", "sizeId"],
"returnNegative": true
}
ตัวอย่างต่อไปนี้แสดงวิธีการคิวรีผลิตภัณฑ์ทั้งหมดในไซต์และตําแหน่งที่ตั้งที่ระบุ
{
"filters": {
"organizationId": ["usmf"],
"productId": [],
"siteId": ["1"],
"locationId": ["11"],
},
"groupByValues": ["colorId", "sizeId"],
"returnNegative": true
}
การค้นหาผ่าน API เวอร์ชัน 2.0
Path:
/api/environment/{environmentId}/onhand/indexquery?pageNumber={pageNumber}&pageSize={pageSize}
Method:
Post
Headers:
Api-Version="2.0"
Authorization="Bearer $access_token"
ContentType:
application/json
Body:
# Same as version 1.0
รูปแบบคําขอสําหรับ API เวอร์ชัน 2.0 จะคล้ายกับเวอร์ชัน 1.0 แต่สนับสนุนพารามิเตอร์เสริมสองตัว: pageNumber และ pageSizeซึ่งช่วยให้ระบบแยกผลลัพธ์ขนาดใหญ่เดียวออกเป็นเอกสารขนาดเล็กกว่าหลายเอกสาร ผลลัพธ์จะเรียงลําดับตามคลังสินค้า (locationId) และพารามิเตอร์จะถูกใช้เพื่อแยกผลลัพธ์ออกเป็นหน้า:
-
pageSizeสร้างจํานวนคลัง (locationIdค่า) ที่ส่งกลับในแต่ละหน้า -
pageNumberกำหนดหมายเลขหน้าที่จะส่งกลับ
คําขอของรูปแบบนี้ส่งกลับข้อมูลปริมาณคงคลังคงเหลือที่เริ่มต้นจากหมายเลขคลังสินค้า ({pageNumber} − 1) × {pageSize} และรวมข้อมูลสําหรับคลัง {pageSize} ถัดไป
API เวอร์ชัน 2.0 ตอบสนองกับเอกสารที่ใช้โครงสร้างต่อไปนี้:
{
Value: { # Response same as Api-Version=1.0 }
nextLink: onhand/indexquery?pageNumber={pageNumber+1}&pageSize={pageSize}
}
เมื่อคําขอถึงคลังสินค้าสุดท้าย (locationId) nextLink ค่าจะเป็นสตริงที่ว่างเปล่า
API เวอร์ชัน 2.0 ยังช่วยให้คุณสามารถระบุ ID องค์กรในคําขอของคุณได้มากกว่าหนึ่งรายการ เมื่อต้องการทําเช่นนั้น ให้ใส่รายการ ID องค์กรที่คั่นด้วยจุลภาคใน organizationId ตัวกรองของเอกสารคําขอของคุณ ตัวอย่างเช่น: "organizationId": ["org1", "org2", "org3"]
คิวรีโดยใช้เมธอด get
Path:
/api/environment/{environmentId}/onhand
Method:
Get
Headers:
Api-Version="1.0"
Authorization="Bearer $access_token"
ContentType:
application/json
Query(Url Parameters):
groupBy
returnNegative
[Filters]
นี่คือตัวอย่าง URL สำหรับการร้องขอ GET คำขอ get นี้เหมือนกับตัวอย่างโพสต์ที่ได้ให้ไว้ก่อนหน้านี้
/api/environment/{environmentId}/onhand?organizationId=SCM_IV&productId=iv_contoso_product&siteId=iv_contoso_site&locationId=iv_contoso_location&colorId=red&groupBy=colorId,sizeId&returnNegative=true
ระบบไม่สนับสนุนการคิวรี่สินค้าคงคลังใน ID องค์กรหลายรายการด้วยวิธีการ GET
การสอบถามปริมาณคงคลังคงเหลือที่แน่นอน
การสอบถามคงคลังคงเหลือที่แน่นอนจะคล้ายกับการสอบถามคงเหลือปกติ แต่ช่วยให้คุณสามารถระบุลำดับการแมประหว่างไซต์และที่ตั้งได้ ตัวอย่างเช่น คุณมีสองไซต์ต่อไปนี้:
- ไซต์ 1 ซึ่งถูกกำหนดให้กับตำแหน่งที่ตั้ง A
- ไซต์ 2 ซึ่งเชื่อมโยงกับตำแหน่ง B
สําหรับการสอบถามปริมาณคงคลังคงเหลือทั่วไป ถ้าคุณระบุ "siteId": ["1","2"] และ "locationId": ["A","B"]การมองเห็นสินค้าคงคลังจะคิวรีผลลัพธ์สําหรับไซต์และตําแหน่งที่ตั้งต่อไปนี้โดยอัตโนมัติ:
- ไซต์ 1, ตําแหน่งที่ตั้ง A
- ไซต์ 1, ตําแหน่งที่ตั้ง B
- ไซต์ 2, ตําแหน่งที่ตั้ง A
- ไซต์ 2, ตําแหน่งที่ตั้ง B
ตามที่คุณเห็น คิวรีปริมาณคงคลังคงเหลือทั่วไปไม่จดจําว่าตําแหน่งที่ตั้ง A มีอยู่ในไซต์ 1 เท่านั้น และตําแหน่งที่ตั้ง B มีอยู่ในไซต์ 2 เท่านั้น ดังนั้น จึงทําให้เกิดคิวรีซ้ําซ้อน เพื่อรองรับการแมปแบบลําดับชั้นนี้ คุณสามารถใช้คิวรีแบบเจาะจงและกำหนดการแมปตำแหน่งในเนื้อความของคิวรีได้ ในกรณีนี้ คุณจะสอบถามและรับผลลัพธ์สําหรับไซต์ 1, ตําแหน่งที่ตั้ง A และไซต์ 2, ตําแหน่งที่ตั้ง B เท่านั้น
การสอบถามที่เจาะจงผ่านวิธีประกาศ
การสอบถามที่เจาะจงโดยการประกาศ API มีให้ใช้ในสองเวอร์ชัน ตารางต่อไปนี้แสดงความแตกต่าง
| API เวอร์ชัน 1.0 | API เวอร์ชัน 2.0 |
|---|---|
| สามารถคิวรี ID องค์กรได้เพียงหนึ่ง ID เท่านั้น | สามารถสอบถาม ID ขององค์กรได้หลายรายการ |
การค้นหาข้อมูลที่มีอยู่โดยใช้ POST API เวอร์ชัน 1.0
Path:
/api/environment/{environmentId}/onhand/exactquery
Method:
Post
Headers:
Api-Version="1.0"
Authorization="Bearer $access_token"
ContentType:
application/json
Body:
{
dimensionDataSource: string, # Optional
filters: {
organizationId: string[],
productId: string[],
dimensions: string[],
values: string[][],
},
groupByValues: string[],
returnNegative: boolean,
}
ในส่วนเนื้อความของคําขอ dimensionDataSource นี้คือพารามิเตอร์ทางเลือก ถ้าไม่ได้ตั้งค่าdimensionsใน filters จะถือว่าเป็นมิติฐาน มีสี่ฟิลด์ที่ต้องใช้สำหรับ filters: organizationId, productId, dimensions และ values
-
organizationIdควรมีค่าเพียงค่าเดียว แต่ยังคงเป็นอาร์เรย์ -
productIdอาจประกอบด้วยค่าอย่างน้อยหนึ่งค่าหรือมากกว่า ถ้าเป็นอาร์เรย์ที่ว่างเปล่า ผลิตภัณฑ์ทั้งหมดจะถูกส่งกลับ - ใน
dimensionsอาร์เรย์ และsiteIdlocationIdจําเป็นถ้าและเฉพาะในกรณีที่กฎพาร์ติชันข้อมูลของคุณได้รับการตั้งค่าเป็น ตามตําแหน่งที่ตั้ง ในกรณีนี้ อาร์เรย์ควรปรากฏพร้อมกับองค์ประกอบอื่นในลำดับใดๆ -
valuesอาจมีอย่างน้อยหนึ่งทูเพิลที่แตกต่างกันของค่าที่สอดคล้องกับdimensions
dimensions ใน filters จะถูกเพิ่มไปยัง groupByValuesโดยอัตโนมัติ
พารามิเตอร์ returnNegative จะควบคุมว่าผลลัพธ์มีรายการค่าลบหรือไม่
ตัวอย่างต่อไปนี้จะแสดงเนื้อหาตัวอย่าง
{
"dimensionDataSource": "pos",
"filters": {
"organizationId": ["SCM_IV"],
"productId": ["iv_contoso_product"],
"dimensions": ["siteId", "locationId", "colorId"],
"values" : [
["iv_contoso_site", "iv_contoso_location", "red"],
["iv_contoso_site", "iv_contoso_location", "blue"],
]
},
"groupByValues": ["colorId", "sizeId"],
"returnNegative": true
}
ตัวอย่างต่อไปนี้แสดงวิธีการสอบถามผลิตภัณฑ์ทั้งหมดในไซต์และที่ตั้งหลายแห่ง
{
"filters": {
"organizationId": ["SCM_IV"],
"productId": [],
"dimensions": ["siteId", "locationId"],
"values" : [
["iv_contoso_site_1", "iv_contoso_location_1"],
["iv_contoso_site_2", "iv_contoso_location_2"],
]
},
"groupByValues": ["colorId", "sizeId"],
"returnNegative": true
}
การสอบถามที่เจาะจงโดยการประกาศ API เวอร์ชัน 2.0
Path:
/api/environment/{environmentId}/onhand/exactquery
Method:
Post
Headers:
Api-Version="2.0"
Authorization="Bearer $access_token"
ContentType:
application/json
Body:
{
dimensionDataSource: string, # Optional
filters: {
productId: string[],
keys: string[],
values: string[][],
},
groupByValues: string[],
returnNegative: boolean,
}
API เวอร์ชัน 2.0 แตกต่างจากเวอร์ชัน 1.0 ในลักษณะต่อไปนี้:
- ใน
filtersตอนนี้ส่วนจะมีkeysเขตข้อมูลแทนที่จะเป็นdimensionsเขตข้อมูล เขตข้อมูลkeysจะทํางานเหมือนกับdimensionsเขตข้อมูลในเวอร์ชัน 1.0 แต่ในตอนนี้สามารถรวมorganizationIdด้วย คุณสามารถระบุคีย์ในลําดับใดก็ได้ - ส่วน
filtersนี้ไม่สนับสนุนorganizationIdเขตข้อมูลอีกต่อไป แต่คุณสามารถรวมorganizationIdระหว่างมิติในฟิลด์keys(ตัวอย่างเช่นkeys: ["organizationId", "siteId", "locationId"]) และกําหนดค่ารหัสองค์กรที่ตําแหน่งที่ตรงกันในฟิลด์values(ตัวอย่างเช่นvalues: ["SCM_IV", "iv_contoso_site_1", "iv_contoso_location_1"])
เขตข้อมูลอื่น ๆ จะเหมือนกับ API เวอร์ชัน 1.0
การสอบถามด้วยการค้นหาผลิตภัณฑ์
API การสอบถามปริมาณคงคลังคงเหลือต่อไปนี้ได้รับการปรับปรุงเพื่อรองรับการค้นหาผลิตภัณฑ์:
Note
เมื่อคุณโพสต์การสอบถามการมองเห็นสินค้าคงคลังที่ใช้การค้นหาผลิตภัณฑ์ ให้ใช้พารามิเตอร์คำขอ productSearch (ด้วยออบเจ็กต์ ProductAttributeQuery ภายใน) เพื่อค้นหาหรือกรองตามรหัสผลิตภัณฑ์ API ที่ใหม่กว่าไม่รองรับพารามิเตอร์คำขอ productid รุ่นเก่าในเนื้อหาคำขออีกต่อไป
Prerequisites
ก่อนที่คุณจะเริ่มใช้ API การค้นหาผลิตภัณฑ์ได้ ระบบของคุณต้องเป็นไปตามข้อกำหนดต่อไปนี้:
- คุณต้องใช้งาน Dynamics 365 Supply Chain Management 10.0.36 หรือใหม่กว่า
- การมองเห็นสินค้าคงคลังเวอร์ชัน 1.2.2.54 หรือใหม่กว่าต้องติดตั้งและตั้งค่าตามที่อธิบายไว้ใน ติดตั้งและตั้งค่าการมองเห็นสินค้าคงคลัง
- บริการการค้นหาการมองเห็นสินค้าคงคลังต้องติดตั้งและตั้งค่าตามที่อธิบายไว้ใน ตั้งค่าการค้นหาผลิตภัณฑ์สำหรับการมองเห็นสินค้าคงคลัง
สัญญาการค้นหาผลิตภัณฑ์
สัญญาการค้นหาผลิตภัณฑ์กำหนดกฎสำหรับการสื่อสารกับ API การค้นหาผลิตภัณฑ์ โดยให้วิธีมาตรฐานในการอธิบายความสามารถและลักษณะการทำงานของความสามารถในการค้นหาผลิตภัณฑ์ ดังนั้น ผู้ใช้สามารถเข้าใจ โต้ตอบ และสร้างแอปพลิเคชันที่ใช้ API การมองเห็นสินค้าคงคลังได้ง่ายขึ้น
ตัวอย่างต่อไปนี้จะแสดงสัญญาตัวอย่าง
{
"productFilter": {
"logicalOperator": "And",
"conditions": [
{
"conditionOperator": "Contains",
"productName": [
"Deluxe"
],
},
],
"subFilters": [
{
"conditions": [
{
"conditionOperator": "IsExactly",
"productType": [
"Item"
]
}
]
}
]
},
"attributeFilter": {
"logicalOperator": "Or",
"conditions": [
{
"attributeName": "Weight Limit",
"attributeTypeName":"PoundDomain",
"attributeArea": " ProductAttribute",
"attributeValues": [
"370"
],
"conditionOperator": "GreaterEqual"
}
],
"subFilters": [
{
"conditions": [
{
"attributeName": "Weight Limit",
"attributeTypeName":"PoundDomain",
"attributeArea": " ProductAttribute",
"attributeValues": [
"330"
],
"conditionOperator": "LessEqual"
}
]
}
]
},
}
ตารางต่อไปนี้อธิบายถึงฟิลด์ที่ใช้ในสัญญา
| รหัสฟิลด์ | คำอธิบาย |
|---|---|
logicalOperator |
ค่าที่เป็นไปได้ คือ And และ Or ใช้ฟิลด์นี้เพื่อเชื่อมต่อเงื่อนไขหรือเงื่อนไขหลายรายการและตัวกรองย่อย โปรดทราบว่า subFilters จริงๆ แล้วคือออบเจ็กต์ productFilter หรือ attributeFilter ดังนั้น คุณสามารถมี subFilters ข้างใน subFilters ได้ |
conditionOperator |
ค่าที่เป็นไปได้ คือ IsExactly, IsNot, Contains, DoesNotContain, BeginsWith, IsOneOf, GreaterEqual, LessEqual และ Between |
ProductFilter |
ใช้ฟิลด์นี้เพื่อกรองผลิตภัณฑ์ตามข้อมูลที่เกี่ยวข้องกับผลิตภัณฑ์ ตัวอย่างเช่น คุณสามารถเปลี่ยนแปลง productName ในสัญญาเป็น Company, itemNumber, productSearchName, productType, productName, productDescription, inventoryUnitSymbol, salesUnitSymbol, หรือ purchaseUnitSymbol ได้เพื่อให้เหมาะกับความต้องการทางธุรกิจของคุณ |
AttributeFilter |
ใช้ฟิลด์นี้เพื่อกรองผลิตภัณฑ์ตามข้อมูลที่เกี่ยวข้องกับแอททริบิวต์ |
attributeArea |
ค่าที่เป็นไปได้ คือ ProductAttribute, DimensionAttribute และ BatchAttribute |
การสอบถามด้วยการค้นหาผลิตภัณฑ์
Path:
/api/environment/{environmentId}/onhand/productsearch/indexquery
Method:
Post
Headers:
Api-Version="1.0"
Authorization="Bearer $access_token"
ContentType:
application/json
Body:
{
productSearch: {ProductAttributeQuery contract object inherited from Product Search}
dimensionDataSource: string, # Optional
filters: {
organizationId: string[],
siteId: string[],
locationId: string[],
[dimensionKey:string]: string[],
},
groupByValues: string[],
returnNegative: boolean,
}
ตัวอย่างต่อไปนี้จะแสดงเนื้อหาตัวอย่าง
{
"productSearch": {
"productFilter": {
"conditions": [
{
"conditionOperator": "contains",
"productName": [
"speaker cable"
],
},
],
},
},
"returnNegative": true,
"filters":
{
"organizationId": ["usmf"],
"siteId": ["1"],
"locationId": ["13"],
},
"groupByValues": ["colorid"],
}
ตัวอย่างต่อไปนี้แสดงการตอบสนองที่เสร็จเรียบร้อยแล้ว
[
{
"productId": "M0030",
"dimensions": {
"ColorId": "White",
"siteid": "1",
"locationid": "13"
},
"quantities": {
"fno": {
"arrived": 0,
"availordered": 20,
"onorder": 5,
"ordered": 20,
"physicalinvent": 0,
"reservordered": 0,
"reservphysical": 0,
"orderedsum": 20,
"softreserved": 0
},
"iv": {
"ordered": 0,
"softreserved": 0,
"softreservphysical": 0,
"softreservordered": 0,
"total ordered": 20,
"total on order": 5,
"availabletoreserve": 20,
"totalavailable": 20,
"totalordered": 20,
"totalonorder": 5
},
"pos": {
"inbound": 0,
"outbound": 0
},
"@iv": {
"@allocated": 0
}
}
},
{
"productId": "M0030",
"dimensions": {
"ColorId": "Black",
"siteid": "1",
"locationid": "13"
},
"quantities": {
"fno": {
"arrived": 0,
"availordered": 3,
"ordered": 3,
"physicalinvent": 0,
"reservordered": 0,
"reservphysical": 0,
"orderedsum": 3,
"softreserved": 0
},
"iv": {
"ordered": 0,
"softreserved": 0,
"softreservphysical": 0,
"softreservordered": 0,
"total ordered": 3,
"availabletoreserve": 3,
"totalavailable": 3,
"totalordered": 3
},
"pos": {
"inbound": 0,
"outbound": 0
},
"@iv": {
"@allocated": 0
}
}
}
]
การสอบถามที่แน่นอนด้วยการค้นหาผลิตภัณฑ์
Path:
/api/environment/{environmentId}/onhand/productsearch/exactquery
Method:
Post
Headers:
Api-Version="1.0"
Authorization="Bearer $access_token"
ContentType:
application/json
Body:
{
productSearch: {ProductAttributeQuery contract object inherited from Product Search}
dimensionDataSource: string, # Optional
filters: {
organizationId: string[],
dimensions: string[],
values: string[][],
},
groupByValues: string[],
returnNegative: boolean,
}
ตัวอย่างต่อไปนี้จะแสดงเนื้อหาตัวอย่าง
{
"productSearch": {
"productFilter": {
"conditions": [
{
"conditionOperator": "contains",
"productName": [
"speaker cable"
],
},
],
},
},
"filters": {
"organizationId": ["usmf"],
"dimensions": ["siteId", "locationId", "colorid"],
"values" : [
["1", "13", "Black"],
]
},
"groupByValues": [],
"returnNegative": true
}
ตัวอย่างต่อไปนี้แสดงการตอบสนองที่เสร็จเรียบร้อยแล้ว
[
{
"productId": "M0030",
"dimensions": {
"ColorId": "Black",
"siteid": "1",
"locationid": "13"
},
"quantities": {
"fno": {
"arrived": 0,
"availordered": 3,
"ordered": 3,
"physicalinvent": 0,
"reservordered": 0,
"reservphysical": 0,
"orderedsum": 3,
"softreserved": 0
},
"iv": {
"ordered": 0,
"softreserved": 0,
"softreservphysical": 0,
"softreservordered": 0,
"total ordered": 3,
"availabletoreserve": 3,
"totalavailable": 3,
"totalordered": 3
},
"pos": {
"inbound": 0,
"outbound": 0
},
"@iv": {
"@allocated": 0
}
}
}
]
ปริมาณที่ให้สัญญาได้
คุณสามารถตั้งค่าการมองเห็นสินค้าคงคลังเพื่อให้คุณสามารถจัดกำหนดการเปลี่ยนแปลงปริมาณคงเหลือในอนาคตและคํานวณปริมาณ ATP ได้ ATP คือปริมาณของสินค้าที่พร้อมใช้งานและสามารถสัญญากับลูกค้าในรอบเวลาถัดไป การใช้การคํานวณ ATP สามารถเพิ่มความสามารถในการปฏิบัติตามคําสั่งของคุณได้อย่างมาก สำหรับข้อมูลเกี่ยวกับวิธีการเปิดใช้งานคุณลักษณะนี้และวิธีการโต้ตอบกับการมองเห็นสินค้าคงคลังผ่าน API หลังจากเปิดใช้งานคุณลักษณะแล้ว ดูข้อมูลเพิ่มเติมที่ ตารางเวลาการเปลี่ยนแปลงสินค้าคงคลังที่มีอยู่ของการมองเห็นสินค้าคงคลังและสถานะพร้อมที่จะให้สัญญา
การปันส่วน
API ที่เกี่ยวข้องกับการปันส่วนจะอยู่ในการปันส่วนการมองเห็นสินค้าคงคลัง