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:
@@ -1,6 +1,7 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
from odoo import models, fields, api
|
||||
from odoo import models, fields, api, _
|
||||
from odoo.exceptions import ValidationError
|
||||
|
||||
|
||||
class ResPartner(models.Model):
|
||||
@@ -183,6 +184,21 @@ class ResPartner(models.Model):
|
||||
vals['patient_id'] = self.env['ir.sequence'].next_by_code('skeen.patient') or 'PAT-001'
|
||||
return super(ResPartner, self).create(vals_list)
|
||||
|
||||
@api.constrains('primary_doctor_id')
|
||||
def _check_primary_doctor_activo(self):
|
||||
"""Un médico dado de baja no admite pacientes nuevos.
|
||||
|
||||
Solo corre cuando cambia la asignación, así que los pacientes que ya
|
||||
estaban ligados a ese médico conservan su historial.
|
||||
"""
|
||||
for partner in self:
|
||||
if partner.primary_doctor_id and not partner.primary_doctor_id.active:
|
||||
raise ValidationError(
|
||||
'%s está dado de baja y no se le pueden asignar pacientes. '
|
||||
'Reactívalo en Médicos o elige otro especialista.'
|
||||
% partner.primary_doctor_id.name
|
||||
)
|
||||
|
||||
def action_view_appointments(self):
|
||||
self.ensure_one()
|
||||
return {
|
||||
|
||||
Reference in New Issue
Block a user