📊 Descripción General
El DTO ArqueoCajaResponse representa la respuesta completa de un arqueo de caja en el sistema RestMaster. Este DTO contiene toda la información financiera y operativa relacionada con el cierre de una caja, incluyendo totales de ventas, formas de pago, descuadres y detalles por tipo de documento.
🎯 Propósito del DTO
- Respuesta de Arqueo: Datos completos del arqueo de caja
- Información Financiera: Totales por forma de pago
- Datos Operativos: Número de facturas y comensales
- Control de Caja: Importes inicial y final
- Detalle por Documentos: Desglose por tipo de documento
📋 DTO Relacionado: ArqueoVentaDetalle
🎯 Propósito del DTO Relacionado
El DTO ArqueoVentaDetalle proporciona el desglose detallado de ventas por tipo de documento (facturas, abonos, etc.) dentro del arqueo de caja.
TipoDocumento
string
Tipo de documento (F=Factura, A=Abono)
Serie
string
Serie del documento
Venta
double?
Total de ventas para este tipo
NumeroFacturas
double?
Número de facturas para este tipo
NumeroComensales
double?
Número de comensales para este tipo
PrimeraFactura
double?
Primera factura del tipo
UltimaFactura
double?
Última factura del tipo
Consecutivo
double?
Consecutivo del tipo
💡 Ejemplo de Uso
// Crear respuesta de arqueo de caja
var arqueoResponse = new ArqueoCajaResponse
{
Cajero = 1,
Cierre = 1001,
Fecha = DateTime.Now,
Venta = 1500.50,
NumeroFacturas = 25,
NumeroComensales = 45,
Efectivo = 800.00,
Tarjetas = 650.50,
Credito = 50.00,
Invitacion = 0.00,
Propina = 75.25,
Entradas = 100.00,
Salidas = 25.00,
Descuadre = 0.00,
ImporteInicial = 100.00,
ImporteFinal = 175.25,
DetalleVentas = new List<ArqueoVentaDetalle>
{
new ArqueoVentaDetalle
{
TipoDocumento = "F",
Serie = "A",
Venta = 1200.00,
NumeroFacturas = 20,
NumeroComensales = 35,
PrimeraFactura = 1001,
UltimaFactura = 1020,
Consecutivo = 20
},
new ArqueoVentaDetalle
{
TipoDocumento = "A",
Serie = "A",
Venta = 300.50,
NumeroFacturas = 5,
NumeroComensales = 10,
PrimeraFactura = 2001,
UltimaFactura = 2005,
Consecutivo = 5
}
}
};
// Serializar a JSON
var jsonResponse = JsonSerializer.Serialize(arqueoResponse, new JsonSerializerOptions
{
WriteIndented = true
});
// Calcular totales
var totalVentas = arqueoResponse.DetalleVentas?.Sum(d => d.Venta ?? 0) ?? 0;
var totalFacturas = arqueoResponse.DetalleVentas?.Sum(d => d.NumeroFacturas ?? 0) ?? 0;
// Verificar descuadre
var totalCobrado = (arqueoResponse.Efectivo ?? 0) +
(arqueoResponse.Tarjetas ?? 0) +
(arqueoResponse.Credito ?? 0);
var descuadreCalculado = totalCobrado - (arqueoResponse.Venta ?? 0);
// Obtener detalle por tipo de documento
var facturas = arqueoResponse.DetalleVentas?.FirstOrDefault(d => d.TipoDocumento == "F");
var abonos = arqueoResponse.DetalleVentas?.FirstOrDefault(d => d.TipoDocumento == "A");