from netforce.model import Model, fields, get_model class HDCasePopupDlz(Model): _name="clinic.hd.case.popup.dlz" _transient=True _fields={ "hd_case_id": fields.Many2One("clinic.hd.case","HdCase",required=True,on_delete="cascade"), 'product_id': fields.Many2One("product", "Product",required=True), "dialyzer_type": fields.Selection([("low","low flux"),("high","high flux"),("dbl","dbl hifulx")],"Dialyzer Type"), "max_use_time": fields.Integer("Max Use Time"), "exp_date": fields.Date("Expiry Date"), "note": fields.Text("Note"), "membrane_type": fields.Selection([("unsub","Unsub cellul"),("sub","Sub cellul"),("synthetic","Synthetic")],"Membrane Type"), } def __get_hd_case_id(self,context={}): hd_case_id=context.get("refer_id") print("clinic.hd.case.popup.dlz default") if not hd_case_id: return None return int(hd_case_id) def default_get(self,field_names=None,context={},**kw): defaults=context.get("defaults",{}) hdcase_id=defaults.get('hd_case_id') dialyzer_type=defaults.get('dialyzer_type') if not hdcase_id: hdcase_id=context.get("refer_id") if hdcase_id: hdcase=get_model('clinic.hd.case').browse(hdcase_id) dom=[] for dlz in get_model('clinic.dialyzer').search_browse(dom): dialyzer_type=dlz.dialyzer_type or "low" pass res={ 'hd_case_id': hdcase_id, 'dialyzer_type': 'low', 'max_use_time': 10, } print('res', res) return res def new_dlz(self,ids,context={}): obj=self.browse(ids)[0] hd_case=obj.hd_case_id res={} if hd_case: context['is_wiz']=True context['pop_id']=obj.id res=hd_case.new_dialyzer(context=context) print('res ', res) return res def onchange_product(self,context={}): data=context['data'] hdcase_id=data['hd_case_id'] patient=None if hdcase_id: hdcase=get_model('clinic.hd.case').browse(hdcase_id) patient=hdcase.patient_id product_id=data['product_id'] data['membrane_type']=None data['dialyzer_type']=None data['max_use_time']=10 dom=[] if patient: dom.append(['patient_id','=',patient.id]) for dlz in get_model("clinic.dialyzer").search_browse(dom): prod=dlz.product_id if prod.id==product_id: data['membrane_type']=dlz.membrane_type data['dialyzer_type']=dlz.dialyzer_type or "low" data['max_use_time']=dlz.max_use_time or 10 break return data HDCasePopupDlz.register()