how to validate a sublist created in suitelet, getting the parameters of two columns?

Buenas tardes, tengo un código que crea para poder hacer una búsqueda de filtro personalizada, todo funciona bien, menos la última columna, en esta columna tomo los datos que ingresa y su referencia de fila es presionar el botón creado en Un clienteScript.

Suitelet 2.0

/ **
 * @NApiVersion 2.0
 * @NScriptType suitelet
 * @NModuleScope public
* /
    define ([‘N / ui / serverWidget’, ‘N / search’, ‘N / log’, ‘N / ui / dialog’, ‘N / record’, ‘N / error’, ‘N / http’],
        función (serverWidget, búsqueda, registro, diálogo, registro, error, http) {
            // funcion de Contenido
            función onRequest (contexto) {
                // llamo la busquEda guardada
                var busqueda = search.load ({id: ‘customsearch_axa_lista_v5_ok’});
                // creao formulario
                var formulario = serverWidget.createForm ({título: ‘Formulario de Busqueda’});
                // creamos dos grupos de busqueda // grupo 1
                var GrupoBusqueda = formulario.addFieldGroup ({id: ‘GrupoBusqueda’, etiqueta: ‘Grupo de Busqueda’});
                GrupoBusqueda.isSingleColumn = true;
                // formulario de creamos los filtro de busqueda
                formulario.addField ({id: ‘codigobarra’, tipo: serverWidget.FieldType.TEXT, etiqueta: ‘Codigo de Barras’, contenedor: ‘GrupoBusqueda’});
                formulario.addField ({id: ‘nombrelinea’, tipo: serverWidget.FieldType.TEXT, etiqueta: ‘Linea de Producto’, contenedor: ‘GrupoBusqueda’});
                formulario.addField ({id: ‘nombrelista’, tipo: serverWidget.FieldType.TEXT, etiqueta: ‘Lista de asociados’, contenedor: ‘GrupoBusqueda’});
                formulario.addField ({id: ‘campoitem’, tipo: serverWidget.FieldType.TEXT, etiqueta: ‘Seleccionar Producto’, fuente: ‘item’, contenedor: ‘GrupoBusqueda’});
                // grupo 2
                var GrupoBusquedaDos = formulario.addFieldGroup({ id: ‘GrupoBusquedaDos’, label: ‘ AXA 2019’ });
                GrupoBusquedaDos.isSingleColumn = true;
                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 un boton de envio y uno de limpieza de campos
                formulario.addSubmitButton({ id: ‘markall’, label: ‘Enviar Filtro’ });
                formulario.addResetButton({ label: ‘Limpiar Campos’ });
                //enviamos un render a una pagina para visualizar el formulario
                context.response.writePage(formulario);
                // creamos una varible que guarde el parametro del campo del formulario
                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 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 campo esta lleno entonces hacer lo suiguiente
                if (codigobarra) {
                    var filterOne = search.createFilter({ name: ‘upccode’, join: ‘custrecord_nso_item’, operator: search.Operator.STARTSWITH, values: [codigobarra] });
                    var filtrosArray = busqueda.filters;
                    filtrosArray.push(filterOne);
                    datos(filtrosArray)
                } 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);
                } 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);
                } else if (campoitem) {
                    var filterOne = search.createFilter({ name: ‘custrecord_nso_item’, operator: search.Operator.STARTSWITH, filter: [campoitem] });
                    var filtrosArray = busqueda.filters;
                    filtrosArray.push(filterOne);
                    datos(filtrosArray);
                } 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);
                }
                //se validan los datos enviados del formulario y se agragan a la funcion del array
                function datos(filtrosArray) {
                    //cargamos la cantidad de registros que queremos ver
                    var FiltrosV4 = busqueda.run().getRange({ start: 0, end: 70 });
                    //creamos un formulario para insertar la sublista y agregamos un titulo
                    log.audit({ title: ‘Objetosbuequeda’, details: JSON.stringify(FiltrosV4) });
                    var form = serverWidget.createForm({
                        title: ‘Datos Encontrados’
                    });
                    // creamos un link para añadirlo dentro de “More” y volver a hacer otro filtro
                    form.addPageLink({ type: serverWidget.FormPageLinkType.CROSSLINK, title: ‘Nuevo Filtro’, url: ‘/app/site/hosting/scriptlet.nl?script=1358&deploy=1’ });
                    // creamos la caja que necesitamos para empezar a llenar los datos de una sublista
                    var sublist = form.addSublist({
                        id: ‘sublist’,
                        type: serverWidget.SublistType.LIST, //INLINEEDITOR, LIST’,’EDITOR’, or ‘STATICLIST’
                        label: ‘Listado para Cantida de productos’
                    });
                    //asi podemos llamar un archivo externo tipo clientscript
                    form.clientScriptModulePath = ‘SuiteScripts/GHpruebaScript/ClientScript/GHclientScript.js’;
                    // Columnas que va a tener 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 });
                    //1. creamos una columna de tipo entero para numeros esta se añadira al final de cada registro
                    var cantidad = sublist.addField({ id: ‘custpage_cantidad’, label: ‘Cantidad Producto’, type: serverWidget.FieldType.INTEGER });
                    //El campo de entrada de datos (campo sin casilla de verificación) //NORMAL,ENTRY,HIDDEN,INLINE,DISABLED,READONLY
                    var nuevo = cantidad.updateDisplayType({ displayType: serverWidget.FieldDisplayType.ENTRY });
                    //Asignamos los valores que vamos a llamar al ID de la sublista
                    var sublist = form.getSublist({ id: ‘sublist’ });
                    for (var i = 0; i < FiltrosV4.length; i++) { // para i = 0, i menor que la cantidad que tiene la variable, contar de uno en uno
                        var columns = FiltrosV4[i].columns; // creamos la variable para llamar lo que tiene la variable en cada posicion generado en columnas
                        //creamos un array de valores donde traemos la columna 0.1.2.3…. con su listados de array en esa columna
                        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_generico’, línea: i, valor: [FiltrosV4 [i] .getValue (columnas [11])]});
                        sublist.setSublistValue ({id: ‘custpage_farma’, línea: i, valor: [FiltrosV4 [i] .getValue (columnas [12])]});
                        sublist.setSublistValue ({id: ‘custpage_saldo’, línea: i, valor: [FiltrosV4 [i] .getValue (columnas [13])]});
                    }
                    / ***************************** * /
                    / ***************************** * /
                    // creamos un boton
                    var botones = sublist.addButton ({
                        id: ‘custpage_buttonid’,
                        etiqueta: ‘Enviar Selección’,
                        functionName: ‘btnenvio’ / * / ‘aqui va la función de llamada desde el script de cliente’ * /
                    });
                    //form.clientScriptModulePath = ‘SuiteScripts / GHpruebaScript / EventScript / GHclientScript.js’;
                    // convertimos todo lo contenido en forma de una pagina suitelet
                    context.response.writePage (formulario);
                }
            }
            regreso {
                onRequest: onRequest
            };
        });

 

ClientScript 2.0

/ **
 * @ NApiVersion 2.0
 * @ NScriptType ClientScript
 * /
define ([“N / log”, “N / ui / dialog”], function (log, dialog) {
    var pageInit = function (context) {} // contructor en blanco
    var btnenvio = función (contexto) {// boton de que recibe los datos
        var varcont = 36;
        var reg = 40;
        log.audit ({título: ‘Datos’, detalles: JSON.stringify (varcont)});
        dialog.alert ({
            título: “Resultado de Recogidos”,
            mensaje: [varcont, reg]
        });
    }
    regreso {
        pageInit: pageInit,
        btnenvio: btnenvio
    }
});

 

gracias de antemano por tu ayuda, qué pena con mi inglés que estoy aprendiendo.

Rookie Asked on September 24, 2019 in SuiteScript.
Add Comment
0 Answer(s)

Your Answer

By posting your answer, you agree to the privacy policy and terms of service.
  • This site made possible by our sponsors:   Tipalti   Celigo   Limebox   Become a Sponsor   Become a Sponsor