inovanti-bank / inovanti-holidays
Pacote para gerenciamento de feriados fixos e móveis em Laravel 11+
Requires
- php: ^8.0
- laravel/framework: ^11.0
Requires (Dev)
- laravel/pint: ^1.19
- mockery/mockery: ^1.6
- orchestra/testbench: ^9.0
- phpunit/phpunit: ^11.5
This package is auto-updated.
Last update: 2025-05-27 14:48:51 UTC
README
Introdução
O inovanti-holidays é um componente Laravel 11 para gerenciamento de feriados nacionais e estaduais. Ele permite:
- ✅ Listar, criar, atualizar e deletar feriados
- ✅ Verificar se uma data é feriado
- ✅ Calcular o próximo dia útil a partir de uma data
- ✅ Popular a tabela de feriados via comando Artisan
- ✅ Gerenciar feriados fixos e móveis
- ✅ Configurar estados e anos desejados
- ✅ Integrar facilmente com outras aplicações Laravel
📦 Instalação
Para instalar o pacote, execute o seguinte comando:
composer require inovanti-bank/inovanti-holidays
Em seguida, execute as migrations:
php artisan migrate
📌 Modificações e Melhorias na versão 1.1.0
A versão 1.1.0 introduz melhorias significativas no pacote, incluindo:
- 1️⃣ Validação automática de feriados existentes ao cadastrar ou atualizar um feriado, evitando duplicidades com os mesmos parâmetros.
- 2️⃣ Parâmetro persistent_for_all_years: Agora é possível criar um feriado para todos os anos disponíveis na base de dados, eliminando a necessidade de inseri-los manualmente ano a ano.
- 3️⃣ Melhorias no comando holidays:save:
- Nova opção
--truncate
: Permite limpar a tabela antes da inserção. - Nova opção
--yearFrom=YYYY
: Define a partir de qual ano os feriados devem ser gerados. - Confirmações interativas: O usuário é perguntado se deseja gerar feriados para 10 anos (padrão) ou escolher outro valor.
- Nova opção
📩 Uso
1. Listar todos os feriados
use Inovanti\Holidays\Models\Holiday; $holidays = Holiday::all();
2. Adicionar um novo feriado
use InovantiBank\Holidays\Services\HolidaysService; $service = app(HolidaysService::class); $holiday = $service->create([ 'name' => 'Dia da Independência', 'date' => '2025-09-07', 'type' => 'fix', 'state' => null, 'optional' => false, 'scope' => 'state', ]); // Se o feriado já estiver cadastrado, será lançada uma exceção com a mensagem: // Já existe um feriado com esses parâmetros.
3. Criar feriados para múltiplos anos
$service->create([ 'name' => 'Feriado Anual', 'date' => '2025-06-15', 'type' => 'fix', 'scope' => 'state', 'optional' => false, 'state' => 'SP', ], true); // Criará o mesmo feriado para todos os anos da base // Se um feriado para aquele ano já existir, ele será ignorado.
4. Verificar se uma data é feriado
return Holiday::where('date', '2025-12-25')->exists();
5. Calcular o próximo dia útil
use Carbon\Carbon; use InovantiBank\Holidays\Helpers\DateHelper; // Consulte mais métodos de apoio na classe DateHelper $today = Carbon::today(); return $helper->getNextBusinessDay($today);
6. Popular feriados na base de dados
php artisan holidays:save
➡️ Isso adiciona feriados para os próximos 10 anos (padrão).
- ✅ Novas opções:
--truncate
: Apaga todos os feriados antes de inserir. Requer confirmação.--yearFrom=YYYY
: Define a partir de qual ano os feriados serão gerados.--years=N
: Define quantos anos à frente deseja gerar.
Exemplos:
- Gerar feriados apenas de 2025 a 2030:
php artisan holidays:save --yearFrom=2025 --years=5
- Zerar e recriar feriados para os próximos 10 anos:
php artisan holidays:save --truncate
Se --truncate
for passado, será exibida uma pergunta de confirmação antes de apagar a tabela.
🧪 Testes
O pacote inclui testes unitários e de feature. Para executá-los:
Teste geral
pode ser usado umm dos dois comandos
vendor/bin/phpunit
composer test
Testes Unit
vendor/bin/phpunit --testsuite=Unit composer unit
Testes Feature:
vendor/bin/phpunit --testsuite=feature composer feature
🤝 Contribuindo
Contribuições são bem-vindas! Se você deseja reportar um bug, solicitar um novo recurso ou contribuir com código, fique à vontade para abrir uma issue ou enviar um Pull Request.
- Faça um Fork do projeto
- Crie sua feature branch:
git checkout -b minha-nova-feature
- Commit suas mudanças:
git commit -m 'Adiciona nova feature'
- Faça o push para a branch:
git push origin minha-nova-feature
- Crie um novo Pull Request
📜 Licença
Este projeto está licenciado sob a MIT license.
📢 Resumo das mudanças
- ✅ Agora feriados duplicados são evitados automaticamente.
- ✅ Adicionado suporte para criação de feriados para múltiplos anos.
- ✅ Melhorias no comando holidays:save, com opções interativas e novos parâmetros.
- ✅ Mais testes cobrindo os novos recursos.