ANS-0155 · RECHERCHES ENREGISTRéES ET FORMULES
Comment créer des totaux cumulés dans les recherches enregistrées et les rapports NetSuite
NetSuite propose des fonctionnalités intégrées permettant de calculer des soldes cumulés dans les rapports, ainsi que des fonctions analytiques SQL avancées pour calculer des totaux cumulés dans les recherches enregistrées.
Solution courte
Les rapports NetSuite peuvent inclure des soldes cumulés grâce à une option dédiée lors de la personnalisation. Pour les recherches enregistrées, les totaux cumulés peuvent être calculés à l’aide de fonctions analytiques SQL telles que SUM() et OVER(), directement dans les champs de formule. Alors que les anciennes méthodes faisaient appel à SuiteScript, les fonctionnalités actuelles offrent une approche plus directe aux administrateurs.
Scénario
Les utilisateurs ont souvent besoin d’afficher une somme cumulée ou un solde courant pour les données financières ou de stock dans NetSuite. Cette fonctionnalité est essentielle pour suivre les totaux progressifs sur une série de transactions ou d’enregistrements, mais il peut s’avérer difficile de trouver une méthode simple, tant pour les rapports standard que pour les recherches personnalisées enregistrées.
Solution
Solde cumulé dans les rapports NetSuite : NetSuite propose une option permettant d’ajouter directement une colonne de solde cumulé lors de la personnalisation des rapports. Cette fonctionnalité est disponible pour certaines colonnes par défaut et pour toutes les colonnes ajoutées à un rapport. En cochant l’option « Solde cumulé » pour une colonne de votre choix, une nouvelle colonne affichant le solde cumulé sera ajoutée à sa droite.Totaux cumulés dans les recherches enregistrées de NetSuite : pour les recherches enregistrées, les totaux cumulés peuvent être obtenus à l’aide de fonctions analytiques SQL directement dans un champ de formule. La fonctionnalité de recherche enregistrée de NetSuite prend en charge des expressions telles que SUM() OVER() pour calculer des valeurs cumulées. Par exemple, pour obtenir un total cumulé d’un champ « montant », une formule similaire à SUM({amount}) OVER (ORDER BY {date_field}) pourrait être utilisée, où {amount} est le champ à totaliser et {date_field} définit l’ordre de cumul.Approche SuiteScript héritée (SuiteScript 1.0) : par le passé, le calcul de totaux cumulés dans les recherches enregistrées nécessitait parfois l’utilisation de code SuiteScript personnalisé. L’exemple suivant illustre un modèle SuiteScript 1.0 permettant de traiter les résultats de recherche et de remplir une sous-liste. Il est important de noter que SuiteScript 1.0 est désormais considéré comme obsolète et que SuiteScript 2.x constitue la norme actuelle pour les nouveaux développements. Cette approche nécessite généralement des connaissances avancées en script.
javascript// assumes you setup the search and results which // include anypreprocessing to add running totals if ( searchresults.length > 0 ) { // first, add the columns to the sublist based on the columnsin the results var result searchresults[0]; var column_list result.getAllColumns(); var col_len column_list.length; for (i0; i<col_len; i++) { var col column_list[i]; var col_name col.getName(); var col_label col.getLabel(); var col_form col.getFormula(); var col_func col.getFunction(); nlapiLogExecution('DEBUG', 'column name, label, formula,function', col_name + '|'+ col_label + '|'+ col_form + '|'+ col_func); // if there is no label, use the field name if (!col_label) { col_label col_name; } var fld_name 'custpage_fld_' + i; } // now, show the results; loop through each result var rlen searchresults.length; for (ctr0;ctr<rlen;ctr++) { var result searchresults[ctr]; // for each result, loop the columns for (i0; i<col_len; i++) { var col column_list[i]; var col_name col.getName(); var col_label col.getLabel(); // if there is no label, use the field name if (!col_label) { col_label col_name; } var fld_name 'custpage_fld_' + i; var value result.getText(col); if (!value) { value ""; } if (value.length 0) { value result.getValue(col); } var lin parseInt(ctr) + parseInt(1); if (value) { YOURLIST.setLineItemValue(fld_name, lin, value); } } } }Support expert NetSuite
Besoin d’aide pour cet enjeu NetSuite ?
Accompagnement-conseil et configuration pour Recherches enregistrées et formules
