API Spendint - POST /sn_spend_intg/spendint/shipment

  • Rversion finale: Washingtondc
  • Mis à jour 1 févr. 2024
  • 6 minutes de lecture
  • Utilisez ce point de terminaison pour accepter les mises à jour des achats effectués auprès de tiers.

    Lorsque vous recevez des données, vous devez associer les données d'expédition à une ligne de bon de commande à l'aide du numéro de ligne de commande client. Vous pouvez utiliser le numéro de suivi pour rechercher un enregistrement de détails d'expédition existant associé à la ligne du bon de commande. Si aucun enregistrement de ce type n'est trouvé, créez un nouvel enregistrement de détails d'expédition. S'il n'existe aucun bon de commande ou aucune ligne de bon de commande pour les données d'expédition, un message d'erreur indique que le bon de commande pour cette expédition n'existe pas.
    Remarque :
    Si le bon de commande et les lignes qu'il comprend sont dans l'état Soumission en attente et que la commande client et les lignes qu'elle comprend ne sont pas renseignées, la validation de l'expédition et de la facture du revendeur tiers ne sera pas autorisée. Elle n'est autorisée que lorsque l'état du bon de commande et des lignes qu'il comprend sont dans l'état Commandé. En outre, il n'existe aucune restriction séquentielle sur la validation de l'expédition et de la facture.

    Tables d'états

    Pour connaitre l'état de la demande d'expédition, effectuez un appel REST dans la base de données ServiceNow à l'aide de l'API REST Table. La réponse de l'API répertorie les enregistrements dans lesquels la mise à jour de l'expédition a échoué. Pour obtenir une réponse d'expédition, interrogez la table d'erreurs d'expédition à l'aide du paramètre suivant :

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

    Les informations sur l'ID client, l'ID du fournisseur, le type d'erreur, l'ID de jeu d'importation unique et l'état se trouvent dans la table État sortant, qui est la table d'erreurs parente.

    Format d'URL

    /api/sn_spend_intg/spendint/shipment

    Paramètres de demande pris en charge

    Tableau 1. Paramètres de chemin d'accès
    Nom Description
    Aucun
    Tableau 2. Paramètres de requête
    Nom Description
    mode Prise en charge des modes asynchrones et synchrones pour les intégrations tierces.

    Type de données : chaîne

    Valeurs valides :
    • async : mode asynchrone
    • sync : mode synchrone

    Valeur par défaut : async

    Tableau 3. Paramètres de corps de demande (XML ou JSON)
    Nom Description
    customer_id Identificateur du client.

    Type de données : chaîne

    Longueur maximale : 100

    order_number Requis. Numéro de bon de commande fourni par le client pour cette commande.

    Type de données : chaîne

    Longueur maximale : 40

    sales_order_number Requis. Numéro ou valeur généré(e) par le fournisseur pour cette commande.

    Type de données : chaîne

    Longueur maximale : 40

    shipment_lines Liste des lignes d'expédition qui peuvent contenir le numéro de série, le numéro IMDI et les détails des balises d'actifs.

    Type de données : tableau

    "shipment_lines": [
      {
        "actual_shipment_date": "String",
        "estimated_arrival_date": "String",
        "line_number": "String",
        "planned_shipment_date": "String",
        "product_details": [Array],
        "sales_order_line_number": "String",
        "shipping_address": {Object},
        "shipping_carrier": "String",
        "shipment_quantity": "String",
        "ship_to": "String",
        "tracking_number": "String"
      }
    ]
    shipment_lines.actual_shipment_date Date à laquelle l'expédition quitte l'emplacement du fournisseur.

    Type de données : chaîne

    Longueur maximale : 40

    Format : AAAA-MM-JJ

    shipment_lines.estimated_arrival_date Date à laquelle l'expédition doit arriver à l'emplacement spécifié.

    Type de données : chaîne

    Longueur maximale : 40

    Format : AAAA-MM-JJ

    shipment_lines.line_number Requis. Numéro de ligne de bon de commande généré par le client pour un achat particulier.

    Type de données : chaîne

    Longueur maximale : 40

    shipment_lines.planned_shipment_date Date à laquelle l'expédition doit quitter l'emplacement du fournisseur.

    Type de données : chaîne

    Longueur maximale : 40

    Format : AAAA-MM-JJ

    shipment_lines.product_details Liste d'objets qui définissent les détails sur les produits expédiés. Les options incluent le numéro de série, le numéro IMEI et les détails des balises d'actifs.

    Type de données : tableau

    "product_details": [
      {
        "asset_tag": "String",
        "imei": "String",
        "serial_number": "String"
      }
    ]
    shipment_lines.product_details.asset_tag Balise d'actif du produit expédié.

    Type de données : chaîne

    Longueur maximale : 100

    shipment_lines.product_details.imei Numéro IMEI du produit expédié.

    Type de données : chaîne

    Longueur maximale : 100

    shipment_lines.product_details.serial_number Requis. Numéro de série du produit expédié.

    Type de données : chaîne

    Longueur maximale : 100

    shipment_lines.sales_order_line_number Numéro de ligne de commande client généré par le fournisseur. Ce numéro n'est requis que pour les révisions apportées à cet achat.

    Type de données : chaîne

    Longueur maximale : 40

    shipment_lines.shipping_address Adresse à laquelle les produits sont expédiés.

    Type de données : objet

    "shipping_address":
      {
        "city": "String",
        "country": "String",
        "name": "String",
        "state": "String",
        "street": "String",
        "zip_code": "String"
      }
    shipment_lines.shipping_address.city Nom de la ville où les produits sont expédiés.

    Type de données : chaîne

    Longueur maximale : 1 000

    shipment_lines.shipping_address.country Pays où les produits sont expédiés.

    Type de données : chaîne

    Longueur maximale : 40

    shipment_lines.shipping_address.name Nom du client à qui les produits sont expédiés.

    Type de données : chaîne

    Longueur maximale : 1 000

    shipment_lines.shipping_address.state État où les produits sont expédiés.

    Type de données : chaîne

    Longueur maximale : 1 000

    shipment_lines.shipping_address.street Nom de la rue où les produits sont expédiés.

    Type de données : chaîne

    Longueur maximale : 1 000

    shipment_lines.shipping_address.zip_code Code postal ou PIN où les produits sont expédiés.

    Type de données : chaîne

    Longueur maximale : 40

    shipment_lines.shipment_quantity Requis. Nombre de produits expédiés en tant que biens physiques. Ce nombre doit contenir la quantité des produits qui figurent dans l'expédition.

    Type de données : chaîne

    Longueur maximale : 40

    shipment_lines.shipping_carrier Transporteur qui livre le produit à l'emplacement spécifié (par exemple, FedEx, UPS, USPS, etc.).

    Type de données : chaîne

    Longueur maximale : 100

    shipment_lines.ship_to Nom du destinataire à qui les produits sont expédiés.

    Type de données : chaîne

    Longueur maximale : 100

    shipment_lines.tracking_number Numéro de suivi fourni par le transporteur pour la totalité ou une partie de l'achat.

    Type de données : chaîne

    Longueur maximale : 100

    supplier_id Requis. Identificateur du revendeur ou du fournisseur auprès duquel le client peut passer des commandes.

    Type de données : chaîne

    Longueur maximale : 100

    supplier_shipment_number Requis. Numéro d'identification généré pour cette expédition. En règle générale, ce numéro est généré par un système de planification des ressources d'entreprise (ERP) ou de suivi des commandes.

    Type de données : chaîne

    Longueur maximale : 100

    third_party_import_id Identificateur permettant à un tiers de transmettre une valeur de chaîne pour identifier de manière unique un ensemble de données importées.

    Type de données : chaîne

    Longueur maximale : 100

    En-têtes

    Les en-têtes de demande et de réponse suivants s'appliquent à cette action HTTP uniquement ou s'appliquent à cette action d'une manière distincte.

    Tableau 4. En-têtes de demandes
    En-tête Description
    Accepter Format de données du corps de la réponse. Types pris en charge : application/json ou application/xml.

    Valeur par défaut : application/json

    Remarque :
    Seul le format de données application/json est pris en charge pour Procurement Integration Framework.
    Tableau 5. En-têtes de réponses
    En-tête Description
    Aucun

    Codes d'état

    Les codes d'état suivants s'appliquent à cette action HTTP.

    Tableau 6. Codes d'état
    Code d'état Description
    réussite Réussi. La demande a été correctement traitée.
    échec En échec. La demande présente des erreurs de traitement.

    Paramètres de corps de réponse (JSON)

    Les paramètres de corps de réponse suivants sont reçus lors d'une interrogation en mode synchrone.
    Nom Description
    error_response_body Description des erreurs, répertoriées par numéro de ligne de commande client, numéro de commande client, numéro d'expédition du fournisseur et message d'erreur.

    Type de données : tableau

    error_response_body.error_message Message d'erreur détaillé.

    Type de données : chaîne

    status_code État de la réponse, tel que Réussite ou Échec.

    Type de données : chaîne

    Demande cURL

    curl "https://instance.service-now.com/api/sn_spend_intg/spendint/shipment" \
    --request POST \
    --header "Accept:application/json" \
    --user 'username':'password'
    {"root":[{
      "customer_id" : "ACME CORP",
      "supplier_id" : "SUP-123456",
      "third_party_import_id": "DEL2134324",
      "supplier_shipment_number" : "TN-YU67898723",
      "order_number": "PO0001002",
      "sales_order_number": "SO00223002",
      "shipment_lines": [
        {
          "line_number": "POL0001005",
          "sales_order_line_number": "SOL0231325",
          "shipment_quantity": "4",
          "shipping_carrier": "FedEx",
          "tracking_number": "E-901290092",
          "shipping_address":
            {
              "name" : "1640 Camino Del Rio North #202, San Diego,CA",
              "street" : "1640 Camino Del Rio North",
              "city" : "San Diego",
              "state" : "CA",
              "zip_code" : "92108-1512",
              "country" : "US"
            },
          "ship_to": "John doe",
          "planned_shipment_date": "YYYY-MM-DD",
          "actual_shipment_date": "YYYY-MM-DD",
          "estimated_arrival_date": "YYYY-MM-DD",
          "product_details": [
            {
              "serial_number": "FL1234-23242319001",
              "imei": "2134890294",
              "asset_tag": ""
            },{
              "serial_number": "FL1234-23242319110",
              "imei": "245499003",
              "asset_tag": ""
            }
          ]
        }
      ]
    }
    ]}

    Réponses possibles :

    // Success response:
    {
        "result": {
            "response": "success"
        }
    }
    
    // Error response:
    {
        "result": {
            "response": [
                {
                    "customer_id": "ACME CORP",
                    "supplier_id": "SUP-123456",
                    "third_party_import_id": "DEL2134324",
                    "status_code": "failure",
                    "error_response_body": [
                        {
                            "sales_order_line_number": "SOL0231325",
                            "sales_order_number": "SO00223002",
                            "supplier_shipment_number": "TN-YU67898723",
                            "error_message": "The purchase order for this shipment does not exist\nThe purchase order line for this shipment does not exist\n"
                        }
                    ]
                }
            ]
        }
    }