Versão atual:

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);

        } 

 }

Versões (5):

Ver a versão formatada

Tabela pai filho adicionando linhas em branco

Comentário

new question