fix: set consumable entries on client side and not on validate
This commit is contained in:
parent
5ec7b55c3c
commit
75626d63aa
@ -198,23 +198,11 @@ frappe.ui.form.on('Clinical Procedure', {
|
|||||||
callback: function (data) {
|
callback: function (data) {
|
||||||
frm.set_value('medical_department', data.message.medical_department);
|
frm.set_value('medical_department', data.message.medical_department);
|
||||||
frm.set_value('consume_stock', data.message.consume_stock);
|
frm.set_value('consume_stock', data.message.consume_stock);
|
||||||
if (!frm.doc.warehouse) {
|
frm.events.set_warehouse(frm);
|
||||||
frappe.call({
|
frm.events.set_procedure_consumables(frm);
|
||||||
method: 'frappe.client.get_value',
|
|
||||||
args: {
|
|
||||||
doctype: 'Stock Settings',
|
|
||||||
fieldname: 'default_warehouse'
|
|
||||||
},
|
|
||||||
callback: function (data) {
|
|
||||||
frm.set_value('warehouse', data.message.default_warehouse);
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
frm.set_value('consume_stock', 0);
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
|
|
||||||
service_unit: function(frm) {
|
service_unit: function(frm) {
|
||||||
@ -248,8 +236,51 @@ frappe.ui.form.on('Clinical Procedure', {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
set_warehouse: function(frm) {
|
||||||
|
if (!frm.doc.warehouse) {
|
||||||
|
frappe.call({
|
||||||
|
method: 'frappe.client.get_value',
|
||||||
|
args: {
|
||||||
|
doctype: 'Stock Settings',
|
||||||
|
fieldname: 'default_warehouse'
|
||||||
|
},
|
||||||
|
callback: function (data) {
|
||||||
|
frm.set_value('warehouse', data.message.default_warehouse);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
set_procedure_consumables: function(frm) {
|
||||||
|
frappe.call({
|
||||||
|
method: 'erpnext.healthcare.doctype.clinical_procedure.clinical_procedure.get_procedure_consumables',
|
||||||
|
args: {
|
||||||
|
procedure_template: frm.doc.procedure_template
|
||||||
|
},
|
||||||
|
callback: function(data) {
|
||||||
|
if (data.message) {
|
||||||
|
frm.doc.items = []
|
||||||
|
$.each(data.message, function(i, v) {
|
||||||
|
let item = frm.add_child('items');
|
||||||
|
item.item_code = v.item_code;
|
||||||
|
item.item_name = v.item_name;
|
||||||
|
item.uom = v.uom;
|
||||||
|
item.stock_uom = v.stock_uom;
|
||||||
|
item.qty = flt(v.qty);
|
||||||
|
item.transfer_qty = v.transfer_qty;
|
||||||
|
item.conversion_factor = v.conversion_factor;
|
||||||
|
item.invoice_separately_as_consumables = v.invoice_separately_as_consumables;
|
||||||
|
item.batch_no = v.batch_no;
|
||||||
|
});
|
||||||
|
refresh_field('items');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
cur_frm.set_query('procedure_template', function(doc) {
|
cur_frm.set_query('procedure_template', function(doc) {
|
||||||
return {
|
return {
|
||||||
|
|||||||
@ -15,7 +15,7 @@ from erpnext.stock.get_item_details import get_item_details
|
|||||||
class ClinicalProcedure(Document):
|
class ClinicalProcedure(Document):
|
||||||
def validate(self):
|
def validate(self):
|
||||||
self.set_status()
|
self.set_status()
|
||||||
if self.consume_stock and not self.status == 'Draft':
|
if self.consume_stock:
|
||||||
if not self.warehouse:
|
if not self.warehouse:
|
||||||
frappe.throw(_('Set warehouse for Procedure {0} ').format(self.name))
|
frappe.throw(_('Set warehouse for Procedure {0} ').format(self.name))
|
||||||
self.set_actual_qty()
|
self.set_actual_qty()
|
||||||
@ -28,7 +28,6 @@ class ClinicalProcedure(Document):
|
|||||||
|
|
||||||
def before_insert(self):
|
def before_insert(self):
|
||||||
if self.consume_stock:
|
if self.consume_stock:
|
||||||
set_stock_items(self, self.procedure_template, 'Clinical Procedure Template')
|
|
||||||
self.set_actual_qty()
|
self.set_actual_qty()
|
||||||
|
|
||||||
def after_insert(self):
|
def after_insert(self):
|
||||||
@ -145,11 +144,17 @@ def get_stock_qty(item_code, warehouse):
|
|||||||
'posting_time': nowtime()
|
'posting_time': nowtime()
|
||||||
}).get('qty_after_transaction') or 0
|
}).get('qty_after_transaction') or 0
|
||||||
|
|
||||||
|
|
||||||
|
@frappe.whitelist()
|
||||||
|
def get_procedure_consumables(procedure_template):
|
||||||
|
return get_items('Clinical Procedure Item', procedure_template, 'Clinical Procedure Template')
|
||||||
|
|
||||||
|
|
||||||
@frappe.whitelist()
|
@frappe.whitelist()
|
||||||
def set_stock_items(doc, stock_detail_parent, parenttype):
|
def set_stock_items(doc, stock_detail_parent, parenttype):
|
||||||
item_dict = get_item_dict('Clinical Procedure Item', stock_detail_parent, parenttype)
|
items = get_items('Clinical Procedure Item', stock_detail_parent, parenttype)
|
||||||
|
|
||||||
for d in item_dict:
|
for d in items:
|
||||||
se_child = doc.append('items')
|
se_child = doc.append('items')
|
||||||
se_child.item_code = d['item_code']
|
se_child.item_code = d['item_code']
|
||||||
se_child.item_name = d['item_name']
|
se_child.item_name = d['item_name']
|
||||||
@ -165,10 +170,13 @@ def set_stock_items(doc, stock_detail_parent, parenttype):
|
|||||||
se_child.invoice_separately_as_consumables = d['invoice_separately_as_consumables']
|
se_child.invoice_separately_as_consumables = d['invoice_separately_as_consumables']
|
||||||
return doc
|
return doc
|
||||||
|
|
||||||
def get_item_dict(table, parent, parenttype):
|
def get_items(table, parent, parenttype):
|
||||||
query = '''select * from `tab{table}` where parent = '{parent}' and parenttype = '{parenttype}' '''
|
items = frappe.db.get_all(table, filters={
|
||||||
|
'parent': parent,
|
||||||
|
'parenttype': parenttype
|
||||||
|
}, fields=['*'])
|
||||||
|
|
||||||
return frappe.db.sql(query.format(table=table, parent=parent, parenttype=parenttype), as_dict=True)
|
return items
|
||||||
|
|
||||||
@frappe.whitelist()
|
@frappe.whitelist()
|
||||||
def make_stock_entry(doc):
|
def make_stock_entry(doc):
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user