Fee Validity - Test - Updated
diff --git a/erpnext/healthcare/doctype/fee_validity/test_fee_validity.py b/erpnext/healthcare/doctype/fee_validity/test_fee_validity.py
index 64222ad..b8305d7 100644
--- a/erpnext/healthcare/doctype/fee_validity/test_fee_validity.py
+++ b/erpnext/healthcare/doctype/fee_validity/test_fee_validity.py
@@ -5,33 +5,35 @@
import frappe
import unittest
-from erpnext.healthcare.doctype.patient_appointment.patient_appointment import invoice_appointment
from frappe.utils.make_random import get_random
-from frappe.utils import nowdate, add_days
-# test_records = frappe.get_test_records('Fee Validity')
+from frappe.utils import nowdate, add_days, getdate
+
+test_dependencies = ["Company"]
class TestFeeValidity(unittest.TestCase):
def test_fee_validity(self):
+ frappe.db.sql("""delete from `tabPatient Appointment`""")
+ frappe.db.sql("""delete from `tabFee Validity`""")
patient = get_random("Patient")
practitioner = get_random("Healthcare Practitioner")
department = get_random("Medical Department")
if not patient:
patient = frappe.new_doc("Patient")
- patient.patient_name = "Test Patient"
+ patient.patient_name = "_Test Patient"
patient.sex = "Male"
patient.save(ignore_permissions=True)
patient = patient.name
if not department:
medical_department = frappe.new_doc("Medical Department")
- medical_department.department = "Test Medical Department"
+ medical_department.department = "_Test Medical Department"
medical_department.save(ignore_permissions=True)
department = medical_department.name
if not practitioner:
practitioner = frappe.new_doc("Healthcare Practitioner")
- practitioner.first_name = "Amit Jain"
+ practitioner.first_name = "_Test Healthcare Practitioner"
practitioner.department = department
practitioner.save(ignore_permissions=True)
practitioner = practitioner.name
@@ -42,18 +44,22 @@
frappe.db.set_value("Healthcare Settings", None, "valid_days", 7)
appointment = create_appointment(patient, practitioner, nowdate(), department)
- invoice = frappe.db.get_value("Patient Appointment", appointment.name, "sales_invoice")
- self.assertEqual(invoice, None)
+ invoiced = frappe.db.get_value("Patient Appointment", appointment.name, "invoiced")
+ self.assertEqual(invoiced, 0)
+
invoice_appointment(appointment)
+
appointment = create_appointment(patient, practitioner, add_days(nowdate(), 4), department)
- invoice = frappe.db.get_value("Patient Appointment", appointment.name, "sales_invoice")
- self.assertTrue(invoice)
+ invoiced = frappe.db.get_value("Patient Appointment", appointment.name, "invoiced")
+ self.assertTrue(invoiced)
+
appointment = create_appointment(patient, practitioner, add_days(nowdate(), 5), department)
- invoice = frappe.db.get_value("Patient Appointment", appointment.name, "sales_invoice")
- self.assertEqual(invoice, None)
+ invoiced = frappe.db.get_value("Patient Appointment", appointment.name, "invoiced")
+ self.assertEqual(invoiced, 0)
+
appointment = create_appointment(patient, practitioner, add_days(nowdate(), 10), department)
- invoice = frappe.db.get_value("Patient Appointment", appointment.name, "sales_invoice")
- self.assertEqual(invoice, None)
+ invoiced = frappe.db.get_value("Patient Appointment", appointment.name, "invoiced")
+ self.assertEqual(invoiced, 0)
def create_appointment(patient, practitioner, appointment_date, department):
appointment = frappe.new_doc("Patient Appointment")
@@ -64,3 +70,34 @@
appointment.company = "_Test Company"
appointment.save(ignore_permissions=True)
return appointment
+
+def invoice_appointment(appointment_doc):
+ if not appointment_doc.name:
+ return False
+ sales_invoice = frappe.new_doc("Sales Invoice")
+ sales_invoice.customer = frappe.get_value("Patient", appointment_doc.patient, "customer")
+ sales_invoice.due_date = getdate()
+ sales_invoice.is_pos = 0
+ sales_invoice.company = appointment_doc.company
+ sales_invoice.debit_to = "_Test Receivable - _TC"
+
+ create_invoice_items(appointment_doc, sales_invoice)
+
+ sales_invoice.save(ignore_permissions=True)
+ sales_invoice.submit()
+
+def create_invoice_items(appointment, invoice):
+ item_line = invoice.append("items")
+ item_line.item_name = "Consulting Charges"
+ item_line.description = "Consulting Charges: " + appointment.practitioner
+ item_line.uom = "Nos"
+ item_line.conversion_factor = 1
+ item_line.income_account = "_Test Account Cost for Goods Sold - _TC"
+ item_line.cost_center = "_Test Cost Center - _TC"
+ item_line.rate = 250
+ item_line.amount = 250
+ item_line.qty = 1
+ item_line.reference_dt = "Patient Appointment"
+ item_line.reference_dn = appointment.name
+
+ return invoice