En esta ocación, vamos a crear un script de tipo [User Event] desde cero.
Antes de iniciar necesitamos explicar qué es un User Event y para nuestra suerte existe un excelente video que explica esto:
[SuiteScript] An Overview of NetSuite's User Event scripts
Tambien podemo leer el capitulo 22 de la documentación Oficial de Netsuite:
Documentación Oficial Netsuite - Chapter 22 User Event Scripts
Esbozando un poco la definición tenemos que:
Despues de un poco de teoría vamos manos a la obra.
Para crear mi código usaré el SuiteCloud IDE (mas adelante en otra entrada explicare como configurarlo) para poder subir mi código a Netsuite.
El primer paso es escribir la estructura básica de un [User Event]. Como yo uso el SuiteCloud IDE, al crear un nuevo script automaticamente aparece, pero en caso de que no la conozcas a continuación te la presento:
Para hacer este ejemplo mas interactivo, crearemos un record personalizado en nuestra plataforma para poder trabajar con él. El proceso lo explicaré en otra entrada para no hacer demasiado largo éste.
El nuevo record lo llamaremos IP | UE Example.
Como podemos ver, tiene dos campos de tipo Free-Form Text que nos ayudará a para mostrar nuestra información.
Ahora resgitraremos nuestro script en Netsuite y para esto necesitamos subir nuestro script dentro de alguna carpeta del [File Cabinet > Suitescript].
Ahora ingresaremos al menú [Customizartions > Scripting > Scripts > New] donde daremos de alta nuestro nuevo script.
En la primera pantalla escogeremos el script que acabamos de poner en nuestro [File Cabinet] y que se mostrará en la lista desplegable una vez que hayasmos introducido el nombre de nuestro archivo.
Despues de que Netsuite encontró el archivo, necesitamos darle clic al botón [Create Script Record]. Con esto llegaremos a la siguiente interfaz donde debemos de ingresar los datos basico del script.
Hay algunos datos que Netsuite establece directamente, como por ejemplo la version de SuiteScript del archivo (API Version) y el tipo del script (Type), debido a que dentro de la estructura básica del script vienen definidos en las notaciones.
Dejamos todo lo demás por default y presionamos [Save]. Hay algunas cosas que podemos notar cuando nuestro script se ha guardado con exito.
Como podemos ver en la imagen Netsuite complementó nuestro ID que definimos anteriormente con el sufijo [customscript], tal como lo hizo cuando creamos nuestro record personalizado. Tambien detectó automaticamente que hemos implementado los tres tipos de eventos (Entry Points) en nuestro script, esto es porque en nuestro script tenemos definido cada uno.
En la imagen podemos ver resaltados los nombres que Netsuite puede reconocer. Si nosotros modificaramos cualquiera de ellos no se tendría forma de saber a cual de ellos pertence cada Entry Point. El nombre de las funciones que asignamos a cada Entry Point puede ser cualquiera que elijamos, por convencion siempre usamos el mismo.
Una vez que hayamos registrado nuestro script, debemos definir cuando y como se va a ejecutar, digamos algo asi como decirle a Netsuite en que contexto nuestro script estará trabajando y con que caracteristicas. Para esto debemos crear un "Deployment" y algunos detalles que podemos configurar en nuestro deplyment son las siguientes:
Existen algunas cosas que no comprenderas del todo si nunca haz creado un script en netsuite, pero en otras entradas adelante explicaré a detalle cada opción de un deployement. En esta ocación solamenten configuraré los aspectos básicos para mantener sencilla esta entrada.
Para crear nuestro deployment debemos ingresar en la interfaz principal del script que acabamos de crear y presionar el botón [Deploy Script].
Despues Netsuite nos guiará al formulario donde definimos los detalles del deployment.
Como vemos en la imagen anterior son varios las opciones que demeos definir. Entre ellas he señalado con un cuadro rojo las más importantes.
Antes de iniciar necesitamos explicar qué es un User Event y para nuestra suerte existe un excelente video que explica esto:
[SuiteScript] An Overview of NetSuite's User Event scripts
Tambien podemo leer el capitulo 22 de la documentación Oficial de Netsuite:
Documentación Oficial Netsuite - Chapter 22 User Event Scripts
Esbozando un poco la definición tenemos que:
Los [User Event] son scripts que se ejecutan dentro del servidor de NetSuite. En específico, estos se ejecutan cuando los usuarios realizan ciertas acciones en los records, tales como crear, cargar, actualizar, copiar, eliminar o enviar. La mayoria de los records, ya sea personalizados o nativos de Netsuite, admiten este tipo de scripts.En otras palabras dichos scripts se ejecutan cada que un usuario produzca una acción en un record. Los [User Event] scripts tienen 3 tipos de eventos (Entry Points) bajo los cuales nosotros podemos ejecutar nuestro código. Dichos eventos son los siguientes:
- Before Load: este evento ocurre cuando tiene lugar una operación de lectura en un record. Es decir, cuando el usuario accesa a un record, ya sea para visializarlo, editarlo o incluso crearlo, nuestro código se ejecutará dandonos la oportunidad de inicializar o realizar operaciones antes de obtener nuestro record.
- Before Submit: este evento se produce cuando se envía un registro, pero antes de que la información de nuestro record sea ingresada en la base de datos, por lo cual nos permite realizar operaciones con la información ingresada y guardarlos junto con el record. Un evento Before Submit ocurre cuando un usuario hace clic en Guardar (o Enviar) en un record.
- After Submit: este evento ocurre después de que los cambios en el record se confirman en la base de datos, por lo cual nos permite asegurar que el record fue creado o editado con exito y realizar operaciones posteriores o complemetarias. Un evento After Submit se produce después de que un usuario ha hecho clic en Guardar (o Enviar) en un registro.
Despues de un poco de teoría vamos manos a la obra.
Para crear mi código usaré el SuiteCloud IDE (mas adelante en otra entrada explicare como configurarlo) para poder subir mi código a Netsuite.
El primer paso es escribir la estructura básica de un [User Event]. Como yo uso el SuiteCloud IDE, al crear un nuevo script automaticamente aparece, pero en caso de que no la conozcas a continuación te la presento:
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* @NApiVersion 2.x | |
* @NScriptType UserEventScript | |
* @NModuleScope SameAccount | |
*/ | |
define([], | |
function() { | |
/** | |
* Function definition to be triggered before record is loaded. | |
* | |
* @param {Object} scriptContext | |
* @param {Record} scriptContext.newRecord - New record | |
* @param {string} scriptContext.type - Trigger type | |
* @param {Form} scriptContext.form - Current form | |
* @Since 2015.2 | |
*/ | |
function beforeLoad(scriptContext) { | |
} | |
/** | |
* Function definition to be triggered before record is loaded. | |
* | |
* @param {Object} scriptContext | |
* @param {Record} scriptContext.newRecord - New record | |
* @param {Record} scriptContext.oldRecord - Old record | |
* @param {string} scriptContext.type - Trigger type | |
* @Since 2015.2 | |
*/ | |
function beforeSubmit(scriptContext) { | |
} | |
/** | |
* Function definition to be triggered before record is loaded. | |
* | |
* @param {Object} scriptContext | |
* @param {Record} scriptContext.newRecord - New record | |
* @param {Record} scriptContext.oldRecord - Old record | |
* @param {string} scriptContext.type - Trigger type | |
* @Since 2015.2 | |
*/ | |
function afterSubmit(scriptContext) { | |
} | |
return { | |
beforeLoad: beforeLoad, | |
beforeSubmit: beforeSubmit, | |
afterSubmit: afterSubmit | |
}; | |
}); |
Para hacer este ejemplo mas interactivo, crearemos un record personalizado en nuestra plataforma para poder trabajar con él. El proceso lo explicaré en otra entrada para no hacer demasiado largo éste.
El nuevo record lo llamaremos IP | UE Example.
Como podemos ver, tiene dos campos de tipo Free-Form Text que nos ayudará a para mostrar nuestra información.
Ahora resgitraremos nuestro script en Netsuite y para esto necesitamos subir nuestro script dentro de alguna carpeta del [File Cabinet > Suitescript].
Ahora ingresaremos al menú [Customizartions > Scripting > Scripts > New] donde daremos de alta nuestro nuevo script.
En la primera pantalla escogeremos el script que acabamos de poner en nuestro [File Cabinet] y que se mostrará en la lista desplegable una vez que hayasmos introducido el nombre de nuestro archivo.
Hay algunos datos que Netsuite establece directamente, como por ejemplo la version de SuiteScript del archivo (API Version) y el tipo del script (Type), debido a que dentro de la estructura básica del script vienen definidos en las notaciones.
Dejamos todo lo demás por default y presionamos [Save]. Hay algunas cosas que podemos notar cuando nuestro script se ha guardado con exito.
Como podemos ver en la imagen Netsuite complementó nuestro ID que definimos anteriormente con el sufijo [customscript], tal como lo hizo cuando creamos nuestro record personalizado. Tambien detectó automaticamente que hemos implementado los tres tipos de eventos (Entry Points) en nuestro script, esto es porque en nuestro script tenemos definido cada uno.
En la imagen podemos ver resaltados los nombres que Netsuite puede reconocer. Si nosotros modificaramos cualquiera de ellos no se tendría forma de saber a cual de ellos pertence cada Entry Point. El nombre de las funciones que asignamos a cada Entry Point puede ser cualquiera que elijamos, por convencion siempre usamos el mismo.
Una vez que hayamos registrado nuestro script, debemos definir cuando y como se va a ejecutar, digamos algo asi como decirle a Netsuite en que contexto nuestro script estará trabajando y con que caracteristicas. Para esto debemos crear un "Deployment" y algunos detalles que podemos configurar en nuestro deplyment son las siguientes:
- Cuando se ejecutará el script
- Quien y bajo que circunstancias puede activar el script
- Definir que tipo de logs podemos activaren nuestro script
- Los valores con lo que se deben inicializar nuestros parametros personalizados.
- Definir en que records se ejecutara el scirp (cuando aplique)
Existen algunas cosas que no comprenderas del todo si nunca haz creado un script en netsuite, pero en otras entradas adelante explicaré a detalle cada opción de un deployement. En esta ocación solamenten configuraré los aspectos básicos para mantener sencilla esta entrada.
Para crear nuestro deployment debemos ingresar en la interfaz principal del script que acabamos de crear y presionar el botón [Deploy Script].
Despues Netsuite nos guiará al formulario donde definimos los detalles del deployment.
- ROLES: Nos permite definir que roles podras activar el script.
- STATUS: Nos permite señalar si nuestro script esta listo para ser publicado para todos los usuarios. Tiene varios estados dispónibles, entre ellos "Testing" en el cual el script solo estará disponible para la persona que creó el script y "Release" que nos permite hacerlo público.
- LOG LEVEL: Nos permite que tipo de log se puede ejecutar.
- EXECUTE AS ROLE: Nos permite ejecutar el script con los permisos de un rol en especifico o dejarlo para que se ejecute con los permisos del usuario que activa el script.
- APPLIES TO: El mas importante. Nos dice en que record nuestro script se ejecutará.
El nombre y el ID son a tu gusto, como lo hemos hecho con todos los demás. El checkbox DEPLOYED esta marcado por default y nos dice que el deployment esta activo. Presionamos [Save] y estamos listos para iniciar, por fin, a trabajar con nuestro código.
Primero debemos ingresar en la pagina del record que creamos (puedes ingresar el nombre del record directamente en la busqueda general) y crear un nuevo record.
Solamentente ingresamos el nombre del record y le damos [Save].
Ya que tenemos nuestro record, podemos inicar con nuestro primer [Entry Point] llamado [BeforeLoad]. Para poderlo ejemplificar, haremos que en el campo [Entrada] se refleje la fecha y hora en la que se ejecuta dicho evento. En el codigo aparecerá de la siguiente manera.
[Read More]
[Read More]
amigo esta genial pero quisiera saber un poco mas de como se implelenta el codigo en si en el js.
ResponderEliminarMuchísimas gracias. Sigue subiendo contenido por favor.
ResponderEliminar