El modeloDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/interezante456-pixel/proyecto-dise-o/llms.txt
Use this file to discover all available pages before exploring further.
Venta pertenece al espacio de nombres TiendaMiCholo.Models y representa el encabezado de un comprobante de venta generado en la tienda. Cada instancia de Venta agrupa la información del cliente, el tipo de comprobante emitido, el total de la transacción y el estado actual del documento. Los productos incluidos en cada venta se registran por separado en la entidad DetalleVenta, que actúa como línea de detalle y mantiene la relación entre el encabezado y los artículos vendidos. Juntos, Venta y DetalleVenta forman el núcleo del módulo de facturación de Tienda MiCholo.
Propiedades de Venta
Clave primaria de la entidad. Generada automáticamente por la base de datos mediante
DatabaseGeneratedOption.Identity. No debe asignarse manualmente.Fecha y hora exacta en que se registró la venta. Se asigna en el controlador al momento de confirmar la transacción.
Nombre del cliente o razón social del comprador. Longitud máxima de 100 caracteres. Si el usuario no ingresa un nombre en la interfaz, el controlador asigna el valor predeterminado
"Público en general" antes de guardar.Para comprobantes tipo
FACTURA, este campo debe contener la razón social de la empresa, no el nombre de una persona natural.Tipo de comprobante de pago emitido. Valor de la enumeración
TipoComprobante (BOLETA o FACTURA). Almacenado en la base de datos como cadena de texto gracias a la conversión configurada en AppDbContext:Monto total de la venta, calculado como la suma de
Cantidad × PrecioUnitario de todos los DetalleVenta asociados. Almacenado con precisión decimal(18,2).RUC (Registro Único de Contribuyente) del cliente. Longitud máxima de 11 caracteres. Campo nullable — solo se requiere cuando
TipoComprobante == FACTURA. Cuando se proporciona, debe contener exactamente 11 dígitos numéricos, validado en el controlador antes de guardar.Número de celular de contacto del cliente. Longitud máxima de 9 caracteres. Campo nullable — solo se requiere cuando
TipoComprobante == FACTURA. Debe tener exactamente 9 dígitos y comenzar con el dígito 9, siguiendo el formato de celular peruano.Estado actual del comprobante. Valor de la enumeración Una venta anulada no puede reactivarse; la operación de anulación restaura el stock de todos los productos incluidos en sus detalles.
EstadoVenta. Valor predeterminado: EstadoVenta.Activa. Almacenado como cadena de texto en la base de datos:Nombre de usuario (username de ASP.NET Core Identity) del empleado que anuló la venta. Permanece
null mientras la venta esté en estado Activa. Se asigna automáticamente en el controlador al ejecutar la operación de anulación.Enumeración EstadoVenta
La enumeraciónEstadoVenta (espacio de nombres TiendaMiCholo.Models.Enums) define los estados posibles del ciclo de vida de una venta. Se almacena como texto en la columna correspondiente de la base de datos.
| Valor | Descripción |
|---|---|
Activa | Venta válida y activa. El stock fue descontado correctamente al momento de la transacción. |
Anulada | Venta anulada por un usuario autorizado. El stock de todos los productos involucrados fue restaurado automáticamente. |
Enumeración TipoComprobante
La enumeraciónTipoComprobante (espacio de nombres TiendaMiCholo.Models.Enums) define los dos tipos de documentos de pago que puede emitir la tienda, en concordancia con la normativa tributaria peruana de SUNAT.
| Valor | Descripción | Campos adicionales requeridos |
|---|---|---|
BOLETA | Comprobante para consumidor final. No requiere identificación tributaria del comprador. | Solo Cliente (nombre del consumidor; se acepta "Público en general" si se deja en blanco). |
FACTURA | Comprobante para empresas o personas con negocio. Habilita la deducción de IGV. | Cliente (razón social de la empresa), Ruc (exactamente 11 dígitos numéricos), Celular (9 dígitos, debe comenzar con 9). |
Modelo VentaItem
VentaItem es un modelo transiente del espacio de nombres TiendaMiCholo.Models, utilizado exclusivamente durante el proceso de registro de una nueva venta en la sesión del usuario. Actúa como el carrito de compras temporal: acumula los productos seleccionados antes de que la venta sea confirmada y persistida como Venta + DetalleVenta.
VentaItem no tiene tabla propia en la base de datos. El AppDbContext no expone un DbSet<VentaItem>. Los datos de este modelo se almacenan en la sesión HTTP durante el flujo de creación de una venta y se descartan una vez que la transacción es confirmada o cancelada.Identificador temporal del ítem dentro del carrito de la sesión actual. Generado mediante la anotación
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] aunque el modelo no sea persistido directamente.Número de unidades del producto que el vendedor desea incluir en la venta.
Nombre del producto copiado desde
Producto.Nombre en el momento de agregarlo al carrito. Longitud máxima de 100 caracteres.Precio unitario copiado desde
Producto.PrecioVenta en el momento de agregarlo al carrito. Se utiliza para calcular el total preliminar que se muestra al vendedor antes de confirmar.