Borrado Masivo de Registros

Antecedentes

Una de las cosas comunes al implementar NetSuite es hacer pruebas, parte fundamental es simular el día a día de la operación, para ello se tiene que crear las transacción que realizan cada una de las áreas de la empresa, al final todas esas transacciones deberán ser borradas, fácil, si, pero tedioso, más si hablamos de algunas 100 transacciones, existe una manera de automatizar/facilitar este proceso, un Script tipo actualización masiva.

¿Cómo borrar masivamente registros?

Simplemente hay que seguir estos pasos:

  1. Crear un Script tipo “Actualización masiva”.
  2. Utilizar el siguiente código fuente:
    • function DeleteRecord(recordType, recordId)
      {
          try
          {
              nlapiDeleteRecord(recordType, recordId);
          }
          catch(error)
          {
              //logica de manejo de errores.
          }
      }
      
  3. Implementar el Script en el tipo de registro a borrar.
  4. Ir a Listas > Actualización masiva > Actualizaciones masivas > Actualizaciones personalizadas
  5. Seleccionar el tipo de registro y el Script creado en el paso 1
  6. Introducir “criterios” y “resultados”
  7. Presionar el botón Vista previa
  8. Presionar el botón Ejecutar actualización
  9. Repetir los pasos 3 – 8 hasta completar el borrado de registros.

Nota: la solución arriba implementada funciona tanto en registros personalizados como en Nativos.

¿Cómo podemos ayudar?

NetSuite es una gran plataforma que configurada adecuadamente puede dar resultados extraordinarios en su negocio. En IMR contamos con la experiencia y conocimientos para apoyar el logro de sus objetivos. Si necesita ayuda, por favor contactanos.

Formularios en Línea y su color

Antecedentes

En la implementación de uno de nuestros clientes tuvimos la necesidad de colocar un formulario en linea (Suitlet sin inicio de sesión), algo que sin duda no representa un reto, sin embargo, el cliente nos solicito cambiar los colores del formulario, es sabido por todos que los Scripts no manipulan el Look & Feel de NetSuite, mucho menos manipulan el DOM de la página web.

¿Que hacer para cambiar los colores delos formularios en línea?

Solo debemos ejecutar los siguientes pasos:

  1. Ir a Configuración > Estructura del sitio > Configurar sitio web
  2. Clic en la pestaña Aspecto
  3. Seleccionar el tema que mas nos guste en Tema de Color del Sitio Web

Tema: Básico : Azul y gris

Captura de pantalla de 2015-06-26 16:15:47

Tema: Básico : Piedra natural

Captura de pantalla de 2015-06-26 16:12:54

Podemos seleccionar entre una basta cantidad de temas pre-configurados o crear nuestro propio tema en Configuración> Estructura del sitio > Temas de color.

¿Cómo podemos ayudar?

NetSuite es una gran plataforma que configurada adecuadamente puede dar resultados extraordinarios en su negocio. En IMR contamos con la experiencia y conocimientos para apoyar el logro de sus objetivos. Si necesita ayuda, por favor contactanos.

Cuando los scripts de Netsuite interfieren con la velocidad y el performance.

Antecedentes

En el desarrollo de la configuración de Netsuite, principalmente en el diseño y configuración de la solución, es común encontrar escenarios en dónde es requerido realizar scripts o desarrollos para personalización, que van más allá de la configuración nativa de la herramienta.

Normalmente son adecuaciones y automatizaciones requeridas por los procesos de negocio. Estas adecuaciones, pueden tener un impacto en la velocidad de las transacciones y en ocasiones es interesante conocer como ajustar y nivelar los requerimientos de negocio vs el desempeño.

El monitor de desempeño de scripts.

En general creo que los mejores scripts son los que no se requieren. Pero si el escenario demanda la creación de un script, el primer paso es elegir bien el tipo de script requerido. En Netsuite, es posible crear varios tipos de scripts, y estos pueden tener un comportamiento distinto. Los más comunes son client, user event, scheduled y RESTlets.

Si partimos de una buena definición, el performance será mejor.

Ahora bien, aun con una buena definición, es muy común que se requiera conocer que scripts están afectando una transacción y como. Para de esta forma poder tomar decisiones informadas respecto a que y como ajustar.

Ahí es dónde el Script Performance Monitor de Netsuite, puede resultar de gran ayuda, por que nos proporciona información valiosa respecto a que está afectando a nuestra transacción.

Permite ver una lista de las transacciones en un periodo y conocer como ha sido su desempeño.
Permite ver una lista de las transacciones en un periodo y conocer como ha sido su desempeño.

Así mismo nos presenta de manera gráfica que es lo que está tomando mayor tiempo. Luego de ver los impactos, normalmente podemos encontrar formas de automatizar aún más o bien eliminar algunos scripts que no agregan valor y que pueden ser realizados de manera diferente o bien mediante ajustes al proceso de negocio.

Script Performance Monitor
Gráfico de impacto de Sripts en una transacción.

En la pasada reunión de usuarios, SuiteWorld 2015, se presentó lo que creo será la versión dos del monitor. Mucho más detalle de cada transacción, sus impactos, etc. etc. Algo que sin duda será de mucha utilidad, sobre todo cuando los requerimientos son complejos.

¿Cómo podemos ayudar?

NetSuite es una gran plataforma que configurada adecuadamente puede dar resultados extraordinarios en su negocio. En IMR contamos con la experiencia y conocimientos para apoyar el logro de sus objetivos. Si necesita ayuda, por favor contactanos.

Borrado Masivo de Registros

Antecedentes

Una de las cosas más comunes en NetSuite es que con el paso del tiempo llegamos a acumular una gran cantidad de registros, muchos de ellos nunca se usaron y probablemente jamas se usarán, otros ya no tienen razón de existir, lo que nos lleva a querer eliminarlos, lo cual es sencillo (Editar > Más acciones > Eliminar), pero cuando son muchos registros esta tarea se vuelve muy tediosa.

Por suerte existe el borrado masivo de registros, ahora te mostramos como utilizarlo.

¿Como borrar registros de manera masiva?

Solo debemos ejecutar los siguientes pasos:

  1. Crea un Script tipo Actualización masiva. 
    • El Script debe contener el siguiente código:
      function DeleteRecord(recordType, recordId)
      {
          try
          {
              nlapiDeleteRecord(recordType, recordId);
          }
          catch(error)
          {
          	if(error instanceof nlobjError)
              {
            	    var errorCode 	 = returnBlank(error.getCode());
          	    var errorDetails 	 = returnBlank(error.getDetails());
          	    var errorID 	 = returnBlank(error.getId());
          	    var errorInternalID	 = returnBlank(error.getInternalId());
          	    var errorStackTrace	 = returnBlank(error.getStackTrace());
          	    if(errorStackTrace != '')
          	    {
          		errorStackTrace	 = errorStackTrace.join();
          	    }
          	    var errorUserEvent 	 = returnBlank(error.getUserEvent());
                  nlapiLogExecution( 'ERROR', 'Error Code',errorCode);
                  nlapiLogExecution( 'ERROR', 'Error Details',errorDetails);
                  nlapiLogExecution( 'ERROR', 'Error ID',errorID);
                  nlapiLogExecution( 'ERROR', 'Error Internal ID',errorInternalID);
                  nlapiLogExecution( 'ERROR', 'Error StackTrace',errorStackTrace);
                  nlapiLogExecution( 'ERROR', 'Error UserEvent',errorUserEvent);
              }
              else
              {
                  var errorString	 = returnBlank(error.toString());
                  nlapiLogExecution( 'ERROR', 'Unexpected Error',errorString);
              }
          }
      }
      
    • Crea una implementación por cada tipo de registro que quieras borrar.
  2. Ir a Listas > Actualización masiva > Actualizaciones masivas > Actualizaciones personalizadas > [Registro a borrar] > [Script creado en el paso 1]
  3. Filtra los registros que deseas borrar.
  4. Presiona el botón Vista previa.
  5. Presiona el botón Ejecutar actualización.

Importante: antes de borrar registros debemos de asegurarnos que no hay dependencias, ejemplo, un Lead tiene asignada un Evento.

¿Cómo podemos ayudar?

NetSuite es una gran plataforma que configurada adecuadamente puede dar resultados extraordinarios en su negocio. En IMR contamos con la experiencia y conocimientos para apoyar el logro de sus objetivos. Si necesita ayuda, por favor contactanos.

Preferencias Generales & Parámetros personalizados

Antecedentes

Las Preferencias generales de NetSuite como su nombre lo indica, son preferencias generales disponibles para todas las subsidiarias y empleados, las cuales indican o establecen los parámetros con los que la cuenta de NetSuite va a funcionar. Sin embargo, es común, que al implementar NetSuite surjan procesos personalizados que requieran parámetros, un error común es dejar estos parámetros en Hard Code, ahora te mostramos como crear preferencias generales personalizadas y utilizarlos como parámetros para los procesos.

¿Como crear preferencias generales personalizadas?

Solo debemos ejecutar los siguientes pasos:

  1. Ir al Script deseado.
  2. Clic en la pestaña Parámetros
  3. Clic en Nuevo parámetro
  4. Ingresar la información solicitada (es indispensable seleccionar Empresa en el campo Preferencia)
  5. Guardar
param
Parámetro del Script
prefere
Preferencia general creada a través de parámetro de Script.

Importante: es probable que nuestros Scripts compartan parámetros, y para esos casos recomendamos lo siguiente:

  1. Crear un Script tipo Suitelet 
  2. Implementar el Script (marcar la opción Disponible sin inicio de sesión)
  3. Crear todos los parámetros genéricos a compartir.
  4. Utilizar el siguiente código fuente:
    •   
      //El siguiente código fuente regresara TODOS los parámetros del script.
      //returnBlank es una función de ejemplo; asegura que el dato no sea null o undefined
      //Base64 es una función de ejemplo; manipula el Base 64
      var context		= nlapiGetContext();
      var scriptId		= returnBlank(context.getScriptId());
      var script_filters	= new Array();
          script_filters.push(new nlobjSearchFilter('scriptid',null,'is',scriptId));
      var script_results	= returnBlank(nlapiSearchRecord('script', null, script_filters, null));
      var script_id		= script_results[0].getId();
      var script_record	= nlapiLoadRecord('script', script_id);
      var parameter_lines	= script_record.getLineItemCount('parameters');
      var data				= new Object();
      for(var i=1;i<=parameter_lines;i++)
      {
      	var param_name	 = script_record.getLineItemValue('parameters', 'internalid', i);
      	var param_value  = returnBlank(context.getSetting('SCRIPT', param_name));
      	data[param_name] = param_value;
      }
      data	= JSON.stringify(data);
      data	= Base64.encode(data);
      response.write(data);
      
  5. Hacer un Request a dicho Script  cada que sea necesario.
    • Nota: El Request regresará una cadena codificada en Base 64 por lo que se tendrá que decodificar y posteriormente convertir en un objeto JSON

¿Cómo podemos ayudar?

NetSuite es una gran plataforma que configurada adecuadamente puede dar resultados extraordinarios en su negocio. En IMR contamos con la experiencia y conocimientos para apoyar el logro de sus objetivos. Si necesita ayuda, por favor contactanos.

Scripts programados: tiempo de ejecución

ANTECEDENTES

Unos de los tipos de scripts que se pueden crear en NetSuite son los programados. Estos scripts son como cualquier otro, con la diferencia que se le puede configurar en que momento se van a ejecutar: fecha, hora, periodo, etc. Pero curiosamente solo tiene fecha de inicio y hora de inicio.

¿Por cuanto tiempo se ejecutaran los scripts programados?

Los scripts programados se ejecutan según la fecha y/o hora que se indiquen, es decir, si le indicamos que se ejecute el 27/3/2015, solo se ejecutara ese día de 00:01 a.m. a 11:59 p.m. Por otro lado si se especifica que se ejecutara, por ejemplo, cada día con Hora de inicio a las 8 p.m. entonces se ejecutará todos los días de 8 p.m. a 11:59 p.m. o dicho de otro modo, desde las 8 p.m. y hasta que se termine el día.

Creación de Script programado
Creación de Script programado

¿COMO PODEMOS AYUDAR?

NetSuite es una gran plataforma que configurada adecuadamente puede dar resultados extraordinarios en su negocio. En IMR contamos con la experiencia y conocimientos para apoyar el logro de sus objetivos.  Si necesita ayuda, por favor contactanos.

Flujo de IVA

Antecedentes

El SAT permite al contribuyente la facilidad de enterar el IVA en base al flujo de caja o efectivo, es decir, se paga hasta que se efectúa la cobranza y de igual forma, se acredita hasta que efectivamente se liquida al proveedor.

¿Como automatizo el proceso de Reclasificación de IVA?

IMR cuenta con un complemento que realiza de manera automática la Reclasificación de IVA, y solo requiere indicar las cuentas afectadas y las transacciones disparadoras de la reclasificación.

Captura de pantalla de 2015-03-17 09:00:28 Captura de pantalla de 2015-03-17 09:00:36

Al realizar esta configuración NetSuite nos realizara la reclasficación de IVA después de guardar, adicional a esto, podemos consultar los auxiliares de dichas cuentas y nos dará un detalle que transacciones están pendientes de reclasificación y cuales ya fueron reclasificadas.

¿Cómo podemos ayudar?

NetSuite es una gran plataforma que configurada adecuadamente puede dar resultados extraordinarios en su negocio. En IMR contamos con la experiencia y conocimientos para apoyar el logro de sus objetivos. Si necesita ayuda, por favor contactanos.