Fórum
Ver pergunta

Problema no evento DescritivoIdentificado (Documentos Pendentes)   

19 visualizações
0
0

Olá,

Estou a desenvolver uma extensão no Primavera (Cegid) e estou com um comportamento estranho no evento DescritivoIdentificado do Editor de Pendentes (Contas Correntes).

Tenho o seguinte código:

Public Overrides Sub DescritivoIdentificado(Descritivo As String, NumLinha As Integer, ByRef Cancel As Boolean, e As ExtensibilityEventArgs)
    MyBase.DescritivoIdentificado(Descritivo, NumLinha, Cancel, e)

    Try
        Dim ChaveRepCCusto As String
        ChaveRepCCusto = BSO.PagamentosRecebimentos.RubricasCCT.DaValorAtributo(Descritivo, "CDU_ChaveRepCCusto").ToString

        ' Apenas para teste
        Me.DocumentoPendente.Linhas.GetEdita(NumLinha).Total = 1000

    Catch ex As Exception
        PSO.MensagensDialogos.MostraMensagem(StdPlatBS100.StdBSTipos.TipoMsg.PRI_SimplesOk,
                                             Err.Description,
                                             StdPlatBS100.StdBSTipos.IconId.PRI_Exclama,
                                             ex.ToString, 1, True)
    End Try
End Sub

 

O comportamento é o seguinte:

  • Quando seleciono um descritivo, por exemplo na linha 8, o evento dispara corretamente e o Total dessa linha é alterado para 1000.

  • Contudo, todas as linhas anteriores ficam com vários campos automaticamente a zero, como:

    • Incidência

    • Valor IVA

    • Total

    • entre outros

Parece que ao editar a linha corrente, o Primavera recalcula (ou limpa) indevidamente as restantes linhas do documento.

Pergunta

Alguém já passou por isto?
Há alguma limitação ou comportamento conhecido do editor de tesouraria que cause recalculação das restantes linhas quando alteramos o Total no evento DescritivoIdentificado?

Existe alguma forma correta de alterar valores da linha sem afetar as linhas anteriores?
Será necessário usar outro evento (ex.: AntesDeGravar, DepoisDeAlterarLinha, etc.), ou alterar outro campo em vez do Total?

Obrigado desde já pela ajuda!

Faça login para poder traduzir
Integração
V10
Marcado como spam
Criado há 1 mês e 2 semanas ricardopeixoto
r
ricardopeixoto Iniciante
2 respostas
0
Resposta privada

Olá Paulo.

 

Agradeço a resposta. Vou testar.

 

O que faz exatamente as duas linhas neste contexto?

 

this.CommitContext();
this.RefreshContext();

 

Faça login para poder traduzir
Marcado como spam
Criado há 1 mês e 1 semana ricardopeixoto
r
ricardopeixoto Iniciante
    0
    Resposta privada

    Bom dia,
    Como existe a extensibilidade, o produto tem necessidade de precorrer todas as linhas abertas, atribuindo o valor 0 nas linhas sem Descritivo.
    Para contornar esta situação pode utilizar o evento antes de gravar como apresento no exemplo abaixo:

    public override void AntesDeGravar(ref bool Cancel, ExtensibilityEventArgs e)
    {
    for (int i = 1; i < this.DocumentoPendente.Linhas.NumItens; i++)
    {
    if (this.DocumentoPendente.Linhas.GetEdita(i).Incidencia != 0 && this.DocumentoPendente.Linhas.GetEdita(i).Total != 0)
    {
    this.DocumentoPendente.Linhas.Remove(i);
    }
    this.CommitContext();
    this.RefreshContext();
    }
    }

     

    Em relação a base de incidencia ser 0 na linha manipulada, pode seguir o exemplo:

    public override void DescritivoIdentificado(string Descritivo, int NumLinha, ref bool Cancel, ExtensibilityEventArgs e)
    {
    this.DocumentoPendente.Linhas.GetEdita(NumLinha).Incidencia = 1000;
    this.DocumentoPendente.Linhas.GetEdita(NumLinha).CodIva = "23";
    this.DocumentoPendente.Linhas.GetEdita(NumLinha).ValorIva = 230;
    this.DocumentoPendente.Linhas.GetEdita(NumLinha).Total = 1230;
    this.CommitContext();
    this.RefreshContext();
    }

    Faça login para poder traduzir
    Marcado como spam
    Criado há 1 mês e 1 semana paulovale-2
    p
    paulovale-2 Responsiveness Member