ANS-1156 · DéVELOPPEMENT SUITESCRIPT

Comment clôturer une commande client par programmation dans NetSuite via SuiteScript ?

Découvrez la méthode SuiteScript recommandée pour clôturer efficacement les commandes client en mettant à jour le statut des lignes de commande, ce qui garantit une gestion adéquate des commandes.

Solution courte

Pour clôturer par programmation une commande client dans NetSuite, parcourez toutes ses lignes de commande et définissez la valeur du champ « isclosed » sur « true » pour chacune d’entre elles. Cette action met à jour le statut de la commande client sur « Clôturée », ce qui constitue la méthode prise en charge pour empêcher efficacement tout traitement ultérieur d’une commande via SuiteScript.

Scénario

Les utilisateurs cherchent souvent à modifier par programmation le statut d’une commande client pour le faire passer à « Annulée » à l’aide de SuiteScript. Bien que l’annulation directe vers le statut « Annulée » pour les commandes approuvées ne soit pas officiellement prise en charge par le script, l’exigence métier consiste à empêcher la poursuite du traitement d’une commande.

Solution

La méthode recommandée et prise en charge pour « annuler » efficacement une commande client via SuiteScript, en particulier pour les commandes qui ne sont plus dans l’état « En attente d’approbation », consiste à « clôturer » la commande. Pour ce faire, il faut attribuer le statut « Clôturé » à tous les postes individuels de la commande client. Lorsque toutes les lignes sont clôturées, le statut global de la commande client indique « Clôturé ». Ce processus implique généralement :

  1. Le chargement de l’enregistrement de la commande client

    .

  2. Le parcours de chaque ligne de la sous-liste (par exemple, la sous-liste « article »).

  3. Définir la valeur du champ « isclosed » sur « true » pour chaque ligne.

  4. Enregistrer l’enregistrement de la commande client mis à jour

    . Exemple de code SuiteScript (SuiteScript 2.x recommandé pour les versions actuelles de NetSuite) permettant de clôturer toutes les lignes d’une commande client :

javascript/** * @NApiVersion 2.x * @NModuleScope SameAccount */define(['N/record', 'N/log'], function(record, log) {    function closeSalesOrderLines(salesOrderId) {        try {            var salesOrder = record.load({                type: record.Type.SALES_ORDER,                id: salesOrderId,                isDynamic: false            });            var lineCount = salesOrder.getLineCount({                sublistId: 'item'            });            for (var i = 0; i < lineCount; i++) {                salesOrder.setSublistValue({                    sublistId: 'item',                    fieldId: 'isclosed',                    line: i,                    value: true                });            }            var updatedRecordId = salesOrder.save();            log.debug('Sales Order Closed', 'Sales Order ' + updatedRecordId + ' has been closed by setting all lines to isclosed: true.');            return updatedRecordId;        } catch (e) {            log.error('Error Closing Sales Order', 'Could not close sales order ' + salesOrderId + ': ' + e.message);            return null;        }    }    return {        closeSalesOrderLines: closeSalesOrderLines    };});

Il est important de noter que l’appel direct de fonctions non documentées telles que « cancel_approve_order() » ou la manipulation d’URL telles que « salesordermanager.nl » avec « optype=cancel » constituent des méthodes non prises en charge. Ces approches ne sont pas recommandées, car elles peuvent entraîner un comportement imprévisible ou cesser de fonctionner avec les futures mises à jour de NetSuite. Le statut « Annulé » est généralement réservé aux commandes client qui se trouvent encore dans un état « En attente d’approbation », pour lesquelles un processus d’annulation formel peut être disponible.

Support expert NetSuite

Besoin d’aide pour cet enjeu NetSuite ?

Accompagnement-conseil et configuration pour Développement SuiteScript

Parler à un consultant