📊 Descripción General
La entidad FacturaLineaAnuladum representa las líneas de factura que han sido anuladas en el sistema RestMaster. Esta entidad mantiene un historial completo de las líneas anuladas, preservando toda la información original para fines de auditoría y control.
🎯 Propósito de la Entidad
- Historial de Anulaciones: Registro de líneas anuladas
- Auditoría: Trazabilidad completa de cambios
- Control de Calidad: Seguimiento de errores
- Cumplimiento Legal: Registros para auditorías
- Análisis de Tendencias: Patrones de anulaciones
💡 Ejemplo de Uso
// Anular una línea de factura (mover a tabla de anuladas)
var lineaOriginal = context.FacturaLineas
.FirstOrDefault(fl => fl.TipoDocumento == "F" &&
fl.Serie == "A" &&
fl.Factura == 1001 &&
fl.Relacion == 1);
if (lineaOriginal != null)
{
// Crear registro en tabla de anuladas
var lineaAnulada = new FacturaLineaAnuladum
{
TipoDocumento = lineaOriginal.TipoDocumento,
Serie = lineaOriginal.Serie,
Factura = lineaOriginal.Factura,
Relacion = lineaOriginal.Relacion,
Fecha = lineaOriginal.Fecha,
Hora = DateTime.Now, // Hora de anulación
Camarero = lineaOriginal.Camarero,
Salon = lineaOriginal.Salon,
Mesa = lineaOriginal.Mesa,
Orden = lineaOriginal.Orden,
Articulo = lineaOriginal.Articulo,
Descripcion = lineaOriginal.Descripcion,
Cantidad = lineaOriginal.Cantidad,
Precio = lineaOriginal.Precio,
PrecioIva = lineaOriginal.PrecioIva,
Iva = lineaOriginal.Iva,
TotalLinea = lineaOriginal.TotalLinea,
TotalLineaIva = lineaOriginal.TotalLineaIva,
Gramos = lineaOriginal.Gramos,
Familia = lineaOriginal.Familia,
Invitacion = lineaOriginal.Invitacion,
Cierre = lineaOriginal.Cierre
};
context.FacturaLineaAnulada.Add(lineaAnulada);
context.FacturaLineas.Remove(lineaOriginal);
context.SaveChanges();
}
// Consultar líneas anuladas por fecha
var lineasAnuladas = context.FacturaLineaAnulada
.Where(fla => fla.Fecha == DateTime.Today)
.OrderBy(fla => fla.Hora)
.ToList();
// Consultar líneas anuladas por camarero
var anulacionesCamarero = context.FacturaLineaAnulada
.Where(fla => fla.Camarero == 1 &&
fla.Fecha >= DateTime.Today.AddDays(-7))
.ToList();
// Consultar líneas anuladas por familia
var anulacionesFamilia = context.FacturaLineaAnulada
.Where(fla => fla.Familia == "BEBIDAS" &&
fla.Fecha >= DateTime.Today.AddDays(-30))
.ToList();
// Análisis de anulaciones por hora
var anulacionesPorHora = context.FacturaLineaAnulada
.Where(fla => fla.Fecha == DateTime.Today)
.GroupBy(fla => fla.Hora.Hour)
.Select(g => new { Hora = g.Key, Cantidad = g.Count() })
.OrderBy(x => x.Hora)
.ToList();