Validar campo de outro formulário

Bom dia!

Estou desenvolvendo um formulário em que necessito de uma validação:

Caso já tenha sido lançada uma NF para o cliente, o formulário não pode ser enviado.

Exemplo:

Lancei a NF 1 para o cliente 1. Caso eu lance novamente a NF 1 para o cliente 1, o formulário não pode ser enviado.

Para resolver essa situação, resolvi consultar o dataset do próprio formulário e comparar com o valor que está atualmente no formulário. Mas é aí que estou tendo problemas.

O valor da NF é "txt_nfOriginal" e o cliente é "zm_cliente".

Estou fazendo o seguinte no validateFields:


var notaAtual = form.getValue("txt_nfOriginal");
var cliente = form.getValue("zm_cliente");
var validacao = valida(notaAtual, cliente);
if(validacao == true){
    throw("Essa nota já foi lançada para este cliente!");
}

Também fiz uma função para validação que faz esse papel de comparar o valor que está sendo lançado no formulário com o valor que já está no dataset.



function valida(nf, cliente){

    var validacao = false;
    var c1 = DatasetFactory.createConstraint("txt_nfOriginal", nf, nf, ConstraintType.MUST);
    var constraints = new Array(c1);
    var sortingFields = new Array("txt_nfOriginal");
    var returnFields = new Array("zm_cliente", "txt_nfOriginal");
    var dataset = DatasetFactory.getDataset("DT-LOG-001", returnFields, constraints, sortingFields);

    for(var i = 0; i < dataset.values.length; i++) {
        var cli = dataset.values[i]["DT-LOG-001.zm_cliente"];
        var nota = dataset.values[i]["DT-LOG-001.txt_nfOriginal"];

        if(cliente == cli){
            validacao = true;
        }

    }

}

Entretanto, este código não está funcionando. Poderiam me ajudar nesta questão?

EDIT: Estou adicionando dois prints.

Um contém o nome do dataset do formulário (DT-LOG-001). O outro contém uma visualização dos valores, dando ênfase no valor de "zm_cliente".

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

Olá Matheus,

tente o for no dataset assim :


for(var i = 0; i < dataset.rowsCount; i++) {
   var cli = dataset.getValue(i, "zm_cliente");
   var nota = dataset.getValue(i, "txt_nfOriginal");

   if(cliente == cli){
      validacao = true;
   }
}

Boa tarde!

Tentei com o código que você mandou, mas ocorre o seguinte erro:

Java class “[Ljava.lang.Object;” has no public instance field or method named “DT-LOG-001.zm_cliente”.

Não deu certo.

Olá Matheus, vocẽ usou zm_cliente como está ali no código? Não deveria estar procurando “DT-LOG-001.zm_cliente” e sim só “zm_cliente”. Outra coisa você tem que dar o return da variável “validacao” ali na função valida()