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

  • Author
    Posts
  • #26118

    gustavo eduardo andrade hernandez
    Member
    @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.