1. Home
  2. Docs
  3. Sales & Marketing
  4. Homeschooling Sales

Homeschooling Sales

Pre-Sales

Sending Initial Fee Invoice

Use Postman:

Authorization: Bearer {token}

Headers:

  • Content-Type: application/json

Body: raw JSON. Example:

{
	"external_id": "{NISN, e.g. 31750123456012345}",
	"amount": 20000000,
	"payer_email": "parent.email@example.com",
	"description": "NAME_OF_CHILD - Homeschooling Intensif {grade, e.g. 1 SMA IPA} - Uang Pangkal",
	"invoice_duration": 2592000,
	"should_send_email": true,
	"success_redirect_url": "https://lovia.life/id/edu/homeschooling/",
	"failure_redirect_url": "https://lovia.life/id/edu/homeschooling/"
}

Sending Monthly Fee Invoice

Use Postman:

Authorization: Bearer {token}

Headers:

  • Content-Type: application/json

Body: raw JSON. Example:

{
	"external_id": "{NISN, e.g. 31750123456012345}",
	"amount": 1500000,
	"payer_email": "parent.email@example.com",
	"description": "NAME_OF_CHILD - Homeschooling Intensif {grade, e.g. 1 SMA IPA} - {month, e.g. Juli 2020}",
	"invoice_duration": 2592000,
	"should_send_email": true,
	"success_redirect_url": "https://lovia.life/id/edu/homeschooling/",
	"failure_redirect_url": "https://lovia.life/id/edu/homeschooling/"
}

Education Program Operations

1. Fee Structure

Before creating a Fee Structure, it is advisable to create the following first:

  1. Academic Year : 2020-21
  2. Academic Term : 2020-21 -> Semester 1, 2020-21 -> Semester 2
  3. Program (and logo) & Courses for each program
  4. Student Category
    Student Category allows you to classify the students based on various categories.
    In Institutions, there may be fee concession for some categories such as Handicapped Students, Foreign Nationals, Reserved Categories by the government, etc.
    When a Student is enrolled for a Program, you can select the select the Category for the Student.
  5. Fee Categories

For accounting purposes, you will also need to first set up:

  1. Receivable Account, e.g. Piutang Dagang – L > Piutang Homeschooling – L
  2. Income Account, e.g. Pendapatan Service/Jasa – L > Pendapatan Homeschooling – L
  3. Cost Center, e.g. Lovia – L > Education – L > Homeschooling – L

Fee structure depends on Program, Academic Year & Term, and Student Category. Fee Structure Components:

  1. Entry Tuition Fee (Uang Pangkal). For Sekolah Virtual Megana Homeschooling Intensive, this is currently IDR 20,000,000.
  2. Registration Fee (Uang Pendaftaran). For Sekolah Virtual Megana Homeschooling Intensive, this is either IDR 2,000,000 or none, depending on Student Category and admission date.
  3. Tuition Fee (Biaya Bulanan/Semester). For Sekolah Virtual Megana Homeschooling Intensive, this is currently IDR 1,500,000 monthly or IDR 9,000,000 per semester.

2. Student Batch & Program Enrollment

  1. Create a Student Batch. “A Student batch is a collection of students from within Student Groups.”
  2. Create Program Enrollment for that student and using the batch.
  3. Set the Fees, if it’s paid in 6 months, then put the fees there in the enrollment.
  4. When you Submit the Program Enrollment, it will create the fees. Later you can make payment for these fees.

3. Student Groups

Student Batch

Before creating a Fee Schedule, you need to:

  1. Create a Student Group based on the Batch
  2. In that Student Group, click “Get Students” which will programmatically add the student(s) into that group.

Customer Operations

Education Operations Documents

  1. Customer: payor for invoice purposes
  2. Guardian: for both father and mother
  3. Student: create student.

Make Fee Payment

  1. To make a payment, go to the Fee (that should have been already created by Program Enrollment), then click Create > Payment.
  2. Make sure to fill the Deductions or Loss: 5510.001 – Beban Adm Bank – L, and 4210.001 – HPP Homeschooling – L. So the final profit/loss are accounted correctly.
Fee Payment with Loss scenario

Bug: As of ERPNext v13.beta4 Create Payment failed with: Server Error: AttributeError: ‘Fees’ object has no attribute ‘base_grand_total’. To fix this, apply PR #22921.

Failed to load resource: the server responded with a status of 500 ()
request.js:356 Traceback (most recent call last):
  File "/home/frappe/frappe-bench/apps/frappe/frappe/app.py", line 64, in application
    response = frappe.api.handle()
  File "/home/frappe/frappe-bench/apps/frappe/frappe/api.py", line 58, in handle
    return frappe.handler.handle()
  File "/home/frappe/frappe-bench/apps/frappe/frappe/handler.py", line 30, in handle
    data = execute_cmd(cmd)
  File "/home/frappe/frappe-bench/apps/frappe/frappe/handler.py", line 69, in execute_cmd
    return frappe.call(method, **frappe.form_dict)
  File "/home/frappe/frappe-bench/apps/frappe/frappe/__init__.py", line 1086, in call
    return fn(*args, **newargs)
  File "/home/frappe/frappe-bench/apps/erpnext/erpnext/accounts/doctype/payment_entry/payment_entry.py", line 1116, in get_payment_entry
    pe.set_missing_values()
  File "/home/frappe/frappe-bench/apps/erpnext/erpnext/accounts/doctype/payment_entry/payment_entry.py", line 168, in set_missing_values
    self.set_missing_ref_details()
  File "/home/frappe/frappe-bench/apps/erpnext/erpnext/accounts/doctype/payment_entry/payment_entry.py", line 173, in set_missing_ref_details
    ref_details = get_reference_details(d.reference_doctype,
  File "/home/frappe/frappe-bench/apps/erpnext/erpnext/accounts/doctype/payment_entry/payment_entry.py", line 918, in get_reference_details
    total_amount = ref_doc.base_grand_total
AttributeError: 'Fees' object has no attribute 'base_grand_total'
Was this article helpful to you? Yes No

How can we help?

Leave a Reply

Your email address will not be published. Required fields are marked *