fix(Healthcare): disabled Lab Test Template shown as Enabled in List View (#20378)
* fix (Healthcare): disabled Lab Test Template shown as enabled in List View * fix: remove custom disabled button and unhide disabled field
This commit is contained in:
parent
40dffab79e
commit
0a27c98a99
@ -3,17 +3,17 @@
|
|||||||
|
|
||||||
frappe.ui.form.on("Lab Test Template",{
|
frappe.ui.form.on("Lab Test Template",{
|
||||||
lab_test_name: function(frm) {
|
lab_test_name: function(frm) {
|
||||||
if(!frm.doc.lab_test_code)
|
if (!frm.doc.lab_test_code)
|
||||||
frm.set_value("lab_test_code", frm.doc.lab_test_name);
|
frm.set_value("lab_test_code", frm.doc.lab_test_name);
|
||||||
if(!frm.doc.lab_test_description)
|
if (!frm.doc.lab_test_description)
|
||||||
frm.set_value("lab_test_description", frm.doc.lab_test_name);
|
frm.set_value("lab_test_description", frm.doc.lab_test_name);
|
||||||
},
|
},
|
||||||
refresh : function(frm){
|
refresh : function(frm) {
|
||||||
// Restrict Special, Grouped type templates in Child TestGroups
|
// Restrict Special, Grouped type templates in Child TestGroups
|
||||||
frm.set_query("lab_test_template", "lab_test_groups", function() {
|
frm.set_query("lab_test_template", "lab_test_groups", function() {
|
||||||
return {
|
return {
|
||||||
filters: {
|
filters: {
|
||||||
lab_test_template_type:['in',['Single','Compound']]
|
lab_test_template_type: ['in',['Single','Compound']]
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
@ -23,83 +23,44 @@ frappe.ui.form.on("Lab Test Template",{
|
|||||||
cur_frm.cscript.custom_refresh = function(doc) {
|
cur_frm.cscript.custom_refresh = function(doc) {
|
||||||
cur_frm.set_df_property("lab_test_code", "read_only", doc.__islocal ? 0 : 1);
|
cur_frm.set_df_property("lab_test_code", "read_only", doc.__islocal ? 0 : 1);
|
||||||
|
|
||||||
if(!doc.__islocal) {
|
if (!doc.__islocal) {
|
||||||
cur_frm.add_custom_button(__('Change Template Code'), function() {
|
cur_frm.add_custom_button(__("Change Template Code"), function() {
|
||||||
change_template_code(cur_frm,doc);
|
change_template_code(doc);
|
||||||
} );
|
});
|
||||||
if(doc.disabled == 1){
|
|
||||||
cur_frm.add_custom_button(__('Enable Template'), function() {
|
|
||||||
enable_template(cur_frm);
|
|
||||||
} );
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
cur_frm.add_custom_button(__('Disable Template'), function() {
|
|
||||||
disable_template(cur_frm);
|
|
||||||
} );
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
var disable_template = function(frm){
|
let change_template_code = function(doc) {
|
||||||
var doc = frm.doc;
|
let d = new frappe.ui.Dialog({
|
||||||
frappe.call({
|
|
||||||
method: "erpnext.healthcare.doctype.lab_test_template.lab_test_template.disable_enable_test_template",
|
|
||||||
args: {status: 1, name: doc.name, is_billable: doc.is_billable},
|
|
||||||
callback: function(){
|
|
||||||
cur_frm.reload_doc();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
var enable_template = function(frm){
|
|
||||||
var doc = frm.doc;
|
|
||||||
frappe.call({
|
|
||||||
method: "erpnext.healthcare.doctype.lab_test_template.lab_test_template.disable_enable_test_template",
|
|
||||||
args: {status: 0, name: doc.name, is_billable: doc.is_billable},
|
|
||||||
callback: function(){
|
|
||||||
cur_frm.reload_doc();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
var change_template_code = function(frm,doc){
|
|
||||||
var d = new frappe.ui.Dialog({
|
|
||||||
title:__("Change Template Code"),
|
title:__("Change Template Code"),
|
||||||
fields:[
|
fields:[
|
||||||
{
|
{
|
||||||
"fieldtype": "Data",
|
"fieldtype": "Data",
|
||||||
"label": "Test Template Code",
|
"label": "Lab Test Template Code",
|
||||||
"fieldname": "Test Code",
|
"fieldname": "lab_test_code",
|
||||||
reqd:1
|
reqd: 1
|
||||||
},
|
|
||||||
{
|
|
||||||
"fieldtype": "Button",
|
|
||||||
"label": __("Change Code"),
|
|
||||||
click: function() {
|
|
||||||
var values = d.get_values();
|
|
||||||
if(!values)
|
|
||||||
return;
|
|
||||||
change_test_code_from_template(values["Test Code"],doc);
|
|
||||||
d.hide();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
]
|
],
|
||||||
|
primary_action: function() {
|
||||||
|
let values = d.get_values();
|
||||||
|
if (values) {
|
||||||
|
frappe.call({
|
||||||
|
"method": "erpnext.healthcare.doctype.lab_test_template.lab_test_template.change_test_code_from_template",
|
||||||
|
"args": {lab_test_code: values.lab_test_code, doc: doc},
|
||||||
|
callback: function (data) {
|
||||||
|
frappe.set_route("Form", "Lab Test Template", data.message);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
d.hide();
|
||||||
|
},
|
||||||
|
primary_action_label: __("Change Template Code")
|
||||||
});
|
});
|
||||||
d.show();
|
d.show();
|
||||||
d.set_values({
|
|
||||||
'Test Code': doc.lab_test_code
|
|
||||||
});
|
|
||||||
|
|
||||||
var change_test_code_from_template = function(lab_test_code,doc){
|
d.set_values({
|
||||||
frappe.call({
|
"lab_test_code": doc.lab_test_code
|
||||||
"method": "erpnext.healthcare.doctype.lab_test_template.lab_test_template.change_test_code_from_template",
|
});
|
||||||
"args": {lab_test_code: lab_test_code, doc: doc},
|
|
||||||
callback: function (data) {
|
|
||||||
frappe.set_route("Form", "Lab Test Template", data.message);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
frappe.ui.form.on("Lab Test Template", "lab_test_name", function(frm){
|
frappe.ui.form.on("Lab Test Template", "lab_test_name", function(frm){
|
||||||
@ -124,8 +85,8 @@ frappe.ui.form.on("Lab Test Template", "lab_test_description", function(frm){
|
|||||||
});
|
});
|
||||||
|
|
||||||
frappe.ui.form.on("Lab Test Groups", "template_or_new_line", function (frm, cdt, cdn) {
|
frappe.ui.form.on("Lab Test Groups", "template_or_new_line", function (frm, cdt, cdn) {
|
||||||
var child = locals[cdt][cdn];
|
let child = locals[cdt][cdn];
|
||||||
if(child.template_or_new_line =="Add new line"){
|
if (child.template_or_new_line == "Add new line") {
|
||||||
frappe.model.set_value(cdt, cdn, 'lab_test_template', "");
|
frappe.model.set_value(cdt, cdn, 'lab_test_template', "");
|
||||||
frappe.model.set_value(cdt, cdn, 'lab_test_description', "");
|
frappe.model.set_value(cdt, cdn, 'lab_test_description', "");
|
||||||
}
|
}
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@ -9,59 +9,76 @@ from frappe.model.rename_doc import rename_doc
|
|||||||
from frappe import _
|
from frappe import _
|
||||||
|
|
||||||
class LabTestTemplate(Document):
|
class LabTestTemplate(Document):
|
||||||
|
def after_insert(self):
|
||||||
|
if not self.item:
|
||||||
|
create_item_from_template(self)
|
||||||
|
|
||||||
|
def validate(self):
|
||||||
|
self.enable_disable_item()
|
||||||
|
|
||||||
def on_update(self):
|
def on_update(self):
|
||||||
#Item and Price List update --> if (change_in_item)
|
# if change_in_item update Item and Price List
|
||||||
if(self.change_in_item and self.is_billable == 1 and self.item):
|
if self.change_in_item and self.is_billable and self.item:
|
||||||
updating_item(self)
|
self.update_item()
|
||||||
item_price = item_price_exist(self)
|
item_price = self.item_price_exists()
|
||||||
if not item_price:
|
if not item_price:
|
||||||
if(self.lab_test_rate != 0.0):
|
if self.lab_test_rate != 0.0:
|
||||||
price_list_name = frappe.db.get_value("Price List", {"selling": 1})
|
price_list_name = frappe.db.get_value("Price List", {"selling": 1})
|
||||||
if(self.lab_test_rate):
|
if self.lab_test_rate:
|
||||||
make_item_price(self.lab_test_code, price_list_name, self.lab_test_rate)
|
make_item_price(self.lab_test_code, price_list_name, self.lab_test_rate)
|
||||||
else:
|
else:
|
||||||
make_item_price(self.lab_test_code, price_list_name, 0.0)
|
make_item_price(self.lab_test_code, price_list_name, 0.0)
|
||||||
else:
|
else:
|
||||||
frappe.db.set_value("Item Price", item_price, "price_list_rate", self.lab_test_rate)
|
frappe.db.set_value("Item Price", item_price, "price_list_rate", self.lab_test_rate)
|
||||||
|
|
||||||
frappe.db.set_value(self.doctype,self.name,"change_in_item",0)
|
frappe.db.set_value(self.doctype, self.name, "change_in_item", 0)
|
||||||
elif(self.is_billable == 0 and self.item):
|
|
||||||
frappe.db.set_value("Item",self.item,"disabled",1)
|
elif not self.is_billable and self.item:
|
||||||
|
frappe.db.set_value("Item", self.item, "disabled", 1)
|
||||||
|
|
||||||
self.reload()
|
self.reload()
|
||||||
|
|
||||||
def after_insert(self):
|
|
||||||
if not self.item:
|
|
||||||
create_item_from_template(self)
|
|
||||||
|
|
||||||
#Call before delete the template
|
|
||||||
def on_trash(self):
|
def on_trash(self):
|
||||||
# remove template refernce from item and disable item
|
# remove template reference from item and disable item
|
||||||
if(self.item):
|
if self.item:
|
||||||
try:
|
try:
|
||||||
frappe.delete_doc("Item",self.item, force=True)
|
frappe.delete_doc("Item", self.item)
|
||||||
except Exception:
|
except Exception:
|
||||||
frappe.throw(_("""Not permitted. Please disable the Test Template"""))
|
frappe.throw(_("Not permitted. Please disable the Lab Test Template"))
|
||||||
|
|
||||||
def item_price_exist(doc):
|
def enable_disable_item(self):
|
||||||
item_price = frappe.db.exists({
|
if self.is_billable:
|
||||||
"doctype": "Item Price",
|
if self.disabled:
|
||||||
"item_code": doc.lab_test_code})
|
frappe.db.set_value('Item', self.item, 'disabled', 1)
|
||||||
if(item_price):
|
else:
|
||||||
return item_price[0][0]
|
frappe.db.set_value('Item', self.item, 'disabled', 0)
|
||||||
else:
|
|
||||||
return False
|
def update_item(self):
|
||||||
|
item = frappe.get_doc("Item", self.item)
|
||||||
|
if item:
|
||||||
|
item.update({
|
||||||
|
"item_name": self.lab_test_name,
|
||||||
|
"item_group": self.lab_test_group,
|
||||||
|
"disabled": 0,
|
||||||
|
"standard_rate": self.lab_test_rate,
|
||||||
|
"description": self.lab_test_description
|
||||||
|
})
|
||||||
|
item.save()
|
||||||
|
|
||||||
|
def item_price_exists(self):
|
||||||
|
item_price = frappe.db.exists({"doctype": "Item Price", "item_code": self.lab_test_code})
|
||||||
|
if item_price:
|
||||||
|
return item_price[0][0]
|
||||||
|
else:
|
||||||
|
return False
|
||||||
|
|
||||||
def updating_item(self):
|
|
||||||
frappe.db.sql("""update `tabItem` set item_name=%s, item_group=%s, disabled=0, standard_rate=%s,
|
|
||||||
description=%s, modified=NOW() where item_code=%s""",
|
|
||||||
(self.lab_test_name, self.lab_test_group , self.lab_test_rate, self.lab_test_description, self.item))
|
|
||||||
|
|
||||||
def create_item_from_template(doc):
|
def create_item_from_template(doc):
|
||||||
if(doc.is_billable == 1):
|
if doc.is_billable:
|
||||||
disabled = 0
|
disabled = 0
|
||||||
else:
|
else:
|
||||||
disabled = 1
|
disabled = 1
|
||||||
#insert item
|
# insert item
|
||||||
item = frappe.get_doc({
|
item = frappe.get_doc({
|
||||||
"doctype": "Item",
|
"doctype": "Item",
|
||||||
"item_code": doc.lab_test_code,
|
"item_code": doc.lab_test_code,
|
||||||
@ -78,9 +95,9 @@ def create_item_from_template(doc):
|
|||||||
"stock_uom": "Unit"
|
"stock_uom": "Unit"
|
||||||
}).insert(ignore_permissions=True)
|
}).insert(ignore_permissions=True)
|
||||||
|
|
||||||
#insert item price
|
# insert item price
|
||||||
#get item price list to insert item price
|
# get item price list to insert item price
|
||||||
if(doc.lab_test_rate != 0.0):
|
if doc.lab_test_rate != 0.0:
|
||||||
price_list_name = frappe.db.get_value("Price List", {"selling": 1})
|
price_list_name = frappe.db.get_value("Price List", {"selling": 1})
|
||||||
if(doc.lab_test_rate):
|
if(doc.lab_test_rate):
|
||||||
make_item_price(item.name, price_list_name, doc.lab_test_rate)
|
make_item_price(item.name, price_list_name, doc.lab_test_rate)
|
||||||
@ -89,10 +106,10 @@ def create_item_from_template(doc):
|
|||||||
make_item_price(item.name, price_list_name, 0.0)
|
make_item_price(item.name, price_list_name, 0.0)
|
||||||
item.standard_rate = 0.0
|
item.standard_rate = 0.0
|
||||||
item.save(ignore_permissions = True)
|
item.save(ignore_permissions = True)
|
||||||
#Set item to the template
|
# Set item in the template
|
||||||
frappe.db.set_value("Lab Test Template", doc.name, "item", item.name)
|
frappe.db.set_value("Lab Test Template", doc.name, "item", item.name)
|
||||||
|
|
||||||
doc.reload() #refresh the doc after insert.
|
doc.reload()
|
||||||
|
|
||||||
def make_item_price(item, price_list_name, item_price):
|
def make_item_price(item, price_list_name, item_price):
|
||||||
frappe.get_doc({
|
frappe.get_doc({
|
||||||
@ -104,22 +121,13 @@ def make_item_price(item, price_list_name, item_price):
|
|||||||
|
|
||||||
@frappe.whitelist()
|
@frappe.whitelist()
|
||||||
def change_test_code_from_template(lab_test_code, doc):
|
def change_test_code_from_template(lab_test_code, doc):
|
||||||
args = json.loads(doc)
|
doc = frappe._dict(json.loads(doc))
|
||||||
doc = frappe._dict(args)
|
|
||||||
|
|
||||||
item_exist = frappe.db.exists({
|
if frappe.db.exists({ "doctype": "Item", "item_code": lab_test_code}):
|
||||||
"doctype": "Item",
|
frappe.throw(_("Lab Test Item {0} already exist").format(lab_test_code))
|
||||||
"item_code": lab_test_code})
|
|
||||||
if(item_exist):
|
|
||||||
frappe.throw(_("Code {0} already exist").format(lab_test_code))
|
|
||||||
else:
|
else:
|
||||||
rename_doc("Item", doc.name, lab_test_code, ignore_permissions=True)
|
rename_doc("Item", doc.name, lab_test_code, ignore_permissions=True)
|
||||||
frappe.db.set_value("Lab Test Template",doc.name,"lab_test_code",lab_test_code)
|
frappe.db.set_value("Lab Test Template", doc.name, "lab_test_code", lab_test_code)
|
||||||
|
frappe.db.set_value("Lab Test Template", doc.name, "lab_test_name", lab_test_code)
|
||||||
rename_doc("Lab Test Template", doc.name, lab_test_code, ignore_permissions=True)
|
rename_doc("Lab Test Template", doc.name, lab_test_code, ignore_permissions=True)
|
||||||
return lab_test_code
|
return lab_test_code
|
||||||
|
|
||||||
@frappe.whitelist()
|
|
||||||
def disable_enable_test_template(status, name, is_billable):
|
|
||||||
frappe.db.set_value("Lab Test Template",name,"disabled",status)
|
|
||||||
if(is_billable == 1):
|
|
||||||
frappe.db.set_value("Item",name,"disabled",status)
|
|
||||||
@ -3,13 +3,5 @@
|
|||||||
*/
|
*/
|
||||||
frappe.listview_settings['Lab Test Template'] = {
|
frappe.listview_settings['Lab Test Template'] = {
|
||||||
add_fields: ["lab_test_name", "lab_test_code", "lab_test_rate"],
|
add_fields: ["lab_test_name", "lab_test_code", "lab_test_rate"],
|
||||||
filters:[["disabled","=",0]],
|
filters: [["disabled", "=", 0]]
|
||||||
/* get_indicator: function(doc) {
|
|
||||||
if(doc.disabled==1){
|
|
||||||
return [__("Disabled"), "red", "disabled,=,Disabled"];
|
|
||||||
}
|
|
||||||
if(doc.disabled==0){
|
|
||||||
return [__("Enabled"), "green", "disabled,=,0"];
|
|
||||||
}
|
|
||||||
} */
|
|
||||||
};
|
};
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user