Ventas
Endpoints para crear y gestionar ventas a crédito. Al crear una venta, el sistema genera automáticamente el enganche y los pagos quincenales correspondientes.
Al crear una venta, el sistema auto-genera 1 pago de enganche + N pagos quincenales (uno cada 15 días). No es necesario crear los pagos manualmente.
Listar ventas
Devuelve la lista de ventas con la información del cliente y el saldo pendiente.
Response
[
{
"id": 1,
"cliente_id": 1,
"cliente": {
"id": 1,
"nombre": "Juan Pérez"
},
"tipo": "lentes",
"estado": "activa",
"monto_total": 5000.00,
"enganche": 1000.00,
"num_quincenas": 8,
"saldo_pendiente": 3000.00,
"created_at": "2025-02-15T14:00:00Z"
}
]
Crear venta
Crea una nueva venta a crédito y genera automáticamente los pagos asociados.
- Name
cliente_id- Type
- number
- Description
ID del cliente que realiza la compra.
- Name
tipo- Type
- string
- Description
Tipo de producto: lentes, armazon, lentes_contacto o accesorio.
- Name
monto_total- Type
- number
- Description
Monto total de la venta en MXN.
- Name
enganche- Type
- number
- Description
Monto del enganche (pago inicial).
- Name
num_quincenas- Type
- number
- Description
Número de pagos quincenales para liquidar el saldo restante.
Request body
{
"cliente_id": 1,
"tipo": "lentes",
"monto_total": 5000.00,
"enganche": 1000.00,
"num_quincenas": 8
}
Response (201)
{
"id": 1,
"cliente_id": 1,
"tipo": "lentes",
"estado": "activa",
"monto_total": 5000.00,
"enganche": 1000.00,
"num_quincenas": 8,
"saldo_pendiente": 4000.00,
"pagos": [
{
"id": 1,
"tipo": "enganche",
"monto": 1000.00,
"estado": "pendiente",
"fecha_esperada": "2025-02-15"
},
{
"id": 2,
"tipo": "quincenal",
"monto": 500.00,
"estado": "pendiente",
"fecha_esperada": "2025-03-01"
}
],
"created_at": "2025-02-15T14:00:00Z"
}
Obtener venta
Devuelve los detalles completos de una venta, incluyendo todos sus pagos asociados y la información del cliente.
Response
{
"id": 1,
"cliente_id": 1,
"cliente": {
"id": 1,
"nombre": "Juan Pérez",
"email": "juan@email.com"
},
"tipo": "lentes",
"estado": "activa",
"monto_total": 5000.00,
"enganche": 1000.00,
"num_quincenas": 8,
"saldo_pendiente": 3000.00,
"pagos": [
{
"id": 1,
"tipo": "enganche",
"monto": 1000.00,
"estado": "pagado",
"metodo_pago": "efectivo",
"fecha_esperada": "2025-02-15",
"fecha_pago": "2025-02-15"
},
{
"id": 2,
"tipo": "quincenal",
"monto": 500.00,
"estado": "pagado",
"metodo_pago": "transferencia",
"fecha_esperada": "2025-03-01",
"fecha_pago": "2025-03-01"
},
{
"id": 3,
"tipo": "quincenal",
"monto": 500.00,
"estado": "pendiente",
"fecha_esperada": "2025-03-15"
}
],
"created_at": "2025-02-15T14:00:00Z"
}
Actualizar venta
Actualiza los datos de una venta existente. Solo se pueden modificar ventas con estado activa.
- Name
tipo- Type
- string
- Description
Tipo de producto.
Request body
{
"tipo": "armazon"
}
Response
{
"id": 1,
"cliente_id": 1,
"tipo": "armazon",
"estado": "activa",
"monto_total": 5000.00,
"enganche": 1000.00,
"num_quincenas": 8,
"saldo_pendiente": 3000.00,
"created_at": "2025-02-15T14:00:00Z"
}
Cancelar venta
Cancela una venta. Cambia el estado de la venta a cancelada y todos los pagos pendientes se cancelan automáticamente.
Al cancelar una venta, todos los pagos con estado pendiente cambian automáticamente a cancelado. Los pagos ya registrados como pagado no se modifican.
Request
curl -X DELETE \
-H "Authorization: Bearer TOKEN" \
https://api.mundodelentes.com/ventas/1
Response
{
"id": 1,
"estado": "cancelada",
"pagos_cancelados": 6
}
Estados de venta
| Estado | Descripción |
|---|---|
activa | Venta en curso con pagos pendientes |
completada | Todos los pagos han sido liquidados |
cancelada | Venta cancelada manualmente |
vencida | Tiene pagos vencidos sin liquidar |
Tipos de venta
| Tipo | Descripción |
|---|---|
lentes | Lentes graduados |
armazon | Armazón sin lentes |
lentes_contacto | Lentes de contacto |
accesorio | Accesorios ópticos |