Fórum
Ver pergunta

Extensibilidade C# – Execução dll’s no ERP   

114 visualizações
0
0

Boa tarde,

Precisava de uma pequena ajuda para compreender o funcionamento da execução dos dll’s de extensibilidade na v10. Não sou programador no entanto estou a tentar aprender um pouco sobre o assunto (C#, Visual Studio e Extensibilidade Primavera) para fazer algumas coisas muito simples.

Se no mesmo ambiente existirem vários dll’s, de desenvolvedores diferentes, e eu quiser adicionar o meu dll, que executa algo no evento AntesDeGravar, nos documentos de vende por exemplo, preciso de ter algum cuidado especial tendo em conta que nos restantes dll’s também pode ter código para o mesmo evento?

O meu dll pode de alguma forma colocar em risco a execução ou não de outros dlls com o mesmo evento ou com outro? Disso depende a ordem de execução?

No caso em concreto tenho o meu dll tem o seguinte código em baixo. Partindo do principio que nenhum outro dll faz o que este faz, é indiferente colocar em primeiro lugar ou em último na ordem de execução?

Obrigado desde já!!

using Primavera.Extensibility.BusinessEntities.ExtensibilityService.EventArgs;
using Primavera.Extensibility.Sales.Editors;
using System;
using System.Linq;
using VndBE100;

namespace Primavera.Logistics.Extensibility
{
    public class SalesEditor : EditorVendas
    {
        public override void AntesDeGravar(ref bool Cancel, ExtensibilityEventArgs e)
        {
            base.AntesDeGravar(ref Cancel, e);

            // Lista de tipos de documentos onde a validação deve ser aplicada
            string[] tiposPermitidos = new[] {"ECL"};

            // Obtém o tipo de documento atual
            string tipoDoc = this.DocumentoVenda.Tipodoc?.ToUpper() ?? string.Empty;

            // Se o tipo de documento não estiver na lista permitida, sai sem processar o resto do código
            if (!tiposPermitidos.Contains(tipoDoc))
            {
                return;
            }

            // Percorre todas as linhas do documento
            foreach (VndBELinhaDocumentoVenda linha in this.DocumentoVenda.Linhas)
            {
                // Verifica se o artigo é um dos especificados e se o preço unitário é diferente de zero
                if (new[] { "0", "OBS" }.Contains(linha.Artigo, StringComparer.OrdinalIgnoreCase) && linha.PrecUnit != 0)

                    {
                        // Cancela a gravação
                        Cancel = true;

                    // Lança uma exceção com a mensagem de erro (será exibida ao utilizador)
                    throw new System.Exception("Existe pelo menos 1 artigo que não é suposto ter preço > 0!");
                }
            }
        }
    }
}

 

 

Faça login para poder traduzir
Integração
V10
Geral
Marcado como spam
Criado há 7 meses e 2 semanas carlosmoreira
c
carlosmoreira Iniciante
1 respostas
0
Resposta privada

Boas Carlos!
Antes de qualquer procedimento da tua parte, deves necessariamente confirmar sempre o que faz cada uma das extensões para evitares redundância de funcionalidades no sistema e assim colocar em risco ou sobrecarregar o ERP.
Quanto ao restante, não há impedimento de seguires em adicionar a tua DLL ao sistema.

Faça login para poder traduzir
Marcado como spam
Criado há 7 meses e 2 semanas domingoschivela
d
domingoschivela Responsiveness Member