| ♥ 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!");
}
}
}
}
}
Marcado como spam |
| Resposta privada Boas Carlos! Marcado como spam |