01. DADOS GERAIS
Produto: | TOTVS Manufatura |
---|---|
Linha de Produto: | Linha Logix |
Segmento: | Tecnologia |
Módulo: | Framework |
Função: | Grid Metadados - LBrowseEx |
Ticket: | 9678754 |
Requisito/Story/Issue (informe o requisito relacionado) : | DFWKTOOLS-3201 |
02. SITUAÇÃO/REQUISITO
Em uma tela metadado, quando a partir da edição de dados um GRID, for adicionada uma linha no final do GRID e quando o usuário tenta retornar para a linha acima, se esta nova linha não tiver nenhum dado preenchido o metadado deveria acionar os seguintes eventos:
1) Eliminar a linha nova do GRID que não tem dados preenchidos, invocando nesta ação os respectivos eventos de BEFORE_REMOVE_ROW_EVENT e AFTER_REMOVE_ROW_EVENT.
2) Reposicionar o cursor para a linha anterior do GRID.
PROBLEMA: Durante a execução de uma função 4GL definida para o evento BEFORE_REMOVE_ROW_EVENT, ao tentar recuperar o número da linha corrente do GRID, utilizando para isso a propriedade ITEM_SELECTED ou ROW_SELECTED, o retorno está com o número da linha da nova linha reposicionada após a exclusão, sendo que o correto seria retornar o número da linha que está sendo eliminada, já que o evento em execução é o REMOVE_ROW.
Esta situação foi identificada na execução do programa FIN30057 ao realizar a baixa de um adiantamento, quando é emitida a mensagem: "Adiantamento não encontrado!". provocado no momento em que o usuário, na tela de tipos de valores, avança com o cursor para uma nova linha no GRID, criando uma nova linha, e depois retorna para a linha acima, onde esta nova linha em branco é apagada, provocando o problema com os dados da linha acima que tem os dados preenchidos.
03. SOLUÇÃO
Ajuste do comportamento de exclusão de linhas vazias, recém adicionadas em um GRID, para que os eventos invocados durante esta ação consigam recuperar corretamente o número da linha que está sendo excluída, sem afetar o evento posterior que é mudança do foco para a próxima linha após a exclusão.
Disponível a partir do pacote oficial 12.1.31 ou Framework Fix 12.1.29.(fix01)IMPORTANTE!