diff --git a/netforce_clinic/layouts/clinic_staff_form.xml b/netforce_clinic/layouts/clinic_staff_form.xml index 61b389b..f233ece 100644 --- a/netforce_clinic/layouts/clinic_staff_form.xml +++ b/netforce_clinic/layouts/clinic_staff_form.xml @@ -8,11 +8,10 @@ - - - + + @@ -46,6 +45,9 @@ + + + diff --git a/netforce_clinic/models/make_apt.py b/netforce_clinic/models/make_apt.py index b2d150a..4c83ed6 100644 --- a/netforce_clinic/models/make_apt.py +++ b/netforce_clinic/models/make_apt.py @@ -146,6 +146,8 @@ class MakeAPT(Model): for line in obj.lines: patient=line.patient_id + if not patient: + continue dpt=line.department_id or patient.department_id days=[] if line.mon_cycle_id: @@ -176,6 +178,15 @@ class MakeAPT(Model): cycle=line.sun_cycle_id days.append([7,cycle,dpt]) + # remove the rest + dom=[] + dom.append(['visit_date','>=', obj.date_from]) + dom.append(['visit_date','<=', (datetime.strptime(obj.date_to,FMT_DATE)+timedelta(days=14)).strftime(FMT_DATE)]) + dom.append(['patient_id', '=', patient.id]) + dom.append(['state','=','pending']) + vids=visit_obj.search(dom) + visit_obj.delete(vids) + ntoday=1 day_total=(date_to-date_from).days+ntoday for weekday, cycle, department in days: @@ -207,19 +218,17 @@ class MakeAPT(Model): 'visit_date': visit_date, 'state': 'pending', } - visit_vals.append(vals) - count+=7 - dom=[] dom.append(['time_start','>=','%s %s'%(tmp.strftime(FMT_DATE)[0:10],' 00:00:00')]) dom.append(['time_stop','<=','%s %s'%(tmp.strftime(FMT_DATE)[0:10],' 23:59:59')]) dom.append(['patient_id', '=', patient.id]) dom.append(['cycle_id', '=', cycle.id]) - dom.append(['state','=','pending']) + dom.append(['state','in',['confirmed']]) vids=visit_obj.search(dom) - visit_obj.delete(vids) + if not vids: + visit_vals.append(vals) + count+=7 start_date=tmp - user_id=get_active_user() staff_ids=get_model("clinic.staff").search([['type','=','type'],['user_id','=',user_id]]) confirm_id=None diff --git a/netforce_clinic/models/patient.py b/netforce_clinic/models/patient.py index fbd66d5..aca8c7c 100644 --- a/netforce_clinic/models/patient.py +++ b/netforce_clinic/models/patient.py @@ -68,7 +68,7 @@ class Patient(Model): "weight": fields.Float("Weight (kg.)"), "height": fields.Float("Height (cm.)"), "card_type": fields.Selection([("identification","Identification"),("passport","Passport")],"Card Type"), - 'card_no' : fields.Char("ID Card"), + 'card_no' : fields.Char("Card ID"), 'card_exp' : fields.Date("Card Exp."), "app_no": fields.Char("Application No."), "salary": fields.Selection([["20000","5,001-20,000"],["50000","20,001-50,000"],["100000","50,001-100,000"],["100001","100,000+"]], "Salary"), @@ -213,6 +213,7 @@ class Patient(Model): if 'active' in vals.keys(): if not vals['active']: vals['resign_date']=time.strftime("%Y-%m-%d") + vals['rm_remain_visit']=True for obj in self.browse(ids): if 'doctor_id' in vals.keys(): @@ -221,8 +222,6 @@ class Patient(Model): 'doctor_id': vals['doctor_id'], }) print("update doctor %s to patient %s"%(vals['doctor_id'], obj.name)) - #if not obj.addresses: - #raise Exception("Address not found - %s!"%obj.name) partner_id=obj.partner_id if not partner_id: for partner in get_model("partner").search_browse([['name', '=', obj.name]]): @@ -237,7 +236,6 @@ class Patient(Model): 'is_patient': True, }) vals['partner_id']=partner_id - if not isinstance(partner_id,int): partner_id=partner_id.id if obj.addresses: @@ -256,8 +254,8 @@ class Patient(Model): }) del vals['addresses'] print("create address for %s"%obj.name, ' ', addr_vals) - if obj.rm_remain_visit: - visit_ids=get_model('clinic.visit').search([['patient_id','=',obj.id],['state','=','draft']]) + if obj.rm_remain_visit or vals.get('rm_remain_visit'): + visit_ids=get_model('clinic.visit').search([['patient_id','=',obj.id],['state','in',('draft','pending')]]) get_model('clinic.visit').delete(visit_ids) print('remove visit auto %s'%visit_ids) self.function_store(ids)