fix: set consumable entries on client side and not on validate
This commit is contained in:
parent
5ec7b55c3c
commit
75626d63aa
@ -198,22 +198,10 @@ frappe.ui.form.on('Clinical Procedure', {
|
||||
callback: function (data) {
|
||||
frm.set_value('medical_department', data.message.medical_department);
|
||||
frm.set_value('consume_stock', data.message.consume_stock);
|
||||
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);
|
||||
}
|
||||
});
|
||||
}
|
||||
frm.events.set_warehouse(frm);
|
||||
frm.events.set_procedure_consumables(frm);
|
||||
}
|
||||
});
|
||||
} else {
|
||||
frm.set_value('consume_stock', 0);
|
||||
}
|
||||
},
|
||||
|
||||
@ -248,7 +236,50 @@ 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) {
|
||||
|
@ -15,7 +15,7 @@ from erpnext.stock.get_item_details import get_item_details
|
||||
class ClinicalProcedure(Document):
|
||||
def validate(self):
|
||||
self.set_status()
|
||||
if self.consume_stock and not self.status == 'Draft':
|
||||
if self.consume_stock:
|
||||
if not self.warehouse:
|
||||
frappe.throw(_('Set warehouse for Procedure {0} ').format(self.name))
|
||||
self.set_actual_qty()
|
||||
@ -28,7 +28,6 @@ class ClinicalProcedure(Document):
|
||||
|
||||
def before_insert(self):
|
||||
if self.consume_stock:
|
||||
set_stock_items(self, self.procedure_template, 'Clinical Procedure Template')
|
||||
self.set_actual_qty()
|
||||
|
||||
def after_insert(self):
|
||||
@ -145,11 +144,17 @@ def get_stock_qty(item_code, warehouse):
|
||||
'posting_time': nowtime()
|
||||
}).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()
|
||||
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.item_code = d['item_code']
|
||||
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']
|
||||
return doc
|
||||
|
||||
def get_item_dict(table, parent, parenttype):
|
||||
query = '''select * from `tab{table}` where parent = '{parent}' and parenttype = '{parenttype}' '''
|
||||
def get_items(table, parent, 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()
|
||||
def make_stock_entry(doc):
|
||||
|
Loading…
x
Reference in New Issue
Block a user