Model: school_student_mutation
Menu: School → Student Class Mutations
School Student Mutation (Mutasi Kelas Siswa) adalah dokumen transaksi untuk memindahkan enrollment siswa yang sedang berstatus Open dari satu Grade Class ke Grade Class lain di dalam Grade dan School yang sama (misalnya dari kelas 1A ke 1B). Mutasi tidak mengubah Grade, Academic Year/Term, maupun tagihan (billing) enrollment. Dokumen bersifat mandiri dan dapat diaudit dengan alur persetujuan sederhana Draft → Confirmed → Done.
Saat dokumen mencapai status Done, sistem memperbarui grade_class_id dan homeroom_id pada enrollment terkait, yang berdampak lanjutan ke field grade_class_id pada data siswa dan ke enrolled_count pada homeroom.
Draft → Confirmed → (Approve) → Done
↓
Reject / Cancel → (Restart) → Draft
Status Done tidak dapat dibatalkan. Untuk membalikkan mutasi yang sudah Done, buat dokumen mutasi baru dengan arah sebaliknya (kelas tujuan = kelas asal semula).
Nomor dokumen mutasi yang dibuat otomatis oleh sistem saat status berubah ke Done.
Nilai Default: / (sebelum nomor di-generate)
Wajib Diisi: Tidak (generated)
Dapat Dirubah: Ya (jika manual_number_ok = True)
Mekanisme Pengisian Otomatis: Di-generate menggunakan sequence saat _create_sequence_state = "done" terpenuhi.
Tanggal dokumen mutasi dibuat.
Nilai Default: Tanggal hari ini
Wajib Diisi: Ya
Dapat Dirubah: Ya (hanya saat status Draft)
Mekanisme Pengisian Otomatis: Default ke tanggal hari ini.
Siswa yang enrollment-nya akan dimutasi.
Nilai Default: N/A
Wajib Diisi: Ya
Dapat Dirubah: Ya (hanya saat status Draft)
Mekanisme Pengisian Otomatis: Perubahan Student mengisi otomatis field Enrollment dari enrollment aktif siswa (student_id.active_enrollment_id).
Enrollment (berstatus Open) milik siswa yang akan dimutasi kelasnya.
Nilai Default: N/A
Wajib Diisi: Ya
Dapat Dirubah: Ya (hanya saat status Draft)
Pembatasan Pilihan: Domain [('id','in',allowed_enrollment_ids)] — hanya enrollment siswa terpilih yang berstatus Open.
Mekanisme Pengisian Otomatis: Terisi otomatis dari enrollment aktif siswa; perubahan Enrollment mengisi Source Grade Class, Source Homeroom, dan mereset Destination Grade Class.
Sekolah enrollment, diambil otomatis dari enrollment.
Nilai Default: N/A
Wajib Diisi: Tidak
Dapat Dirubah: Tidak
Mekanisme Pengisian Otomatis: Related dari enrollment_id.school_id.
Tahun ajaran enrollment, diambil otomatis dari enrollment.
Nilai Default: N/A
Wajib Diisi: Tidak
Dapat Dirubah: Tidak
Mekanisme Pengisian Otomatis: Related dari enrollment_id.academic_year_id.
Periode akademik enrollment, diambil otomatis dari enrollment.
Nilai Default: N/A
Wajib Diisi: Tidak
Dapat Dirubah: Tidak
Mekanisme Pengisian Otomatis: Related dari enrollment_id.academic_term_id.
Jenjang kelas enrollment, diambil otomatis dari enrollment. Mutasi tidak mengubah Grade.
Nilai Default: N/A
Wajib Diisi: Tidak
Dapat Dirubah: Tidak
Mekanisme Pengisian Otomatis: Related dari enrollment_id.grade_id.
Grade Class asal siswa saat ini (snapshot). Nilai ini tidak berubah setelah mutasi selesai dan berfungsi sebagai jejak audit.
Nilai Default: N/A
Wajib Diisi: Tidak
Dapat Dirubah: Tidak
Mekanisme Pengisian Otomatis: Diisi dari enrollment_id.grade_class_id saat Enrollment dipilih.
Homeroom asal siswa saat ini (snapshot). Berfungsi sebagai jejak audit.
Nilai Default: N/A
Wajib Diisi: Tidak
Dapat Dirubah: Tidak
Mekanisme Pengisian Otomatis: Diisi dari enrollment_id.homeroom_id saat Enrollment dipilih.
Grade Class tujuan mutasi. Harus berada dalam Grade dan School yang sama dengan enrollment, serta berbeda dari Grade Class asal.
Nilai Default: N/A
Wajib Diisi: Ya
Dapat Dirubah: Ya (hanya saat status Draft)
Pembatasan Pilihan: Domain [('id','in',allowed_destination_grade_class_ids)] — kelas dengan Grade dan School yang sama, tidak termasuk kelas asal.
Mekanisme Pengisian Otomatis: Direset ke kosong saat Enrollment berubah.
Homeroom tujuan mutasi. Boleh dikosongkan.
Nilai Default: N/A
Wajib Diisi: Tidak
Dapat Dirubah: Ya (hanya saat status Draft)
Mekanisme Pengisian Otomatis: Dicari otomatis saat Enrollment atau Destination Grade Class berubah — homeroom berstatus Open dengan Academic Year, Academic Term, Grade, dan Grade Class yang cocok.
Alasan mutasi kelas.
Nilai Default: N/A
Wajib Diisi: Tidak
Dapat Dirubah: Ya (hanya saat status Draft)
Mekanisme Pengisian Otomatis: N/A