Share via


API สาธารณะสำหรับการมองเห็นสินค้าคงคลัง

หมายเหตุ

Azure Active Directory ตอนนี้เป็น Microsoft Entra ID เรียนรู้เพิ่มเติม

บทความนี้จะอธิบาย API สาธารณะที่ให้ไว้โดยการมองเห็นสินค้าคงคลัง

REST API สาธารณะของ Add-in การแสดงผลสินค้าคงคลัง แสดงถึงปลายทางเฉพาะสำหรับการรวมหลายแห่ง ซึ่งสนับสนุนชนิดการโต้ตอบหลักสี่ชนิด:

  • การโพสต์การเปลี่ยนแปลงปริมาณคงคลังคงเหลือไปที่ 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}/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 โพสต์ โพสต์การสอบถามที่แน่นอนด้วยการค้นหาผลิตภัณฑ์

หมายเหตุ

ส่วนของ {environmentId} พาธคือรหัสสภาพแวดล้อมใน Microsoft Dynamics Lifecycle Services

API จำนวนมากสามารถส่งคืนเรกคอร์ดได้สูงสุด 512 เรกคอร์ดต่อการร้องขอแต่ละครั้ง

การรับรองความถูกต้อง

โทเค็นความปลอดภัยของแพลตฟอร์มจะถูกใช้ในการเรียก API สาธารณะของการมองเห็นสินค้าคงคลัง ดังนั้น คุณจึงต้องสร้าง โทเค็น Microsoft Entra โดยใช้แอปพลิเคชัน Microsoft Entra ของคุณ จากนั้นคุณต้องใช้โทเคน Microsoft Entra เพื่อรับ การเข้าถึงโทเคน จากบริการความปลอดภัย

เมื่อต้องการเรียกใช้โทเคนบริการรักษาความปลอดภัย ให้ทำตามขั้นตอนเหล่านี้

  1. ลงชื่อเข้าใช้พอร์ทัล Azure และใช้เพื่อค้นหาค่า clientId และ clientSecret สำหรับแอป Dynamics 365 Supply Chain Management ของคุณ

  2. ดึงข้อมูลโทเค็น Microsoft Entra (aadToken) โดยการส่งคำขอ HTTP ที่มีคุณสมบัติต่อไปนี้:

    • URL:https://login.microsoftonline.com/${aadTenantId}/oauth2/v2.0/token

    • วิธีการ:GET

    • ตัวเนื้อหา (ข้อมูลฟอร์ม):

      คีย์ มูลค่า
      รหัส_ไคลเอนต์ ${aadAppId}
      ข้อมูลลับ_ไคลเอ็นต์ ${aadAppSecret}
      ชนิด_การให้สิทธิ์ ข้อมูลประจำตัว_ไคลเอ็นต์
      ขอบเขต 0cdb527f-a8d1-4bf8-9436-b352c68682b2/.default

    คุณควรได้รับโทเค็น Microsoft Entra (aadToken) ในการตอบสนอง ผลลัพธ์ควรมีลักษณะคล้ายกับตัวอย่างต่อไปนี้

    {
        "token_type": "Bearer",
        "expires_in": "3599",
        "ext_expires_in": "3599",
        "access_token": "eyJ0eX...8WQ"
    }
    
  3. สร้างคำขอ 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": "{$LCS_environment_id}",
        "context_type": "finops-env"
    }
    

    บันทึกคะแนนต่อไปนี้:

    • ค่า client_assertion ต้องเป็นโทเค็น Microsoft Entra (aadToken) ที่คุณได้รับในขั้นตอนก่อนหน้านี้
    • ค่า context ต้องเป็นรหัสสภาพแวดล้อม Lifecycle Services ที่คุณต้องการปรับใช้ Add-in
    • ตั้งค่าอื่นๆ ทั้งหมด ตามที่แสดงในตัวอย่าง
  4. ดึงข้อมูลโทเค็นการเข้าถึง (access_token) โดยการส่งคำขอ HTTP ที่มีคุณสมบัติต่อไปนี้:

    • URL:https://securityservice.operations365.dynamics.com/token
    • วิธีการ:POST
    • ส่วนหัว HTTP: รวมรุ่นของ API (คีย์คือ Api-Version และค่าคือ 1.0)
    • ตัวเนื้อหา: รวมถึงการร้องขอ JSON ที่คุณสร้างในขั้นตอนก่อนหน้านี้

    คุณควรได้รับโทเค็นการเข้าถึง (access_token) ในการตอบสนอง คุณต้องใช้โทเค็นนี้ในฐานะโทเค็นผู้ถือสิทธิ์เพื่อเรียก API ของการมองเห็นสินค้าคงคลัง นี่คือตัวอย่าง

    {
        "access_token": "{Returned_Token}",
        "token_type": "bearer",
        "expires_in": 3600
    }
    

หมายเหตุ

URL ของ https://securityservice.operations365.dynamics.com/token เป็น URL ทั่วไปสำหรับบริการรักษาความปลอดภัย เมื่อคุณเรียก URL การตอบสนองแรกคือการตอบสนองในการเปลี่ยนเส้นทาง http ที่มีรหัสสถานะ 307 ในส่วนหัวของการตอบสนอง และรายการที่มีคีย์ "ตำแหน่งที่ตั้ง" ที่มี URL เป้าหมายของบริการรักษาความปลอดภัย URL อยู่ในรูปแบบนี้: https://gw.{$geo}-il101.gateway.prod.island.powerapps.com/securityservice/token ตัวอย่างเช่น ถ้าสภาพแวดล้อมของคุณอยู่ในพื้นที่ภูมิศาสตร์ของสหรัฐอเมริกา URL จะเป็น https://gw.us-il101.gateway.prod.island.powerapps.com/securityservice/token ถ้ารหัสสถานะการตอบสนอง 307 ไม่เป็นที่ยอมรับสำหรับคุณ คุณสามารถสร้าง URL จริงตามตำแหน่งที่ตั้งของสภาพแวดล้อม FinOps ได้ด้วยตนเอง วิธีที่ง่ายที่สุดคือการเปิด https://gw.as-il101.gateway.prod.island.powerapps.com/securityservice/token ด้วยเบราว์เซอร์ของคุณ แล้วคัดลอกที่อยู่ในแถบที่อยู่

สร้างเหตุการณ์การเปลี่ยนแปลงปริมาณคงคลังคงเหลือ

มี 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 อย่างไรก็ตาม คุณยังสามารถเพิ่มมิติที่กำหนดเอง (ตัวอย่างเช่น ต้นทาง) เพื่อบ่งชี้ว่าเหตุการณ์มาจากการ Supply Chain Management หรือระบบภายนอก

หมายเหตุ

ถ้า กฎพาร์ติชันข้อมูล ได้รับการตั้งค่า ตามรหัสผลิตภัณฑ์, 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 Unreservs ใช้เป็นการดําเนินงานย้อนกลับในเหตุการณ์ การจอง ซึ่งให้วิธีการย้อนกลับเหตุการณ์การจองที่ระบุโดย 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
}

หมายเหตุ

ในเนื้อหาการตอบสนอง เมื่อ 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 ปริมาณคงคลังคงเหลือของการสอบถาม เพื่อดึงข้อมูลปริมาณคงคลังคงเหลือปัจจุบันสำหรับผลิตภัณฑ์ของคุณ คุณสามารถใช้ API นี้เมื่อใดก็ตามที่คุณต้องทราบสต็อก เช่น เมื่อคุณต้องการทบทวนระดับสต็อกผลิตภัณฑ์บนเว็บไซต์ e-commerce ของคุณ หรือเมื่อคุณต้องการตรวจสอบความพร้อมใช้งานของผลิตภัณฑ์ทั่วทั้งภูมิภาค หรือในร้านค้าและคลังสินค้าใกล้เคียง ปัจจุบัน API สนับสนุนการสอบถามสินค้าแต่ละรายการสูงสุด 5000 รายการตามค่า productID นอกจากนี้ siteID และ locationID ยังสามารถระบุหลายค่าในแต่ละการสอบถามได้ เมื่อ กฎพาร์ติชันข้อมูล ของคุณได้รับการตั้งค่าเป็น ตามที่ตั้ง ขีดจำกัดสูงสุดจะถูกกำหนดโดยสมการต่อไปนี้:

NumOf(SiteID) × NumOf(LocationID) <= 10,000

การสอบถามโดยใช้วิธีการลงรายการบัญชี

การสอบถามโดย API การลงรายการบัญชีจะพร้อมใช้งานในสองเวอร์ชัน ตารางต่อไปนี้จะสรุปความแตกต่าง

API เวอร์ชัน 1.0 API เวอร์ชัน 2.0
สามารถสอบถามรหัสองค์กรได้เพียงหนึ่งรหัสเท่านั้น สามารถสอบถามหลาย ID ขององค์กร
สามารถสอบถามข้อมูลไซต์และคลังสินค้าได้มากถึง 10,000 ชุด สามารถสอบถามชุดขององค์กร ไซต์ และคลังสินค้ามากกว่า 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 ในลักษณะที่สอดคล้องกับการกำหนดค่าดัชนีของคุณ สำหรับข้อมูลเพิ่มเติมเกี่ยวกับ โปรดดู กากำหนดค่าดัชนีปริมาณคงเหลือ

ข้อมูลการสอบถามที่จัดเก็บตามรหัสผลิตภัณฑ์

ส่วนนี้จะใช้เมื่อ กฎพาร์ติชันข้อมูล ของคุณได้รับการตั้งค่าเป็น ตามรหัสผลิตภัณฑ์ ในกรณีนี้ ต้องใช้ฟิลด์ filters สองฟิลด์: organizationId, productId

  • organizationId ควรจะเป็นอาร์เรย์ที่มีค่าตรงกับหนึ่งค่า
  • productId ควรเป็นอาร์เรย์ที่มีอย่างน้อยหนึ่งค่า

แตกต่างจากเมื่อจัดเก็บข้อมูลตามที่ตั้ง ถ้าคุณไม่ระบุค่าสำหรับ siteId และ locationId ข้อมูลสินค้าคงคลังของแต่ละรหัสผลิตภัณฑ์จะถูกรวมไว้ในไซต์และ/หรือที่ตั้งทั้งหมด

หมายเหตุ

ถ้าคุณได้เปิดใช้งานคุณลักษณะการจัดกำหนดการการเปลี่ยนแปลงปริมาณคงเหลือและปริมาณที่ให้สัญญาได้ (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 และยังสนับสนุนพารามิเตอร์ที่เลือกได้สองพารามิเตอร์ดังนี้ pageNumberpageSize และช่วยให้ระบบสามารถแบ่งระบบออกเป็นเอกสารขนาดใหญ่หลายๆ ฉบับได้ ผลลัพธ์จะเรียงลบล็อกตามคลังสินค้า (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 ยังช่วยให้คุณสามารถระบุรหัสองค์กรมากกว่าหนึ่งรหัสในการร้องขอของคุณ โดยให้รวมรายการรหัสองค์กรที่แบ่งด้วยเครื่องหมายจุลภาคในตัวกรอง organizationId เอกสารการร้องขอของคุณ ตัวอย่างเช่น "organizationId": ["org1", "org2", "org3"]

การสอบถามโดยใช้วิธีการรับ

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 การรับ คำขอรับนี้ไม่เหมือนกับตัวอย่างการลงรายการบัญชีที่ระบุไว้ก่อนหน้านี้

/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

ระบบไม่สนับสนุนการสอบถามสินค้าคงคลังผ่านหลายรหัสองค์กรด้วยวิธีการ 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 ขององค์กร

การสอบถามที่แน่นอนโดยใช้ 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 สามารถมีค่าหนึ่งค่าหรือมากกว่า ถ้าเป็นแถวลำดับที่ว่างเปล่า ผลิตภัณฑ์ทั้งหมดจะถูกส่งกลับ
  • ในอาร์เรย์ dimensionssiteId และ locationId จำเป็นหากและเฉพาะหาก กฎพาร์ติชันข้อมูล ของคุณตั้งค่าเป็น ตามที่ตั้ง ในกรณีนี้ อาร์เรย์ควรปรากฏพร้อมกับองค์ประกอบอื่นในลำดับใดๆ
  • 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 คุณสามารถระบุคีย์ในล 30 ได้
  • ส่วน filters ไม่สนับสนุนฟิลด์ organizationId นี้อีกต่อไป แต่คุณสามารถรวมระหว่าง organizationId มิติในฟิลด์ ( keys ตัวอย่างเช่น keys: ["organizationId", "siteId", "locationId"]) และกำหนดค่ารหัสองค์กรที่ตำแหน่งที่ตรงกัน values ในฟิลด์ (ตัวอย่างเช่น values: ["SCM_IV", "iv_contoso_site_1", "iv_contoso_location_1"]) แทน

ฟิลด์อื่นจะเหมือนกับ API เวอร์ชัน 1.0

การสอบถามด้วยการค้นหาผลิตภัณฑ์

API การสอบถามปริมาณคงคลังคงเหลือต่อไปนี้ได้รับการปรับปรุงเพื่อรองรับการค้นหาผลิตภัณฑ์:

หมายเหตุ

เมื่อคุณโพสต์การสอบถามการมองเห็นสินค้าคงคลังที่ใช้การค้นหาผลิตภัณฑ์ ให้ใช้พารามิเตอร์คำขอ productSearch (ด้วยออบเจ็กต์ ProductAttributeQuery ภายใน) เพื่อค้นหาหรือกรองตามรหัสผลิตภัณฑ์ API ที่ใหม่กว่าไม่รองรับพารามิเตอร์คำขอ productid รุ่นเก่าในเนื้อหาคำขออีกต่อไป

ข้อกำหนดเบื้องต้น

ก่อนที่คุณจะเริ่มใช้ API การค้นหาผลิตภัณฑ์ได้ ระบบของคุณต้องเป็นไปตามข้อกำหนดต่อไปนี้:

สัญญาการค้นหาผลิตภัณฑ์

สัญญาการค้นหาผลิตภัณฑ์กำหนดกฎสำหรับการสื่อสารกับ 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 ที่เกี่ยวข้องกับการปันส่วนจะอยู่ใน การปันส่วนการมองเห็นสินค้าคงคลัง