from netforce.model import Model, fields, get_model class HDCasePopupDiscontinue(Model): _name="clinic.hd.case.popup.discontinue" _transient=True _fields={ "hd_case_id": fields.Many2One("clinic.hd.case","HdCase",required=True,on_delete="cascade"), "note": fields.Text("Description"), "lines": fields.One2Many("clinic.hd.case.line","hd_case_dis_id","Lines"), } def _get_hd_case_id(self,context={}): hd_case_id=context.get("refer_id") print("clinic.hd.case.popup.discontinue default") if not hd_case_id: return None return int(hd_case_id) def _get_lines(self,context={}): hd_case_id=context.get("refer_id") lines=[] if not hd_case_id: return lines hd_case=get_model("clinic.hd.case").browse(hd_case_id) for line in hd_case.lines: prod=line.product_id if prod.type != 'stock': print("continue ") continue lines.append({ 'hd_case_id': hd_case_id, 'product_id': prod.id, 'uom_id': line.uom_id.id, 'product_categ_id': line.product_categ_id.id, 'description': line.description, 'price': line.price, 'qty': line.qty, 'reimbursable': line.reimbursable, 'amount': line.amount, }) return lines _defaults={ 'hd_case_id': _get_hd_case_id, 'lines': _get_lines, } def do_discontinue(self,ids,context): obj=self.browse(ids)[0] hd_case=get_model("clinic.hd.case").browse(obj.hd_case_id.id) hd_case.write({ 'note': obj.note, 'state': 'cancelled', }) hd_case.sickbed_id.write({ 'available': True, }) prod_ids=[] for line in obj.lines: prod=line.product_id prod_ids.append(prod.id) line.delete() context['prod_ids']=prod_ids if not prod_ids: context['no_line']=True hd_case.make_pickings(context=context) return { 'next': { 'name': 'clinic_hd_case', 'mode': 'form', 'active_id': hd_case.id, }, 'flash': '%s has been cancelled'%hd_case.number, } HDCasePopupDiscontinue.register()