feat: add create Sales Invoice option from Therapy Session
This commit is contained in:
parent
cf10fde5ec
commit
5e8f748a63
@ -19,12 +19,86 @@ frappe.ui.form.on('Therapy Session', {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (frm.doc.docstatus === 1) {
|
if (frm.doc.docstatus === 1) {
|
||||||
frm.add_custom_button(__('Patient Assessment'),function() {
|
frm.add_custom_button(__('Patient Assessment'), function() {
|
||||||
frappe.model.open_mapped_doc({
|
frappe.model.open_mapped_doc({
|
||||||
method: 'erpnext.healthcare.doctype.patient_assessment.patient_assessment.create_patient_assessment',
|
method: 'erpnext.healthcare.doctype.patient_assessment.patient_assessment.create_patient_assessment',
|
||||||
frm: frm,
|
frm: frm,
|
||||||
})
|
})
|
||||||
}, 'Create');
|
}, 'Create');
|
||||||
|
|
||||||
|
frm.add_custom_button(__('Sales Invoice'), function() {
|
||||||
|
frappe.model.open_mapped_doc({
|
||||||
|
method: 'erpnext.healthcare.doctype.therapy_session.therapy_session.invoice_therapy_session',
|
||||||
|
frm: frm,
|
||||||
|
})
|
||||||
|
}, 'Create');
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
patient: function(frm) {
|
||||||
|
if (frm.doc.patient) {
|
||||||
|
frappe.call({
|
||||||
|
'method': 'erpnext.healthcare.doctype.patient.patient.get_patient_detail',
|
||||||
|
args: {
|
||||||
|
patient: frm.doc.patient
|
||||||
|
},
|
||||||
|
callback: function (data) {
|
||||||
|
let age = '';
|
||||||
|
if (data.message.dob) {
|
||||||
|
age = calculate_age(data.message.dob);
|
||||||
|
} else if (data.message.age) {
|
||||||
|
age = data.message.age;
|
||||||
|
if (data.message.age_as_on) {
|
||||||
|
age = __('{0} as on {1}', [age, data.message.age_as_on]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
frm.set_value('patient_age', age);
|
||||||
|
frm.set_value('gender', data.message.sex);
|
||||||
|
frm.set_value('patient_name', data.message.patient_name);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
frm.set_value('patient_age', '');
|
||||||
|
frm.set_value('gender', '');
|
||||||
|
frm.set_value('patient_name', '');
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
appointment: function(frm) {
|
||||||
|
if (frm.doc.appointment) {
|
||||||
|
frappe.call({
|
||||||
|
'method': 'frappe.client.get',
|
||||||
|
args: {
|
||||||
|
doctype: 'Patient Appointment',
|
||||||
|
name: frm.doc.appointment
|
||||||
|
},
|
||||||
|
callback: function(data) {
|
||||||
|
let values = {
|
||||||
|
'patient':data.message.patient,
|
||||||
|
'therapy_type': data.message.therapy_type,
|
||||||
|
'therapy_plan': data.message.therapy_plan,
|
||||||
|
'practitioner': data.message.practitioner,
|
||||||
|
'department': data.message.department,
|
||||||
|
'start_date': data.message.appointment_date,
|
||||||
|
'start_time': data.message.appointment_time,
|
||||||
|
'service_unit': data.message.service_unit,
|
||||||
|
'company': data.message.company
|
||||||
|
};
|
||||||
|
frm.set_value(values);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
let values = {
|
||||||
|
'patient': '',
|
||||||
|
'therapy_type': '',
|
||||||
|
'therapy_plan': '',
|
||||||
|
'practitioner': '',
|
||||||
|
'department': '',
|
||||||
|
'start_date': '',
|
||||||
|
'start_time': '',
|
||||||
|
'service_unit': '',
|
||||||
|
};
|
||||||
|
frm.set_value(values);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -39,6 +113,8 @@ frappe.ui.form.on('Therapy Session', {
|
|||||||
callback: function(data) {
|
callback: function(data) {
|
||||||
frm.set_value('duration', data.message.default_duration);
|
frm.set_value('duration', data.message.default_duration);
|
||||||
frm.set_value('rate', data.message.rate);
|
frm.set_value('rate', data.message.rate);
|
||||||
|
frm.set_value('service_unit', data.message.healthcare_service_unit);
|
||||||
|
frm.set_value('department', data.message.medical_department);
|
||||||
frm.doc.exercises = [];
|
frm.doc.exercises = [];
|
||||||
$.each(data.message.exercises, function(_i, e) {
|
$.each(data.message.exercises, function(_i, e) {
|
||||||
let exercise = frm.add_child('exercises');
|
let exercise = frm.add_child('exercises');
|
||||||
|
@ -9,9 +9,11 @@
|
|||||||
"naming_series",
|
"naming_series",
|
||||||
"appointment",
|
"appointment",
|
||||||
"patient",
|
"patient",
|
||||||
|
"patient_name",
|
||||||
"patient_age",
|
"patient_age",
|
||||||
"gender",
|
"gender",
|
||||||
"column_break_5",
|
"column_break_5",
|
||||||
|
"company",
|
||||||
"therapy_plan",
|
"therapy_plan",
|
||||||
"therapy_type",
|
"therapy_type",
|
||||||
"practitioner",
|
"practitioner",
|
||||||
@ -20,7 +22,6 @@
|
|||||||
"duration",
|
"duration",
|
||||||
"rate",
|
"rate",
|
||||||
"location",
|
"location",
|
||||||
"company",
|
|
||||||
"column_break_12",
|
"column_break_12",
|
||||||
"service_unit",
|
"service_unit",
|
||||||
"start_date",
|
"start_date",
|
||||||
@ -163,7 +164,8 @@
|
|||||||
"fieldname": "company",
|
"fieldname": "company",
|
||||||
"fieldtype": "Link",
|
"fieldtype": "Link",
|
||||||
"label": "Company",
|
"label": "Company",
|
||||||
"options": "Company"
|
"options": "Company",
|
||||||
|
"reqd": 1
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"default": "0",
|
"default": "0",
|
||||||
@ -197,11 +199,18 @@
|
|||||||
{
|
{
|
||||||
"fieldname": "column_break_25",
|
"fieldname": "column_break_25",
|
||||||
"fieldtype": "Column Break"
|
"fieldtype": "Column Break"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fetch_from": "patient.patient_name",
|
||||||
|
"fieldname": "patient_name",
|
||||||
|
"fieldtype": "Data",
|
||||||
|
"label": "Patient Name",
|
||||||
|
"read_only": 1
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"is_submittable": 1,
|
"is_submittable": 1,
|
||||||
"links": [],
|
"links": [],
|
||||||
"modified": "2020-04-29 13:22:13.190353",
|
"modified": "2020-04-29 16:49:16.286006",
|
||||||
"modified_by": "Administrator",
|
"modified_by": "Administrator",
|
||||||
"module": "Healthcare",
|
"module": "Healthcare",
|
||||||
"name": "Therapy Session",
|
"name": "Therapy Session",
|
||||||
|
@ -7,7 +7,8 @@ import frappe
|
|||||||
from frappe.model.document import Document
|
from frappe.model.document import Document
|
||||||
from frappe.model.mapper import get_mapped_doc
|
from frappe.model.mapper import get_mapped_doc
|
||||||
from frappe import _
|
from frappe import _
|
||||||
from frappe.utils import cstr
|
from frappe.utils import cstr, getdate
|
||||||
|
from erpnext.healthcare.doctype.healthcare_settings.healthcare_settings import get_receivable_account, get_income_account
|
||||||
|
|
||||||
class TherapySession(Document):
|
class TherapySession(Document):
|
||||||
def validate(self):
|
def validate(self):
|
||||||
@ -73,6 +74,44 @@ def create_therapy_session(source_name, target_doc=None):
|
|||||||
return doc
|
return doc
|
||||||
|
|
||||||
|
|
||||||
|
@frappe.whitelist()
|
||||||
|
def invoice_therapy_session(source_name, target_doc=None):
|
||||||
|
def set_missing_values(source, target):
|
||||||
|
target.customer = frappe.db.get_value('Patient', source.patient, 'customer')
|
||||||
|
target.due_date = getdate()
|
||||||
|
target.debit_to = get_receivable_account(source.company)
|
||||||
|
item = target.append('items', {})
|
||||||
|
item = get_therapy_item(source, item)
|
||||||
|
target.set_missing_values(for_validate=True)
|
||||||
|
|
||||||
|
doc = get_mapped_doc('Therapy Session', source_name, {
|
||||||
|
'Therapy Session': {
|
||||||
|
'doctype': 'Sales Invoice',
|
||||||
|
'field_map': [
|
||||||
|
['patient', 'patient'],
|
||||||
|
['referring_practitioner', 'practitioner'],
|
||||||
|
['company', 'company'],
|
||||||
|
['due_date', 'start_date']
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}, target_doc, set_missing_values)
|
||||||
|
|
||||||
|
return doc
|
||||||
|
|
||||||
|
|
||||||
|
def get_therapy_item(therapy, item):
|
||||||
|
item.item_code = frappe.db.get_value('Therapy Type', therapy.therapy_type, 'item')
|
||||||
|
item.description = _('Therapy Session Charges: {0}').format(therapy.practitioner)
|
||||||
|
item.income_account = get_income_account(therapy.practitioner, therapy.company)
|
||||||
|
item.cost_center = frappe.get_cached_value('Company', therapy.company, 'cost_center')
|
||||||
|
item.rate = therapy.rate
|
||||||
|
item.amount = therapy.rate
|
||||||
|
item.qty = 1
|
||||||
|
item.reference_dt = 'Therapy Session'
|
||||||
|
item.reference_dn = therapy.name
|
||||||
|
return item
|
||||||
|
|
||||||
|
|
||||||
def insert_session_medical_record(doc):
|
def insert_session_medical_record(doc):
|
||||||
subject = frappe.bold(_('Therapy: ')) + cstr(doc.therapy_type) + '<br>'
|
subject = frappe.bold(_('Therapy: ')) + cstr(doc.therapy_type) + '<br>'
|
||||||
if doc.therapy_plan:
|
if doc.therapy_plan:
|
||||||
|
Loading…
Reference in New Issue
Block a user