Beispiel #1
0
def manage_fee_validity(appointment):
    fee_validity = check_fee_validity(appointment)

    if fee_validity:
        if appointment.status == 'Cancelled' and fee_validity.visited > 0:
            fee_validity.visited -= 1
            frappe.db.delete('Fee Validity Reference',
                             {'appointment': appointment.name})
        elif fee_validity.status == 'Completed':
            return
        else:
            fee_validity.visited += 1
            fee_validity.append('ref_appointments',
                                {'appointment': appointment.name})
        fee_validity.save(ignore_permissions=True)
    else:
        fee_validity = create_fee_validity(appointment)
    return fee_validity
Beispiel #2
0
def manage_fee_validity(appointment):
    fee_validity = check_fee_validity(appointment)

    if fee_validity:
        if appointment.status == "Cancelled" and fee_validity.visited > 0:
            fee_validity.visited -= 1
            frappe.db.delete("Fee Validity Reference",
                             {"appointment": appointment.name})
        elif fee_validity.status == "Completed":
            return
        else:
            fee_validity.visited += 1
            fee_validity.append("ref_appointments",
                                {"appointment": appointment.name})
        fee_validity.save(ignore_permissions=True)
    else:
        fee_validity = create_fee_validity(appointment)
    return fee_validity
Beispiel #3
0
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
    visited = 0
    if validity_exist:
        fee_validity = frappe.get_doc("Fee Validity", validity_exist[0][0])
        # Check if the validity is valid
        if (fee_validity.valid_till >= appointment_doc.appointment_date):
            if (method == "on_cancel" and appointment_doc.status != "Closed"):
                if ref_invoice == fee_validity.ref_invoice:
                    visited = fee_validity.visited - 1
                    if visited < 0:
                        visited = 0
                    frappe.db.set_value("Fee Validity", fee_validity.name,
                                        "visited", visited)
                do_not_update = True
            elif (method == "on_submit"
                  and fee_validity.visited < fee_validity.max_visit):
                visited = fee_validity.visited + 1
                frappe.db.set_value("Fee Validity", fee_validity.name,
                                    "visited", visited)
                do_not_update = True
            else:
                do_not_update = False

        if not do_not_update:
            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,
                                           ref_invoice)
        visited = fee_validity.visited

    # Mark All Patient Appointment invoiced = True in the validity range do not cross the max visit
    if (method == "on_cancel"):
        invoiced = True
    else:
        invoiced = False

    patient_appointments = appointments_valid_in_fee_validity(
        appointment_doc, invoiced)
    if patient_appointments and fee_validity:
        visit = visited
        for appointment in patient_appointments:
            if (method == "on_cancel" and appointment.status != "Closed"):
                if ref_invoice == fee_validity.ref_invoice:
                    visited = visited - 1
                    if visited < 0:
                        visited = 0
                    frappe.db.set_value("Fee Validity", fee_validity.name,
                                        "visited", visited)
                frappe.db.set_value("Patient Appointment", appointment.name,
                                    "invoiced", False)
                manage_doc_for_appoitnment("Patient Encounter",
                                           appointment.name, False)
            elif method == "on_submit" and int(fee_validity.max_visit) > visit:
                if ref_invoice == fee_validity.ref_invoice:
                    visited = visited + 1
                    frappe.db.set_value("Fee Validity", fee_validity.name,
                                        "visited", visited)
                frappe.db.set_value("Patient Appointment", appointment.name,
                                    "invoiced", True)
                manage_doc_for_appoitnment("Patient Encounter",
                                           appointment.name, True)
            if ref_invoice == fee_validity.ref_invoice:
                visit = visit + 1

    if method == "on_cancel":
        ref_invoice_in_fee_validity = frappe.db.get_value(
            "Fee Validity", fee_validity.name, 'ref_invoice')
        if ref_invoice_in_fee_validity == ref_invoice:
            frappe.delete_doc("Fee Validity", fee_validity.name)
Beispiel #4
0
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
	visited = 0
	if validity_exist:
		fee_validity = frappe.get_doc("Fee Validity", validity_exist[0][0])
		# Check if the validity is valid
		if (fee_validity.valid_till >= appointment_doc.appointment_date):
			if (method == "on_cancel" and appointment_doc.status != "Closed"):
				if ref_invoice == fee_validity.ref_invoice:
					visited = fee_validity.visited - 1
					if visited < 0:
						visited = 0
					frappe.db.set_value("Fee Validity", fee_validity.name, "visited", visited)
				do_not_update = True
			elif (method == "on_submit" and fee_validity.visited < fee_validity.max_visit):
				visited = fee_validity.visited + 1
				frappe.db.set_value("Fee Validity", fee_validity.name, "visited", visited)
				do_not_update = True
			else:
				do_not_update = False

		if not do_not_update:
			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, ref_invoice)
		visited = fee_validity.visited

	# Mark All Patient Appointment invoiced = True in the validity range do not cross the max visit
	if (method == "on_cancel"):
		invoiced = True
	else:
		invoiced = False

	patient_appointments = appointments_valid_in_fee_validity(appointment_doc, invoiced)
	if patient_appointments and fee_validity:
		visit = visited
		for appointment in patient_appointments:
			if (method == "on_cancel" and appointment.status != "Closed"):
				if ref_invoice == fee_validity.ref_invoice:
					visited = visited - 1
					if visited < 0:
						visited = 0
					frappe.db.set_value("Fee Validity", fee_validity.name, "visited", visited)
				frappe.db.set_value("Patient Appointment", appointment.name, "invoiced", False)
				manage_doc_for_appoitnment("Patient Encounter", appointment.name, False)
			elif method == "on_submit" and int(fee_validity.max_visit) > visit:
				if ref_invoice == fee_validity.ref_invoice:
					visited = visited + 1
					frappe.db.set_value("Fee Validity", fee_validity.name, "visited", visited)
				frappe.db.set_value("Patient Appointment", appointment.name, "invoiced", True)
				manage_doc_for_appoitnment("Patient Encounter", appointment.name, True)
			if ref_invoice == fee_validity.ref_invoice:
				visit = visit + 1

	if method == "on_cancel":
		ref_invoice_in_fee_validity = frappe.db.get_value("Fee Validity", fee_validity.name, 'ref_invoice')
		if ref_invoice_in_fee_validity == ref_invoice:
			frappe.delete_doc("Fee Validity", fee_validity.name)