← Volver a Entidades de Sistema

UltimaFactura

Entidad para control de última factura generada por tipo y serie

📊 Descripción General

La entidad UltimaFactura representa el control de la última factura generada en el sistema RestMaster. Esta entidad permite gestionar la numeración de facturas por tipo de documento y serie, incluyendo control de bloqueos para evitar duplicados.

🎯 Propósito de la Entidad

  • Control de Numeración: Última factura por tipo y serie
  • Prevención de Duplicados: Control de bloqueos
  • Gestión de Series: Control por series de facturación
  • Auditoría: Trazabilidad de numeración
  • Sincronización: Control de concurrencia

📋 Propiedades de la Entidad

TipoDocumento

string (1)
Tipo de documento (clave primaria)

Serie

string (10)
Serie del documento (clave primaria)

Numero

double?
Número de la última factura generada

Bloqueo

string (1)
Indicador de bloqueo para evitar duplicados

🔗 Relaciones con Otras Entidades

⚙️ Entidades de Sistema

  • Secuencia: Secuencias relacionadas
  • UltimoConsecutivo: Último consecutivo usado
  • UltimoPedido: Último pedido generado

🎯 Funcionalidades Relacionadas

  • Control de Numeración: Gestión de números de factura
  • Prevención de Duplicados: Control de bloqueos
  • Gestión de Series: Control por series
  • Sincronización: Control de concurrencia

💡 Ejemplo de Uso

// Crear control de última factura para serie A var ultimaFacturaSerieA = new UltimaFactura { TipoDocumento = "F", Serie = "A", Numero = 1000, Bloqueo = "N" }; // Crear control de última factura para serie B var ultimaFacturaSerieB = new UltimaFactura { TipoDocumento = "F", Serie = "B", Numero = 1, Bloqueo = "N" }; // Consultar últimas facturas por tipo var ultimasFacturas = context.UltimaFacturas .Where(uf => uf.TipoDocumento == "F") .OrderBy(uf => uf.Serie) .ToList(); // Obtener siguiente número de factura var ultimaFactura = context.UltimaFacturas .FirstOrDefault(uf => uf.TipoDocumento == "F" && uf.Serie == "A"); if (ultimaFactura != null && ultimaFactura.Bloqueo == "N") { var siguienteNumero = (ultimaFactura.Numero ?? 0) + 1; ultimaFactura.Numero = siguienteNumero; ultimaFactura.Bloqueo = "S"; // Bloquear para evitar duplicados context.SaveChanges(); } // Consultar facturas bloqueadas var facturasBloqueadas = context.UltimaFacturas .Where(uf => uf.Bloqueo == "S") .ToList(); // Desbloquear factura var facturaBloqueada = context.UltimaFacturas .FirstOrDefault(uf => uf.TipoDocumento == "F" && uf.Serie == "A"); if (facturaBloqueada != null) { facturaBloqueada.Bloqueo = "N"; context.SaveChanges(); } // Consultar por serie específica var ultimaFacturaSerie = context.UltimaFacturas .FirstOrDefault(uf => uf.Serie == "A");

🔧 Configuración de Base de Datos

🗄️ Configuración de Tabla

  • Tabla: ULTIMA_FACTURA
  • Clave Primaria: TIPO_DOCUMENTO + SERIE
  • Esquema: Maestro

🔑 Restricciones

  • TipoDocumento: Clave primaria, máximo 1 carácter
  • Serie: Clave primaria, máximo 10 caracteres
  • Numero: Número de última factura
  • Bloqueo: Máximo 1 carácter

🔗 Integración con Otros Componentes

📚 Componentes Relacionados

  • Back.API: Controladores de facturación
  • Back.Application: Servicios de facturación
  • Back.Domain: DTOs de facturación
  • Common.Constants: Validaciones de facturación

🎯 Casos de Uso

  • Generación de Facturas: Control de numeración
  • Prevención de Duplicados: Control de bloqueos
  • Gestión de Series: Control por series
  • Sincronización: Control de concurrencia
  • Auditoría: Trazabilidad de numeración
  • Reportes: Análisis de facturación