Descripción general
Los scripts programados en NetSuite permiten automatizar tareas recurrentes como la limpieza, la generación de informes y la actualización de registros. Para principiantes, esta es una de las maneras más eficaces de reducir el trabajo manual.
En esta guía, crearemos un script programado sencillo que se ejecuta cada noche para limpiar datos obsoletos o innecesarios (por ejemplo, cerrar pedidos de venta antiguos que están en "Pendiente de cumplimiento").
Guía paso a paso: Creación e implementación de un script programado
1. Inicie sesión con el rol de administrador o acceso a scripts
- Vaya a Personalización > Scripts > Scripts > Nuevo.
2. Cargue el archivo de script
- En Archivo de script, cargue el archivo `.js` que contiene la lógica del script programado.
- Haga clic en Guardar y luego en Crear registro de script.
3. Cree el registro de script
- Introduzca un nombre (p. ej., "Limpieza de datos nocturna").
- Guarde el registro.
- Haga clic en "Implementar".
4. Implemente el script
- En la subpestaña "Implementaciones", haga clic en "Nueva implementación".
- Seleccione:
• Estado: Publicado
• Nivel de registro: Depuración (recomendado durante las pruebas)
• Ejecución programada: Seleccione "Diariamente" y elija las 2:00 a. m. u otra hora con poco tráfico.
- Guardar la implementación.
Código de muestra: Limpieza nocturna de pedidos de venta antiguos :
/**
• @NApiVersion 2.x
• @NScriptType ScheduledScript
• @NModuleScope SameAccount
*/ define(['N/record', 'N/search', 'N/log'], function(record, search, log) { function execute(context) { try { var soSearch = search.create({ type: search.Type.SALES_ORDER, filters: [ ['status', 'anyof', 'SalesOrd:B'], // Pending Fulfillment 'AND', ['datecreated', 'onorbefore', 'daysago90'] // older than 90 days ], columns: ['internalid'] });
soSearch.run().each(function(result) {
var soId = result.getValue('internalid');
var soRec = record.load({
type: record.Type.SALES_ORDER,
id: soId,
isDynamic: false
});
var lineCount = soRec.getLineCount({sublistId: 'item'});
for (var i = 0; i < lineCount; i++) {
// Set the "isclosed" field to true for each line
soRec.setSublistValue({
sublistId: 'item',
fieldId: 'isclosed',
line: i,
value: true
});
}
soRec.save();
log.debug('Closed Sales Order', 'ID: ' + soId);
return true;
});
} catch (e) {
log.error('Scheduled Script Error', e.message);
}
}
return { execute: execute };
});
Prueba del script
• Cree algunos pedidos de venta de prueba antiguos (de más de 90 días) con el estado "Pendiente de cumplimiento".
• Edite el registro de implementación del script e implemente el script con un disparador manual (Ejecutar ahora) para confirmar que se ejecuta correctamente.
• Compruebe que los pedidos de venta estén actualizados a "Cerrado".
Oracle + NetSuite Inc. no garantiza ni realiza ninguna declaración sobre el uso, los resultados del uso, la precisión, la puntualidad ni la integridad de los datos o la información relacionados con el código de muestra. Oracle + NetSuite Inc. renuncia a todas las garantías, expresas o implícitas, y en particular, renuncia a todas las garantías de comerciabilidad, idoneidad para un fin determinado y las garantías relacionadas con el código, o cualquier servicio o software relacionado con el mismo.
Oracle + NetSuite Inc. no será responsable de ningún daño directo, indirecto o consecuente, ni de ningún coste de ningún tipo que surja de cualquier acción realizada por usted u otros en relación con el código de muestra.
Visite la sección SuiteCloud en la categoría Nuevo en NetSuite para explorar una variedad de guías fáciles de usar que lo guiarán a través de las funciones de contabilidad esenciales en NetSuite.