Search by

lugsoft / afd-reader

lugsoft

Biblioteca PHP para leitura e interpretação de arquivos AFD de registro eletrônico de ponto, conforme Portaria 671.

Package info

github.com/brenocostax/afd-reader

pkg:composer/lugsoft/afd-reader

Statistics

Installs: 2

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

v1.0.0 2026-06-01 18:16 UTC

This package is auto-updated.

Last update: 2026-08-31 19:12:11 UTC


README

Biblioteca PHP para leitura e interpretação de arquivos AFD (Arquivo Fonte de Dados) utilizados em sistemas de registro eletrônico de ponto (REP-C, REP-A e REP-P), conforme Portaria 671 da legislação brasileira.

A biblioteca foi desenvolvida com foco em:

  • Simplicidade
  • Performance
  • Baixo consumo de memória
  • Código limpo
  • Facilidade de manutenção
  • Integração com sistemas PHP

📋 Requisitos

PHP 8.2 ou superior

📦 Instalação

Instale via Composer:

composer require lugsoft/afd-reader

🚀 Início rápido

<?php

require 'vendor/autoload.php';

use Lugsoft\AfdReader\AfdReader;

$afd = new AfdReader('arquivo-afd.txt');

$all  = $afd->getAll();
$employees  = $afd->getEmployees();
$marks      = $afd->getMarks();
$attendance = $afd->getAttendance();

print_r($attendance);

🧾 Tipos de registros

Tipo Chave de Retorno Descrição
1 header Cabeçalho do arquivo
2 companyChanges Inclusão / alteração da empresa
3 marks Marcação de ponto REP-C / REP-A
4 clockAdjustments Ajuste do relógio
5 employeeChanges Inclusão / alteração / exclusão de empregado
6 sensitiveEvents Eventos sensíveis
7 marksRepP Marcação de ponto REP-P
9 trailer Totalizadores do arquivo
99 digitalSignature Assinatura digital

Métodos disponíveis

getAll()

Retorna todos os registros encontrados no arquivo AFD.

// exemplo
$afd->getAll();

// exemplo retorno
[
    'header' => [...],
    'companyChanges' => [...],
    'marks' => [...],
    'clockAdjustments' => [...],
    'employeeChanges' => [...],
    'sensitiveEvents' => [...],
    'markRepP' => [...],
    'trailer' => [...],
    'digitalSignature' => [...]
]

getType()

Retorna registros de um tipo específico.

Consulte os tipos de registros suportados.

// exemplo
$afd->getType(3);

// Exemplo retorno (tipo 3)
[
    [
        'nsr' => '000000001',
        'dateTimeMark' => '2026-04-29 07:38:00',
        'cpf' => '12345678901'
    ],
    [
        'nsr' => '000000002',
        'dateTimeMark' => '2026-04-29 12:50:00',
        'cpf' => '12345678901'
    ]
]

getEmployees()

Retorna funcionários indexados pelo CPF.`

// exemplo retorno
[
    '12345678901' => [
        'name' => 'Breno Costa',
        'cpf' => '12345678901',
        'active' => true,
        'createdAt' => '2026-04-29 08:00:00'
    ]
]

getMarks()

Retorna marcações de ponto (tipo 3) com filtros opcionais.

// exemplo (filtros opcionais)
$afd->getMarks([
    'cpf' => '12345678901',
    'startDate' => '2026-04-01',
    'endDate' => '2026-04-30',
    'displayName' => true
]);

// exemplo retorno
[
    [
        'cpf' => '12345678901',
        'name' => 'Breno Costa',
        'dateTimeMark' => '2026-04-29 08:00:00'
    ]
]

getAttendance()

Retorna marcações agrupadas por funcionário e data, com pares de entrada e saída e total trabalhado.

// exemplo (filtros opcionais)
$afd->getAttendance([
    'cpf' => '12345678901',
    'startDate' => '2026-04-01',
    'endDate' => '2026-04-30',
    'displayName' => true
]);

// exemplo retorno
[
    [
        'cpf' => '12345678901',
        'name' => 'Breno Costa',
        'date' => '2026-04-29',
        'marks' => [
            ['07:38:00', '12:50:00'],
            ['13:38:00', '17:50:00']
        ],
        'workedSeconds' => 30480,
        'workedTime' => '08:28:00'
    ]
]

📚 Referência

Documentação técnica utilizada como base para o desenvolvimento do projeto está disponível em:

AFD Layout Reference

🧪 Testes

Instalar dependências de desenvolvimento

composer install

Executar todos os testes

./vendor/bin/pest

ou

composer test

🤝 Contribuindo

Pull Requests são bem-vindos.

📄 Licença

MIT

👨‍💻 Autor

Breno Costa