import { escapeHtml } from '../utils/escapeHtml.js'; export function InvoiceItem(invoice, onView) { const item = document.createElement('tr'); item.className = 'invoice-item'; // Formatear fecha const formatDate = (dateString) => { const date = new Date(dateString); return date.toLocaleDateString('es-ES'); }; // Formatear moneda const formatCurrency = (amount) => { return new Intl.NumberFormat('es-ES', { style: 'currency', currency: 'EUR' }).format(amount); }; // Obtener clase de estado const getStatusClass = (status) => { const statusMap = { 'draft': 'status-draft', 'validated': 'status-validated', 'paid': 'status-paid', 'unpaid': 'status-unpaid', 'canceled': 'status-canceled' }; return statusMap[status] || 'status-default'; }; // Obtener texto de estado const getStatusText = (status) => { const statusTextMap = { 'draft': 'Borrador', 'validated': 'Validada', 'paid': 'Pagada', 'unpaid': 'Impagada', 'canceled': 'Cancelada' }; return statusTextMap[status] || status; }; item.innerHTML = /*html*/` ${escapeHtml(invoice.number)} ${getStatusText(invoice.status)} ${escapeHtml(invoice.clientName || 'Sin nombre')} ${formatDate(invoice.date)} ${formatCurrency(invoice.total)} ${formatCurrency(invoice.remainToPay)} `; // Event listener para el botón de ver const viewBtn = item.querySelector('.btn-view'); viewBtn.addEventListener('click', () => { if (onView) { onView(invoice.id); } }); return item; }