54 lines
1.8 KiB
Plaintext
54 lines
1.8 KiB
Plaintext
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"
|
|
|
|
def _get_x(self,ids,context):
|
|
res={}
|
|
for obj in self.browse(ids):
|
|
hd_total=len([hd_case for hd_case in obj.hd_cases if hd_case.state=='completed']) # XXX
|
|
pt=(hd_total or 0.0)
|
|
k=(obj.var_k or 0.0)
|
|
pt_k=pt*k
|
|
x=(pt_k + 1275)/13.5
|
|
res[obj.id]=x
|
|
return res
|
|
|
|
_fields={
|
|
'company_id': fields.Many2One("company", "Company"),
|
|
'cycle_id': fields.Many2One("clinic.cycle", "Cycle",search=True),
|
|
'date': fields.Date("Date",search=True),
|
|
'var_k': fields.Float("K"),
|
|
'var_x': fields.Float("X", function="_get_x"),
|
|
"state": fields.Selection([("draft","Draft"),("done","Done")],"Status",required=True),
|
|
'hd_cases': fields.One2Many("clinic.hd.case","cycle_item_id", "HD Cases"),
|
|
'lines': fields.One2Many('clinic.cycle.item.line', 'cycle_item_id', 'Lines'),
|
|
}
|
|
|
|
_defaults={
|
|
'state': 'draft',
|
|
'company_id': lambda *a: get_active_company(),
|
|
'date': lambda *a: time.strftime("%Y-%m-%d"),
|
|
'var_k': 450,
|
|
}
|
|
|
|
def compute(self,ids,context={}):
|
|
for obj in self.browse(ids):
|
|
nurer_categ_ids=[line.nurse_categ.id for line in obj.lines]
|
|
vals={
|
|
'lines': [],
|
|
}
|
|
for nurse_categ in get_model("clinic.nurse.categ").search_browse([]):
|
|
vals['lines'].append(('create',{
|
|
'nurse_categ': nurse_categ.id,
|
|
'formular': nurse_categ.formular or "",
|
|
'qty': 1,
|
|
}))
|
|
pass
|
|
obj.write(vals)
|
|
CycleItem.register()
|