LeadtoCashCore : délimité

  • Rversion finale: Australia
  • Mis à jour 12 mars 2026
  • 47 minutes de lecture
  • L’include de script LeadtoCashCore fournit des méthodes pour orchestrer un workflow lead-to-cash dans le cycle de vie Lead-to-Cash Core.

    Le module d’extension Lead to Cash Core (com.snc.l2c.core) doit être activé pour que les includes de script LeadtoCashCore soient disponibles dans une instance. Ce module d’extension est accessible via l’application (com.snc.l2c_core) dans le Base du lead-to-cash .ServiceNow Store Cet include de script appartient à l’espace de noms sn_l2c_core et requiert le rôle administrateur.

    Dans un workflow prospect-espèces, vous mappez une entité source à une entité cible. Une entité est définie comme une collection de tables. Le mappage de la source à la cible vous permet de transformer la structure ou le contenu de l’entité source pour qu’il s’adapte à la structure ou au contenu nécessaire dans l’entité cible. La fonctionnalité fournie par cet include de script représente la fonctionnalité de mappage d’entité disponible dans la fonctionnalité Prospect à espèces. Consultez Lead to Cash Core pour plus d'informations.

    Pour terminer un flux de travail à l’aide de l’include de script LeadtoCash , vous transmettez des paramètres de renvoi d’une méthode à l’autre. En règle générale, vous appelez ces méthodes dans l’ordre suivant :

    1. LeadtoCashCore : getPrimitivesEPService(String sourceToTargetConfigID, Contexte de l’objet) - Contient un utilitaire pour récupérer le point d’extension utilisé pour appeler les scripts. Doit être fourni avec chaque appel de méthode. Pour plus d’informations, consultez la section « Préalables » de cette rubrique.
    2. LeadtoCashCore : createInstance(String headerSysIDs, String lineSysIDs, boolean isTarget, Object additionalParams) : Récupère les données d’une entité donnée. Par exemple, les informations relatives aux commandes de clients, y compris les éléments de ligne et leurs données connexes.

      Utilisez le context paramètre pour déclarer un ou plusieurs ID d’en-tête ou de ligne dans le script, appelés « sélection multiple ». Transmettez le context.entityConfigId paramètre pour appeler le script sans aucun mappage défini. Pour de tels cas d’utilisation à sélection multiple, le JSON de sortie contient un tableau d’éléments clés dans lequel chaque entrée représente une entité unique.

    3. LeadtoCashCore : delta(Objet sourceJSON, Objet dirtyJSON, Objet additionalParams) - Compare deux entrées JSON et identifie les changements qui se sont produits entre elles. Par exemple, lorsqu’un élément est ajouté, supprimé ou modifié dans une entité.
    4. LeadtoCashCore : effet(Objet sourceJSON, Objet targetJSON, Objet additionalParams) - Transforme l’objet JSON source en objet cible.
    5. LeadtoCashCore : commitInstance(Objet, targetJSON, Objet, additionalParams) - Valide la transformation effectuée dans l’include de script effect() dans la base de données.
    Remarque :
    Si nécessaire, delta() peut être ignoré dans ce workflow. Cependant, l’appel de ces méthodes dans le désordre entraîne l’échec du workflow (par exemple, lors de l’appel de commitInstance() puis d’effect()).

    Prérequis

    Chacune de ces méthodes est associée à un point d’extension, sn_l2c_core. LeadToCashServiceEP. PrimitiveUtil() est un utilitaire qui fournit des méthodes pour obtenir le service de point d’extension et appelle les includes de script en fonction de leurs paramètres disponibles. Vous devez d’abord fournir à PrimitiveUtil() la méthode getPrimitivesEPService(), qui spécifie la table à partir de laquelle obtenir des informations sur la source et la cible. Pour plus d'informations, consultez LeadtoCashCore : getPrimitivesEPService(String sourceToTargetConfigID, Contexte de l’objet). Une fois que PrimitiveUtil() et getPrimitivesEPService() sont fournis dans le script, vous pouvez ensuite appeler n’importe lequel des includes de script createInstance(), delta(), effect() ou commitInstance() selon vos besoins pour votre cas d’utilisation.

    Exemple de script de workflow Lead-to-Cash Core

    Bien que chacun des includes de script Lead-to-Cash Core disponibles soit documenté individuellement, vous pouvez consulter l’exemple suivant pour voir comment utiliser ces méthodes ensemble pour produire un flux de travail prospect-cash.

    var util = new sn_l2c_core.PrimitiveUtil(); 
    
    // Set the context.isMultiSelect parameter as true to enable multi-select use cases
    // Set the context.entityConfigId parameter to the config id of the source entity (sold prodcut) to trigger createInstance with only configId 
    var context = {"isMultiSelect": false, "entityConfigId": “sn_l2c_cust_flows_sold_product”}; 
    
    //Flow: Creation of an order from a sold product 
    var service = util.getPrimitivesEPService('sn_l2c_cust_flows_sp_to_order', context);  
      
    //CREATE INSTANCE to get the data of sold product with sys_id '06670ba3c3adbd501caee74bb0013166' 
    var SPInstance = service.createInstance(null, '06670ba3c3adbd501caee74bb0013166');  
    gs.info("SPInstance: "+JSON.stringify(SPInstance));  
      
    // DELTA  
    // construct the dirtyJSON as required  
    var deltaOutput = service.delta(SPInstance, dirtyJSON);/  
    gs.info("deltaOutput: "+JSON.stringify(deltaOutput));  
      
    // EFFECT  
    var effectOutput = service.effect(deltaOutput);  
    gs.info("effectOutput: " + JSON.stringify(effectOutput));  
      
    // COMMIT INSTANCE 
    var commitOutput = service.commitInstance(effectOutput);  
    gs.info("commitOutput: " + JSON.stringify(commitOutput));
    Dans notre exemple, un client a acheté un produit vendu, mais demande maintenant une modification du produit vendu existant. Les modifications requises sont fournies sous la forme d’un dirtyJSON. Pour appliquer ces modifications, nous appelons les méthodes Lead to Cash Core dans l’ordre suivant :
    1. Le premier appel obtient les informations sur le produit vendu existant à l’aide de la méthode createInstance( ).
    2. Nous comparons ensuite ce JSON source avec le JSON erroné à l’aide de la méthode delta(), qui renvoie un JSON delta.
    3. Le delta() JSON est ensuite transformé en JSON d’ordre de type à l’aide de la méthode effect( ).
    4. L’ordre JSON est validé dans la base de données à l’aide de la méthode commitInstance( ).

    LeadtoCashCore : getPrimitivesEPService(String sourceToTargetConfigID, Contexte de l’objet)

    Déclenche la méthode d’utilitaire PrimitiveUtil().

    Pour utiliser l’une des méthodes disponibles dans l’include de script LeadtoCashCore , vous devez d’abord toujours appeler le point d’extension scripté PrimitiveUtil() dans votre script avec la méthode utilitaire getPrimitivesEPService() pour déclencher l’implémentation.

    Tableau 1. Paramètres
    Nom Type Description
    contexte Objet Facultatif. Options de paramètres supplémentaires pour afficher les valeurs d’attribut et pour invoquer plus d’une instance à la fois.
    "context": {
      "entityConfigId": "String",
      "isMultiSelect": "Boolean",
      "loadDisplayValue": "Boolean"
    }
    context.entityConfigId Chaîne Facultatif. ID de configuration de l’entité. Si les deux entityConfigId et sourceToTargetConfigID sont fournis, la priorité est donnée à entityConfigId.

    Table : entité prospect-espèces [sn_l2c_core_entity]

    Type de données : chaîne

    contexte.isMultiSelect Booléen Facultatif. Marqueur indiquant s’il faut transmettre plusieurs entités comme entrée pour créer l’instance.
    Valeurs valides :
    • vrai : permet de transmettre plusieurs entités comme entrée. Si la valeur est définie sur vrai, vous pouvez transmettre plusieurs éléments de ligne dans une liste séparée par des virgules.
    • faux : ne permet pas de transmettre plusieurs entités comme entrée. Une seule entrée peut être transmise dans le script API.

    Valeur par défaut : false

    context.loadDisplayValue Booléen Facultatif. Marqueur indiquant s’il faut charger la valeur d’affichage de chaque attribut.
    Valeurs valides :
    • true : active le chargement de la valeur d’affichage d’un attribut.
    • false : n’active pas le chargement de la valeur d’affichage d’un attribut.

    Valeur par défaut : false

    sourceToTargetConfigID Chaîne ID de configuration du mappage pour le mappage de la source à la cible.

    Table : Mappage d’entité prospect-espèces [sn_l2c_core_entity_mapping]

    Tableau 2. Renvoie
    Type Description
    Néant

    L’exemple suivant appelle PrimitiveUtil() et choisit une implémentation basée sur sn_l2c_cust_flows_sp_to_order, qui est un ID de configuration de mappage dans la table Mappage d’entité prospect-espèces [sn_l2c_core_entity_mapping].

    //Utility to invoke createInstance API  
    var util = new sn_l2c_core.PrimitiveUtil(); 
    var context = {"isMultiSelect": true}; // Set the context.isMultiSelect parameter as true to enable multi-select use cases.
    
    //Invokes the extension point and specifies an implementation based on sourceToTargetConfigID of a L2C flow.  
    var service = util.getPrimitivesEPService('sn_l2c_cust_flows_sp_to_order’, context)

    L’exemple suivant appelle PrimitiveUtil() et choisit une implémentation basée sur configId, l2c_order, dans la table Entité prospect-espèces [sn_l2c_core_entity].

    //Utility to invoke createInstance API   
    var util = new sn_l2c_core.PrimitiveUtil();  
    var context = {"isMultiSelect": true, “entityConfigId”: “l2c_order”};  
    // Set the context.isMultiSelect parameter as true to enable multi-select use cases. 
    // Set the context.entityConfigId parameter if createInstance needs to be invoked with only configId. 
     
    //Invokes the extension point and uses default implementation based on entityConfigId of a L2C flow.   
    var service = util.getPrimitivesEPService('’, context); 

    LeadtoCashCore : createInstance(String headerSysIDs, String lineSysIDs, boolean isTarget, Object additionalParams)

    Renvoie les données d’une ou de plusieurs entités données avec un objet JSON contenant divers détails tels que l’en-tête, les lignes, les lignes enfants, les caractéristiques et leurs attributs.

    Utilisez le JSON de sortie de la méthode createInstance() dans les méthodes suivantes du workflow Lead to Cash Core telles que delta(), effect() et commitInstance().

    Besoins

    L’include de script LeadtoCashCore nécessite que vous appeliez d’abord la méthode utilitaire de script PrimitiveUtil() avec la LeadtoCashCore : getPrimitivesEPService(String sourceToTargetConfigID, Contexte de l’objet) méthode utilitaire pour déclencher l’implémentation avant d’appeler createInstance() dans votre script. Pour chaque flux, obtenez le service une seule fois et utilisez le même service pour toutes les méthodes LeadtoCashCore .

    Considérations

    • Pour permettre à createInstance() de transmettre plusieurs headerIDs ou lineIDs séparés par des virgules à la fois, définissez le paramètre context.isMultiSelect booléen getPrimitivesEPService() sur true. Sinon, vous ne pouvez transmettre qu’un seul ID à la fois. Le cas d’utilisation à un seul headerID avec plusieurs lineID est pris en charge sans être défini context.isMultiSelect sur vrai.

    • Pour permettre à createInstance() d’être invoqué avec seulement l’ID de configuration de l’entité, définissez le paramètre context.entityConfigIdde chaîne getPrimitivesEPService(), . Si entityConfigId et sourceToTargetConfigID sont transmis, entityConfigId est prioritaire pour exécuter createInstance().

      Pour en savoir plus sur cette fonctionnalité, reportez-vous à la section LeadtoCashCore : getPrimitivesEPService(String sourceToTargetConfigID, Contexte de l’objet).

    • createInstance() prend en charge la récupération sélective de données et les définitions d’entités racines multiples, ce qui permet aux développeurs d’extraire explicitement les paliers et les scénarios sans en-tête à l’aide de paramètres supplémentaires tels que fetchRecordSysIds et multiSelectMerge.
    Tableau 3. Paramètres
    Nom Type Description
    additionalParams Objet Facultatif. Paramètres supplémentaires à utiliser.
    additionalParams.skipLines Booléen Facultatif. Marqueur indiquant s’il faut extraire des éléments de ligne pour l’entité spécifiée.
    Valeurs valides :
    • vrai : ignorer le renvoi des informations d’éléments de ligne pour l’entité.
    • faux : renvoyer les informations d’éléments de ligne pour l’entité.

    Valeur par défaut : false

    fetchRecordSysIds Tableau d'objets Active l’extraction sélective de données pour les scénarios avec et sans en-tête en mappant explicitement les noms de table aux sys_ids.
    Comportement:
    • Avec en-tête : permet l’extraction sélective d’entités enfants (comme des paliers) liées à l’en-tête. Si les ID de paliers ne sont pas fournis, récupère toutes les rampes liées à l’en-tête.
    • Sans en-tête : prend en charge l’extraction des paliers où des relations directes sont manquantes dans des entités sans en-tête. Les ID de paliers doivent être inclus ; sans elles, ne renvoie pas de données de palier.

    Structure :

    [{
     "<table_name1>": "<sys_id1>", 
     "<table_name2>": "<sys_id2>", 
    }]
    multiSelectMerge Booléen Uniquement pour les scénarios sans en-tête. Marqueur indiquant s’il faut fusionner les données du même type de contexte dans une structure plane unique.
    Valeurs valides :
    • vrai : fusionne les mêmes données de type contexte dans une structure plane.
    • false : ne fusionne pas les données.
    additionalParams.allowedContextTypes Tableau de chaînes Facultatif. Contrôle le remplissage et le traitement uniquement aux types répertoriés dans allowedContextTypes, à l’exclusion de toutes les autres sections non liées.

    Valeurs valides :

    • Pour la synchronisation partielle basée sur l’en-tête, l’en-têteallowedContextTypes doit être transmis pour permettre à cette méthode de construire la structure racine.
    • Pour une synchronisation partielle sans en-tête, lineItems doit être transmis allowedContextTypes pour permettre à cette méthode de construire la structure de traitement des données enfants.

    Structure :

    allowedContextTypes: ["header","headerRelatedParty"]  }; 
    headerSysIDs Chaîne Le ou les sys_id d’en-tête d’une entité à partir de laquelle récupérer les données. Requis si vous ne fournissez pas le lineSysIDs paramètre. Transmettez null si vous ne transmettez aucune sys_ids d’en-tête.

    Pour désigner un ou plusieurs sys_ids d’en-tête dans votre script, définissez context.isMultiSelect = true dans la méthode d’utilitaire getPrimitivesEPService(). Pour plus de détails, reportez-vous au tableau Paramètres dans LeadtoCashCore : getPrimitivesEPService(String sourceToTargetConfigID, Contexte de l’objet).

    Remarque :
    Au moins un headerSysID paramètre est lineSysIDs requis.
    isTarget Booléen Facultatif. Marqueur qui détermine s’il faut extraire les données d’entité cible.
    Valeurs valides :
    • vrai : extraire les données de l’entité cible.
    • faux : ne pas extraire les données de l’entité cible.

    Valeur par défaut : false

    lineSysIDs Chaîne Élément de ligne sys_id(s) d’une entité à partir de laquelle récupérer les données d’entité. Requis si vous ne fournissez headerSysIDs pas et si la structure de l’entité commence par des éléments de ligne tels que le produit vendu.

    Pour désigner un ou plusieurs sys_ids d’éléments de ligne dans votre script, définissez context.isMultiSelect = true dans la méthode d’utilitaire getPrimitivesEPService(). Pour plus de détails, reportez-vous au tableau Paramètres dans LeadtoCashCore : getPrimitivesEPService(String sourceToTargetConfigID, Contexte de l’objet).

    Remarque :
    Au moins un headerSysID paramètre est lineSysIDs requis. Si vous en transmettez plusieurs lineSysIDs, tous les enregistrements doivent appartenir au même headerSysID.
    Tableau 4. Renvoie
    Type Description
    Objet JSON JSON contenant les détails de l’enregistrement de l’entité.

    Type de données : tableau d’objets

    {
    "items": [
      {
      "attributes": {Object},
      "sys_id": {Object},
      "table": "String",
      "lineItems": [
        {
         "attributes": {Object},
         "sys_id": {Object},
         "table": "String",
         "characteristics": [Array],
         "lineItems": [Array]
         }
        ],
      "characteristics": [Array],
      "_state": "String"
      }
     ]
    }
    _state État de l’activité de l’entité.

    Valeurs possibles :

    • active : l’entité est active.
    • inactif : l’entité est inactive.

    Par défaut : actif

    Type de données : chaîne

    Caractéristiques Liste des caractéristiques de l’entité. Les caractéristiques peuvent varier d’une entité à l’autre.

    Type de données : tableau d’objets

    "characteristics": [  
            {  
              "attributes": {Object},
              "sys_id": {Object},  
              "table": "String"
            }  
          ]
    Caractéristiques.Attributs Un ou plusieurs objets contenant des informations sur les attributs associés à l’enregistrement de caractéristique. Le < type d’attribut > peut avoir des valeurs différentes en fonction des enregistrements/fonctionnalités associés à la caractéristique. Par exemple, cet objet peut contenir des références à la sys_id de l’enregistrement d’attributs, aux enregistrements de caractéristiques associés, aux enregistrements d’options de caractéristiques ou aux informations sur les produits vendus.

    Type de données : objet

    "attributes": {
      "<attribute_type>": {Object}
    }
    caractéristiques.attributs.<attribute_type> Informations sur le nom de clé de l’attribut d’élément.
    "<key_name>": { 
      "value": "String" 
    }

    Type de données : objet

    Caractéristiques.attributs.<attribute_type>.valeur En règle générale, la sys_id de l’enregistrement d’attribut associé, mais peut être n’importe quelle chaîne de texte significative décrivant le type d’attribut associé.

    Type de données : chaîne

    characteristics.sys_id Objet contenant les sys_id de l’enregistrement de caractéristique associé.

    Type de données : objet

    "sys_id": { 
      "value": "String" 
     }
    characteristics.sys_id.valeur Sys_id de l’enregistrement de caractéristique associé.

    Type de données : chaîne

    table.caractéristiques Nom de la table qui contient l’enregistrement de caractéristique de l’entité prospect-espèce.

    Type de données : chaîne

    Éléments Contient un tableau d’objets sélectionnés lorsque context.isMultiSelect est défini sur vrai.

    Type de données : tableau d’objets

    "items": [
    { 
      "attributes": {Object}, 
      "sys_id": {Object}, 
      "table": "String",
      "lineItems": [Array]
     }, 
    ]
    éléments.attributs Attributs de l’enregistrement d’élément. Les attributs peuvent varier d’une entité à l’autre.
    "attributes": {
      "account": {Object},
      "name": {Object}
    }

    Type de données : objet

    compte.attributs.éléments Informations sur le compte associé à l’attribut d’élément.
    "account": { 
      "value": "String" 
    }
    éléments.attributs.compte.valeur Attributs de l’élément. Les attributs peuvent varier d’une entité à l’autre.
    "attributes": {
      "account": {Object},
      "<key_name>": {Object}
    }

    Type de données : objet

    éléments.attributs.<key_name> Informations sur le nom de clé de l’attribut d’élément.
    "<key_name>": { 
      "value": "String" 
    }

    Type de données : objet

    éléments.attributs.<key_name>.valeur Valeur de l’attribut de nom de clé.

    Type de données : chaîne

    items.sys_id Objet contenant sys_id informations sur l’élément d’entité. Les valeurs varient selon les entités.

    Type de données : objet

    "sys_id": {
      "value": "String"
    }
    items.sys_id.valeur Sys_id d’un élément associé.

    Type de données : chaîne

    éléments.table Nom de la table qui contient l’enregistrement d’élément de ligne associé à l’entité prospect-espèce.

    Type de données : chaîne

    éléments.ligneÉléments Objet JSON contenant les détails de l’élément de ligne de l’enregistrement d’entité.

    Type de données : tableau d’objets

    "lineItems": [ 
      { 
        "attributes": {Object},
        "characteristics": [Array],
        "lineItems": [Array],
        "_state": "String",
        "sys_id": {Object},
        "table": "String"
      }
    ]
    items.lineItems._state État de l’activité de l’entité de l’élément de ligne.

    Valeurs possibles :

    • active : l’entité est active.
    • inactif : l’entité est inactive.

    Par défaut : actif

    Type de données : chaîne

    éléments.ligneÉléments.attributs Attributs de l’enregistrement de l’élément de ligne. Les attributs peuvent varier d’une entité à l’autre.
    "attributes": {
      "account": {Object},
      "<key_name>": {Object}
    }

    Type de données : objet

    éléments.ligne.attributs.<key_name> Informations sur le nom de clé de l’attribut d’élément de ligne.
    "<key_name>": { 
      "value": "String" 
    }

    Type de données : objet

    éléments.ligne.attributs.<key_name>.valeur Valeur de l’attribut de nom de clé.

    Type de données : chaîne

    éléments.ligne.attributs.compte Informations sur le compte associé à l’attribut d’élément de ligne.
    "account": { 
      "value": "String" 
    }
    éléments.lignes.attributs.compte.valeur Sys_id du compte associé à l’attribut d’élément de ligne.

    Type de données : chaîne

    éléments.lignes.caractéristiques Liste des caractéristiques associées à l’élément de ligne. Les caractéristiques peuvent varier d’une entité à l’autre.

    Type de données : tableau d’objets

    "characteristics": [  
            {  
              "attributes": {Object},
              "sys_id": {Object},  
              "table": "String"
            }  
          ]
    éléments.lignes.caractéristiques.attributs Un ou plusieurs objets contenant des informations sur les attributs associés à l’enregistrement de caractéristique. Le < type d’attribut > peut avoir des valeurs différentes en fonction des enregistrements/fonctionnalités associés à la caractéristique. Par exemple, cet objet peut contenir des références à la sys_id de l’enregistrement d’attributs, aux enregistrements de caractéristiques associés, aux enregistrements d’options de caractéristiques ou aux informations sur les produits vendus.

    Type de données : objet

    "attributes": {
      "<attribute_type>": {Object}
    }
    éléments.lignes.caractéristiques.attributs.<attribute_type>.valeur En règle générale, la sys_id de l’enregistrement d’attribut associé, mais peut être n’importe quelle chaîne de texte significative décrivant le type d’attribut associé.

    Type de données : chaîne

    items.lineItems.characteristics.sys_id Objet contenant les sys_id de l’enregistrement de caractéristique associé.

    Type de données : objet

    "sys_id": { 
      "value": "String" 
     }
    items.lineItems.characteristics.sys_id.valeur Sys_id de l’enregistrement de caractéristique associé.

    Type de données : chaîne

    items.lineItems.characteristics.table Nom de la table qui contient l’enregistrement de caractéristique de l’entité prospect-espèce.

    Type de données : chaîne

    éléments.éléments.ligne.élémentslinéaires Éléments de ligne enfants d’un élément de ligne parent. Cet objet a le même format que le lineItems paramètre.

    Type de données : objet

    "lineItems": [
      { 
        "attributes": {Object},
        "characteristics": [Array],
        "lineItems": [Array],
        "_state": {Object},
        "sys_id": {Object},
        "table": "String"
      }
    ] 
    items.lineItems.sys_id Objet contenant sys_id informations sur l’enregistrement d’élément de ligne associé.

    Type de données : objet

    "sys_id": {
      "value": "String"
    }
    items.lineItems.sys_id.valeur Sys_id d’un enregistrement d’élément de ligne associé.

    Type de données : chaîne

    items.lineItems.table Nom de la table qui contient l’enregistrement d’élément de ligne associé à l’entité prospect-espèce.

    Type de données : chaîne

    L’exemple de script ci-dessous appelle la méthode createInstance() pour charger les données d’un produit vendu, toute sa hiérarchie et ses caractéristiques.

    //Utility to invoke createInstance API 
    var util = new sn_l2c_core.PrimitiveUtil();  
     
    //Invoke extension point, picks an implementation based on sourceToTargetConfigID of a L2C flow, the Mapping Config ID  in "sn_l2c_core_entity_mapping" table. 
    var service = util.getPrimitivesEPService('sn_l2c_cust_flows_sp_to_order'); 
     
    //Invoke createInstance API with required params 
    var SPInstance = service.createInstance(null, '4e03cda2ec873110f87727ef5883a2cf'); 
     
    //Print the returned JSON 
    gs.info("SPInstance: "+JSON.stringify(SPInstance));  
     
    //The returned JSON can be used for subsequent methods of the flow such as delta(), effect() and commitInstance()

    Sortie :

    { 
      "lineItems": [ 
        { 
          "table": "sn_install_base_sold_product", 
          "sys_id": { 
            "value": "4e03cda2ec873110f87727ef5883a2cf" 
          }, 
          "attributes": { 
            "name": { 
              "value": "Quadplay Home Tech Hub Bundle" 
            }, 
            "account": { 
              "value": "9e2fd2ee11b43110f877366201dea674" 
            } 
          }, 
          "lineItems": [ 
            { 
              "table": "sn_install_base_sold_product", 
              "sys_id": { 
                "value": "9e0301e2ec873110f87727ef5883a23a" 
              }, 
              "attributes": { 
                "name": { 
                  "value": "Internet and OTT Bundle" 
                }, 
              "_state": "active",
              "account": { 
                  "value": "9e2fd2ee11b43110f877366201dea674" 
                } 
              }, 
              "lineItems": [ 
              ], 
              "characteristics": [] 
            } 
          ], 
          "characteristics": [ 
            { 
              "table": "sn_prd_pm_product_characteristics", 
              "sys_id": { 
                "value": "8d669b6665ebf110f877d71ec56bf75c" 
              }, 
              "attributes": { 
                "sys_id": { 
                  "value": "8d669b6665ebf110f87d71ec56bf75c" 
                },
              "_state": "active", 
              "characteristic_value": { 
                  "value": "" 
                }, 
              "characteristic": { 
                  "value": "4f31999fd0a63110f8770dbf976be178" 
                }, 
              "characteristic_option": { 
                  "value": "4f31999fd0a63110f8770dbf976be179" 
                }, 
              "sold_product": { 
                  "value": "4e03cda2ec873110f87727ef5883a2cf" 
                } 
              } 
            } 
          ] 
        } 
      ] 
    }

    Sélection multiple

    Le script suivant montre comment isMultiSelect utiliser pour appeler la méthode createInstance() et charger les données de deux produits vendus avec toute leur hiérarchie et leurs caractéristiques.

    //Utility to invoke createInstance API  
    var util = new sn_l2c_core.PrimitiveUtil();   
    
    //Set context variable isMultiSelect true to enable multi-select 
    var context = {"isMultiSelect": true}; 
    //Invoke extension point, picks an implementation based on sourceToTargetConfigID of a L2C flow, the Mapping Config ID  in “sn_l2c_core_entity_mapping” table.  
    var service = util.getPrimitivesEPService('sn_l2c_cust_flows_sp_to_order’, context);  
      
    //Multiple sold products selected  
    var selectedLineitems = '4e03cda2ec873110f87727ef5883a2cf,036a2349284d0210f877b68370fb2e93'; 
    
    //Invoke createInstance API with required params  
    var SPInstance = service.createInstance(null, selectedLineitems);  
      
    //Print the returned JSON  
    gs.info("SPInstance: "+JSON.stringify(SPInstance));   
      
    //The returned JSON can be used for subsequent APIs of the flow such as Delta, Effect and Commit Instance 

    Réponse :

    {  
      "items": [ 
        { 
          "lineItems": [ 
            { 
              "table": "sn_install_base_sold_product", 
              "sys_id": { 
                "value": "4e03cda2ec873110f87727ef5883a2cf" 
              }, 
              "attributes": { 
                "name": { 
                  "value": "Quadplay Home Tech Hub Bundle" 
                }, 
                "account": { 
                  "value": "9e2fd2ee11b43110f877366201dea674" 
                } 
              }, 
              "lineItems": [ 
                { 
                  "table": "sn_install_base_sold_product", 
                  "sys_id": { 
                    "value": "9e0301e2ec873110f87727ef5883a23a" 
                  }, 
                  "attributes": { 
                    "name": { 
                      "value": "Internet and OTT Bundle" 
                    }, 
                    "account": { 
                      "value": "9e2fd2ee11b43110f877366201dea674" 
                    } 
                  }, 
                  "lineItems": [], 
                  "characteristics": [] 
                } 
              ] 
            } 
          ] 
        }, 
        { 
          "lineItems": [ 
            { 
              "table": "sn_install_base_sold_product", 
              "sys_id": { 
                "value": "036a2349284d0210f877b68370fb2e93" 
              }, 
              "attributes": { 
                "name": { 
                  "value": "Quadplay Home Tech Hub Bundle" 
                }, 
                "account": { 
                  "value": "9e2fd2ee11b43110f877366201dea674" 
                } 
              }, 
              "lineItems": [ 
                { 
                  "table": "sn_install_base_sold_product", 
                  "sys_id": { 
                    "value": "4b6a2349284d0210f877b68370fb2e9c" 
                  }, 
                  "attributes": { 
                    "name": { 
                      "value": "Internet and OTT Bundle" 
                    }, 
                    "account": { 
                      "value": "9e2fd2ee11b43110f877366201dea674" 
                    } 
                  }, 
                  "lineItems": [], 
                  "characteristics": [] 
                } 
              ], 
              "characteristics": [],
              "_state": "active" 
            } 
          ] 
        } 
      ] 
    }

    Appeler createInstance() avec entityConfigId

    L’exemple de script ci-dessous appelle la méthode createInstance() pour charger les données d’une commande, toute sa hiérarchie et ses caractéristiques. L’exemple montre que dans un flux sp à commande, nous voulons extraire les données du contrat de vente jointes au produit vendu.

    // Utility to invoke createInstance API
    var util = new sn_l2c_core.PrimitiveUtil();
    
    var quoteToSA = "sn_l2c_quote_to_sales_agreement_pricing";
    
    var context = {
      "entityConfigId": "sn_l2c_sales_agreement"
    };
    
    var spToOrder = "sn_l2c_cust_flows_sp_to_order";
    
    var service = util.getPrimitivesEPService(spToOrder, context);
    
    var createInstanceOutput = service.createInstance("c8e1e678432242105eba72eb3ab8f261");
    
    gs.info("Sales Agreement JSON " + JSON.stringify(createInstanceOutput));
    
    // The returned JSON can be used for subsequent methods of the flow such as delta(), effect() and commitInstance()

    Sortie :

    {
      "table": "sn_sales_agmt_core_sales_agreement",
      "sys_id": {
        "value": "c8e1e678432242105eba72eb3ab8f261"
      },
      "attributes": {
        "account": {
          "value": "051f62b0d7300200e5982cf65e610333"
        },
        "short_description": {
          "value": "1 year sales agreement for Spark Technologies"
        }
      },
      "lineItems": [
        {
          "table": "sn_sales_agmt_core_sales_agreement_line",
          "sys_id": {
            "value": "4104369034641210f877af77d9dd31bb"
          },
          "attributes": {
            "sales_agreement": {
              "value": "c8e1e678432242105eba72eb3ab8f261"
            },
            "short_description": {
              "value": "Home Automation Bundle"
            }
          },
          "lineItems": [
            {
              "table": "sn_sales_agmt_core_sales_agreement_line",
              "sys_id": {
                "value": "45e6fa4a436a02105eba72eb3ab8f247"
              },
              "attributes": {
                "sales_agreement": {
                  "value": "c8e1e678432242105eba72eb3ab8f261"
                },
                "short_description": {
                  "value": "Outdoor Camera"
                }
              },
              "lineItems": [],
              "characteristics": [],
              "pricingAdjustments": []
            },
            {
              "table": "sn_sales_agmt_core_sales_agreement_line",
              "sys_id": {
                "value": "73e6fa4a436a02105eba72eb3ab8f25a"
              },
              "attributes": {
                "sales_agreement": {
                  "value": "c8e1e678432242105eba72eb3ab8f261"
                },
                "short_description": {
                  "value": "Indoor Camera"
                }
              },
              "lineItems": [],
              "characteristics": [],
              "pricingAdjustments": []
            }
          ],
          "characteristics": [],
          "pricingAdjustments": []
        }
      ]
    }

    Synchronisation partielle des parties connexes à l’aide de allowedContextTypes

    Le script createInstance() suivant est défini allowedContextTypes avec l’en-tête et l’en-tête RelatedParty pour afficher uniquement ces deux sections renseignées dans la table sn_l2c_quote_to_opportunity.

    var util1 = new sn_l2c_core.PrimitiveUtil();
    var service1 = util1.getPrimitivesEPService('sn_l2c_quote_to_opportunity'); // WITH HEADER FLOW
    var quoteId = '04ba9004f11f3110f8777d7194f166f6';
    var additionalParams1 = {
        allowedContextTypes: ["header", "headerRelatedParty"]
    };
    
    var quoteInstance = service1.createInstance(quoteId, null, false, additionalParams1);
    gs.info(JSON.stringify(quoteInstance));

    Sortie. La sortie ne contient que les deux sections renseignées définies dans le allowedContextTypes. Tous les autres types de contexte (lignes, childLines, caractéristiques, etc.) sont vides ou omis, ce qui permet une synchronisation partielle.

    {
      "table": "sn_quote_mgmt_core_quote",
      "sys_id": {
        "value": "04ba9004f11f3110f8777d7194f166f6"
      },
      "attributes": {
        "renewal_adjustment_value": { "value": "" },
        "contract_start_date": { "value": "2024-01-01" },
        "total_net_new_amount": { "value": "USD;0" },
        "agreement_start_date": { "value": "" },
        "total_one_time_price": { "value": "USD;214" },
        "consumer": { "value": "" },
        "billing_location": { "value": "" },
        "document_template": { "value": "" },
        "pricelist": { "value": "19d29513d0e63110f8770dbf976be122" },
        "assignment_group": { "value": "a4b31c0cf1db3110f8777d7194f166e9" },
        "partner_contact": { "value": "" },
        "auto_generated_for_renewal": { "value": "false" },
        "contract_end_date": { "value": "2025-12-31" },
        "active": { "value": "true" },
        "billing_state": { "value": "" },
        "external_system": { "value": "" },
        "renewal_adjustment_type": { "value": "" },
        "source_opportunity": { "value": "" },
        "total_annual_recurring_price_v2": { "value": "USD;1596" },
        "internal_signer": { "value": "" },
        "costbook": { "value": "a3042cdce405c210f8773750028d6f72" },
        "payment_terms": { "value": "" },
        "shipping_location": { "value": "" },
        "seller_organization": { "value": "" },
        "contact": { "value": "4d147a386f0331003b3c498f5d3ee437" },
        "external_id": { "value": "" },
        "transaction_date": { "value": "2023-12-18 23:37:11" },
        "version": { "value": "1" },
        "billing_zip": { "value": "" },
        "previous_quote": { "value": "" },
        "assigned_to": { "value": "b9b19484f1db3110f8777d7194f166d1" },
        "total_monthly_recurring_price_v2": { "value": "USD;133" },
        "agreement_end_date": { "value": "" },
        "contract_type": { "value": "" },
        "renewal_adjustment_basis": { "value": "" },
        "header_api": { "value": "" },
        "channel": { "value": "agent_assist" },
        "existing_contract": { "value": "" },
        "state": { "value": "draft" },
        "header_id": { "value": "04ba9004f11f3110f8777d7194f166f6" },
        "account": { "value": "86837a386f0331003b3c498f5d3ee4ca" },
        "quote_type": { "value": "add" },
        "billing_street": { "value": "" },
        "same_as_shipping_address": { "value": "false" },
        "work_notes": { "value": "" },
        "comments": { "value": "" },
        "short_description": {
          "value": "B2B - Quadplay Home Tech Hub Bundle"
        },
        "partner": { "value": "" },
        "sales_agreement": { "value": "" },
        "total_renewal_amount": { "value": "USD;0" },
        "sa_quote": { "value": "false" },
        "external_signer": { "value": "" },
        "shipping_city": { "value": "" },
        "discount_percentage": { "value": "" },
        "expiration_date": { "value": "" },
        "billing_city": { "value": "" },
        "currency": { "value": "USD" },
        "shipping_country": { "value": "" },
        "billing_country": { "value": "" },
        "record_number": { "value": "QT0000001" },
        "shipping_state": { "value": "" },
        "initial_quote": {
          "value": "04ba9004f11f3110f8777d7194f166f6"
        },
        "shipping_street": { "value": "" },
        "shipping_zip": { "value": "" },
        "total_amount": { "value": "USD;1897.2689" },
        "term_month": { "value": "24" },
        "total_upsell_downsell_amount": { "value": "USD;0" },
        "auto_renew": { "value": "false" }
      },
      "ramp": [],
      "lineItems": [],
      "headerRelatedParty": [
        {
          "table": "sn_quote_mgmt_core_quote_related_party",
          "sys_id": {
            "value": "a822ac20740f3690f877229405634411"
          },
          "attributes": {
            "type": {
              "value": "e12455b553716210c6caddeeff7b12d3"
            },
            "seller_organization": { "value": "" },
            "active": { "value": "true" },
            "responsibility": {
              "value": "c7ccc21b65ed1910f87764df53db7725"
            },
            "order": { "value": "20" }
          }
        }
      ]
    }

    Fusion à sélection multiple

    L’exemple suivant extrait les produits vendus avec paliers (plusieurs produits vendus avec un seul palier) et fusionne tous les paliers et toutes les entités dans une structure plane.

    /******** Sold Product to Order - MultiSelectMerge for Ramped SPs ********/ 
    
    var util = new sn_l2c_core.PrimitiveUtil(); 
    var service = util.getPrimitivesEPService('sn_l2c_cust_flows_sp_to_order'); 
    
    var spIDs = 'aedfb2a6e9de4210f8774eb53302a639,28490592cc253210f87793fd12b09a97'; 
    var additionalParams = { 
    "multiSelectMerge": true, 
    "fetchRecordSysIds": [{ 
    "sn_install_base_sold_product_ramp": "5b8c9d9ac429b210f87756e9cf81cc6b" 
    }] 
    }; 
    var SPInstance = service.createInstance(null, spIDs, false, additionalParams); 
    
    gs.info("SPInstance: " + JSON.stringify(SPInstance)); 
    Sortie :
    {
      "ramp": [{"sys_id": {...}}], 
      "lineItems": [{"sys_id": {...}}, {"sys_id": {...}}] 
    }

    LeadtoCashCore : delta(Objet sourceJSON, Objet dirtyJSON, Objet additionalParams)

    Compare les objets JSON source et source modifiés d’une entité prospect-espèces et renvoie un objet JSON qui décrit tous les changements apportés au JSON source, tels que les ajouts, les suppressions ou les modifications.

    Remarque :
    L’include de script LeadtoCashCore nécessite que vous appeliez d’abord le point d’extension scripté PrimitiveUtil() avec la méthode utilitaire pour déclencher l’implémentation LeadtoCashCore : getPrimitivesEPService(String sourceToTargetConfigID, Contexte de l’objet) avant d’appeler delta() dans votre script. Pour chaque flux, obtenez le service une seule fois et utilisez le même service pour toutes les méthodes LeadtoCashCore .

    Pour permettre à delta() d’être invoqué avec uniquement l’ID de configuration de l’entité, définissez le paramètre context.entityConfigIdde chaîne getPrimitivesEPService(), . Si les deux entityConfigId et sourceToTargetConfigID sont réussis, entityConfigId est prioritaire pour exécuter delta().

    Tableau 5. Paramètres
    Nom Type Description
    sourceJSON Objet Objet JSON de l’entité source prospect-espèce.
    Remarque :
    dirtyJSON Objet JSON source modifié de l’entité prospect-espèce.
    additionalParams Objet Facultatif. Paramètres supplémentaires à utiliser.
    additionalParams.delta_ignore_attributes Objet Attributs de table à ignorer lors de la comparaison entre la source et dirtyJSON. Active la prise en charge des cas d’utilisation de reconfiguration.
    {  
    “<table_name>”: [<attribute_name1>, attribute_name2>] 
    }
    additionalParams.delta_ignore_attributes.<table_name> Chaîne Le nom de la table et ses attributs associés à ignorer.

    Par exemple :

    {  
    “sn_install_base_sold_product”: [“state”,”unit_price”]  
    }
    additionalParams.loadDisplayValue Booléen Facultatif. Marqueur indiquant s’il faut charger la valeur d’affichage de chaque attribut.
    Valeurs valides :
    • true : active le chargement de la valeur d’affichage d’un attribut.
    • false : n’active pas le chargement de la valeur d’affichage d’un attribut.

    Valeur par défaut : false

    Tableau 6. Renvoie
    Type Description
    Objet JSON Objet contenant les détails de l’enregistrement d’entité avec tous les changements qui se sont produits entre sourceJSON et dirtyJSON.

    Type de données : objet

    {
    "lineItems": [Array] 
    }
    Éléments de ligne Objet JSON contenant les détails de l’élément de ligne de l’enregistrement d’entité. Par exemple, les éléments de ligne de commande ou les éléments de ligne de devis.

    Type de données : tableau d’objets

    "lineItems": [ 
     {
      "_action": "String",
      "attributes": {Object}
      "characteristics": [Array]
      "lineItems": [Array],
      "sys_id": {Object},
      "table": "String"
     } 
    ]
    lineItems._action Action de changement appliquée à l’élément de ligne du JSON source.
    Valeurs possibles :
    • add : Les informations ont été ajoutées au JSON source.
    • changement : les informations ont été mises à jour dans le JSON source.
    • déconnecter : les informations ont été déconnectées du JSON source.
    • nochange : aucun changement ne s’est produit sur le JSON source.

    Type de données : chaîne

    lineItems.attributes Attributs de l’élément de ligne. Par exemple, le nom et la valeur de l’attribut. Peut contenir des champs variables en fonction de l’entité.

    Type de données : objet

    "attributes": { 
      "<attribute_name>": {Object}
    }
    ÉlémentsLigne.Attributs.<attribute_name> Nom de l’attribut d’élément de ligne. Par exemple, le nom d’un compte ou d’un contact. Peut contenir différents champs de l’entité.

    Type de données : objet

    "attributes": { 
     "<attribute_name>": { 
       "value": "String"
     }
    }
    lineitems.attributs.<attribute_name>.value Valeur de l’attribut d’élément de ligne.

    Type de données : chaîne

    ÉlémentsLigne.attributs.Compte Informations sur le compte associé à l’attribut d’élément.

    Type de données : objet

    "account": { 
      "value": "String" 
    }
    ÉlémentsLigne.attributs.compte.valeur Sys_id du compte associé à l’attribut d’élément de ligne.

    Type de données : chaîne

    lineItems.caractéristiques Caractéristiques de l’élément de ligne. Peut contenir des champs variables en fonction de l’entité.

    Type de données : tableau d’objets

    "characteristics": [  
     {  
      "attributes": {Object},
      "sys_id": {Object},  
      "table": "String"
      }  
    ]
    ÉlémentsLigne.Caractéristiques.Attributs Attributs des caractéristiques de l’enregistrement d’en-tête. Par exemple, le nom et la valeur de l’attribut. Peut contenir des champs variables en fonction de l’entité.

    Type de données : objet

    "attributes": { 
     "<field_name>": { 
     "value": "String"
    }
    ÉlémentsLigne.Caractéristiques.Attributs.<field_name> Nom d’attribut de l’enregistrement de caractéristique associé à l’élément de ligne.

    Type de données : objet

    "<field_name>": { 
      "value": "String" 
    }
    lineitems.caractéristiques.attributs.<field_name>.valeur Valeur de l’attribut appartenant à l’enregistrement de caractéristique d’une entité.

    Type de données : chaîne

    lineItems.characteristics.sys_id Sys_id’objet de l’enregistrement de la caractéristique.

    Type de données : objet

    "sys_id": { 
      "value": "String" 
    }
    lineItems.characteristics.sys_id.valeur Sys_id de l’enregistrement de caractéristique associé. La table mise à jour peut varier d’une entité à l’autre. Par exemple, Ordre [sn_ind_tmt_orm_order].

    Type de données : chaîne

    lineItems.characteristics.table Nom de la table contenant l’enregistrement de caractéristique.

    Type de données : chaîne

    lineItems.ÉlémentsLigne Éléments de ligne enfants d’un élément de ligne parent. Cet objet a le même format que le lineItems paramètre.

    Type de données : tableau d’objets

    "lineItems": [  
     {  
      "_glide_action": "String",
      "attributes": {Object},
      "characteristics": [Array],
      "lineItems": [Array],
      "sys_id": {Object},
      "table": "String"
     } 
    ]
    lineItems.sys_id Sys_id de l’enregistrement de l’élément associé.

    Type de données : objet

    "sys_id": {
      "value": "String"
    }
    lineItems.sys_id.valeur Sys_id d’un enregistrement d’élément associé. La table mise à jour peut varier d’une entité à l’autre, comme Commande ou Spécification. Par exemple, Ordre [sn_ind_tmt_orm_order].

    Type de données : chaîne

    lineItems.table Nom de la table qui contient l’enregistrement d’élément associé à l’entité prospect-espèce.

    Type de données : chaîne

    L’exemple suivant montre comment appeler la méthode delta() en appelant d’abord la méthode utilitaire PrimitiveUtil et getPrimitiesEPService(), puis en fournissant les objets JSON source et cible.

    //Utility to invoke Delta API 
    var util = new sn_l2c_core.PrimitiveUtil();  
     
    //Invoke extension point, picks an implementation based on sourceToTargetConfigID of a L2C flow, the Mapping Config ID  in “sn_l2c_core_entity_mapping” table. 
    var service = util.getPrimitivesEPService('sp_order_macd'); 
     
    //Invoke delta API with required params 
    // sourceJSON can be the output of createInstance or null 
    //dirtyJSON is the modified sourceJSON 
    var deltaOutput= service.delta(sourceJSON, dirtyJSON);  
     
    //Print the returned JSON 
    gs.info(" deltaOutput: "+JSON.stringify(deltaOutput));  
     
    //The returned JSON can be used for subsequent APIs of the flow such as Effect and Commit Instance

    Le JSON de sortie montre que plusieurs éléments de ligne ont été ajoutés au produit de base vendu :

    { 
      "lineItems": [ 
        { 
          "table": "sn_install_base_sold_product", 
          "sys_id": { 
            "value": "-1" 
          }, 
          "attributes": { 
            "name": { 
              "value": "Quadplay Home Tech Hub Bundle" 
            }, 
            "account": { 
              "value": "9e2fd2ee11b43110f877366201dea674" 
            } 
          }, 
          "lineItems": [ 
            { 
              "table": "sn_install_base_sold_product", 
              "sys_id": { 
                "value": "-1" 
              }, 
              "attributes": { 
                "name": { 
                  "value": "Internet and OTT Bundle" 
                }, 
                "account": { 
                  "value": "9e2fd2ee11b43110f877366201dea674" 
                } 
              }, 
              "lineItems": [ 
                { 
                  "table": "sn_install_base_sold_product", 
                  "sys_id": { 
                    "value": "-1" 
                  }, 
                  "attributes": { 
                    "name": { 
                      "value": "Solana Sports streaming channel" 
                    }, 
                    "account": { 
                      "value": "9e2fd2ee11b43110f877366201dea674" 
                    } 
                  }, 
                  "lineItems": [], 
                  "characteristics": [], 
                  "_action": "add" 
                } 
              ], 
              "characteristics": [], 
              "_action": "add" 
            } 
          ], 
          "characteristics": [ 
            { 
              "table": "sn_prd_pm_product_characteristics", 
              "sys_id": { 
                "value": "-1" 
              }, 
              "attributes": { 
                "characteristic_value": { 
                  "value": "" 
                }, 
                "characteristic": { 
                  "value": "4f31999fd0a63110f8770dbf976be178" 
                }, 
                "characteristic_option": { 
                  "value": "4f31999fd0a63110f8770dbf976be179" 
                }, 
                "sold_product": { 
                  "value": "4e03cda2ec873110f87727ef5883a2cf" 
                }, 
                "action": { 
                  "value": "add" 
                } 
              }, 
              "_action": "add" 
            } 
          ], 
          "_action": "add" 
        } 
      ] 
    } 

    Sélection multiple

    L’exemple suivant montre comment former la méthode delta() à sélection multiple en appelant d’abord PrimitiveUtil et getPrimitivesEPService , puis en fournissant les objets JSON source et cible pour plusieurs ID de ligne ou d’en-tête. Pour chaque flux, obtenez le service une seule fois et utilisez le même service pour toutes les méthodes LeadtoCashCore .

    /Utility to invoke Delta API  
    var util = new sn_l2c_core.PrimitiveUtil();   
    
    //Set context variable isMultiSelect true to enable multi-select 
    var context = {"isMultiSelect": true}; 
     
    //Invoke extension point, picks an implementation based on sourceToTargetConfigID of a L2C flow, the Mapping Config ID  in “sn_l2c_core_entity_mapping” table.  
    var service = util.getPrimitivesEPService(‘sn_l2c_cust_flows_sp_to_order’, context);  
      
    //Invoke delta API with required params  
    // sourceJSON can be the output of createInstance for multiple lineIDs or headerIDs or null  
    //dirtyJSON is the modified sourceJSON  
    var deltaOutput= service.delta(sourceJSON, dirtyJSON);   
      
    //Print the returned JSON  
    gs.info(" deltaOutput: "+JSON.stringify(deltaOutput));   
      
    //The returned JSON can be used for subsequent APIs of the flow such as Effect and Commit Instance

    Le JSON de sortie montre que plusieurs éléments de ligne ont été ajoutés au produit de base vendu :

    { 
      "items": [ 
        { 
          "lineItems": [ 
            { 
              "table": "sn_install_base_sold_product", 
              "sys_id": { 
                "value": "4e03cda2ec873110f87727ef5883a2cf" 
              }, 
              "attributes": { 
                "name": { 
                  "value": "Quadplay Home Tech Hub Bundle" 
                }, 
                "account": { 
                  "value": "9e2fd2ee11b43110f877366201dea674" 
                } 
              }, 
              "lineItems": [ 
                { 
                  "table": "sn_install_base_sold_product", 
                  "sys_id": { 
                    "value": "9e0301e2ec873110f87727ef5883a23a" 
                  }, 
                  "attributes": { 
                    "name": { 
                      "value": "Internet and OTT Bundle" 
                    }, 
                    "account": { 
                      "value": "9e2fd2ee11b43110f877366201dea674" 
                    } 
                  }, 
                  "lineItems": [], 
                  "characteristics": [], 
                  "_action": "disconnect" 
                } 
              ], 
              "characteristics": [], 
              "_action": "disconnect" 
            } 
          ] 
        }, 
        { 
          "lineItems": [
            { 
              "table": "sn_install_base_sold_product", 
              "sys_id": { 
                "value": "036a2349284d0210f877b68370fb2e93" 
              }, 
              "attributes": { 
                "name": { 
                  "value": "Quadplay Home Tech Hub Bundle" 
                }, 
                "account": { 
                  "value": "9e2fd2ee11b43110f877366201dea674" 
                } 
              }, 
              "lineItems": [ 
                { 
                  "table": "sn_install_base_sold_product", 
                  "sys_id": { 
                    "value": "4b6a2349284d0210f877b68370fb2e9c" 
                  },
                  "attributes": { 
                    "name": { 
                      "value": "Internet and OTT Bundle" 
                    }, 
                    "account": { 
                      "value": "9e2fd2ee11b43110f877366201dea674" 
                    } 
                  }, 
                  "lineItems": [], 
                  "characteristics": [], 
                  "_action": "disconnect" 
                } 
              ], 
              "characteristics": [], 
              "_action": "disconnect" 
            } 
          ] 
        } 
      ] 
    }

    LeadtoCashCore : effet(Objet sourceJSON, Objet targetJSON, Objet additionalParams)

    Transforme et applique la structure JSON source d’une entité donnée au JSON cible d’une autre entité. Vous pouvez ensuite valider l’entité modifiée dans la base de données à l’aide de la méthode commitInstance().

    Vous pouvez utiliser le JSON de sortie de la méthode delta() dans la requête effect( ). Ensuite, validez n’importe quelle sortie JSON effect() dans la base de données à l’aide de commitInstance() pour terminer le flux de travail prospect-argent.

    Remarque :
    L’include de script LeadtoCashCore nécessite que vous appeliez d’abord le point d’extension scripté PrimitiveUtil() avec la LeadtoCashCore : getPrimitivesEPService(String sourceToTargetConfigID, Contexte de l’objet) méthode utilitaire pour déclencher l’implémentation avant d’appeler effect() dans votre script. Pour chaque flux, obtenez le service une seule fois et utilisez le même service pour toutes les méthodes LeadtoCashCore .
    Tableau 7. Paramètres
    Nom Type Description
    sourceJSON Objet JSON contenant les détails de l’entité source.
    targetJSON Objet JSON contenant les détails de l’entité cible.
    additionalParams Objet Facultatif. Paramètres supplémentaires à utiliser.
    additionalParams.is_future_state Booléen Facultatif. Utilisez cette option pour prendre en charge les cas d’utilisation de reconfiguration.
    Valeurs acceptées :
    • true : fournit des clés de variables de contexte au lieu de noms de champs de dictionnaire. Cela vous permet de fournir tous les attributs de l’entité cible au lieu de mapper les attributs de la source à la cible.
    • false : fournit des noms de champs de dictionnaire.

    Valeur par défaut : false

    Tableau 8. Renvoie
    Type Description
    Objet JSON Changement qui s’est produit et a été appliqué à partir de l’entité source vers l’entité cible Objets JSON dans chacun des en-têtes de l’entité prospect-espèce.

    Type de données : objet

    {
      "_glide_action": "String",
      "_records_count: {Object},
      "_source_object": {Object},
      "lineItems": [Array],
      "sys_id": "String", 
      "table": "String"
    }
    _glide_action Indique le changement qui s’est produit au niveau de l’élément entre le JSON source et le JSON cible.
    Valeurs possibles (sensibles à la casse) :
    • DELETE : les informations ont été supprimées entre les structures JSON source et cible.
    • INSERT : Des informations ont été ajoutées entre les structures JSON source et cible.
    • NO_CHANGE : aucun changement ne s’est produit entre les structures JSON source et cible.
    • MISE À JOUR : Les informations ont été modifiées entre les structures source et JSON.

    Type de données : chaîne

    _records_count Détails des nouveaux enregistrements insérés pour chaque table.

    Type de données : objet

    "_records_count": {
    "tableName": {Object}
    }
    _records_count.nom.table Nom de la table dans laquelle les nouveaux enregistrements sont insérés.

    Type de données : objet

    "tableName": {
          "insert": Number}
    }
    _records_count.nom.table.insérer Nombre de nouveaux enregistrements insérés dans la table.

    Type de données : nombre

    _source_object Objet JSON source auquel les changements ont été appliqués. La structure de l’objet peut varier d’une entité à l’autre.

    Type de données : objet

    "_source_object": { 
      "sys_id": "String",
      "table": "String" 
    }
    _source_object.sys_id Sys_id de l’enregistrement d’entité source qui a été mis à jour.

    Type de données : chaîne

    _source_object.table Emplacement de la table de l’enregistrement d’entité source qui a été mis à jour. Cette valeur peut varier d’une entité à l’autre.

    Type de données : chaîne

    lineItems._glide_action Action de changement qui s’est produite sur l’élément de ligne.
    Valeurs possibles :
    • DELETE : les informations ont été supprimées entre les structures JSON source et cible.
    • INSERT : Des informations ont été ajoutées entre les structures JSON source et cible.
    • NO_CHANGE : aucun changement ne s’est produit entre les structures JSON source et cible.
    • MISE À JOUR : Les informations ont été modifiées entre les structures source et JSON.

    Type de données : chaîne

    lineItems._source_object Détails de l’enregistrement d’entité source auquel le _glide_action a été appliqué. Cet objet peut varier d’une entité à l’autre.

    Type de données : objet

    "_source_object": { 
      "sys_id": "String",
      "table": "String" 
    }
    lineItems._source_object.sys_id Sys_id de l’enregistrement d’entité source qui a été mis à jour.

    Type de données : chaîne

    lineItems._source_object.table Emplacement de la table de l’enregistrement d’entité source qui a été mis à jour. Cette valeur peut varier d’une entité à l’autre.

    Type de données : chaîne

    lineItems._state État de l’entité.

    Type de données : objet

    "_state": {  
     "value": "String" 
    } 
    lineItems._state.valeur État actuel de l’entité.
    Valeurs possibles :
    • actif : l’objet d’entité est dans un état actif.
    • inactif : l’objet d’entité n’est pas dans un état actif.

    Type de données : chaîne

    lineItems.attributes Attributs de l’élément de ligne. Par exemple, le nom et la valeur de l’attribut. Peut contenir des champs variables en fonction de l’entité.

    Type de données : objet

    "attributes": { 
      "<attribute_name>": {Object}
    }
    ÉlémentsLigne.Attributs.<attribute_name> Nom de l’attribut d’élément de ligne. Par exemple, le nom d’un compte ou d’un contact. Peut contenir différents champs de l’entité.

    Type de données : objet

    "attributes": { 
     "<attribute_name>": { 
       "value": "String"
     }
    }
    lineitems.attributs.<attribute_name>.value Valeur de l’attribut d’élément de ligne.

    Type de données : chaîne

    ÉlémentsLigne.attributs.Compte Informations sur le compte associé à l’attribut d’élément.

    Type de données : objet

    "account": { 
      "value": "String" 
    }
    ÉlémentsLigne.attributs.compte.valeur Sys_id du compte associé à l’attribut d’élément de ligne.

    Type de données : chaîne

    lineItems.attributes.short_description Brève description de l’attribut d’élément de ligne.

    Type de données : chaîne

    lineItems.caractéristiques Liste des caractéristiques associées à l’élément de ligne. Les caractéristiques peuvent varier d’une entité à l’autre.

    Type de données : tableau d’objets

    "characteristics": [  
     {
      "_glide_action: "String",
      "attributes": {Object},
      "sys_id": {Object},  
      "table": "String"
     }  
    ]
    lineItems.characteristics._glide_action Action de changement qui s’est produite sur l’élément de ligne.
    Valeurs possibles :
    • DELETE : les informations ont été supprimées entre les structures JSON source et cible.
    • INSERT : Des informations ont été ajoutées entre les structures JSON source et cible.
    • NO_CHANGE : aucun changement ne s’est produit entre les structures JSON source et cible.
    • MISE À JOUR : Les informations ont été modifiées entre les structures source et JSON.

    Type de données : chaîne

    ÉlémentsLigne.Caractéristiques.Attributs Un ou plusieurs objets contenant des informations sur les attributs associés à l’enregistrement de caractéristique.

    Par exemple, cet objet peut contenir des références à l’sys_id de l’enregistrement d’attributs, à des enregistrements de caractéristiques associés, à des comptes ou contacts, à des enregistrements d’options de caractéristiques ou à des informations sur les produits vendus.

    Type de données : objet

    "attributes": {
      "<attribute_type>": {Object}
    }
    ÉlémentsLigne.Caractéristiques.Attributs.<attribute_type> Type d’attribut. Cette valeur peut contenir différentes valeurs en fonction des enregistrements ou des fonctionnalités associés à la caractéristique.

    Type de données : objet

    "<attribute_type>": {
      "value": "String"
    }
    lineItems.caractéristiques.attributs.<attribute_type>.valeur Valeur de l’attribut d’élément de ligne.

    Type de données : chaîne

    ÉlémentsLigne.Caractéristiques.Attributs.<field_name> Nom d’attribut de l’enregistrement de caractéristique associé à l’élément de ligne.

    Type de données : objet

    "<field_name>": { 
      "value": "String" 
    }
    lineitems.caractéristiques.attributs.<field_name>.valeur Valeur de l’attribut appartenant à l’enregistrement de caractéristique d’une entité.

    Type de données : chaîne

    lineItems.characteristics.sys_id Sys_id de l’enregistrement de caractéristique associé.

    Type de données : objet

    "sys_id": { 
      "value": "String" 
     }
    lineItems.characteristics.sys_id.valeur Sys_id de l’enregistrement de caractéristique associé. La table mise à jour peut varier d’une entité à l’autre. Par exemple, Ordre [sn_ind_tmt_orm_order].

    Type de données : chaîne

    lineItems.characteristics.table Nom de la table contenant l’enregistrement de caractéristique.

    Type de données : chaîne

    lineItems.ÉlémentsLigne Éléments de ligne enfants d’un élément de ligne parent. Cet objet a le même format que le lineItems paramètre.

    Type de données : tableau d’objets

    "lineItems": [  
     {  
      "_glide_action": "String",
      "attributes": {Object},
      "characteristics": [Array],
      "lineItems": [Array],
      "sys_id": {Object},
      "table": "String"
     } 
    ]
    lineItems.sys_id Sys_id de l’enregistrement de l’élément associé.

    Type de données : objet

    "sys_id": {
      "value": "String"
    }
    lineItems.sys_id.valeur Sys_id d’un enregistrement d’élément associé. La table mise à jour peut varier d’une entité à l’autre, comme Commande ou Spécification. Par exemple, Ordre [sn_ind_tmt_orm_order].

    Type de données : chaîne

    lineItems.table Nom de la table qui contient l’enregistrement d’élément associé à l’entité prospect-espèce.

    Type de données : chaîne

    sys_id Sys_id de l’entité.

    Type de données : chaîne

    Table Nom de la table dans laquelle se trouve l’entité.

    Type de données : chaîne

    L’exemple suivant montre comment appliquer une logique de transformation à l’aide de la sortie de la méthode delta() :
    Remarque :
    Le même script s’applique aux cas d’utilisation à sélection unique et à sélection multiple, car seul le format JSON source change et la sortie reste la même pour les deux. Pour les cas d’utilisation à sélection multiple, un en-tête unique est créé avec tous les éléments de ligne ajoutés au même en-tête.
    //Utility to invoke effect API 
    var util = new sn_l2c_core.PrimitiveUtil();  
     
    //Invoke extension point, picks an implementation based on sourceToTargetConfigID of a L2C flow, the Mapping Config ID  in “sn_l2c_core_entity_mapping” table. 
    var service = util.getPrimitivesEPService('sp_order_macd'); 
     
    //Invoke effect API with required params 
    var effectOutput = service.effect(deltaOutput, null); 
     
    //Print the returned JSON 
    gs.info("effectOutput: " + JSON.stringify(effectOutput)); 
     
    //The returned JSON can be used in the subsequent commitInstance() method.

    Sortie :

    { 
      "sys_id": "-1", 
      "table": "sn_ind_tmt_orm_order", 
      "_glide_action": "INSERT", 
      "_source_object": {}, 
      "lineItems": [ 
        { 
          "sys_id": "-1", 
          "table": "sn_ind_tmt_orm_order_line_item", 
          "attributes": { 
            "account": { 
              "value": "9e2fd2ee11b43110f877366201dea674" 
            }, 
            "short_description": { 
              "value": "Quadplay Home Tech Hub Bundle" 
            } 
          }, 
          "_glide_action": "INSERT", 
          "_source_object": { 
            "sys_id": "-1", 
            "table": "sn_install_base_sold_product" 
          }, 
          "lineItems": [ 
            { 
              "sys_id": "-1", 
              "table": "sn_ind_tmt_orm_order_line_item", 
              "attributes": { 
                "account": { 
                  "value": "9e2fd2ee11b43110f877366201dea674" 
                }, 
                "short_description": { 
                  "value": "Internet and OTT Bundle" 
                } 
              }, 
              "_glide_action": "INSERT", 
              "_source_object": { 
                "sys_id": "-1", 
                "table": "sn_install_base_sold_product" 
              }, 
              "lineItems": [ 
                { 
                  "sys_id": "-1", 
                  "table": "sn_ind_tmt_orm_order_line_item", 
                  "attributes": { 
                    "account": { 
                      "value": "9e2fd2ee11b43110f877366201dea674" 
                    }, 
                    "short_description": { 
                      "value": "Solana Sports streaming channel" 
                    } 
                  }, 
                  "_glide_action": "INSERT", 
                  "_source_object": { 
                    "sys_id": "-1", 
                    "table": "sn_install_base_sold_product" 
                  }, 
                  "lineItems": [], 
                  "characteristics": [] 
                } 
              ], 
              "characteristics": [] 
            } 
          ], 
          "characteristics": [ 
            { 
              "sys_id": "-1", 
              "table": "sn_ind_tmt_orm_order_characteristic_value", 
              "attributes": { 
                "characteristic_option": { 
                  "value": "4f31999fd0a63110f8770dbf976be179" 
                }, 
                "characteristic": { 
                  "value": "4f31999fd0a63110f8770dbf976be178" 
                }, 
                "characteristic_option_value": { 
                  "value": "" 
                } 
              }, 
              "_glide_action": "INSERT", 
              "_source_object": { 
                "sys_id": "-1", 
                "table": "sn_prd_pm_product_characteristics" 
              } 
            } 
          ] 
        }, 
      "_state": {
          "value": "active"
    }
       ],
      "_records_count":
        {
            "sn_ind_tmt_orm_order":
            {
                "insert": 1
            },
            "sn_ind_tmt_orm_order_line_item":
            {
                "insert": 3
            },
            "sn_ind_tmt_orm_order_characteristic_value":
            {
                "insert": 1
            }
        }
    }

    LeadtoCashCore : commitInstance(Objet, targetJSON, Objet, additionalParams)

    Valide le JSON d’une entité prospect-espèces donnée pour l’instance, renvoie un message d’état avec des informations mises à jour et, par conséquent, met à jour la table d’entité de base prospect-espèce.

    Remarque :
    L’include de script LeadtoCashCore nécessite que vous appeliez d’abord le point d’extension scripté PrimitiveUtil() avec la LeadtoCashCore : getPrimitivesEPService(String sourceToTargetConfigID, Contexte de l’objet) méthode utilitaire pour déclencher le do avant d’appeler commitInstance() dans votre script. Pour chaque flux, devenez le seul service et utilisez le même service pour toutes les méthodes LeadtoCashCore .

    À partir de la version de stockage de mars 2026 (v1.8), la méthode commitInstance() renvoie actuellement une structure dataObject qui regroupe toutes les entités racines par type (par exemple, lineItems et ramp), ce qui permet aux développeurs d’accéder de manière fiable aux produits vendus et à leurs paliers associés à partir d’une réponse d’un seul commit.

    Tableau 9. Paramètres
    Nom Type Description
    targetJSON Objet Objet JSON contenant le « glide_action » d’une entité cible à valider. Vous pouvez passer la sortie de la méthode effect() ici.
    Remarque :
    « glide_action » identifie l’action de changement qui s’est produite entre le JSON source et le JSON cible d’une entité prospect-espèces.
    additionalParams Objet Facultatif. Paramètres supplémentaires à utiliser.
    additionalParams.useNumberGenerator Booléen Facultatif. Marqueur indiquant s’il faut générer des sys_numbers en bloc.
    Valeurs applicables :
    • vrai : générer les sys_numbers en bloc à utiliser pendant le processus d’insertion de l’enregistrement. Réduit le besoin de requêtes supplémentaires pour extraire des numéros et diminue le temps d’insertion.
    • incorrect : générer les sys_number individuellement au moment de l’insertion pour chaque enregistrement.

    Par défaut : incorrect

    Tableau 10. Renvoie
    Type Description
    Objet JSON Détails sur l’enregistrement d’entité cible.

    Type de données : objet

    {
      "dataObject": {Object},
      "displayMessage": "String",
      "error": "String",
      "headerID": "String",
      "message": "String",
      "rootLineIDs": [Array],
      "status": "String"
    }
    Remarque :
    headerIDn’est présent que pour les entités d’en-tête, rootLineIDs ne sont présents que pour les entités sans en-tête. dataObject, , displayMessage, errormessage, et status sont toujours présents.
    Objet de données Objet JSON contenant des données détaillées sur les opérations de validation effectuées à chaque niveau.
    Remarque :
    À partir de la version du magasin de mars 2026, le dataObject champ accumule actuellement tous les types d’entité racine par leurs clés typeValue (par exemple, lineItems, ramp), en préservant les données de toutes les entités racines.

    Type de données : objet

    Structure lorsque l’entité a un en-tête :
    dataObject: {
      "sys_id": "String",
      "table": "String",
      "attributes": {Object},
      "_glide_action": "String",
      "_source_object": {Object},
      "_commitObjectInfo": {Object},
      "lineItems": [Array],
      "ramp": [Array],
      "headerRelatedParty": [Array],
      "characteristics": [Array]
    }
    dataObject._commitObjectInfo Valider l’état et sys_id si le changement d’élément de ligne est une action ENGAGE.

    Type de données : objet

    "_commitObjectInfo": {
      "status": "String",
      "sys_id": "String"
    }
    dataObject.ramp Représente le(s) groupe(s) de paliers associé(s) à un en-tête ou à un matériel vendu.

    Tableau d'objets

    "ramp": { 
      "sys_id": "String",  
      "table": "String", 
      "attributes": {Object} 
    }
    dataObject.ramp.sys_id Sys_id de la rampe. Fournir des ID de palier sans le mappage parent est considéré comme une entrée non valide pour les schémas sans en-tête et à sélection multiple.

    Type de données : chaîne

    donnéesObjet.rampe.table Nom de table de l’entité de palier associée à la matière vendue ou à l’en-tête validé. Par exemple, « sn_install_base_sold_product_ramp ».

    Type de données : chaîne

    donnéesObjet.rampe.attribut Attributs de la rampe.

    Type de données : objet

    "attributes": { 
      "end_date": String,
      "parent": String,
      "parent_table": String,
      "ramp_type": String,
      "start_date": String,
      "status": String,
      "term": String
    }
    dataObject.ramp.attribute.parent Sys_id de l’attribut parent de la rampe.

    Type de données : chaîne

    dataObject.ramp.attribute.parent_table Emplacement dans la table de l’attribut. Par exemple, table_name.

    Type de données : chaîne

    dataObject.ramp.attribute.ramp_type Type de rampe.
    Valeurs possibles :
    • Trimestriel
    • Annuel
    • Personnalisé

    Type de données : chaîne

    dataObject.ramp.attribute.term Terme.

    Type de données : chaîne

    dataObject.ramp.attribute.start_date Date de début de la palière.

    Type de données : chaîne

    dataObject.ramp.attribute.end_date Date de fin de l’aire de trafic.

    Type de données : chaîne

    dataObject._commitObjectInfo.état État de l’opération de validation exécutée sur l’entité particulière.
    Valeurs possibles :
    • réussite : l’opération de validation de l’entité était correcte.
    • si... not : l’opération de validation de l’entité n’était pas correcte.

    Type de données : chaîne

    dataObject._commitObjectInfo.sys_id Sys_id de l’enregistrement inséré. La méthode renvoie ce paramètre uniquement si le dataObject._glide_action est ENGAGE. La table mise à jour peut changer d’une entité à l’autre. Par exemple, Ordre [sn_ind_tmt_orm_order].

    Type de données : chaîne

    dataObject._glide_action Action de changement qui s’est produite sur l’élément de ligne.
    Valeurs possibles :
    • SUPPRIMER : les informations ont été supprimées entre les structures JSON source et cible.
    • ENGAGE : Des informations ont été ajoutées entre les structures JSON source et cible.
    • NO_CHANGE : aucun changement ne s’est produit entre les structures JSON source et cible.
    • MISE À JOUR : Les informations ont été modifiées entre les structures source et cible.

    Type de données : chaîne

    dataObject._source_object Objet JSON source auquel les changements ont été appliqués. La structure de l’objet peut changer d’une entité à l’autre.

    Type de données : objet

    "_source_object": {
      "sys_id": "String", 
      "table": "String” 
    }
    dataObject._source_object.sys_id Sys_id de l’enregistrement d’entité source auquel le _glide_action a été appliqué. La table mise à jour peut changer d’une entité à l’autre. Par exemple, Ordre [sn_ind_tmt_orm_order].

    Type de données : chaîne

    dataObject._source_object.table Nom de la table qui contient l’enregistrement de l’entité source auquel le _glide_action a été appliqué. Cela peut changer d’une entité à l’autre.

    Type de données : chaîne

    donnéesObjet.Éléments de ligne Détails d’élément de ligne de l’enregistrement d’entité. Par exemple, commander des éléments de ligne ou donner des éléments de ligne.

    Type de données : tableau d’objets

    "lineItems": [ 
    { 
      "_action": "String",
      "_commitObjectInfo": {Object},
      "_glide_action": "String",
      "_source_object": {Object},
      "_state": "String",
      "attributes": {Object},
      "characteristics": [Array],
      "lineItems": [Array],
      "sys_id": {Object},
      "table": "String",
    }
    ]
    dataObject.lineItems._action Action de changement appliquée à l’élément de ligne du JSON source.
    Valeurs possibles :
    • add : Les informations ont été ajoutées au JSON source.
    • changement : les informations ont été mises à jour dans le JSON source.
    • déconnecter : les informations ont été déconnectées du JSON source.
    • nochange : aucun changement ne s’est produit sur le JSON source.

    Type de données : chaîne

    dataObject.lineItems._commitObjectInfo Renvoyé si le changement d’élément de ligne est une action ENGAGE . Possède l’état de validation et le sys_id de l’objet.

    Type de données : objet

    "_commitObjectInfo": { 
      "status": "String", 
      "sys_id": "String" 
    }
    dataObject.lineItems._commitObjectInfo.état État de l’opération de validation exécutée sur l’entité particulière.
    Valeurs possibles :
    • réussite : l’opération de validation de l’entité était correcte.
    • si... not : l’opération de validation de l’entité n’était pas correcte.

    Type de données : chaîne

    dataObject.lineItems._commitObjectInfo.sys_id Sys_id de l’enregistrement inséré. La table mise à jour peut changer d’une entité à l’autre. Par exemple, Ordre [sn_ind_tmt_orm_order].

    Type de données : chaîne

    dataObject.lineItems._glide_action Action de changement qui s’est produite sur l’élément de ligne.
    Valeurs possibles :
    • DELETE : les informations ont été supprimées entre les structures JSON source et cible.
    • INSERT : Des informations ont été ajoutées entre les structures JSON source et cible.
    • NO_CHANGE : aucun changement ne s’est produit entre les structures JSON source et cible.
    • MISE À JOUR : Les informations ont été modifiées entre les structures source et JSON.

    Type de données : chaîne

    dataObject.lineItems._source_object Détails de l’enregistrement d’entité source auquel le _glide_action a été appliqué. Cet objet peut varier d’une entité à l’autre.

    Type de données : objet

    "_source_object": { 
      "sys_id": "String",
      "table": "String" 
    }
    dataObject.lineItems._source_object.sys_id Sys_id de l’enregistrement d’entité source auquel le _glide_action a été appliqué.

    Type de données : chaîne

    dataObject.lineItems._source_object.table Nom de la table de l’enregistrement d’entité source auquel le _glide_action a été appliqué.

    Type de données : chaîne

    dataObject.lineItems._state Condition de l’objet.
    Valeurs possibles :
    • actif : l’objet d’entité est dans un état actif.
    • inactif : l’objet entité n’est pas dans un état actif.

    Type de données : chaîne

    donnéesObjet.ÉlémentsLigne.attributs Attributs de l’élément de ligne. Par exemple, le nom et la valeur de l’attribut. Peut contenir des champs variables en fonction de l’entité.

    Type de données : objet

    "attributes": { 
      "<attribute_name>": {Object}
    }
    donnéesObjet.ÉlémentsLigne.attributs.<attribute_name> Nom de l’attribut d’élément de ligne. Par exemple, le nom d’un compte ou d’un contact. Peut contenir différents champs de l’entité.

    Type de données : objet

    "attributes": { 
     "<attribute_name>": { 
       "value": "String"
     }
    }
    donnéesObjet.ÉlémentsLigne.attributs.<attribute_name>.valeur Valeur de l’attribut d’élément de ligne.

    Type de données : chaîne

    donnéesObjet.ÉlémentsLigne.caractéristiques Liste des caractéristiques associées à l’élément de ligne. Les caractéristiques peuvent varier d’une entité à l’autre.

    Type de données : tableau d’objets

    "characteristics": [  
     {
      "_glide_action: "String",
      "attributes": {Object},
      "sys_id": {Object},  
      "table": "String"
     }  
    ]
    dataObject.lineItems.characteristics._glide_action Action de changement qui s’est produite sur l’élément de ligne.
    Valeurs possibles :
    • DELETE : les informations ont été supprimées entre les structures JSON source et cible.
    • INSERT : Des informations ont été ajoutées entre les structures JSON source et cible.
    • NO_CHANGE : aucun changement ne s’est produit entre les structures JSON source et cible.
    • MISE À JOUR : Les informations ont été modifiées entre les structures source et JSON.

    Type de données : chaîne

    donnéesObjet.ÉlémentsLigne.Caractéristiques.attributs Un ou plusieurs objets contenant des informations sur les attributs associés à l’enregistrement de caractéristique.

    Par exemple, cet objet peut contenir des références à l’sys_id de l’enregistrement d’attributs, à des enregistrements de caractéristiques associés, à des comptes ou contacts, à des enregistrements d’options de caractéristiques ou à des informations sur les produits vendus.

    Type de données : objet

    "attributes": {
      "<attribute_type>": {Object}
    }
    dataObject.lineItems.characteristics.attributes.<attribute_type> Nom de l’attribut de qualité. Peut contenir différents champs de l’entité.

    Type de données : objet

    "<attributes_type>": { 
     "<attribute_name>": {Object}
    }
    donnéesObjet.ÉlémentsLigne.Caractéristiques.attributs.<attribute_type>.<attribute_name> Nom de l’attribut de qualité.

    Type de données : objet

    "<attribute_name>": { 
     "value": "String"
    }
    donnéesObjet.ÉlémentsLigne.Caractéristiques.attributs.<attribute_type>.<attribute_name>.valeur Valeur de l’attribut d’élément de ligne.

    Type de données : chaîne

    dataObject.lineItems[0].characteristics.sys_id Sys_id de l’enregistrement de caractéristique associé.

    Type de données : objet

    "sys_id": { 
      "value": "String" 
     }
    dataObject.lineItems[0].characteristics.sys_id.value Sys_id de l’enregistrement de caractéristique associé. La table mise à jour peut varier d’une entité à l’autre. Par exemple, Ordre [sn_ind_tmt_orm_order].

    Type de données : chaîne

    donnéesObjet.ÉlémentsLigne[0].characteristics.table Nom de la table contenant l’enregistrement de caractéristique.

    Type de données : chaîne

    dataObject.lineItems[0].lineItems Éléments de ligne enfants d’un élément de ligne parent. Cet objet a le même format que le lineItems paramètre.

    Type de données : tableau d’objets

    "lineItems": [  
     {  
      "_glide_action": "String",
      "attributes": {Object},
      "characteristics": [Array],
      "lineItems": [Array],
      "sys_id": {Object},
      "table": "String"
     } 
    ]
    dataObject.lineItems[0].sys_id Sys_id de l’enregistrement de l’élément associé.

    Type de données : objet

    "sys_id": {
      "value": "String"
    }
    dataObject.lineItems[0].sys_id.value Sys_id d’un enregistrement d’élément associé. La table mise à jour peut varier d’une entité à l’autre, comme Commande ou Spécification. Par exemple, Ordre [sn_ind_tmt_orm_order].

    Type de données : chaîne

    dataObject.lineItems[0].table Nom de la table qui contient l’enregistrement d’élément associé à l’entité prospect-espèce.

    Type de données : chaîne

    dataObject.sys_id Sys_id de l’enregistrement de l’élément de ligne associé. La table mise à jour peut changer d’une entité à l’autre. Par exemple, Ordre [sn_ind_tmt_orm_order].

    Type de données : chaîne

    dataObject.table Nom de la table qui contient l’enregistrement de l’entité prospect-espèce.

    Type de données : chaîne

    displayMessage Message affiché par l’utilisateur dans l’interface utilisateur. Le message d’affichage est identique à la valeur de chaîne message .

    Type de données : chaîne

    erreur Message d’erreur décrivant le... pas de la méthode commitInstance . Si la demande est correcte, ce paramètre renvoie une chaîne vide.

    Type de données : chaîne

    ID d’en-tête Requis uniquement pour les entités avec un en-tête. Sys_id de l’enregistrement d’entité cible créé ou mis à jour par la méthode commitInstance .

    Stocké dans : la table connexe en fonction du type d’entité, comme le matériel vendu, la commande, et ainsi de suite.

    Type de données : chaîne

    message Message décrivant les scénarios de réussite, d’erreur ou de partially_success. Ce message est identique à la valeur string displayMessage et peut être utilisé par d’autres appels apply à l’API.

    Type de données : chaîne

    ID racine de ligne Requis uniquement pour les entités sans en-tête. Liste séparée par des virgules des sys_ids des enregistrements d’entité cible insérés, mis à jour ou supprimés par la méthode commitInstance .

    Stocké dans : la table connexe en fonction du type d’entité, comme le matériel vendu, la commande, et ainsi de suite.

    Type de données : tableau de chaînes

    statut Message d’état confirmant la réussite de la validation.

    Valeurs possibles :

    • success : la validation était correcte.
    • si... not : l’opération Glide de ligne racine ou d’en-tête inutilisable. Relancez le flux d’API LeadtoCashCore .
    • partial_success : Des échecs se sont produits lors du traitement de l’ensemble du JSON. Reportez-vous aux journaux de traitement pour résoudre les erreurs spécifiques.

    Type de données : chaîne

    L’exemple suivant montre comment utiliser chaque méthode LeadtoCashCore pour récupérer, appliquer et valider les détails d’une entité source-cible. Dans cet exemple, la méthode commitInstance() est utilisée pour valider le JSON modifié dans une entité prospect-espèces sur l’instance.

    //Utility to invoke commitInstance API 
    var util = new sn_l2c_core.PrimitiveUtil();  
     
    //Invokes the PrimitiveUtil extension point, picks an implementation based on sourceToTargetConfigID of a Lead to Cash (L2C) flow. The Mapping Config ID  in “sn_l2c_core_entity_mapping” table. 
    var service = util.getPrimitivesEPService('sp_order_macd'); 
     
    //Invoke commitInstance API with the required params
    var effectOutput = service.effect(sourceInstance);
     
    //Print the returned JSON 
    gs.info("commitOutput: "+JSON.stringify(commitOutput));  
    

    Sortie :

    {
      "status": "success",
      "error": "",
      "message": "Commit operation successfully processed.",
      "displayMessage": "Commit operation successfully processed.",
      "dataObject": {
        "sys_id": "-1",
        "table": "sn_ind_tmt_orm_order",
        "_glide_action": "INSERT",
        "_source_object": {},
        "lineItems": [
          {
            "sys_id": "-1",
            "table": "sn_ind_tmt_orm_order_line_item",
            "attributes": {
              "account": {
                "value": "86837a386f0331003b3c498f5d3ee4ca"
              },
              "sold_product": {
                "value": "e4bbf902b7343300ece839a6ee11a937"
              },
              "short_description": {
                "value": "Network Monitoring"
              }
            },
            "_glide_action": "INSERT",
            "_source_object": {
              "sys_id": "e4bbf902b7343300ece839a6ee11a937",
              "table": "sn_install_base_sold_product"
            },
            "lineItems": [
              {
                "sys_id": "-1",
                "table": "sn_ind_tmt_orm_order_line_item",
                "attributes": {
                  "account": {
                    "value": "86837a386f0331003b3c498f5d3ee4ca"
                  },
                  "sold_product": {
                    "value": "23dbbd02b7343300ece839a6ee11a98e"
                  },
                  "short_description": {
                    "value": "Remote Monitoring"
                  }
                },
                "_glide_action": "INSERT",
                "_source_object": {
                  "sys_id": "23dbbd02b7343300ece839a6ee11a98e",
                  "table": "sn_install_base_sold_product"
                },
                "lineItems": [],
                "characteristics": [],
                "coveredProducts": [],
                "_commitObjectInfo": {
                  "sys_id": "d2d5b868488d5610f877a23d5db8922f",
                  "status": "success"
                }
              }
            ],
            "characteristics": [],
            "coveredProducts": [],
            "_commitObjectInfo": {
              "sys_id": "92d5b868488d5610f877a23d5db89229",
              "status": "success"
            }
          }
        ],
        "_commitObjectInfo": {
          "sys_id": "46d5b0a4488d5610f877a23d5db892ef",
          "status": "success"
        }
      },
      "headerID": "46d5b0a4488d5610f877a23d5db892ef",
      "rootLineIDs": [
        "92d5b868488d5610f877a23d5db89229"
      ]
    }
    Le script suivant montre comment récupérer des rampes sans en-tête à l’aide fetchRecordSysIdsde . Dans ce scénario, vous avez un matériau vendu, il est sans en-tête et vous souhaitez que le JSON inclue les données de paliers en transmettant le sys_id de paliers via fetchRecordSysIds. Nous voulons que la sortie soutienne à la fois le matériel vendu (lineItems) et les enregistrements de paliers (rampe).
    Remarque :
    Pour les entités sans en-tête, les paliers sont renvoyés UNIQUEMENT lorsque les sys_ids de paliers sont fournis via fetchRecordSysIds.
    
    var util = new sn_l2c_core.PrimitiveUtil();
    
    // Extension point for SP → Order flow (example from uptake doc)
    var service = util.getPrimitivesEPService('sn_l2c_cust_flows_sp_to_order');
    
    // Parent Sold Product sys_id
    var spID = 'aedfb2';
    
    // Ramp sys_id that should be included in output
    var rampID = '8565f'; 
    
    // NEW: additionalParams.fetchRecordSysIds (selective record fetch)
    var additionalParams = {
      "fetchRecordSysIds": [{
        "sn_install_base_sold_product": spID,
        "sn_install_base_sold_product_ramp": rampID
      }]
    };
    
    // createInstance: headerId = null for no-header entities
    var sourceInstance = service.createInstance(null, spID, false, additionalParams);
    gs.info("createInstance output: " + JSON.stringify(sourceInstance));
    
    /*
     * Expected high-level output shape (no-header):
     * {
     *   "ramp": [ { "sys_id": "...", "attributes": {...} } ],
     *   "lineItems": [ { "sys_id": "...", "attributes": {...} } ]
     * }
     */ 
    
    
    // ---- Typical next steps in Primitives flow (delta/effect/commit) ----
    // In a real flow you usually have a target instance too.
    // For illustration we reuse the same structure as a placeholder.
    var targetInstance = sourceInstance;
    
    // Compute changes -> effect -> commit
    var effectOutput = service.effect(sourceInstance);
    var commitOutput = service.commitInstance(effectOutput);
    
    gs.info("commitInstance output: " + JSON.stringify(commitOutput));
    
    /*
     * In no-header scenarios, commitInstance returns dataObject that groups
     * root entity types (ex: lineItems, ramp) instead of a single root.
     */
    L’exemple de script suivant montre comment utiliser multiSelectMerge(via la méthode createInstance( ) pour fusionner toutes les entités de rampes ensemble, liées, dans une structure plate pour les scénarios sans en-tête. Dans ce scénario, vous avez de nombreux produits vendus, vous souhaitez les traiter comme une charge utile combinée dans des opérations de type MACD et souhaitez que tous les éléments de ligne soient fusionnés ainsi que toutes les paliers fusionnés dans une structure plane.
    Remarque :
    multiSelectMerge est uniquement destiné aux scénarios sans en-tête.
    /***************************************************************
     * Goal: createInstance returns a flat structure:
     *   - lineItems: [ ...all selected SPs... ]
     *   - ramp:     [ ...all ramps... ]
     */
    
    var util = new sn_l2c_core.PrimitiveUtil();
    var service = util.getPrimitivesEPService('sn_l2c_cust_flows_sp_to_order');  
    
    // Multiple SPs selected
    var spIDs = 'aedfb2,28490592';  
    
    // Selective ramp sys_id(s) to include (merged output)
    var rampID = '5b8c9d9';  
    
    var additionalParams = {
      "multiSelectMerge": true,
      "fetchRecordSysIds": [{
        "sn_install_base_sold_product_ramp": rampID
      }]
    };  
    
    var mergedInstance = service.createInstance(null, spIDs, false, additionalParams);
    gs.info("Merged createInstance output: " + JSON.stringify(mergedInstance));
    
    /*
     * Expected high-level output shape for merge:
     * {
     *   "ramp":     [ { ... }, { ... } ],
     *   "lineItems":[ { ... }, { ... } ]
     * }
     */  
    
    
    // Optional: Commit example (same pattern)
    var effectOutput = service.effect(mergedInstance);
    var commitOutput = service.commitInstance(effectOutput);
    gs.info("commitInstance output: " + JSON.stringify(commitOutput));