ANS-1006 · DéVELOPPEMENT SUITESCRIPT

Comment masquer les champs « Coût unitaire » et « Coût » dans la sous-liste des responsables de tâches d’un projet NetSuite

Les options de configuration natives n'étant pas disponibles, une solution SuiteScript est nécessaire pour gérer la visibilité et les valeurs par défaut de ces champs.

Solution courte

Pour masquer les champs « Coût unitaire » et « Coût » dans la sous-liste « Responsable de la tâche du projet », un script SuiteScript est nécessaire. Ce script gère la visibilité des champs en mode affichage, efface les libellés en mode édition et remplace les valeurs vides du coût unitaire par zéro lors de la validation afin d’éviter les erreurs, car ces champs ne disposent pas d’options de configuration natives.

Scénario

Les utilisateurs de NetSuite rencontrent souvent des difficultés lorsqu’ils tentent de personnaliser la sous-liste « Responsable » des enregistrements de tâches de projet. Plus précisément, il n’existe aucune option de configuration native permettant de masquer les champs « Coût unitaire » ou « Coût ». Cette limitation signifie que ces champs restent visibles par défaut, même lorsqu’ils ne sont pas pertinents pour le flux de travail d’un utilisateur ou ses besoins en matière de saisie de données.

Solution

Comme il n’existe aucune option de configuration native permettant de masquer les champs « Coût unitaire » ou « Coût » dans la sous-liste « Responsable » de la tâche de projet, une solution par script est nécessaire. L’exemple suivant illustre une solution mise en œuvre à l’aide de SuiteScript 1.0. Il est important de noter que SuiteScript 1.0 est une API héritée et que la meilleure pratique actuelle de NetSuite pour les nouveaux développements est SuiteScript 2.0/2.1. Les fonctions et les structures d’objets utilisées dans ce script sont spécifiques à SuiteScript 1.0 et devraient être réécrites pour une implémentation en SuiteScript 2.x.La solution répond à deux considérations principales :

  1. Masquage en mode édition :

    pour masquer efficacement la colonne en mode édition tout en garantissant la persistance de la valeur, l’intitulé du champ doit être masqué.

  2. Gestion des champs obligatoires :

    le champ « Coût unitaire » est obligatoire par défaut. Si une tâche de projet est enregistrée avec un champ « Coût unitaire » vide (ce qui peut se produire si le « Coût de main-d’œuvre » de l’employé affecté est vide), une erreur inattendue se produira. Pour éviter cela, le script remplace toute valeur vide du champ « Coût unitaire » par 0 lors de l’événement « avant soumission ». Déployez le script suivant en tant que script d’événement utilisateur sur l’enregistrement de la tâche de projet.Fonction « Avant chargement » (SuiteScript 1.0) :

javascript/** * beforeLoad_hideUnitCost : Before load trigger to be deployed on * Project Task record. * * @param {string} type : the read operation type * @param {nlobjForm} form : an nlobjForm object representing the * current form * @param {nlobjRequest} request : an nlobjRequest object * representing the GET request * * @author frederic.jannelle@erpguru.com */function beforeLoad_hideUnitCost(type, form, request){    if (form != null) {        if ((type == 'create') || (type == 'edit')) {            // Need to make field non-mandatory to allow submission            // of sublist line with an empty unit cost            form.getSubList('assignee').getField('unitcost').setMandatory(false).setLabel('');            form.getSubList('assignee').getField('cost').setMandatory(false).setLabel('');        }        if (type == 'view') {            form.getSubList('assignee').getField('unitcost').setDisplayType('hidden');            form.getSubList('assignee').getField('cost').setDisplayType('hidden');        }    }}

Fonction « Avant soumission » (SuiteScript 1.0) :

javascript/** * beforeSubmit_hideUnitCost : Before submit trigger to be deployed * on Priject Task record. * * @param {string} type : the write operation type * * @author frederic.jannelle@erpguru.com */function beforeSubmit_hideUnitCost(type){    if (type == 'create' || type == 'edit') {        resetEmptyUnitCosts();    }}

Fonction d’aide (SuiteScript 1.0) :

javascript/** * resetEmptyUnitCosts : Goes through the list of assignees and for * each line that has an empty unit cost resets it to 0. * * This is done to handle the cases where the Labor Cost is empty * on the employee record and therefore populated as empty on the * assignee line. This will cause an unexpected error on submission * of the project task since the field is considered mandatory. * * @author frederic.jannelle@erpguru.com */function resetEmptyUnitCosts(){    var numberOfLines = nlapiGetLineItemCount('assignee');    for (var i = 1; i < numberOfLines; i++) {        var unitCost = nlapiGetLineItemValue('assignee', 'unitcost', i);        if (unitCost == null || unitCost == '') {            nlapiSetLineItemValue('assignee', 'unitcost', i, 0);        }    }}

Support expert NetSuite

Besoin d’aide pour cet enjeu NetSuite ?

Accompagnement-conseil et configuration pour Développement SuiteScript

Parler à un consultant