fix: Clinical Procedure Template code refactor

This commit is contained in:
Rucha Mahabal 2020-02-28 13:30:43 +05:30
parent 8c5725c799
commit d76908d757
5 changed files with 235 additions and 528 deletions

View File

@ -1,431 +1,122 @@
{ {
"allow_copy": 0, "actions": [],
"allow_events_in_timeline": 0,
"allow_guest_to_view": 0,
"allow_import": 0,
"allow_rename": 0,
"beta": 1, "beta": 1,
"creation": "2017-10-05 16:15:10.876952", "creation": "2017-10-05 16:15:10.876952",
"custom": 0,
"docstatus": 0,
"doctype": "DocType", "doctype": "DocType",
"document_type": "",
"editable_grid": 1, "editable_grid": 1,
"engine": "InnoDB", "engine": "InnoDB",
"field_order": [
"item_code",
"barcode",
"item_name",
"qty",
"uom",
"invoice_separately_as_consumables",
"column_break_5",
"batch_no",
"conversion_factor",
"stock_uom",
"transfer_qty",
"actual_qty"
],
"fields": [ "fields": [
{ {
"allow_bulk_edit": 0,
"allow_in_quick_entry": 0,
"allow_on_submit": 0,
"bold": 1, "bold": 1,
"collapsible": 0,
"columns": 3, "columns": 3,
"fieldname": "item_code", "fieldname": "item_code",
"fieldtype": "Link", "fieldtype": "Link",
"hidden": 0,
"ignore_user_permissions": 1, "ignore_user_permissions": 1,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 1, "in_global_search": 1,
"in_list_view": 1, "in_list_view": 1,
"in_standard_filter": 0,
"label": "Item", "label": "Item",
"length": 0,
"no_copy": 0,
"options": "Item", "options": "Item",
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 1, "reqd": 1,
"search_index": 1, "search_index": 1
"set_only_once": 0,
"translatable": 0,
"unique": 0
}, },
{ {
"allow_bulk_edit": 0,
"allow_in_quick_entry": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"fieldname": "barcode", "fieldname": "barcode",
"fieldtype": "Data", "fieldtype": "Data",
"hidden": 0, "label": "Barcode"
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"label": "Barcode",
"length": 0,
"no_copy": 0,
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 0,
"search_index": 0,
"set_only_once": 0,
"translatable": 0,
"unique": 0
}, },
{ {
"allow_bulk_edit": 0,
"allow_in_quick_entry": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"fieldname": "item_name", "fieldname": "item_name",
"fieldtype": "Data", "fieldtype": "Data",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 1, "in_list_view": 1,
"in_standard_filter": 0, "label": "Item Name"
"label": "Item Name",
"length": 0,
"no_copy": 0,
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 0,
"search_index": 0,
"set_only_once": 0,
"translatable": 0,
"unique": 0
}, },
{ {
"allow_bulk_edit": 0,
"allow_in_quick_entry": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"fieldname": "qty", "fieldname": "qty",
"fieldtype": "Float", "fieldtype": "Float",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 1, "in_list_view": 1,
"in_standard_filter": 0,
"label": "Quantity", "label": "Quantity",
"length": 0, "reqd": 1
"no_copy": 0,
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 1,
"search_index": 0,
"set_only_once": 0,
"translatable": 0,
"unique": 0
}, },
{ {
"allow_bulk_edit": 0,
"allow_in_quick_entry": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"fieldname": "uom", "fieldname": "uom",
"fieldtype": "Link", "fieldtype": "Link",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 1, "in_list_view": 1,
"in_standard_filter": 0,
"label": "UOM", "label": "UOM",
"length": 0,
"no_copy": 0,
"options": "UOM", "options": "UOM",
"permlevel": 0, "reqd": 1
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 1,
"search_index": 0,
"set_only_once": 0,
"translatable": 0,
"unique": 0
}, },
{ {
"allow_bulk_edit": 0, "default": "0",
"allow_in_quick_entry": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"fieldname": "invoice_separately_as_consumables", "fieldname": "invoice_separately_as_consumables",
"fieldtype": "Check", "fieldtype": "Check",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 1, "in_list_view": 1,
"in_standard_filter": 0, "label": "Invoice Separately as Consumables"
"label": "Invoice Separately as Consumables",
"length": 0,
"no_copy": 0,
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 0,
"search_index": 0,
"set_only_once": 0,
"translatable": 0,
"unique": 0
}, },
{ {
"allow_bulk_edit": 0,
"allow_in_quick_entry": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"fieldname": "column_break_5", "fieldname": "column_break_5",
"fieldtype": "Column Break", "fieldtype": "Column Break"
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"length": 0,
"no_copy": 0,
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 0,
"search_index": 0,
"set_only_once": 0,
"translatable": 0,
"unique": 0
}, },
{ {
"allow_bulk_edit": 0,
"allow_in_quick_entry": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"fieldname": "batch_no", "fieldname": "batch_no",
"fieldtype": "Link", "fieldtype": "Link",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"label": "Batch", "label": "Batch",
"length": 0, "options": "Batch"
"no_copy": 0,
"options": "Batch",
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 0,
"search_index": 0,
"set_only_once": 0,
"translatable": 0,
"unique": 0
}, },
{ {
"allow_bulk_edit": 0,
"allow_in_quick_entry": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"fieldname": "conversion_factor", "fieldname": "conversion_factor",
"fieldtype": "Float", "fieldtype": "Float",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"label": "Conversion Factor", "label": "Conversion Factor",
"length": 0, "read_only": 1
"no_copy": 0,
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 1,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 0,
"search_index": 0,
"set_only_once": 0,
"translatable": 0,
"unique": 0
}, },
{ {
"allow_bulk_edit": 0,
"allow_in_quick_entry": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"fieldname": "stock_uom", "fieldname": "stock_uom",
"fieldtype": "Link", "fieldtype": "Link",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"label": "Stock UOM", "label": "Stock UOM",
"length": 0,
"no_copy": 0,
"options": "UOM", "options": "UOM",
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 1, "read_only": 1,
"remember_last_selected_value": 0, "reqd": 1
"report_hide": 0,
"reqd": 1,
"search_index": 0,
"set_only_once": 0,
"translatable": 0,
"unique": 0
}, },
{ {
"allow_bulk_edit": 0,
"allow_in_quick_entry": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"fieldname": "transfer_qty", "fieldname": "transfer_qty",
"fieldtype": "Float", "fieldtype": "Float",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"label": "Transfer Qty", "label": "Transfer Qty",
"length": 0, "read_only": 1
"no_copy": 0,
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 1,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 0,
"search_index": 0,
"set_only_once": 0,
"translatable": 0,
"unique": 0
}, },
{ {
"allow_bulk_edit": 0,
"allow_in_quick_entry": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"fieldname": "actual_qty", "fieldname": "actual_qty",
"fieldtype": "Float", "fieldtype": "Float",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"label": "Actual Qty (at source/target)", "label": "Actual Qty (at source/target)",
"length": 0,
"no_copy": 1, "no_copy": 1,
"permlevel": 0,
"precision": "",
"print_hide": 1, "print_hide": 1,
"print_hide_if_no_value": 0,
"read_only": 1, "read_only": 1,
"remember_last_selected_value": 0, "search_index": 1
"report_hide": 0,
"reqd": 0,
"search_index": 1,
"set_only_once": 0,
"translatable": 0,
"unique": 0
} }
], ],
"has_web_view": 0,
"hide_heading": 0,
"hide_toolbar": 0,
"idx": 0,
"image_view": 0,
"in_create": 0,
"is_submittable": 0,
"issingle": 0,
"istable": 1, "istable": 1,
"max_attachments": 0, "links": [],
"modified": "2018-11-04 03:33:16.833884", "modified": "2020-02-28 13:15:09.058073",
"modified_by": "Administrator", "modified_by": "Administrator",
"module": "Healthcare", "module": "Healthcare",
"name": "Clinical Procedure Item", "name": "Clinical Procedure Item",
"name_case": "",
"owner": "Administrator", "owner": "Administrator",
"permissions": [], "permissions": [],
"quick_entry": 1, "quick_entry": 1,
"read_only": 0,
"read_only_onload": 0,
"restrict_to_domain": "Healthcare", "restrict_to_domain": "Healthcare",
"show_name_in_global_search": 0,
"sort_field": "modified", "sort_field": "modified",
"sort_order": "DESC", "sort_order": "DESC",
"track_changes": 1, "track_changes": 1
"track_seen": 0,
"track_views": 0
} }

View File

@ -3,32 +3,38 @@
frappe.ui.form.on('Clinical Procedure Template', { frappe.ui.form.on('Clinical Procedure Template', {
template: function(frm) { template: function(frm) {
if(!frm.doc.item_code) if (!frm.doc.item_code)
frm.set_value("item_code", frm.doc.template); frm.set_value('item_code', frm.doc.template);
if(!frm.doc.description) if (!frm.doc.description)
frm.set_value("description", frm.doc.template); frm.set_value('description', frm.doc.template);
mark_change_in_item(frm); mark_change_in_item(frm);
}, },
rate: function(frm) { rate: function(frm) {
mark_change_in_item(frm); mark_change_in_item(frm);
}, },
is_billable: function (frm) { is_billable: function (frm) {
mark_change_in_item(frm); mark_change_in_item(frm);
}, },
item_group: function(frm) { item_group: function(frm) {
mark_change_in_item(frm); mark_change_in_item(frm);
}, },
description: function(frm) { description: function(frm) {
mark_change_in_item(frm); mark_change_in_item(frm);
}, },
medical_department: function(frm) { medical_department: function(frm) {
mark_change_in_item(frm); mark_change_in_item(frm);
}, },
refresh: function(frm) { refresh: function(frm) {
frm.fields_dict["items"].grid.set_column_disp("barcode", false); frm.fields_dict['items'].grid.set_column_disp('barcode', false);
frm.fields_dict["items"].grid.set_column_disp("batch_no", false); frm.fields_dict['items'].grid.set_column_disp('batch_no', false);
cur_frm.set_df_property("item_code", "read_only", frm.doc.__islocal ? 0 : 1);
if(!frm.doc.__islocal) { if (!frm.doc.__islocal) {
cur_frm.add_custom_button(__('Change Item Code'), function() { cur_frm.add_custom_button(__('Change Item Code'), function() {
change_template_code(frm.doc); change_template_code(frm.doc);
}); });
@ -36,106 +42,104 @@ frappe.ui.form.on('Clinical Procedure Template', {
} }
}); });
var mark_change_in_item = function(frm) { let mark_change_in_item = function(frm) {
if(!frm.doc.__islocal){ if (!frm.doc.__islocal) {
frm.doc.change_in_item = 1; frm.doc.change_in_item = 1;
} }
}; };
var change_template_code = function(doc){ let change_template_code = function(doc) {
var d = new frappe.ui.Dialog({ let d = new frappe.ui.Dialog({
title:__("Change Template Code"), title:__('Change Item Code'),
fields:[ fields:[
{ {
"fieldtype": "Data", 'fieldtype': 'Data',
"label": "Template Code", 'label': 'Item Code',
"fieldname": "Item Code", 'fieldname': 'item_code',
reqd:1 reqd: 1
},
{
"fieldtype": "Button",
"label": __("Change Code"),
click: function() {
var values = d.get_values();
if(!values)
return;
change_item_code_from_template(values["Item Code"], doc);
d.hide();
}
} }
] ],
primary_action: function() {
let values = d.get_values();
if (values) {
frappe.call({
'method': 'erpnext.healthcare.doctype.clinical_procedure_template.clinical_procedure_template.change_item_code_from_template',
'args': {item_code: values.item_code, doc: doc},
callback: function () {
cur_frm.reload_doc();
frappe.show_alert({
message: 'Item Code renamed successfully',
indicator: 'green'
});
}
});
}
d.hide();
},
primary_action_label: __('Change Item Code')
}); });
d.show(); d.show();
d.set_values({
'Item Code': doc.item_code
});
};
var change_item_code_from_template = function(item_code, doc){ d.set_values({
frappe.call({ 'item_code': doc.item_code
"method": "erpnext.healthcare.doctype.clinical_procedure_template.clinical_procedure_template.change_item_code_from_template",
"args": {item_code: item_code, doc: doc},
callback: function () {
cur_frm.reload_doc();
frappe.show_alert({
message: "Item Code renamed successfully",
indicator: "green"
});
}
}); });
}; };
frappe.ui.form.on('Clinical Procedure Item', { frappe.ui.form.on('Clinical Procedure Item', {
qty: function(frm, cdt, cdn){ qty: function(frm, cdt, cdn) {
var d = locals[cdt][cdn]; let d = locals[cdt][cdn];
frappe.model.set_value(cdt, cdn, "transfer_qty", d.qty*d.conversion_factor); frappe.model.set_value(cdt, cdn, 'transfer_qty', d.qty * d.conversion_factor);
}, },
uom: function(doc, cdt, cdn){ uom: function(doc, cdt, cdn){
var d = locals[cdt][cdn]; let d = locals[cdt][cdn];
if(d.uom && d.item_code){ if (d.uom && d.item_code) {
return frappe.call({ return frappe.call({
method: "erpnext.stock.doctype.stock_entry.stock_entry.get_uom_details", method: 'erpnext.stock.doctype.stock_entry.stock_entry.get_uom_details',
args: { args: {
item_code: d.item_code, item_code: d.item_code,
uom: d.uom, uom: d.uom,
qty: d.qty qty: d.qty
}, },
callback: function(r) { callback: function(r) {
if(r.message) { if (r.message) {
frappe.model.set_value(cdt, cdn, r.message); frappe.model.set_value(cdt, cdn, r.message);
} }
} }
}); });
} }
}, },
item_code: function(frm, cdt, cdn) { item_code: function(frm, cdt, cdn) {
var d = locals[cdt][cdn]; let d = locals[cdt][cdn];
if(d.item_code) { if (d.item_code) {
let args = { let args = {
'item_code' : d.item_code, 'item_code' : d.item_code,
'transfer_qty' : d.transfer_qty, 'transfer_qty' : d.transfer_qty,
'company' : frm.doc.company, 'company' : frm.doc.company,
'quantity' : d.qty 'quantity' : d.qty
}; };
return frappe.call({ return frappe.call({
doc: frm.doc, doc: frm.doc,
method: "get_item_details", method: 'get_item_details',
args: args, args: args,
callback: function(r) { callback: function(r) {
if(r.message) { if (r.message) {
var d = locals[cdt][cdn]; let d = locals[cdt][cdn];
$.each(r.message, function(k, v){ $.each(r.message, function(k, v){
d[k] = v; d[k] = v;
}); });
refresh_field("items"); refresh_field('items');
} }
} }
}); });
} }
} }
}); });
// List Stock items // List Stock items
cur_frm.set_query("item_code", "items", function() { cur_frm.set_query('item_code', 'items', function() {
return { return {
filters: { filters: {
is_stock_item:1 is_stock_item:1

View File

@ -79,6 +79,8 @@
"depends_on": "is_billable", "depends_on": "is_billable",
"fieldname": "rate", "fieldname": "rate",
"fieldtype": "Float", "fieldtype": "Float",
"in_list_view": 1,
"in_standard_filter": 1,
"label": "Rate", "label": "Rate",
"mandatory_depends_on": "is_billable" "mandatory_depends_on": "is_billable"
}, },
@ -127,7 +129,8 @@
"fetch_from": "sample.sample_uom", "fetch_from": "sample.sample_uom",
"fieldname": "sample_uom", "fieldname": "sample_uom",
"fieldtype": "Data", "fieldtype": "Data",
"label": "UOM" "label": "Sample UOM",
"read_only": 1
}, },
{ {
"fieldname": "sample_qty", "fieldname": "sample_qty",
@ -163,6 +166,8 @@
{ {
"fieldname": "item", "fieldname": "item",
"fieldtype": "Link", "fieldtype": "Link",
"in_list_view": 1,
"in_standard_filter": 1,
"label": "Item", "label": "Item",
"no_copy": 1, "no_copy": 1,
"options": "Item", "options": "Item",
@ -170,7 +175,7 @@
} }
], ],
"links": [], "links": [],
"modified": "2020-02-27 16:32:55.780893", "modified": "2020-02-28 13:20:23.692613",
"modified_by": "Administrator", "modified_by": "Administrator",
"module": "Healthcare", "module": "Healthcare",
"name": "Clinical Procedure Template", "name": "Clinical Procedure Template",

View File

@ -17,16 +17,8 @@ class ClinicalProcedureTemplate(Document):
create_item_from_template(self) create_item_from_template(self)
def on_update(self): def on_update(self):
#Item and Price List update --> if (change_in_item) if self.change_in_item:
if self.change_in_item and self.is_billable == 1 and self.item: self.update_item_and_item_price()
updating_item(self)
if self.rate != 0.0:
updating_rate(self)
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)
self.reload()
def enable_disable_item(self): def enable_disable_item(self):
if self.is_billable: if self.is_billable:
@ -35,26 +27,26 @@ class ClinicalProcedureTemplate(Document):
else: else:
frappe.db.set_value('Item', self.item, 'disabled', 0) frappe.db.set_value('Item', self.item, 'disabled', 0)
#Call before delete the template
def on_trash(self): def on_trash(self):
if(self.item): if self.item:
try: try:
frappe.delete_doc('Item',self.item) frappe.delete_doc('Item', self.item)
except Exception: except Exception:
frappe.throw(_("""Not permitted. Please disable the Procedure Template""")) frappe.throw(_('Not permitted. Please disable the Procedure Template'), title='Not Permitted')
def get_item_details(self, args=None): def get_item_details(self, args=None):
item = frappe.db.sql("""select stock_uom, item_name item = frappe.db.get_all('Item',
from `tabItem` filters={
where name = %s 'disabled': 0,
and disabled=0 'name': args.get('item_code')
and (end_of_life is null or end_of_life='0000-00-00' or end_of_life > %s)""", },
(args.get('item_code'), nowdate()), as_dict = 1) fields=['stock_uom', 'item_name']
)
if not item: if not item:
frappe.throw(_('Item {0} is not active or end of life has been reached').format(args.get('item_code'))) frappe.throw(_('Item {0} is not active').format(args.get('item_code')))
item = item[0] item = item[0]
ret = { ret = {
'uom' : item.stock_uom, 'uom' : item.stock_uom,
'stock_uom' : item.stock_uom, 'stock_uom' : item.stock_uom,
@ -65,22 +57,34 @@ class ClinicalProcedureTemplate(Document):
} }
return ret return ret
def updating_item(self): def update_item_and_item_price(self):
frappe.db.sql("""update `tabItem` set item_name=%s, item_group=%s, disabled=0, if self.is_billable and self.item:
description=%s, modified=NOW() where item_code=%s""", item_doc = frappe.get_doc('Item', {'item_code': self.item})
(self.template, self.item_group , self.description, self.item)) item_doc.item_name = self.template
def updating_rate(self): item_doc.item_group = self.item_group
frappe.db.sql("""update `tabItem Price` set item_name=%s, price_list_rate=%s, modified=NOW() where item_doc.description = self.description
item_code=%s""",(self.template, self.rate, self.item)) item_doc.disabled = 0
item_doc.save(ignore_permissions=True)
if self.rate:
item_price = frappe.get_doc('Item Price', {'item_code': self.item})
item_price.item_name = self.template
item_price.price_list_name = self.rate
item_price.save()
elif not self.is_billable and self.item:
frappe.db.set_value('Item', self.item, 'disabled', 1)
frappe.db.set_value(self.doctype, self.name, 'change_in_item', 0)
self.reload()
def create_item_from_template(doc): def create_item_from_template(doc):
disabled = 1 disabled = doc.disabled
if doc.is_billable and not doc.disabled:
if doc.is_billable == 1:
disabled = 0 disabled = 0
#insert item item = frappe.get_doc({
item = frappe.get_doc({
'doctype': 'Item', 'doctype': 'Item',
'item_code': doc.template, 'item_code': doc.template,
'item_name':doc.template, 'item_name':doc.template,
@ -96,20 +100,13 @@ def create_item_from_template(doc):
'stock_uom': 'Unit' 'stock_uom': 'Unit'
}).insert(ignore_permissions=True) }).insert(ignore_permissions=True)
#insert item price make_item_price(item.name, doc.rate)
#get item price list to insert item price
if(doc.rate != 0.0):
price_list_name = frappe.db.get_value('Price List', {'selling': 1})
if(doc.rate):
make_item_price(item.name, price_list_name, doc.rate)
else:
make_item_price(item.name, price_list_name, 0.0)
#Set item to the template
frappe.db.set_value('Clinical Procedure Template', doc.name, 'item', item.name) frappe.db.set_value('Clinical Procedure Template', doc.name, 'item', item.name)
doc.reload()
doc.reload() #refresh the doc after insert. def make_item_price(item, item_price):
price_list_name = frappe.db.get_value('Price List', {'selling': 1})
def make_item_price(item, price_list_name, item_price):
frappe.get_doc({ frappe.get_doc({
'doctype': 'Item Price', 'doctype': 'Item Price',
'price_list': price_list_name, 'price_list': price_list_name,
@ -119,13 +116,10 @@ def make_item_price(item, price_list_name, item_price):
@frappe.whitelist() @frappe.whitelist()
def change_item_code_from_template(item_code, doc): def change_item_code_from_template(item_code, doc):
args = json.loads(doc) doc = frappe._dict(json.loads(doc))
doc = frappe._dict(args)
if(frappe.db.exists({ if frappe.db.exists('Item', {'item_code': item_code}):
'doctype': 'Item', frappe.throw(_('Item with Item Code {0} already exists').format(item_code))
'item_code': item_code})):
frappe.throw(_('Code {0} already exist').format(item_code))
else: else:
rename_doc('Item', doc.item_code, item_code, ignore_permissions=True) rename_doc('Item', doc.item_code, item_code, ignore_permissions=True)
frappe.db.set_value('Clinical Procedure Template', doc.name, 'item_code', item_code) frappe.db.set_value('Clinical Procedure Template', doc.name, 'item_code', item_code)

View File

@ -0,0 +1,13 @@
from __future__ import unicode_literals
from frappe import _
def get_data():
return {
'fieldname': 'procedure_template',
'transactions': [
{
'label': _('Consultations'),
'items': ['Clinical Procedure']
}
]
}