Restlet Netsuite

Busquedas

Para realizar una búsqueda en múltiples tipos de registros (custom records) en NetSuite usando SuiteScript 2.0, puedes utilizar la función search.create() junto con los criterios y filtros adecuados. Aquí tienes un ejemplo de cómo hacerlo:

/**
 * @NApiVersion 2.x
 * @NScriptType Suitelet
 * @NModuleScope SameAccount
 */

define(['N/search'], function (search) {

  function executeSearch() {
    // Crear objeto de búsqueda
    var mySearch = search.create({
      type: [
        'customrecord1', // Primer tipo de registro personalizado
        'customrecord2' // Segundo tipo de registro personalizado
      ],
      filters: [
        // Agrega tus filtros personalizados aquí
      ],
      columns: [
        // Agrega tus columnas personalizadas aquí
      ]
    });

    // Ejecutar la búsqueda
    var searchResult = mySearch.run().getRange({
      start: 0,
      end: 1000 // Cambia este número según tus necesidades
    });

    // Procesar los resultados de la búsqueda
    searchResult.forEach(function (result) {
      var recordType = result.recordType;
      var recordId = result.id;

      // Realizar acciones adicionales con cada registro encontrado
      // ...
    });
  }

  function onRequest(context) {
    executeSearch();

    // Resto del código de la Suitelet
  }

  return {
    onRequest: onRequest
  };
});

Aquí tienes un ejemplo de cómo se utiliza la función lookupField() en un script de SuiteScript:

/**
 * @NApiVersion 2.x
 * @NScriptType UserEventScript
 * @NModuleScope SameAccount
 */

define(['N/record'], function (record) {
  
  function beforeSubmit(context) {
    var currentRecord = context.newRecord;
    
    // Ejemplo de búsqueda de un campo específico utilizando lookupField()
    var customerName = record.lookupField({
      type: record.Type.CUSTOMER, // Tipo de registro a buscar (en este ejemplo, Customer)
      id: currentRecord.getValue('entity'), // ID del registro actual
      fieldId: 'companyname' // ID del campo a buscar
    });
    
    if (customerName) {
      log.debug('Customer Name:', customerName);
    }
  }
  
  return {
    beforeSubmit: beforeSubmit
  };
});


Aquí tienes un ejemplo de cómo podría ser el código de un script tipo RESTlet en NetSuite 2.0:

/**
 * @NApiVersion 2.x
 * @NScriptType Restlet
 * @NModuleScope SameAccount
 */

define(['N/search'], function (search) {
  
  function get(context) {
    // Crea y ejecuta la búsqueda
    var mySearch = search.create({
      type: search.Type.CUSTOMER, // Tipo de registro a buscar (en este ejemplo, Customer)
      filters: [], // Criterios de búsqueda (puedes agregar filtros según tus necesidades)
      columns: ['internalid', 'companyname', 'email'] // Campos a recuperar
    });
    
    var searchResults = mySearch.run().getRange({
      start: 0,
      end: 100 // Número máximo de resultados a obtener
    });

    // Procesa los resultados de la búsqueda y organízalos en un objeto JSON
    var data = [];
    searchResults.forEach(function (result) {
      var customerId = result.getValue({ name: 'internalid' });
      var companyName = result.getValue({ name: 'companyname' });
      var email = result.getValue({ name: 'email' });

      data.push({
        customerId: customerId,
        companyName: companyName,
        email: email
      });
    });

    // Devuelve los datos como una cadena de texto en formato JSON
    return JSON.stringify({
      success: true,
      data: data
    });
  }
  
  return {
    get: get
  };
});



Enviar un correo 
// Enviar el correo electrónico
email.send({
      author: -5, // ID del empleado o -5 Administrador
      recipients: recipientEmail,
      subject: subject,
      body: body
});

Comentarios