Manual (SmartTOOLS – Validações e eventos)

Criado por Etorre · 02/07/2026 Alterado por Etorre · 03/09/2026

Minimum requirements:

  • .NET Framework 4.7.2
  • Database in SQL Server 2016 or above
  • Sage 2021 version or above

Introdução

O SmartTools é um produto abrangente, com diversos tipos de micro produtos, validações, rotinas etc. um autêntico canivete suíço.

Manual de instalação

O processo de instalação da extensibilidade é bastante simples. 
Pedimos ao utilizador que siga os passos abaixo indicados para instalar a extensibilidade SmartTools.
Para a utilização da extensibilidade a base de dados deve correr numa versão SQL Server 2016 ou superior.

Passo 1 – Instalação da extensibilidade

Executar o exe de instalação do produto como administrador .

Passo 2 – Configurar o Sage

Abrir o BackOffice do Sage > Clicar no botão do menu > Clicar no botão “Personalização” > Clicar no botão “Parametrizações funcionais”

Ao abrir a janela dos “Parâmetros”, clicar no botão “Integração de Dados”. 

No sub-menu “Extensibilidade” preencher o campo “Ponto de entrada para a classe ISageExtender:” com o seguinte texto sem aspas.
“SmartDigit.SmartTools.Sage50c”

Alterar a opção “Carrega o módulo da extensibilidade em:” para a adequada.

Deve agora clicar no botão “Fechar e gravar” deverá depois reiniciar o Sage para as configurações serem aplicadas.

Manual de Configuração

A extensibilidade foi desenvolvida com o foco de ser simples e intuitiva, no entanto abaixo pode encontrar as descrições das funcionalidades.
O SmartTools é uma ferramenta poderosa, quem vem colmatar algumas falhas que o sage tem.
Uma das funcionalidades do produto, é a validação de campos.
Alguns exemplos de uso

Não deixar gravar um documento caso algo não esteja de acordo
Não deixar gravar uma ficha de cliente caso o telefone não esteja preenchido
Dar uma mensagem ao fazer um documento caso o cliente tenha artigos por entregar
Estes são alguns exemplos da funcionalidade do produto, visto ser uma ferramenta dinâmica conseguimos validar qualquer campo.

Para configurar uma ferramenta basta ir SmartApps-> Ferramentas

Dentro das ferramentas podemos criar uma ferramenta do tipo Logs

Descrição : Descrição da ferramenta criada
Tipo : Neste exemplo é logs
Ativo : se está ou não ativa a ferramenta
Event :Onde é para fazer a validação, caso seja na gravação então por norma será sempre OnValidating
Entity Onde é para executar, em que tabela, neste exemplo Customer (Clientes)
Query : query que vai fazer a validação
Mensagem : Mensagem a mostrar caso o retorno da query seja true
Mostrar mensagem : Se mostramos a mensagem
Mandatorio : Se é obrigatorio

Neste exemplo acima a ferramenta criada vai verificar ao gravar um cliente se o email está preenchido, caso não esteja aparece a mensagem “Por favor preencha o email” e não deixa gravar o cliente até o mesmo estar preenchido

Criada a ferramenta podemos então validar a mesma, caso seja criado um cliente sem email vai mostrar a seguinte mensagem

Caso tenhamos dificuldade a saber os campos a validar na query, podemos sempre ativar a opção “registar objetos do evento” na criação da ferramenta. dessa forma ao gravar na etidade criada registamos todo o objeto na tabela ux_sd_logs .
Em alternativa mas pode não ser tão perceptível visto existirem centenas de campos, podemos carregar no botão “propriedades” na criação da ferramenta, para pesquisarmos a variável pretendida

Alguns Exemplos

Validar desconto da família do artigo

  • Validar desconto da família do artigo, caso seja superior bloquear (caso esse desconto venha de campanha o Sage não tem isso em conta nem valida. com o smarttools tal validacao é possivel)
Evento : OnValidation
Entity : SaletransactionDetail
Query :
select
case when #DiscountPercent# > (select f.MaximumDiscountAllowed from Item i inner join Family f on f.FamilyID=i.FamilyID where itemid=’#ItemID#’) then 1
else 0 end
Mensagem :Desconto Maior que o permitido

Gravar/Alterar vendas com datas anteriores

Evento : OnValidation
Entity : Saletransaction
Query : 
SELECT 
    CASE 
        WHEN CAST(GETDATE() AS time) >= '21:30:00'
             AND TRY_CONVERT(
                    date,
                  '#ExtraFieldList[ExtraFieldID='17'].DateAnswer#',
                    103
                 ) = DATEADD(day, 1, CAST(GETDATE() AS date))
        THEN 1
        ELSE 0
    END



Bloquear venda com base na data de um campo extra

Nao permitir que o operador depois das 21.30 registe um documento com data de entrega para o dia seguinte

Evento : OnValidation
Entity : Saletransaction
Query : 
SELECT CASE
    WHEN CAST(GETDATE() AS time) >= '21:30:00'
    AND TRY_CONVERT(
        date,
        '#ExtraFieldList[ExtraFieldID='17'].DateAnswer#',
        103
    ) = DATEADD(day, 1, CAST(GETDATE() AS date))
    THEN 1
    ELSE 0
END
Mensagem :Nao pode gravar o documento com data de amanha depois das 21:30