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:
Rucha Mahabal 2020-01-24 16:12:08 +05:30 committed by Nabin Hait
parent 40dffab79e
commit 0a27c98a99
4 changed files with 331 additions and 1130 deletions

View File

@ -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', "");
} }

View File

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

View File

@ -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"];
}
} */
}; };