es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Los scripts de punto de entrada de SuiteScript 2.x deben implementar una función de tipo de script.

Añadí un campo en la Orden de Venta llamado “Membresía” que se obtendrá del registro del cliente. Luego, cuando ese campo se establezca en el nivel de membresía (por ejemplo, miembro de élite), automáticamente se establecerá el campo “Artículo de Descuento” en un artículo de descuento específico…. Me encontré con una notificación que decía “Los scripts de punto de entrada SuiteScript 2.x deben implementar una función de tipo de script”. ¿Cómo puedo solucionar esto?

/**
 *@NApiVersion 2.x
 *@NScriptType ClientScript
 */
define(["N/currentRecord", "N/runtime"], function(currentRecord, runtime) {

    function pageInit(context) {

        const record = currentRecord.get()  // Obtener valor del campo Membresía  
        const user = runtime.getCurrentUser().name
    }

    var membership = currentRecord.getField({
        fieldId: "custentity1",
    })

    if (membership == "Elite") {
        // Configuración del descuento
        record.setValue({
            fieldId: "discountitem", // fieldId del Artículo de Descuento
            value: 137 // ID interno del Artículo de Descuento
        })
    }
    else {
        record.setValue({
            fieldId: "discountitem",
            value: 0
        });
    }

    return {
        pageInit: pageInit
    }

});
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    En el script proporcionado, el tipo de script se establece como ClientScript, lo cual es incorrecto para este caso de uso. Dado que el script necesita establecer el valor de un campo, debería ser del tipo UserEventScript. El mensaje de error encontrado sugiere que el script necesita implementar una función de tipo script, por lo que la solución para el script sería agregar una función de tipo script validateField.

    Aquí hay una versión actualizada del script con los cambios requeridos:

    /**
     *@NApiVersion 2.x
     *@NScriptType UserEventScript
     */
    define(["N/currentRecord", "N/runtime"], function(currentRecord, runtime) {
    
        function pageInit(context) {
            var record = context.currentRecord; 
            var membership = record.getValue({
                fieldId : "custentity1"
            });
            if (membership == "Elite") {
                record.setValue({
                    fieldId: "discountitem",
                    value: 137
                });
            } else {
                record.setValue({
                    fieldId: "discountitem",
                    value: null
                });
            }
        }
    
        function validateField(context) {
            var record = context.currentRecord;
            if (context.fieldId == "custbody_membership" || context.fieldId == "entity") {
                var membership = record.getValue({
                    fieldId: "custentity1"
                });
                if (membership == "Elite") {
                    record.setValue({
                        fieldId: "discountitem",
                        value: 137
                    });
                } else {
                    record.setValue({
                        fieldId: "discountitem",
                        value: null
                    });
                }
            }
            return true;
        }
    
        return {
            pageInit : pageInit,
            validateField: validateField
        };
    });    
    

    En este script actualizado, el tipo de script ha sido cambiado a UserEventScript ya que modificará los valores de los campos. Se han agregado dos funciones de tipo script – pageInit y validateField para adaptarse a los cambios requeridos. La función pageInit ahora aplica el descuento según el valor del campo membership. La función validateField se activa cuando se modifican los campos membership o entity del cliente y actualiza el valor del campo de descuento en consecuencia. Por último, el script exporta las dos funciones de tipo script pageInit y validateField.

Comments are closed.