discontinue
parent
81cedff701
commit
238f2f35b4
|
@ -1,6 +1,14 @@
|
||||||
<form model="clinic.hd.case.discont">
|
<form model="clinic.hd.case.discont">
|
||||||
<field name="hd_case_id" invisible="1"/>
|
<field name="hd_case_id" invisible="1"/>
|
||||||
<field name="note" nolabel="1" width="550" height="200"/>
|
<field name="note" nolabel="1" width="450" height="200"/>
|
||||||
|
<separator string="Good issue: remove line below if no need to create."/>
|
||||||
|
<field name="lines" nolabel="1" no_add="1" count="0">
|
||||||
|
<list>
|
||||||
|
<field name="product_id"/>
|
||||||
|
<field name="uom_id"/>
|
||||||
|
<field name="qty"/>
|
||||||
|
</list>
|
||||||
|
</field>
|
||||||
<foot>
|
<foot>
|
||||||
<button string="OK" type="success" method="do_discontinue"/>
|
<button string="OK" type="success" method="do_discontinue"/>
|
||||||
</foot>
|
</foot>
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
</head>
|
</head>
|
||||||
<group form_layout="stacked" attrs='{"readonly":[["state","=","completed"]]}'>
|
<group form_layout="stacked" attrs='{"readonly":[["state","=","completed"]]}'>
|
||||||
<field name="number" span="2"/>
|
<field name="number" span="2"/>
|
||||||
<field name="sickbed_id" attrs='{"readonly":[["state","in",["completed","waiting_payment","paid"]]]}' domain="[['state','=','available']]" required="1" span="2"/>
|
<field name="sickbed_id" attrs='{"readonly":[["state","in",["completed","waiting_payment","paid","cancelled"]]]}' domain="[['state','=','available']]" required="1" span="2"/>
|
||||||
<field name="patient_id" span="2" onchange="onchange_patient"/>
|
<field name="patient_id" span="2" onchange="onchange_patient"/>
|
||||||
<field name="patient_type_id" span="2"/>
|
<field name="patient_type_id" span="2"/>
|
||||||
<field name="cycle_id" span="2" required="1" onchange="onchange_cycle"/>
|
<field name="cycle_id" span="2" required="1" onchange="onchange_cycle"/>
|
||||||
|
|
|
@ -508,17 +508,26 @@ class HDCase(Model):
|
||||||
if not res:
|
if not res:
|
||||||
raise Exception("Customer location not found")
|
raise Exception("Customer location not found")
|
||||||
cust_loc_id=res[0]
|
cust_loc_id=res[0]
|
||||||
|
|
||||||
|
#XXX
|
||||||
|
no_lines=context.get('no_line') or False
|
||||||
|
if no_lines:
|
||||||
|
return
|
||||||
|
prod_ids=context.get('prod_ids') or []
|
||||||
|
prod_exist_ids=[]
|
||||||
for line in obj.lines:
|
for line in obj.lines:
|
||||||
if line.state!='draft':
|
if line.state!='draft':
|
||||||
continue
|
continue
|
||||||
|
|
||||||
prod=line.product_id
|
prod=line.product_id
|
||||||
|
|
||||||
if prod.type != 'stock':
|
if prod.type != 'stock':
|
||||||
print("continue ")
|
|
||||||
continue
|
continue
|
||||||
|
|
||||||
|
#XXX
|
||||||
|
if prod_ids and prod.id not in prod_ids or prod.id in prod_exist_ids:
|
||||||
|
continue
|
||||||
|
prod_exist_ids.append(prod.id)
|
||||||
|
|
||||||
if not wh_loc_id:
|
if not wh_loc_id:
|
||||||
wh_loc_id=prod.location_id.id
|
wh_loc_id=prod.location_id.id
|
||||||
if not wh_loc_id:
|
if not wh_loc_id:
|
||||||
|
@ -975,6 +984,8 @@ class HDCase(Model):
|
||||||
if mode=='create':
|
if mode=='create':
|
||||||
line_vals=line[1]
|
line_vals=line[1]
|
||||||
amt=line_vals.get("amount",0)
|
amt=line_vals.get("amount",0)
|
||||||
|
if mode=='delete':
|
||||||
|
continue
|
||||||
else:
|
else:
|
||||||
line_id=line[1][0]
|
line_id=line[1][0]
|
||||||
line_vals=line[2]
|
line_vals=line[2]
|
||||||
|
|
|
@ -7,6 +7,7 @@ class HDCaseDiscont(Model):
|
||||||
_fields={
|
_fields={
|
||||||
"hd_case_id": fields.Many2One("clinic.hd.case","HdCase",required=True,on_delete="cascade"),
|
"hd_case_id": fields.Many2One("clinic.hd.case","HdCase",required=True,on_delete="cascade"),
|
||||||
"note": fields.Text("Description"),
|
"note": fields.Text("Description"),
|
||||||
|
"lines": fields.One2Many("clinic.hd.case.line","hd_case_dis_id","Lines"),
|
||||||
}
|
}
|
||||||
|
|
||||||
def _get_hd_case_id(self,context={}):
|
def _get_hd_case_id(self,context={}):
|
||||||
|
@ -16,8 +17,33 @@ class HDCaseDiscont(Model):
|
||||||
return None
|
return None
|
||||||
return int(hd_case_id)
|
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={
|
_defaults={
|
||||||
'hd_case_id': _get_hd_case_id,
|
'hd_case_id': _get_hd_case_id,
|
||||||
|
'lines': _get_lines,
|
||||||
}
|
}
|
||||||
|
|
||||||
def do_discontinue(self,ids,context):
|
def do_discontinue(self,ids,context):
|
||||||
|
@ -27,6 +53,16 @@ class HDCaseDiscont(Model):
|
||||||
'note': obj.note,
|
'note': obj.note,
|
||||||
'state': 'cancelled',
|
'state': 'cancelled',
|
||||||
})
|
})
|
||||||
|
|
||||||
|
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 {
|
return {
|
||||||
'next': {
|
'next': {
|
||||||
'name': 'clinic_hd_case',
|
'name': 'clinic_hd_case',
|
||||||
|
|
|
@ -3,7 +3,8 @@ from netforce.model import Model, fields
|
||||||
class Hdcaseline(Model):
|
class Hdcaseline(Model):
|
||||||
_name="clinic.hd.case.line"
|
_name="clinic.hd.case.line"
|
||||||
_fields={
|
_fields={
|
||||||
"hd_case_id": fields.Many2One("clinic.hd.case","HdCase",required=True,on_delete="cascade"),
|
"hd_case_id": fields.Many2One("clinic.hd.case","HD Case",required=True,on_delete="cascade"),
|
||||||
|
"hd_case_dis_id": fields.Many2One("clinic.hd.case.discont","HD Case",on_delete="cascade"),
|
||||||
"product_id": fields.Many2One("product","Product",search=True),
|
"product_id": fields.Many2One("product","Product",search=True),
|
||||||
"description": fields.Char("Description",search=True),
|
"description": fields.Char("Description",search=True),
|
||||||
"qty":fields.Integer("QTY"),
|
"qty":fields.Integer("QTY"),
|
||||||
|
|
Loading…
Reference in New Issue