Commit Graph

103 Commits

Author SHA1 Message Date
806bfc1a89 feat: Adicionar aviso de IVA em todos os preços
�� IVA NÃO INCLUÍDO - Avisos adicionados

📍 LOCAIS ATUALIZADOS:

1. Pricing Page (/pricing)
   - Aviso "+ IVA" abaixo do preço principal
   - Texto destacado em amarelo

2. Profile Page (/profile)
   - Seção de assinatura com "(IVA não incluído)"

3. Billing Page (/billing)
   - Plano atual com aviso de IVA

🌍 i18n - 3 Idiomas:

pt-BR:
- plusVat: "+ IVA"
- vatNotIncluded: "(IVA não incluído)"
- billedAnnually: "...€{{price}} + IVA"

ES:
- plusVat: "+ IVA"
- vatNotIncluded: "(IVA no incluido)"
- billedAnnually: "...€{{price}} + IVA"

EN:
- plusVat: "+ VAT"
- vatNotIncluded: "(VAT not included)"
- billedAnnually: "...€{{price}} + VAT"

🎨 VISUAL:
- Texto em amarelo (text-warning)
- Destaque com fw-semibold
- Posicionamento consistente

 Cliente agora vê claramente que IVA será adicionado
2025-12-19 17:23:34 +01:00
0a10fd0194 fix: Evitar criação de faturas duplicadas no webhook PayPal
🐛 PROBLEMA IDENTIFICADO:
- Cliente pagava 1 assinatura mas recebia 2 faturas
- Fatura 1: subscription_create (método confirm())
- Fatura 2: subscription_cycle (webhook PAYMENT.SALE.COMPLETED)
- Ambas criadas com 8 segundos de diferença

 SOLUÇÃO IMPLEMENTADA:

handlePaymentCompleted() agora verifica:

1. Se já existe fatura com mesmo paypal_payment_id
   - Evita duplicação por webhook reprocessado

2. Se já existe fatura paga HOJE para esta subscription
   - Evita duplicação do pagamento inicial
   - Webhook vem depois do confirm()

3. Só cria nova fatura se for pagamento recorrente genuíno

📊 RESULTADO:
- Pagamento inicial: 1 fatura (subscription_create)
- Renovação mensal/anual: 1 fatura (subscription_cycle)
- Webhooks duplicados: ignorados com log

🗑️ LIMPEZA:
- Removida fatura duplicada WM-2025-000002 do user_id 35
2025-12-19 17:20:12 +01:00
02529adc18 fix: Corrigir bugs no sistema de cancelamento
🐛 BUGS CORRIGIDOS:

1. SubscriptionCancelledMail - Argumentos incorretos
   - Estava: (User, Plan, Carbon, bool)
   - Correto: (User, string, bool, ?string)
   - Linha: SubscriptionController.php:1214

2. PayPal - Evitar cancelar assinaturas admin-granted
   - Detectar paypal_subscription_id com prefixo 'ADMIN_GRANTED_'
   - Skip chamada PayPal para assinaturas gratuitas do admin
   - Aplica em: executeCancellation() e applyRetentionOffer()

3. Log melhorado
   - Adicionado paypal_id aos logs de erro

 Sistema de cancelamento agora funciona com:
- Assinaturas PayPal normais
- Assinaturas admin-granted (gratuitas)
- Email de cancelamento correto
2025-12-19 17:12:46 +01:00
5d094c2f51 fix: Atualizar service worker para v1.60.0 e rebuild frontend
- Atualizar CACHE_VERSION do sw.js para v1.60.0
- Forçar atualização de cache do navegador
- Resolver 404 nas novas rotas (problema de cache)
- Novo build: index-CbxYTYkw-1766160284564.js
2025-12-19 17:04:53 +01:00
2c883be168 feat: Sistema completo de cancelamento de assinatura v1.60.0
 Novo Sistema de Cancelamento com Retenção Inteligente
- Wizard de 5 etapas com mensagens emocionais personalizadas
- Oferta de 3 meses grátis para cancelamentos por preço (elegível se >= 3 meses pagos)
- Cumprimento legal: período de garantia 7 dias com reembolso total
- Rastreamento de ofertas em DB (impede reuso)
- Analytics de cancelamentos (motivo, feedback, within_guarantee)

🎨 Frontend
- CancellationWizard.jsx (1050+ linhas) com 5 steps
- Profile.jsx com nova seção de assinatura
- i18n completo em 3 idiomas (pt-BR, ES, EN)
- 40+ traduções específicas

🔧 Backend
- SubscriptionController: 4 novos métodos (eligibility, process, offer, execute)
- PayPalService: suspensão temporária de assinatura
- 2 novas tabelas: retention_offers, cancellations
- Email de retenção emotivo em Blade

⚖️ Legal
- 7 dias: cancelamento = reembolso total + acesso imediato termina
- Após 7 dias: cancelamento = acesso até fim do período, sem reembolso
- Grace period apropriado conforme período de garantia
2025-12-19 17:00:54 +01:00
f5d2c8df16 docs: atualizar VERSION 1.59.0 e CHANGELOG com Factory Reset 2025-12-19 16:46:07 +01:00
27f3bd8869 feat: implementar Factory Reset completo com wizard e sistema de backup
Backend:
- AccountDeletionController com 4 endpoints principais
- requestDeletionCode: Envia código de 6 dígitos por email (válido 10min)
- exportBackup: Exporta todos os dados do usuário em JSON
- executeHardDelete: Deleta permanentemente conta e dados com validação de código
- importBackup: Importa backup completo com mapeamento de IDs

Frontend:
- FactoryResetWizard: Wizard de 4 etapas (Warning → Backup → Code → Confirmation)
- ImportBackupModal: Drag & drop para importar backup JSON
- Integração na página Profile com seção de Gerenciamento de Dados
- accountDeletionService: Serviços API completos

Email:
- Template HTML para código de confirmação
- Avisos visuais sobre irreversibilidade da ação

i18n:
- Traduções completas em pt-BR, es, en
- 50+ strings de tradução adicionadas
- Avisos e mensagens de erro traduzidos

Funcionalidades:
 Hard delete com confirmação dupla (código + texto DELETAR)
 Backup completo em JSON (transações, contas, categorias, etc)
 Importação de backup com mapeamento inteligente de IDs
 Email com código de segurança
 Wizard responsivo com 4 etapas
 Validação de arquivos e tamanho (max 50MB)
 Drag & drop para upload
 Estatísticas de importação
 Logout automático após delete
2025-12-19 16:45:08 +01:00
4ad7060323 feat: adicionar traduções i18n faltantes e atualizar copilot-instructions
- Adicionar traduções para modal de keywords do centro de custo Geral
- Corrigir toasts sem i18n em Accounts e LiabilityAccounts
- Adicionar regra no copilot-instructions sobre verificação obrigatória de i18n
- Garantir que todos os textos visíveis usem t() com traduções em pt-BR, es e en
2025-12-19 16:33:39 +01:00
c787077a39 fix: associar automaticamente transações ao centro de custo Geral
- Corrigir validação de keywords permitindo array vazio
- Atualizar todas transações existentes sem centro de custo para Geral
- Criar centro de custo Geral para usuários sem ele
- Associar automaticamente novas transações criadas ao Geral
- Associar automaticamente transferências ao Geral
- Associar automaticamente transações importadas ao Geral
2025-12-19 16:26:27 +01:00
366254312c feat: permitir edição de palavras-chave do centro de custo Geral (sistema) 2025-12-19 16:22:11 +01:00
b61ac7c7fa fix: corrigir dependências do useCallback para viewMode em transações 2025-12-19 16:12:29 +01:00
27d7e91896 feat: opções de visualização de transações (semanal, mensal, todas)
- Adicionado seletor de viewMode: 'week', 'month', 'all'
- Backend ajustado para trazer todos os dados quando viewMode é month/all
- Agrupamento por mês no frontend
- Lista flat para visualização 'todas'
- Traduções i18n para pt-BR, en, es
2025-12-19 15:00:36 +01:00
44bc999840 feat: melhorias no filtro de transações
- Filtro 'Sem Categoria' mostra lista flat ao invés de agrupada por semanas
- Transações futuras aparecem quando qualquer filtro está ativo
- Filtro de data parcial (só data inicial ou só data final)
- COALESCE para effective_date com fallback para planned_date
- Traduções i18n para filteredResults, filterActive, uncategorized
2025-12-19 14:28:27 +01:00
f2e032f002 feat: adicionar filtro 'Sem Categoria' nas transações
- Backend: suporte para category_id=uncategorized nos endpoints index e byWeek
- Frontend: opção 'Sem Categoria' no CategorySelector com prop showUncategorized
- Permite filtrar 525 transações importadas que ainda não foram categorizadas
2025-12-19 12:12:07 +01:00
54cccdd095 refactor: migração para desenvolvimento direto no servidor
- Removido README.md padrão do Laravel (backend)
- Removidos scripts de deploy (não mais necessários)
- Atualizado copilot-instructions.md para novo fluxo
- Adicionada documentação de auditoria do servidor
- Sincronizado código de produção com repositório

Novo workflow:
- Trabalhamos diretamente em /root/webmoney (symlink para /var/www/webmoney)
- Mudanças PHP são instantâneas
- Mudanças React requerem 'npm run build'
- Commit após validação funcional
2025-12-19 11:45:32 +01:00
marcoitaloesp-ai
accba4ec41
chore: atualizar scripts de deploy com referência ao Gitea 2025-12-19 08:33:05 +00:00
marcoitaloesp-ai
0949343f9b
chore: migrar repositório para Gitea (git.cnxifly.com) - removido GitHub 2025-12-19 08:29:54 +00:00
marcoitaloesp-ai
6a86b2627d
fix: Remove undefined businesses() relation call in AssetAccountController
- Fixed 500 error on POST /api/asset-accounts/wizard
- business_id is now optional and only set if provided in request
- Previously tried to call User::businesses() which doesn't exist
2025-12-18 19:27:57 +00:00
marcoitaloesp-ai
a90ff9d013
feat: Redesign cost center modal + document modal pattern
- Completely redesigned Cost Center create/edit modal with elegant wizard-style UI
- Added preview card, visual settings section, keyword tags with auto-assign badge
- Added missing i18n translations for costCenters (namePlaceholder, descPlaceholder, etc.)
- Documented modal design pattern in copilot-instructions.md for future reference
- Pattern includes: colors, structure, labels, cards, tags, switch components
2025-12-18 19:20:20 +00:00
marcoitaloesp-ai
3ebb19e9c6
fix: Add common.selectIcon i18n key 2025-12-18 19:15:20 +00:00
marcoitaloesp-ai
e70f5d169c
fix: Add common.selection i18n key 2025-12-18 19:14:01 +00:00
marcoitaloesp-ai
48e6857ef1
fix: Complete i18n translations for category modals
Added missing translations for ES, PT-BR and EN:
- categories.selectParent, noKeywords, namePlaceholder, descPlaceholder
- categories.visualSettings, autoCategorizationLabel
- categories.batchDescription, analyzingTransactions
- categories.noMatchesFoundTitle
- Improved existing translations for better UX
2025-12-18 19:09:28 +00:00
marcoitaloesp-ai
9c9d6443e7
v1.57.0: Redesign category modals + i18n updates + demo transactions fix
- Redesigned category create/edit modal with elegant wizard-style UI
- Redesigned batch categorization modal with visual cards and better preview
- Added missing i18n translations (common.continue, creating, remove)
- Added budgets.general and wizard translations for ES, PT-BR, EN
- Fixed 3 demo user transactions that were missing categories
2025-12-18 19:06:07 +00:00
marcoitaloesp-ai
6292b62315
feat: complete email system redesign with corporate templates
- Redesigned all email templates with professional corporate style
- Created base layout with dark header, status cards, and footer
- Updated: subscription-cancelled, account-activation, welcome, welcome-new-user, due-payments-alert
- Removed emojis and gradients for cleaner look
- Added multi-language support (ES, PT-BR, EN)
- Fixed email delivery (sync instead of queue)
- Fixed PayPal already-cancelled subscription handling
- Cleaned orphan subscriptions from deleted users
2025-12-18 00:44:37 +00:00
marcoitaloesp-ai
984855e36c
feat: Landing page pública + Registro com seleção de plano
- Nova Landing Page institucional em /
- Seções: Hero, Features, Pricing, FAQ, CTA, Footer
- Pricing integrado com API de planos
- Register.jsx agora suporta seleção de plano
- Parâmetro ?plan=slug na URL do registro
- Traduções EN, ES, PT-BR para landing
- PayPal configurado no servidor (sandbox)

Versão: 1.54.0
2025-12-17 19:44:12 +00:00
marcoitaloesp-ai
c99bca9404
v1.53.0: Fix admin middleware, deploy cnxifly pages from server 2025-12-17 17:42:46 +00:00
marcoitaloesp-ai
3a336eb692
feat: Admin user management + SaaS limits tested v1.51.0
- Add UserManagementController@store for creating users
- Add POST /api/admin/users endpoint
- Support user types: Free, Pro, Admin
- Auto-create 100-year subscription for Pro/Admin users
- Add user creation modal to Users.jsx
- Complete SaaS limit testing:
  - Free user limits: 1 account, 10 categories, 3 budgets, 100 tx
  - Middleware blocks correctly at limits
  - Error messages are user-friendly
  - Usage stats API working correctly
- Update SAAS_STATUS.md with test results
- Bump version to 1.51.0
2025-12-17 15:22:01 +00:00
marcoitaloesp-ai
679a1bc4b2
feat(subscriptions): Add PayPal integration for SaaS (Fase 3) v1.50.0
Backend:
- PayPalService with OAuth2, subscriptions, webhooks
- SubscriptionController with status, subscribe, confirm, cancel, invoices
- Webhook handlers for PayPal events (activated, cancelled, expired, payment)
- Config for PayPal credentials

Frontend:
- Pricing.jsx: Plans page with cards, FAQ, trust badges
- Billing.jsx: Subscription management, invoices list, cancel modal
- Added routes /pricing (public) and /billing (auth)
- Navigation links in Settings menu

Translations:
- pricing.* and billing.* keys in ES, PT-BR, EN
- nav.pricing, nav.billing

Ready for PayPal Sandbox testing once credentials are configured.
2025-12-17 10:56:54 +00:00
marcoitaloesp-ai
0adb5c889f
feat(subscriptions): sistema de assinaturas SaaS v1.49.0
- Criar tabela plans com Free, Pro Monthly, Pro Annual
- Criar tabela subscriptions com status e integração PayPal
- Criar tabela invoices com numeração sequencial WM-YYYY-NNNNNN
- Models: Plan, Subscription, Invoice com helpers
- User: hasActiveSubscription(), onTrial(), currentPlan(), etc.
- API: GET /api/plans (público)
- Seeder: PlansSeeder com 3 planos base
- Fase 2 do roadmap SaaS concluída
2025-12-17 10:46:34 +00:00
marcoitaloesp-ai
abaf0097c5
feat(profile): perfil completo para SaaS v1.48.0
- Expandir tabela users com campos para SaaS
- Adicionar: first_name, last_name, phone_country_code, phone
- Adicionar: accept_whatsapp, accept_emails, country, timezone, locale
- User Model: accessors fullName e fullPhone
- Profile.jsx: formulário completo com DDI, checkboxes, seletores
- Traduções i18n em ES, PT-BR, EN
- Fase 1 do roadmap SaaS concluída
2025-12-17 10:40:20 +00:00
marcoitaloesp-ai
8121a35c8b
docs: atualizar README para v1.47.0 com novas funcionalidades 2025-12-17 10:24:34 +00:00
marcoitaloesp-ai
8157220875
docs: atualizar copilot-instructions com regra de README 2025-12-17 10:23:00 +00:00
marcoitaloesp-ai
38defe1060
v1.47.0 - Página Meu Perfil: editar nome, email e senha 2025-12-17 10:22:04 +00:00
marcoitaloesp-ai
c04dfd339c
v1.44.6 - Anti-spam: DKIM validado, headers adicionados, docs atualizadas 2025-12-17 10:14:35 +00:00
marcoitaloesp-ai
727a70d9d1
fix: Restore proper UTF-8 accented characters in email template
UTF-8 encoding is properly configured in the HTML meta tag,
no need to remove accents as a workaround.
2025-12-17 10:07:11 +00:00
marcoitaloesp-ai
135dc56eb6
chore: Improve email anti-spam compliance and update server docs
- Add proper email headers: X-Mailer, X-Priority, Precedence, List-Unsubscribe
- Improve HTML template with XHTML doctype for better compatibility
- Add compliance footer with unsubscribe link and address
- Remove accented characters from email template (spam trigger)
- Update CREDENCIAIS_SERVIDOR.md with:
  - Current service versions (PHP 8.4.15, Nginx 1.29.4, etc)
  - DNS anti-spam status (SPF , DMARC , DKIM ⚠️ pending)
  - DKIM key for DNS publication
  - Cron job documentation
  - New API endpoints (/preferences)
2025-12-17 10:04:44 +00:00
marcoitaloesp-ai
19dcdce262
feat: Add daily due payments notification system with user preferences
## New Features
- Email notifications for overdue and upcoming payments
- User preferences page for notification settings
- Daily scheduler to send alerts at user-configured time
- Smart analysis: payable items, transfer suggestions between accounts

## Backend
- Migration for user_preferences table
- SendDuePaymentsAlert Artisan command
- DuePaymentsAlert Mailable with HTML/text templates
- UserPreferenceController with test-notification endpoint
- Scheduler config for notify:due-payments command

## Frontend
- Preferences.jsx page with notification toggle
- API service for preferences
- Route and menu link for settings
- Translations (PT-BR, EN, ES)

## Server
- Cron configured for Laravel scheduler

Version: 1.44.5
2025-12-17 09:57:40 +00:00
marcoitaloesp-ai
6149aee7ac
v1.43.26 - FIX: Erro 500 em projection-chart 2025-12-16 20:33:04 +00:00
marcoitaloesp-ai
d47201bca7
v1.43.25 - REESCRITA COMPLETA: Lógica de projeção corrigida 2025-12-16 20:30:23 +00:00
marcoitaloesp-ai
83a4d91029
v1.43.24 - FIX CRITICAL: Projeção inclui recurring_instances vencidas 2025-12-16 20:25:08 +00:00
marcoitaloesp-ai
738730b549
v1.43.23 - FIX CRITICAL: Erro inicialização circular Dashboard 2025-12-16 20:21:30 +00:00
marcoitaloesp-ai
650ca0821a
v1.43.22 - FIX: Widget de projeção atualiza automaticamente 2025-12-16 20:17:38 +00:00
marcoitaloesp-ai
e1a01cab91
v1.43.21 - FIX CRÍTICO: Instâncias de recorrências vencidas na projeção 2025-12-16 20:13:32 +00:00
marcoitaloesp-ai
580d318e85
v1.43.20 - FIX: Projeção de saldo inclui transações pendentes vencidas 2025-12-16 20:10:54 +00:00
marcoitaloesp-ai
e92cc8cf1f
v1.43.19 - Revisão completa do modal de editar template recorrente 2025-12-16 18:15:11 +00:00
marcoitaloesp-ai
777fb32626
v1.43.18 - Hard delete de templates recorrentes 2025-12-16 18:04:59 +00:00
marcoitaloesp-ai
91478d5026
v1.43.17 - Revisão completa: 170 categorias com contraste perfeito 2025-12-16 17:17:00 +00:00
marcoitaloesp-ai
b1ab1ec314
v1.43.16 - Padronização global de contraste em TODAS as categorias 2025-12-16 17:14:40 +00:00
marcoitaloesp-ai
b1b111333c
v1.43.15 - Melhor contraste para categoria Moradia e subcategorias 2025-12-16 17:13:19 +00:00
marcoitaloesp-ai
76978fbcfc
v1.43.14 - FIX: Tamanho de fonte dos badges de categoria em Recorrentes e Futuras 2025-12-16 17:08:45 +00:00