Tabela pai filho adicionando linhas em branco

tenho um formulário de um processo que contem duas tabelas pai filho. uma das tabelas mostra os itens do contrato de um determinado cliente que foi selecionado em uma combobox. na outra tabela é adicionado os itens que se deseja fazer renovação. o problema que esta ocorrendo é que a tabela que possui os itens do contrato do cliente esta adicionando linhas em branco sem chamar nenhuma funcao, já coloquei vários console.log e tbm alerts afim de descobrir se estava chamando a função que adiciona os itens nessa tabela mas nenhum dos console.log ou alert é exibido e mesmo assim as linhas estão sendo adicionadas na tabela. o que ocorre por exemplo é que quando estou na atividade onde faço a renovação dos itens do contrato, a tabela se comporta normalmente, o problema ocorre quando movimento o processo pra outra atividade. a quantidade de linhas em branco que é adicionada na tabela é igual a quantidade de linhas da outra tabela, ou seja, se na tabela de itens que serão renovados tiver 4 linhas, na hora que eu movimentar o processo a tabela que contem os itens do contrato tbm fica com 4 linhas, porem com os campos em branco.

alguém já passou por essa situação ou faz ideia do que pode ser?

segue codigo das tabelas

TABELA 1



<div id="divgrid" class="col-sm-12">
                    <table class="table table-striped" id="tbItens_contratados" tablename="tbItens_contratados"
                        noaddbutton="true" nodeletebutton="true">
                        <thead>
                            <tr>
                            </tr>
                        </thead>
                        <tbody>
                        <tr detail="true" detailname="tbItens_contratados">
                                <td>                                
                                    <div class="row">

                                        <div class="form-group">

                                            <label class="radio-inline btn btn-success">
                                                <input type="radio" name="rb_opcao_itens" id="rb_opcao_itens" value="renovar" required="required" onclick="adicionaItensTabela(this.id)">Renovar</label>

                                            <label class="radio-inline btn btn-danger">
                                            <input type="radio" name="rb_opcao_itens" id="rb_opcao_itens" value="cancelar" required="required" onclick="cancelaItens(this.id)">Cancelar</label>

                                            <label class="radio-inline btn btn-success">
                                            <input type="radio" name="rb_opcao_itens" id="rb_opcao_itens" value="migracao" required="required" onclick="adicionaItensMigracao(this.id)">Migração</label>
                                        </div>

                                    </div>


                                    <div class="row">                                    


                                        <div class="col-md-3">

                                            <input id="codprodutoitem_2" name="codprodutoitem_2" type="hidden" class="form-control"  />

                                            <label for="txtNome">Produto</label> 
                                            <input id="produtoitem_2" name="produtoitem_2" class="form-control"    type="text" />
                                        </div>    


                                        <div class="col-md-1">
                                            <label for="txtNome">Quant.</label> <input
                                                id="quantidadeitem_2" name="quantidadeitem_2"
                                                class="form-control"
                                                type="text" value='1' />
                                        </div>                                        

                                        <div class="col-md-2">
                                            <label for="txtNome">Valor Unit.</label> <input
                                                id="valorestimado_2" name="valorestimado_2"
                                                class="form-control"
                                                type="text"/>

                                        </div>

                                        <div class="col-md-2">
                                            <label for="txtNome">Valor Cheio</label> <input
                                                id="valorcheio_2" name="valorcheio_2"
                                                class="form-control"
                                                type="text" />

                                        </div>

                                        <div class="col-md-2">
                                            <label for="txtNome">Valor Desconto</label> 
                                            <input id="valordesconto_2" name="valordesconto_2" class="form-control"
                                             type="text"/>

                                        </div>

                                        <div class="col-md-2">
                                            <label for="txtNome">Valor Mensal</label> <input
                                                id="totalitem_2" name="totalitem_2"
                                                class="form-control" type="text"/>

                                        </div>

                                    </div>

                                    <div class="row">&nbsp;</div>

                                    <div class="row">

                                        <div class="col-md-4">
                                            <label for="txtNome">Quant Meses Inic.</label>
                                            <div class="input-grup">
                                                <input id="qtmesini_2" name="qtmesini_2" value="0"
                                                    class="form-control" type="text"/>
                                            </div>
                                        </div>

                                        <div class="col-md-4">
                                            <label for="txtNome">Quant Meses Cobr.</label>
                                            <div class="input-grup">
                                                <input id="qtmescob_2" name="qtmescob_2" value="0"
                                                    class="form-control" type="text"/>
                                            </div>
                                        </div>

                                        <div class="col-md-4">
                                            <label for="txtNome">Cod.Endereço</label>
                                            <div class="input-grup">
                                                <input id="codendereco_2" name="codendereco_2"
                                                    class="form-control" type="text" />
                                            </div>
                                        </div>

                                        <div class="col-md-1">
                                            <input id="grupo_2" name="grupo_2" class="form-control"
                                                type="hidden" value=""/>
                                        </div>

                                        <div class="col-md-1">
                                            <input id="upc01_2" name="upc01_2" class="form-control"
                                                type="hidden" value=""/>
                                        </div>

                                        <div class="col-md-1">
                                            <input id="upc02_2" name="upc02_2" class="form-control"
                                                type="hidden" value=""/>
                                        </div>

                                        <div class="col-md-1">
                                            <input id="obsitem_2" name="obsitem_2" class="form-control"
                                                type="hidden" value=""/>
                                        </div>

                                        <div class="col-md-1">
                                            <input id="cod_item_2" name="cod_item_2" class="form-control"
                                                type="hidden" value=""/>
                                        </div>                            

                                    </div>
                                </td>
                            </tr>
                        </tbody>
                    </table>

                </div>

TABELA 2



<div id="div_tb_itens_renovados" class="col-sm-12">
                    <table class="table table-striped" id="tbItens" tablename="tbItens"
                        noaddbutton="true" customFnDelete="removeItensVenda(this)">
                        <thead>
                            <tr>
                            </tr>
                        </thead>
                        <tbody>
                            <tr detail="true" detailname="tbItens">
                                <td>
                                    <div class="row">        

                                        <div class="col-md-12">
                                            <label for="txtNome">Produto</label>
                                             <input id="produtoitem_contrato" name="produtoitem_contrato" class="form-control"    type="text" />

                                             <input id="codprodutoitem_contrato" name="codprodutoitem_contrato"
                                                type="hidden" class="form-control"  />                                                 

                                        </div>                                    

                                    </div>

                                    <div class="row">                                        

                                    <div class="col-sm-3">
                                        <input id="codprodutoitem" name="codprodutoitem"
                                            type="hidden" class="form-control"  /> <label
                                            for="exampleTag">Produto</label>
                                        <div class="input-group">

                                            <input id="produtoitem" name="produtoitem"
                                                class="form-control" type="text" tabindex="-1"/>
                                            <span
                                                class="input-group-addon group-zoom no-view zoom-click btn-info"
                                                data-event="produtoitem"> <span
                                                class="fluigicon fluigicon-zoom-in "></span>
                                            </span>
                                        </div>
                                    </div>    

                                        <div class="col-md-1">
                                            <label for="txtNome">Quant.</label> <input
                                                id="quantidadeitem" name="quantidadeitem"
                                                class="form-control change-calculaValoresCampoQtd"
                                                type="text" value='1' />
                                        </div>


                                        <div class="col-md-2">
                                            <label for="txtNome">Valor Unit.</label> <input
                                                id="valorestimado" name="valorestimado"
                                                class="form-control change-calculaValoresCampoDesconto"
                                                type="text" onblur="calculaValoresPlanoSemFranquia(this.id)" onkeyup="somenteNumeros(this)"/>

                                        </div>

                                        <div class="col-md-2">
                                            <label for="txtNome">Valor Cheio</label> <input
                                                id="valorcheio" name="valorcheio"
                                                class="form-control"
                                                type="text" />

                                        </div>

                                        <div class="col-md-2">
                                            <label for="txtNome">Valor Desc</label> 
                                            <input id="valordesconto" name="valordesconto"    class="form-control change-calculaValoresCampoDesconto"
                                             type="text" onkeyup="somenteNumeros(this)"/>

                                        </div>

                                        <div class="col-md-1">
                                            <input id="valor_desconto_hidden" name="valor_desconto_hidden" class="form-control"
                                                type="hidden" />
                                        </div>

                                        <div class="col-md-2">
                                            <label for="txtNome">Valor Mensal</label> <input
                                                id="totalitem" name="totalitem"
                                                class="form-control"
                                                onblur="validaValorMensal(this.id)" type="text"/>

                                        </div>                                    

                                    </div>

                                    <div class="row">&nbsp;</div>

                                    <div class="row">

                                        <div class="col-md-4">
                                            <label for="txtNome">Quant Meses Inic.</label>
                                            <div class="input-grup">
                                                <input id="qtmesini" name="qtmesini" value="0"
                                                    class="form-control" type="text"  
                                                    onkeyup="somenteNumeros(this)"/>
                                            </div>
                                        </div>

                                        <div class="col-md-4">
                                            <label for="txtNome">Quant Meses Cobr.</label>
                                            <div class="input-grup">
                                                <input id="qtmescob" name="qtmescob" value="0"
                                                    class="form-control change-calculaValoresCampoQtdMesCob type="text" onkeyup="somenteNumeros(this)" onblur="validaQtdMaxIsencaoVendendor(this.id)"/>
                                            </div>
                                        </div>

                                        <div class="col-sm-4">
                                            <label for="txtNome">Cod.Endereço</label>
                                            <div class="input-group">
                                                <input id="codendereco" name="codendereco"
                                                    class="form-control" type="text" /> <span
                                                    class="input-group-addon group-zoom no-view zoom-click btn-info"
                                                    data-event="codendereco"> <span
                                                    class="fluigicon fluigicon-zoom-in "></span>
                                                </span>
                                            </div>
                                        </div>                                                

                                        <div id="div_max_desc" class="col-md-4">
                                            <label for="txtNome" id="lb_max_desc" name="lb_max_desc">Valor Máximo Desconto</label>
                                            <div class="input-grup">
                                                <input id="vl_max_desc" name="vl_max_desc" 
                                                    class="form-control" type="text" onblur="validaValorDesconto(this.id)" onkeyup="somenteNumeros(this)"/>
                                            </div>
                                        </div>


                                        <div id="div_max_isencao" class="col-md-4">
                                            <label for="txtNome" id="lb_max_isencao" name="lb_max_isencao">Valor Máximo Isenção</label>
                                            <div class="input-grup">
                                                <input id="vl_max_isencao" name="vl_max_isencao" 
                                                    class="form-control" type="text" onblur="validaQtdMaxIsencao(this.id,this.value)" onkeyup="somenteNumeros(this)" />
                                            </div>
                                        </div>

                                        <div id="div_max_cobranca" class="col-md-4">
                                            <label for="txtNome">Valor Máximo Cobrança</label>
                                            <div class="input-grup">
                                                <input id="vl_max_cobranca" name="vl_max_cobranca"
                                                    class="form-control" type="text" onblur="validaQtdMaxCobranca(this.id,this.value)" onkeyup="somenteNumeros(this)"/>
                                            </div>
                                        </div>

                                        <div class="col-md-1">
                                            <input id="contrato" name="contrato" class="form-control"
                                                type="hidden" value=""/>
                                        </div>

                                        <div class="col-md-1">
                                            <input id="itemcontrato" name="itemcontrato" class="form-control"
                                                type="hidden" value=""/>
                                        </div>


                                        <div class="col-md-1">
                                            <input id="nr_atividade" name="nr_atividade" class="form-control"
                                                type="hidden" value=""/>
                                        </div>

                                        <div class="col-md-1">
                                            <input id="grupo" name="grupo" class="form-control"
                                                type="hidden" value=""/>
                                        </div>

                                        <div class="col-md-1">
                                            <input id="upc01" name="upc01" class="form-control"
                                                type="hidden" value=""/>
                                        </div>

                                        <div class="col-md-1">
                                            <input id="upc02" name="upc02" class="form-control"
                                                type="hidden" value=""/>
                                        </div>

                                        <div class="col-md-1">
                                            <input id="obsitem" name="obsitem" class="form-control"
                                                type="hidden" value=""/>
                                        </div>

                                        <div class="col-md-1">
                                            <input id="cod_item" name="cod_item" class="form-control"
                                                type="hidden" value=""/>
                                        </div>


                                    </div>
                                </td>
                            </tr>
                        </tbody>
                    </table>
                    <button type="button" class="btn btn-primary"
                        id="addActivityButton" data-toggle="button" onclick="addTask()">Adicionar
                        Item</button>
                </div>

FUNCAO QUE ADICIONA ITENS NA TABELA 2



// adiciona os itens na TABELA 2
// funcao chamada no radio button 'renovar' da tabela 1
 function adicionaItensTabela(id){

        console.log("chamou funcao adicionaItensTabela");

        var id = id.replace(/[^0-9]/g,'');
        // converte para inteiro
        id =  parseInt(id);
        var controle = 0;

        //verificaItensCancelados();

        // pega os valores dos campos da tabela 1
         var desc_prod = $('#produtoitem_2___' + id).val();
         var cod_prod = $('#codprodutoitem_2___' + id).val();
         var qtd = $('#quantidadeitem_2___' + id).val();
         var upc01 = $('#upc01_2___' + id).val();
         var upc02 = $('#upc02_2___' + id).val();
         var vl_desc = $('#valordesconto_2___' + id).val();
         var vl_total = $('#totalitem_2___' + id).val();
         var vl_cheio = $('#valorcheio_2___' + id).val();
         var vl_estimado = $('#valorestimado_2___' + id).val();
         var qtd_mes_cob = $('#qtmescob_2___' + id).val();
         var qtd_mes_isencao = $('#qtmesini_2___' + id).val();        

         var cod_item = $('#cod_item_2___' + id).val();    
         var obs_item = $('#obsitem_2___' + id).val();    
         var cod_end_ins = $('#codendereco_2___' + id).val();
         var grupo = $('#grupo_2___' + id).val();

         // valida se o item ja existe na tabela de Itens a Serem Contratados
         // percorre os campos da tabela Pai x Filho
         var cod_item_num = cod_item.replace(/[^0-9]/g,'');
         console.log("cod_item_num: " + cod_item_num);

         $("input[id^='cod_item___']").each(function(index, value){
             var cod_item_renovado = $(this).val();

             if ((cod_item_renovado.trim() == cod_item) || (cod_item_num == "" ) ) {                 

                 controle ++;
             }

         });

         console.log("valor controle: " + controle);
         console.log("cod item: " + cod_item);

         // caso ainda nao tenha, adiciona o item selecionado na tabela 1 para a tabela 2
         if (controle <= 0){
             row = wdkAddChild('tbItens');                    

             $('#codprodutoitem_contrato___' + row).val(cod_prod);
             $('#produtoitem_contrato___' + row).val(desc_prod);

              $('#codprodutoitem___' + row).val(cod_prod);
             $('#produtoitem___' + row).val(desc_prod);
             $('#valorestimado___' + row).val(vl_estimado);            
             $('#valordesconto___' + row).val(vl_desc);
             $('#valorcheio___' + row).val(vl_cheio);
             $('#totalitem___' + row).val(vl_total);    
             $('#quantidadeitem___' + row).val(qtd);                
             $('#qtmesini___' + row).val(0);
             $('#qtmescob___' + row).val(0);
             $('#vl_max_desc___' + row).val(0);
             $('#vl_max_isencao___' + row).val(0);
             $('#vl_max_cobranca___' + row).val(0);

             $('#upc01___' + row).val(upc01);
             $('#upc02___' + row).val(upc02);

             $('#cod_item___' + row).val(cod_item);
             $('#obsitem___' + row).val(obs_item);
             $('#codendereco___' + row).val(cod_end_ins);
             $('#grupo___' + row).val(grupo);

            // verificaDescontoCombo();
            // formalmoxarifado.calculatotalgeral();

            // desabilitaCamposTabelaItens(row);
         }

 }

FUNCAO QUE ADICIONA ITENS NA TABELA 1



 // funcao chamanda em uma combobox, onde na mesma contem os numeros dos contratos do cliente
 function consultaPlanosContrato(){

     var ctr = $('#cb_contrato').val(); // pega valor selecionado na combobox

     var desc_prod = "";
     var cod_prod = "";
     var qtd = "";
     var upc01 = "";
     var upc02 = "";
     var vl_desc = "";
     var vl_total = "";
     var vl_cheio = "";
     var vl_estimado = "";
     var qtd_mes_cob = "";
     var qtd_mes_isencao = "";    
     var cod_item = "";    
     var obs_item = "";    
     var cod_end_inst = "";
     var grupo = "";

     var cont = 0;
     var i = 0;

     var total_contrato = 0;

     $('#num_ctr').val(ctr);
     $('#_num_ctr').val(ctr);


         var c1 = DatasetFactory.createConstraint("nr_contrato", ctr, ctr, ConstraintType.MUST);
         var constraints = new Array(c1);

         var dataset = DatasetFactory.getDataset("DS_CONSULTA_DADOS_CONTRATO", null, constraints, null);

         if (dataset.values.length > 0){

                var registro = dataset.values;

                while (i < dataset.values.length){

                    desc_prod = registro[i].ADB_DESPRO;    
                    cod_prod = registro[i].ADB_CODPRO;
                    qtd = registro[i].ADB_QUANT;
                    upc01 = registro[i].B1_UPC01;
                    upc02 = registro[i].B1_UPC02; 
                    vl_desc = registro[i].ADB_VALDES; 
                    vl_total = registro[i].ADB_TOTAL; 
                    vl_cheio = registro[i].ADB_UVLCHE;
                    vl_estimado = registro[i].B1_PRV1;  
                    qtd_mes_cob = registro[i].ADB_UMESCO; 
                    qtd_mes_isencao = registro[i].ADB_UMESIN;
                    cod_item = registro[i].ADB_ITEM;
                    obs_item = registro[i].ADB_UMSG;
                    cod_end_inst = registro[i].COD_INST;
                    grupo = registro[i].B1_GRUPO;        

                    row = wdkAddChild('tbItens_contratados');    

                    console.log("adicionou item tabela Itens Contratados: " + row)

                    $('#codprodutoitem_2___' + row).val(cod_prod);
                    $('#produtoitem_2___' + row).val(desc_prod);
                    $('#valorestimado_2___' + row).val(vl_estimado);            
                    $('#valordesconto_2___' + row).val(vl_desc);
                    $('#valorcheio_2___' + row).val(vl_cheio);
                    $('#totalitem_2___' + row).val(vl_total);    
                    $('#quantidadeitem_2___' + row).val(qtd);                
                    $('#qtmesini_2___' + row).val(qtd_mes_isencao);
                    $('#qtmescob_2___' + row).val(qtd_mes_cob);
                    $('#vl_max_desc_2___' + row).val(vl_desc);
                    $('#vl_max_isencao_2___' + row).val(qtd_mes_isencao);
                    $('#vl_max_cobranca_2___' + row).val(qtd_mes_cob);

                    $('#upc01_2___' + row).val(upc01);
                    $('#upc02_2___' + row).val(upc02);
                    $('#cod_item_2___' + row).val(cod_item);
                    $('#obsitem_2___' + row).val(obs_item);    
                    $('#codendereco_2___' + row).val(cod_end_inst);    
                    $('#grupo_2___' + row).val(grupo);                        

                    document.getElementById("codprodutoitem_2___" + row).readOnly = true;
                    document.getElementById("produtoitem_2___" + row).readOnly = true;
                    document.getElementById("valorestimado_2___" + row).readOnly = true;
                    document.getElementById("valordesconto_2___" + row).readOnly = true;
                    document.getElementById("valorcheio_2___" + row).readOnly = true;
                    document.getElementById("totalitem_2___" + row).readOnly = true;
                    document.getElementById("quantidadeitem_2___" + row).readOnly = true;
                    document.getElementById("qtmesini_2___" + row).readOnly = true;
                    document.getElementById("qtmescob_2___" + row).readOnly = true;                
                    document.getElementById("upc01_2___" + row).readOnly = true;
                    document.getElementById("upc02_2___" + row).readOnly = true;
                    document.getElementById("cod_item_2___" + row).readOnly = true;
                    document.getElementById("obsitem_2___" + row).readOnly = true;
                    document.getElementById("codendereco_2___" + row).readOnly = true;

                    total_contrato = total_contrato + parseFloat(vl_total);                

                i++;
            }                

            $('#total_itens_contratados').val(total_contrato);

        } 

 }

Robson, tudo bom ? Você pode passar o código da sua tabela para analisarmos ?

Obrigado.

editei minha pergunta adicionando o codigo das tabelas

Alguma novidade?

@Robson,

Qual função você chama para adicionar o Filho na tabela 1 e na tabela 2? E como estão essas funções?

editei a pergunta adicionado os códigos das funções. essas funções estão no javascript do formulário

Se você colocar um alert logo no início das funções, ele vai chamar quando não deve?

não. eu adicionei vários alerts nas funções mas eles são exibidos somente quando realmente chamo a função, porem ao movimentar a atividade que é quando da o problema, os alerts não são exibidos, testei com console.log também mas deu o mesmo resultado

Qual versão do Fluig está e qual a versão do Plugin no eclipse também?

ambos estão na versão 1.5.13

parece que essas duas tabelas estão relacionadas de alguma forma. porque a quantidade de linhas em branco que é adicionada na tabela 1 é igual a quantidade de linhas que estão adicionadas na tabela 2. já as demais tabelas que estão no formulário não estão com nenhum tipo de interferência

Esse table você montou baseado no exemplo do git?

foi baseado em um código que o pessoal da TOTVS desenvolveu pra nós no formulário de um outro processo. funcionou muito bem dessa forma ate o momento. porém neste processo esta dando problema.

Você já checou se todos os campos estão dentro do tbody, já aconteceu comigo quando usava funções jquery ao inves dos displayfields pra desabilitar campos e quando os campo não estavam dentro do tbody alguns estavam no thead. tente passar esses dados usando as funções para criar um dataset da ficha de cima repassando para a ficha de baixo.

@Italo, todos os campos estão dentro da tag tbody

o problema é justamente o que Robson, então um momento teve um campo criado em outra tabela com um nome e depois ele foi recriado em outra tabela.

Olá, Robson

Já tive um problema parecido com isso. Descobri que em uma tabela, na base de teste, eu tinha colocado um name e depois mudado esse name, porém voltei usar esse name na segunda tabela. Com isso, durante o carregamento, não sei porque raios, ele criava esse campo nas duas tabelas por conter esse name nos dois datasets.

A solução que consegui foi excluir o form e subir novamente com os registros zerados.

Abraço

Marcos Michalski

1 curtida