Médicos: badges de ventas 30d al estilo legacy
- Píldora verde 'N ventas' + gris 'N recomendaciones' y píldoras índigo apiladas (usd / m.n. / tarjeta m.n.) en una sola columna - recomendaciones_30d: pacientes captados con 'recomendado por'
This commit is contained in:
@@ -1657,6 +1657,16 @@ class SkeenFrontendController(http.Controller):
|
||||
|
||||
# ---- Ventas de los últimos 30 días por médico ----
|
||||
since = (date.today() - timedelta(days=30)).strftime('%Y-%m-%d')
|
||||
|
||||
# Recomendaciones: pacientes captados en 30d asignados al médico
|
||||
# con "recomendado por" capturado (misma métrica visible del legacy)
|
||||
recomendaciones = {}
|
||||
for g in request.env['res.partner'].sudo().read_group(
|
||||
[('is_patient', '=', True), ('primary_doctor_id', 'in', doctors.ids),
|
||||
('referred_by', 'not in', [False, '']), ('create_date', '>=', since)],
|
||||
[], ['primary_doctor_id']):
|
||||
recomendaciones[g['primary_doctor_id'][0]] = g['primary_doctor_id_count']
|
||||
|
||||
stats = {} # doctor_id -> {'ventas': set, 'total': float}
|
||||
card_by_venta = {}
|
||||
ventas = request.env['skeen.venta'].sudo().search([
|
||||
@@ -1700,6 +1710,7 @@ class SkeenFrontendController(http.Controller):
|
||||
'work_email': d.work_email or '',
|
||||
'commission_pct': d.commission_pct or 0.0,
|
||||
'patient_count': counts.get(d.id, 0),
|
||||
'recomendaciones_30d': recomendaciones.get(d.id, 0),
|
||||
'ventas_30d': len(stats.get(d.id, {}).get('ventas', set())),
|
||||
'total_30d': round(stats.get(d.id, {}).get('total', 0.0), 2),
|
||||
'total_30d_usd': round(stats.get(d.id, {}).get('total', 0.0) / rate, 2) if rate else None,
|
||||
|
||||
Reference in New Issue
Block a user