{"id":3061,"date":"2017-08-21T14:45:22","date_gmt":"2017-08-21T14:45:22","guid":{"rendered":"https:\/\/answers.gurussolutions.com\/answers\/how-netsuites-approve-button-triggers-scripts-and-handles-record-changes-2\/"},"modified":"2026-07-28T18:25:26","modified_gmt":"2026-07-28T18:25:26","slug":"comment-le-bouton-approuver-de-netsuite-declenche-des-scripts-et-gere-les-modifications-apportees-aux-enregistrements","status":"publish","type":"qa_entry","link":"https:\/\/answers.gurussolutions.com\/fr\/answers\/comment-le-bouton-approuver-de-netsuite-declenche-des-scripts-et-gere-les-modifications-apportees-aux-enregistrements\/","title":{"rendered":"Comment le bouton \u00ab Approuver \u00bb de NetSuite d\u00e9clenche des scripts et g\u00e8re les modifications apport\u00e9es aux enregistrements"},"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":"Comprenez comment les scripts d'\u00e9v\u00e9nements utilisateur sont d\u00e9clench\u00e9s par le bouton \u00ab Approuver \u00bb sur les transactions, ainsi que les implications en termes d'enregistrement des modifications apport\u00e9es aux enregistrements et d'emp\u00eachement de l'approbation.","ga_short_answer":"Le bouton \u00ab Approuver \u00bb de NetSuite d\u00e9clenche des scripts d\u2019\u00e9v\u00e9nements utilisateur. Bien que les modifications apport\u00e9es \u00e0 l\u2019enregistrement actuel dans la phase \u00ab beforeSubmit \u00bb puissent \u00eatre automatiquement conserv\u00e9es, une sauvegarde explicite via record.save() ou record.submitFields() est souvent n\u00e9cessaire dans la phase \u00ab afterSubmit \u00bb ou pour les enregistrements externes. Pour interrompre le processus d\u2019approbation, une erreur doit \u00eatre g\u00e9n\u00e9r\u00e9e, ce qui annule toutes les modifications apport\u00e9es \u00e0 l\u2019enregistrement.","ga_scenario":"Un administrateur ou un d\u00e9veloppeur NetSuite doit mettre en \u0153uvre une logique personnalis\u00e9e qui s\u2019ex\u00e9cute lorsque l\u2019on clique sur le bouton \u00ab Approuver \u00bb d\u2019une transaction. Il doit comprendre <a class=\"ga-interlink\" href=\"https:\/\/answers.gurussolutions.com\/fr\/answers\/how-do-netsuite-mass-updates-impact-user-event-script-execution\/\">comment les scripts sont d\u00e9clench\u00e9s<\/a>, comment les modifications apport\u00e9es aux enregistrements sont enregistr\u00e9es, et comment emp\u00eacher de mani\u00e8re conditionnelle la finalisation d\u2019une approbation tout en garantissant l\u2019int\u00e9grit\u00e9 des donn\u00e9es.","ga_solution":"Le bouton \u00ab Approuver \u00bb des transactions NetSuite peut d\u00e9clencher des scripts d\u2019\u00e9v\u00e9nements utilisateur \u00e0 l\u2019aide du d\u00e9clencheur \u00ab approve \u00bb. Alors que les modifications apport\u00e9es directement \u00e0 l\u2019objet context.newRecord dans un script d\u2019\u00e9v\u00e9nement utilisateur \u00ab beforeSubmit \u00bb sont automatiquement conserv\u00e9es une fois la soumission r\u00e9ussie, une sauvegarde explicite \u00e0 l\u2019aide des fonctions SuiteScript 2.x telles que record.save() ou record.submitFields() est g\u00e9n\u00e9ralement requise pour les modifications effectu\u00e9es dans les scripts \u00ab afterSubmit \u00bb ou lors de <a class=\"ga-interlink\" href=\"https:\/\/answers.gurussolutions.com\/fr\/answers\/can-you-load-netsuite-records-with-view-permissions-in-suitescript\/\">la modification d\u2019enregistrements autres que l\u2019enregistrement actuel<\/a> dans \u00ab beforeSubmit \u00bb.\n\nPour emp\u00eacher l\u2019approbation d\u2019aboutir et maintenir le statut de la transaction sur \u00ab En attente d\u2019approbation \u00bb, une erreur doit \u00eatre lev\u00e9e au sein du script. Si une erreur est lev\u00e9e, toutes les modifications apport\u00e9es \u00e0 l\u2019enregistrement au cours de ce processus sont annul\u00e9es et l\u2019enregistrement revient \u00e0 l\u2019\u00e9tat dans lequel il se trouvait avant que le bouton ne soit cliqu\u00e9. Cela inclut toutes les modifications effectu\u00e9es \u00e0 l\u2019aide de fonctions SuiteScript 2.x telles que record.setValue(), record.submitFields() ou record.save().","ga_source_author":"","ga_source_author_email":"","ga_date_original":"2017-08-21T16:45:22+02:00","ga_date_verified":"2026-07-05","ga_source_subject":"SOL0595 Approve Button and Scripting","ga_ans_id":"ANS-1322","ga_publish_decision":"publish_with_edits","ga_staleness_risk":"high","ga_review_priority":"spot_check","ga_tier2_verdict":"partially_outdated","ga_tier2_concerns":"The original answer uses SuiteScript 1.0 function names (nlapiSubmitField, nlapiSubmitRecord, nlapiSetFieldValue), which are outdated. Current NetSuite development uses SuiteScript 2.x, with equivalent functions like record.save(), record.submitFields(), and record.setValue().; The claim that 'changes to the record are not saved unless you use nlapiSubmitField or nlapiSubmitRecord' is partially outdated. In SuiteScript 2.x's beforeSubmit user event scripts, changes made directly to the context.newRecord object persist automatically upon successful submission without an explicit save call. However, in afterSubmit scripts, or for changes outside the current record in beforeSubmit, explicit record.load() and record.save() or record.submitFields() calls are still required.","ga_final_category":"SuiteScript Development","footnotes":""},"ga_category":[108,23,108],"ga_audience":[10],"ga_difficulty":[92],"class_list":["post-3061","qa_entry","type-qa_entry","status-publish","hentry","ga_category-developpement-suitescript","ga_category-suitescript-development","ga_audience-developer-suitescript","ga_difficulty-niveau-intermediaire"],"taxonomy_info":{"ga_category":[{"value":108,"label":"D\u00e9veloppement SuiteScript"},{"value":23,"label":"SuiteScript Development"},{"value":108,"label":"D\u00e9veloppement SuiteScript"}],"ga_audience":[{"value":10,"label":"Developer\/SuiteScript"}],"ga_difficulty":[{"value":92,"label":"Niveau interm\u00e9diaire"}]},"featured_image_src_large":[],"author_info":[],"comment_info":"","_links":{"self":[{"href":"https:\/\/answers.gurussolutions.com\/fr\/wp-json\/wp\/v2\/qa_entry\/3061","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\/3061\/revisions"}],"predecessor-version":[{"id":4981,"href":"https:\/\/answers.gurussolutions.com\/fr\/wp-json\/wp\/v2\/qa_entry\/3061\/revisions\/4981"}],"wp:attachment":[{"href":"https:\/\/answers.gurussolutions.com\/fr\/wp-json\/wp\/v2\/media?parent=3061"}],"wp:term":[{"taxonomy":"ga_category","embeddable":true,"href":"https:\/\/answers.gurussolutions.com\/fr\/wp-json\/wp\/v2\/ga_category?post=3061"},{"taxonomy":"ga_audience","embeddable":true,"href":"https:\/\/answers.gurussolutions.com\/fr\/wp-json\/wp\/v2\/ga_audience?post=3061"},{"taxonomy":"ga_difficulty","embeddable":true,"href":"https:\/\/answers.gurussolutions.com\/fr\/wp-json\/wp\/v2\/ga_difficulty?post=3061"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}