Files
plantillas-proyectos/frontend/src/lib/api/dashboard/a76/exchange-rate.ts
2025-12-23 14:15:05 -06:00

58 lines
1.8 KiB
TypeScript

/**
* API Client para Exchange Rate
*/
import { api } from '$lib/api';
export interface ExchangeRate {
id: number;
date: string;
value: number;
local_currency: string | null;
foreign_currency: string | null;
company_id: number;
tenant_id: number;
}
export interface ExchangeRateListResponse {
items: ExchangeRate[];
total: number;
page: number;
size: number;
pages: number;
}
/**
* Get exchange rate by date
*/
export async function getExchangeRateByDate(date: string, companyId: number): Promise<ExchangeRate | null> {
try {
console.log('📡 [API] Solicitando tipos de cambio para company_id:', companyId);
// Get all exchange rates and filter by date on client side
const response = await api.get<ExchangeRateListResponse>(`/v1/a76/exchange-rate/?company_id=${companyId}`);
console.log('📡 [API] Respuesta recibida:', response.data?.total, 'tipos de cambio');
if (response.data && response.data.items && response.data.items.length > 0) {
// Filter by date and find USD exchange rate
const dateOnly = date.split('T')[0]; // Get YYYY-MM-DD part
console.log('🔍 [API] Buscando fecha:', dateOnly, 'en', response.data.items.length, 'registros');
const matchingRates = response.data.items.filter(rate => {
const rateDate = rate.date.split('T')[0];
const matches = rateDate === dateOnly && rate.foreign_currency === 'USD';
console.log(' - Comparando:', rateDate, '===', dateOnly, '&& USD ===', rate.foreign_currency, '→', matches);
return matches;
});
console.log('✅ [API] Encontrados', matchingRates.length, 'tipos de cambio que coinciden');
return matchingRates.length > 0 ? matchingRates[0] : null;
}
console.log('⚠️ [API] No hay datos en la respuesta');
return null;
} catch (error) {
console.error('❌ [API] Error fetching exchange rate:', error);
return null;
}
}