2017-05-16 3 views

Répondre

1

Si vous pouvez effectuer le traitement/regroupement avant de transmettre des données à freemarker, vous êtes mieux lotis. Cependant, si vous faites quelque chose comme l'extension des formulaires de transaction standard qui n'est pas une option simple.

Vous pouvez simuler le regroupement en utilisant des opérations de séquence. (Voir http://freemarker.org/docs/ref_builtins_sequence.html)

Puis:

<#assign seen_style = []> 
<#list record.item?sort_by('custcol_style') as lineitem> 
    <#assign lineStyle = lineitem.custcol_style> 
    <#if seen_style?seq_contains(lineStyle)> 
    <#else> 
     <#assign seen_style = seen_style + [lineStyle]> 
     <#assign styleTotal = 0> 
     <#list record.item?sort_by('custcol_size') as styleItem> 
      <#if lineStyle == styleItem.custcol_style> 
       <#assign styleTotal = styleTotal + styleItem.quantity> 
      </if> 
     </#list> 
     <div>${lineStyle} has ${styleTotal}</div> 
    </#if> 
</#list> 
+0

Vous pouvez coller votre code en modifiant votre question initiale. – bknights

+0

re: données dans le formulaire de transaction déjà. Oui que le cas d'utilisation que je propose une solution. Vous n'étiez pas explicite à ce sujet mais faire le regroupement avant de cliquer sur le modèle est plus facile si vous générez des résultats à partir du code. Il ne semble pas que vous le fassiez. – bknights

+0

'groupby' n'est pas non plus un champ Netsuite ni le format d'un champ de colonne personnalisé. – bknights

2

La documentation complète Freemarker est disponible here.

Il n'y a pas de fonctions intégrées telles que group_by() ou sum(), et bien que vous pourriez mettre quelque chose ensemble en utilisant des directives <#list> etc., vous auriez un temps beaucoup plus facile de faire cela en utilisant JavaScript comme une bibliothèque lodash.

Pour plus d'informations sur la combinaison de modèles SuiteScript et de modèles PDF/HTML avancés, consultez la rubrique d'aide Using SuiteScript to Apply Advanced Templates to Non-Transaction Records ou, si vous utilisez SS2.0, le module N/render.