\"feat(#4): A¤ade l¢gica de autogeneraci¢n y campo de origen\"

This commit is contained in:
Luis Ernesto Portillo Zaldivar 2025-07-13 21:16:10 -06:00
parent aef6e49c50
commit da27d0bc83
5 changed files with 32 additions and 3 deletions

View File

@ -20,6 +20,7 @@
'data': [
'security/lims_security.xml',
'security/ir.model.access.csv',
'data/ir_sequence.xml',
'views/menus.xml',
'views/partner_views.xml',
],

View File

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data noupdate="1">
<!-- Secuencia para el Identificador de Paciente -->
<record id="seq_patient_identifier" model="ir.sequence">
<field name="name">Patient Identifier Sequence</field>
<field name="code">res.partner.patient_identifier</field>
<field name="prefix">P</field>
<field name="padding">6</field>
<field name="company_id" eval="False"/>
</record>
</data>
</odoo>

View File

@ -6,7 +6,8 @@
<record id="demo_patient_1" model="res.partner">
<field name="name">Ana Torres</field>
<field name="is_patient" eval="True"/>
<field name="patient_identifier">P0001</field>
<field name="patient_identifier">P-A87B01</field>
<field name="origin">Carga Inicial</field>
<field name="birthdate_date">1985-05-15</field>
<field name="gender">female</field>
<field name="phone">+1-202-555-0174</field>
@ -16,7 +17,8 @@
<record id="demo_patient_2" model="res.partner">
<field name="name">Carlos Ruiz</field>
<field name="is_patient" eval="True"/>
<field name="patient_identifier">P0002</field>
<field name="patient_identifier">P-C45D02</field>
<field name="origin">Carga Inicial</field>
<field name="birthdate_date">1992-11-20</field>
<field name="gender">male</field>
<field name="phone">+1-202-555-0192</field>

View File

@ -6,6 +6,11 @@ class ResPartner(models.Model):
is_patient = fields.Boolean(string="Es Paciente")
patient_identifier = fields.Char(string="Identificador de Paciente", copy=False)
origin = fields.Char(
string="Origen",
default='Manual',
help="Este campo indica el origen del registro del paciente (ej. Manual, Carga Inicial)."
)
birthdate_date = fields.Date(string="Fecha de Nacimiento")
gender = fields.Selection([
('male', 'Masculino'),
@ -20,3 +25,10 @@ class ResPartner(models.Model):
('patient_identifier_unique', 'unique(patient_identifier)', 'El identificador del paciente debe ser único.'),
('doctor_license_unique', 'unique(doctor_license)', 'La licencia médica debe ser única.')
]
@api.model_create_multi
def create(self, vals_list):
for vals in vals_list:
if vals.get('is_patient') and not vals.get('patient_identifier'):
vals['patient_identifier'] = self.env['ir.sequence'].next_by_code('res.partner.patient_identifier')
return super(ResPartner, self).create(vals_list)

View File

@ -12,7 +12,8 @@
<group>
<group>
<field name="is_patient"/>
<field name="patient_identifier" invisible="not is_patient"/>
<field name="patient_identifier" invisible="not is_patient" readonly="patient_identifier"/>
<field name="origin" readonly="id" invisible="not is_patient"/>
<field name="birthdate_date" invisible="not is_patient"/>
<field name="gender" invisible="not is_patient"/>
</group>