multi department
parent
c166295720
commit
8f6230e488
|
@ -3,6 +3,7 @@
|
||||||
<field name="state"/>
|
<field name="state"/>
|
||||||
<button string="Options" dropdown="1">
|
<button string="Options" dropdown="1">
|
||||||
<item string="Load Nurses" method="load_nurse_from_schedule" states='draft'/>
|
<item string="Load Nurses" method="load_nurse_from_schedule" states='draft'/>
|
||||||
|
<item string="Load HDCase" method="update_hdcase" states="draft" />
|
||||||
<item string="View Schedule" method="view_schedule"/>
|
<item string="View Schedule" method="view_schedule"/>
|
||||||
<item string="To Draft" method="to_draft" states="validated" />
|
<item string="To Draft" method="to_draft" states="validated" />
|
||||||
</button>
|
</button>
|
||||||
|
@ -18,7 +19,7 @@
|
||||||
<tab string="Nurses">
|
<tab string="Nurses">
|
||||||
<field name="lines" nolabel="1">
|
<field name="lines" nolabel="1">
|
||||||
<list>
|
<list>
|
||||||
<field name="nurse_id" domain="[['type','=','nurse']]" onchange="onchange_nurse"/>
|
<field name="nurse_id" domain='[["type","=","nurse"]]' onchange="onchange_nurse"/>
|
||||||
<field name="level_id"/>
|
<field name="level_id"/>
|
||||||
</list>
|
</list>
|
||||||
</field>
|
</field>
|
||||||
|
|
|
@ -6,6 +6,7 @@
|
||||||
<field name="branch_id" required="1"/>
|
<field name="branch_id" required="1"/>
|
||||||
<field name="company_id" invisible="1"/>
|
<field name="company_id" invisible="1"/>
|
||||||
<related>
|
<related>
|
||||||
|
<field name="staffs"/>
|
||||||
<field name="patients"/>
|
<field name="patients"/>
|
||||||
</related>
|
</related>
|
||||||
</form>
|
</form>
|
||||||
|
|
|
@ -6,9 +6,9 @@
|
||||||
<field name="number"/>
|
<field name="number"/>
|
||||||
<field name="trt_no"/>
|
<field name="trt_no"/>
|
||||||
<field name="name"/>
|
<field name="name"/>
|
||||||
|
<field name="type_id"/>
|
||||||
<field name="branch_id"/>
|
<field name="branch_id"/>
|
||||||
<field name="department_id"/>
|
<field name="department_id"/>
|
||||||
<field name="doctor_id"/>
|
<field name="doctor_id"/>
|
||||||
<field name="type_id"/>
|
|
||||||
<field name="image" preview='1'/>
|
<field name="image" preview='1'/>
|
||||||
</list>
|
</list>
|
||||||
|
|
|
@ -9,11 +9,11 @@
|
||||||
</top>
|
</top>
|
||||||
<field name="number"/>
|
<field name="number"/>
|
||||||
<field name="name"/>
|
<field name="name"/>
|
||||||
|
<field name="type"/>
|
||||||
<field name="branch_id"/>
|
<field name="branch_id"/>
|
||||||
<field name="department_id"/>
|
<field name="department_id"/>
|
||||||
<field name="level_id"/>
|
<field name="level_id"/>
|
||||||
<field name="categ_id"/>
|
<field name="categ_id"/>
|
||||||
<field name="type"/>
|
|
||||||
<field name="image" preview="1"/>
|
<field name="image" preview="1"/>
|
||||||
<field name="state"/>
|
<field name="state"/>
|
||||||
</list>
|
</list>
|
||||||
|
|
|
@ -17,7 +17,8 @@ class CycleItem(Model):
|
||||||
cycle_name=''
|
cycle_name=''
|
||||||
if cycle:
|
if cycle:
|
||||||
cycle_name=cycle.name
|
cycle_name=cycle.name
|
||||||
name="%s-%s"%(cycle_name,obj.date)
|
dpt=obj.department_id
|
||||||
|
name="%s-%s-%s"%(cycle_name,obj.date,dpt.name)
|
||||||
res[obj.id]={
|
res[obj.id]={
|
||||||
'name': name,
|
'name': name,
|
||||||
'sequence':'%s-%s-%s-%s'%(obj.date,cycle.sequence,obj.branch_id.id,obj.department_id.id),
|
'sequence':'%s-%s-%s-%s'%(obj.date,cycle.sequence,obj.branch_id.id,obj.department_id.id),
|
||||||
|
@ -168,21 +169,23 @@ class CycleItem(Model):
|
||||||
obj=self.browse(ids)[0]
|
obj=self.browse(ids)[0]
|
||||||
#TODO check cycle number & date from schedule
|
#TODO check cycle number & date from schedule
|
||||||
schedules=get_model("clinic.schedule").search_browse([['date','=',obj.date]])
|
schedules=get_model("clinic.schedule").search_browse([['date','=',obj.date]])
|
||||||
nurses=[]
|
lines=[]
|
||||||
for schedule in schedules:
|
for schedule in schedules:
|
||||||
for line in schedule.lines:
|
for line in schedule.lines:
|
||||||
cycle=line.cycle_id
|
cycle=line.cycle_id
|
||||||
if obj.cycle_id.id==cycle.id:
|
if obj.cycle_id.id==cycle.id:
|
||||||
nurse=line.nurse_id
|
nurse=line.nurse_id
|
||||||
level=line.level_id
|
level=line.level_id
|
||||||
nurses.append(('create',{
|
lines.append(('create',{
|
||||||
'nurse_id': nurse.id,
|
'nurse_id': nurse.id,
|
||||||
'level_id': level.id,
|
'level_id': level.id,
|
||||||
}))
|
}))
|
||||||
for nurse in obj.nurses:
|
for line in obj.lines:
|
||||||
nurse.delete()
|
line.delete()
|
||||||
|
if not lines:
|
||||||
|
raise Exception("Nurse not found in schedule %s"%obj.date)
|
||||||
obj.write({
|
obj.write({
|
||||||
'nurses': nurses,
|
'lines': lines,
|
||||||
})
|
})
|
||||||
|
|
||||||
return {
|
return {
|
||||||
|
@ -194,4 +197,35 @@ class CycleItem(Model):
|
||||||
'flash': 'Load nurse from schedule to cycle item successfully',
|
'flash': 'Load nurse from schedule to cycle item successfully',
|
||||||
}
|
}
|
||||||
|
|
||||||
|
def update_hdcase(self,ids,context={}):
|
||||||
|
obj=self.browse(ids)[0]
|
||||||
|
dpt=obj.department_id
|
||||||
|
branch=obj.branch_id
|
||||||
|
cycle=obj.cycle_id
|
||||||
|
company=obj.company_id
|
||||||
|
date=obj.date
|
||||||
|
dom=[
|
||||||
|
['cycle_id','=',cycle.id],
|
||||||
|
['date','=',date],
|
||||||
|
['company_id','=',company.id],
|
||||||
|
['branch_id','=',branch.id],
|
||||||
|
['department_id','=',dpt.id],
|
||||||
|
]
|
||||||
|
for hdcase in get_model("clinic.hd.case").search_browse(dom):
|
||||||
|
hdcase.write({
|
||||||
|
'cycle_item_id': obj.id,
|
||||||
|
})
|
||||||
|
vs=hdcase.visit_id
|
||||||
|
vs.write({
|
||||||
|
'cycle_item_id': obj.id,
|
||||||
|
})
|
||||||
|
return {
|
||||||
|
'next': {
|
||||||
|
'name': 'clinic_cycle_item',
|
||||||
|
'mode': 'form',
|
||||||
|
'active_id': obj.id,
|
||||||
|
},
|
||||||
|
'flash': 'Update HDCase successfully',
|
||||||
|
}
|
||||||
|
|
||||||
CycleItem.register()
|
CycleItem.register()
|
||||||
|
|
|
@ -8,6 +8,7 @@ class CycleItemLine(Model):
|
||||||
'cycle_item_id': fields.Many2One("clinic.cycle.item", "Cycle Item"),
|
'cycle_item_id': fields.Many2One("clinic.cycle.item", "Cycle Item"),
|
||||||
'level_id': fields.Many2One("clinic.staff.level", "Level",),
|
'level_id': fields.Many2One("clinic.staff.level", "Level",),
|
||||||
'nurse_id': fields.Many2One("clinic.staff",'Nurse',domain=[['type','=','nurse']]),
|
'nurse_id': fields.Many2One("clinic.staff",'Nurse',domain=[['type','=','nurse']]),
|
||||||
|
'department_id': fields.Many2One("clinic.department","Department"),
|
||||||
}
|
}
|
||||||
|
|
||||||
CycleItemLine.register()
|
CycleItemLine.register()
|
||||||
|
|
|
@ -14,6 +14,7 @@ class Department(Model):
|
||||||
'branch_id': fields.Many2One("clinic.branch","Branch"),
|
'branch_id': fields.Many2One("clinic.branch","Branch"),
|
||||||
"pick_out_journal_id": fields.Many2One("stock.journal","Stock Journal",required=True),
|
"pick_out_journal_id": fields.Many2One("stock.journal","Stock Journal",required=True),
|
||||||
'patients': fields.One2Many("clinic.patient","department_id","Patients"),
|
'patients': fields.One2Many("clinic.patient","department_id","Patients"),
|
||||||
|
'staffs': fields.One2Many("clinic.staff","department_id","Staffs"),
|
||||||
}
|
}
|
||||||
|
|
||||||
def _get_branch(self,context={}):
|
def _get_branch(self,context={}):
|
||||||
|
@ -26,4 +27,6 @@ class Department(Model):
|
||||||
'branch_id': _get_branch,
|
'branch_id': _get_branch,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_order="name"
|
||||||
|
|
||||||
Department.register()
|
Department.register()
|
||||||
|
|
|
@ -96,10 +96,11 @@ class LaborCost(Model):
|
||||||
levels.update(vals)
|
levels.update(vals)
|
||||||
item=obj.cycle_item_id
|
item=obj.cycle_item_id
|
||||||
|
|
||||||
for ns in item.nurses:
|
for line in item.lines:
|
||||||
level=ns.level_id
|
level=line.level_id
|
||||||
|
nurse=line.nurse_id
|
||||||
if not level:
|
if not level:
|
||||||
raise Exception("Please specify level for %s"%ns.nurse_id.name)
|
raise Exception("Please specify level for %s"%nurse.name)
|
||||||
levels[level.id]['total']+=1
|
levels[level.id]['total']+=1
|
||||||
|
|
||||||
st_levels={}
|
st_levels={}
|
||||||
|
@ -236,9 +237,9 @@ class LaborCost(Model):
|
||||||
item=obj.cycle_item_id
|
item=obj.cycle_item_id
|
||||||
lines=[]
|
lines=[]
|
||||||
# cost's nurses
|
# cost's nurses
|
||||||
for nr in item.nurses:
|
for line in item.lines:
|
||||||
nurse=nr.nurse_id
|
nurse=line.nurse_id
|
||||||
level=nr.level_id
|
level=line.level_id
|
||||||
vals=levels.get(level.id)
|
vals=levels.get(level.id)
|
||||||
rate,amt,qty=0.0,0.0,0
|
rate,amt,qty=0.0,0.0,0
|
||||||
level_id=level.id
|
level_id=level.id
|
||||||
|
|
|
@ -7,7 +7,7 @@ class LaborCostFormular(Model):
|
||||||
_name_field="labor_cost_id"
|
_name_field="labor_cost_id"
|
||||||
|
|
||||||
_fields={
|
_fields={
|
||||||
"labor_cost_id": fields.Many2One("clinic.labor.cost","Cycle Item",required=True),
|
"labor_cost_id": fields.Many2One("clinic.labor.cost","Cycle Item",required=True,on_delete="cascade"),
|
||||||
'level_id': fields.Many2One("clinic.staff.level", "Level",domain=[['type','=','nurse']]),
|
'level_id': fields.Many2One("clinic.staff.level", "Level",domain=[['type','=','nurse']]),
|
||||||
'qty': fields.Integer("Qty"),
|
'qty': fields.Integer("Qty"),
|
||||||
'var_a': fields.Float("A"),
|
'var_a': fields.Float("A"),
|
||||||
|
|
|
@ -7,7 +7,7 @@ class LaborCostLine(Model):
|
||||||
_name_field="labor_cost_id"
|
_name_field="labor_cost_id"
|
||||||
|
|
||||||
_fields={
|
_fields={
|
||||||
"labor_cost_id": fields.Many2One("clinic.labor.cost","Cycle Item",required=True),
|
"labor_cost_id": fields.Many2One("clinic.labor.cost","Cycle Item",required=True,on_delete="cascade"),
|
||||||
"type": fields.Selection([('staff','Staff'),("doctor","Doctor"),('nurse','Nurse')],"Type",required=True,search=True),
|
"type": fields.Selection([('staff','Staff'),("doctor","Doctor"),('nurse','Nurse')],"Type",required=True,search=True),
|
||||||
'staff_id': fields.Many2One("clinic.staff", "Staff",search=True),
|
'staff_id': fields.Many2One("clinic.staff", "Staff",search=True),
|
||||||
'level_id': fields.Many2One("clinic.staff.level", "Level",search=True),
|
'level_id': fields.Many2One("clinic.staff.level", "Level",search=True),
|
||||||
|
|
|
@ -92,30 +92,42 @@ class ClinicSetting(Model):
|
||||||
|
|
||||||
def run_script(self,ids,context={}):
|
def run_script(self,ids,context={}):
|
||||||
obj=self.browse(ids)[0]
|
obj=self.browse(ids)[0]
|
||||||
|
################ update sickbed #############
|
||||||
#sickbed: update department
|
#sickbed: update department
|
||||||
#for sb in get_model('clinic.sickbed').search_browse([]):
|
for sb in get_model('clinic.sickbed').search_browse([]):
|
||||||
#hdcs=sorted(sb.hd_cases, key=lambda a: a.id)
|
hdcs=sorted(sb.hd_cases, key=lambda a: a.id)
|
||||||
#if hdcs:
|
if hdcs:
|
||||||
#hdc=hdcs[0]
|
hdc=hdcs[0]
|
||||||
##patient=hdc.patient_id
|
#patient=hdc.patient_id
|
||||||
#sb.write({
|
sb.write({
|
||||||
#'department_id': hdc.department_id.id,
|
'department_id': hdc.department_id.id,
|
||||||
#})
|
})
|
||||||
# create new cycle item
|
#print("Done!")
|
||||||
# TODO
|
#return
|
||||||
# copy old schedule
|
|
||||||
# copy old nurse to schedule
|
#############################################
|
||||||
# delete old cycle item
|
|
||||||
# confirm schedule
|
############### cycle item
|
||||||
# set visit & hd case to cycle item
|
for lc in get_model('clinic.labor.cost').search_browse([]):
|
||||||
old_schd=[]
|
lc.delete()
|
||||||
for schd in get_model("clinic.schedule").search_browse([]):
|
|
||||||
if schd.lines:
|
db=get_connection()
|
||||||
print("x")
|
res=db.query("""
|
||||||
pass
|
select cycle_item_id, nurse_id, level_id from clinic_cycle_item_nurse
|
||||||
for citem in get_model("clinic.cycle.item").search_browse([]):
|
""")
|
||||||
if citem.lines:
|
for rs in res:
|
||||||
print("y")
|
item_id=rs['cycle_item_id']
|
||||||
|
nid=rs['nurse_id']
|
||||||
|
lid=rs['level_id']
|
||||||
|
if item_id:
|
||||||
|
item=get_model('clinic.cycle.item').browse(item_id)
|
||||||
|
item.write({
|
||||||
|
'lines': [('create',{'nurse_id': nid, 'level_id': lid})],
|
||||||
|
})
|
||||||
|
print('update ', item.name)
|
||||||
|
item.validate()
|
||||||
|
#return
|
||||||
|
#############################################
|
||||||
print("Done!")
|
print("Done!")
|
||||||
|
|
||||||
def reset_last_import(self,ids,context={}):
|
def reset_last_import(self,ids,context={}):
|
||||||
|
|
|
@ -58,7 +58,7 @@ class SickBed(Model):
|
||||||
'branch_id': _get_branch,
|
'branch_id': _get_branch,
|
||||||
}
|
}
|
||||||
|
|
||||||
_order="sequence"
|
_order="sequence,name"
|
||||||
|
|
||||||
def copy(self,ids,context={}):
|
def copy(self,ids,context={}):
|
||||||
obj=self.browse(ids)[0]
|
obj=self.browse(ids)[0]
|
||||||
|
|
|
@ -97,7 +97,7 @@ class Staff(Model):
|
||||||
"nurse_visits": fields.One2Many("clinic.visit","nurse_id","Visits"),
|
"nurse_visits": fields.One2Many("clinic.visit","nurse_id","Visits"),
|
||||||
"doctor_visits": fields.One2Many("clinic.visit","doctor_id","Visits"),
|
"doctor_visits": fields.One2Many("clinic.visit","doctor_id","Visits"),
|
||||||
"company_id": fields.Many2One("company","Company",search=True),
|
"company_id": fields.Many2One("company","Company",search=True),
|
||||||
"user_id": fields.Many2One("base.user","User"),
|
"user_id": fields.Many2One("base.user","User",search=True),
|
||||||
'image': fields.File("Image"),
|
'image': fields.File("Image"),
|
||||||
'note': fields.Text("Note"),
|
'note': fields.Text("Note"),
|
||||||
'categ_id': fields.Many2One("clinic.staff.categ", "Category"),
|
'categ_id': fields.Many2One("clinic.staff.categ", "Category"),
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
todo:
|
todo:
|
||||||
- XXXX
|
- XXXX
|
||||||
- make a script to generate cycle item
|
- make a script to generate cycle item
|
||||||
- accounting
|
- make a sharing setting
|
||||||
|
|
||||||
- filter data
|
- filter data
|
||||||
1. company
|
1. company
|
||||||
|
|
Loading…
Reference in New Issue