AdvPL não precisa ser código legado: Engenharia de Software aplicada ao Protheus

AdvPL é frequentemente associado a código legado. A associação não surgiu por acaso. Existem customizações Protheus desenvolvidas há muitos anos, funções extensas, dependência de estado compartilhado, regras de negócio misturadas com interface, acesso direto a tabelas e poucos testes automatizados. Também existem projetos sem documentação, sem estratégia clara de versionamento e com alterações realizadas diretamente em código antigo, porque ninguém conhece completamente os efeitos de uma mudança. Mas existe uma distinção importante: ...

27/07/2026 · 11 min · 2187 words · Dirlei Friedrich

Construindo um laboratório Protheus com Docker

Durante muitos anos, desenvolver para o ERP Protheus significava preparar manualmente todo o ambiente de desenvolvimento. Instalar banco de dados, configurar DBAccess, ajustar License Server, preparar AppServer, copiar arquivos de configuração e validar dependências costumava fazer parte do processo. Cada máquina acabava se tornando um ambiente único, com pequenas diferenças difíceis de rastrear. Embora esse modelo ainda seja comum em muitos projetos, ele fica distante de práticas que hoje considero essenciais em Engenharia de Software: ambientes descritos como código, configuração versionada, automação operacional e capacidade de recriar o laboratório de forma previsível. ...

08/07/2026 · 8 min · 1497 words · Dirlei Friedrich

Protheus Docker Lab

Projeto autoral para estudar Protheus em Docker com configuração versionada, automação operacional e práticas iniciais de DevOps.

08/07/2026 · 1 min · 190 words · Dirlei Friedrich

Como comecei a aplicar DevOps no meu dia a dia com PostgreSQL e Protheus

Durante muito tempo, enxerguei DevOps como algo distante da minha realidade. Parecia um assunto sempre associado a Kubernetes, pipelines complexos e uma infinidade de ferramentas que, sinceramente, não faziam muito sentido no meu dia a dia com ERP Protheus e banco de dados. Mas essa percepção começou a mudar quando retomei meus estudos e passei a olhar para DevOps de uma forma mais prática. DevOps não é apenas sobre ferramentas. É, principalmente, sobre criar ambientes mais previsíveis, automatizados e confiáveis. ...

02/05/2026 · 6 min · 1093 words · Dirlei Friedrich

Configurando PostgreSQL no Windows para Ambiente de Desenvolvimento com Protheus

Instalar PostgreSQL no Windows para um ambiente de desenvolvimento com Protheus não é apenas questão de executar um instalador. É necessário configurar o banco corretamente para que a integração com DBAccess funcione de forma estável e previsível. Este guia apresenta o passo a passo completo, desde o download até a integração total com o Protheus. ⚠️ Importante: Recomendação da TOTVS A instalação do PostgreSQL em Windows é recomendada APENAS para ambientes de desenvolvimento ou testes. ...

12/04/2026 · 8 min · 1563 words · Dirlei Friedrich

EXISTS vs IN vs JOIN no SQL: qual usar e quando?

Uma dúvida comum entre desenvolvedores e analistas de dados é: Qual a diferença entre EXISTS, IN e JOIN? Essas três abordagens podem retornar o mesmo resultado, mas possuem diferenças importantes de comportamento e performance, especialmente em bases grandes. Para quem trabalha com ERP como o Protheus, onde as tabelas crescem rapidamente, entender essas diferenças ajuda a evitar consultas lentas e escolhas ruins de modelagem SQL. Neste artigo, vamos analisar: como cada abordagem funciona quando usar cada uma diferenças práticas de performance exemplos com tabelas comuns do Protheus Exemplo prático Imagine duas tabelas comuns em um cenário de ERP: ...

16/03/2026 · 4 min · 825 words · Dirlei Friedrich

DBOrderNickname no Protheus: um recurso pouco conhecido do AdvPL

Durante o desenvolvimento de rotinas no TOTVS Protheus, é comum trabalhar com múltiplos índices em uma tabela. Normalmente utilizamos DBSetOrder() informando apenas o número do índice, mas existe uma alternativa mais segura e legível: DBOrderNickname(). Surpreendentemente, muitos desenvolvedores não sabem que esse recurso existe. Neste post vou mostrar como utilizar essa função e por que ela pode tornar seu código mais robusto. O problema do DBSetOrder() O uso tradicional funciona assim: ...

15/03/2026 · 3 min · 485 words · Dirlei Friedrich