ANS-1073 · DéVELOPPEMENT SUITESCRIPT
Comment faire la distinction entre les enregistrements de bons de préparation et ceux de commandes client dans l’impression par lots de NetSuite ?
La compréhension des ensembles de champs distincts présents sur les objets d'enregistrement lors des opérations d'impression par lots dans NetSuite peut vous aider à déterminer s'il s'agit d'un bon de préparation de commande ou d'une commande client en cours de traitement.
Solution courte
Lors du traitement des enregistrements dans le cadre de l’impression par lots NetSuite, les bons de préparation et les commandes client présentent des ensembles de champs disponibles différents. En examinant les champs présents sur l’objet d’enregistrement, les développeurs peuvent déterminer par programmation le type d’enregistrement, ce qui permet d’utiliser une logique conditionnelle dans les scripts d’événements utilisateur SuiteScript 2.x.
Scénario
Un script d’événement utilisateur NetSuite doit effectuer différentes actions selon qu’une opération d’impression par lots est exécutée pour un bon de préparation de commande ou une commande client. La difficulté réside dans l’identification par programmation du type d’enregistrement spécifique en cours de traitement dans le contexte du script.
Solution
Pour distinguer les enregistrements de bons de préparation des commandes des enregistrements de commandes client lors d’une opération d’impression par lots, il est possible d’examiner les champs disponibles de l’objet « enregistrement ».
Examiner l’objet « enregistrement » : dans un script d’événement utilisateur SuiteScript 2.x
, l’objet « enregistrement » est accessible via
context.newRecord. L’enregistrement de cet objet permet de révéler sa structure et ses champs disponibles.
Identifiez les différences entre les champs : grâce au débogage, il a été observé que les instances d’enregistrement des bons de préparation et des commandes client, bien qu’elles présentent un comportement général similaire, possèdent des ensembles de champs différents.Les champs identifiés dans un enregistrement de bon de préparation lors de l’impression par lots étaient les suivants :
var pickingTicketFields ["storeorder", "credholdoverride", "edition", "prevdate", "weekendpreference", "nlsub", "location", "entity", "origtotal", "nluser", "leadsource", "nexus_country", "type", "exchangerate", "balance", "companyid", "custbody_fulfillment_status", "tobefaxed", "shipaddressee", "canbeunapproved", "ordrecvd", "credholdentity", "linked", "checkcommitted", "oldrevenuecommitment", "shipzip", "itemshippingcostfxrate", "status", "shipstate", "shipcity", "nexus", "primarycurrency", "custbody_customer_number", "balreadyrefunded", "entityfieldname", "primarycurrencyfxrate", "createddate", "shipaddr1", "nlapiCC", "hasfedexfreightservice", "cleared", "custbody_oe_page", "dbstrantype", "statusRef", "isonlinetransaction", "shipaddress", "entityname", "webstore", "subsidiary", "nsapiCT", "nlloc", "tranid", "orderstatus", "shipcomplete", "memo", "billaddress", "custbody_print", "version", "currencyprecision", "currency", "lastmodifieddate", "id", "shipoverride", "voided", "isbasecurrency", "ntype", "accountnumber", "consolidatebalance", "tobeprinted", "shipcountry", "nlrole", "manualcredithold", "nldept", "custbody_printed", "trandate", "baserecordtype", "overallbalance", "shipdate", "linkedclosedperioddiscounts", "custbody_invoice_complete", "shipisresidential", "saleseffectivedate", "*eml_nkey*", "entitynexus", "custbody_line_items", "custbody_created_by", "custbody_pick", "tobeemailed"];. Les champs identifiés dans un enregistrement de commande client lors de l’impression par lots étaient les suivants :
var salesOrderFields ["total", "nlsub", "leadsource", "nluser", "nexus_country", "exchangerate", "billzip", "tobefaxed", "canbeunapproved", "ordrecvd", "credholdentity", "iseditbilledtransactionwithpromotion", "oldrevenuecommitment", "itemshippingcostfxrate", "shipzip", "billaddressee", "nexus", "custbody_customer_number", "createddate", "subtotal", "billcountry", "nlapiCC", "shipaddr1", "cleared", "dbstrantype", "billcity", "statusRef", "isonlinetransaction", "entityname", "shipaddress", "webstore", "billoverride", "nsapiCT", "orderstatus", "memo", "billaddress", "custbody_print", "version", "currency", "currencyprecision", "isbasecurrency", "manualcredithold", "nldept", "shipcountry", "nsapiRC", "origtotal2", "shipdate", "shipisresidential", "saleseffectivedate", "istransformedbill", "entitynexus", "custbody_created_by", "custbody_pick", "edition", "credholdoverride", "storeorder", "prevdate", "weekendpreference", "location", "entity", "nsapiPI", "origtotal", "type", "balance", "companyid", "estgrossprofitpercent", "custbody_fulfillment_status", "shipaddressee", "linked", "checkcommitted", "unbilledorders", "totalcostestimate", "shipcity", "shipstate", "status", "primarycurrency", "entityfieldname", "balreadyrefunded", "primarycurrencyfxrate", "hasfedexfreightservice", "custbody_oe_page", "subsidiary", "islegacypromo", "nlloc", "tranid", "shipcomplete", "lastmodifieddate", "id", "shipoverride", "voided", "ntype", "accountnumber", "consolidatebalance", "nlrole", "tobeprinted", "custbody_printed", "trandate", "billstate", "baserecordtype", "overallbalance", "linkedclosedperioddiscounts", "custbody_invoice_complete", "*eml_nkey*", "custbody_line_items", "estgrossprofit", "billaddr1", "tobeemailed"];. Une fonction de comparaison peut être utilisée pour identifier les champs propres à un type d’enregistrement. Par exemple, les champs présents uniquement sur les commandes client en impression par lots comprennent :
var differentFields ["total", "billzip", "iseditbillSupport expert NetSuite
Besoin d’aide pour cet enjeu NetSuite ?
Accompagnement-conseil et configuration pour Développement SuiteScript
