Spendint API - POST /sn_spend_intg/spendint/invoice

  • 릴리스 버전: Yokohama
  • 업데이트 날짜 2025년 01월 30일
  • 읽기9분
  • 외부 공급업체 제공자의 송장을 수락합니다.

    구매 주문과 구매 주문 라인이 제출 보류 중 상태이고 판매 주문 및 판매 주문 라인이 채워지지 않은 경우 외부 공급업체 리셀러의 배송 및 송장 게시가 허용되지 않습니다. 구매 주문과 구매 주문 라인의 상태가 주문됨인 경우에만 허용됩니다. 또한 배송 및 송장 게시에 대한 순차적 제한은 없습니다.

    송장을 제출하면 송장 및 송장 라인은 구매 주문서에 매핑됩니다. 매핑이 완료되면 송장 상태는 다음과 같이 설정됩니다.
    • 대기 중인 제공: 수령된 제품이 없거나, 주문이 일부 배송되었거나, 송장에 승인이 필요합니다.
    • 송장 확인됨: 구매 주문서가 제공되었으며 송장 처리된 금액이 구매 주문 총 금액과 일치하는 경우입니다.
    • 검토 필요: 구매 주문서가 제공되었으며 송장 처리된 금액이 구매 주문 총 금액과 일치하지 않는 경우입니다.

    라인 항목에 대해 유효한 송장이 게시되면 동일한 송장을 업데이트할 수 없습니다.

    제공된 송장에 구매 주문 번호가 없으면 송장이 거부되고 제공된 송장 중 하나 이상에 구매 주문 번호가 없다는 오류 메시지가 표시됩니다. 제공된 송장에 구매 주문 번호가 있지만 구매 주문과 일치하지 않거나 구매 주문이 없는 경우 오류 메시지가 표시됩니다. 하나 이상의 송장에 송장의 구매 주문 번호와 일치하는 구매 주문이 없다고 메시지가 표시됩니다. 또한 외부 공급업체 리셀러에서 보낸 송장 처리된 금액이 송장 처리된 금액과 일치하지 않으면 송장이 거부됩니다.

    상태 테이블

    송장 요청의 상태를 확인하려면 테이블 REST API를 사용하여 ServiceNow 데이터베이스에 대한 REST 호출을 수행합니다. API 응답에는 송장 생성이 실패한 기록이 나열됩니다. 송장 응답의 경우 다음 매개변수를 사용하여 송장 오류 테이블을 쿼리합니다.

    sysparm_query=outbound_error.supplier_id=<supplier_id>^outbound_error.state=20

    고객 ID, 공급자 ID, 오류 유형, 고유 임포트 세트 ID, 상태에 대한 상세 정보는 상위 오류 테이블인 아웃바운드 상태 테이블에서 확인할 수 있습니다.

    URL 형식

    /api/sn_spend_intg/spendint/invoice

    지원되는 요청 매개변수

    표 1. 경로 매개변수
    이름 설명
    없음
    표 2. 쿼리 매개변수
    이름 설명
    모드 외부 공급업체 통합을 위한 비동기 및 동기 모드를 지원합니다.

    데이터 유형: 문자열

    유효한 값은 다음과 같습니다.
    • async: 비동기 모드입니다.
    • sync: 동기 모드입니다.

    기본값: async

    표 3. 요청 본문 매개변수(XML 또는 JSON)
    이름 설명
    통화 필수입니다. 소계, 세금 및 배송비에 대한 통화입니다. 소계, 세금 및 배송비는 동일한 통화여야 합니다.

    데이터 유형: 문자열

    최대 길이: 40

    customer_id 고객의 식별자입니다.

    데이터 유형: 문자열

    최대 길이: 100

    할인 송장에 적용된 할인입니다. 편집 가능한 필드입니다.

    데이터 유형: 문자열

    최대 길이: 100

    invoice_date 필수입니다. 고객이 송장을 처리한 날짜입니다.

    데이터 유형: 문자열

    최대 길이: 40

    형식: YYYY-MM-DD

    invoice_lines 이 주문 내의 구매에 대해 송장 처리되는 라인을 정의하는 객체 목록입니다.

    데이터 유형: 배열

    "invoice_lines": [
      {
        "invoiced_line_amount": "String",
        "invoiced_quantity": "String",
        "line_number": "String",
        "supplier_invoice_line_number": "String",
        "sales_order_line_number": "String"
      }
    ]
    invoice_lines.invoiced_line_amount 필수입니다. 지정된 구매 주문서 라인에 대해 고객이 송장을 처리할 총 비용(세금 및 배송비 제외)입니다.

    데이터 유형: 문자열

    최대 길이: 40

    invoice_lines.invoiced_quantity 필수입니다. 고객이 송장을 처리할 상품 또는 서비스의 수량입니다.

    데이터 유형: 문자열

    최대 길이: 40

    invoice_lines.line_number 필수입니다. 특정 구매에 대해 고객이 생성한 구매 주문서 라인 번호입니다.

    데이터 유형: 문자열

    최대 길이: 40

    invoice_lines.sales_order_line_number 필수입니다. 공급자가 생성한 판매 주문 라인 번호입니다.

    데이터 유형: 문자열

    최대 길이: 40

    invoice_lines.supplier_invoice_line_number 필수입니다. 이 송장 라인에 대해 공급자가 생성한 식별 번호입니다.

    데이터 유형: 문자열

    최대 길이: 100

    other_charges 송장과 관련된 기타 추가 요금입니다. 편집 가능한 필드입니다.

    데이터 유형: 문자열

    최대 길이: 100

    order_number 필수입니다. 이 주문에 대해 고객이 제공한 구매 주문 번호입니다.

    데이터 유형: 문자열

    최대 길이: 40

    remit_to_address 필수입니다. 지불이 이루어진 위치입니다.

    데이터 유형: 문자열

    최대 길이: 1000

    sales_order_number 필수입니다. 이 주문에 대해 공급자가 생성한 번호 또는 값입니다.

    데이터 유형: 문자열

    최대 길이: 40

    배송비 필수입니다. 전체 구매에 대한 총 배송 비용입니다.

    데이터 유형: 문자열

    최대 길이: 40

    소계 필수 세금 및 배송료를 제외하고 공급자에게 지불할 총 금액입니다.

    데이터 유형: 문자열

    최대 길이: 40

    supplier_id 필수입니다. 고객이 주문할 수 있는 리셀러 또는 공급자의 식별자입니다.

    데이터 유형: 문자열

    최대 길이: 100

    supplier_invoice_number 필수입니다. 이 송장에 대해 공급자가 생성한 식별 번호입니다.

    데이터 유형: 문자열

    최대 길이: 100

    supplier_tax_id 외부 공급업체 리셀러와 연결된 세금 식별자입니다. 편집 가능한 필드입니다.

    데이터 유형: 문자열

    최대 길이: 100

    세금 필수입니다. 구매에 대해 청구된 총 세금 금액입니다.

    데이터 유형: 문자열

    최대 길이: 40

    tax_rate 주문에 적용된 세율 백분율입니다. 편집 가능한 필드입니다.

    데이터 유형: 문자열

    최대 길이: 100

    third_party_import_id 외부 공급업체가 문자열 값을 전달하여 임포트한 데이터 세트를 고유하게 식별할 수 있는 식별자입니다.

    데이터 유형: 문자열

    최대 길이: 100

    total_amount_invoiced 필수 세금 및 배송료를 포함하여 공급자에게 지불해야 할 총 금액입니다.

    데이터 유형: 문자열

    최대 길이: 40

    헤더

    다음 요청 및 응답 헤더는 이 HTTP 작업에만 적용되거나 이 작업에 고유한 방식으로 적용됩니다.

    표 4. 요청 헤더
    헤더 설명
    수용 응답 본문의 데이터 형식입니다. 지원되는 유형은 application/json 또는 application/xml입니다.

    기본값: application/json

    주:
    Procurement Integration Framework에는 application/json 데이터 형식만 지원됩니다.
    표 5. 응답 헤더
    헤더 설명
    없음

    상태 코드

    다음 상태 코드는 이 HTTP 작업에 적용됩니다.

    표 6. 상태 코드
    상태 코드 설명
    성공 성공입니다. 요청이 성공적으로 처리되었습니다.
    실패 실패했습니다. 요청이 오류와 함께 처리되었습니다.

    응답 본문 매개변수(JSON)

    이러한 응답 본문 매개변수는 동기 모드에서 쿼리될 때 수신됩니다.
    이름 설명
    error_response_body 판매 주문 라인 번호, 판매 주문 번호, 공급자 송장 번호, 공급자 송장 라인 번호 및 오류 메시지로 나열된 오류에 대한 설명입니다.

    데이터 유형: 배열

    error_response_body.error_message 자세한 오류 메시지입니다.

    데이터 유형: 문자열

    status_code "성공" 또는 "실패"와 같은 응답 상태입니다.

    데이터 유형: 문자열

    cURL 요청

    curl "https://instance.service-now.com/api/sn_spend_intg/spendint/invoice" \
    --request POST \
    --header "Accept:application/json" \
    --user 'username':'password'
    {"root":[{
      "customer_id": "Customer - A",
      "supplier_id": "SUP-123456",
      "third_party_import_id": "undefined",
      "supplier_invoice_number": "QAAP89873220071",
      "supplier_tax_id": "TIN000000",
      "order_number": "POL7987633",
      "sales_order_number": "SO0000000081",
      "invoice_date": "YYYY-MM-DD",
      "subtotal": "6000",
      "tax_rate": "10%",
      "tax": "600",
      "shipping": "120",
      "other_charges": "100",
      "discounts": "200",
      "total_amount_invoiced": "6620",
      "remit_to_address": "1640 Camino Del Rio North #202, San Diego,CA",
      "currency": "USD",
      "invoice_lines": [
        {
          "supplier_invoice_line_number": "QA789A867877ABN32251",
          "line_number": "POL587667",
          "sales_order_line_number": "SOL00000081",
          "invoiced_quantity": "45",
          "invoiced_line_amount": "4000"
        },
        {
          "line_number": "POL587668",
          "supplier_invoice_line_number": "78987323",
          "sales_order_line_number": "SOL98769",
          "invoiced_quantity": "12",
          "invoiced_line_amount": "2000"
        }
      ]
    }
    ]}

    가능한 응답:

    // Success response:
    {
        "result": {
            "response": "success"
        }
    }
    
    // Error response:
    {
        "result": {
            "response": [
                {
                    "customer_id": "Customer - A",
                    "supplier_id": "SUP-123456",
                    "third_party_import_id": "undefined",
                    "status_code": "failure",
                    "error_response_body": [
                        {
                            "sales_order_line_number": "SOL00000081",
                            "sales_order_number": "SO0000000081",
                            "supplier_invoice_number": "QAAP89873220071",
                            "supplier_invoice_line_number": "QA789A867877ABN32251",
                            "error_message": "The invoice do not have a corresponding purchase order which matches the purchase order number of the invoice provided\n"
                        }
                    ]
                }
            ]
        }
    }