Fee Validity - invoice reference
diff --git a/erpnext/healthcare/doctype/fee_validity/fee_validity.py b/erpnext/healthcare/doctype/fee_validity/fee_validity.py
index a707236..9028545 100644
--- a/erpnext/healthcare/doctype/fee_validity/fee_validity.py
+++ b/erpnext/healthcare/doctype/fee_validity/fee_validity.py
@@ -11,7 +11,7 @@
 class FeeValidity(Document):
 	pass
 
-def update_fee_validity(fee_validity, date):
+def update_fee_validity(fee_validity, date, ref_invoice=None):
 	max_visit = frappe.db.get_value("Healthcare Settings", None, "max_visit")
 	valid_days = frappe.db.get_value("Healthcare Settings", None, "valid_days")
 	if not valid_days:
@@ -23,13 +23,14 @@
 	fee_validity.max_visit = max_visit
 	fee_validity.visited = 1
 	fee_validity.valid_till = valid_till
+	fee_validity.ref_invoice = ref_invoice
 	fee_validity.save(ignore_permissions=True)
 	return fee_validity
 
 
-def create_fee_validity(practitioner, patient, date):
+def create_fee_validity(practitioner, patient, date, ref_invoice=None):
 	fee_validity = frappe.new_doc("Fee Validity")
 	fee_validity.practitioner = practitioner
 	fee_validity.patient = patient
-	fee_validity = update_fee_validity(fee_validity, date)
+	fee_validity = update_fee_validity(fee_validity, date, ref_invoice)
 	return fee_validity
diff --git a/erpnext/healthcare/utils.py b/erpnext/healthcare/utils.py
index 5145c85..b038d8f 100644
--- a/erpnext/healthcare/utils.py
+++ b/erpnext/healthcare/utils.py
@@ -147,9 +147,9 @@
 		for item in doc.items:
 			if item.reference_dt and item.reference_dn:
 				if frappe.get_meta(item.reference_dt).has_field("invoiced"):
-					set_invoiced(item, method)
+					set_invoiced(item, method, doc.name)
 
-def set_invoiced(item, method):
+def set_invoiced(item, method, ref_invoice=None):
 	invoiced = False
 	if(method=="on_submit"):
 		validate_invoiced_on_submit(item)
@@ -160,7 +160,7 @@
 		if frappe.db.get_value('Patient Appointment', item.reference_dn, 'procedure_template'):
 			dt_from_appointment = "Clinical Procedure"
 		else:
-			manage_fee_validity(item.reference_dn, method)
+			manage_fee_validity(item.reference_dn, method, ref_invoice)
 			dt_from_appointment = "Patient Encounter"
 		manage_doc_for_appoitnment(dt_from_appointment, item.reference_dn, invoiced)
 
@@ -183,7 +183,7 @@
 		doc_created = frappe.db.get_value(dt, {'prescription': item.reference_dn})
 		frappe.db.set_value(dt, doc_created, 'invoiced', invoiced)
 
-def manage_fee_validity(appointment_name, method):
+def manage_fee_validity(appointment_name, method, ref_invoice=None):
 	appointment_doc = frappe.get_doc("Patient Appointment", appointment_name)
 	validity_exist = validity_exists(appointment_doc.practitioner, appointment_doc.patient)
 	do_not_update = False
@@ -206,10 +206,10 @@
 				do_not_update = False
 
 		if not do_not_update:
-			fee_validity = update_fee_validity(fee_validity, appointment_doc.appointment_date)
+			fee_validity = update_fee_validity(fee_validity, appointment_doc.appointment_date, ref_invoice)
 			visited = fee_validity.visited
 	else:
-		fee_validity = create_fee_validity(appointment_doc.practitioner, appointment_doc.patient, appointment_doc.appointment_date)
+		fee_validity = create_fee_validity(appointment_doc.practitioner, appointment_doc.patient, appointment_doc.appointment_date, ref_invoice)
 		visited = fee_validity.visited
 
 	# Mark All Patient Appointment invoiced = True in the validity range do not cross the max visit