제품 주문 오픈 API 개발자 가이드

  • 릴리스 버전: Zurich
  • 업데이트 날짜 2025년 07월 31일
  • 소요 시간: 8분
  • 제품 주문 열기 API를 사용하여 제품 주문 정보를 생성, 업데이트 및 검색합니다.

    이 개발자 가이드에서는 다양한 사용자 지정을 위해 확장하는 제품 주문 오픈 API 방법에 대한 정보를 제공합니다.

    Product Order Open API 확장

    스크립트 포함을 편집하여 제품 주문 오픈 API 를 확장할 수 있습니다.

    이러한 스크립트 포함은 변경의 결과를 이해하는 경우에만 편집해야 합니다.
    • TMFProductOrderAPIUtil: POST 요청을 처리하는 함수를 포함합니다.
    • TMFProductOrderGetAPIUtil: GET 요청을 처리하는 함수를 포함합니다.
    • ProductOrderExtensionOOB: TMFProductOrderAPIUtilTMFProductOrderGetAPIUtil의 함수를 지원하는 도우미 함수를 포함합니다.
    • ProductOrderProcessor: 빈 스크립트 포함 파일입니다. 이 파일을 사용하여 ProductOrderExtensionOOB에서 재정의할 함수를 정의합니다.

    다음과 같이 사용자 지정할 수 있도록 제품 주문 열기 API 를 확장합니다.

    필수 매개변수

    제품 주문을 만드는 데 필요하거나 필요하지 않은 요청 본문 매개 변수를 변경하려면 ProductOrderExtensionOOB 스크립트 포함에 포함된 getProductOrderSchema() 함수를 재정의합니다.

    getProductOrderSchema() 함수는 TMFOrderAPIConstants 스크립트 포함에서 스키마를 읽습니다. TMFOrderAPIConstants 는 보호되며 편집 할 수 없으므로 스키마를 업데이트 할 수 없습니다. 대신 다른 파일에서 새 스키마를 읽어야 합니다. getProductOrderSchema()를 재정의하여 새 스키마를 읽을 수 있습니다. 재정의 getProductOrderSchema()하려면 ProductOrderProcessor 스크립트 포함에 동일한 이름의 함수를 작성합니다. ProductOrderProcessor의 새 함수는 TMFProductOrderAPIUtil에 의해 호출되어 ProductOrderExtensionOOB의 기본 getProductOrderSchema() 함수를 대체합니다.

    이 예제에서 getProductOrderSchema() 는 새 상수 파일에 정의된 사용자 지정 스키마를 반환합니다.
    // ProductOrderProcessor
    
    var ProductOrderProcessor = Class.create();
    ProductOrderProcessor.prototype = Object.extendsObject(ProductOrderExtensionOOB, {
       // Define overriding functions here
       // Function name and parameters must be identical to the function it overrides
    
       getProductOrderSchema: function() {
          //Define your own custom schema in a new constant file
          return JSON.parse(Constants.SCHEMA.CREATE_PRODUCT_ORDER);
       },
    
       type: 'ProductOrderProcessor'
    });

    요청 본문 확인

    요청 본문에 대한 추가 유효성 검사를 수행하려면 ProductOrderExtensionOOB 함수를 재정의합니다. ProductOrderExtensionOOB 에는 기본적으로 true 를 반환하는 다음과 같은 네 가지 도우미 함수가 포함되어 있습니다.
    • validatePostRequest() - TMFProductOrderAPIUtil에서 processCreateOrder()에 의해 호출됩니다.
    • validateProductObj() - TMFProductOrderAPIUtil에서 processCreateOrder()에 의해 호출됩니다.
    • validateRelatedPartyObj() - TMFProductOrderAPIUtil에서 processCreateOrder()에 의해 호출됩니다.
    • validateGetRequest() - TMFProductOrderGetAPIUtil에서 processGetOrder()에 의해 호출됩니다.
    도우미 함수가 false를 반환하면 API 작업이 중지됩니다. 사용자 지정 유효성 검사를 적용하려면 ProductOrderProcessor에서 동일한 이름과 매개 변수를 사용하여 함수를 만들어 ProductOrderExtensionOOB 도우미 함수를 재정의합니다. 이러한 새로운 ProductOrderProcessor 함수는 TMFProductOrderAPIUtilTMFProductOrderGetAPIUtil 에 의해 호출되어 기본 ProductOrderExtensionOOB 도우미 함수를 대체합니다.
    이 예제에서 ProductOrderProcessor 의 함수는 ProductOrderExtensionOOB 의 기본 함수를 재정의하여 특성에 대한 productOrderItem 유효성 검사를 수행합니다.
    // ProductOrderProcessor
    
    var ProductOrderProcessor = Class.create();
    ProductOrderProcessor.prototype = Object.extendsObject(ProductOrderExtensionOOB, {
        // Define overriding functions here
        // Function name and parameters must be identical to the function it overrides
    
        validatePostRequest: function(orderObject, details) {
            // Returning false terminates the POST request
            // Make sure to push error message in details array in case of error
            if (gs.nil(orderObject.productOrderItem)) {
                details.push(new TMFCommonOrderAPIUtil().getErrorDetailsObj(TMFOrderAPIConstants.MESSAGES.MISSING_ORDER_ITEM, '/'));
                return false;
            }
            return true;
        },
    
        type: 'ProductOrderProcessor'
    });

    추가 REST 작업

    기존 GET 및 POST 작업 외에 추가 작업을 만들려면 제품 주문 오픈 API에 대해 스크립팅된 REST 자원을 추가로 만듭니다. 새로 스크립팅된 REST 자원의 논리는 기존 작업과 일치해야 합니다. 새 스크립트 포함에서 새 작업에 대한 기능을 정의합니다.

    필드 매핑

    기록을 만들 때 API는 요청 본문 매개변수를 기록 필드에 매핑합니다. 기록을 검색할 때 API는 기록 필드를 응답 객체 속성에 매핑합니다.

    ProductOrderExtensionOOB 에는 POST 요청 본문을 GlideRecord에 매핑하는 다음 함수가 포함되어 있습니다.
    • 변환 주문 Gr()
    • transformOrdLineItemGr()
    • getLineItemPrice()
    • transformPriceOrderTypeAndState()
    • transformCustLineItmContact()
    • 변환 순서ItemChar()
    ProductOrderExtensionOOB 에는 GET 또는 POST 요청에 대한 응답 객체에 GlideRecord를 매핑하는 다음 함수가 포함되어 있습니다.
    • transformPostOrderResponse()
    • 변환 GetOrderResponse ()
    • transformProductObj()
    • transformRelatedPartyCustomerLineItem()
    • transformOrderItemRelationship()
    • transformGetOrdLineItmResponse()
    • transformProductCharacteristics()
    • transformProductSpecification()
    필드 매핑을 사용자 지정하여 추가 필드에 대한 데이터를 추가 및 검색하거나 필드의 기본 매핑을 변경합니다. 필드 매핑을 사용자 지정하려면 ProductOrderProcessor에서 동일한 이름과 매개 변수를 사용하여 함수를 만들어 ProductOrderExtensionOOB 매핑 함수를 재정의합니다. 이러한 새로운 ProductOrderProcessor 함수는 TMFProductOrderAPIUtilTMFProductOrderGetAPIUtil 에서 기본 ProductOrderExtensionOOB 매핑 함수를 대체하는 데 사용됩니다.
    이 예제에서 ProductOrderProcessor의 두 함수는 ProductOrderExtensionOOB의 기본 함수를 재정의하여 및 sys_id 필드에 대한 매핑을 external_id 만듭니다.
    // ProductOrderProcessor
    
    var ProductOrderProcessor = Class.create();
    ProductOrderProcessor.prototype = Object.extendsObject(ProductOrderExtensionOOB, {
        // Define overriding functions here
        // Function name and parameters must be identical to the function it overrides
    
        transformOrderGr: function(requestObject, orderGr) {
            orderGr.external_id = requestObject.externalId;
            return orderGr;
        },
    
        transformPostOrderResponse: function(orderObject, orderGr) {
            orderObject.id = orderGr.getValue('sys_id');
            return orderObject;
        },
    
        type: 'ProductOrderProcessor'
    });