Datos para el dashboard: modelos, factories y un seeder con 13 meses de pedidos
Hola, bienvenido. Un dashboard de ventas necesita pedidos, y para que los gráficos tengan forma y la comparación con el periodo anterior dé algo distinto de cero, necesita muchos y repartidos en el tiempo. En esta lección vamos a crear los 3 modelos de la tienda, Customer, Product y Order, con 2 enums para el estado y el canal de venta, sus factories y un seeder que genera 13 meses de pedidos con temporada alta y crecimiento mes a mes. Vamos a ir por faena y nos pararemos solo en lo que necesiten las métricas.
El modelo de datos de la tienda
Partimos de dashboard-pdf tal como lo dejamos en la lección anterior, con Filament instalado y composer qa en verde. Sobre él vamos a crear 3 tablas:
| Tabla | Columnas | Qué usa de ella el dashboard |
|---|---|---|
customers |
name, email único y created_at |
Los clientes nuevos de cada periodo |
products |
name y price |
Los productos más vendidos |
orders |
customer_id, product_id, quantity, status, channel, total y placed_at |
Ingresos, pedidos, ticket medio y los 3 gráficos |
Un pedido lleva un solo producto, a propósito. En una tienda real habría una tabla de líneas de pedido, pero al dashboard no le aporta nada y nos ahorra un modelo, así que con 3 nos basta. Tampoco vamos a crear recursos de Filament para ellos: el dashboard solo lee estos datos.
Fíjate en placed_at. La fecha del pedido es un dato del negocio y va en su propia columna, separada de created_at, que es el momento en que se insertó la fila. El seeder inserta 13 meses de pedidos de una sola vez, así que con created_at todos tendrían la misma fecha, la del momento en que lo lanzas. En customers hacemos lo contrario: la fecha de alta de un cliente es su created_at, y es el seeder el que la fija, día a día, para repartir los clientes nuevos por todo el periodo.
¿Y por qué 13 meses? Porque 13 meses seguidos incluyen siempre un noviembre y un diciembre, que el seeder trata como temporada alta, y porque así cualquier periodo del filtro, también el trimestre, tiene su periodo anterior lleno de pedidos con los que compararse.
- 02Clientes
- 03Estados y canales: 2 enums
- 04Productos
- 05Pedidos
- 06Un seeder con 13 meses de pedidos
- 07Migrar, lanzar el seeder y comprobar