{"id":3160,"date":"2019-10-04T16:07:31","date_gmt":"2019-10-04T16:07:31","guid":{"rendered":"https:\/\/answers.gurussolutions.com\/answers\/how-to-set-a-date-field-to-the-first-day-of-the-next-month-in-netsuite-workflows-2\/"},"modified":"2026-07-28T18:25:32","modified_gmt":"2026-07-28T18:25:32","slug":"comment-definir-un-champ-de-date-sur-le-premier-jour-du-mois-suivant-dans-les-workflows-netsuite","status":"publish","type":"qa_entry","link":"https:\/\/answers.gurussolutions.com\/fr\/answers\/comment-definir-un-champ-de-date-sur-le-premier-jour-du-mois-suivant-dans-les-workflows-netsuite\/","title":{"rendered":"Comment d\u00e9finir un champ de date sur le premier jour du mois suivant dans les workflows NetSuite ?"},"content":{"rendered":"","protected":false},"template":"","meta":{"_kad_blocks_custom_css":"","_kad_blocks_head_custom_js":"","_kad_blocks_body_custom_js":"","_kad_blocks_footer_custom_js":"","_kadence_starter_templates_imported_post":false,"_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"_kad_post_classname":"","ga_subtitle":"Apprenez \u00e0 configurer un workflow NetSuite afin de remplir automatiquement un champ de date avec le premier jour du mois suivant la date de la transaction \u00e0 l'aide de SuiteScript 2.x.","ga_short_answer":"Pour d\u00e9finir un champ de date dans un workflow NetSuite sur le premier jour du mois suivant la date de la transaction, impl\u00e9mentez une fonction SuiteScript 2.x personnalis\u00e9e utilisant le module N\/format et les m\u00e9thodes Date standard de JavaScript. Cette fonction peut ensuite \u00eatre appel\u00e9e via une action de workflow personnalis\u00e9e ou un script d'\u00e9v\u00e9nement utilisateur afin de calculer et de d\u00e9finir dynamiquement la date souhait\u00e9e.","ga_scenario":"Les utilisateurs doivent remplir automatiquement un champ de date sp\u00e9cifique d\u2019un enregistrement NetSuite en y indiquant le premier jour du mois suivant imm\u00e9diatement la date de transaction de l\u2019enregistrement. Cette automatisation est g\u00e9n\u00e9ralement n\u00e9cessaire dans le cadre d\u2019un workflow afin de garantir la coh\u00e9rence et de r\u00e9duire la saisie manuelle des donn\u00e9es.","ga_solution":"Pour d\u00e9finir un champ de date dans un workflow NetSuite sur le premier jour du mois suivant la date de transaction, il est recommand\u00e9 d\u2019utiliser SuiteScript 2.x pour les nouveaux d\u00e9veloppements. Alors que les fonctions SuiteScript 1.0 telles que nlapiDateToString, nlapiAddDays, nlapiAddMonths et nlapiStringToDate \u00e9taient autrefois utilis\u00e9es dans les formules de workflow, SuiteScript 2.x offre une approche plus modulaire et plus robuste gr\u00e2ce au module N\/format et aux m\u00e9thodes standard de l\u2019objet Date de JavaScript. Cette fonctionnalit\u00e9 est g\u00e9n\u00e9ralement mise en \u0153uvre via un script d\u2019action de workflow personnalis\u00e9 ou un script d\u2019\u00e9v\u00e9nement utilisateur, plut\u00f4t que par une formule de workflow directe.1.  **Cr\u00e9er un module SuiteScript 2.x :** D\u00e9veloppez un module SuiteScript 2.x (par exemple, custom_date_utils.js) contenant une fonction permettant de calculer la date souhait\u00e9e. Ce module utilisera le module N\/format pour l\u2019analyse et le formatage de la date, ainsi que les m\u00e9thodes standard de l\u2019objet Date de JavaScript pour la manipulation de la date.\n\n```\njavascript\/** * @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) {        \/\/ \n1. Parse the transaction date string into a Date object        var parsedDate = format.parse({            value: transactionDateString,            type: format.Type.DATE        });        \/\/ \n2. Create a new Date object from the parsed date to allow manipulation        var date = new Date(parsedDate);        \/\/ \n3. Set the day of the month to 1 to get the first day of the *current* month        date.setDate(1);        \/\/ \n4. Add one month to get the first day of the *next* month        date.setMonth(date.getMonth() + 1);        \/\/ \n5. Format the resulting Date object back to a string        return format.format({            value: date,            type: format.Type.DATE        });    }    return {        getFirstDayOfNextMonth: getFirstDayOfNextMonth    };});\n```\n\n2.  **Impl\u00e9mentez un script d\u2019action de workflow personnalis\u00e9 ou un script d\u2019\u00e9v\u00e9nement utilisateur :** Cr\u00e9ez un script personnalis\u00e9 (par exemple, un script d\u2019action de workflow ou un script d\u2019\u00e9v\u00e9nement utilisateur) qui charge le module cr\u00e9\u00e9 \u00e0 l\u2019\u00e9tape 1 et appelle la fonction getFirstDayOfNextMonth. Ce script d\u00e9finira ensuite la valeur du champ de date cible dans l\u2019enregistrement. Pour un script d\u2019action de workflow, vous devrez d\u00e9finir une fonction onAction. Au sein de cette fonction, vous devrez r\u00e9cup\u00e9rer la date de transaction de l\u2019enregistrement actuel, appeler getFirstDayOfNextMonth, puis d\u00e9finir le champ cible.Exemple d\u2019extrait de code pour un script d\u2019action de workflow :\n\n```\njavascript\/** * @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    };});\n```\n\n3.  **D\u00e9ploiement et int\u00e9gration au workflow :** D\u00e9ployez votre ou vos fichiers de script personnalis\u00e9s dans NetSuite. Configurez ensuite votre workflow pour qu\u2019il d\u00e9clenche ce script d\u2019action personnalis\u00e9 \u00e0 l\u2019\u00e9tat ou \u00e0 la transition appropri\u00e9(e). Assurez-vous que l\u2019action personnalis\u00e9e est configur\u00e9e pour transmettre le contexte n\u00e9cessaire (par exemple, l\u2019enregistrement actuel) au script. Le script mettra alors \u00e0 jour le champ \u00ab Date cible \u00bb de l\u2019enregistrement.","ga_source_author":"Isaiah Riesman-Tremonte","ga_source_author_email":"","ga_date_original":"2019-10-04T09:07:31-07:00","ga_date_verified":"2026-07-05","ga_source_subject":"How can I set a date field in a workflow to be the first of the month after the Transaction Date?","ga_ans_id":"ANS-1421","ga_publish_decision":"publish_with_edits","ga_staleness_risk":"high","ga_review_priority":"verify_soon","ga_tier2_verdict":"partially_outdated","ga_tier2_concerns":"The functions nlapiDateToString, nlapiAddDays, nlapiAddMonths, and nlapiStringToDate are part of SuiteScript 1.0.; NetSuite recommends using SuiteScript 2.x for new development, and SuiteScript 1.0 functionality is no longer being updated.; SuiteScript 2.1 does not have direct equivalents for nlapiAddDays and nlapiAddMonths, suggesting the use of standard JavaScript Date object methods or third-party libraries instead.; The functionality of nlapiDateToString and nlapiStringToDate is superseded by the N\/format module (format.format() and format.parse()) in SuiteScript 2.x.","ga_final_category":"Custom Fields, Records & Forms","footnotes":""},"ga_category":[97,22,97],"ga_audience":[89],"ga_difficulty":[94],"class_list":["post-3160","qa_entry","type-qa_entry","status-publish","hentry","ga_category-champs-personnalises-enregistrements-et-formulaires","ga_category-custom-fields-records-forms","ga_audience-administrateur-netsuite","ga_difficulty-avance"],"taxonomy_info":{"ga_category":[{"value":97,"label":"Champs personnalis\u00e9s, enregistrements et formulaires"},{"value":22,"label":"Custom Fields, Records & Forms"},{"value":97,"label":"Champs personnalis\u00e9s, enregistrements et formulaires"}],"ga_audience":[{"value":89,"label":"Administrateur NetSuite"}],"ga_difficulty":[{"value":94,"label":"Avanc\u00e9"}]},"featured_image_src_large":[],"author_info":[],"comment_info":"","_links":{"self":[{"href":"https:\/\/answers.gurussolutions.com\/fr\/wp-json\/wp\/v2\/qa_entry\/3160","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/answers.gurussolutions.com\/fr\/wp-json\/wp\/v2\/qa_entry"}],"about":[{"href":"https:\/\/answers.gurussolutions.com\/fr\/wp-json\/wp\/v2\/types\/qa_entry"}],"version-history":[{"count":1,"href":"https:\/\/answers.gurussolutions.com\/fr\/wp-json\/wp\/v2\/qa_entry\/3160\/revisions"}],"predecessor-version":[{"id":5080,"href":"https:\/\/answers.gurussolutions.com\/fr\/wp-json\/wp\/v2\/qa_entry\/3160\/revisions\/5080"}],"wp:attachment":[{"href":"https:\/\/answers.gurussolutions.com\/fr\/wp-json\/wp\/v2\/media?parent=3160"}],"wp:term":[{"taxonomy":"ga_category","embeddable":true,"href":"https:\/\/answers.gurussolutions.com\/fr\/wp-json\/wp\/v2\/ga_category?post=3160"},{"taxonomy":"ga_audience","embeddable":true,"href":"https:\/\/answers.gurussolutions.com\/fr\/wp-json\/wp\/v2\/ga_audience?post=3160"},{"taxonomy":"ga_difficulty","embeddable":true,"href":"https:\/\/answers.gurussolutions.com\/fr\/wp-json\/wp\/v2\/ga_difficulty?post=3160"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}