diff --git a/CHANGELOG.md b/CHANGELOG.md index bbcd048..0ee37d4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,22 @@ O formato segue [Keep a Changelog](https://keepachangelog.com/pt-BR/). Este projeto adota [Versionamento Semântico](https://semver.org/pt-BR/). +## [1.43.6] - 2025-12-16 + +### Improved +- **Modal Detalhes Liabilities - Mobile Otimizado** - Visualização completa mobile + - Modal: fullscreen mobile vs xl desktop + - Header: fontes 0.95rem, ícone 0.9rem, texto truncado + - Summary cards: Grid 2x2 mobile, padding 0.5rem, fontes 0.65-0.85rem + - Taxas: Grid 3 colunas mobile, labels curtos (Mensal/Anual/Total) + - Progress bar: 12px mobile, fontes 0.65-0.75rem + - Parcelas: **Cards layout mobile** com todas as info compactas + - Cards parcelas: status badge, valores, juros, taxas, botões de ação + - Botão footer: full-width mobile, fonte 0.85rem + - Desktop: Tabela completa preservada + - i18n: Adicionadas chaves 'monthly', 'annual', 'total' em pt-BR e es + + ## [1.43.5] - 2025-12-16 ### Improved diff --git a/VERSION b/VERSION index 5c898c3..ea67177 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.43.5 +1.43.6 diff --git a/frontend/src/i18n/locales/es.json b/frontend/src/i18n/locales/es.json index ad40b8b..2b7cb07 100644 --- a/frontend/src/i18n/locales/es.json +++ b/frontend/src/i18n/locales/es.json @@ -395,8 +395,11 @@ "dueDate": "Vencimiento", "paid": "Pagado", "monthlyRate": "Tasa Mensual", + "monthly": "Mensual", "annualRate": "Tasa Anual", + "annual": "Anual", "totalRate": "Tasa Total", + "total": "Total", "progress": "Progreso", "paymentProgress": "Progreso de Pago", "markPaid": "Marcar como Pagado", diff --git a/frontend/src/i18n/locales/pt-BR.json b/frontend/src/i18n/locales/pt-BR.json index 605dc72..673986a 100644 --- a/frontend/src/i18n/locales/pt-BR.json +++ b/frontend/src/i18n/locales/pt-BR.json @@ -397,8 +397,11 @@ "dueDate": "Vencimento", "paid": "Pago", "monthlyRate": "Taxa Mensal", + "monthly": "Mensal", "annualRate": "Taxa Anual", + "annual": "Anual", "totalRate": "Taxa Total", + "total": "Total", "progress": "Progresso", "paymentProgress": "Progresso de Pagamento", "markPaid": "Marcar como Pago", diff --git a/frontend/src/pages/LiabilityAccounts.jsx b/frontend/src/pages/LiabilityAccounts.jsx index 21ca717..6f1f7e3 100644 --- a/frontend/src/pages/LiabilityAccounts.jsx +++ b/frontend/src/pages/LiabilityAccounts.jsx @@ -729,13 +729,13 @@ const LiabilityAccounts = () => { {/* Detail Modal */} {showDetailModal && selectedAccount && (
-
+
-
-
+
+
- {selectedAccount.name} + style={{ color: selectedAccount.color, fontSize: isMobile ? '0.9rem' : '1rem' }}> + {selectedAccount.name}
-
+
{/* Contract Type / Description */} {selectedAccount.description && ( -
+
{t('liabilities.contractType')}: {selectedAccount.description}
)} {/* Summary Cards */} -
-
+
+
-
-
{t('liabilities.principal')}
-
{formatCurrency(selectedAccount.principal_amount, selectedAccount.currency)}
+
+
{t('liabilities.principal')}
+
{formatCurrency(selectedAccount.principal_amount, selectedAccount.currency)}
-
+
-
-
{t('liabilities.totalInterest')}
-
{formatCurrency(selectedAccount.total_interest, selectedAccount.currency)}
+
+
{t('liabilities.totalInterest')}
+
{formatCurrency(selectedAccount.total_interest, selectedAccount.currency)}
-
+
-
-
{t('liabilities.totalFees')}
-
{formatCurrency(selectedAccount.total_fees, selectedAccount.currency)}
-
{t('liabilities.extraCharges')}
+
+
{t('liabilities.totalFees')}
+
{formatCurrency(selectedAccount.total_fees, selectedAccount.currency)}
+ {!isMobile &&
{t('liabilities.extraCharges')}
}
-
+
-
-
{t('liabilities.totalContract')}
-
{formatCurrency(selectedAccount.total_contract_value, selectedAccount.currency)}
+
+
{t('liabilities.totalContract')}
+
{formatCurrency(selectedAccount.total_contract_value, selectedAccount.currency)}
{/* Interest Rates */} -
-
+
+
-
-
{t('liabilities.monthlyRate')}
-
{formatPercent(selectedAccount.monthly_interest_rate)}
+
+
{isMobile ? t('liabilities.monthly') : t('liabilities.monthlyRate')}
+
{formatPercent(selectedAccount.monthly_interest_rate)}
-
+
-
-
{t('liabilities.annualRate')}
-
{formatPercent(selectedAccount.annual_interest_rate)}
+
+
{isMobile ? t('liabilities.annual') : t('liabilities.annualRate')}
+
{formatPercent(selectedAccount.annual_interest_rate)}
-
+
-
-
{t('liabilities.totalRate')}
-
{formatPercent(selectedAccount.total_interest_rate)}
+
+
{isMobile ? t('liabilities.total') : t('liabilities.totalRate')}
+
{formatPercent(selectedAccount.total_interest_rate)}
{/* Progress */} -
-
+
+
{t('liabilities.paymentProgress')} - {selectedAccount.paid_installments}/{selectedAccount.total_installments} {t('liabilities.installments').toLowerCase()} + {selectedAccount.paid_installments}/{selectedAccount.total_installments} {isMobile ? '' : t('liabilities.installments').toLowerCase()}
-
+
{selectedAccount.progress_percentage}%
-
+
{t('liabilities.paid')}: {formatCurrency(selectedAccount.principal_paid, selectedAccount.currency)} {t('liabilities.remaining')}: {formatCurrency(selectedAccount.remaining_balance, selectedAccount.currency)}
{/* Installments Table */} -
+
{t('liabilities.installmentsList')}
+ + {isMobile ? ( + /* Mobile: Cards layout */ +
+ {selectedAccount.installments?.map(inst => ( +
+
+ {/* Header */} +
+
+ {inst.installment_number} - {formatDate(inst.due_date)} +
+ + {getStatusLabel(inst.status, true)} + +
+ + {/* Values */} +
+
+
{t('liabilities.installmentAmount')}
+
{formatCurrency(inst.installment_amount, selectedAccount.currency)}
+
+ {inst.paid_amount > 0 && ( +
+
{t('liabilities.paidAmount')}
+
inst.installment_amount ? 'text-warning' : 'text-success'}`}> + {formatCurrency(inst.paid_amount, selectedAccount.currency)} + {inst.paid_amount > inst.installment_amount && } +
+
+ )} +
+
{t('liabilities.capital')}
+
{formatCurrency(inst.principal_amount, selectedAccount.currency)}
+
+
+
{t('liabilities.interest')}
+
{formatCurrency(inst.interest_amount, selectedAccount.currency)}
+
+ {inst.fee_amount > 0 && ( +
+
{t('liabilities.fees')}
+
{formatCurrency(inst.fee_amount, selectedAccount.currency)}
+
+ )} +
+ + {/* Reconciliation */} + {inst.reconciled_transaction_id ? ( +
+ + {t('liabilities.reconciled')} + + +
+ ) : ( +
+ {inst.status !== 'paid' && ( + + )} + +
+ )} +
+
+ ))} +
+ ) : ( + /* Desktop: Table layout */
@@ -948,12 +1040,14 @@ const LiabilityAccounts = () => {
+ )}
-
+