clinic/netforce_clinic/models/hd_case_popup_discontinue.py

79 lines
2.4 KiB
Python

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