2014-11-30 13:05:14 +00:00
|
|
|
from datetime import datetime
|
|
|
|
|
2015-01-16 04:00:24 +00:00
|
|
|
from netforce.model import Model, fields, get_model
|
2014-10-24 18:04:36 +00:00
|
|
|
from netforce.access import get_active_company
|
2014-10-14 03:57:20 +00:00
|
|
|
|
|
|
|
class Cycle(Model):
|
|
|
|
_name="clinic.cycle"
|
|
|
|
_string="Cycle"
|
2014-11-26 11:35:44 +00:00
|
|
|
_key=["name"]
|
2015-01-14 11:00:14 +00:00
|
|
|
#_multi_company=True
|
2014-11-30 13:05:14 +00:00
|
|
|
|
|
|
|
def _get_duration(self,ids,context={}):
|
|
|
|
res={}
|
|
|
|
fmt="%Y-%m-%d %H:%M"
|
|
|
|
date=datetime.now().strftime(fmt)[0:10]
|
|
|
|
for obj in self.browse(ids):
|
|
|
|
tstart=obj.time_start
|
|
|
|
tstop=obj.time_stop
|
|
|
|
if not tstart:
|
|
|
|
tstart='00:00'
|
|
|
|
if not tstop:
|
|
|
|
tstop='00:00'
|
|
|
|
# recheck
|
|
|
|
tstart=tstart.replace(".",":")
|
|
|
|
tstop=tstop.replace(".",":")
|
|
|
|
if len(tstart.split(":"))!=2:
|
|
|
|
tstart="00:00"
|
|
|
|
if len(tstop.split(":"))!=2:
|
|
|
|
tstop="00:00"
|
|
|
|
dstart='%s %s'%(date,tstart)
|
|
|
|
dstop='%s %s'%(date,tstop)
|
|
|
|
|
|
|
|
diff=datetime.strptime(dstop,fmt)-datetime.strptime(dstart,fmt)
|
|
|
|
total_time=round(diff.seconds/3600,2)
|
|
|
|
res[obj.id]=total_time
|
|
|
|
return res
|
2014-10-14 03:57:20 +00:00
|
|
|
|
|
|
|
_fields={
|
|
|
|
"name": fields.Char("Name",required=True,search=True),
|
2014-11-30 13:05:14 +00:00
|
|
|
'duration': fields.Integer("Duration(Hour)",function="_get_duration"),
|
2014-10-14 07:07:37 +00:00
|
|
|
'sequence': fields.Integer("Sequence"),
|
2014-11-30 13:05:14 +00:00
|
|
|
'time_start': fields.Char("Start Time"),
|
|
|
|
'time_stop': fields.Char("End Time"),
|
2014-10-26 04:28:08 +00:00
|
|
|
'hd_cases': fields.One2Many("clinic.hd.case","cycle_id", "HD Cases"),
|
|
|
|
'visits': fields.One2Many("clinic.visit","cycle_id", "Visits"),
|
2014-10-26 08:48:51 +00:00
|
|
|
'cycle_items': fields.One2Many("clinic.cycle.item","cycle_id", "Cycle Items"),
|
2014-10-26 04:28:08 +00:00
|
|
|
'var_k': fields.Float("K"),
|
2014-10-28 13:39:29 +00:00
|
|
|
'color': fields.Char("Color"),
|
2014-11-30 13:05:14 +00:00
|
|
|
'note': fields.Text("Note"),
|
2015-01-11 06:09:40 +00:00
|
|
|
'company_id': fields.Many2One("company", "Company"),
|
2014-10-14 03:57:20 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
_defaults={
|
|
|
|
'duration': 1,
|
2014-10-14 07:07:37 +00:00
|
|
|
'sequence': 1,
|
2014-10-26 04:28:08 +00:00
|
|
|
'company_id': lambda *a: get_active_company(),
|
2014-10-14 03:57:20 +00:00
|
|
|
}
|
|
|
|
|
2015-01-16 04:00:24 +00:00
|
|
|
def write(self,ids,vals,**kw):
|
|
|
|
obj=self.browse(ids)[0]
|
|
|
|
super().write(ids,vals,**kw)
|
|
|
|
if 'color' in vals.keys():
|
|
|
|
color=vals['color']
|
|
|
|
#old_color=obj.color
|
|
|
|
dom=[]
|
|
|
|
dom.append(['cycle_id','=',obj.id])
|
|
|
|
#dom.append(['cycle_color','=',old_color])
|
|
|
|
for vs in get_model('clinic.visit').search_browse(dom):
|
|
|
|
vs.write({
|
|
|
|
'cycle_color': color,
|
|
|
|
})
|
2014-10-14 03:57:20 +00:00
|
|
|
|
|
|
|
Cycle.register()
|