← Volver a Entidades de Facturación

Factura

Entidad principal para facturas del sistema RestMaster

📊 Descripción General

La entidad Factura es la entidad principal que representa las facturas y documentos comerciales del sistema RestMaster. Esta entidad contiene toda la información necesaria para la gestión de facturas, incluyendo datos del cliente, montos, impuestos y estado de la factura.

🎯 Propósito de la Entidad

  • Gestión de Facturas: Administración completa de facturas
  • Control de Estado: Gestión del estado de facturas
  • Datos del Cliente: Información del cliente
  • Cálculos Financieros: Totales, descuentos e impuestos

📋 Propiedades de la Entidad

TipoDocumento

string (1)
Tipo de documento (clave primaria)

Serie

string (10)
Serie del documento (clave primaria)

Factura1

double
Número de factura (clave primaria)

Fecha

DateTime
Fecha de la factura

Cajero

double?
Cajero que procesó la factura

Cliente

double
Cliente de la factura

Estado

string (1)
Estado de la factura (requerido)

HoraEntrada

DateTime?
Hora de entrada del cliente

HoraSalida

DateTime?
Hora de salida del cliente

Salon

double?
Salón donde se generó la factura

Mesa

double?
Mesa donde se generó la factura

Camarero

double?
Camarero asignado

Pax

double?
Número de personas

Tarifa

double?
Tarifa aplicada

PorcentajeDto

double?
Porcentaje de descuento

TotalFactura

double?
Total de la factura

EntregaEfectivo

double?
Efectivo entregado

CambioEfectivo

double?
Cambio en efectivo

ConceptoFactura

string (30)
Concepto de la factura

Impreso

string (1)
Indicador de impresión

Dividida

string (1)
Indicador de factura dividida

MotivoAnulacion

string (30)
Motivo de anulación

Comisionista

double?
Comisionista asignado

ValorComision

double?
Valor de la comisión

Anulada

string (1)
Indicador de anulación

TipoDocumentoAnulada

string (1)
Tipo de documento anulado

SerieAnulada

string (10)
Serie del documento anulado

FacturaAnulada

double?
Número de factura anulada

Moneda

string (20)
Moneda de la factura

TotalMoneda

double?
Total en moneda extranjera

Cierre

double?
Cierre asociado

Formato

string (30)
Formato de impresión

Impresora

string (80)
Impresora asignada

Repartidor

double?
Repartidor asignado

HoraReparto

DateTime?
Hora de reparto

Pedido

double?
Número de pedido

FidelizacionTarjeta

double?
Puntos de fidelización por tarjeta

FidelizacionCliente

double?
Puntos de fidelización del cliente

FidelizacionCabecera

double?
Puntos de fidelización de cabecera

FidelizacionDescuento

double?
Descuento por fidelización

TraspasoSage

string (1)
Indicador de traspaso a Sage

Propina

string (1)
Indicador de propina

PorcentajePropina

double?
Porcentaje de propina

ImportePropina

double?
Importe de propina

TotalPropina

double?
Total con propina

🔗 Relaciones con Otras Entidades

📝 Entidades de Líneas

  • FacturaLinea: Líneas de la factura
  • FacturaLineaAnuladum: Líneas anuladas
  • FacturaLineaModificador: Modificadores de líneas

💰 Entidades de Cobro

  • FacturasCobro: Cobros de la factura
  • FacturaPrepago: Facturas prepago
  • VentaCosto: Costos de venta

🏛️ Entidades de Impuestos

  • FacturaIva: IVA de la factura

💡 Ejemplo de Uso

// Crear una nueva factura var nuevaFactura = new Factura { TipoDocumento = "F", Serie = "A", Factura1 = 1001, Fecha = DateTime.Now, Cliente = 1, Estado = "A", Cajero = 1, Salon = 1, Mesa = 5, Camarero = 2, Pax = 4, Tarifa = 1, TotalFactura = 50.00, Impreso = "S", Dividida = "N", Anulada = "N" }; // Consultar facturas por fecha var facturas = context.Facturas .Where(f => f.Fecha >= DateTime.Today.AddDays(-30)) .OrderByDescending(f => f.Fecha) .ToList(); // Consultar facturas por cliente var facturasCliente = context.Facturas .Where(f => f.Cliente == 1) .ToList(); // Consultar facturas anuladas var facturasAnuladas = context.Facturas .Where(f => f.Anulada == "S") .ToList();

🔧 Configuración de Base de Datos

🗄️ Configuración de Tabla

  • Tabla: FACTURA
  • Clave Primaria: TIPO_DOCUMENTO + SERIE + FACTURA
  • Índices: I_FACTURA_CLIENTE, I_FACTURA_FECHA, I_FACTURA_MESA
  • Esquema: StoreData

🔑 Restricciones

  • TipoDocumento: Clave primaria, máximo 1 carácter
  • Serie: Clave primaria, máximo 10 caracteres
  • Factura1: Clave primaria, número de factura
  • Cliente: Requerido
  • Estado: Requerido, máximo 1 carácter

🔗 Integración con Otros Componentes

📚 Componentes Relacionados

  • Back.API: InvoiceController usa esta entidad
  • Back.Application: InvoiceService opera con esta entidad
  • Back.Domain: DTOs mapean desde esta entidad
  • Common.Constants: Validaciones para facturas

🎯 Casos de Uso

  • Gestión de Facturas: CRUD completo de facturas
  • Reportes: Generación de reportes de ventas
  • Anulaciones: Control de facturas anuladas
  • Fidelización: Gestión de puntos de fidelización
  • Propinas: Control de propinas