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",{
|
||||
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', "");
|
||||
}
|
||||
|
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 _
|
||||
|
||||
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
|
@ -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]]
|
||||
};
|
||||
|
Loading…
x
Reference in New Issue
Block a user