Formulário Pai x Filho

Boa tarde, possuo 2 pai x filho, trago os compradores Thiago e Breno no 1º pai x filho.

No 2º pai x filho devo trazer os produtos desses compradores, mas ele só traz o do último comprador (Breno).

Alguém saberia ajudar?

Segue o código que utilizo:


var c1 = DatasetFactory.createConstraint('nota', nota, nota, ConstraintType.MUST);
var dsBuscaComprador = DatasetFactory.getDataset('rms_consulta_comprador', null, [c1], null);

for (var j = 0; j < dsBuscaComprador.values.length; j++) {
  var codComprador = dsBuscaComprador.getValue(j, "COD_COMPRADOR").toString().trim();
  var nomeComprador = dsBuscaComprador.getValue(j, "NM_COMPRADOR").toString().trim();
  var qtddItens = dsBuscaComprador.getValue(j, "QTDD_ITENS").toString().trim();
  var valorTotalComprador = dsBuscaComprador.getValue(j, "VALOR_TOTAL_COMPRADOR").toString().trim();

  formData.put("vl_codigo_comprador___" + j + 1, codComprador);
  formData.put("nm_comprador___" + j + 1, nomeComprador);
  formData.put("vl_qtdd_itens___" + j + 1, qtddItens);
  formData.put("vl_total_comprador___" + j + 1, valorTotalComprador);

  var c2 = DatasetFactory.createConstraint('codComprador', codComprador, codComprador, ConstraintType.MUST);
  var dsBuscaProduto = DatasetFactory.getDataset('rms_consulta_produtos', null, [c2], null);

  for (var k = 0; k < dsBuscaProduto.values.length; k++) {
    var codProduto = dsBuscaProduto.getValue(k, "COD_PRODUTO").toString().trim();
    var descProduto = dsBuscaProduto.getValue(k, "DESCRICAO").toString().trim();
    var qtddProduto = dsBuscaProduto.getValue(k, "QUANTIDADE").toString().trim();
    var valorUnitario = dsBuscaProduto.getValue(k, "VALOR_UNITARIO").toString().trim();
    var valorTotalProduto = dsBuscaProduto.getValue(k, "VALOR_TOTAL_PRODUTO").toString().trim();
    var comprador = dsBuscaProduto.getValue(k, "COMPRADOR").toString().trim();

    formData.put("vl_codigo_produto___" + k + 1, codProduto);
    formData.put("nm_produto___" + k + 1, descProduto);
    formData.put("vl_qtdd_produto___" + k + 1, qtddProduto);
    formData.put("vl_unitario_produto___" + k + 1, valorUnitario);
    formData.put("vl_total_produto___" + k + 1, valorTotalProduto);
    formData.put("nm_comprador_prod___" + k + 1, comprador);
  }
}

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

Olá,você está fazendo em um evento de workflow? Eu fiz um teste aqui e funcionou sem colocar o índice do campo do Pai x Filho. Vê se funciona aí.


    var formData = new java.util.HashMap()

    var dsComprador = DatasetFactory.getDataset('dsComprador', null, null, null)

    for (var i = 0; i < dsComprador.values.length; i++) {

        var Comprador = dsComprador.getValue(i, "comprador")

        formData.put("pfComprador", Comprador)

        var c1 = DatasetFactory.createConstraint("codComprador", Comprador, Comprador, ConstraintType.MUST)
        var constraint = new Array(c1)

        var dsProduto = DatasetFactory.getDataset("dsProduto", null, constraint, null)


        for (var k = 0; k < dsProduto.values.length; k++) {

            var Produto = dsProduto.getValue(k, "produto")

            formData.put("pfProduto", Produto)
        }
    }

    hAPI.addCardChild("tblPaiFilho", formData)

Espero que ajude.

Abs.

Olá, estou usando no beforeTaskSave e depois chamo o startProces.

Se eu usar dessa forma, ele inicia, mas não grava os dados.


formData.put("vl_codigo_produto" + k, codProduto);
hAPI.startProcess("nf_devolucao", 0, users, "Solicitação inicializada automaticamente.", true, formData, false);

Se eu usar desse outro jeito, dá erro:


formData.put("vl_codigo_produto___" + k, codProduto);
hAPI.startProcess("nf_devolucao", 0, users, "Solicitação inicializada automaticamente.", true, formData, false);

No log:


javax.ejb.EJBTransactionRolledbackException: -1

Adicionei o código completo nos anexos, será que consegue me dar uma ajuda?

Resposta alterada para a solução!!!

Funcionou, muito obrigada, Eduardo.