Punto 13: alta/baja de médicos desde el módulo Médicos
- Columna 'Estado' con switch Activo/Baja (confirmación previa) y checkbox 'Mostrar dados de baja' para poder reactivar. - GET /doctors solo devuelve activos; include_inactive=1 para la pantalla de Médicos. Cada médico expone su campo 'active'. - Reglas en modelo: un empleado dado de baja no admite citas nuevas (skeen.cita), ni asignación de pacientes (res.partner.primary_doctor_id), ni líneas de venta (skeen.venta.line.prescribed_by_id). El historial existente no se toca: los constraints solo corren cuando cambia la asignación. - ValidationError se responde 400 con mensaje legible en pacientes y ventas. - fix: badges de estado de cita en agenda y dashboard usan la etiqueta de la clínica en lugar del valor técnico.
This commit is contained in:
@@ -360,6 +360,17 @@ class SkeenVentaLine(models.Model):
|
||||
if bool(line.service_id) == bool(line.item_id):
|
||||
raise ValidationError(_('La línea debe tener un servicio O un artículo, no ambos.'))
|
||||
|
||||
@api.constrains('prescribed_by_id')
|
||||
def _check_prescribed_by_activo(self):
|
||||
"""Las ventas no se le asignan a un médico dado de baja (ni a él ni a
|
||||
sus comisiones). Solo corre al cambiar la asignación."""
|
||||
for line in self:
|
||||
if line.prescribed_by_id and not line.prescribed_by_id.active:
|
||||
raise ValidationError(_(
|
||||
'%(nombre)s está dado de baja y no se le pueden asignar '
|
||||
'ventas.'
|
||||
) % {'nombre': line.prescribed_by_id.name})
|
||||
|
||||
@api.depends('quantity', 'price_unit')
|
||||
def _compute_subtotal(self):
|
||||
for line in self:
|
||||
|
||||
Reference in New Issue
Block a user