[NetSuite] Me gustaría tener un Suitescript para establecer el campo de elemento de la sublista "Crear orden de compra" en "DropShip" cuando se crea una orden de venta a través de la interfaz de usuario. También me gustaría agregar otro "si" para verificar un campo personalizado.
Encontré un artículo de SuiteAwners sobre cómo configurar ese campo:
" Estableciendo el campo Create PO en nulo a través de SuiteScript " ID de respuesta: 35911 Conseguí que Suitescript 1.0 funcionara (lo conseguí para configurar 'createpo' en 'DropShip', y no he podido hacerlo y otra instrucción if para verificar un campo personalizado en la orden de venta)
Aquí está el código de Suitescript 1.0:
function beforeSubmit(type) { var count = nlapiGetLineItemCount('item'); for (i=1; i<= count; i++) { var currentContext = nlapiGetContext(); //setting of 'createpo' field only happens when the script is triggered via User Interface //add other if conditions here, if needed // 'createpo' values are Null, 'DropShip', or 'SpecOrd' if((currentContext.getExecutionContext() == 'userinterface')) { nlapiSetLineItemValue('item', 'createpo', i, 'DropShip'); } } }
Sé que Suitescript 1.0 está en desuso, así que me encantaría reescribirlo en Suitescript 2.0. Afortunadamente , el artículo de SuiteAwnsers también tiene un código para eso.
Aquí está el código Suitescript 2.0
function beforeSubmit(type){ var count = objRecord.selectLine({ sublistId: 'item', line: i }); for (i=1; i<= count; i++) { var currentContext = runtime.executionContext(); //setting of 'createpo' field only happens when the script is triggered via Web Services //add other if conditions here, if needed if((currentContext.getExecutionContext() == 'webservices')) { objRecord.setSublistValue({ sublistId: 'item', fieldId: 'createpo', line: i, value: null }); } } }
Desafortunadamente, cuando llegué a Crear un nuevo script en Netsuite, solo me dio "Seleccionar tipo de script 1.0" como opción, no "Seleccionar tipo de script 2.0".
Sé que esto es un poco largo, así que si has llegado tan lejos, ¡aplaude! para resumir, hay dos cosas con las que necesito ayuda
1. ¿Cómo puedo agregar un "si" que verifique un valor archivado en la orden de venta "antes de enviar" en Suitescript 1.0?
2. ¿Cómo puedo hacer que funcione suitescript 2.0 (incluido el "si" que verifica un valor archivado en el pedido de ventas "antes de enviarlo")
Solo para que todos sepan que soy realmente nuevo en las secuencias de comandos, por lo que si tiene soluciones, brinde la mayor cantidad de detalles posible.
En primer lugar, debe configurar la versión del script en la parte superior de su script para que se reconozca como la versión 2:
/** * @NApiVersion 2.x * @NScriptType ClientScript * @NModuleScope SameAccount */
A continuación, para su script:
su var de conteo no obtiene un conteo de línea, está seleccionando una línea y le está pasando una var i no instanciada. Debe usar record.getLineCount() en su lugar:
var cuenta = objRecord.getLineCount({ sublistId: 'item' });
Comience su bucle for en 0. En suitescript 2, todas las listas están indexadas en 0.
for (i = 0; i < contar; i++) {
Dado que está haciendo referencia al módulo de tiempo de ejecución, asegúrese de que esté incluido en su declaración de definición.
El guión final podría ser algo como esto:
/** * @NApiVersion 2.x * @NScriptType UserEventScript * @NModuleScope SameAccount */ define( ['N/runtime'], function(Runtime) { function beforeSubmit(context){ // get record from context var objRecord = context.newRecord; // get item list line count var count = objRecord.getLineCount({ sublistId: 'item' }); // start for loop at 0. lines are 0 indexed for (i = 0; i < count; i++) { var currentContext = Runtime.executionContext(); //setting of 'createpo' field only happens when the script is triggered via Web Services //add other if conditions here, if needed if((currentContext.getExecutionContext() == 'webservices')) { objRecord.setSublistValue({ sublistId: 'item', fieldId: 'createpo', line: i, value: 'DropShip' }); } } } return { beforeSubmit: beforeSubmit };
});
Con suerte, esto te ayudará a comenzar al menos. La pregunta es un poco confusa, pero esto debería proporcionarle un script 2.0 funcional para comenzar a trabajar.