diff --git a/erpnext/healthcare/doctype/inpatient_record/test_inpatient_record.py b/erpnext/healthcare/doctype/inpatient_record/test_inpatient_record.py index b192064f61a..f912ddb0435 100644 --- a/erpnext/healthcare/doctype/inpatient_record/test_inpatient_record.py +++ b/erpnext/healthcare/doctype/inpatient_record/test_inpatient_record.py @@ -7,10 +7,11 @@ import frappe import unittest from frappe.utils import now_datetime, today from frappe.utils.make_random import get_random -from erpnext.healthcare.doctype.inpatient_record.inpatient_record import admit_patient, discharge_patient +from erpnext.healthcare.doctype.inpatient_record.inpatient_record import admit_patient, discharge_patient, schedule_discharge class TestInpatientRecord(unittest.TestCase): def test_admit_and_discharge(self): + frappe.db.sql("""delete from `tabInpatient Record`""") patient = get_patient() # Schedule Admission ip_record = create_inpatient(patient) @@ -25,10 +26,18 @@ class TestInpatientRecord(unittest.TestCase): self.assertEqual(1, frappe.db.get_value("Healthcare Service Unit", service_unit, "occupied")) # Discharge - discharge_patient(ip_record) + schedule_discharge(patient=patient) + self.assertEqual(0, frappe.db.get_value("Healthcare Service Unit", service_unit, "occupied")) + + ip_record1 = frappe.get_doc("Inpatient Record", ip_record.name) + # Validate Pending Invoices + self.assertRaises(frappe.ValidationError, ip_record.discharge) + mark_invoiced_inpatient_occupancy(ip_record1) + + discharge_patient(ip_record1) + self.assertEqual(None, frappe.db.get_value("Patient", patient, "inpatient_record")) self.assertEqual(None, frappe.db.get_value("Patient", patient, "inpatient_status")) - self.assertEqual(0, frappe.db.get_value("Healthcare Service Unit", service_unit, "occupied")) def test_validate_overlap_admission(self): frappe.db.sql("""delete from `tabInpatient Record`""") @@ -45,6 +54,12 @@ class TestInpatientRecord(unittest.TestCase): self.assertRaises(frappe.ValidationError, ip_record_new.save) frappe.db.sql("""delete from `tabInpatient Record`""") +def mark_invoiced_inpatient_occupancy(ip_record): + if ip_record.inpatient_occupancies: + for inpatient_occupancy in ip_record.inpatient_occupancies: + inpatient_occupancy.invoiced = 1 + ip_record.save(ignore_permissions = True) + def create_inpatient(patient): patient_obj = frappe.get_doc('Patient', patient) inpatient_record = frappe.new_doc('Inpatient Record')