ANS-1421 · CHAMPS PERSONNALISéS, ENREGISTREMENTS ET FORMULAIRES
Comment définir un champ de date sur le premier jour du mois suivant dans les workflows NetSuite ?
Apprenez à configurer un workflow NetSuite afin de remplir automatiquement un champ de date avec le premier jour du mois suivant la date de la transaction à l'aide de SuiteScript 2.x.
Solution courte
Pour définir un champ de date dans un workflow NetSuite sur le premier jour du mois suivant la date de la transaction, implémentez une fonction SuiteScript 2.x personnalisée utilisant le module N/format et les méthodes Date standard de JavaScript. Cette fonction peut ensuite être appelée via une action de workflow personnalisée ou un script d'événement utilisateur afin de calculer et de définir dynamiquement la date souhaitée.
Scénario
Les utilisateurs doivent remplir automatiquement un champ de date spécifique d’un enregistrement NetSuite en y indiquant le premier jour du mois suivant immédiatement la date de transaction de l’enregistrement. Cette automatisation est généralement nécessaire dans le cadre d’un workflow afin de garantir la cohérence et de réduire la saisie manuelle des données.
Solution
Pour définir un champ de date dans un workflow NetSuite sur le premier jour du mois suivant la date de transaction, il est recommandé d’utiliser SuiteScript 2.x pour les nouveaux développements. Alors que les fonctions SuiteScript 1.0 telles que nlapiDateToString, nlapiAddDays, nlapiAddMonths et nlapiStringToDate étaient autrefois utilisées dans les formules de workflow, SuiteScript 2.x offre une approche plus modulaire et plus robuste grâce au module N/format et aux méthodes standard de l’objet Date de JavaScript. Cette fonctionnalité est généralement mise en œuvre via un script d’action de workflow personnalisé ou un script d’événement utilisateur, plutôt que par une formule de workflow directe.
Créer un module SuiteScript 2.x :
Développez un module SuiteScript 2.x (par exemple, custom_date_utils.js) contenant une fonction permettant de calculer la date souhaitée. Ce module utilisera le module N/format pour l’analyse et le formatage de la date, ainsi que les méthodes standard de l’objet Date de JavaScript pour la manipulation de la date.
javascript/** * @NApiVersion 2.1 * @NModuleScope SameAccount */define(['N/format'], function(format) { /** * Calculates the first day of the month following a given date. * This function is designed to be called from a custom script (e.g., User Event Script or Workflow Action Script) * to set a date field in NetSuite. * @param {string} transactionDateString - The transaction date as a string (e.g., from a record field like {trandate}). * @returns {string} The first day of the next month, formatted as a date string. */ function getFirstDayOfNextMonth(transactionDateString) { //
1. Parse the transaction date string into a Date object var parsedDate = format.parse({ value: transactionDateString, type: format.Type.DATE }); //
2. Create a new Date object from the parsed date to allow manipulation var date = new Date(parsedDate); //
3. Set the day of the month to 1 to get the first day of the *current* month date.setDate(1); //
4. Add one month to get the first day of the *next* month date.setMonth(date.getMonth() + 1); //
5. Format the resulting Date object back to a string return format.format({ value: date, type: format.Type.DATE }); } return { getFirstDayOfNextMonth: getFirstDayOfNextMonth };});Implémentez un script d’action de workflow personnalisé ou un script d’événement utilisateur :
Créez un script personnalisé (par exemple, un script d’action de workflow ou un script d’événement utilisateur) qui charge le module créé à l’étape 1 et appelle la fonction getFirstDayOfNextMonth. Ce script définira ensuite la valeur du champ de date cible dans l’enregistrement. Pour un script d’action de workflow, vous devrez définir une fonction onAction. Au sein de cette fonction, vous devrez récupérer la date de transaction de l’enregistrement actuel, appeler getFirstDayOfNextMonth, puis définir le champ cible.Exemple d’extrait de code pour un script d’action de workflow :
javascript/** * @NApiVersion 2.1 * @NScriptType WorkflowActionScript */define(['N/record', 'N/runtime', './custom_date_utils'], function(record, runtime, customDateUtils) { function onAction(scriptContext) { var newRecord = scriptContext.newRecord; var transactionDate = newRecord.getValue({ fieldId: 'trandate' }); // Get the transaction date string // Calculate the first day of the next month using the custom utility function var nextMonthFirstDay = customDateUtils.getFirstDayOfNextMonth(transactionDate); // Set the target date field (replace 'custbody_target_date_field' with your actual field ID) newRecord.setValue({ fieldId: 'custbody_target_date_field', value: nextMonthFirstDay }); // Log for debugging (optional) log.debug('Calculated Next Month First Day', nextMonthFirstDay); } return { onAction: onAction };});Déploiement et intégration au workflow :
Déployez votre ou vos fichiers de script personnalisés dans NetSuite. Configurez ensuite votre workflow pour qu’il déclenche ce script d’action personnalisé à l’état ou à la transition approprié(e). Assurez-vous que l’action personnalisée est configurée pour transmettre le contexte nécessaire (par exemple, l’enregistrement actuel) au script. Le script mettra alors à jour le champ « Date cible » de l’enregistrement.
Support expert NetSuite
Besoin d’aide pour cet enjeu NetSuite ?
Accompagnement-conseil et configuration pour Champs personnalisés, enregistrements et formulaires
