Ir al contenido

Libro de Facturas

Genera el libro registro oficial de facturas emitidas o recibidas, obligatorio para la AEAT.

  1. Accede a la pestana “Libros” en Informes.
  2. Sub-pestana: “Facturas Emitidas” o “Facturas Recibidas”.
  3. Selecciona el ano y trimestre (o rango personalizado).
  4. Revisa la tabla con todas las facturas del periodo.
  5. Exporta a Excel para envio a la asesoria.
ColumnaDescripcion
Nº FacturaNumero de serie completo
FechaFecha de emision (DD/MM/YYYY)
Cliente/ProveedorNombre del receptor/emisor
NIF/CIFIdentificacion fiscal
Base ImponibleSubtotal sin IVA
Tipo IVA %Porcentaje aplicado
Cuota IVAImporte de IVA
Rec. Equiv.Recargo de equivalencia (si aplica)
RetencionIRPF retenido (si aplica)
TotalImporte final

Indicador visual: Si una factura tiene errores de calculo, aparece:

  • Fondo rojo en la fila.
  • Icono de alerta (triangulo amarillo).
  • Badge “Error” en la columna IVA.

Causas de error:

  • IVA calculado incorrectamente.
  • Total no coincide con base + IVA - retencion.
  • Datos faltantes.
Detalles técnicos

Componente: src/features/accounting/sub-modules/reporting/components/registers/InvoiceRegisterReport.tsx

Validacion de calculo:

import { validateTaxCalculation } from "@/features/taxes/services/taxValidationService";
const validation = validateTaxCalculation({
subtotal: record.base_imponible,
tax_rate: record.tax_rate,
total_tax: record.tax_amount,
total_amount: record.total_amount,
retention_amount: record.retention_amount,
equivalence_surcharge: record.equivalence_surcharge,
});
if (!validation.valid) {
// Marcar fila con fondo rojo
// Mostrar icono de alerta
}

Totales calculados:

const totals = {
base_imponible: data.reduce((sum, r) => sum + r.base_imponible, 0),
tax_amount: data.reduce((sum, r) => sum + r.tax_amount, 0),
equivalence_surcharge: data.reduce((sum, r) => sum + (r.equivalence_surcharge || 0), 0),
retention_amount: data.reduce((sum, r) => sum + (r.retention_amount || 0), 0),
total_amount: data.reduce((sum, r) => sum + r.total_amount, 0),
};