improve
parent
34f4f66312
commit
f8e8f0f700
|
@ -43,7 +43,7 @@
|
||||||
<field name="patient_id" domain='[["type_id","=",type_id]]'/>
|
<field name="patient_id" domain='[["type_id","=",type_id]]'/>
|
||||||
<field name="partner_id" domain='[["is_patient","=","true"]]'/>
|
<field name="partner_id" domain='[["is_patient","=","true"]]'/>
|
||||||
<field name="hn"/>
|
<field name="hn"/>
|
||||||
<field name="card_no"/>
|
<!--<field name="card_no"/>-->
|
||||||
</list>
|
</list>
|
||||||
</field>
|
</field>
|
||||||
</tab>
|
</tab>
|
||||||
|
|
|
@ -153,6 +153,8 @@ class MatchingPayment(Model):
|
||||||
contact=patient_type.contact_id
|
contact=patient_type.contact_id
|
||||||
if not contact:
|
if not contact:
|
||||||
raise Exception("contact not found")
|
raise Exception("contact not found")
|
||||||
|
st=get_model("clinic.setting").browse(1)
|
||||||
|
patient_hn=st.get_patient_hn()
|
||||||
matches1={}
|
matches1={}
|
||||||
matches2={}
|
matches2={}
|
||||||
matches3={}
|
matches3={}
|
||||||
|
@ -166,14 +168,18 @@ class MatchingPayment(Model):
|
||||||
print("len(invoices)", len(invoices))
|
print("len(invoices)", len(invoices))
|
||||||
for invoice in invoices:
|
for invoice in invoices:
|
||||||
pname,hn,card_no='', '', ''
|
pname,hn,card_no='', '', ''
|
||||||
|
pname2=pname
|
||||||
if invoice.related_id:
|
if invoice.related_id:
|
||||||
hdcase=invoice.related_id
|
hdcase=invoice.related_id
|
||||||
patient=hdcase.patient_id
|
patient=hdcase.patient_id
|
||||||
pname=patient.name_check or ""
|
#pname=patient.name_check or "" #XXX
|
||||||
|
pname='%s%s'%(patient.first_name or "",patient.last_name or "")
|
||||||
|
pname2='%s %s'%(patient.first_name or "",patient.last_name or "")
|
||||||
card_no=patient.card_no or ""
|
card_no=patient.card_no or ""
|
||||||
hn=patient.hn_no
|
hn=patient.hn_no
|
||||||
elif invoice.ref:
|
elif invoice.ref:
|
||||||
pname=invoice.ref or ''
|
pname=invoice.ref or ''
|
||||||
|
pname2=pname
|
||||||
pname=pname.replace(" ","") # remove space
|
pname=pname.replace(" ","") # remove space
|
||||||
for pt in get_model("clinic.patient").search_browse([['name_check','=',pname]]):
|
for pt in get_model("clinic.patient").search_browse([['name_check','=',pname]]):
|
||||||
hn=pt.hn_no or ""
|
hn=pt.hn_no or ""
|
||||||
|
@ -201,8 +207,9 @@ class MatchingPayment(Model):
|
||||||
'fee': fee,
|
'fee': fee,
|
||||||
'epo': epo,
|
'epo': epo,
|
||||||
'srv': srv,
|
'srv': srv,
|
||||||
|
'name': pname2,
|
||||||
}
|
}
|
||||||
due_amount+=fee+epo+srv
|
due_amount+=fee+epo+srv #XXX
|
||||||
date=invoice.date
|
date=invoice.date
|
||||||
req_vals=[date,due_amount]
|
req_vals=[date,due_amount]
|
||||||
key1=':'.join([str(v) for v in [hn]+req_vals])
|
key1=':'.join([str(v) for v in [hn]+req_vals])
|
||||||
|
@ -282,7 +289,18 @@ class MatchingPayment(Model):
|
||||||
'state': 'match',
|
'state': 'match',
|
||||||
})
|
})
|
||||||
else:
|
else:
|
||||||
pass
|
# from ratchawat account settting
|
||||||
|
phn=patient_hn.get(hn)
|
||||||
|
if phn:
|
||||||
|
key1=':'.join([str(v) for v in [phn['hn']]+req_vals])
|
||||||
|
ss="not found"
|
||||||
|
if matches1.get(key1):
|
||||||
|
ss="found"
|
||||||
|
record.update({
|
||||||
|
'invoice_id': matches1[key1]['invoice_id'],
|
||||||
|
'state': 'match',
|
||||||
|
})
|
||||||
|
print(ss, ' account mathing ', key1)
|
||||||
## unmatch
|
## unmatch
|
||||||
records.append(record)
|
records.append(record)
|
||||||
elif obj.pcode=='UC':
|
elif obj.pcode=='UC':
|
||||||
|
@ -309,8 +327,9 @@ class MatchingPayment(Model):
|
||||||
hn=line['hn']
|
hn=line['hn']
|
||||||
hn=hn.replace(" ", "")
|
hn=hn.replace(" ", "")
|
||||||
key_uc=''
|
key_uc=''
|
||||||
|
req_vals=[date,fee]
|
||||||
if date and time:
|
if date and time:
|
||||||
key_uc='%s:%s:%s'%(line['hn'],date,fee,)
|
key_uc=':'.join([str(v) for v in [line['hn']]+req_vals])
|
||||||
pname=''
|
pname=''
|
||||||
pid=''
|
pid=''
|
||||||
for pt in get_model("clinic.patient").search_browse([['hn_no','=',hn]]):
|
for pt in get_model("clinic.patient").search_browse([['hn_no','=',hn]]):
|
||||||
|
@ -333,8 +352,23 @@ class MatchingPayment(Model):
|
||||||
'state': 'match',
|
'state': 'match',
|
||||||
})
|
})
|
||||||
else:
|
else:
|
||||||
pass
|
|
||||||
#print("not found")
|
#print("not found")
|
||||||
|
hn=hn.replace("-", "")
|
||||||
|
hn=hn.replace("/", "")
|
||||||
|
phn=patient_hn.get(hn)
|
||||||
|
if phn:
|
||||||
|
# match with name
|
||||||
|
key3=':'.join([str(v) for v in [phn['name']]+req_vals])
|
||||||
|
ss="not found"
|
||||||
|
mvals=matches3.get(key3)
|
||||||
|
if mvals:
|
||||||
|
ss="found"
|
||||||
|
record.update({
|
||||||
|
'invoice_id': mvals['invoice_id'],
|
||||||
|
'name': mvals['name'],
|
||||||
|
'state': 'match',
|
||||||
|
})
|
||||||
|
print(ss, ' account mathing ', key_uc)
|
||||||
records.append(record)
|
records.append(record)
|
||||||
if obj.hcode_id and not records:
|
if obj.hcode_id and not records:
|
||||||
raise Exception("Nothing to match! for %s"%(obj.hcode_id.name or ""))
|
raise Exception("Nothing to match! for %s"%(obj.hcode_id.name or ""))
|
||||||
|
|
|
@ -205,14 +205,15 @@ class Patient(Model):
|
||||||
obj=self.browse(obj_id)
|
obj=self.browse(obj_id)
|
||||||
partner_id=obj.partner_id
|
partner_id=obj.partner_id
|
||||||
if not partner_id:
|
if not partner_id:
|
||||||
for partner in get_model("partner").search_browse([['name', '=', obj.name]]):
|
partner_name='%s %s'%(obj.first_name or "",obj.last_name or "") # XXX
|
||||||
|
for partner in get_model("partner").search_browse([['name', '=', partner_name]]):
|
||||||
if partner.name==obj.name:
|
if partner.name==obj.name:
|
||||||
partner_id=partner.id
|
partner_id=partner.id
|
||||||
break
|
break
|
||||||
if not partner_id:
|
if not partner_id:
|
||||||
partner_id=get_model("partner").create({
|
partner_id=get_model("partner").create({
|
||||||
'name': obj.name,
|
'first_name': obj.first_name or "",
|
||||||
'last_name': obj.name,
|
'last_name': obj.last_name or "",
|
||||||
'type': 'person',
|
'type': 'person',
|
||||||
'is_patient': True,
|
'is_patient': True,
|
||||||
})
|
})
|
||||||
|
@ -299,18 +300,28 @@ class Patient(Model):
|
||||||
# create partner if not found
|
# create partner if not found
|
||||||
partner_id=obj.partner_id
|
partner_id=obj.partner_id
|
||||||
if not partner_id:
|
if not partner_id:
|
||||||
for partner in get_model("partner").search_browse([['name', '=', obj.name]]):
|
partner_name='%s %s'%(obj.first_name or "", obj.last_name or "") # XXX
|
||||||
|
for partner in get_model("partner").search_browse([['name', '=', partner_name]]):
|
||||||
if partner.name==obj.name:
|
if partner.name==obj.name:
|
||||||
partner_id=partner.id
|
partner_id=partner.id
|
||||||
break
|
break
|
||||||
if not partner_id:
|
if not partner_id:
|
||||||
partner_id=get_model("partner").create({
|
partner_id=get_model("partner").create({
|
||||||
'name': obj.name,
|
'first_name': obj.first_name or "",
|
||||||
'last_name': obj.name,
|
'last_name': obj.last_name or "",
|
||||||
'type': 'person',
|
'type': 'person',
|
||||||
'is_patient': True,
|
'is_patient': True,
|
||||||
})
|
})
|
||||||
vals['partner_id']=partner_id
|
vals['partner_id']=partner_id
|
||||||
|
|
||||||
|
#add to account setting
|
||||||
|
get_model("clinic.setting.account.patient").create({
|
||||||
|
'setting_id': 1,
|
||||||
|
'type_id': obj.type_id.id,
|
||||||
|
'patient_id': obj.id,
|
||||||
|
'partner_id': partner_id,
|
||||||
|
'hn': obj.hn_no,
|
||||||
|
})
|
||||||
if not isinstance(partner_id,int):
|
if not isinstance(partner_id,int):
|
||||||
partner_id=partner_id.id
|
partner_id=partner_id.id
|
||||||
if obj.addresses:
|
if obj.addresses:
|
||||||
|
@ -341,7 +352,9 @@ class Patient(Model):
|
||||||
for obj in self.browse(ids):
|
for obj in self.browse(ids):
|
||||||
print(obj.name or "")
|
print(obj.name or "")
|
||||||
obj.partner_id.write({
|
obj.partner_id.write({
|
||||||
'last_name': obj.name,
|
'type': 'person',
|
||||||
|
'first_name': obj.first_name or "",
|
||||||
|
'last_name': obj.last_name or "",
|
||||||
})
|
})
|
||||||
|
|
||||||
def name_get(self,ids,context={}):
|
def name_get(self,ids,context={}):
|
||||||
|
|
|
@ -136,19 +136,19 @@ class ClinicSetting(Model):
|
||||||
if user_id !=1:
|
if user_id !=1:
|
||||||
print("Only admin!!")
|
print("Only admin!!")
|
||||||
return
|
return
|
||||||
obj=self.browse(ids)[0]
|
|
||||||
lines=[]
|
|
||||||
for pt in get_model("clinic.patient").search_browse([]):
|
for pt in get_model("clinic.patient").search_browse([]):
|
||||||
lines.append(('create',{
|
pt.partner_id.write({
|
||||||
'patient_id': pt.id,
|
'type': 'person',
|
||||||
'partner_id': pt.partner_id.id,
|
'first_name': pt.first_name or "",
|
||||||
'type_id': pt.type_id.id,
|
'last_name': pt.last_name or "",
|
||||||
'hn': pt.hn_no,
|
})
|
||||||
'card_no': pt.card_no,
|
for st in get_model("clinic.staff").search_browse([]):
|
||||||
}))
|
st.partner_id.write({
|
||||||
obj.write({
|
'type': 'person',
|
||||||
'account_patients': lines,
|
'first_name': st.first_name or "",
|
||||||
})
|
'last_name': st.last_name or "",
|
||||||
|
})
|
||||||
print('Done!')
|
print('Done!')
|
||||||
return
|
return
|
||||||
|
|
||||||
|
@ -809,4 +809,19 @@ class ClinicSetting(Model):
|
||||||
break
|
break
|
||||||
return res
|
return res
|
||||||
|
|
||||||
|
def get_patient_hn(self,ids,context={}):
|
||||||
|
obj=self.browse(ids)[0]
|
||||||
|
res={}
|
||||||
|
for line in obj.account_patients:
|
||||||
|
pt=line.patient_id
|
||||||
|
hn=line.hn
|
||||||
|
if hn not in res.keys():
|
||||||
|
res[hn]={
|
||||||
|
'hn': pt.hn,
|
||||||
|
'pid': pt.id,
|
||||||
|
'card_no': pt.card_no,
|
||||||
|
'name': "%s%s"%(pt.first_name or "", pt.last_name or ""),
|
||||||
|
}
|
||||||
|
return res
|
||||||
|
|
||||||
ClinicSetting.register()
|
ClinicSetting.register()
|
||||||
|
|
|
@ -2,7 +2,7 @@ from netforce.model import Model, fields
|
||||||
|
|
||||||
class SettingAccountPatient(Model):
|
class SettingAccountPatient(Model):
|
||||||
_name="clinic.setting.account.patient"
|
_name="clinic.setting.account.patient"
|
||||||
_string="Setting Account Patient"
|
_string="Account Patient"
|
||||||
|
|
||||||
_fields={
|
_fields={
|
||||||
"setting_id": fields.Many2One("clinic.setting","Setting",required=True,on_delete="cascade"),
|
"setting_id": fields.Many2One("clinic.setting","Setting",required=True,on_delete="cascade"),
|
||||||
|
|
|
@ -256,15 +256,16 @@ class Staff(Model):
|
||||||
vals['name']='%s%s %s'%(title_name,vals['first_name'],vals['last_name'])
|
vals['name']='%s%s %s'%(title_name,vals['first_name'],vals['last_name'])
|
||||||
else:
|
else:
|
||||||
vals['name']='%s %s'%(vals['first_name'],vals['last_name'])
|
vals['name']='%s %s'%(vals['first_name'],vals['last_name'])
|
||||||
|
partner_name='%s %s'%(vals['first_name'],vals['last_name']) #XXX
|
||||||
employee_id=vals.get('employee_id')
|
employee_id=vals.get('employee_id')
|
||||||
name=vals['name']
|
name=vals['name']
|
||||||
emp_id=self.check_emp(name,employee_id)
|
emp_id=self.check_emp(name,employee_id)
|
||||||
if emp_id:
|
if emp_id:
|
||||||
vals['employee_id']=emp_id
|
vals['employee_id']=emp_id
|
||||||
partner_id=get_model("clinic.staff").check_contact(name)
|
partner_id=get_model("clinic.staff").check_contact(partner_name)
|
||||||
address_id=None
|
address_id=None
|
||||||
if not partner_id:
|
if not partner_id:
|
||||||
vals['partner_id'],address_id=self.create_contact(vals['number'],name)
|
vals['partner_id'],address_id=self.create_contact(vals['number'],partner_name)
|
||||||
new_id=super().create(vals,**kw)
|
new_id=super().create(vals,**kw)
|
||||||
self.function_store([new_id])
|
self.function_store([new_id])
|
||||||
for obj in self.browse([new_id]):
|
for obj in self.browse([new_id]):
|
||||||
|
@ -284,10 +285,11 @@ class Staff(Model):
|
||||||
emp_id=self.check_emp(name,obj.employee_id.id)
|
emp_id=self.check_emp(name,obj.employee_id.id)
|
||||||
if emp_id:
|
if emp_id:
|
||||||
vals['employee_id']=emp_id
|
vals['employee_id']=emp_id
|
||||||
partner_id=get_model("clinic.staff").check_contact(name)
|
partner_name='%s %s'%(obj.first_name or "",obj.last_name or "")
|
||||||
|
partner_id=get_model("clinic.staff").check_contact(partner_name)
|
||||||
address_id=None
|
address_id=None
|
||||||
if not partner_id:
|
if not partner_id:
|
||||||
vals['partner_id'],address_id=self.create_contact(name,name) #XXX
|
vals['partner_id'],address_id=self.create_contact(partner_name,partner_name) #XXX
|
||||||
super().write(ids,vals,**kw)
|
super().write(ids,vals,**kw)
|
||||||
self.function_store(ids)
|
self.function_store(ids)
|
||||||
if address_id:
|
if address_id:
|
||||||
|
|
Loading…
Reference in New Issue