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()