다음을 통해 공유


인벤토리 가시성 보유 재고 변경 일정 및 약속 가능 재고

이 문서에서는 보유 재고 변경 일정 기능을 설정하여 향후 보유 재고 변경을 예약하고 ATP(약속 가능 재고) 수량을 계산하는 방법을 설명합니다. ATP는 사용 가능하고 다음 기간에 고객에게 약속할 수 있는 품목의 수량입니다. 이 계산을 사용하면 주문 이행 능력을 크게 높일 수 있습니다.

많은 제조업체, 소매업체 또는 판매자의 경우 현재 보유하고 있는 재고가 무엇인지 아는 것만으로는 충분하지 않습니다. 향후 가용성에 대한 완전한 가시성을 확보해야 합니다. 이 미래 가용성은 미래 공급, 미래 수요 및 ATP를 고려해야 합니다.

ATP 수량에 대한 계산된 측정값

ATP 계산된 측정값은 일반적으로 현재 사용 가능한 보유 재고 수량을 찾는 데 사용되는 미리 정의된 계산 측정값입니다. 공급 수량은 수정자 유형이 더하기인 물리적 측정값에 대한 수량의 합이고, 수요량은 수정자 유형이 빼기인 물리적 측정값의 수량 합계입니다.

여러 계산된 측정값을 추가하여 여러 ATP 수량을 계산할 수 있습니다. 그러나 모든 ATP 계산 측정값에서 고유한 물리적 측정값의 총 수는 9개 미만이어야 합니다.

중요

계산된 측정값은 물리적 측정값의 구성입니다. 해당 수식에는 계산된 측정값이 아닌 중복되지 않은 물리적 측정값만 포함될 수 있습니다.

예를 들어 다음과 같은 계산된 측정값을 설정합니다.

사용 가능 보유 재고 = (PhysicalInvent + OnHand + Unrestricted + QualityInspection + Inbound) – (ReservPhysical + SoftReservePhysical + Outbound)

합계(PhysicalInvent + OnHand + Unrestricted + QualityInspection + Inbound)는 공급을 나타내고 합계(ReservPhysical + SoftReservePhysical + Outbound)는 수요를 나타냅니다. 따라서 계산된 측정값은 다음과 같이 이해될 수 있습니다.

사용 가능 보유 재고 = 공급수요

다른 계산된 측정값을 추가하여 사용 가능 보유 재고 ATP 수량을 계산할 수 있습니다.

사용 가능 보유 재고 = (PhysicalInvent + OnHand + Unrestricted + QualityInspection + Inbound) – (Outbound)

두 ATP 계산 측정값에는 PhysicalInvent, OnHand, Unrestricted, QualityInspection, Inbound, ReservPhysical, SoftReservePhysicalOutbound의 8가지 고유한 물리적 측정값이 있습니다.

계산된 측정값에 대한 자세한 내용은 계산된 측정값을 참조하세요.

UI 버전 2에서 보유 재고 변경 일정 및 ATP를 켜고 설정

이 섹션은 인벤토리 가시성 UI 버전 2를 사용할 때 적용됩니다.

ATP를 사용하려면 먼저 하나 이상의 계산된 측정값을 설정하여 ATP 수량을 계산해야 합니다. 또한 Microsoft Power Apps에서 기능을 켜고 ATP 설정을 구성해야 합니다.

Power Apps에서 보유 재고 변경 일정 기능을 활성화하고 ATP 설정을 구성하려면 다음 단계를 따르세요.

  1. Power Apps에 로그인하고 인벤토리 가시성 앱을 엽니다.

  2. 탐색 창에서 기능 관리를 선택합니다.

  3. 약속 가능 재고 타일에서 관리를 선택합니다.

  4. ATP 기능을 켜려면 기능 활성화 옵션을 True로 설정하세요.

  5. 더 긴 ATP 일정 기간(180일)을 지원하려면 180일 일정 옵션을 True로 설정합니다.

    중요

    기본적으로 ATP 기능은 7일로 제한됩니다. 7일 ATP와 180일 ATP 기능은 서로 별개이며 독립적입니다. 7일 ATP 기능을 사용하여 만들거나 수정하는 일정 변경 사항은 180일 ATP 기능을 켜면 적용되지 않습니다. 7일 ATP 기능을 사용했고 180일 기능으로 마이그레이션하려는 경우 180일 기능을 활성화한 후 이전 데이터를 삭제하고 현재 변경 일정을 다시 게시하는 것이 좋습니다.

  6. 최대 예약 기간(일) 필드를 사용자가 예약된 보유 재고 변경 사항을 보고 제출할 수 있는 일수로 설정합니다. 재고 정보를 쿼리하는 사용자는 현재 날짜부터 시작하여 정의된 기간 동안 각 날짜의 보유 재고 수량, 예정된 보유 재고 변경 및 ATP를 가져옵니다. 이 필드의 최대값은 180일입니다. 기본적으로 30일로 설정되어 있습니다. 따라서 오늘부터 최대 30일 동안 변경을 예약할 수 있습니다.

    중요

    예약 기간에는 현재 날짜가 포함됩니다. 따라서 사용자는 현재 날짜(변경 사항이 제출된 날)부터 향후 (일정 기간 – 1)일까지 언제든지 현재 변경이 발생하도록 예약할 수 있습니다.

  7. 측정값 예약 섹션에서 예약 측정값을 설정합니다. 기존의 계산된 측정값을 예약 측정값으로 사용하거나 새 측정값을 생성할 수 있습니다. 인벤토리 가시성을 쿼리하면 구성 요소 물리적 측정의 예약된 변경을 기반으로 정의된 계산 측정에 대한 ATP 값이 제공됩니다. 예약 측정값 섹션의 도구 모음에서 새 보유 재고 변경 일정 구성 V2을 선택하여 ATP에 대한 새 계산된 측정값 바인딩을 추가합니다. 계산된 측정값은 현재 사용 가능한 보유 재고 수량을 찾는 데 사용하려는 것입니다. 계산된 측정값을 만드는 방법에 대한 자세한 내용은 계산된 측정값을 참조하세요.

    중요

    기본 ATP 계산 공식은 참조용입니다. 다른 데이터 원본과 물리적 측정값을 수정하고 추가하여 비즈니스에 대한 올바른 ATP 계산을 설정할 수 있습니다.

  8. ATP 인덱스 세트 구성 섹션에서 ATP 인덱스를 설정합니다. ATP 인덱스는 쿼리 결과를 특정 차원별로 그룹화할 수 있는 제품 인덱스 계층 구조와 유사합니다. 예를 들어 ColorIdSizeId를 ATP 인덱스 세트로 설정하면 쿼리 결과가 색상 및 크기별로 그룹화됩니다. 여러 개의 인덱스 세트를 가질 수 있습니다.

    중요

    기본 ColorIdSizeId 인덱스는 참조용입니다. 차원을 제거하고 다른 차원을 추가할 수 있습니다.

  9. 저장을 선택합니다.

  10. 필요한 설정을 모두 구성했으면 탐색 창의 관리 설정에서 구성 업데이트를 선택하세요.

자세한 내용은 구성 완료 및 업데이트를 참조하세요.

UI 버전 1에서 보유 재고 변경 일정 및 ATP를 켜고 설정

이 섹션은 인벤토리 가시성 UI 버전 1를 사용할 때 적용됩니다.

Power Apps에서 보유 재고 변경 일정 기능을 활성화하고 ATP 설정을 구성하려면 다음 단계를 따르세요.

  1. Power Apps에 로그인하고 인벤토리 가시성 앱을 엽니다.

  2. 구성 페이지를 엽니다.

  3. 기능 관리 탭에서 약속 가능 재고 기능을 켭니다.

  4. ATP 설정 탭을 선택합니다.

  5. 인벤토리 가시성을 쿼리하면 여기에 추가하는 각 ATP 계산 측정값이 포함된 결과가 제공됩니다. ATP에 대해 새로 계산된 측정값을 추가하려면 추가를 선택하세요.

  6. 다음 필드를 설정합니다.

    • 데이터 원본 – 계산된 측정값과 연결된 데이터 원본을 선택합니다.
    • 계산된 측정값 – 선택한 데이터 원본과 연결되어 있고 현재 사용 가능한 보유 재고 수량을 찾는 데 사용할 계산된 측정값을 선택합니다.
    • 예약 기간 – 선택한 계산된 측정값이 사용될 때 사용자가 예약된 보유 재고 변경 사항을 보고 제출할 수 있는 기간(일)을 입력합니다. 재고 정보를 쿼리하는 사용자는 현재 날짜부터 시작하여 이 기간의 각 날짜에 대한 보유 재고 수량, 예약된 보유 재고 변경 및 ATP를 받게 됩니다. 1~7 사이의 정수를 선택하세요.

    중요

    예약 기간에는 현재 날짜가 포함됩니다. 따라서 사용자는 현재 날짜(변경 사항이 제출된 날)부터 향후 (일정 기간 – 1)일까지 언제든지 현재 변경이 발생하도록 예약할 수 있습니다.

  7. 저장을 선택합니다.

  8. ATP에 필요한 계산된 측정값을 모두 추가할 때까지 5~7단계를 반복합니다.

  9. 필요한 모든 설정 구성을 마쳤으면 구성 업데이트를 선택합니다.

보유 재고 변경 일정 및 ATP 계산 작동 방식

보유 재고 변경 일정은 예정된 보유 재고 변경의 예상 날짜와 수량을 설정합니다. 날짜가 예약 기간 설정에 정의된 기간 내에 있는 경우 재고 변경 일정을 인벤토리 가시성에 제출할 수 있습니다(이 문서의 기능 활성화 및 설정 섹션 참조). 재고 정보를 쿼리하는 사용자는 해당 기간의 각 날짜에 대한 보유 재고 수량, 예약된 보유 재고 변경 및 ATP를 받게 됩니다.

예약된 변경 사항은 처음에는 커밋되지 않으므로 시스템의 실제 보유 재고 수량에 영향을 미치지 않습니다. 변경 사항을 커밋하려면 실제 사용 가능한 보유 재고 수량을 업데이트하는 보유 재고 변경 이벤트를 제출해야 합니다. 그런 다음 일치하는 음수 수량에 대한 보유 재고 변경 일정을 제출하여 예약된 변경을 되돌려야 합니다.

예를 들어, 자전거 10대를 주문하고 내일 도착할 것으로 예상합니다. 따라서 인바운드 수량이 10이고 날짜가 내일인 보유 재고 변경 일정을 제출합니다. 다음 날 주문한 제품이 도착하면 실제 보유 재고에 자전거를 추가합니다. 그런 다음 실제 보유 재고 수량을 업데이트하려면 시스템에 변경 사항을 커밋해야 합니다. 변경을 커밋하려면 인바운드 수량이 10인 보유 재고 변경 이벤트를 제출합니다. 그런 다음 인바운드 수량이 -10인 보유 재고 변경 일정을 제출하여 예약된 변경을 되돌립니다.

보유 재고 및 ATP 수량에 대한 인벤토리 가시성을 쿼리하면 일정 기간의 각 날짜에 대해 다음 정보가 반환됩니다.

  • 날짜 – 결과가 적용되는 날짜입니다. 표준 시간대는 UTC(협정 세계시)입니다.
  • 보유 재고 수량 – 지정된 날짜의 실제 보유 재고 수량입니다. 이 계산은 인벤토리 가시성에 대해 구성된 ATP 계산 측정값에 따라 수행됩니다.
  • 예정된 공급 – 지정된 날짜를 기준으로 즉시 소비하거나 배송할 수 있는 물리적으로 확보되지 않은 모든 예정된 인바운드 수량의 합계입니다.
  • 예정된 수요 – 지정된 날짜 현재 소비되거나 배송되지 않은 모든 예정된 아웃바운드 수량의 합계입니다.
  • ATP 수량 – 지정된 날짜부터 예약 기간 끝까지 사용할 수 있는 최소 예상 보유 재고 수량입니다. 이 수량에는 예약된 모든 수량 조정이 포함됩니다. 당일 배송 또는 소비를 위해 현재 날짜에 약속할 수 있는 최대 수량입니다.

예를 들어 현재 날짜가 2022년 2월 1일이고 예약 기간이 7일 경우 사용자는 2022년 2월 1일부터 2월 7일까지 발생할 것으로 예상되는 예약된 현재 보유 변경 사항을 제출할 수 있습니다. 이 경우 예를 들어 2월 3일의 ATP 수량은 해당 날짜의 보유 재고 수량과 2월 3일부터 2월 7일까지의 예정 수량을 기준으로 계산됩니다.

예시

다음 예에서는 일련의 예약된 수량 변경이 인벤토리 가시성이 보고하는 보유 재고 및 ATP 수량에 어떤 영향을 미치는지 보여줍니다. 또한 예약된 변경을 커밋하는 방법, 커밋된 일정 변경이 결과에 미치는 영향, 예약된 변경을 커밋하지 않을 경우 발생할 수 있는 상황을 보여줍니다.

이 예의 결과는 예상된 보유 재고 값을 보여줍니다. 이 값은 설명 목적으로 예약된 모든 업데이트를 통합하지만 인벤토리 가시성을 쿼리할 때 실제로 보고되지는 않습니다.

  1. Power Apps에 있는 인벤토리 가시성 앱의 ATP 설정 페이지에서 시스템에 대해 다음 설정이 구성됩니다.

    • 예약 측정값보유 재고라는 계산된 측정값이 여기에 추가됩니다. 보유 재고 = 공급수요로 계산됩니다.
    • 최대 예약 기간(일) – 값은 7로 설정됩니다.
    • ATP 인덱스 세트 구성ColorIdSizeId가 여기에 추가됩니다.
  2. 또한 다음 조건이 적용됩니다.

    • 현재 날짜는 2022년 2월 1일입니다.
    • 현재 보유 재고 수량은 20개입니다.
  3. 현재 날짜(2022년 2월 1일)에 대해 예정된 수요 수량 3을 인벤토리 가시성에 제출합니다. 따라서 예상 보유 재고 수량은 17입니다. 다음 테이블이 결과를 보여줍니다.

    날짜 보유 예정된 공급 정된 수요 예상 보유 재고 ATP
    2022-02-01 20 3 17 17
    2022-02-02 20 17 17
    2022-02-03 20 17 17
    2022-02-04 20 17 17
    2022-02-05 20 17 17
    2022-02-06 20 17 17
    2022-02-07 20 17 17
  4. 현재 날짜(2022년 2월 1일)에 2022년 2월 3일에 예약된 공급 수량 10을 제출했습니다. 다음 테이블이 결과를 보여줍니다.

    날짜 보유 예정된 공급 정된 수요 예상 보유 재고 ATP
    2022-02-01 20 3 17 17
    2022-02-02 20 17 17
    2022-02-03 20 10 27 27
    2022-02-04 20 27 27
    2022-02-05 20 27 27
    2022-02-06 20 27 27
    2022-02-07 20 27 27
  5. 현재 날짜(2022년 2월 1일)에 다음과 같은 예약된 수량 변경을 제출합니다.

    • 2022년 2월 4일의 수요량 15
    • 2022년 2월 5일의 공급 수량 1
    • 2022년 2월 6일의 공급 수량 3

    다음 테이블이 결과를 보여줍니다.

    날짜 보유 예정된 공급 정된 수요 예상 보유 재고 ATP
    2022-02-01 20 3 17 12
    2022-02-02 20 17 12
    2022-02-03 20 10 27 12
    2022-02-04 20 15 12 12
    2022-02-05 20 1 13 13
    2022-02-06 20 3 16 16
    2022-02-07 20 16 16
  6. 현재 날짜(2022년 2월 1일)에 예약된 수요량 3을 배송합니다. 따라서 실제 보유 재고 수량에 반영되도록 이 변경 사항을 커밋해야 합니다. 변경을 커밋하려면 아웃바운드 수량이 3인 보유 재고 변경 이벤트를 제출합니다. 그런 다음 아웃바운드 수량이 -3인 보유 재고 변경 일정을 제출하여 예약된 변경을 되돌립니다. 다음 테이블이 결과를 보여줍니다.

    날짜 보유 예정된 공급 정된 수요 예상 보유 재고 ATP
    2022-02-01 17 0 17 12
    2022-02-02 17 17 12
    2022-02-03 17 10 27 12
    2022-02-04 17 15 12 12
    2022-02-05 17 1 13 13
    2022-02-06 17 3 16 16
    2022-02-07 17 16 16
  7. 다음 날(2022년 2월 2일)에는 예약 기간이 하루 앞으로 이동합니다. 다음 테이블이 결과를 보여줍니다.

    날짜 보유 예정된 공급 정된 수요 예상 보유 재고 ATP
    2022-02-02 17 17 12
    2022-02-03 17 10 27 12
    2022-02-04 17 15 12 12
    2022-02-05 17 1 13 13
    2022-02-06 17 3 16 16
    2022-02-07 17 16 16
    2022-02-08 17 16 16
  8. 그러나 이틀이 지난(2022년 2월 4일), 2월 3일로 예정된 공급 수량 10개가 아직 도착하지 않았습니다. 다음 테이블이 결과를 보여줍니다.

    날짜 보유 예정된 공급 정된 수요 예상 보유 재고 ATP
    2022-02-04 17 15 2 2
    2022-02-05 17 1 3 3
    2022-02-06 17 3 6 6
    2022-02-07 17 6 6
    2022-02-08 17 6 6
    2022-02-09 17 6 6
    2022-02-10 17 6 6

    보시다시피 예약된(커밋되지 않은) 보유 재고 변경사항은 실제 보유 재고 수량에 영향을 주지 않습니다.

API를 통해 변경 일정, 변경 이벤트 및 ATP 쿼리 제출

다음 API(애플리케이션 프로그래밍 인터페이스) URL을 사용하여 현재 변경 일정, 변경 이벤트 및 쿼리를 제출할 수 있습니다.

경로 방법 설명
/api/environment/{environmentId}/onhand/changeschedule POST 하나의 예약된 현재 변경 사항을 생성합니다.
/api/environment/{environmentId}/onhand/changeschedule/bulk POST 여러 개의 예약된 현재 변경 사항을 생성합니다.
/api/environment/{environmentId}/onhand POST 하나의 보유 재고 변경 이벤트를 만듭니다.
/api/environment/{environmentId}/onhand/bulk POST 여러 변경 이벤트 만들기.
/api/environment/{environmentId}/onhand/indexquery POST POST 메서드를 이용하여 쿼리합니다.
/api/environment/{environmentId}/onhand GET GET 메서드를 이용하여 쿼리합니다.
/api/environment/{environmentId}/onhand/exactquery POST POST 메서드를 사용한 정확한 쿼리입니다.

자세한 내용은 인벤토리 가시성 공개 API를 참조하세요.

하나의 보유 재고 변경 이벤트 생성

관련 인벤토리 가시성 서비스 URL에 POST 요청을 제출하면 현재 변경 일정이 생성됩니다(API를 통해 변경 일정, 변경 이벤트 및 ATP 쿼리 제출 섹션 참조). 대량 요청을 제출할 수도 있습니다.

보유 재고 변경 스케줄은 예약된 날짜가 현재 날짜와 현재 예약 기간의 끝 사이에 있는 경우에만 생성될 수 있습니다. 날짜/시간 형식은 년-월-일이어야 합니다(예: 2022-02-01). 시간 형식은 날짜까지만 정확해야 합니다.

이 API는 단일 보유 재고 변경 예약을 생성합니다.

Path:
    /api/environment/{environmentId}/onhand/changeschedule
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,
        },
        quantitiesByDate: {
            [datetime:datetime]: {
                [dataSourceName:string]: {
                    [key:string]: number,
                },
            },
        },
    }

다음 예는 dimensionDataSource이 없는 샘플 본문 콘텐츠를 보여줍니다.

{
    "id": "id-bike-0001",
    "organizationId": "usmf",
    "productId": "Bike",
    "dimensions": {
        "SiteId": "1",
        "LocationId": "11",
        "ColorId": "Red",
        "SizeId": "Small"
    },
    "quantitiesByDate": {
        "2022-02-01": {
            "pos": {
                "inbound": 10
            }
        }
    }
}

여러 개의 보유 재고 변경 예약 생성

이 API는 동시에 여러 레코드를 생성할 수 있습니다. 이 API와 단일 이벤트 API의 유일한 차이점은 PathBody 값입니다. 이 API의 경우 Body는 레코드 배열을 제공합니다. 최대 레코드 수는 512개입니다. 따라서 보유 재고 변경 예약 대량 API는 한 번에 최대 512개의 예약된 변경을 지원할 수 있습니다.

Path:
    /api/environment/{environmentId}/onhand/changeschedule/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
            quantitiesByDate: {
                [datetime:datetime]: {
                    [dataSourceName:string]: {
                        [key:string]: number,
                    },
                },
            },
        },
        ...
    ]

다음 예는 샘플 본문 내용을 보여줍니다.

[
    {
        "id": "id-bike-0001",
        "organizationId": "usmf",
        "productId": "Bike",
        "dimensions": {
            "SiteId": "1",
            "LocationId": "11",
            "ColorId": "Red",
            "SizeId": "Small"
        },
        "quantitiesByDate": {
            "2022-02-01": {
                "pos": {
                    "inbound": 10
                }
            }
        }
    },
    {
        "id": "id-car-0002",
        "organizationId": "usmf",
        "productId": "Car",
        "dimensions": {
            "SiteId": "1",
            "LocationId": "11",
            "ColorId": "Red",
            "SizeId": "Small"
        },
        "quantitiesByDate": {
            "2022-02-05": {
                "pos": {
                    "outbound": 10
                }
            }
        }
    }
]

하나의 현재고 변경 이벤트 생성

보유 재고 변경 이벤트는 관련 인벤토리 가시성 서비스 URL에 POST 요청을 제출하여 수행됩니다(API를 통해 변경 일정, 변경 이벤트 및 ATP 쿼리 제출 섹션 참조). 대량 요청을 제출할 수도 있습니다.

참고

보유 재고 변경 이벤트는 ATP 기능에만 고유한 것이 아니라 표준 인벤토리 가시성 API의 일부입니다. ATP 작업 시 이벤트가 관련되기 때문에 이 예가 포함되었습니다. 보유 재고 변경 이벤트는 보유 재고 변경 예약과 유사하지만 이벤트 메시지는 다른 API URL로 전송되어야 하며 이벤트는 메시지 본문에서 quantityByDate 대신 quantities를 사용합니다. 보유 재고 변경 이벤트 및 인벤토리 가시성 API의 기타 기능에 대한 자세한 내용은 인벤토리 가시성 Public API를 참조하세요.

다음 예에서는 단일 보유 재고 변경 이벤트가 포함된 요청 본문을 보여줍니다.

{
    "id": "id-bike-0001",
    "organizationId": "usmf",
    "productId": "Bike",
    "dimensions": {
        "SiteId": "1",
        "LocationId": "11",
        "SizeId": "Big",
        "ColorId": "Red"
    },
    "quantities": {
        "pos": {
            "inbound": 10.0
        }
    }
}

예정된 보유 재고 변경 및 ATP 결과 쿼리

적절한 API URL에 POST 요청 또는 GET 요청을 제출하여 예약된 보유 재고 변경 사항 및 ATP 결과를 쿼리할 수 있습니다(API를 통해 변경 일정, 변경 이벤트 및 ATP 쿼리 제출 섹션 참조).

예약된 보유 재고 변경 사항 및 ATP 결과를 쿼리하려면 요청에서 QueryATPtrue로 설정하세요. 기본적으로 쿼리는 오늘의 모든 ATP 관련 데이터를 반환합니다. ATPFromDateATPToDate를 지정하여 결과 범위를 좁힐 수 있습니다. ("종료" 및 "시작" 날짜는 결과만 필터링합니다. ATP 계산 방법에는 영향을 미치지 않습니다.)

  • GET 메서드를 사용하여 요청을 제출하는 경우 URL에 이 매개 변수를 설정하세요.
  • POST 메서드를 사용하여 요청을 제출하는 경우 요청 본문에서 이 매개 변수를 설정하세요.

참고

요청 본문에서 returnNegative 매개 변수가 true 또는 false로 설정되었는지 여부에 관계없이 예약된 보유 재고 변경 사항 및 ATP 결과를 쿼리할 때 결과에는 음수 값이 포함됩니다. 수요 주문만 계획되거나 공급 수량이 수요 수량보다 적은 경우 예약된 보유 재고 변경 수량이 음수가 되므로 이러한 음수 값이 포함됩니다. 음수 값이 포함되지 않으면 결과가 혼란스러울 수 있습니다. 이 옵션과 다른 유형의 쿼리에 대해 작동하는 방법에 대한 자세한 내용은 인벤토리 가시성 공개 API를 참조하세요.

POST 메서드를 이용하여 쿼리

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,
    }

다음 예에서는 POST 메서드를 사용하여 인벤토리 가시성에 제출할 수 있는 인덱스 쿼리 요청 본문을 생성하는 방법을 보여줍니다.

{
    // OnHand Index Query fields
    "filters": {
        "organizationId": ["usmf"],
        "productId": ["Bike"],
        "SiteId": ["1"],
        "LocationId": ["11"]
    },
    "groupByValues": ["ColorId", "SizeId"],
    "returnNegative": true,

    // ATP related fields
    "QueryATP":true,
    "ATPFromDate": "2022-02-01",
    "ATPToDate": "2022-02-10",
}

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 요청으로 생성하는 방법을 보여줍니다.

https://inventoryservice.{RegionShortName}-il301.gateway.prod.island.powerapps.com/api/environment/{EnvironmentId}/onhand?organizationId=usmf&productId=Bike&SiteId=1&LocationId=11&groupBy=ColorId,SizeId&returnNegative=true&QueryATP=true&ATPToDate=2022-02-01&ATPToDate=2022-02-10

GET 요청의 결과는 이전 예의 POST 요청 결과와 정확히 동일합니다.

POST 메서드를 사용한 정확한 쿼리

정확한 쿼리를 설정하려면 ATP 관련 필드를 쿼리 본문에 추가하세요. 자세한 내용은 POST 메서드를 사용한 정확한 쿼리를 참조하세요.

{
    // Exact query fields
    // ...

    // ATP related fields
    "QueryATP":true,
    "ATPFromDate": "2022-02-01",
    "ATPToDate": "2022-02-10",
}

쿼리 결과 예시

이전 쿼리 예시에서는 다음과 같은 응답이 생성될 수 있습니다. 이 예에서는 시스템이 다음 설정으로 구성됩니다.

  • ATP 계산된 측정값: iv.onhand = pos.inbound – pos.outbound
  • 예약 기간:7

다음은 응답 본문의 예입니다.

[
    {
        "quantitiesByDate": {
            "2022-02-02T00:00:00": {
                "pos": {
                    "outbound": 5,
                    "inbound": 0,
                },
                "iv": {
                    "onhand": -5,
                },
            },
            "2022-02-06T00:00:00": {
                "pos": {
                    "inbound": 7,
                    "outbound": 0,
                },
                "iv": {
                    "onhand": 7,
                },
            }
        },
        "atpQuantities": {
            "2022-02-01T00:00:00Z": {
                "iv": {
                    "onhand": 5.0
                }
            },
            "2022-02-02T00:00:00Z": {
                "iv": {
                    "onhand": 5.0
                }
            },
            "2022-02-03T00:00:00Z": {
                "iv": {
                    "onhand": 5.0
                }
            },
            "2022-02-04T00:00:00Z": {
                "iv": {
                    "onhand": 5.0
                }
            },
            "2022-02-05T00:00:00Z": {
                "iv": {
                    "onhand": 5.0
                }
            },
            "2022-02-06T00:00:00Z": {
                "iv": {
                    "onhand": 12.0
                }
            },
            "2022-02-07T00:00:00Z": {
                "iv": {
                    "onhand": 12.0
                }
            }
        },
        "productId": "Bike ",
        "dimensions": {
            "ColorId": "Red",
            "SizeId": "Big",
            "siteid": "1",
            "locationid": "11"
        },
        "quantities": {
            "pos": {
                "inbound": 10.0,
                "outbound": 0,
            },
            "iv": {
                "onhand": 10.0,
            }
        }
    }
]