conv_bal
Test server 2014-10-02 18:50:11 +07:00
parent 13d03040a4
commit 49aa5d555d
2 changed files with 59 additions and 8 deletions

View File

@ -6,7 +6,7 @@
</button>
</head>
<field name="number"/>
<field name="type"/>
<field name="type" onchange="onchange_type"/>
<field name="name"/>
<field name="reg_date"/>
<field name="job"/>

View File

@ -3,6 +3,14 @@ import time
from netforce.model import Model, fields, get_model
from netforce.access import get_active_company, get_active_user, set_active_user
PATIENT_TYPE={
"mg":"Medical Government",
"sc":"Social Security",
"nhso":"NHSO (30฿)",
"personal": "Personal",
"others": "Others",
}
class Patient(Model):
_name="clinic.patient"
_string="Patient"
@ -21,7 +29,7 @@ class Patient(Model):
return res # -> {1: 30, 2: 45,.....}
_fields={
"type": fields.Selection([("mg","Medical Govement"),("sc","Social Security"),("nhso","NHSO (30฿)"),("personal","Personal"),("others","Others")],"Patient Type",required=False),
"type": fields.Selection([("mg","Medical Government"),("sc","Social Security"),("nhso","NHSO (30฿)"),("personal","Personal"),("others","Others")],"Patient Type",required=True),
"number": fields.Char("Patient No.",required=True,search=True),
"name": fields.Char("Name",required=True,search=True),
"reg_date": fields.Date("Register Date",required=False,search=True),
@ -94,22 +102,65 @@ class Patient(Model):
obj=self.browse(ids)[0]
obj.write({"state":"voided"})
def get_partner_id(self,patient_type,data):
partner_obj=get_model("partner")
categ_name=PATIENT_TYPE.get(patient_type)
categ_ids=get_model("partner.categ").search([['name','=',categ_name]])
if not categ_ids:
raise Exception("Category: %s not found"%categ_name)
partner_id=None
if patient_type in ("mg","sc","nhso"):
partner_obj=get_model("partner")
for partner in partner_obj.search_browse([]):
if partner.categ_id.id in categ_ids:
partner_id=partner.id
print("Found partner ", partner.name, " ", partner.id)
break
if not partner_id:
name=data.get("name","")
partner_ids=partner_obj.search([['name','=',name]])
if not partner_ids:
partner_id=partner_obj.create({
'name': name,
'last_name': name,
'type': 'person'
})
print("create new partner ", name)
else:
partner_id=partner_ids[0]
return partner_id
def onchange_type(self,context={}):
data=context['data']
patient_type=data['type']
partner_id=None
if patient_type:
partner_id=self.get_partner_id(patient_type,data)
data['partner_id']=partner_id
return data
def create(self,vals,**kw):
obj_id=super(Patient,self).create(vals,**kw)
obj=self.browse(obj_id)
partner_id=get_model("partner").create({
'name': obj.name,
'last_name': obj.name,
'type': 'person'
})
partner_id=self.get_partner_id(patient_type=obj.type,data={'name': obj.name})
obj.write({
'partner_id': partner_id,
})
return obj_id
def delete(self,ids,context={}):
partner_ids=[obj.partner_id.id for obj in self.browse(ids)]
partner_ids=[]
for obj in self.browse(ids):
if obj.type not in ("mg","nhso","sc"):
partner_ids.append(obj.partner_id.id)
get_model("partner").delete(partner_ids)
super().delete(ids)
def write(self,ids,vals,**kw):
partner_id=vals.get('partner_id')
if not partner_id:
obj=self.browse(ids[0])
vals['partner_id']=self.get_partner_id(patient_type=obj.type,data={'name': obj.name})
super().write(ids,vals,**kw)
Patient.register()