91 lines
2.9 KiB
Python
91 lines
2.9 KiB
Python
import time
|
|
|
|
from netforce.model import Model, fields, get_model
|
|
from netforce.access import get_active_company
|
|
|
|
class CycleItem(Model):
|
|
_name="clinic.cycle.item"
|
|
_string="Cycle Item"
|
|
_name_field="name"
|
|
|
|
def _get_all(self,ids,context):
|
|
res={}
|
|
for obj in self.browse(ids):
|
|
name="%s-%s"%(obj.cycle_id.name,obj.date)
|
|
res[obj.id]={
|
|
'name': name,
|
|
}
|
|
return res
|
|
|
|
_fields={
|
|
'name': fields.Char("Name", function="_get_all",function_multi=True),
|
|
'date': fields.Date("Date",search=True),
|
|
'cycle_id': fields.Many2One("clinic.cycle", "Cycle",search=True),
|
|
'cycle_dialy_id': fields.Many2One("clinic.cycle.dialy", "Cycle Dialy",search=True),
|
|
'visits': fields.One2Many("clinic.visit","cycle_item_id", "Visits"),
|
|
'hd_cases': fields.One2Many("clinic.hd.case","cycle_item_id", "HD Cases"),
|
|
'nurses': fields.One2Many("clinic.cycle.item.nurse",'cycle_item_id','Nurses'),
|
|
'sequence': fields.Char("Sequence"), # for sort item
|
|
'company_id': fields.Many2One("company", "Company"),
|
|
"state": fields.Selection([("draft","Draft"),("done","Done")],"Status",required=True),
|
|
}
|
|
|
|
_defaults={
|
|
'state': 'draft',
|
|
'company_id': lambda *a: get_active_company(),
|
|
'date': lambda *a: time.strftime("%Y-%m-%d"),
|
|
}
|
|
|
|
_order="sequence"
|
|
_sql_constraints=[
|
|
("cycle_item_uniq","unique (cycle_id,date,company_id)","Cycle item should be unique"),
|
|
]
|
|
|
|
def get_cycle_diary(self,date):
|
|
dom=[]
|
|
print("get ", date)
|
|
dom.append(['date','=',date])
|
|
cd_ids=get_model('clinic.cycle.dialy').search(dom)
|
|
cd_id=None
|
|
if cd_ids:
|
|
cd_id=cd_ids[0]
|
|
else:
|
|
cd_id=get_model('clinic.cycle.dialy').create({
|
|
'date':date,
|
|
'name':date,
|
|
})
|
|
return cd_id
|
|
|
|
|
|
def create(self, vals,**kw):
|
|
date=vals['date']
|
|
cycle_id=vals['cycle_id']
|
|
vals['cycle_dialy_id']=self.get_cycle_diary(date)
|
|
|
|
cycle=get_model("clinic.cycle").browse(cycle_id)
|
|
vals['sequence']='%s-%s'%(date,cycle.sequence) #date-sequence
|
|
obj_id=super().create(vals,**kw)
|
|
return obj_id
|
|
|
|
def write(self,ids,vals,**kw):
|
|
obj=self.browse(ids)[0]
|
|
cycle=obj.cycle_id
|
|
date=vals.get('date') and vals.get('date') or obj.date
|
|
vals['cycle_dialy_id']=self.get_cycle_diary(date)
|
|
vals['sequence']='%s-%s'%(obj.date,cycle.sequence) #date-sequence
|
|
super().write(ids,vals,**kw)
|
|
|
|
def validate(self,ids,context={}):
|
|
obj=self.browse(ids)[0]
|
|
obj.write({
|
|
'state': 'done',
|
|
})
|
|
|
|
def to_draft(self,ids,context={}):
|
|
obj=self.browse(ids)[0]
|
|
obj.write({
|
|
'state': 'draft',
|
|
})
|
|
|
|
CycleItem.register()
|