| ♥ 0 | Boa tarde, No motor do Primavera V10, como posso replicar o comportamento da funcionalidade CTRL+D? O objetivo é que, ao editar um documento de venda, seja possível adicionar uma nova linha filha a uma linha pai, mantendo a ordem lógica das linhas no documento. Por exemplo, considerando a seguinte estrutura:
Pretendo adicionar um novo filho à Linha Pai, obtendo o seguinte resultado:
Ou seja, a nova linha filha deverá ser inserida imediatamente após os restantes filhos da linha pai e antes da linha de comentário, preservando a hierarquia e a sequência original das linhas do documento. Agradeço desde já qualquer indicação sobre a melhor forma de implementar este comportamento através do motor do Primavera V10. Marcado como spam |
Comentários Oof eu tive de lidar com isto há uns anos e foi um pesadelo de contar linhas e movê-las manualmente pra cima e pra baixo. Aposto que havia maneiras mais fáceis de fazer aquilo mas na altura não consegui que funcionassem. Posso tentar encontrar o código e dar umas dicas |
| Resposta privada Viva, A forma como fiz o adicionar linha, mas no meu caso na primeira linha do documento, é copiar as linhas atuais para uma estrutura e inserir a nova no lugar que preciso.
var linhas = documento.Linhas.AsList();
documento.Linhas = new VndBELinhasDocumentoVenda();
// Adicionar linha com o texto da separação de origem
string textoDocumento = "OLÁ MUNDO";
BSO.Vendas.Documentos.AdicionaLinhaEspecial(DestinoGuia, vdTipoLinhaEspecial.vdLinha_Comentario, 0, textoDocumento);
foreach (var linha in linhas)
{
documento.Linhas.Add(linha);
}No teu caso, se guardares em que posição inserir, fazes o AdicionaLinha ou o AdicionaLinhaEspecial na posição seguinte, e depois continuas o documento.Linhas.Add(linha) para as restantes linhas. Marcado como spam | |
| Resposta privada Ok consegui encontrar alguns métodos específicos para tratar linhas pai e filho que quem me dera ter usado há uns anos atrás... O interface dos documentos de venda tem um método EditaLinhasDimensao que permite alterar a colecção de linhas filho pelo ID da linha pai. Experimente e depois diga se funcionou. Marcado como spam Comentários Boa tarde, obrigado pela resposta. Estive a validar e sempre que invoco esse método, em que passo o id da Linha Pai devolve sempre nulo. Hmm… Ok então tente pegar no objecto de uma das linhas filho (VndBELinhaDocumentoVenda) e ver o que é retornado no método .IdLinhaPai() |