📊 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
💡 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");