feat: melhorias em emails, traduções e página de pricing
This commit is contained in:
parent
b14ff0ab89
commit
d1ab280997
52
DKIM_DNS_ATUALIZADO.txt
Normal file
52
DKIM_DNS_ATUALIZADO.txt
Normal file
@ -0,0 +1,52 @@
|
||||
═══════════════════════════════════════════════════════════════════════════
|
||||
⚠️ AÇÃO URGENTE: ATUALIZAR REGISTRO DKIM NO DNS
|
||||
═══════════════════════════════════════════════════════════════════════════
|
||||
|
||||
O DKIM atual no DNS está DESATUALIZADO! Por isso emails vão para spam.
|
||||
|
||||
REGISTRO ATUAL (ERRADO - remover):
|
||||
Nome: default._domainkey.cnxifly.com
|
||||
Valor: v=DKIM1; h=sha256; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1A8I6ZHyZ0PYdOjB2BSQbH8q6WOJ2dO2zHiIn/bolAGl5ITo5hfn3Zv2fpHBMzcWbDITugSQFuQ3XJeF6oBNdWVvBqnEvI8pCJWzzhZ8Oj9rU+mEPOhIcmmDU6kHCTOFWFxgxbLd2es34rmts06xpF7nI4mWuJq8VVtkrqT0UkZNjjZrNO9KXfdTzV3pP0IEZA+KJlYqVDwnALL62z6GT9xAQi2eytoRSXbTzGDC4+kNXE3v2zMB5+CY9CbH3LZ7SFoJUQJCTf43zc4ea+nWsE/Y2DR5ky2hSwOh7FRJ2nXV07N2VlLu9LekZl08q9G49mwEY6ORT0aShL7RYsNTKQIDAQAB
|
||||
|
||||
═══════════════════════════════════════════════════════════════════════════
|
||||
|
||||
NOVO REGISTRO (CORRETO - adicionar):
|
||||
Nome: default._domainkey.cnxifly.com
|
||||
Tipo: TXT
|
||||
Valor (copiar em UMA ÚNICA LINHA):
|
||||
|
||||
v=DKIM1; h=sha256; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAyeq8zM0lP2+9kPqH4E9B64rl1nhhga4aCgErcSLNpTWSOpYPxOzWAEsnwVGz/gJGyXiwix+RGN/jxks61nzmik4MslvdxmMABmZ1ERtAoqmO7noThf3LLJbMqYFaGKgYRCpetSZDpQZARlRdzmCTnNVgYsex4gMry4sJocIKbePec8kY3Ps1d4f0LZAp0jH0FufX3V842P8j/96VOdX2U1v8OrnqQWtqteajfMCa/lguHEyYM2ZtV+g4VZZKJgk3UoqwDV3JKwBoxxi17SoedjoXtsNEwaXFPTuOrNOQAqe2iHgMR9949YXbAHxoUA9TOaByOXp9ZmVzmUMfRLk5LwIDAQAB
|
||||
|
||||
TTL: 3600
|
||||
|
||||
═══════════════════════════════════════════════════════════════════════════
|
||||
|
||||
PASSOS PARA ATUALIZAR:
|
||||
|
||||
1. Acesse o painel DNS (UI-DNS ou onde gerencia cnxifly.com)
|
||||
2. Localize o registro: default._domainkey.cnxifly.com
|
||||
3. EDITE (não delete e crie novo) o valor para o novo acima
|
||||
4. Salve as alterações
|
||||
5. Aguarde 5-10 minutos para propagação
|
||||
|
||||
TESTAR APÓS ATUALIZAÇÃO:
|
||||
opendkim-testkey -d cnxifly.com -s default -vvv
|
||||
|
||||
Deve retornar: "key OK"
|
||||
|
||||
═══════════════════════════════════════════════════════════════════════════
|
||||
|
||||
CAUSA DO PROBLEMA:
|
||||
- Servidor foi reinstalado/reconfigurado em 7 de dezembro
|
||||
- Nova chave DKIM foi gerada, mas DNS não foi atualizado
|
||||
- Emails assinados com chave nova, mas DNS tem chave antiga
|
||||
- Servidores destinatários (iCloud, Gmail) rejeitam como spam
|
||||
|
||||
IMPACTO:
|
||||
- Emails de ativação não chegam (vão para spam/lixeira)
|
||||
- Emails de notificação são bloqueados
|
||||
- Reputação do domínio está comprometida
|
||||
|
||||
URGÊNCIA: ALTA - Atualizar imediatamente!
|
||||
|
||||
═══════════════════════════════════════════════════════════════════════════
|
||||
@ -31,7 +31,11 @@ public function requestDeletionCode(Request $request)
|
||||
Cache::put($cacheKey, $code, now()->addMinutes(10));
|
||||
|
||||
// Enviar email
|
||||
Mail::to($user->email)->send(new AccountDeletionConfirmation($code, $user->name));
|
||||
Mail::to($user->email)->send(new AccountDeletionConfirmation(
|
||||
$code,
|
||||
$user->name,
|
||||
$user->locale ?? $user->language ?? 'pt-BR'
|
||||
));
|
||||
|
||||
return response()->json([
|
||||
'success' => true,
|
||||
@ -55,33 +59,20 @@ public function exportBackup(Request $request)
|
||||
try {
|
||||
$user = Auth::user();
|
||||
|
||||
// Coletar todos os dados do usuário
|
||||
// Coletar todos os dados do usuário (apenas relações existentes)
|
||||
$backup = [
|
||||
'version' => '1.0',
|
||||
'exported_at' => now()->toISOString(),
|
||||
'user' => [
|
||||
'name' => $user->name,
|
||||
'email' => $user->email,
|
||||
'locale' => $user->locale ?? $user->language ?? 'pt-BR',
|
||||
],
|
||||
'accounts' => $user->accounts()->with('currency')->get(),
|
||||
'asset_accounts' => $user->assetAccounts()->with('assetType')->get(),
|
||||
'categories' => $user->categories()->get(),
|
||||
'cost_centers' => $user->costCenters()->with('keywords')->where('is_system', false)->get(),
|
||||
'credit_cards' => $user->creditCards()->with('account')->get(),
|
||||
'liability_accounts' => $user->liabilityAccounts()->get(),
|
||||
'budgets' => $user->budgets()->with(['category', 'subcategory'])->get(),
|
||||
'goals' => $user->goals()->get(),
|
||||
'investments' => $user->investments()->with(['assetAccount', 'investmentType', 'priceHistories'])->get(),
|
||||
'transactions' => $user->transactions()
|
||||
->with([
|
||||
'account',
|
||||
'category',
|
||||
'subcategory',
|
||||
'costCenter',
|
||||
'creditCard',
|
||||
'liabilityAccount'
|
||||
])
|
||||
->get(),
|
||||
'accounts' => $user->accounts()->get()->makeHidden(['user']),
|
||||
'categories' => $user->categories()->get()->makeHidden(['user']),
|
||||
'budgets' => $user->budgets()->get()->makeHidden(['user']),
|
||||
'transactions' => $user->transactions()->get()->makeHidden(['user']),
|
||||
'goals' => $user->goals()->get()->makeHidden(['user']),
|
||||
];
|
||||
|
||||
// Gerar nome do arquivo
|
||||
@ -89,7 +80,13 @@ public function exportBackup(Request $request)
|
||||
|
||||
// Salvar temporariamente
|
||||
$filePath = 'backups/' . $fileName;
|
||||
Storage::disk('local')->put($filePath, json_encode($backup, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE));
|
||||
$jsonData = json_encode($backup, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);
|
||||
|
||||
if ($jsonData === false) {
|
||||
throw new \Exception('Erro ao serializar dados: ' . json_last_error_msg());
|
||||
}
|
||||
|
||||
Storage::disk('local')->put($filePath, $jsonData);
|
||||
|
||||
// Retornar URL para download
|
||||
return response()->json([
|
||||
@ -100,10 +97,16 @@ public function exportBackup(Request $request)
|
||||
'expires_in' => '24 horas'
|
||||
]);
|
||||
} catch (\Exception $e) {
|
||||
\Log::error('Export backup error', [
|
||||
'user_id' => Auth::id(),
|
||||
'error' => $e->getMessage(),
|
||||
'trace' => $e->getTraceAsString()
|
||||
]);
|
||||
|
||||
return response()->json([
|
||||
'success' => false,
|
||||
'message' => 'Erro ao criar backup',
|
||||
'error' => $e->getMessage()
|
||||
'error' => config('app.debug') ? $e->getMessage() : 'Erro interno'
|
||||
], 500);
|
||||
}
|
||||
}
|
||||
|
||||
@ -10,25 +10,17 @@
|
||||
class PlanController extends Controller
|
||||
{
|
||||
/**
|
||||
* List all plans for pricing page (including coming soon)
|
||||
* List all plans for pricing page
|
||||
*/
|
||||
public function index(): JsonResponse
|
||||
{
|
||||
// Get active plans
|
||||
$activePlans = Plan::active()->ordered()->get();
|
||||
|
||||
// Get coming soon plans (inactive but should be displayed)
|
||||
$comingSoonPlans = Plan::where('is_active', false)
|
||||
->whereIn('slug', ['business'])
|
||||
->ordered()
|
||||
->get();
|
||||
|
||||
$allPlans = $activePlans->merge($comingSoonPlans);
|
||||
// Get only active plans
|
||||
$plans = Plan::active()->ordered()->get();
|
||||
|
||||
return response()->json([
|
||||
'success' => true,
|
||||
'data' => [
|
||||
'plans' => $allPlans->map(function ($plan) {
|
||||
'plans' => $plans->map(function ($plan) {
|
||||
return [
|
||||
'id' => $plan->id,
|
||||
'slug' => $plan->slug,
|
||||
|
||||
@ -14,14 +14,16 @@ class AccountDeletionConfirmation extends Mailable
|
||||
|
||||
public $code;
|
||||
public $userName;
|
||||
public $userLocale;
|
||||
|
||||
/**
|
||||
* Create a new message instance.
|
||||
*/
|
||||
public function __construct($code, $userName)
|
||||
public function __construct($code, $userName, $userLocale = 'pt-BR')
|
||||
{
|
||||
$this->code = $code;
|
||||
$this->userName = $userName;
|
||||
$this->userLocale = $userLocale;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@ -1,150 +1,185 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="pt-BR">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Código de Confirmação</title>
|
||||
<style>
|
||||
body {
|
||||
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
|
||||
background-color: #f4f4f4;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
.container {
|
||||
max-width: 600px;
|
||||
margin: 40px auto;
|
||||
background-color: #ffffff;
|
||||
border-radius: 8px;
|
||||
overflow: hidden;
|
||||
box-shadow: 0 2px 8px rgba(0,0,0,0.1);
|
||||
}
|
||||
.header {
|
||||
background: linear-gradient(135deg, #dc3545 0%, #c82333 100%);
|
||||
color: white;
|
||||
padding: 30px;
|
||||
text-align: center;
|
||||
}
|
||||
.header h1 {
|
||||
margin: 0;
|
||||
font-size: 24px;
|
||||
}
|
||||
.content {
|
||||
padding: 40px 30px;
|
||||
}
|
||||
.warning-box {
|
||||
background-color: #fff3cd;
|
||||
border-left: 4px solid #ffc107;
|
||||
padding: 15px;
|
||||
margin: 20px 0;
|
||||
border-radius: 4px;
|
||||
}
|
||||
.warning-box strong {
|
||||
color: #856404;
|
||||
}
|
||||
.code-box {
|
||||
background-color: #f8f9fa;
|
||||
border: 2px solid #dc3545;
|
||||
border-radius: 8px;
|
||||
padding: 20px;
|
||||
text-align: center;
|
||||
margin: 30px 0;
|
||||
}
|
||||
.code {
|
||||
font-size: 36px;
|
||||
font-weight: bold;
|
||||
color: #dc3545;
|
||||
letter-spacing: 8px;
|
||||
margin: 10px 0;
|
||||
}
|
||||
.info-text {
|
||||
color: #6c757d;
|
||||
font-size: 14px;
|
||||
line-height: 1.6;
|
||||
}
|
||||
.footer {
|
||||
background-color: #f8f9fa;
|
||||
padding: 20px;
|
||||
text-align: center;
|
||||
color: #6c757d;
|
||||
font-size: 12px;
|
||||
}
|
||||
.danger-list {
|
||||
background-color: #f8d7da;
|
||||
border-left: 4px solid #dc3545;
|
||||
padding: 15px;
|
||||
margin: 20px 0;
|
||||
border-radius: 4px;
|
||||
}
|
||||
.danger-list ul {
|
||||
margin: 10px 0;
|
||||
padding-left: 20px;
|
||||
}
|
||||
.danger-list li {
|
||||
color: #721c24;
|
||||
margin: 5px 0;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
<div class="header">
|
||||
<h1>⚠️ EXCLUSÃO PERMANENTE DE CONTA</h1>
|
||||
</div>
|
||||
@extends('emails.layouts.base')
|
||||
|
||||
@php $locale = $userLocale ?? 'pt-BR'; @endphp
|
||||
|
||||
@section('title')
|
||||
@if($locale === 'pt-BR')
|
||||
Confirmação de Eliminação de Conta
|
||||
@elseif($locale === 'en')
|
||||
Account Deletion Confirmation
|
||||
@else
|
||||
Confirmación de Eliminación de Cuenta
|
||||
@endif
|
||||
@endsection
|
||||
|
||||
@section('content')
|
||||
@if($locale === 'pt-BR')
|
||||
{{-- Portuguese (Brazil) --}}
|
||||
<p class="greeting">Olá, {{ $userName }}</p>
|
||||
|
||||
<div class="status-card danger" style="text-align: center; padding: 40px 30px;">
|
||||
<div style="font-size: 48px; margin-bottom: 20px;">🔐</div>
|
||||
<p class="status-title" style="margin-bottom: 15px;">CÓDIGO DE CONFIRMAÇÃO</p>
|
||||
<div style="background: rgba(255, 255, 255, 0.2); border-radius: 12px; padding: 20px; margin: 20px 0;">
|
||||
<div style="font-size: 48px; font-weight: bold; letter-spacing: 8px; font-family: 'Courier New', monospace;">
|
||||
{{ $code }}
|
||||
</div>
|
||||
</div>
|
||||
<p style="font-size: 14px; opacity: 0.9; margin: 0;">
|
||||
Válido por 10 minutos
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="status-card warning">
|
||||
<p class="status-title" style="color: #78350f; margin-bottom: 12px;">⚠️ ATENÇÃO - AÇÃO IRREVERSÍVEL</p>
|
||||
<p style="color: #78350f; margin: 0;">
|
||||
Esta ação <strong>NÃO pode ser desfeita</strong>. Uma vez confirmada, todos os seus dados serão
|
||||
permanentemente deletados dos nossos servidores sem possibilidade de recuperação.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="content">
|
||||
<p>Olá, <strong>{{ $userName }}</strong></p>
|
||||
|
||||
<p class="info-text">
|
||||
Você solicitou a exclusão <strong>PERMANENTE E IRREVERSÍVEL</strong> de sua conta no WebMoney.
|
||||
</p>
|
||||
<p><strong>🗑️ Serão deletados permanentemente:</strong></p>
|
||||
<ul class="info-list">
|
||||
<li>Todas as transações</li>
|
||||
<li>Todas as contas bancárias e de ativos</li>
|
||||
<li>Todos os cartões de crédito e contas de passivos</li>
|
||||
<li>Orçamentos e categorias personalizadas</li>
|
||||
<li>Centros de custo e palavras-chave</li>
|
||||
<li>Objetivos financeiros</li>
|
||||
<li>Investimentos e histórico de preços</li>
|
||||
<li>Configurações e preferências</li>
|
||||
<li>Sua conta de usuário</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="warning-box">
|
||||
<strong>⚠️ ATENÇÃO:</strong> Esta ação NÃO pode ser desfeita. Uma vez confirmada, todos os seus dados serão permanentemente deletados dos nossos servidores sem possibilidade de recuperação.
|
||||
</div>
|
||||
|
||||
<div class="danger-list">
|
||||
<strong>🗑️ Serão deletados permanentemente:</strong>
|
||||
<ul>
|
||||
<li>Todas as transações</li>
|
||||
<li>Todas as contas bancárias e de ativos</li>
|
||||
<li>Todos os cartões de crédito e contas de passivos</li>
|
||||
<li>Orçamentos e categorias personalizadas</li>
|
||||
<li>Centros de custo e palavras-chave</li>
|
||||
<li>Objetivos financeiros</li>
|
||||
<li>Investimentos e histórico de preços</li>
|
||||
<li>Configurações e preferências</li>
|
||||
<li>Sua conta de usuário</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<p class="info-text">
|
||||
Para confirmar esta ação, utilize o código abaixo:
|
||||
</p>
|
||||
|
||||
<div class="code-box">
|
||||
<div style="font-size: 14px; color: #6c757d; margin-bottom: 10px;">
|
||||
SEU CÓDIGO DE CONFIRMAÇÃO
|
||||
</div>
|
||||
<div class="code">{{ $code }}</div>
|
||||
<div style="font-size: 12px; color: #6c757d; margin-top: 10px;">
|
||||
Válido por 10 minutos
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<p class="info-text">
|
||||
<strong>Não foi você?</strong> Se você não solicitou esta exclusão, ignore este email e sua conta permanecerá intacta. Recomendamos alterar sua senha imediatamente por segurança.
|
||||
</p>
|
||||
|
||||
<p class="info-text">
|
||||
<strong>Quer fazer backup?</strong> Antes de confirmar a exclusão, você pode exportar todos os seus dados para um arquivo JSON e importá-los posteriormente em uma nova conta.
|
||||
<div class="status-card info">
|
||||
<p class="status-title" style="margin-bottom: 10px;">🔒 Não foi você?</p>
|
||||
<p style="margin: 0;">
|
||||
Se você não solicitou esta exclusão, ignore este email e sua conta permanecerá intacta.
|
||||
Recomendamos alterar sua senha imediatamente por segurança.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="status-card info">
|
||||
<p class="status-title" style="margin-bottom: 10px;">💾 Quer fazer backup?</p>
|
||||
<p style="margin: 0;">
|
||||
Antes de confirmar a exclusão, você pode exportar todos os seus dados para um arquivo JSON
|
||||
e importá-los posteriormente em uma nova conta.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
@elseif($locale === 'en')
|
||||
{{-- English --}}
|
||||
<p class="greeting">Hello, {{ $userName }}</p>
|
||||
|
||||
<div class="footer">
|
||||
<p>Este é um email automático do <strong>WebMoney</strong></p>
|
||||
<p>Por favor, não responda a este email.</p>
|
||||
<div class="status-card danger" style="text-align: center; padding: 40px 30px;">
|
||||
<div style="font-size: 48px; margin-bottom: 20px;">🔐</div>
|
||||
<p class="status-title" style="margin-bottom: 15px;">CONFIRMATION CODE</p>
|
||||
<div style="background: rgba(255, 255, 255, 0.2); border-radius: 12px; padding: 20px; margin: 20px 0;">
|
||||
<div style="font-size: 48px; font-weight: bold; letter-spacing: 8px; font-family: 'Courier New', monospace;">
|
||||
{{ $code }}
|
||||
</div>
|
||||
</div>
|
||||
<p style="font-size: 14px; opacity: 0.9; margin: 0;">
|
||||
Valid for 10 minutes
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
<div class="status-card warning">
|
||||
<p class="status-title" style="color: #78350f; margin-bottom: 12px;">⚠️ WARNING - IRREVERSIBLE ACTION</p>
|
||||
<p style="color: #78350f; margin: 0;">
|
||||
This action <strong>CANNOT be undone</strong>. Once confirmed, all your data will be
|
||||
permanently deleted from our servers with no possibility of recovery.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="content">
|
||||
<p><strong>🗑️ Will be permanently deleted:</strong></p>
|
||||
<ul class="info-list">
|
||||
<li>All transactions</li>
|
||||
<li>All bank accounts and asset accounts</li>
|
||||
<li>All credit cards and liability accounts</li>
|
||||
<li>Custom budgets and categories</li>
|
||||
<li>Cost centers and keywords</li>
|
||||
<li>Financial goals</li>
|
||||
<li>Investments and price history</li>
|
||||
<li>Settings and preferences</li>
|
||||
<li>Your user account</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="status-card info">
|
||||
<p class="status-title" style="margin-bottom: 10px;">🔒 Wasn't you?</p>
|
||||
<p style="margin: 0;">
|
||||
If you did not request this deletion, ignore this email and your account will remain intact.
|
||||
We recommend changing your password immediately for security.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="status-card info">
|
||||
<p class="status-title" style="margin-bottom: 10px;">💾 Want to backup?</p>
|
||||
<p style="margin: 0;">
|
||||
Before confirming the deletion, you can export all your data to a JSON file
|
||||
and import it later into a new account.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
@else
|
||||
{{-- Spanish --}}
|
||||
<p class="greeting">Hola, {{ $userName }}</p>
|
||||
|
||||
<div class="status-card danger" style="text-align: center; padding: 40px 30px;">
|
||||
<div style="font-size: 48px; margin-bottom: 20px;">🔐</div>
|
||||
<p class="status-title" style="margin-bottom: 15px;">CÓDIGO DE CONFIRMACIÓN</p>
|
||||
<div style="background: rgba(255, 255, 255, 0.2); border-radius: 12px; padding: 20px; margin: 20px 0;">
|
||||
<div style="font-size: 48px; font-weight: bold; letter-spacing: 8px; font-family: 'Courier New', monospace;">
|
||||
{{ $code }}
|
||||
</div>
|
||||
</div>
|
||||
<p style="font-size: 14px; opacity: 0.9; margin: 0;">
|
||||
Válido por 10 minutos
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="status-card warning">
|
||||
<p class="status-title" style="color: #78350f; margin-bottom: 12px;">⚠️ ATENCIÓN - ACCIÓN IRREVERSIBLE</p>
|
||||
<p style="color: #78350f; margin: 0;">
|
||||
Esta acción <strong>NO se puede deshacer</strong>. Una vez confirmada, todos tus datos serán
|
||||
eliminados permanentemente de nuestros servidores sin posibilidad de recuperación.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="content">
|
||||
<p><strong>🗑️ Serán eliminados permanentemente:</strong></p>
|
||||
<ul class="info-list">
|
||||
<li>Todas las transacciones</li>
|
||||
<li>Todas las cuentas bancarias y de activos</li>
|
||||
<li>Todas las tarjetas de crédito y cuentas de pasivos</li>
|
||||
<li>Presupuestos y categorías personalizadas</li>
|
||||
<li>Centros de costo y palabras clave</li>
|
||||
<li>Objetivos financieros</li>
|
||||
<li>Inversiones e historial de precios</li>
|
||||
<li>Configuraciones y preferencias</li>
|
||||
<li>Tu cuenta de usuario</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="status-card info">
|
||||
<p class="status-title" style="margin-bottom: 10px;">🔒 ¿No fuiste tú?</p>
|
||||
<p style="margin: 0;">
|
||||
Si no solicitaste esta eliminación, ignora este email y tu cuenta permanecerá intacta.
|
||||
Recomendamos cambiar tu contraseña inmediatamente por seguridad.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="status-card info">
|
||||
<p class="status-title" style="margin-bottom: 10px;">💾 ¿Quieres hacer backup?</p>
|
||||
<p style="margin: 0;">
|
||||
Antes de confirmar la eliminación, puedes exportar todos tus datos a un archivo JSON
|
||||
e importarlos posteriormente en una nueva cuenta.
|
||||
</p>
|
||||
</div>
|
||||
@endif
|
||||
@endsection
|
||||
|
||||
|
||||
@ -1,160 +1,48 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="pt-BR">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Oferta Especial de Retenção</title>
|
||||
<style>
|
||||
body {
|
||||
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
|
||||
background-color: #f4f4f4;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
.container {
|
||||
max-width: 600px;
|
||||
margin: 40px auto;
|
||||
background-color: #ffffff;
|
||||
border-radius: 8px;
|
||||
overflow: hidden;
|
||||
box-shadow: 0 2px 8px rgba(0,0,0,0.1);
|
||||
}
|
||||
.header {
|
||||
background: linear-gradient(135deg, #10b981 0%, #059669 100%);
|
||||
color: white;
|
||||
padding: 40px 30px;
|
||||
text-align: center;
|
||||
}
|
||||
.header h1 {
|
||||
margin: 0;
|
||||
font-size: 28px;
|
||||
font-weight: bold;
|
||||
}
|
||||
.header .emoji {
|
||||
font-size: 48px;
|
||||
display: block;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
.content {
|
||||
padding: 40px 30px;
|
||||
}
|
||||
.highlight-box {
|
||||
background: linear-gradient(135deg, #10b981 0%, #059669 100%);
|
||||
color: white;
|
||||
border-radius: 12px;
|
||||
padding: 30px;
|
||||
text-align: center;
|
||||
margin: 30px 0;
|
||||
box-shadow: 0 4px 12px rgba(16, 185, 129, 0.3);
|
||||
}
|
||||
.highlight-box .number {
|
||||
font-size: 72px;
|
||||
font-weight: bold;
|
||||
line-height: 1;
|
||||
margin: 10px 0;
|
||||
}
|
||||
.highlight-box .text {
|
||||
font-size: 24px;
|
||||
font-weight: bold;
|
||||
margin-top: 10px;
|
||||
}
|
||||
.benefit-list {
|
||||
background-color: #f0fdf4;
|
||||
border-left: 4px solid #10b981;
|
||||
padding: 20px;
|
||||
margin: 25px 0;
|
||||
border-radius: 4px;
|
||||
}
|
||||
.benefit-list ul {
|
||||
margin: 10px 0;
|
||||
padding-left: 25px;
|
||||
}
|
||||
.benefit-list li {
|
||||
color: #065f46;
|
||||
margin: 10px 0;
|
||||
font-size: 15px;
|
||||
}
|
||||
.emotional-message {
|
||||
background-color: #fef3c7;
|
||||
border-left: 4px solid #f59e0b;
|
||||
padding: 20px;
|
||||
margin: 25px 0;
|
||||
border-radius: 4px;
|
||||
}
|
||||
.emotional-message p {
|
||||
color: #78350f;
|
||||
margin: 0;
|
||||
line-height: 1.6;
|
||||
}
|
||||
.cta-box {
|
||||
text-align: center;
|
||||
margin: 30px 0;
|
||||
padding: 20px;
|
||||
background-color: #f8f9fa;
|
||||
border-radius: 8px;
|
||||
}
|
||||
.cta-box .date {
|
||||
font-size: 18px;
|
||||
color: #059669;
|
||||
font-weight: bold;
|
||||
margin-top: 15px;
|
||||
}
|
||||
.footer {
|
||||
background-color: #f8f9fa;
|
||||
padding: 20px;
|
||||
text-align: center;
|
||||
color: #6c757d;
|
||||
font-size: 12px;
|
||||
}
|
||||
.divider {
|
||||
height: 1px;
|
||||
background-color: #e5e7eb;
|
||||
margin: 30px 0;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
<div class="header">
|
||||
<span class="emoji">🎉</span>
|
||||
<h1>OFERTA EXCLUSIVA PARA VOCÊ!</h1>
|
||||
</div>
|
||||
@extends('emails.layouts.base')
|
||||
|
||||
@php $locale = $userLocale ?? 'pt-BR'; @endphp
|
||||
|
||||
@section('title')
|
||||
@if($locale === 'pt-BR')
|
||||
Oferta Especial de Retenção
|
||||
@elseif($locale === 'en')
|
||||
Special Retention Offer
|
||||
@else
|
||||
Oferta Especial de Retención
|
||||
@endif
|
||||
@endsection
|
||||
|
||||
@section('content')
|
||||
@if($locale === 'pt-BR')
|
||||
{{-- Portuguese (Brazil) --}}
|
||||
<p class="greeting">Olá, {{ $user->name }} 🎉</p>
|
||||
|
||||
<div class="content">
|
||||
<p style="font-size: 16px; color: #374151; line-height: 1.6;">
|
||||
Olá, <strong>{{ $user->name }}</strong>
|
||||
</p>
|
||||
|
||||
<p style="font-size: 16px; color: #374151; line-height: 1.6;">
|
||||
Entendemos que o preço pode ser uma preocupação, e <strong>queremos mantê-lo conosco</strong>!
|
||||
Por isso, temos uma oferta especial só para você:
|
||||
</p>
|
||||
|
||||
<div class="highlight-box">
|
||||
<div style="font-size: 18px; margin-bottom: 10px;">✨ OFERTA ÚNICA ✨</div>
|
||||
<div class="number">{{ $freeMonths }}</div>
|
||||
<div class="text">MESES GRÁTIS</div>
|
||||
<div style="font-size: 16px; margin-top: 15px; opacity: 0.9;">
|
||||
Sem custos, sem compromisso!
|
||||
</div>
|
||||
<p>Entendemos que o preço pode ser uma preocupação, e <strong>queremos mantê-lo conosco</strong>! Por isso, temos uma oferta especial só para você:</p>
|
||||
|
||||
<div class="status-card success" style="background: linear-gradient(135deg, #10b981 0%, #059669 100%); border: none; text-align: center; padding: 40px 30px;">
|
||||
<div style="color: white; font-size: 18px; margin-bottom: 10px;">✨ OFERTA ÚNICA ✨</div>
|
||||
<div style="color: white; font-size: 72px; font-weight: bold; line-height: 1; margin: 10px 0;">{{ $freeMonths }}</div>
|
||||
<div style="color: white; font-size: 24px; font-weight: bold; margin-top: 10px;">MESES GRÁTIS</div>
|
||||
<div style="color: white; font-size: 16px; margin-top: 15px; opacity: 0.9;">Sem custos, sem compromisso!</div>
|
||||
</div>
|
||||
|
||||
<div class="emotional-message">
|
||||
<p style="font-weight: bold; margin-bottom: 10px;">💙 Você é importante para nós!</p>
|
||||
<p>
|
||||
<div class="status-card warning">
|
||||
<p class="status-title" style="color: #78350f; margin-bottom: 12px;">💙 Você é importante para nós!</p>
|
||||
<p style="color: #78350f;">
|
||||
Sabemos que as coisas podem estar apertadas financeiramente. Esta oferta especial de
|
||||
<strong>{{ $freeMonths }} meses grátis</strong> é nossa forma de dizer:
|
||||
<em>"Queremos você aqui com a gente!"</em>
|
||||
</p>
|
||||
<p style="margin-top: 10px;">
|
||||
<p style="color: #78350f; margin-top: 12px;">
|
||||
Durante este período, você terá acesso completo a todos os recursos premium do WebMoney,
|
||||
sem pagar nada. É tempo suficiente para as coisas melhorarem! 🌟
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="benefit-list">
|
||||
<strong style="color: #065f46; font-size: 16px;">O que você continua tendo GRÁTIS:</strong>
|
||||
<ul>
|
||||
<div class="status-card success">
|
||||
<p class="status-title" style="color: #065f46; margin-bottom: 16px;">O que você continua tendo GRÁTIS:</p>
|
||||
<ul class="info-list" style="color: #065f46;">
|
||||
<li>📊 Controle completo de todas as suas contas</li>
|
||||
<li>💳 Gestão ilimitada de cartões de crédito</li>
|
||||
<li>📈 Orçamentos e metas financeiras</li>
|
||||
@ -165,45 +53,153 @@
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="divider"></div>
|
||||
|
||||
<div class="cta-box">
|
||||
<p style="font-size: 18px; color: #374151; font-weight: bold; margin: 0 0 15px 0;">
|
||||
✅ Oferta Já Aplicada!
|
||||
</p>
|
||||
<p style="font-size: 15px; color: #6b7280; margin: 0;">
|
||||
<div class="status-card info" style="text-align: center; padding: 30px;">
|
||||
<p class="status-title" style="margin-bottom: 15px;">✅ Oferta Já Aplicada!</p>
|
||||
<p style="margin-bottom: 20px;">
|
||||
Sua assinatura foi estendida automaticamente por {{ $freeMonths }} meses.<br>
|
||||
Continue aproveitando todos os recursos premium sem custo!
|
||||
</p>
|
||||
<div class="date">
|
||||
<p style="font-size: 18px; color: #059669; font-weight: bold; margin: 0;">
|
||||
Sua próxima cobrança será em:<br>
|
||||
<strong>{{ \Carbon\Carbon::parse($offerEndDate)->format('d/m/Y') }}</strong>
|
||||
</div>
|
||||
<strong style="font-size: 20px;">{{ \Carbon\Carbon::parse($offerEndDate)->format('d/m/Y') }}</strong>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div style="background-color: #eff6ff; border-left: 4px solid #3b82f6; padding: 20px; border-radius: 4px; margin-top: 25px;">
|
||||
<p style="color: #1e40af; margin: 0; font-size: 14px;">
|
||||
<div class="status-card info">
|
||||
<p style="margin: 0; font-size: 14px;">
|
||||
<strong>📌 Importante:</strong> Esta oferta é exclusiva e pode ser usada apenas uma vez.
|
||||
Após os {{ $freeMonths }} meses, sua assinatura voltará ao valor normal. Você pode cancelar
|
||||
a qualquer momento antes disso, sem nenhum custo.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<p style="font-size: 16px; color: #374151; line-height: 1.6; margin-top: 30px;">
|
||||
Muito obrigado por escolher o <strong>WebMoney</strong>! Estamos aqui para ajudá-lo a alcançar
|
||||
seus objetivos financeiros. 💚
|
||||
</p>
|
||||
<p>Muito obrigado por escolher o <strong>WebMoney</strong>! Estamos aqui para ajudá-lo a alcançar seus objetivos financeiros. 💚</p>
|
||||
</div>
|
||||
|
||||
<p style="font-size: 14px; color: #6b7280; margin-top: 25px;">
|
||||
Com carinho,<br>
|
||||
<strong style="color: #374151;">Equipe WebMoney</strong>
|
||||
</p>
|
||||
</div>
|
||||
@elseif($locale === 'en')
|
||||
{{-- English --}}
|
||||
<p class="greeting">Hello, {{ $user->name }} 🎉</p>
|
||||
|
||||
<div class="footer">
|
||||
<p>Este é um email automático do <strong>WebMoney</strong></p>
|
||||
<p>Por favor, não responda a este email.</p>
|
||||
<div class="content">
|
||||
<p>We understand that price can be a concern, and <strong>we want to keep you with us</strong>! That's why we have a special offer just for you:</p>
|
||||
|
||||
<div class="status-card success" style="background: linear-gradient(135deg, #10b981 0%, #059669 100%); border: none; text-align: center; padding: 40px 30px;">
|
||||
<div style="color: white; font-size: 18px; margin-bottom: 10px;">✨ EXCLUSIVE OFFER ✨</div>
|
||||
<div style="color: white; font-size: 72px; font-weight: bold; line-height: 1; margin: 10px 0;">{{ $freeMonths }}</div>
|
||||
<div style="color: white; font-size: 24px; font-weight: bold; margin-top: 10px;">FREE MONTHS</div>
|
||||
<div style="color: white; font-size: 16px; margin-top: 15px; opacity: 0.9;">No cost, no commitment!</div>
|
||||
</div>
|
||||
|
||||
<div class="status-card warning">
|
||||
<p class="status-title" style="color: #78350f; margin-bottom: 12px;">💙 You are important to us!</p>
|
||||
<p style="color: #78350f;">
|
||||
We know things can be financially tight. This special offer of
|
||||
<strong>{{ $freeMonths }} free months</strong> is our way of saying:
|
||||
<em>"We want you here with us!"</em>
|
||||
</p>
|
||||
<p style="color: #78350f; margin-top: 12px;">
|
||||
During this period, you will have full access to all WebMoney premium features,
|
||||
at no cost. It's enough time for things to get better! 🌟
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="status-card success">
|
||||
<p class="status-title" style="color: #065f46; margin-bottom: 16px;">What you continue to have FREE:</p>
|
||||
<ul class="info-list" style="color: #065f46;">
|
||||
<li>📊 Complete control of all your accounts</li>
|
||||
<li>💳 Unlimited credit card management</li>
|
||||
<li>📈 Budgets and financial goals</li>
|
||||
<li>📱 Automatic statement import</li>
|
||||
<li>🎯 Smart transaction categorization</li>
|
||||
<li>📋 Detailed reports and insights</li>
|
||||
<li>☁️ Automatic cloud backup</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="status-card info" style="text-align: center; padding: 30px;">
|
||||
<p class="status-title" style="margin-bottom: 15px;">✅ Offer Already Applied!</p>
|
||||
<p style="margin-bottom: 20px;">
|
||||
Your subscription has been automatically extended for {{ $freeMonths }} months.<br>
|
||||
Continue enjoying all premium features at no cost!
|
||||
</p>
|
||||
<p style="font-size: 18px; color: #059669; font-weight: bold; margin: 0;">
|
||||
Your next charge will be on:<br>
|
||||
<strong style="font-size: 20px;">{{ \Carbon\Carbon::parse($offerEndDate)->format('m/d/Y') }}</strong>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="status-card info">
|
||||
<p style="margin: 0; font-size: 14px;">
|
||||
<strong>📌 Important:</strong> This offer is exclusive and can only be used once.
|
||||
After the {{ $freeMonths }} months, your subscription will return to the regular price. You can cancel
|
||||
at any time before that, at no cost.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<p>Thank you very much for choosing <strong>WebMoney</strong>! We are here to help you achieve your financial goals. 💚</p>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@else
|
||||
{{-- Spanish --}}
|
||||
<p class="greeting">Hola, {{ $user->name }} 🎉</p>
|
||||
|
||||
<div class="content">
|
||||
<p>Entendemos que el precio puede ser una preocupación, y <strong>¡queremos que sigas con nosotros</strong>! Por eso, tenemos una oferta especial solo para ti:</p>
|
||||
|
||||
<div class="status-card success" style="background: linear-gradient(135deg, #10b981 0%, #059669 100%); border: none; text-align: center; padding: 40px 30px;">
|
||||
<div style="color: white; font-size: 18px; margin-bottom: 10px;">✨ OFERTA ÚNICA ✨</div>
|
||||
<div style="color: white; font-size: 72px; font-weight: bold; line-height: 1; margin: 10px 0;">{{ $freeMonths }}</div>
|
||||
<div style="color: white; font-size: 24px; font-weight: bold; margin-top: 10px;">MESES GRATIS</div>
|
||||
<div style="color: white; font-size: 16px; margin-top: 15px; opacity: 0.9;">¡Sin costos, sin compromiso!</div>
|
||||
</div>
|
||||
|
||||
<div class="status-card warning">
|
||||
<p class="status-title" style="color: #78350f; margin-bottom: 12px;">💙 ¡Eres importante para nosotros!</p>
|
||||
<p style="color: #78350f;">
|
||||
Sabemos que las cosas pueden estar ajustadas financieramente. Esta oferta especial de
|
||||
<strong>{{ $freeMonths }} meses gratis</strong> es nuestra forma de decir:
|
||||
<em>"¡Te queremos aquí con nosotros!"</em>
|
||||
</p>
|
||||
<p style="color: #78350f; margin-top: 12px;">
|
||||
Durante este período, tendrás acceso completo a todas las funciones premium de WebMoney,
|
||||
sin pagar nada. ¡Es tiempo suficiente para que las cosas mejoren! 🌟
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="status-card success">
|
||||
<p class="status-title" style="color: #065f46; margin-bottom: 16px;">Lo que sigues teniendo GRATIS:</p>
|
||||
<ul class="info-list" style="color: #065f46;">
|
||||
<li>📊 Control completo de todas tus cuentas</li>
|
||||
<li>💳 Gestión ilimitada de tarjetas de crédito</li>
|
||||
<li>📈 Presupuestos y metas financieras</li>
|
||||
<li>📱 Importación automática de extractos</li>
|
||||
<li>🎯 Categorización inteligente de transacciones</li>
|
||||
<li>📋 Reportes detallados e insights</li>
|
||||
<li>☁️ Backup automático en la nube</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="status-card info" style="text-align: center; padding: 30px;">
|
||||
<p class="status-title" style="margin-bottom: 15px;">✅ ¡Oferta Ya Aplicada!</p>
|
||||
<p style="margin-bottom: 20px;">
|
||||
Tu suscripción ha sido extendida automáticamente por {{ $freeMonths }} meses.<br>
|
||||
¡Sigue disfrutando de todas las funciones premium sin costo!
|
||||
</p>
|
||||
<p style="font-size: 18px; color: #059669; font-weight: bold; margin: 0;">
|
||||
Tu próximo cargo será el:<br>
|
||||
<strong style="font-size: 20px;">{{ \Carbon\Carbon::parse($offerEndDate)->format('d/m/Y') }}</strong>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="status-card info">
|
||||
<p style="margin: 0; font-size: 14px;">
|
||||
<strong>📌 Importante:</strong> Esta oferta es exclusiva y solo puede usarse una vez.
|
||||
Después de los {{ $freeMonths }} meses, tu suscripción volverá al precio normal. Puedes cancelar
|
||||
en cualquier momento antes de eso, sin ningún costo.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<p>¡Muchas gracias por elegir <strong>WebMoney</strong>! Estamos aquí para ayudarte a alcanzar tus objetivos financieros. 💚</p>
|
||||
</div>
|
||||
@endif
|
||||
@endsection
|
||||
|
||||
@ -33,7 +33,7 @@
|
||||
<tr>
|
||||
<td style="padding: 12px; background: rgba(255,255,255,0.1); border-radius: 4px;">
|
||||
<span style="color: #94a3b8; font-size: 11px; text-transform: uppercase; letter-spacing: 0.5px;">Palavra-passe</span><br>
|
||||
<span style="color: #ffffff; font-size: 16px; font-weight: 600; font-family: monospace;">{{ $password }}</span>
|
||||
<span style="color: #ffffff; font-size: 16px; font-weight: 600; font-family: monospace;">{{ $temporaryPassword }}</span>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
@ -88,7 +88,7 @@
|
||||
<tr>
|
||||
<td style="padding: 12px; background: rgba(255,255,255,0.1); border-radius: 4px;">
|
||||
<span style="color: #94a3b8; font-size: 11px; text-transform: uppercase; letter-spacing: 0.5px;">Password</span><br>
|
||||
<span style="color: #ffffff; font-size: 16px; font-weight: 600; font-family: monospace;">{{ $password }}</span>
|
||||
<span style="color: #ffffff; font-size: 16px; font-weight: 600; font-family: monospace;">{{ $temporaryPassword }}</span>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
@ -143,7 +143,7 @@
|
||||
<tr>
|
||||
<td style="padding: 12px; background: rgba(255,255,255,0.1); border-radius: 4px;">
|
||||
<span style="color: #94a3b8; font-size: 11px; text-transform: uppercase; letter-spacing: 0.5px;">Contraseña</span><br>
|
||||
<span style="color: #ffffff; font-size: 16px; font-weight: 600; font-family: monospace;">{{ $password }}</span>
|
||||
<span style="color: #ffffff; font-size: 16px; font-weight: 600; font-family: monospace;">{{ $temporaryPassword }}</span>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
@ -2228,6 +2228,28 @@
|
||||
"paypalSecure": "Secure payment with PayPal",
|
||||
"comingSoon": "Coming Soon",
|
||||
"forPymes": "Tools for SMEs",
|
||||
"planNames": {
|
||||
"Básico": "Basic",
|
||||
"Pro Mensual": "Pro Monthly",
|
||||
"Pro Anual": "Pro Annual",
|
||||
"Business": "Business"
|
||||
},
|
||||
"planFeatures": {
|
||||
"1 cuenta bancaria": "1 bank account",
|
||||
"10 categorías": "10 categories",
|
||||
"100 subcategorías": "100 subcategories",
|
||||
"1.000 transacciones": "1,000 transactions",
|
||||
"Cuentas ilimitadas": "Unlimited accounts",
|
||||
"Categorías ilimitadas": "Unlimited categories",
|
||||
"Transacciones ilimitadas": "Unlimited transactions",
|
||||
"Reportes avanzados": "Advanced reports",
|
||||
"Múltiples usuarios": "Multiple users",
|
||||
"Facturación integrada": "Integrated billing",
|
||||
"Gestión de flujo de caja": "Cash flow management",
|
||||
"Control de presupuesto": "Budget control",
|
||||
"Módulo de negocios": "Business module",
|
||||
"Soporte prioritario": "Priority support"
|
||||
},
|
||||
"features": {
|
||||
"multiUsers": "Multiple users",
|
||||
"integratedBilling": "Integrated billing",
|
||||
|
||||
@ -2220,6 +2220,28 @@
|
||||
"paypalSecure": "Pago seguro con PayPal",
|
||||
"comingSoon": "Próximamente",
|
||||
"forPymes": "Herramientas para PyMEs",
|
||||
"planNames": {
|
||||
"Básico": "Básico",
|
||||
"Pro Mensual": "Pro Mensual",
|
||||
"Pro Anual": "Pro Anual",
|
||||
"Business": "Business"
|
||||
},
|
||||
"planFeatures": {
|
||||
"1 cuenta bancaria": "1 cuenta bancaria",
|
||||
"10 categorías": "10 categorías",
|
||||
"100 subcategorías": "100 subcategorías",
|
||||
"1.000 transacciones": "1.000 transacciones",
|
||||
"Cuentas ilimitadas": "Cuentas ilimitadas",
|
||||
"Categorías ilimitadas": "Categorías ilimitadas",
|
||||
"Transacciones ilimitadas": "Transacciones ilimitadas",
|
||||
"Reportes avanzados": "Reportes avanzados",
|
||||
"Múltiples usuarios": "Múltiples usuarios",
|
||||
"Facturación integrada": "Facturación integrada",
|
||||
"Gestión de flujo de caja": "Gestión de flujo de caja",
|
||||
"Control de presupuesto": "Control de presupuesto",
|
||||
"Módulo de negocios": "Módulo de negocios",
|
||||
"Soporte prioritario": "Soporte prioritario"
|
||||
},
|
||||
"features": {
|
||||
"multiUsers": "Múltiples usuarios",
|
||||
"integratedBilling": "Facturación integrada",
|
||||
|
||||
@ -2238,6 +2238,28 @@
|
||||
"paypalSecure": "Pagamento seguro com PayPal",
|
||||
"comingSoon": "Em Breve",
|
||||
"forPymes": "Ferramentas para PMEs",
|
||||
"planNames": {
|
||||
"Básico": "Básico",
|
||||
"Pro Mensual": "Pro Mensal",
|
||||
"Pro Anual": "Pro Anual",
|
||||
"Business": "Negócios"
|
||||
},
|
||||
"planFeatures": {
|
||||
"1 cuenta bancaria": "1 conta bancária",
|
||||
"10 categorías": "10 categorias",
|
||||
"100 subcategorías": "100 subcategorias",
|
||||
"1.000 transacciones": "1.000 transações",
|
||||
"Cuentas ilimitadas": "Contas ilimitadas",
|
||||
"Categorías ilimitadas": "Categorias ilimitadas",
|
||||
"Transacciones ilimitadas": "Transações ilimitadas",
|
||||
"Reportes avanzados": "Relatórios avançados",
|
||||
"Múltiples usuarios": "Múltiplos usuários",
|
||||
"Facturación integrada": "Faturamento integrado",
|
||||
"Gestión de flujo de caja": "Gestão de fluxo de caixa",
|
||||
"Control de presupuesto": "Controle de orçamento",
|
||||
"Módulo de negocios": "Módulo de negócios",
|
||||
"Soporte prioritario": "Suporte prioritário"
|
||||
},
|
||||
"features": {
|
||||
"multiUsers": "Múltiplos usuários",
|
||||
"integratedBilling": "Faturamento integrado",
|
||||
|
||||
@ -123,7 +123,9 @@ export default function Pricing() {
|
||||
|
||||
<div className="card-body d-flex flex-column">
|
||||
{/* Plan Name */}
|
||||
<h3 className="card-title text-center mb-3">{plan.name}</h3>
|
||||
<h3 className="card-title text-center mb-3">
|
||||
{t(`pricing.planNames.${plan.name}`, plan.name)}
|
||||
</h3>
|
||||
|
||||
{/* Price */}
|
||||
<div className="text-center mb-4">
|
||||
@ -170,7 +172,7 @@ export default function Pricing() {
|
||||
{plan.features?.map((feature, idx) => (
|
||||
<li key={idx} className="mb-2">
|
||||
<i className="bi bi-check-circle-fill text-success me-2"></i>
|
||||
{feature}
|
||||
{t(`pricing.planFeatures.${feature}`, feature)}
|
||||
</li>
|
||||
))}
|
||||
</ul>
|
||||
|
||||
Loading…
Reference in New Issue
Block a user