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",{
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);
if(!frm.doc.lab_test_description)
if (!frm.doc.lab_test_description)
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
frm.set_query("lab_test_template", "lab_test_groups", function() {
return {
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.set_df_property("lab_test_code", "read_only", doc.__islocal ? 0 : 1);
if(!doc.__islocal) {
cur_frm.add_custom_button(__('Change Template Code'), function() {
change_template_code(cur_frm,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);
} );
}
if (!doc.__islocal) {
cur_frm.add_custom_button(__("Change Template Code"), function() {
change_template_code(doc);
});
}
};
var disable_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: 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({
let change_template_code = function(doc) {
let d = new frappe.ui.Dialog({
title:__("Change Template Code"),
fields:[
{
"fieldtype": "Data",
"label": "Test Template Code",
"fieldname": "Test Code",
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();
}
"label": "Lab Test Template Code",
"fieldname": "lab_test_code",
reqd: 1
}
]
],
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.set_values({
'Test Code': doc.lab_test_code
});
var change_test_code_from_template = function(lab_test_code,doc){
frappe.call({
"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);
}
});
};
d.set_values({
"lab_test_code": doc.lab_test_code
});
};
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) {
var child = locals[cdt][cdn];
if(child.template_or_new_line =="Add new line"){
let child = locals[cdt][cdn];
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_description', "");
}

View File

@ -9,59 +9,76 @@ from frappe.model.rename_doc import rename_doc
from frappe import _
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):
#Item and Price List update --> if (change_in_item)
if(self.change_in_item and self.is_billable == 1 and self.item):
updating_item(self)
item_price = item_price_exist(self)
# if change_in_item update Item and Price List
if self.change_in_item and self.is_billable and self.item:
self.update_item()
item_price = self.item_price_exists()
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})
if(self.lab_test_rate):
if self.lab_test_rate:
make_item_price(self.lab_test_code, price_list_name, self.lab_test_rate)
else:
make_item_price(self.lab_test_code, price_list_name, 0.0)
else:
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)
elif(self.is_billable == 0 and self.item):
frappe.db.set_value("Item",self.item,"disabled",1)
frappe.db.set_value(self.doctype, self.name, "change_in_item", 0)
elif not self.is_billable and self.item:
frappe.db.set_value("Item", self.item, "disabled", 1)
self.reload()
def after_insert(self):
if not self.item:
create_item_from_template(self)
#Call before delete the template
def on_trash(self):
# remove template refernce from item and disable item
if(self.item):
# remove template reference from item and disable item
if self.item:
try:
frappe.delete_doc("Item",self.item, force=True)
frappe.delete_doc("Item", self.item)
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):
item_price = frappe.db.exists({
"doctype": "Item Price",
"item_code": doc.lab_test_code})
if(item_price):
return item_price[0][0]
else:
return False
def enable_disable_item(self):
if self.is_billable:
if self.disabled:
frappe.db.set_value('Item', self.item, 'disabled', 1)
else:
frappe.db.set_value('Item', self.item, 'disabled', 0)
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):
if(doc.is_billable == 1):
if doc.is_billable:
disabled = 0
else:
disabled = 1
#insert item
# insert item
item = frappe.get_doc({
"doctype": "Item",
"item_code": doc.lab_test_code,
@ -78,9 +95,9 @@ def create_item_from_template(doc):
"stock_uom": "Unit"
}).insert(ignore_permissions=True)
#insert item price
#get item price list to insert item price
if(doc.lab_test_rate != 0.0):
# insert item price
# get item price list to insert item price
if doc.lab_test_rate != 0.0:
price_list_name = frappe.db.get_value("Price List", {"selling": 1})
if(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)
item.standard_rate = 0.0
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)
doc.reload() #refresh the doc after insert.
doc.reload()
def make_item_price(item, price_list_name, item_price):
frappe.get_doc({
@ -104,22 +121,13 @@ def make_item_price(item, price_list_name, item_price):
@frappe.whitelist()
def change_test_code_from_template(lab_test_code, doc):
args = json.loads(doc)
doc = frappe._dict(args)
doc = frappe._dict(json.loads(doc))
item_exist = frappe.db.exists({
"doctype": "Item",
"item_code": lab_test_code})
if(item_exist):
frappe.throw(_("Code {0} already exist").format(lab_test_code))
if frappe.db.exists({ "doctype": "Item", "item_code": lab_test_code}):
frappe.throw(_("Lab Test Item {0} already exist").format(lab_test_code))
else:
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)
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)
return lab_test_code

View File

@ -3,13 +3,5 @@
*/
frappe.listview_settings['Lab Test Template'] = {
add_fields: ["lab_test_name", "lab_test_code", "lab_test_rate"],
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"];
}
} */
filters: [["disabled", "=", 0]]
};