Modifier un enregistrement
Modifier un enregistrement
Pour créer ou modifier un enregistrement dans YellowBox, il faut utiliser le service /record/v3
.
Un record correspond à un enregistrement d’une table dans YellowBox.
Il faut effectuer une requête POST à l’url https://<yellowbox_url>/ws/record/v3
avec en body un objet JSON ImportRecord. Cet objet est décrit dans la documentation Swagger comme suit :
{
"record": {
"id": "string",
"table": {
"id": "string",
"name": "string"
},
"values": [
{
"field": {
"id": "string",
"name": "string",
"dbName": "string",
"keywordListId": "string",
"fieldType": "ALPHANUMERIQUE"
},
"value": "string",
"operator": "EQUAL"
}
],
"linkedRecords": [
{
"fieldId": "string",
"idRecord": "string",
"calculated": false
}
]
},
"fieldIdDuplicateManager": "string",
"typeImport": 0
}
Il faut spécifier un id uniquement si l’on souhaite modifier un Record (pas en création).
L’objet table correspond à une table dans YellowBox, par exemple la table Société, id : “104”.
Un record est composé d’une liste de “values”, qui est composé d’un objet “field”, d’une valeur et d’un opérateur non utilisé dans ce contexte.
Un field est un champ dans YellowBox, par exemple le champ raison sociale de la table Société, id : “107”, name : “raisonsociale”, dbName : “RAISONSOCIALE”, fieldType : “ALPHANUMERIQUE”. keywordListId correspond à l’id d’une liste de mot clé si le champ renseigné est de ce type non utilisé dans ce contexte.
La value correspond à la valeur du champ précédemment défini et l’opérator est utilisé dans le services des recherches (voir ici).
L’objet linkedRecords (enregistrements liés) est utilisé lors de la récupération d’un record uniquement. Il ne sera pas traité en création ou en mise à jour.
fieldIdDuplicateManager permet de spécifier un id de champ utilisé pour le dédoublonnage des enregistrements. Si non spécifié, ce sont les champs de dédoublonnages de YellowBox par défaut.
typeImport correspond au type d’import de données dans YellowBox ; il peut prendre les valeurs suivantes :
- 0 : Création et mise à jour de tous les champs
- 1 : Création et mise à jour des champs vides
- 2 : Création sans mise à jour
- 3 : Mise à jour sans création
- 4 : Création (table principale uniquement) et mise à jour de tous les champs
- 5 : Création (table principale uniquement) et mise à jour des champs vides
- 6 : Création (table principale uniquement) sans mise à jour
- 7 : Suppression des fiches de la table principale
Par défaut le typeImport est à 0.
Le service de création ou de mise à jour d’un record renvoie l’id de l’élément créé ou modifié.
Exemple
Pour créer une société dont la raison sociale est “DIMO SOFTWARE” et dont le type commercial est “Concurrent”, le body de la requête sera :
{
"record": {
"table": {
"id": "104",
"name": "societe"
},
"values": [
{
"field": {
"id": "107",
"name": "raisonsociale",
"dbName": "RAISONSOCIALE",
"fieldType": "ALPHANUMERIQUE"
},
"value": "dimo software"
},
{
"field": {
"id": "112",
"name": "typecommercial",
"dbName": "TYPECOMMERCIAL",
"fieldType": "ALPHANUMERIQUE"
},
"value": "Concurrent"
}
]
},
"typeImport": 0
}
A savoir
Le système effectue la mise à jour des champs dans l’ordre donné dans l’objet Record. L’analye traite les conditions de visibilité et de saisie de champs en effectuant un recalcul des accès après chaque integration de valeurs de champ, dans l’ordre donné (similaire à la saisie en fiche à travers YellowBox).
Le traitement des règles en lecture seule est pris en compte.
Si un champ est demandé en modification et que ses accès ne le permettent pas, une erreur No acces for this operation. est renvoyée et le record n’est pas enregistré.
Cas particulier import des documents avec import du fichier
Convertir le contenu du fichier en Base64 : exemple si c’est un fichier texte qui contient ‘Bonjour’ > ‘Qm9uam91cg==’
pour creer un fichier texte qui contient le texte Bonjour qui s’appelle bonjour.txt et qui est dans le dossier fichierimportant lui même dans les documents joints.
{
"record": {
"table": {
"id": "13",
"name": "document"
},
"values": [
{
"field": {
"id": "382",
"name": "chemin",
"dbName": "CHEMIN",
"fieldType": "ALPHANUMERIQUE"
},
"value": "fichierimportant/bonjour.txt"
},
{
"field": {
"id": "BASE64FILE",
"name": "",
"dbName": "BASE64FILE",
"fieldType": ""
},
"value": "Qm9uam91cg=="
}
]
},
"typeImport": 0
}