This topic contains 0 replies, has 1 voice, and was last updated by gustavo eduardo andrade hernandez 4 years, 6 months ago.

  • Author
    Posts
  • #26118 Score: 0

    gustavo eduardo andrade hernandez
    Member
    • Contributions: 1
    • Level 1
    @gustavo_eduardo_andrade_hernandez

    Good morning to all, who can help me with the following please,

    I have this suitelet, which has a form, makes a search filter and fills a sublist, this sublist has a text field and must be filled with a number, to assign to that row the value.
    Excuse my English

    //, Also specify which field does not work when I apply a filter, // for example "campoitem". some filters work well for example "codigobarra" /** * @NApiVersion 2.0 * @NScriptType suitelet * @NModuleScope public */ define(['N/ui/serverWidget', 'N/search', 'N/log'], function(serverWidget, search, log) { //1 - FUNCION DE CONTENIDO function onRequest(context) { // 2 - CARGAMOS LA BUSQUEDA GUARDAD ESTA BUSQUEDA GUARDAD FUE CREADA EN SUITELE // Y CONTIENE UNO FILTRO EN CRITERIA YA DEFINIDOS QUE AFECTAN A ESTE SCRIPT var busqueda = search.load({ id: 'customsearch_axa_lista_v5_ok' }); try { //CREAMOS UN FORMULARIO var formulario = serverWidget.createForm({ title: 'Formulario de Busqueda' }); // CREAMOS UN GRUPO DE BUSQUEDA INDIVIDUAL TEMPORAL var GrupoBusqueda = formulario.addFieldGroup({ id: 'GrupoBusqueda', label: 'Grupo de Busqueda' }); GrupoBusqueda.isSingleColumn = true; // CREAMOS LOS CAMPO QUE VAN A ENVIAR LOS VALORES formulario.addField({ id: 'codigobarra', type: serverWidget.FieldType.TEXT, label: 'Codigo de Barras', container: 'GrupoBusqueda' }); formulario.addField({ id: 'nombrelinea', type: serverWidget.FieldType.TEXT, label: 'Linea de Producto', container: 'GrupoBusqueda' }); formulario.addField({ id: 'nombrelista', type: serverWidget.FieldType.TEXT, label: 'Lista de asociados', container: 'GrupoBusqueda' }); formulario.addField({ id: 'campoitem', type: serverWidget.FieldType.TEXT, label: 'Seleccionar Producto', source: 'item', container: 'GrupoBusqueda' }); formulario.addField({ id: 'formafarma', type: serverWidget.FieldType.TEXT, label: 'Seleccionar Tipo de producto ("Jarabe/tabletas etc..")', source: 'item', container: 'GrupoBusqueda' }); // CREAMOS UN GRUPO DE BUSQUEDA ENTRE CANTIDAD O PRECIOS COMO BETWEEN var GrupoBusquedaDos = formulario.addFieldGroup({ id: 'GrupoBusquedaDos', label: ' AXA 2019' }); GrupoBusquedaDos.isSingleColumn = true; // CREAMOS LOS CAMPOS QUE VAN A ENVIAR LOS VALORES formulario.addField({ id: 'preciobase1', type: serverWidget.FieldType.CURRENCY, label: 'Precio desde', container: 'GrupoBusquedaDos' }); formulario.addField({ id: 'preciobase2', type: serverWidget.FieldType.CURRENCY, label: 'Precio hasta', container: 'GrupoBusquedaDos' }); formulario.addField({ id: 'ivaporcent1', type: serverWidget.FieldType.PERCENT, label: 'Promocion desde', container: 'GrupoBusquedaDos' }); formulario.addField({ id: 'ivaporcent2', type: serverWidget.FieldType.PERCENT, label: 'Promocion hasta', container: 'GrupoBusquedaDos' }); //CREAMOS LOS BOTONES DE ENVIO Y LIMPIAR formulario.addSubmitButton({ id: 'markall', label: 'Enviar Filtro' }); formulario.addResetButton({ label: 'Limpiar Campos' }); //ENVIAMOS LOS DATOS A UNA PAGINA NUEVA DONDE PUEDO VISUALIZAR MIS CAMPOS context.response.writePage(formulario); //DEPUES DE CREADA LA PAGINA TOMO LOS VALORES AL EDITAR CADA CAMPO // EJECUCION DE PRUEBA SOLO POR CAMPO INDIVIDUAL TEMPORALMENTE var codigobarra = context.request.parameters.codigobarra; var nombrelinea = context.request.parameters.nombrelinea; var nombrelista = context.request.parameters.nombrelista; var campoitem = context.request.parameters.campoitem; var formafarma = context.request.parameters.formafarma; var preciobase1 = context.request.parameters.preciobase1; var preciobase2 = context.request.parameters.preciobase2; var ivaporcent1 = context.request.parameters.ivaporcent1; var ivaporcent2 = context.request.parameters.ivaporcent2; // SI EL CODIGO DE BARRA CONTIENE UN VALOR ENVIAR EL FILTRO SINO PASA AL // OTRO VALOR VALOR Y ASI SUCESIVAMENTE // ESTE CODIGO FUNCIONA NOMBRELINEA if (codigobarra) { // EMPAQUETAMOS LA BUSQUEDA var filtrosArray = busqueda.filters; //CREAMOS EL FILTRO DE BUSQUEDA DEACUERDO AL VALOR OSEA CODIGO DE BARRA var filterOne = search.createFilter({ name: 'upccode', join: 'custrecord_nso_item', operator: search.Operator.STARTSWITH, values: [codigobarra] }); // ENVIAMOS ESE FILTRO A NUESTRO ARRAY filtrosArray.push(filterOne); datos(filtrosArray) // INICIAMOS LA FUNCION DATOS CON EL FILTRO CREADO } // ESTE CODIGO FUNCIONA NOMBRELINEA else if (nombrelinea) { var filterOne = search.createFilter({ name: 'vendorname', join: 'custrecord_nso_item', operator: search.Operator.STARTSWITH, values: [nombrelinea] }); var filtrosArray = busqueda.filters; filtrosArray.push(filterOne); datos(filtrosArray); } // ESTE CODIGO FUNCIONA NOMBRELISTA else if (nombrelista) { var filterOne = search.createFilter({ name: 'name', join: 'CUSTRECORD_AXA_PRU_BOD_CLI', operator: search.Operator.STARTSWITH, values: [nombrelista] }); var filtrosArray = busqueda.filters; filtrosArray.push(filterOne); datos(filtrosArray); } // ESTE CODIGO ACONTINUACION TIENE "ERROR CAMPOITEM" else if (campoitem) { var filterOne = search.createFilter({ name: 'displayname', join: 'custrecord_nso_item', operator: search.Operator.STARTSWITH, values: [campoitem] }); var filtrosArray = busqueda.filters; filtrosArray.push(filterOne); datos(filtrosArray); } // ESTE CODIGO ACONTINUACION TIENE "ERROR FORMAFARMA" else if (formafarma) { var filterOne = search.createFilter({ name: 'custitem_nso_forma_farmaceutica', join: 'custrecord_nso_item', operator: search.Operator.STARTSWITH, values: [formafarma] }); var filtrosArray = busqueda.filters; filtrosArray.push(filterOne); datos(filtrosArray); } // ESTE CODIGO FUNCIONA PRECIOBASE 1 Y 2 else if (preciobase1, preciobase2) { var filterOne = search.createFilter({ name: 'formulanumeric', formula: 'ROUND(({custrecord_nso_costo_maestro}+({custrecord_nso_costo_maestro}*{custrecord_axa_pru_bod_cli.custrecord_nso_margen_2})),0)', operator: search.Operator.GREATERTHAN, values: [preciobase1] }); var filterTwo = search.createFilter({ name: 'formulanumeric', formula: 'ROUND(({custrecord_nso_costo_maestro}+({custrecord_nso_costo_maestro}*{custrecord_axa_pru_bod_cli.custrecord_nso_margen_2})),0)', operator: search.Operator.NOTGREATERTHAN, values: [preciobase2] }); var filtrosArray = busqueda.filters; filtrosArray.push(filterOne, filterTwo); datos(filtrosArray); } // ESTE CODIGO ACONTINUACION TIENE "ERROR PORCENT1 Y PORCENT2" else if (ivaporcent1, ivaporcent2) { var filterOne = search.createFilter({ name: 'custitem_axa_edu_iva', join: 'CUSTRECORD_NSO_ITEM', operator: search.Operator.GREATERTHAN, values: [ivaporcent1] }); var filterTwo = search.createFilter({ name: 'custitem_axa_edu_iva', join: 'CUSTRECORD_NSO_ITEM', operator: search.Operator.NOTGREATERTHAN, values: [ivaporcent2] }); var filtrosArray = busqueda.filters; filtrosArray.push(filterOne, filterTwo); datos(filtrosArray); } return { formulario: formulario }; } catch (e) { log.error('Error al crear el formuraio.', e); } // TERMINA LOS FILTROS DE BUSQUEDA //FUNCION DATOS DONDE MOSTRAREMOS UNA SUBLISTA CON LOS DATOS ENCONTRADOS EN LOS FILTROS function datos(filtrosArray) { // CORREMOS LA BUSQUEDA PARA INGRESAR LA INFORMACION EN UNS SUBLISTA var FiltrosV4 = busqueda.run().getRange({ start: 0, end: 70 }); // CFREAMOS UN NUEVO FORMULARIO QUE CONTENDRA LOS DATOS var form = serverWidget.createForm({ title: 'Datos Filtrados: ' + codigobarra + ' ' + nombrelinea + ' ' + nombrelista + ' ' + campoitem + ' ' + formafarma }); // ACCESO DIRECTO A UN NUEVO FILTRO - LINK form.addPageLink({ type: serverWidget.FormPageLinkType.CROSSLINK, title: 'Nuevo Filtro', url: '/app/site/hosting/scriptlet.nl?script=1358&deploy=1' }); //LLAMO A UN ARCHIVO EXTERNO PARA PODER UTILIZAR LOS DATOS CON UN BOTON form.clientScriptModulePath = 'SuiteScripts/GHpruebaScript/ClientScript/GHclientScript.js'; // CONTENEDOR DE LOS DATOS var sublist = form.addSublist({ id: 'sublist', type: serverWidget.SublistType.LIST, //INLINEEDITOR, LIST','EDITOR', or 'STATICLIST' label: 'Listado de productos' }); // creamos el ID interno de verificacion var idField = sublist.addField({ id: 'custpage_registro_interno_id', label: 'Internal ID', type: serverWidget.FieldType.TEXT }); // creamos el campo de ingreso cantidad var cantidad = sublist.addField({ id: 'custpage_cantidad', label: 'Cantidad Producto', type: serverWidget.FieldType.INTEGER }); cantidad.updateDisplayType({ displayType: serverWidget.FieldDisplayType.ENTRY }); // NOMBRE DE CADA COLUMNA DE LA SUBLISTA sublist.addField({ id: 'custpage_empresa', label: 'Empresa', type: serverWidget.FieldType.TEXT }); sublist.addField({ id: 'custpage_codigobarra', label: 'Codigo de Barras', type: serverWidget.FieldType.TEXT }); sublist.addField({ id: 'custpage_producto', label: 'Producto', type: serverWidget.FieldType.TEXT }); sublist.addField({ id: 'custpage_linea', label: 'Linea', type: serverWidget.FieldType.TEXT }); sublist.addField({ id: 'custpage_precio', label: 'Precio Venta', type: serverWidget.FieldType.CURRENCY }); sublist.addField({ id: 'custpage_descuento', label: 'Decuento', type: serverWidget.FieldType.PERCENT }); sublist.addField({ id: 'custpage_predesc', label: 'Precio Descuento', type: serverWidget.FieldType.CURRENCY }); sublist.addField({ id: 'custpage_iva', label: 'IVA', type: serverWidget.FieldType.PERCENT }); sublist.addField({ id: 'custpage_preiva', label: 'Precio IVA', type: serverWidget.FieldType.CURRENCY }); sublist.addField({ id: 'custpage_promo', label: 'Fecha Promocion', type: serverWidget.FieldType.DATE }); sublist.addField({ id: 'custpage_generico', label: 'Generico', type: serverWidget.FieldType.TEXT }); sublist.addField({ id: 'custpage_farma', label: 'FormFarma', type: serverWidget.FieldType.TEXT }); sublist.addField({ id: 'custpage_saldo', label: 'Saldo', type: serverWidget.FieldType.INTEGER }); sublist.addMarkAllButtons(); // CREAMOS UN CAMPO PARA INSERTAR INFORMACION DE CANTIDAD // LA IDEA ESQUE ESTE CAMPO AL SER EDITADO CREE UN FIELDCHANGE QUIEN TOMARA LOS DATOS // OSEA LA CANTIDAD Y TOMARA COMO REFERENCIA EL ID DE LA FILA DONDE SE ESCRIBIO. //SECCIONAMOS LA BUSQUEDA CON SUS COLUMNAS var sublist = form.getSublist({ id: 'sublist' }); for (var i = 0; i < FiltrosV4.length; i++) { var columns = FiltrosV4[i].columns; // COLUMNA EN SU POSICION sublist.setSublistValue({ id: 'custpage_empresa', line: i, value: [FiltrosV4[i].getValue(columns[0])] }); sublist.setSublistValue({ id: 'custpage_codigobarra', line: i, value: [FiltrosV4[i].getValue(columns[2])] }); sublist.setSublistValue({ id: 'custpage_producto', line: i, value: [FiltrosV4[i].getText(columns[3])] }); sublist.setSublistValue({ id: 'custpage_linea', line: i, value: [FiltrosV4[i].getValue(columns[4])] }); sublist.setSublistValue({ id: 'custpage_precio', line: i, value: [FiltrosV4[i].getValue(columns[5])] }); sublist.setSublistValue({ id: 'custpage_descuento', line: i, value: [FiltrosV4[i].getValue(columns[6])] }); sublist.setSublistValue({ id: 'custpage_predesc', line: i, value: [FiltrosV4[i].getValue(columns[7])] }); sublist.setSublistValue({ id: 'custpage_iva', line: i, value: [FiltrosV4[i].getValue(columns[8])] }); sublist.setSublistValue({ id: 'custpage_preiva', line: i, value: [FiltrosV4[i].getValue(columns[9])] }); sublist.setSublistValue({ id: 'custpage_promo', line: i, value: [FiltrosV4[i].getValue(columns[10])] }); sublist.setSublistValue({ id: 'custpage_generico', line: i, value: [FiltrosV4[i].getValue(columns[12])] }); sublist.setSublistValue({ id: 'custpage_farma', line: i, value: [FiltrosV4[i].getText(columns[13])] }); sublist.setSublistValue({ id: 'custpage_registro_interno_id', line: i, value: FiltrosV4[i].id }); } // CREAMOS UN BOTON DONDE ESTE CAPTURA EL CLIENTSCRIPT EXTERNO var botones = sublist.addButton({ id: 'custpage_buttonid', label: 'Enviar Selección', functionName: 'btnenvio' //LLAMO LA FUNCION DEL CLIENTSCRIP }); // MUESTRO MI SUBLISTA EN UNA NUEVA PAGINA context.response.writePage(form); } if (context.request.method === 'GET') { datos(); } } return { onRequest: onRequest }; }); <strong> I have this client script, this should check the box of the quantity field of the sublist, you must take all the values of the row when typing a value, when you press the button of the suitelet you must send that value to an inventory with the id. I can't figure out how to do this, someone can help me, thanks for their collaboration. this ClientScript
    /**
    *@NApiVersion 2.0
    *@NScriptType ClientScript
    */
    define([“N/log”, “N/ui/dialog”, “N/record”, “N/currentRecord”], function(log, dialog, record, currentRecord) {
    //FUNCION PAGEINIT
    var pageInit = function(context) {
    console.log(‘entry 1’);
    } // contructor en blanco
    var btnenvio = function(context) {
    // MENSAJE DE CONFIRMACION DE CLICK EN EL BOTON
    console.log(‘entry 2’);
    }
    //VALIDACION DE LOS CAMPOS AUN NO DEFINIDO
    function validateField(context) {
    console.log(‘entry 3’);
    }
    // CAMBIO DE ESTADO CAMPO AUN NO DEFINIDO
    function fieldChanged(scriptContext) {

    console.log(‘entry 4’);

    }

    return {
    pageInit: pageInit,
    btnenvio: btnenvio,
    fieldChanged: fieldChanged,
    validateField: validateField
    }
    });

You must be logged in to reply to this topic.