From 7cc8842f8dbc1617e8603985dda7a179dc9f3cb4 Mon Sep 17 00:00:00 2001 From: Consultoria AS Date: Thu, 22 Jan 2026 02:16:24 +0000 Subject: [PATCH] feat(shared): add types for dashboard, cfdi, and impuestos --- packages/shared/src/index.ts | 3 ++ packages/shared/src/types/cfdi.ts | 50 ++++++++++++++++++++++++++ packages/shared/src/types/dashboard.ts | 46 ++++++++++++++++++++++++ packages/shared/src/types/impuestos.ts | 45 +++++++++++++++++++++++ 4 files changed, 144 insertions(+) create mode 100644 packages/shared/src/types/cfdi.ts create mode 100644 packages/shared/src/types/dashboard.ts create mode 100644 packages/shared/src/types/impuestos.ts diff --git a/packages/shared/src/index.ts b/packages/shared/src/index.ts index 30ed3f8..ecf2137 100644 --- a/packages/shared/src/index.ts +++ b/packages/shared/src/index.ts @@ -2,6 +2,9 @@ export * from './types/auth'; export * from './types/tenant'; export * from './types/user'; +export * from './types/cfdi'; +export * from './types/dashboard'; +export * from './types/impuestos'; // Constants export * from './constants/plans'; diff --git a/packages/shared/src/types/cfdi.ts b/packages/shared/src/types/cfdi.ts new file mode 100644 index 0000000..2e39220 --- /dev/null +++ b/packages/shared/src/types/cfdi.ts @@ -0,0 +1,50 @@ +export type TipoCfdi = 'ingreso' | 'egreso' | 'traslado' | 'pago' | 'nomina'; +export type EstadoCfdi = 'vigente' | 'cancelado'; + +export interface Cfdi { + id: string; + uuidFiscal: string; + tipo: TipoCfdi; + serie: string | null; + folio: string | null; + fechaEmision: string; + fechaTimbrado: string; + rfcEmisor: string; + nombreEmisor: string; + rfcReceptor: string; + nombreReceptor: string; + subtotal: number; + descuento: number; + iva: number; + isrRetenido: number; + ivaRetenido: number; + total: number; + moneda: string; + tipoCambio: number; + metodoPago: string | null; + formaPago: string | null; + usoCfdi: string | null; + estado: EstadoCfdi; + xmlUrl: string | null; + pdfUrl: string | null; + createdAt: string; +} + +export interface CfdiFilters { + tipo?: TipoCfdi; + estado?: EstadoCfdi; + fechaInicio?: string; + fechaFin?: string; + rfc?: string; + search?: string; + page?: number; + limit?: number; +} + +export interface CfdiListResponse { + data: Cfdi[]; + total: number; + page: number; + limit: number; + totalPages: number; +} diff --git a/packages/shared/src/types/dashboard.ts b/packages/shared/src/types/dashboard.ts new file mode 100644 index 0000000..4c124c3 --- /dev/null +++ b/packages/shared/src/types/dashboard.ts @@ -0,0 +1,46 @@ +export interface KpiData { + ingresos: number; + egresos: number; + utilidad: number; + margen: number; + ivaBalance: number; + cfdisEmitidos: number; + cfdisRecibidos: number; +} + +export interface IngresosEgresosData { + mes: string; + ingresos: number; + egresos: number; +} + +export interface ResumenFiscal { + ivaPorPagar: number; + ivaAFavor: number; + isrPorPagar: number; + declaracionesPendientes: number; + proximaObligacion: { + titulo: string; + fecha: string; + } | null; +} + +export interface Alerta { + id: number; + tipo: 'vencimiento' | 'discrepancia' | 'iva_favor' | 'declaracion'; + titulo: string; + mensaje: string; + prioridad: 'alta' | 'media' | 'baja'; + fechaVencimiento: string | null; + leida: boolean; + resuelta: boolean; + createdAt: string; +} + +export type PeriodoFiltro = 'semana' | 'mes' | 'trimestre' | 'año' | 'custom'; + +export interface DashboardFilters { + periodo: PeriodoFiltro; + fechaInicio?: string; + fechaFin?: string; +} diff --git a/packages/shared/src/types/impuestos.ts b/packages/shared/src/types/impuestos.ts new file mode 100644 index 0000000..dcca2b9 --- /dev/null +++ b/packages/shared/src/types/impuestos.ts @@ -0,0 +1,45 @@ +export type EstadoDeclaracion = 'pendiente' | 'declarado' | 'acreditado'; + +export interface IvaMensual { + id: number; + año: number; + mes: number; + ivaTrasladado: number; + ivaAcreditable: number; + ivaRetenido: number; + resultado: number; + acumulado: number; + estado: EstadoDeclaracion; + fechaDeclaracion: string | null; +} + +export interface IsrMensual { + id: number; + año: number; + mes: number; + ingresosAcumulados: number; + deducciones: number; + baseGravable: number; + isrCausado: number; + isrRetenido: number; + isrAPagar: number; + estado: EstadoDeclaracion; + fechaDeclaracion: string | null; +} + +export interface ResumenIva { + trasladado: number; + acreditable: number; + retenido: number; + resultado: number; + acumuladoAnual: number; +} + +export interface ResumenIsr { + ingresosAcumulados: number; + deducciones: number; + baseGravable: number; + isrCausado: number; + isrRetenido: number; + isrAPagar: number; +}