← Volver a Entidades de Facturación

FacturaLineaAnuladum

Entidad para gestión de líneas de factura anuladas

📊 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

📋 Propiedades de la Entidad

TipoDocumento

string (1)
Tipo de documento (clave primaria)

Serie

string (10)
Serie del documento (clave primaria)

Factura

double
Número de factura (clave primaria)

Relacion

double
Relación de la línea (clave primaria)

Fecha

DateTime
Fecha de la línea anulada

Hora

DateTime
Hora de la anulación

Camarero

double?
Camarero que atendió la mesa

Salon

double?
Salón donde se sirvió

Mesa

double?
Mesa donde se sirvió

Orden

double
Orden original en la factura

Articulo

string (13)
Código del artículo (requerido)

Descripcion

string (30)
Descripción del artículo

Cantidad

double?
Cantidad original del artículo

Precio

double?
Precio unitario sin IVA

PrecioIva

double?
Precio unitario con IVA

Iva

double?
Porcentaje de IVA aplicado

TotalLinea

double?
Total original sin IVA

TotalLineaIva

double?
Total original con IVA

Gramos

string (1)
Indicador de producto por peso

Familia

string (25)
Familia del artículo

Invitacion

string (1)
Indicador de invitación

Cierre

double?
Cierre asociado a la línea

🔗 Relaciones con Otras Entidades

📦 Entidades de Facturación

  • Factura: Factura principal relacionada
  • FacturaLinea: Línea original correspondiente
  • FacturaLineaModificador: Modificadores de la línea

🎯 Funcionalidades Relacionadas

  • Historial de Anulaciones: Registro de cambios
  • Auditoría: Trazabilidad completa
  • Control de Calidad: Seguimiento de errores
  • 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();

🔧 Configuración de Base de Datos

🗄️ Configuración de Tabla

  • Tabla: FACTURA_LINEA_ANULADA
  • Clave Primaria: TIPO_DOCUMENTO + SERIE + FACTURA + RELACION
  • Índices: I_FA_LINEA_A_FECHA
  • Esquema: StoreData

🔑 Restricciones

  • TipoDocumento: Clave primaria, máximo 1 carácter
  • Serie: Clave primaria, máximo 10 caracteres
  • Factura: Clave primaria, número de factura
  • Relacion: Clave primaria, número de relación
  • Articulo: Requerido, máximo 13 caracteres
  • Descripcion: Máximo 30 caracteres
  • Gramos: Máximo 1 carácter
  • Familia: Máximo 25 caracteres
  • Invitacion: Máximo 1 carácter

🔗 Integración con Otros Componentes

📚 Componentes Relacionados

  • Back.API: Controladores de facturación
  • Back.Application: Servicios de anulación
  • Back.Domain: DTOs de líneas anuladas
  • Common.Domain.Master: Entidades maestro relacionadas
  • Common.Constants: Validaciones de anulaciones

🎯 Casos de Uso

  • Anulación de Líneas: Cancelar productos en factura
  • Historial de Cambios: Registro de modificaciones
  • Auditoría: Trazabilidad completa
  • Control de Calidad: Seguimiento de errores
  • Análisis de Tendencias: Patrones de anulaciones
  • Cumplimiento Legal: Registros para auditorías