Repository navigation
Feat/planos limites - #43
Merged
Merged
Conversation
- database/migrations/011_validade_pontos.sql: coluna points_expiry_months (padrao 12 meses) e tipo expire no points_log - database/schema.sql: mesma mudanca no estado final e registro da 011 em schema_migrations - docs/db/schema-explanation.md: documenta o prazo, o calculo do vencimento e o tipo expire - src/Models/MerchantModel.php: findById traz o prazo e updatePointsExpiry grava - src/Controllers/MerchantController.php: lista de prazos aceitos e acao de salvar a validade - views/merchant/points-rule.php: card Validade dos pontos com o select de prazo - views/partials/flash.php: mensagens validade_invalida e validade_salva, e o campo que o erro aponta - tests/Feature/PointsExpiryConfigTest.php: testes do padrao de 12 meses, troca, desligar, valor invalido e isolamento entre lojas
- src/Models/LoyaltyCardModel.php: metodos expire, expireIdle e countExpirable, com trava do cartao e registro expire na mesma transacao - bin/expire-points.php: script da rotina, com --dry-run que so mostra o que venceria - src/Support/helpers.php: tipo expire aparece como Venceu no extrato e nos relatorios - public/css/app.css: selo badge-expire com as cores de erro da paleta - docs/operacao.md: secao Vencimento dos pontos com o comando e como agendar - CLAUDE.md: comando novo e a regra de validade no modelo de dados - tests/Integration/PointsExpiryTest.php: testes da rotina (prazo por loja, renovacao, loja inativa, lotes, sem vencer em dobro) - tests/Unit/HelpersTest.php: teste do rotulo e selo do vencimento
- src/Models/LoyaltyCardModel.php: findByMerchantAndPhone devolve expires_at (ultima movimentacao mais o prazo da loja) - src/Support/helpers.php: funcao format_date para mostrar so o dia - views/partials/points-expiry.php: linha com a validade do saldo, ou aviso de vencido - views/customer/balance.php: consulta publica mostra ate quando os pontos valem - views/merchant/customer.php: tela do cliente no painel mostra a mesma data - public/css/components.css: classe points-expiry - CLAUDE.md: documenta o format_date e de onde vem a data de vencimento - tests/Feature/PointsExpiryScreenTest.php: testes das duas telas (prazo da loja, sem data, vencido, isolamento entre lojas) - tests/Unit/HelpersTest.php: teste do format_date
- src/Support/Plan.php: classe nova com os planos, os limites de cada um e a pergunta cabe mais um - src/Controllers/MerchantController.php: confere o limite antes de cadastrar cliente, criar premio ou reativar um - src/Models/MerchantModel.php: findById traz o plano da loja - src/Models/RewardModel.php: countActiveByMerchant conta os premios ativos - views/partials/flash.php: mensagens limite_clientes e limite_premios com os numeros vindos do Plan - tests/Unit/PlanTest.php: testes dos limites e do plano desconhecido valendo como Free - tests/Feature/PlanLimitsTest.php: testes de tela (100 clientes, 3 premios ativos, Pro sem limite, loja acima do limite) - docs/db/schema-explanation.md: coluna plan passa a ter uso documentado - CLAUDE.md: regra dos planos e onde ela mora
- src/Controllers/MerchantController.php: planUsage calcula quanto do plano a loja usou e entrega ao perfil e a tela de premios - views/partials/plan-usage.php: cartao Plano com o uso de clientes e de premios ativos, com barra e aviso no limite - views/merchant/profile.php: mostra o cartao Plano no topo do perfil - views/merchant/rewards.php: avisa quantos premios ativos cabem antes do formulario de novo premio - public/css/app.css: estilos do cartao Plano - tests/Feature/PlanUsageScreenTest.php: testes das telas (Free, no limite, acima do limite, Pro sem limite)
- src/Models/MerchantModel.php: lista do admin traz o plano e setPlan grava (so plano que existe) - src/Controllers/AdminController.php: acao plan na lista de lojas - views/admin/dashboard.php: coluna Plano com o seletor Free ou Pro em cada loja - views/partials/flash.php: mensagem plano_alterado - public/css/app.css: estilo do seletor de plano na tabela - tests/Feature/AdminPlanTest.php: testes da troca (efeito no limite, plano invalido, so admin troca, sem csrf) - docs/operacao.md: explica os planos e a troca pelo admin - CLAUDE.md: onde o lojista ve o plano e quem pode trocar
Collaborator
|
Revisão da task 32 (planos Free e Pro). Atenção: este PR está empilhado sobre o #42. Ele traz os 3 commits da validade de pontos, mas a base é a O código está limpo:
Antes do merge
Menores
No Notion, a task 32 está como Em revisão com este PR, e o responsável é você. |
sousa7tz
approved these changes
Oct 17, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.