/**
 *@NApiVersion 2.x
 *@NScriptType Suitelet
 *@Author Rafael Oliveira Santos
 */
define(['N/record', 'N/ui/serverWidget', 'N/search', 'N/url', 'N/runtime', 'N/error'], function(record, ui, search, url, runtime, error) {

    function onRequest(ctx) {
        var paramFunc = confereFuncionario()
        var paramForm = criaForm()
        preencheLista(paramFunc, paramForm.link, paramForm.sublist)
        
        
        function confereFuncionario() {
            var usuario = runtime.getCurrentUser();
            var email = usuario.email
            var localidadeUser;
            log.debug('usuário', usuario)
            /**
             * trocar o método de validação para o ID do funcionário.
             */
            if(email != 'celso.filho@kovi.com.br' && email != 'filipe.reis@kovi.com.br' && email != 'paulo.baptista@kovi.com.br' && email != 'rafael.santos@runsmart.cloud') {
                throw "Você não tem permissão para fazer isso."
            }
    
            switch (email) {
                case 'celso.filho@kovi.com.br':
                    localidadeUser = 20 // miranda
                    break;
    
                case 'filipe.reis@kovi.com.br':
                    localidadeUser = 24 // nações
                    break;
    
                case 'paulo.baptista@kovi.com.br':
                    localidadeUser = 27 // campus
                    break;
    
                case 'rafael.santos@runsmart.cloud':
                    localidadeUser = 20
                    break;
            }
            log.debug('localidadeUser', localidadeUser)
            return localidadeUser
        }

        function criaForm() {
            const request = ctx.request;
            const method = request.method;
            const response = ctx.response;
            const parameters = request.parameters;
            var form = ui.createForm({
                title: "Fluxo de planilha de estoque"
            })
            var aprovadobutton = form.addButton({
                id: 'custpage_aprovado',
                label: 'Aprovar',
                functionName: 'aprovado'
            })
            var rejeitadobutton = form.addButton({
                id: 'custpage_rejeitado',
                label: 'Rejeitar',
                functionName: 'rejeitado'
            })
            var sublist = form.addSublist({
                id: 'custpage_sublistplanilhas',
                label: 'Planilhas de estoque',
                type: ui.SublistType.LIST
            });
            var marcaTudo = sublist.addButton({
                id: 'custpage_marcaparcela',
                label: 'Marcar Tudo',
                functionName: 'selecionar'
            })
            var desmarcaTudo = sublist.addButton({
                id: 'custpage_desmarcaparcela',
                label: 'Desamarcar Tudo',
                functionName: 'desmarcar'
            })
            var checkBox = sublist.addField({
                id: 'custpage_marcarplanilha',
                type: ui.FieldType.CHECKBOX,
                label: 'Selecionar'
            });
            var link = sublist.addField({
                id: 'custpage_planilhalink',
                type: ui.FieldType.URL,
                label: 'Link'
            })
            var sub = sublist.addField({
                id: 'custpage_planilha',
                type: ui.FieldType.SELECT,
                source: 'inventoryworksheet',
                label: 'Planilha'
            }).updateDisplayType({displayType: ui.FieldDisplayType.INLINE})
            var contaAjuste = sublist.addField({
                id: 'custpage_contaajuste',
                type: ui.FieldType.SELECT,
                source: 'account',
                label: 'CONTA DE AJUSTE'
            }).updateDisplayType({displayType: ui.FieldDisplayType.INLINE})
            var empresa = sublist.addField({
                id: 'custpage_empresa',
                type: ui.FieldType.TEXT,
                label: 'Empresa'
            }).updateDisplayType({displayType: ui.FieldDisplayType.INLINE})
            var localidade = sublist.addField({
                id: 'custpage_localidade',
                type: ui.FieldType.TEXT,
                label: 'localidade'
            }).updateDisplayType({displayType: ui.FieldDisplayType.INLINE})
            var status = sublist.addField({
                id: 'custpage_status',
                type: ui.FieldType.TEXT,
                label: 'Status'
            }).updateDisplayType({displayType: ui.FieldDisplayType.INLINE})
    
            ctx.response.writePage(form)
            form.clientScriptModulePath = './rsc_cs_fluxoAprovacao.js'
            return {link: link, sublist: sublist}
        }

        function preencheLista(localidadeUser, link, sublist){
            var lista = []
            var busca = search.create({
                type: 'inventoryworksheet',
                filters: [
                    ["custbody_status_ae", "IS", 1],
                    "AND",
                    ["mainline","is","T"],
                    "AND",
                    ["location", "IS", localidadeUser]
                ],
                columns: [ 
                    "internalId", "tranid", "account", "subsidiary", "location", "custbody_status_ae"
                ]
            }).run().each(function(result){
                lista.push({
                    id: result.getValue('internalId'),
                    tranid: result.getValue('tranid'),
                    account: result.getValue('account'),
                    subsidiary: result.getText('subsidiary') ,
                    location: result.getText('location'),
                    status: result.getText('custbody_status_ae')
                })
                return true
            })
            log.debug('lista', lista)

            for(var i = 0; i < lista.length; i++){
                link.linkText = 'Planilha'
                var output = url.resolveRecord({
                    recordType: 'inventoryworksheet',
                    recordId: lista[i].id,
                    isEditMode: false
                });

                sublist.setSublistValue({
                    id: "custpage_planilha",
                    line: i,
                    value: lista[i].id
                })

                sublist.setSublistValue({
                    id: "custpage_planilhalink",
                    line: i,
                    value: output
                })

                sublist.setSublistValue({
                    id: "custpage_contaajuste",
                    line: i,
                    value: lista[i].account
                })

                sublist.setSublistValue({
                    id: "custpage_empresa",
                    line: i,
                    value: lista[i].subsidiary
                })

                sublist.setSublistValue({
                    id: "custpage_localidade",
                    line: i,
                    value: lista[i].location
                })

                sublist.setSublistValue({
                    id: "custpage_status",
                    line: i,
                    value: lista[i].status
                })
            }
        }
    }

    return {
        onRequest: onRequest
    }
});

[{"tag": "EMAIL", "value": "celso.filho@kovi.com.br", "start": 772, "end": 795}, {"tag": "EMAIL", "value": "filipe.reis@kovi.com.br", "start": 810, "end": 833}, {"tag": "EMAIL", "value": "paulo.baptista@kovi.com.br", "start": 848, "end": 874}, {"tag": "EMAIL", "value": "rafael.santos@runsmart.cloud", "start": 889, "end": 917}, {"tag": "EMAIL", "value": "celso.filho@kovi.com.br", "start": 1061, "end": 1084}, {"tag": "EMAIL", "value": "filipe.reis@kovi.com.br", "start": 1196, "end": 1219}, {"tag": "EMAIL", "value": "paulo.baptista@kovi.com.br", "start": 1330, "end": 1356}, {"tag": "EMAIL", "value": "rafael.santos@runsmart.cloud", "start": 1467, "end": 1495}]
/**
 *@NApiVersion 2.x
 *@NScriptType Suitelet
 *@Author Rafael Oliveira Santos
 */
define(['N/record', 'N/ui/serverWidget', 'N/search', 'N/url', 'N/runtime', 'N/error'], function(record, ui, search, url, runtime, error) {

    function onRequest(ctx) {
        var paramFunc = confereFuncionario()
        var paramForm = criaForm()
        preencheLista(paramFunc, paramForm.link, paramForm.sublist)
        
        
        function confereFuncionario() {
            var usuario = runtime.getCurrentUser();
            var email = usuario.email
            var localidadeUser;
            log.debug('usuário', usuario)
            /**
             * trocar o método de validação para o ID do funcionário.
             */
            if(email != 'nnheo@example.com' && email != 'hzdkv@example.com' && email != 'anpch@example.com' && email != 'nnheo@example.com') {
                throw "Você não tem permissão para fazer isso."
            }
    
            switch (email) {
                case 'nnheo@example.com':
                    localidadeUser = 20 // miranda
                    break;
    
                case 'hzdkv@example.com':
                    localidadeUser = 24 // nações
                    break;
    
                case 'anpch@example.com':
                    localidadeUser = 27 // campus
                    break;
    
                case 'nnheo@example.com':
                    localidadeUser = 20
                    break;
            }
            log.debug('localidadeUser', localidadeUser)
            return localidadeUser
        }

        function criaForm() {
            const request = ctx.request;
            const method = request.method;
            const response = ctx.response;
            const parameters = request.parameters;
            var form = ui.createForm({
                title: "Fluxo de planilha de estoque"
            })
            var aprovadobutton = form.addButton({
                id: 'custpage_aprovado',
                label: 'Aprovar',
                functionName: 'aprovado'
            })
            var rejeitadobutton = form.addButton({
                id: 'custpage_rejeitado',
                label: 'Rejeitar',
                functionName: 'rejeitado'
            })
            var sublist = form.addSublist({
                id: 'custpage_sublistplanilhas',
                label: 'Planilhas de estoque',
                type: ui.SublistType.LIST
            });
            var marcaTudo = sublist.addButton({
                id: 'custpage_marcaparcela',
                label: 'Marcar Tudo',
                functionName: 'selecionar'
            })
            var desmarcaTudo = sublist.addButton({
                id: 'custpage_desmarcaparcela',
                label: 'Desamarcar Tudo',
                functionName: 'desmarcar'
            })
            var checkBox = sublist.addField({
                id: 'custpage_marcarplanilha',
                type: ui.FieldType.CHECKBOX,
                label: 'Selecionar'
            });
            var link = sublist.addField({
                id: 'custpage_planilhalink',
                type: ui.FieldType.URL,
                label: 'Link'
            })
            var sub = sublist.addField({
                id: 'custpage_planilha',
                type: ui.FieldType.SELECT,
                source: 'inventoryworksheet',
                label: 'Planilha'
            }).updateDisplayType({displayType: ui.FieldDisplayType.INLINE})
            var contaAjuste = sublist.addField({
                id: 'custpage_contaajuste',
                type: ui.FieldType.SELECT,
                source: 'account',
                label: 'CONTA DE AJUSTE'
            }).updateDisplayType({displayType: ui.FieldDisplayType.INLINE})
            var empresa = sublist.addField({
                id: 'custpage_empresa',
                type: ui.FieldType.TEXT,
                label: 'Empresa'
            }).updateDisplayType({displayType: ui.FieldDisplayType.INLINE})
            var localidade = sublist.addField({
                id: 'custpage_localidade',
                type: ui.FieldType.TEXT,
                label: 'localidade'
            }).updateDisplayType({displayType: ui.FieldDisplayType.INLINE})
            var status = sublist.addField({
                id: 'custpage_status',
                type: ui.FieldType.TEXT,
                label: 'Status'
            }).updateDisplayType({displayType: ui.FieldDisplayType.INLINE})
    
            ctx.response.writePage(form)
            form.clientScriptModulePath = './rsc_cs_fluxoAprovacao.js'
            return {link: link, sublist: sublist}
        }

        function preencheLista(localidadeUser, link, sublist){
            var lista = []
            var busca = search.create({
                type: 'inventoryworksheet',
                filters: [
                    ["custbody_status_ae", "IS", 1],
                    "AND",
                    ["mainline","is","T"],
                    "AND",
                    ["location", "IS", localidadeUser]
                ],
                columns: [ 
                    "internalId", "tranid", "account", "subsidiary", "location", "custbody_status_ae"
                ]
            }).run().each(function(result){
                lista.push({
                    id: result.getValue('internalId'),
                    tranid: result.getValue('tranid'),
                    account: result.getValue('account'),
                    subsidiary: result.getText('subsidiary') ,
                    location: result.getText('location'),
                    status: result.getText('custbody_status_ae')
                })
                return true
            })
            log.debug('lista', lista)

            for(var i = 0; i < lista.length; i++){
                link.linkText = 'Planilha'
                var output = url.resolveRecord({
                    recordType: 'inventoryworksheet',
                    recordId: lista[i].id,
                    isEditMode: false
                });

                sublist.setSublistValue({
                    id: "custpage_planilha",
                    line: i,
                    value: lista[i].id
                })

                sublist.setSublistValue({
                    id: "custpage_planilhalink",
                    line: i,
                    value: output
                })

                sublist.setSublistValue({
                    id: "custpage_contaajuste",
                    line: i,
                    value: lista[i].account
                })

                sublist.setSublistValue({
                    id: "custpage_empresa",
                    line: i,
                    value: lista[i].subsidiary
                })

                sublist.setSublistValue({
                    id: "custpage_localidade",
                    line: i,
                    value: lista[i].location
                })

                sublist.setSublistValue({
                    id: "custpage_status",
                    line: i,
                    value: lista[i].status
                })
            }
        }
    }

    return {
        onRequest: onRequest
    }
});

/**
 *@NApiVersion 2.x
 *@NScriptType Suitelet
 *@Author Rafael Oliveira Santos
 */
define(['N/record', 'N/ui/serverWidget', 'N/search', 'N/url', 'N/runtime', 'N/error'], function(record, ui, search, url, runtime, error) {

    function onRequest(ctx) {
        var paramFunc = confereFuncionario()
        var paramForm = criaForm()
        preencheLista(paramFunc, paramForm.link, paramForm.sublist)
        
        
        function confereFuncionario() {
            var usuario = runtime.getCurrentUser();
            var email = usuario.email
            var localidadeUser;
            log.debug('usuário', usuario)
            /**
             * trocar o método de validação para o ID do funcionário.
             */
            if(email != 'PI:EMAIL:nnheo@example.comEND_PI' && email != 'PI:EMAIL:hzdkv@example.comEND_PI' && email != 'PI:EMAIL:anpch@example.comEND_PI' && email != 'PI:EMAIL:nnheo@example.comEND_PI') {
                throw "Você não tem permissão para fazer isso."
            }
    
            switch (email) {
                case 'PI:EMAIL:nnheo@example.comEND_PI':
                    localidadeUser = 20 // miranda
                    break;
    
                case 'PI:EMAIL:hzdkv@example.comEND_PI':
                    localidadeUser = 24 // nações
                    break;
    
                case 'PI:EMAIL:anpch@example.comEND_PI':
                    localidadeUser = 27 // campus
                    break;
    
                case 'PI:EMAIL:nnheo@example.comEND_PI':
                    localidadeUser = 20
                    break;
            }
            log.debug('localidadeUser', localidadeUser)
            return localidadeUser
        }

        function criaForm() {
            const request = ctx.request;
            const method = request.method;
            const response = ctx.response;
            const parameters = request.parameters;
            var form = ui.createForm({
                title: "Fluxo de planilha de estoque"
            })
            var aprovadobutton = form.addButton({
                id: 'custpage_aprovado',
                label: 'Aprovar',
                functionName: 'aprovado'
            })
            var rejeitadobutton = form.addButton({
                id: 'custpage_rejeitado',
                label: 'Rejeitar',
                functionName: 'rejeitado'
            })
            var sublist = form.addSublist({
                id: 'custpage_sublistplanilhas',
                label: 'Planilhas de estoque',
                type: ui.SublistType.LIST
            });
            var marcaTudo = sublist.addButton({
                id: 'custpage_marcaparcela',
                label: 'Marcar Tudo',
                functionName: 'selecionar'
            })
            var desmarcaTudo = sublist.addButton({
                id: 'custpage_desmarcaparcela',
                label: 'Desamarcar Tudo',
                functionName: 'desmarcar'
            })
            var checkBox = sublist.addField({
                id: 'custpage_marcarplanilha',
                type: ui.FieldType.CHECKBOX,
                label: 'Selecionar'
            });
            var link = sublist.addField({
                id: 'custpage_planilhalink',
                type: ui.FieldType.URL,
                label: 'Link'
            })
            var sub = sublist.addField({
                id: 'custpage_planilha',
                type: ui.FieldType.SELECT,
                source: 'inventoryworksheet',
                label: 'Planilha'
            }).updateDisplayType({displayType: ui.FieldDisplayType.INLINE})
            var contaAjuste = sublist.addField({
                id: 'custpage_contaajuste',
                type: ui.FieldType.SELECT,
                source: 'account',
                label: 'CONTA DE AJUSTE'
            }).updateDisplayType({displayType: ui.FieldDisplayType.INLINE})
            var empresa = sublist.addField({
                id: 'custpage_empresa',
                type: ui.FieldType.TEXT,
                label: 'Empresa'
            }).updateDisplayType({displayType: ui.FieldDisplayType.INLINE})
            var localidade = sublist.addField({
                id: 'custpage_localidade',
                type: ui.FieldType.TEXT,
                label: 'localidade'
            }).updateDisplayType({displayType: ui.FieldDisplayType.INLINE})
            var status = sublist.addField({
                id: 'custpage_status',
                type: ui.FieldType.TEXT,
                label: 'Status'
            }).updateDisplayType({displayType: ui.FieldDisplayType.INLINE})
    
            ctx.response.writePage(form)
            form.clientScriptModulePath = './rsc_cs_fluxoAprovacao.js'
            return {link: link, sublist: sublist}
        }

        function preencheLista(localidadeUser, link, sublist){
            var lista = []
            var busca = search.create({
                type: 'inventoryworksheet',
                filters: [
                    ["custbody_status_ae", "IS", 1],
                    "AND",
                    ["mainline","is","T"],
                    "AND",
                    ["location", "IS", localidadeUser]
                ],
                columns: [ 
                    "internalId", "tranid", "account", "subsidiary", "location", "custbody_status_ae"
                ]
            }).run().each(function(result){
                lista.push({
                    id: result.getValue('internalId'),
                    tranid: result.getValue('tranid'),
                    account: result.getValue('account'),
                    subsidiary: result.getText('subsidiary') ,
                    location: result.getText('location'),
                    status: result.getText('custbody_status_ae')
                })
                return true
            })
            log.debug('lista', lista)

            for(var i = 0; i < lista.length; i++){
                link.linkText = 'Planilha'
                var output = url.resolveRecord({
                    recordType: 'inventoryworksheet',
                    recordId: lista[i].id,
                    isEditMode: false
                });

                sublist.setSublistValue({
                    id: "custpage_planilha",
                    line: i,
                    value: lista[i].id
                })

                sublist.setSublistValue({
                    id: "custpage_planilhalink",
                    line: i,
                    value: output
                })

                sublist.setSublistValue({
                    id: "custpage_contaajuste",
                    line: i,
                    value: lista[i].account
                })

                sublist.setSublistValue({
                    id: "custpage_empresa",
                    line: i,
                    value: lista[i].subsidiary
                })

                sublist.setSublistValue({
                    id: "custpage_localidade",
                    line: i,
                    value: lista[i].location
                })

                sublist.setSublistValue({
                    id: "custpage_status",
                    line: i,
                    value: lista[i].status
                })
            }
        }
    }

    return {
        onRequest: onRequest
    }
});
