mirror of
https://github.com/escalante29/WealthySmart.git
synced 2026-07-17 16:28:47 +02:00
Tasa Cero: badges, convert dialog, Financiamientos page
Violet 'Tasa Cero'/'Cuota' badges (anchor amount struck through like deferred), convert/edit action on CC purchases with a live cuota preview, and a Financiamientos page mirroring the bank's tab (progress, monto cuota, saldo inicial/faltante, totals). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -14,6 +14,7 @@ import PeriodNavigator from '@/components/PeriodNavigator';
|
||||
import MonthlyDetail from '@/components/budget/MonthlyDetail';
|
||||
import RecurringItemsManager from '@/components/budget/RecurringItemsManager';
|
||||
import TransactionList from '@/components/TransactionList';
|
||||
import ConvertToInstallmentsDialog from '@/components/transactions/ConvertToInstallmentsDialog';
|
||||
|
||||
|
||||
const MIN_YEAR = 2026;
|
||||
@@ -44,6 +45,7 @@ export default function Budget() {
|
||||
const [subTab, setSubTab] = useState<'detail' | 'transactions'>('detail');
|
||||
const [txSearch, setTxSearch] = useState('');
|
||||
const [txSource, setTxSource] = useState<'CREDIT_CARD' | 'CASH_AND_TRANSFER'>('CREDIT_CARD');
|
||||
const [convertTx, setConvertTx] = useState<Transaction | null>(null);
|
||||
|
||||
const txQuery = useQuery({
|
||||
queryKey: ['transactions', 'budget', year, selectedMonth, txSource, txSearch],
|
||||
@@ -79,6 +81,7 @@ export default function Budget() {
|
||||
|
||||
const invalidateTransactionsAndBudget = useCallback(() => {
|
||||
queryClient.invalidateQueries({ queryKey: ['transactions'] });
|
||||
queryClient.invalidateQueries({ queryKey: ['installment-plans'] });
|
||||
refresh();
|
||||
}, [queryClient, refresh]);
|
||||
|
||||
@@ -209,6 +212,7 @@ export default function Budget() {
|
||||
showSourceIcon={txSource === 'CASH_AND_TRANSFER'}
|
||||
emptyMessage={`Sin transacciones de ${txSource === 'CREDIT_CARD' ? 'tarjeta' : 'efectivo o transferencia'} en ${MONTH_NAMES[selectedMonth]}`}
|
||||
onToggleDeferred={txSource === 'CREDIT_CARD' ? handleToggleDeferred : undefined}
|
||||
onConvertTasaCero={txSource === 'CREDIT_CARD' ? setConvertTx : undefined}
|
||||
/>
|
||||
)}
|
||||
</TabsContent>
|
||||
@@ -224,6 +228,13 @@ export default function Budget() {
|
||||
/>
|
||||
</TabsContent>
|
||||
</Tabs>
|
||||
|
||||
<ConvertToInstallmentsDialog
|
||||
open={convertTx !== null}
|
||||
onOpenChange={(open) => !open && setConvertTx(null)}
|
||||
onSaved={invalidateTransactionsAndBudget}
|
||||
tx={convertTx}
|
||||
/>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user