ANS-1435 · DéVELOPPEMENT SUITESCRIPT
Comment créer par programmation un bon de travail NetSuite à partir d’une ligne de commande client
Ce guide décrit la méthode SuiteScript 2.x permettant de créer et de lier par programmation un ordre de travail à une ligne spécifique d'une commande client.
Solution courte
Pour créer par programmation un ordre de travail à partir d’une ligne de commande client, instanciez un nouvel enregistrement d’ordre de travail. Définissez ses champs « soid », « soline » et « specord », puis enregistrez-le. Récupérez l’identifiant interne du nouvel ordre de travail. Mettez à jour le champ « woid » de la ligne de commande client d’origine avec cet identifiant, puis enregistrez la commande client afin d’établir le lien.
Scénario
Lors de la gestion de transactions comportant des lignes d’article nécessitant la création d’un ordre de travail, les utilisateurs peuvent généralement cliquer sur un lien « Créer un ordre de travail » dans l’interface utilisateur de NetSuite. Toutefois, lorsque les transactions sont générées par programmation via SuiteScript, une méthode est nécessaire pour reproduire cette fonctionnalité afin de garantir que l’ordre de travail soit correctement associé à la ligne de transaction concernée.
Solution
Bien que NetSuite documente désormais l’utilisation du script map/reduce CPQM-MR-WOC
pour créer des ordres de travail à partir de commandes client via SuiteScript 2.x, une autre méthode consiste à créer directement un enregistrement d’ordre de travail et à définir certains champs spécifiques afin d’établir le lien. Le simple fait de définir la valeur du champ « Create WO » sur « true » ou de saisir un identifiant sur la ligne de transaction ne suffit pas à cette fin. L’approche décrite ci-dessous découle de l’analyse des paramètres d’URL utilisés lors de la création d’un ordre de travail à partir de l’interface utilisateur.
Lorsqu’un utilisateur clique sur le lien « Create WO » dans l’interface utilisateur, l’URL se présente généralement comme suit :
/app/accounting/transactions/workord.nl?soid=94023&soline=1&specord=T&entity=662&assemblyitem=878&quantity=1
Pour reproduire cette fonctionnalité par programmation :
Créez un nouvel enregistrement d’ordre de travail à l’aide de SuiteScript.
Remplissez les champs suivants dans le nouvel enregistrement d’ordre de travail :
woRecord.setValue({fieldId: 'soid', value: soRecord.id}); //the transaction id
woRecord.setValue({fieldId: 'soline', value: assemblyLineNumber}); // the line number for the work order item on the transaction (be careful with ss 1.0 vs 2.0)
woRecord.setValue({fieldId: 'specord', value: true}); //This field is required for proper linking.Enregistrez l’enregistrement d’ordre de travail nouvellement créé afin d’obtenir son identifiant interne.
Chargez l’enregistrement de la commande client d’origine.
Définissez le champ
woidsur la ligne correspondante de la sous-liste des articles de la commande client afin de la lier au nouvel ordre de travail :
soRecordLoaded.setSublistValue({
sublistId: 'item',
fieldId: 'woid',
line: assemblyLineNumber,
value: woInternalId
});Enregistrez l’enregistrement de la commande client mis à jour.
Support expert NetSuite
Besoin d’aide pour cet enjeu NetSuite ?
Accompagnement-conseil et configuration pour Développement SuiteScript
