Dataset Customizado

Gostaria que o usuário pudesse escolher as empresas de acordo com o grupo que ele está inserido.

Por exemplo, se o usuário está inserido no grupo "SolicitantesAC_01", só poderá abrir solicitação para a "EMPRESA 01" e assim sucessivamente.

Alguém sabe como ajudar?


 function createDataset(fields, constraints, sortFields) {
    var dataset = DatasetBuilder.newDataset();

    dataset.addColumn("cod_empresa");
    dataset.addColumn("nm_empresa");
    dataset.addColumn("cod_grupo");

    dataset.addRow(new Array("01", "EMPRESA 01", "solicitantesAC_01"));
    dataset.addRow(new Array("02", "EMPRESA 02", "solicitantesAC_02"));

    return dataset;
}


function createDataset(fields, constraints, sortFields) {
    var mat = getValue("WKUser");
    var dsEmpresas = DatasetBuilder.newDataset();

    var c1 = DatasetFactory.createConstraint('colleagueGroupPK.colleagueId', mat, mat, ConstraintType.MUST);
    var c2 = DatasetFactory.createConstraint('colleagueGroupPK.groupId', 'solicitantesAC%', 'solicitantesAC%', ConstraintType.MUST);
    c2.setLikeSearch(true);
    var dtsColleague = DatasetFactory.getDataset('colleagueGroup', new Array('colleagueGroupPK.groupId'), new Array(c1,c2), null);

    dsEmpresas.addColumn("CODEMP");
    dsEmpresas.addColumn("EMP");

    for (var i = 0; i < dtsColleague.rowsCount; i++) {
        var verificaEmpresa = dtsColleague.getValue(i, "colleagueGroupPK.groupId");
        var validaEmpresa   = DatasetFactory.createConstraint("cod_grupo", verificaEmpresa, verificaEmpresa, ConstraintType.MUST);
        var constraints     = new Array(validaEmpresa);
        var empresaXgrupo   = DatasetFactory.getDataset("consulta_EmpxGrupo", null, constraints, null);

        for (var r = 0; r <  empresaXgrupo.values.length; r++) {                
            var codigo = empresaXgrupo.getValue(r, "cod_empresa");
            var empresa = empresaXgrupo.getValue(r, "nm_empresa");                
            dsEmpresas.addRow(new Array(codigo, empresa));
        }

    }

    return dsEmpresas;
}

:warning: Atenção: Esta publicação foi transferida automaticamente do fórum antigo, mas os anexos não foram incluídos.

O mesmo usuário pode estar em mais de um grupo de uma vez? Tem certeza que esse é o código que você usou nos prints? No caso “empresaXgrupo.values.length” deveria ser “empresaXgrupo.rowsCount”…

Marcella, você pode utilizar o dataset colleagueGroup (interno) para retornar os grupos ao qual o usuário logado está associado, para o exemplo acima, o seguinte filtro funcionará:


    var constraintColleagueGroup1 = DatasetFactory.createConstraint('colleagueGroupPK.colleagueId', 'idUsuario', 'idUsuario', ConstraintType.MUST);
    var constraintColleagueGroup2 = DatasetFactory.createConstraint('colleagueGroupPK.groupId', 'solicitantesAC_', 'solicitantesAC_', ConstraintType.MUST);
    constraintColleagueGroup2.setLikeSearch(true);

    var datasetColleagueGroup = DatasetFactory.getDataset('colleagueGroup', null, new Array(constraintColleagueGroup1, constraintColleagueGroup2), null);

Com isso você ao passar o código do usuário, será retornado os grupos que ele pertence que tenham no código do grupo a palavra "solicitantesAC_", assim, se ele tiver em apenas um dos dois, retornará um, se estiver nos dois, os dois e se não tiver em nenhum, nenhum resultado.

Assim, você poderá criar um campo ZOOM, passando o dataset e após seu carregamento, alterar o filtro para passar o nome do usuário para a constraint do dataset. Assim, ele somente poderá escolher a empresa na qual ele está associado como grupo.