Gestão de Orçamentos e Contratos com GLPI

Passo a passo de contratos, orçamentos, fornecedores e depreciação no GLPI: como registrar, fazer os alertas de vencimento realmente dispararem (cron + glpi_alerts), diagnosticar contratos a vencer por SQL e escolher o método de depreciação correto.

Neste artigo8 seções

Gestão de TI sem controle financeiro é navegar sem bússola. O GLPI traz módulos nativos para contratos, orçamentos, fornecedores e depreciação, todos integrados aos ativos e chamados. Na prática, porém, o que quebra não é o cadastro: é fazer os alertas dispararem e os números fecharem.

Contratos: o que registrar (e o que costuma faltar)

Em Gestão > Contratos, cada contrato deve conter:

  • Identificação: número, tipo (suporte, manutenção, locação, licença) e fornecedor vinculado.
  • Vigência: data de início e duração em meses. O GLPI não guarda a data de fim; ela é calculada a partir do início mais a duração.
  • Aviso prévio (notice): em meses. É a antecedência com que o alerta de renovação deve chegar.
  • Renovação: nunca, tácita ou expressa.
  • Custos: na aba de custos, com periodicidade (mensal, anual) para o consumo bater com o orçamento.
  • Ativos cobertos: vincule computadores, servidores e demais itens para saber o que fica sem cobertura no vencimento.

A armadilha clássica: cadastrar o contrato com duração 0 (indeterminado). Sem duração não há data de fim calculável, e o alerta de vencimento simplesmente nunca dispara.

Fazendo os alertas realmente dispararem

Três camadas precisam estar ligadas ao mesmo tempo, ou nenhum e-mail sai:

  1. Notificações globais habilitadas em Configuração > Notificações, com um destinatário real configurado para receber.
  2. Alerta ativado no próprio contrato (fim de contrato e/ou aviso prévio). O padrão vem da chave default_contract_alert.
  3. Ação automática rodando. A tarefa contract só envia se o cron do GLPI estiver sendo chamado de fato.

Em ambientes de cliente, a falha número um é o cron parado. Garanta que o GLPI é disparado pelo sistema operacional, e não apenas quando alguém acessa a interface:

# /etc/cron.d/glpi - dispara as ações automáticas do GLPI a cada minuto
* * * * * www-data /usr/bin/php /var/www/html/glpi/front/cron.php >/dev/null 2>&1

Depois, em Configuração > Ações automáticas, abra a tarefa contract e verifique: modo CLI/externo, frequência (padrão diária) e a data da última execução. Se o modo estiver como "GLPI" (interno), a tarefa depende de alguém navegando no sistema no horário certo, o que é frágil.

O alerta configurado que não reenvia

Este é o detalhe que só aparece na sustentação: o GLPI grava em glpi_alerts cada notificação já enviada, para não duplicar. Se o e-mail falhou (SMTP errado, caixa cheia) mas o registro foi gravado, o GLPI considera "já avisei" e não reenvia, mesmo depois de você corrigir o SMTP. Para forçar o reenvio de um contrato específico, limpe o marcador do alerta:

-- Descobrir o id do contrato pelo nome
SELECT id, name FROM glpi_contracts WHERE name LIKE '%Suporte Datacenter%';

-- Remover o marcador de alerta já enviado (ex.: contrato 42)
DELETE FROM glpi_alerts
WHERE itemtype = 'Contract' AND items_id = 42;

Na próxima execução do cron, a tarefa contract reavalia o vencimento e reenvia. O mesmo vale para garantias, trocando por itemtype = 'Infocom'.

Diagnóstico rápido: contratos a vencer

Antes de confiar no painel, um SELECT direto no banco confirma o que realmente está por vencer nos próximos 90 dias, com fornecedor e dias restantes:

SELECT c.id,
       c.name                                            AS contrato,
       s.name                                            AS fornecedor,
       c.begin_date,
       DATE_ADD(c.begin_date, INTERVAL c.duration MONTH) AS fim,
       DATEDIFF(DATE_ADD(c.begin_date, INTERVAL c.duration MONTH),
                CURDATE())                               AS dias_restantes
FROM glpi_contracts c
LEFT JOIN glpi_contracts_suppliers cs ON cs.contracts_id = c.id
LEFT JOIN glpi_suppliers s            ON s.id = cs.suppliers_id
WHERE c.is_deleted  = 0
  AND c.is_template = 0
  AND c.duration    > 0
  AND DATE_ADD(c.begin_date, INTERVAL c.duration MONTH)
      BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 90 DAY)
ORDER BY fim ASC;

Rode como consulta somente leitura. É o mesmo cálculo que a interface faz, útil para auditar antes de uma renovação em lote.

Orçamentos ligados a contratos e compras

Em Gestão > Orçamentos, defina valor, período (anual, semestral ou por projeto) e tipo. O ponto que muita gente ignora: o orçamento no GLPI é uma referência de acompanhamento, não um bloqueio. Ele não impede lançamentos acima do teto; ele mostra planejado versus consumido quando você vincula os custos dos contratos e as informações financeiras dos ativos (Infocom) àquele orçamento. Sem esse vínculo, o consumo fica em zero e o relatório engana.

Depreciação de ativos

Cada ativo tem a aba Gestão (Infocom) com valor de compra, data de aquisição, garantia e depreciação. O GLPI calcula o valor contábil automaticamente a partir do tipo e do prazo. Escolher o método certo evita distorção no TCO:

CenárioTipo (sink_type)Prazo típico (anos)Observação
Notebooks e desktopsLinear4 a 5Perda constante; simples de auditar.
Servidores e storageLinear5 a 7Acompanhe a garantia estendida junto.
Equipamento com perda acelerada no inícioDegressivo3 a 5Exige coeficiente (sink_coeff) coerente.
Licença ou ativo sem valor residual relevanteLinear1 a 3Alinhe o prazo à vigência do contrato.

Defina os padrões em Configuração > Geral > aba Ativos para não preencher item a item. O erro comum aqui é deixar a data de início do uso em branco: sem ela o GLPI não sabe a partir de quando depreciar, e o valor contábil fica igual ao de compra para sempre.

Relatórios e custo por atendimento

  • Ativos por valor: quanto está investido por localização ou entidade.
  • Contratos a vencer: a mesma lista do SELECT acima, agora no painel.
  • Depreciação: valor contábil do parque ao longo do tempo.
  • Custo por atendimento: valor do contrato dividido pelo número de chamados atendidos por aquele fornecedor, ótimo para embasar renegociação.

Checklist de sustentação NexTool

Na sustentação de ambientes de clientes, antes de confiar na gestão financeira do GLPI validamos sempre a mesma sequência: cron chamando front/cron.php pelo sistema operacional (não pelo navegador); tarefa contract em modo externo com última execução recente; notificações globais ativas e um destinatário real no alerta; contratos sem duration = 0 indevido; e uma varredura em glpi_alerts quando o cliente diz que "parou de receber e-mail". Nove em cada dez casos de "o GLPI não avisa vencimento" caem em um desses cinco pontos, não em bug do produto.

Precisa colocar contratos, orçamentos e alertas do GLPI funcionando de ponta a ponta? A NexTool implanta e sustenta esses fluxos em ambientes de clientes B2B: conheça a sustentação NexTool.


Revisado pela equipe NexTool Solutions.

Perguntas Frequentes

Quase sempre é uma de três causas: notificações globais desativadas, alerta não habilitado no próprio contrato, ou a ação automática 'contract' que não roda porque o cron do sistema (front/cron.php) não está agendado. Confirme as três antes de suspeitar de bug.

Ele não guarda. A data de fim é calculada a partir de begin_date mais duration (em meses). Por isso um contrato com duração 0 (indeterminado) nunca gera alerta de vencimento.

O GLPI registra cada alerta enviado em glpi_alerts para não duplicar. Apague a linha correspondente (itemtype igual a 'Contract' ou 'Infocom' e o items_id do objeto) e a próxima execução do cron reavalia e reenvia.

Linear distribui a perda de valor em partes iguais ao longo do prazo (sink_time). Degressiva concentra a perda no início, usando um coeficiente (sink_coeff). Para parque de TI padrão, linear é mais simples de auditar.

Não. O orçamento é uma referência de acompanhamento (planejado versus consumido), não um controle de bloqueio. O consumo só aparece quando você vincula os custos dos contratos e as informações financeiras dos ativos ao orçamento.

Precisa de ajuda?