Fórum
Ver pergunta

Editar Documento Vendas com Artigos que têm dimensões   

14 visualizações
1
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:

  • Linha Pai
    • Filho 1
    • Filho 2
  • Linha de Comentário

Pretendo adicionar um novo filho à Linha Pai, obtendo o seguinte resultado:

  • Linha Pai
    • Filho 1
    • Filho 2
    • Filho 3 (novo)
  • Linha de Comentário

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.

Faça login para poder traduzir
Integração
V10
Marcado como spam
Criado há 1 mês e 1 semana fernandolopes
f
fernandolopes Fernando Lopes Iniciante
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
1 mês e 1 semana
ricardogiro
    2 respostas
    0
    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.

    Faça login para poder traduzir
    Marcado como spam
    Criado há 1 mês e 1 dia nelsoncosta
    n
    nelsoncosta Nelson Costa Iniciante
      0
      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.
      Tenha em conta que é preciso a nova linha estar configurada como filha desse artigo pai; pode confirmar se estão relacionados com algo como artigoLinhaNova.ArtigoPai == linhaPai.Artigo

      Experimente e depois diga se funcionou.

      Faça login para poder traduzir
      Marcado como spam
      Criado há 1 mês e 1 semana ricardogiro
      ricardogiro Ricardo Giro Loyal Contributor
        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.
        1 mês e 5 dias
        fernandolopes
          Hmm… Ok então tente pegar no objecto de uma das linhas filho (VndBELinhaDocumentoVenda) e ver o que é retornado no método .IdLinhaPai()
          1 mês e 5 dias
          ricardogiro