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".