E. Candidate end-to-end workflows¶
Snapshot reconnaissance statis untuk perancangan dokumentasi pengguna berbasis role dan contextual help.
Last verified: 2026-08-05
Mode: server development
Workspace root: /home/scola/odoo
Scope: alur kandidat untuk struktur dokumentasi; bukan SOP resmi
Runtime limitation: Missing or unclear — audit ini tidak memeriksa database tenant, modul yang terpasang, group efektif per user, atau perilaku bundle production
Status bukti yang dipakai secara eksklusif: Confirmed from code, Inferred from code, Requires business confirmation, dan Missing or unclear.
Interpretasi¶
Workflow berstatus Confirmed from code memiliki state transition atau downstream mutation yang eksplisit pada controller/model. Workflow Inferred from code menghubungkan route/service/model yang saling mereferensikan tetapi urutan operasionalnya belum dinyatakan sebagai satu SOP.
| ID | Workflow candidate | Likely actors | Code-supported sequence | Prerequisites | Downstream impact | Evidence | Confidence | Confirmation needed |
|---|---|---|---|---|---|---|---|---|
| W01 | Academic master to timetable | Admin akademik / kurikulum | Tahun ajaran & semester -> jenjang/mapel -> rombel -> jam pelajaran -> jadwal/sesi | academic year aktif, term, batch/rombel, course, faculty, classroom | Jadwal menjadi prasyarat sesi, presensi, LMS, dan laporan | src/services/admin/academics/academicMaster.service.js:8; src/router/academicCoreRoutes.js:1 |
Inferred from code | Siapa pemilik tiap master dan kapan data dianggap terkunci? |
| W02 | Student onboarding | Admin / admin staff | Create atau import siswa -> lengkapi identitas -> assign batch/rombel -> hubungkan parent -> aktivasi layanan | company, jenjang, batch, file import sesuai format | Siswa tersedia untuk attendance, fee enrollment, LMS, report card, counseling | src/router/studentRoutes.js:1; src/views/AdminViews/StudentDatabase/UploadSiswa.vue:1 |
Inferred from code | Urutan wajib dan sumber kebenaran data siswa perlu disahkan. |
| W03 | SPMB applicant to enrolled student | Pendaftar, panitia, admin staff | Periode -> registrasi/application -> verifikasi -> jadwal tes -> CBT/hasil -> keputusan -> enrollment | periode aktif, quota/program, akun pendaftar, jadwal/tes | Status pendaftar berubah; kandidat dapat menjadi student/fee enrollment | src/router/spmbRoutes.js:1; ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_lifecycle_api.py:1 |
Inferred from code | State transition resmi, siapa approver, dan kapan student dibuat? |
| W04 | CBT exam lifecycle | Author, proctor, peserta, grader | Question bank -> exam setup -> publish/schedule -> runner/attempt -> proctor -> submit -> grading -> result/analytics | bank soal, peserta, waktu, token/config ujian | Attempt/jawaban terkunci atau dinilai; hasil tersedia ke halaman terkait | src/router/learningAssessmentRoutes.js:1; ../custom_addons_scola/gcgscola/scola_cbt/controllers/exam_lifecycle_api.py:1 |
Inferred from code | Aturan retry, late submit, reopen, manual grading, dan sinkronisasi nilai. |
| W05 | Daily student attendance | Guru / wali kelas / admin attendance | Jadwal/sesi -> pilih kelas/tanggal -> catat hadir/terlambat/izin/sakit/alpa -> submit/close/cancel -> rekap | sesi atau batch bertanggal dan enrollment siswa | Attendance line dan session state berubah; jalur final dapat mengirim notifikasi orang tua | ../custom_addons_scola/gcgscola/scola_attendance/models/op_attendance_sheet.py:1; ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_api_mixin.py:1 |
Confirmed from code | Makna final/close/cancel dan kapan koreksi masih dibolehkan. |
| W06 | Employee self-attendance | Pegawai | Validasi jadwal/perangkat/lokasi/face -> check-in -> check-out -> history/correction | employee terkait user, shift/jadwal, GPS/face/device bila diwajibkan | HR attendance record dan status keterlambatan/jam kerja berubah | src/router/attendanceRoutes.js:1; ../custom_addons_scola/gcgscola/scola_hr_attendance/controllers/hr_attendance_checkin_api.py:1 |
Inferred from code | Fallback jika GPS/face gagal, kebijakan lokasi, dan koreksi. |
| W07 | Gradebook to report card | Guru mapel, wali kelas, kurikulum, kepala sekolah | Input gradebook -> weekly report -> submit/approve -> assemble report card -> review/finalize -> portal/export | term, course assignment, student enrollment, assessment config | Nilai/komentar dan status approval menjadi rapor yang dibaca siswa/orang tua | ../custom_addons_scola/gcgscola/scola_lms/controllers/lms_weekly_approval_api.py:1; ../custom_addons_scola/gcgscola/scola_report_card/controllers/report_card_workflow_api.py:1 |
Confirmed from code | Batas edit setelah approval/finalize dan sumber nilai kanonis. |
| W08 | Promotion and retention | Kurikulum, wali kelas, kepala sekolah | Generate -> evaluate -> recommend -> decide -> execute | student, academic year, current batch; retained butuh reason; promoted butuh next batch | Execute melepas current batch, menambah next batch untuk promoted, dan menotifikasi parent | ../custom_addons_scola/gcgscola/scola_report_card/models/student_promotion.py:25; ../custom_addons_scola/gcgscola/scola_report_card/models/student_promotion.py:527; ../custom_addons_scola/gcgscola/scola_report_card/models/student_promotion.py:805 |
Confirmed from code | Endpoint admin saat ini rusak; policy KM-DEFAULT-2026 dan threshold 90 perlu validasi bisnis. |
| W09 | HR to payroll and payslip | HR, payroll admin, employee | Employee -> contract -> attendance/leave inputs -> payroll run -> payslip compute/review -> payment/self view | employee/company, active contract, payroll structure/period | Payslip/salary lines dibuat; nominal tampil di self/admin dan dapat terhubung accounting refund | ../custom_addons_scola/gcgscola/scola_payroll/controllers/payroll_api.py:1; ../custom_addons_scola/gcgscola/scola_payroll/controllers/payslip_admin_api.py:1 |
Inferred from code | Approver, sumber attendance, aturan recompute, dan privasi nominal. |
| W10 | Billing and payment | Treasurer/admin, parent/student | Fee setup/enrollment -> billing/invoice -> payment method/proof -> validation/posting -> receipt/report | fee product/rule, student enrollment, journal/bank/payment config | Saldo/tagihan dan payment state berubah; dapat menghasilkan accounting entries/notification | ../custom_addons_scola/gcgscola/scola_fees/controllers/fee_enrollment_api.py:1; src/router/financeRoutes.js:1 |
Inferred from code | Jurnal otomatis, reversal/refund, dan peran approval. |
| W11 | Accounting transaction lifecycle | Treasurer/accounting admin/principal | Draft transaction -> validate/post -> reconcile/approve -> report/audit | company, chart of accounts, journal, tax, period | Move/payment/reconciliation/report berubah | ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_modules_api.py:1; src/router/financeRoutes.js:1 |
Inferred from code | Separation of duties dan capability manage vs view perlu ditetapkan. |
| W12 | BOS/RKAS procurement | BOS admin, inventory/procurement, approver | Budget/RKAS -> purchase request -> approve -> purchase order -> receipt -> stock/asset -> realization | budget line, vendor/product, company, approval policy | Commitment/realisasi anggaran, stok/asset, dan kemungkinan jurnal berubah | ../custom_addons_scola/gcgscola/scola_bos_rkas_procurement/controllers/procurement_admin_api.py:1; ../custom_addons_scola/gcgscola/scola_bos_rkas/controllers/budget_admin_api.py:1 |
Inferred from code | Idempotensi approval, lampiran, dan siapa final approver. |
| W13 | Stock opname | Inventory officer | Pilih lokasi/periode -> snapshot expected stock -> count -> review selisih -> validate/adjust | product, warehouse/location, current stock, open opname | Stock quantities/adjustment/audit trail dapat berubah | src/views/AdminViews/Inventory/StockOpname.vue:1; ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:1 |
Inferred from code | Kapan stock dibekukan dan siapa boleh post adjustment? |
| W14 | Library circulation | Librarian, student/employee borrower | Catalog/copy -> queue/reservation -> checkout -> renew -> return -> fine/lost/damaged resolution | member aktif, copy available, loan policy | Copy/loan state dan fine berubah; return dapat auto-post fine | ../custom_addons_scola/gcgscola/scola_library/controllers/library_queue_return_api.py:1; src/router/libraryManagementRoutes.js:1 |
Confirmed from code | Aturan queue concurrency, lost/damaged state, waiver, dan pembayaran denda. |
| W15 | Counseling and student affairs | Counselor, teacher, kesiswaan, parent/student portal | Report incident/violation/permit/achievement -> review -> approve/refer/finalize -> timeline | student/company, category/rule, assigned handler | Approval tertentu mengubah points/attendance dan mengirim notifikasi parent | ../custom_addons_scola/gcgscola/scola_student_activity/controllers/kesiswaan_domain_api.py:1; ../custom_addons_scola/gcgscola/scola_counseling/controllers/counseling_domain_api.py:1 |
Confirmed from code | Scope siapa boleh melihat/mengubah data sensitif harus dipersempit/disahkan. |
| W16 | News publication | Author/editor, approver, reader | Draft -> submitted -> approved -> published -> archived/rejected | title/body/category/audience/publish window; target wajib untuk audience tertentu | Publish membuat circular, portal notifications, audit, realtime bus; cron menangani jadwal/arsip | ../custom_addons_scola/gcgscola/scola_news/models/scola_news.py:102; ../custom_addons_scola/gcgscola/scola_news/models/scola_news.py:1343 |
Confirmed from code | Pilih sistem kanonis antara scola.news dan legacy announcement. |
| W17 | Complaint intake and triage | Publik/pelapor, admin/principal | Form complaint -> anti-spam/attachment -> list/dashboard -> status/assignment/response -> analytics | field config, consent/contact, anti-spam configuration | Complaint/config/status dan kemungkinan notifikasi berubah | ../custom_addons_scola/gcgscola/scola_public_complaint/controllers/public_complaint_api.py:1; src/router/publicComplaintRoutes.js:1 |
Inferred from code | Siapa internal reader/editor, retention, attachment policy, dan fail-open anti-spam. |
| W18 | Messaging and notification | Internal user, parent/student | Discover/create channel -> send message/attachment -> read receipt -> notification/SSE/preferences | membership/contact relationship, channel type, notification config | Message, receipt, notification/outbox records berubah | ../custom_addons_scola/gcgscola/scola_portal/controllers/general_messaging_message_api.py:12; ../custom_addons_scola/gcgscola/scola_portal/controllers/portal_notification_api.py:18 |
Inferred from code | Cross-school messaging, attachment scope, quiet hours, and notification ownership. |
| W19 | Dapodik sync | Dapodik operator/admin | Configure credentials/scope -> preview -> sync selected domain -> inspect result/error | connector config, tenant/company mapping, remote data | Student/faculty/academic/attendance master data dapat dibuat/diubah | ../custom_addons_scola/gcgscola/scola_dapodik_connector/controllers/dapodik_api.py:1; src/router/settingsRoutes.js:1 |
Inferred from code | Dry-run, conflict resolution, cross-company matching, rollback, dan destructive actions. |
| W20 | RFID attendance ingestion | Device/operator/admin | Register device/card -> ingest event -> validate/signature/deduplicate -> create/reuse attendance -> audit/retry | active device/card, company, event id/time/signature | Attendance event/line dibuat atau dipakai ulang; error record saat ini tidak otomatis retry | ../custom_addons_scola/gcgscola/scola_smart_attendance/controllers/rfid_events_api.py:1; ../custom_addons_scola/gcgscola/scola_smart_attendance/models/rfid_attendance_processor.py:1 |
Confirmed from code | Retry policy dan capability untuk device/card CRUD. |
Cross-domain validation and business-rule inventory¶
Rules below are only those surfaced during static traversal; absence from this table does not mean a page has no backend constraint.
| Domain | Page/process | Observed validation or rule | Enforcement layer | Evidence | Confidence |
|---|---|---|---|---|---|
| Academic year | /academic-year | name/start/end wajib; start tidak boleh setelah end; term dikirim sebagai replacement set dan UI membatasi tanggal term terhadap rentang tahun | frontend validation + payload | src/views/AdminViews/AcademicConfig/AcademicYear/AcademicYearList.vue:531; src/services/admin/academics/academicMaster.service.js:8 |
Confirmed from code |
| Promotion | promotion pages/APIs | unik student+academic year; retained wajib reason; promoted wajib next_batch; perubahan keputusan/policy/evidence harus melalui actions; state evaluate -> recommended -> decided -> executed | backend model constraints/actions | ../custom_addons_scola/gcgscola/scola_report_card/models/student_promotion.py:25; ../custom_addons_scola/gcgscola/scola_report_card/models/student_promotion.py:353; ../custom_addons_scola/gcgscola/scola_report_card/models/student_promotion.py:527 |
Confirmed from code |
| Promotion evidence | promotion finalization/execution | finalisasi kepala sekolah membekukan snapshot rapor/skor/remedial/timeline; execute mengubah batch dan menotifikasi parent; generate melewati record existing | backend workflow | ../custom_addons_scola/gcgscola/scola_report_card/models/student_promotion.py:607; ../custom_addons_scola/gcgscola/scola_report_card/models/student_promotion.py:805; ../custom_addons_scola/gcgscola/scola_report_card/models/student_promotion.py:866 |
Confirmed from code |
| News fields | news editor | publish end >= start; audience target IDs wajib; priority critical tidak boleh audience all; maksimum lima image dan 5MB per image | backend constraints | ../custom_addons_scola/gcgscola/scola_news/models/scola_news.py:644 |
Confirmed from code |
| News workflow | news editor/approval | draft -> submitted -> approved -> published -> archived/rejected; teacher hanya class/grade/class_grade, noncritical, dan record sendiri; publish memicu circular/notification/audit/bus | backend model actions | ../custom_addons_scola/gcgscola/scola_news/models/scola_news.py:344; ../custom_addons_scola/gcgscola/scola_news/models/scola_news.py:1045; ../custom_addons_scola/gcgscola/scola_news/models/scola_news.py:1343 |
Confirmed from code |
| Public complaint | /complaint | attachments dipotong maksimum lima; tidak ada batas size/type eksplisit pada loop create; Turnstile dapat fail-open bergantung konfigurasi/error path | backend controller | ../custom_addons_scola/gcgscola/scola_public_complaint/controllers/public_complaint_api.py:55; ../custom_addons_scola/gcgscola/scola_public_complaint/controllers/public_complaint_api.py:107; ../custom_addons_scola/gcgscola/scola_public_complaint/controllers/public_complaint_api.py:439 |
Confirmed from code |
| General messaging | message send | message tidak boleh kosong tanpa attachment; scoped attachment maksimum 10MB; client_request_id dipakai untuk idempotensi; general body tidak memiliki length cap eksplisit | backend controller | ../custom_addons_scola/gcgscola/scola_portal/controllers/general_messaging_api.py:520; ../custom_addons_scola/gcgscola/scola_portal/controllers/general_messaging_api.py:581 |
Confirmed from code |
| Homeroom/subject messaging | homeroom/subject rooms | message body maksimum 10,000 characters dan attachment maksimum 10MB; room membership dibentuk dari class/subject relations | backend controller | ../custom_addons_scola/gcgscola/scola_portal/controllers/messaging_api.py:818; ../custom_addons_scola/gcgscola/scola_portal/controllers/subject_messaging_api.py:534 |
Confirmed from code |
| Daily attendance | daily attendance | sheet/line state dan uniqueness mencegah duplicate daily check-in tertentu; final actions dapat menulis status dan notifikasi; cancel notification parameter tidak digunakan | backend model/controller | ../custom_addons_scola/gcgscola/scola_attendance/models/op_attendance_sheet.py:1; ../custom_addons_scola/gcgscola/scola_attendance/models/op_attendance_line.py:1 |
Confirmed from code |
| HR attendance lock | HR attendance administration | period lock tersedia sebagai informasi/config tetapi mutation paths tidak secara konsisten menegakkan lock | backend controller/model | ../custom_addons_scola/gcgscola/scola_hr_attendance/controllers/hr_attendance_admin_api.py:1 |
Confirmed from code |
| RFID ingest | RFID event | device/card/company/signature/time/deduplication divalidasi; failed event tetap ditandai processed sehingga tidak masuk retry otomatis | backend controller/model | ../custom_addons_scola/gcgscola/scola_smart_attendance/controllers/rfid_events_api.py:1; ../custom_addons_scola/gcgscola/scola_smart_attendance/models/rfid_event.py:1 |
Confirmed from code |
| Library return | circulation return | return dapat membuat/post fine; queue dan lost/damaged copy transitions memiliki jalur yang perlu concurrency/state confirmation | backend controller | ../custom_addons_scola/gcgscola/scola_library/controllers/library_queue_return_api.py:1 |
Inferred from code |
| Student affairs approval | achievement/permit/incident | final approval tertentu menulis points atau attendance dan mengirim parent notification; state/role checks berbeda per record type | backend controller/model | ../custom_addons_scola/gcgscola/scola_student_activity/controllers/kesiswaan_domain_api.py:1 |
Confirmed from code |
| BOS procurement | purchase request approval | approval mengubah commitment; repeated approval tidak memiliki idempotency guard yang cukup pada jalur yang diaudit | backend controller/model | ../custom_addons_scola/gcgscola/scola_bos_rkas_procurement/controllers/procurement_admin_api.py:1 |
Confirmed from code |
| Dapodik sync | connector settings/sync | config/preview/sync memakai shared view-named capability; entity matching dapat menggunakan NISN/NUPTK/name tanpa company filter pada sejumlah path | backend controller | ../custom_addons_scola/gcgscola/scola_dapodik_connector/controllers/dapodik_api.py:1; ../custom_addons_scola/gcgscola/scola_dapodik_connector/controllers/kesiswaan_dapodik_api.py:1 |
Confirmed from code |
Systematic backend model validation inventory¶
This table statically enumerates every backend model class that declares a required/readonly/size/ondelete field rule, state/status field, Python constraint, onchange, SQL constraint, or workflow-shaped method. A workflow-shaped method name is evidence of code structure, not proof that it is exposed on a particular page.
| Module | Model | Class | Required fields | Field rules | State/status fields | Python constraints | Onchange rules | SQL constraints | Workflow-like methods | Source | Confidence |
|---|---|---|---|---|---|---|---|---|---|---|---|
scola_account |
scola.account.asset, mail.thread, mail.activity.mixin |
ScolaAccountAsset | name, category_id, original_value, method, method_number, method_period, date |
name: required, category_id: required, original_value: required, method: required, method_number: required, method_period: required, date: required |
state |
— | _onchange_category_id(category_id) |
— | action_confirm, action_dispose |
../custom_addons_scola/gcgscola/scola_account/models/account_asset_depreciation.py:17 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_account |
scola.account.asset.depreciation.line |
ScolaAccountAssetDepreciationLine | asset_id, sequence, name, depreciation_date |
asset_id: required, ondelete=cascade, sequence: required, name: required, depreciation_date: required |
— | — | — | — | post_move |
../custom_addons_scola/gcgscola/scola_account/models/account_asset_depreciation.py:368 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_account |
scola.account.asset.category |
ScolaAccountAssetCategory | name, method, method_number, method_period |
name: required, method: required, method_number: required, method_period: required |
— | — | — | — | — | ../custom_addons_scola/gcgscola/scola_account/models/account_asset_depreciation.py:446 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_account |
account.audit.log |
AccountAuditLog | user_id, timestamp, model_name, record_id, action |
user_id: required, readonly, timestamp: required, readonly, model_name: required, readonly, record_id: required, readonly, record_name: readonly, action: required, readonly, description: readonly, old_values: readonly, new_values: readonly, ip_address: readonly, user_agent: readonly |
— | — | — | — | action_view_record |
../custom_addons_scola/gcgscola/scola_account/models/account_audit_log.py:14 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_account |
account.audit.mixin |
AccountAuditMixin | — | — | — | — | — | — | action_view_audit_log |
../custom_addons_scola/gcgscola/scola_account/models/account_audit_mixin.py:13 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_account |
account.bank.reconciliation, account.audit.mixin |
AccountBankReconciliation | name, journal_id, date, balance_end_statement, state |
name: required, readonly, journal_id: required, date: required, balance_end_statement: required, state: required |
state |
— | — | — | action_import_statement, action_auto_reconcile, action_validate |
../custom_addons_scola/gcgscola/scola_account/models/account_bank_reconciliation.py:18 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_account |
account.bank.reconciliation.line |
AccountBankReconciliationLine | reconciliation_id, date, description, amount |
reconciliation_id: required, ondelete=cascade, date: required, description: required, amount: required |
— | — | — | — | action_match_manual, action_unmatch |
../custom_addons_scola/gcgscola/scola_account/models/account_bank_reconciliation.py:281 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_account |
account.budget, mail.thread, account.audit.mixin |
AccountBudget | name, code, fiscal_year_id, date_from, date_to, state |
name: required, code: required, fiscal_year_id: required, date_from: required, date_to: required, state: required |
state |
_check_dates(date_from, date_to) |
— | code_unique: UNIQUE(code, company_id) -> Budget code must be unique per company! |
action_submit, action_approve, action_reject, action_activate, action_close, action_reset_to_draft |
../custom_addons_scola/gcgscola/scola_account/models/account_budget.py:14 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_account |
account.budget.line |
AccountBudgetLine | budget_id, account_id, planned_amount |
budget_id: required, ondelete=cascade, account_id: required, planned_amount: required |
— | _check_planned_amount(planned_amount) |
— | account_unique: UNIQUE(budget_id, account_id, analytic_account_id) -> Account must be unique per budget! |
— | ../custom_addons_scola/gcgscola/scola_account/models/account_budget.py:253 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_account |
account.budget.approval |
AccountBudgetApproval | budget_id, approver_id, state |
budget_id: required, ondelete=cascade, approver_id: required, state: required |
state |
— | — | — | action_approve, action_reject |
../custom_addons_scola/gcgscola/scola_account/models/account_budget.py:359 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_account |
account.budget.alert |
AccountBudgetAlert | name, budget_id, alert_type |
name: required, budget_id: required, ondelete=cascade, alert_type: required |
— | — | — | — | — | ../custom_addons_scola/gcgscola/scola_account/models/account_budget.py:413 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_account |
account.move.reminder |
AccountMoveReminder | invoice_id, reminder_type |
invoice_id: required, ondelete=cascade, reminder_type: required |
state |
— | — | — | — | ../custom_addons_scola/gcgscola/scola_account/models/account_move_reminder.py:66 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_account |
account.move.reminder.config |
AccountMoveReminderConfig | name |
name: required |
— | — | — | — | — | ../custom_addons_scola/gcgscola/scola_account/models/account_move_reminder.py:163 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_account |
account.move.reminder.schedule |
AccountMoveReminderSchedule | days_after_due |
days_after_due: required |
— | — | — | days_unique: UNIQUE(days_after_due) -> Days after due must be unique! |
— | ../custom_addons_scola/gcgscola/scola_account/models/account_move_reminder.py:193 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_account |
account.payment |
AccountPaymentApprovalExtension | — | — | approval_state |
— | — | — | action_post, action_request_approval, action_approve_payment, action_reject_payment, approve_payment, reject_payment, action_reset_approval |
../custom_addons_scola/gcgscola/scola_account/models/account_payment_approval.py:15 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_account |
account.payment.approval |
AccountPaymentApproval | payment_id, approver_id, state |
payment_id: required, ondelete=cascade, approver_id: required, state: required |
state |
— | — | — | action_approve, action_reject |
../custom_addons_scola/gcgscola/scola_account/models/account_payment_approval.py:320 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_account |
account.payment.approval.rule |
AccountPaymentApprovalRule | name, min_amount |
name: required, min_amount: required |
— | _check_amounts(min_amount, max_amount) |
— | min_amount_positive: CHECK(min_amount >= 0) -> Minimum amount must be positive! |
— | ../custom_addons_scola/gcgscola/scola_account/models/account_payment_approval.py:374 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_account |
account.payment.approval.delegation |
AccountPaymentApprovalDelegation | delegator_id, delegate_id, date_from, date_to |
delegator_id: required, delegate_id: required, date_from: required, date_to: required |
— | _check_dates(date_from, date_to), _check_users(delegator_id, delegate_id) |
— | — | — | ../custom_addons_scola/gcgscola/scola_account/models/account_payment_approval.py:412 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_account |
account.tax.indonesia, account.audit.mixin |
AccountTaxIndonesia | name, tax_type, rate, account_id |
name: required, tax_type: required, rate: required, account_id: required |
ptkp_status |
— | — | name_unique: UNIQUE(name, company_id) -> Tax name must be unique per company! |
— | ../custom_addons_scola/gcgscola/scola_account/models/account_tax_indonesia.py:15 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_account |
account.tax.ptkp |
AccountTaxPTKP | name, code, amount, year |
name: required, code: required, amount: required, year: required |
— | — | — | code_year_unique: UNIQUE(code, year, company_id) -> PTKP code must be unique per year and company! |
— | ../custom_addons_scola/gcgscola/scola_account/models/account_tax_indonesia.py:57 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_account |
account.tax.pph21.bracket |
AccountTaxPPh21Bracket | name, min_income, rate, year |
name: required, min_income: required, rate: required, year: required |
— | — | — | min_income_positive: CHECK(min_income >= 0) -> Minimum income must be positive!, rate_valid: CHECK(rate >= 0 AND rate <= 100) -> Tax rate must be between 0 and 100! |
— | ../custom_addons_scola/gcgscola/scola_account/models/account_tax_indonesia.py:100 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_account |
account.tax.report, account.audit.mixin |
AccountTaxReport | name, report_type, period_start, period_end |
name: required, report_type: required, period_start: required, period_end: required |
state |
— | — | — | action_generate_report, action_export_csv |
../custom_addons_scola/gcgscola/scola_account/models/account_tax_indonesia.py:308 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_account |
account.tax.report.line |
AccountTaxReportLine | report_id |
report_id: required, ondelete=cascade |
— | — | — | — | — | ../custom_addons_scola/gcgscola/scola_account/models/account_tax_indonesia.py:484 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_account |
res.partner |
ResPartner | — | npwp: size=20 |
— | _check_npwp_format(npwp) |
_onchange_npwp_format(npwp) |
— | — | ../custom_addons_scola/gcgscola/scola_account/models/res_partner.py:12 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_admission |
op.admission |
ScolaAdmission | pathway_id |
pathway_id: required, nisn: size=10, nik: size=16, kk_number: size=16, parent_nik: size=16, dtks_verified_at: readonly, dtks_verified_by: readonly, invoice_id: readonly, invoice_state: readonly, spmb_formulir_base_amount: readonly, spmb_formulir_discount_amount: readonly, spmb_formulir_final_amount: readonly, spmb_registration_base_amount: readonly, spmb_registration_discount_amount: readonly, spmb_registration_final_amount: readonly, formulir_invoice_id: readonly, formulir_invoice_state: readonly |
invoice_state, formulir_invoice_state |
— | _onchange_register_id_fee(register_id) |
— | action_compute_distance, action_calculate_ranks, action_submit_portal, action_create_formulir_invoice, action_view_invoice, action_create_invoice, action_refund, confirm_in_progress, confirm_rejected |
../custom_addons_scola/gcgscola/scola_admission/models/admission.py:10 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_admission |
scola.admission.achievement |
ScolaAdmissionAchievement | admission_id, achievement_type, name, level |
admission_id: required, ondelete=cascade, achievement_type: required, name: required, level: required |
— | — | — | — | — | ../custom_addons_scola/gcgscola/scola_admission/models/admission_achievement.py:4 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_admission |
scola.admission.complaint, mail.thread, mail.activity.mixin |
ScolaAdmissionComplaint | admission_id, applicant_name, applicant_phone, category, subject, description |
name: readonly, admission_id: required, ondelete=cascade, applicant_name: required, applicant_phone: required, category: required, subject: required, description: required |
state |
— | — | — | action_submit, action_process, action_resolve, action_reject, action_reset_draft |
../custom_addons_scola/gcgscola/scola_admission/models/admission_complaint.py:6 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_admission |
scola.admission.document |
ScolaAdmissionDocument | admission_id, document_type_id, file |
admission_id: required, ondelete=cascade, document_type_id: required, file: required |
state |
_check_file(file, filename, document_type_id) |
_onchange_file(file) |
— | action_verify, action_reject |
../custom_addons_scola/gcgscola/scola_admission/models/admission_document.py:7 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_admission |
scola.admission.fee.rule |
ScolaAdmissionFeeRule | name, company_id, register_id, fee_scope, eligibility_type, discount_type |
name: required, company_id: required, register_id: required, ondelete=cascade, currency_id: readonly, fee_scope: required, eligibility_type: required, discount_type: required |
— | _check_discount_values(discount_type, discount_percentage, discount_amount, max_discount_amount), _check_validity_range(valid_from, valid_until) |
_onchange_discount_type(discount_type) |
— | — | ../custom_addons_scola/gcgscola/scola_admission/models/admission_fee_rule.py:7 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_admission |
scola.portal.notification |
ScolaPortalNotificationAdmission | — | notification_type: ondelete={'admission_confirmed': 'set default', 'admission_rejected': 'set default', 'admission_accepted': 'set default', 'admission_enrolled': 'set default', 'admission_test_scheduled': 'set default'}, admission_id: ondelete=set null |
— | — | — | — | — | ../custom_addons_scola/gcgscola/scola_admission/models/admission_notification.py:9 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_admission |
scola.admission.pathway |
ScolaAdmissionPathway | name, code, min_quota_percent, max_quota_percent |
name: required, code: required, min_quota_percent: required, max_quota_percent: required |
— | — | — | — | — | ../custom_addons_scola/gcgscola/scola_admission/models/admission_pathway.py:4 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_admission |
scola.admission.ranking.log |
ScolaAdmissionRankingLog | register_id |
register_id: required, ondelete=cascade |
— | — | — | — | — | ../custom_addons_scola/gcgscola/scola_admission/models/admission_ranking_log.py:6 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_admission |
scola.admission.rapor.grade |
ScolaAdmissionRaporGrade | admission_id, class_grade, semester, average_grade |
admission_id: required, ondelete=cascade, class_grade: required, semester: required, average_grade: required |
— | _check_grade_range(average_grade), _check_unique_semester(admission_id, class_grade, semester) |
— | — | — | ../custom_addons_scola/gcgscola/scola_admission/models/admission_rapor_grade.py:6 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_admission |
op.admission.register |
ScolaAdmissionRegister | education_level_id |
course_id: readonly, education_level_id: required |
— | _check_quota_minimums(pathway_quota_ids, education_level_id, max_count), check_no_of_admission(min_count, max_count) |
_onchange_education_level_quota(education_level_id, max_count) |
— | action_calculate_all_ranks, action_promote_from_waitlist, action_refresh_school_coordinates |
../custom_addons_scola/gcgscola/scola_admission/models/admission_register.py:6 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_admission |
scola.admission.register.quota |
ScolaAdmissionRegisterQuota | register_id, pathway_id, quota |
register_id: required, ondelete=cascade, pathway_id: required, quota: required |
— | — | — | — | — | ../custom_addons_scola/gcgscola/scola_admission/models/admission_register.py:505 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_admission |
scola.admission.test.type |
ScolaAdmissionTestType | name, code |
name: required, code: required |
— | — | — | — | — | ../custom_addons_scola/gcgscola/scola_admission/models/admission_test.py:5 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_admission |
scola.admission.test.schedule, mail.thread, mail.activity.mixin |
ScolaAdmissionTestSchedule | register_id, test_type_id, test_date, test_time_start, test_time_end |
register_id: required, ondelete=cascade, test_type_id: required, test_date: required, test_time_start: required, test_time_end: required |
state |
— | — | — | action_open, action_close, action_done, action_cancel, action_reset_draft |
../custom_addons_scola/gcgscola/scola_admission/models/admission_test.py:21 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_admission |
scola.admission.test.slot |
ScolaAdmissionTestSlot | schedule_id, admission_id |
schedule_id: required, ondelete=cascade, admission_id: required, ondelete=cascade |
attendance_status |
— | — | unique_slot: UNIQUE(schedule_id, admission_id) -> Pendaftar sudah terdaftar di jadwal ini! |
action_mark_present, action_mark_absent |
../custom_addons_scola/gcgscola/scola_admission/models/admission_test.py:107 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_admission |
scola.admission.test.result |
ScolaAdmissionTestResult | admission_id, test_type_id |
admission_id: required, ondelete=cascade, test_type_id: required |
— | — | — | unique_result: UNIQUE(admission_id, test_type_id) -> Hasil tes untuk jenis ini sudah ada! |
— | ../custom_addons_scola/gcgscola/scola_admission/models/admission_test.py:223 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_admission |
scola.admission.document.type |
ScolaAdmissionDocumentType | name, code |
name: required, code: required |
— | — | — | unique_code: UNIQUE(code) -> Kode dokumen harus unik! |
— | ../custom_addons_scola/gcgscola/scola_admission/models/document_type.py:5 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_admission |
scola.education.level.pathway.quota |
ScolaEducationLevelPathwayQuota | education_level_id, pathway_id, default_quota_percent |
education_level_id: required, ondelete=cascade, pathway_id: required, default_quota_percent: required |
— | — | — | unique_level_pathway: UNIQUE(education_level_id, pathway_id) -> Jalur sudah ada di jenjang ini! |
— | ../custom_addons_scola/gcgscola/scola_admission/models/education_level.py:6 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_admission |
scola.education.level |
ScolaEducationLevel | name, code, min_age |
name: required, code: required, min_age: required |
— | _check_quota_total(pathway_quota_ids) |
— | — | — | ../custom_addons_scola/gcgscola/scola_admission/models/education_level.py:65 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_admission |
scola.siblings.discount |
ScolaSiblingsDiscount | parent_id, discount_type, applicable_fees, child_order |
parent_id: required, discount_type: required, applicable_fees: required, child_order: required |
— | _check_discount_values(discount_type, discount_percentage, discount_fixed_amount) |
— | unique_parent_child_order: unique(parent_id, child_order) -> Discount configuration for this child order already exists for this parent!, positive_percentage: check(discount_percentage > 0 and discount_percentage <= 100) -> Percentage must be between 0 and 100!, positive_fixed_amount: check(discount_fixed_amount >= 0) -> Fixed amount must be positive!, positive_child_order: check(child_order > 0) -> Child order must be positive! |
action_apply_to_all_applicants |
../custom_addons_scola/gcgscola/scola_admission/models/scola_siblings_discount.py:10 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_admission |
op.admission |
OpAdmission | — | siblings_discount_id: readonly, original_fee_amount: readonly, discount_amount: readonly, final_fee_amount: readonly, child_order_in_family: readonly |
— | — | — | — | apply_siblings_discount, action_view_siblings_info |
../custom_addons_scola/gcgscola/scola_admission/models/scola_siblings_discount.py:188 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_admission |
scola.spmb.applicant, mail.thread, mail.activity.mixin |
ScolaSPMBApplicant | partner_id, user_id, name, email, state |
partner_id: required, ondelete=cascade, user_id: required, ondelete=cascade, name: required, email: required, email_verified_at: readonly, registration_date: readonly, state: required, enrollment_completion_date: readonly, archive_date: readonly |
state |
— | — | — | action_view_all_applications, action_complete_lifecycle, action_archive, action_link_to_parent, action_send_verification_email, action_verify_email, action_block, action_reset_registration |
../custom_addons_scola/gcgscola/scola_admission/models/spmb_applicant.py:11 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_admission |
scola.spmb.applicant.archive |
ScolaSPMBApplicantArchive | applicant_id, archive_date |
applicant_id: required, ondelete=cascade, archive_date: required, readonly |
— | — | — | — | action_restore_applicant, action_view_archived_data |
../custom_addons_scola/gcgscola/scola_admission/models/spmb_applicant_archive.py:11 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_admission |
scola.spmb.email.token |
ScolaSPMBEmailToken | name, applicant_id, expires_at |
name: required, size=6, applicant_id: required, ondelete=cascade, expires_at: required, used_at: readonly |
— | — | — | otp_unique: unique(name, applicant_id) -> OTP must be unique per applicant |
mark_as_used |
../custom_addons_scola/gcgscola/scola_admission/models/spmb_email_token.py:11 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_admission_assessment |
scola.admission.test.schedule |
ScolaAdmissionTestScheduleCbt | — | cbt_last_synced_at: readonly |
— | _check_cbt_exam_context(cbt_exam_id) |
— | — | action_sync_cbt_participants, action_sync_cbt_results |
../custom_addons_scola/gcgscola/scola_admission_assessment/models/admission_test.py:6 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_admission_assessment |
scola.admission.test.slot |
ScolaAdmissionTestSlotCbt | — | cbt_exam_id: readonly, cbt_participant_id: ondelete=set null, cbt_last_attempt_id: ondelete=set null, cbt_last_synced_at: readonly |
— | _check_cbt_participant_link(cbt_participant_id, cbt_exam_id, admission_id) |
— | — | action_sync_cbt_result |
../custom_addons_scola/gcgscola/scola_admission_assessment/models/admission_test.py:120 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_admission_assessment |
scola.cbt.participant |
ScolaCbtParticipantAdmission | — | admission_id: ondelete=set null |
— | _check_admission_identity_payload(identity_type, admission_id) |
— | unique_exam_admission: unique(exam_id, admission_id) -> An admission participant already exists for this exam. |
— | ../custom_addons_scola/gcgscola/scola_admission_assessment/models/cbt_participant.py:6 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_admission_foundation |
scola.foundation.admission.register |
ScolaFoundationAdmissionRegister | name, company_id, state |
name: required, company_id: required, state: required |
state |
— | — | — | action_open, action_close |
../custom_addons_scola/gcgscola/scola_admission_foundation/models/foundation_admission.py:6 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_admission_foundation |
scola.foundation.admission.application |
ScolaFoundationAdmissionApplication | register_id, target_school_id, applicant_name, state |
register_id: required, ondelete=cascade, target_school_id: required, applicant_name: required, state: required, school_admission_id: readonly |
state |
_check_target_school(target_school_id, register_id) |
— | — | action_route_to_school |
../custom_addons_scola/gcgscola/scola_admission_foundation/models/foundation_admission.py:48 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_assessment_bridge |
academic.grade |
AcademicGrade | student_id, batch_id, subject_id, component_type, score |
student_id: required, ondelete=cascade, batch_id: required, subject_id: required, component_type: required, score: required, source_exam_id: ondelete=set null |
— | — | — | unique_grade_entry: unique(student_id, batch_id, subject_id, component_type) -> Grade for this component already exists for this student in this course! Please update existing record instead. |
publish_grade |
../custom_addons_scola/gcgscola/scola_assessment_bridge/models/academic_grade.py:57 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_assessment_bridge |
grading.assignment.type |
ScolaAssignmentType | assessment_purpose, instrument_type |
company_id: ondelete=cascade, assessment_purpose: required, instrument_type: required |
— | — | — | — | — | ../custom_addons_scola/gcgscola/scola_assessment_bridge/models/assessment_type.py:149 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_assessment_bridge |
op.exam.type |
ScolaExamType | assessment_purpose, instrument_type |
company_id: ondelete=cascade, assessment_purpose: required, instrument_type: required |
— | — | — | — | — | ../custom_addons_scola/gcgscola/scola_assessment_bridge/models/assessment_type.py:210 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_assessment_bridge |
grade.event |
GradeEvent | grade_id, idempotency_key, score |
grade_id: required, ondelete=cascade, idempotency_key: required, source_exam_id: ondelete=set null, score: required, created_at: readonly, created_by: readonly |
— | — | — | unique_event_key: unique(idempotency_key) -> Idempotency Key must be unique! This operation has already been processed. |
— | ../custom_addons_scola/gcgscola/scola_assessment_bridge/models/grade_event.py:4 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_attendance |
scola.attendance.daily.cancel.log |
ScolaAttendanceDailyCancelLog | student_id, attendance_date, action, reason, user_id, cancelled_at, company_id |
student_id: required, ondelete=cascade, batch_id: ondelete=set null, attendance_date: required, line_id: ondelete=set null, action: required, reason: required, user_id: required, cancelled_at: required, company_id: required |
notify_status |
— | — | — | — | ../custom_addons_scola/gcgscola/scola_attendance/models/attendance_daily_cancel_log.py:5 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_attendance |
scola.attendance.day.override |
ScolaAttendanceDayOverride | name, date, start_time, end_time, company_id |
name: required, date: required, start_time: required, end_time: required, company_id: required |
— | _check_times(start_time, end_time, grace_minutes) |
— | uniq_company_date: unique(company_id, date) -> Sudah ada jadwal khusus untuk tanggal tersebut di unit sekolah ini. |
— | ../custom_addons_scola/gcgscola/scola_attendance/models/attendance_day_override.py:6 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_attendance |
op.attendance.register |
OpAttendanceRegisterElevation | — | company_id: readonly |
— | — | — | — | — | ../custom_addons_scola/gcgscola/scola_attendance/models/attendance_elevation_mixin.py:12 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_attendance |
op.attendance.line |
OpAttendanceLine | attendance_scope |
attendance_scope: required, check_in_note: size=256, check_out_note: size=256, pickup_person_name: size=128, pickup_person_relation: size=64, pickup_person_id: ondelete=set null, dropoff_officer_id: ondelete=set null, transport_task_id: ondelete=set null, company_id: readonly, pickup_photo_filename: size=256, pickup_note: size=256 |
temperature_status, transport_status |
— | — | — | — | ../custom_addons_scola/gcgscola/scola_attendance/models/op_attendance_line.py:10 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_attendance |
op.attendance.sheet |
OpAttendanceSheet | — | company_id: readonly |
— | — | — | — | — | ../custom_addons_scola/gcgscola/scola_attendance/models/op_attendance_sheet.py:12 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_attendance |
res.company |
ResCompany | student_attendance_arrival_departure_method, student_attendance_gate_operator_scope, student_attendance_daily_summary_rule, student_attendance_departure_policy_mode |
student_attendance_arrival_departure_method: required, student_attendance_gate_operator_scope: required, student_attendance_daily_summary_rule: required, student_attendance_departure_policy_mode: required |
— | _check_student_attendance_settings(student_attendance_arrival_enabled, student_attendance_departure_enabled, student_attendance_arrival_departure_enabled, student_attendance_per_lesson_enabled, student_attendance_temperature_fever_threshold, school_start_time, school_end_time, student_attendance_late_grace_minutes), _check_smart_attendance_method_available(student_attendance_arrival_departure_method) |
— | — | — | ../custom_addons_scola/gcgscola/scola_attendance/models/res_company.py:15 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_attendance |
student.attendance.mode.service |
StudentAttendanceModeService | — | — | — | — | — | — | cancel_departure, cancel_arrival |
../custom_addons_scola/gcgscola/scola_attendance/models/student_attendance_mode_service.py:35 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_attendance |
scola.student.leave.request, mail.thread, mail.activity.mixin, scola.approval.mixin |
StudentLeaveRequest | student_id, request_date, date_from, date_to, leave_type, reason |
name: readonly, student_id: required, request_date: required, date_from: required, date_to: required, leave_type: required, reason: required |
— | _check_dates(date_from, date_to) |
— | — | — | ../custom_addons_scola/gcgscola/scola_attendance/models/student_leave_request.py:9 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_attendance |
scola.student.pickup.person |
ScolaStudentPickupPerson | name, student_id, relation |
name: required, size=128, student_id: required, ondelete=cascade, relation: required, size=64, phone: size=32, identity_no: size=64, note: size=256, company_id: readonly |
— | _check_unique_active_pickup_person(name, relation, student_id, active) |
— | — | — | ../custom_addons_scola/gcgscola/scola_attendance/models/student_pickup_person.py:6 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_attendance |
scola.student.transport.vehicle |
ScolaStudentTransportVehicle | name, company_id |
name: required, company_id: required |
— | _check_capacity(capacity) |
— | transport_vehicle_license_company_unique: unique(license_plate, company_id) -> Nomor polisi kendaraan sudah terdaftar pada unit sekolah ini. |
— | ../custom_addons_scola/gcgscola/scola_attendance/models/student_transport_route.py:8 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_attendance |
scola.student.transport.route |
ScolaStudentTransportRoute | name, school_id, direction |
name: required, school_id: required, direction: required, primary_driver_id: readonly |
— | _check_primary_driver_assignment(primary_driver_employee_id, school_id) |
— | — | — | ../custom_addons_scola/gcgscola/scola_attendance/models/student_transport_route.py:35 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_attendance |
scola.student.transport.task |
ScolaStudentTransportTask | student_id, direction, status, driver_id, task_date |
student_id: required, attendance_line_id: ondelete=set null, direction: required, status: required, driver_id: required, task_date: required, pickup_photo_filename: size=256, school_arrival_photo_filename: size=256, handover_photo_filename: size=256, home_arrival_photo_filename: size=256, pickup_note: size=256, school_arrival_note: size=256, handover_note: size=256, home_arrival_note: size=256, company_id: readonly |
status |
— | _onchange_driver_id(driver_id) |
— | action_pick_up_from_home, action_arrive_at_school, action_arrive_at_home |
../custom_addons_scola/gcgscola/scola_attendance/models/student_transport_task.py:7 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_bos_rkas |
bos.fund.component |
BosFundComponent | name, code |
name: required, code: required, size=10 |
— | — | — | code_unique: unique(code) -> Kode komponen harus unik! |
— | ../custom_addons_scola/gcgscola/scola_bos_rkas/models/bos_fund.py:11 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_bos_rkas |
bos.fund.allocation, mail.thread, mail.activity.mixin |
BosFundAllocation | fiscal_year, period_name, date_from, date_to, total_students, bos_per_student, company_id |
fiscal_year: required, period_name: required, date_from: required, date_to: required, total_students: required, bos_per_student: required, company_id: required |
state |
_check_allocation_limit(total_allocated, total_bos_received) |
— | — | action_confirm, action_approve, action_done, action_cancel, action_draft |
../custom_addons_scola/gcgscola/scola_bos_rkas/models/bos_fund.py:36 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_bos_rkas |
bos.fund.allocation.line |
BosFundAllocationLine | allocation_id, component_id, allocated_amount |
allocation_id: required, ondelete=cascade, component_id: required, allocated_amount: required |
— | _check_component_limit(allocated_amount, component_id) |
— | — | — | ../custom_addons_scola/gcgscola/scola_bos_rkas/models/bos_fund.py:141 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_bos_rkas |
scola.budget.plan, mail.thread, mail.activity.mixin |
ScolaBudgetPlan | name, company_id |
name: required, company_id: required, currency_id: readonly |
state |
— | — | — | — | ../custom_addons_scola/gcgscola/scola_bos_rkas/models/budget.py:5 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_bos_rkas |
scola.budget.line, mail.thread, mail.activity.mixin |
ScolaBudgetLine | plan_id, planned_amount |
plan_id: required, ondelete=cascade, company_id: readonly, currency_id: readonly, planned_amount: required |
— | — | — | — | — | ../custom_addons_scola/gcgscola/scola_bos_rkas/models/budget.py:66 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_bos_rkas |
scola.budget.program, mail.thread, mail.activity.mixin |
ScolaBudgetProgram | name, code, company_id, state |
name: required, code: required, parent_id: ondelete=cascade, company_id: required, currency_id: readonly, state: required |
state |
_check_code_unique(code) |
— | — | action_submit, action_approve, action_lock, action_reset_to_draft |
../custom_addons_scola/gcgscola/scola_bos_rkas/models/budget_program.py:6 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_bos_rkas |
scola.budget.ledger |
ScolaBudgetLedger | budget_line_id, date, entry_type, amount, description |
budget_line_id: required, ondelete=restrict, program_id: readonly, company_id: readonly, currency_id: readonly, date: required, entry_type: required, amount: required, description: required, user_id: readonly |
— | — | — | — | — | ../custom_addons_scola/gcgscola/scola_bos_rkas/models/budget_program.py:182 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_bos_rkas_procurement |
scola.purchase.request, mail.thread, mail.activity.mixin |
ScolaPurchaseRequest | name, company_id |
name: required, readonly, company_id: required, currency_id: readonly |
state |
— | — | — | action_submit, action_approve, action_reject, action_cancel, action_create_rfq |
../custom_addons_scola/gcgscola/scola_bos_rkas_procurement/models/purchase_request.py:6 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_bos_rkas_procurement |
scola.purchase.request.line |
ScolaPurchaseRequestLine | request_id, product_id, product_uom_id, product_qty |
request_id: required, ondelete=cascade, product_id: required, product_uom_id: required, product_qty: required, currency_id: readonly |
— | — | — | — | — | ../custom_addons_scola/gcgscola/scola_bos_rkas_procurement/models/purchase_request.py:277 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_bos_rkas_procurement |
stock.picking |
StockPickingBudgetBridge | — | — | — | — | — | — | action_confirm |
../custom_addons_scola/gcgscola/scola_bos_rkas_procurement/models/stock_picking.py:5 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_cbt |
academic.grade |
AcademicGradeAssessment | — | source_attempt_id: ondelete=set null |
— | — | — | — | — | ../custom_addons_scola/gcgscola/scola_cbt/models/assessment_grade.py:5 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_cbt |
grade.event |
GradeEventAssessment | — | source_attempt_id: ondelete=set null |
— | — | — | — | — | ../custom_addons_scola/gcgscola/scola_cbt/models/assessment_grade.py:16 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_cbt |
scola.cbt.attempt, mail.thread |
ScolaCbtAttempt | exam_id, attempt_number, state, company_id |
exam_id: required, ondelete=cascade, participant_id: ondelete=cascade, student_id: ondelete=cascade, attempt_number: required, start_time: readonly, end_time: readonly, submitted_at: readonly, public_access_token: readonly, active_session_id: readonly, session_user_agent: readonly, session_ip: readonly, last_heartbeat_at: readonly, state: required, shuffle_seed: readonly, question_order: readonly, company_id: required |
state |
_check_participant_exam_match(participant_id, exam_id), _check_identity_presence(participant_id, student_id) |
— | unique_student_exam_attempt: UNIQUE(exam_id, student_id, attempt_number) -> Each student can only have one attempt per exam per attempt number!, unique_participant_exam_attempt: UNIQUE(exam_id, participant_id, attempt_number) -> Each participant can only have one attempt per exam per attempt number! |
action_start, action_submit, action_extend_time, action_force_submit, action_reset_attempt, action_finalize_grading |
../custom_addons_scola/gcgscola/scola_cbt/models/attempt.py:17 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_cbt |
scola.cbt.attempt.answer |
ScolaCbtAttemptAnswer | attempt_id, question_id |
attempt_id: required, ondelete=cascade, question_id: required, ondelete=cascade |
— | — | — | unique_attempt_question: UNIQUE(attempt_id, question_id) -> Each question can only be answered once per attempt! |
— | ../custom_addons_scola/gcgscola/scola_cbt/models/attempt.py:1252 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_cbt |
scola.cbt.integrity.flag |
ScolaCbtIntegrityFlag | attempt_id, event_type, timestamp |
attempt_id: required, ondelete=cascade, event_type: required, timestamp: required |
— | — | — | — | — | ../custom_addons_scola/gcgscola/scola_cbt/models/attempt.py:1439 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_cbt |
scola.cbt.audit.log |
ScolaCbtAuditLog | event_type, user_id, company_id |
event_type: required, user_id: required, exam_id: ondelete=set null, session_id: ondelete=set null, attempt_id: ondelete=set null, student_id: ondelete=set null, company_id: required |
— | — | — | — | — | ../custom_addons_scola/gcgscola/scola_cbt/models/audit_log.py:9 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_cbt |
op.exam |
OpExam | exam_context |
exam_context: required |
— | _check_overlapping_times(subject_id, start_time, end_time), _check_cbt_question_set(is_cbt, question_set_id), _check_cbt_duration(cbt_duration) |
— | — | action_generate_token, action_publish_to_gradebook |
../custom_addons_scola/gcgscola/scola_cbt/models/exam.py:14 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_cbt |
op.exam.session |
OpExamSession | — | company_id: readonly |
— | — | — | — | — | ../custom_addons_scola/gcgscola/scola_cbt/models/exam_scope.py:7 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_cbt |
op.exam |
OpExam | — | company_id: readonly |
— | — | — | — | — | ../custom_addons_scola/gcgscola/scola_cbt/models/exam_scope.py:20 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_cbt |
op.exam.room |
OpExamRoom | — | company_id: readonly |
— | — | — | — | — | ../custom_addons_scola/gcgscola/scola_cbt/models/exam_scope.py:33 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_cbt |
op.exam.attendees |
OpExamAttendees | — | company_id: readonly |
— | — | — | — | — | ../custom_addons_scola/gcgscola/scola_cbt/models/exam_scope.py:46 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_cbt |
op.marksheet.register |
OpMarksheetRegister | — | company_id: readonly |
— | — | — | — | — | ../custom_addons_scola/gcgscola/scola_cbt/models/exam_scope.py:59 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_cbt |
op.marksheet.line |
OpMarksheetLine | — | company_id: readonly |
— | — | — | — | — | ../custom_addons_scola/gcgscola/scola_cbt/models/exam_scope.py:72 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_cbt |
op.result.template |
OpResultTemplate | — | company_id: readonly |
— | — | — | — | — | ../custom_addons_scola/gcgscola/scola_cbt/models/exam_scope.py:86 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_cbt |
op.result.line |
OpResultLine | — | company_id: readonly |
— | — | — | — | — | ../custom_addons_scola/gcgscola/scola_cbt/models/exam_scope.py:99 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_cbt |
scola.cbt.item.analysis |
ScolaCbtItemAnalysis | — | exam_id: readonly, question_id: readonly, question_content: readonly, question_type: readonly, question_points: readonly, total_attempts: readonly, correct_count: readonly, incorrect_count: readonly, unanswered_count: readonly, difficulty_index: readonly, avg_points_earned: readonly, subject_id: readonly |
— | — | — | — | — | ../custom_addons_scola/gcgscola/scola_cbt/models/item_analysis.py:22 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_cbt |
scola.cbt.exam.statistics |
ScolaCbtExamStatistics | — | exam_id: readonly, exam_name: readonly, total_participants: readonly, submitted_count: readonly, graded_count: readonly, avg_score: readonly, min_score: readonly, max_score: readonly, median_score: readonly, std_deviation: readonly, pass_count: readonly, fail_count: readonly, pass_rate: readonly |
— | — | — | — | — | ../custom_addons_scola/gcgscola/scola_cbt/models/item_analysis.py:220 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_cbt |
scola.cbt.participant |
ScolaCbtParticipant | exam_id, identity_type, state |
exam_id: required, ondelete=cascade, identity_type: required, user_id: ondelete=set null, student_id: ondelete=set null, state: required |
state |
_check_identity_payload(identity_type, student_id, external_name, external_identifier), _check_extra_time_minutes(extra_time_minutes) |
— | unique_exam_student: unique(exam_id, student_id) -> A student participant already exists for this exam., unique_exam_user: unique(exam_id, user_id) -> A participant with this login user already exists for this exam., unique_exam_external_identifier: unique(exam_id, external_identifier) -> An external identifier already exists for this exam. |
— | ../custom_addons_scola/gcgscola/scola_cbt/models/participant.py:6 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_cbt |
scola.cbt.policy |
ScolaCbtPolicy | name, company_id |
name: required, company_id: required |
— | _check_negative_mark(negative_mark_percentage), _check_max_attempts(max_attempts), _check_retention_days(attempts_retention_days, answers_retention_days, integrity_flags_retention_days, audit_logs_retention_days, export_retention_days) |
— | — | — | ../custom_addons_scola/gcgscola/scola_cbt/models/policy.py:8 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_cbt |
scola.cbt.exam.policy.override |
ScolaCbtExamPolicyOverride | exam_id |
exam_id: required, ondelete=cascade |
— | — | — | — | — | ../custom_addons_scola/gcgscola/scola_cbt/models/policy.py:394 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_cbt |
scola.cbt.question.tag |
ScolaCbtQuestionTag | name |
name: required |
— | — | — | name_unique: UNIQUE(name) -> Tag name must be unique! |
— | ../custom_addons_scola/gcgscola/scola_cbt/models/question.py:13 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_cbt |
scola.cbt.question.chapter |
ScolaCbtQuestionChapter | name, code, subject_id, company_id |
name: required, code: required, subject_id: required, ondelete=cascade, company_id: required |
— | _check_unique_code_per_scope(subject_id, course_id, code) |
— | — | — | ../custom_addons_scola/gcgscola/scola_cbt/models/question.py:32 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_cbt |
scola.cbt.rubric.template |
ScolaCbtRubricTemplate | name, rubric_data, company_id |
name: required, rubric_data: required, current_version: readonly, company_id: required |
— | — | — | — | — | ../custom_addons_scola/gcgscola/scola_cbt/models/question.py:73 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_cbt |
scola.cbt.rubric.template.version |
ScolaCbtRubricTemplateVersion | template_id, version_number, rubric_data, created_by |
template_id: required, ondelete=cascade, version_number: required, rubric_data: required, created_by: required |
— | — | — | — | — | ../custom_addons_scola/gcgscola/scola_cbt/models/question.py:131 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_cbt |
scola.cbt.question.item, mail.thread, mail.activity.mixin |
ScolaCbtQuestionItem | question_type, content, question_set_id, company_id |
code: readonly, question_type: required, content: required, question_set_id: required, ondelete=cascade, subject_id: readonly, learning_objective_id: ondelete=set null, learning_outcome_id: readonly, version: readonly, is_current: readonly, parent_id: readonly, ondelete=set null, created_by: readonly, company_id: required |
review_status |
_check_structured_metadata_consistency(question_set_id, course_id, chapter_id), _check_short_answer_grading_config(question_type, short_answer_key, short_answer_similarity_threshold), _check_cognitive_level(cognitive_level) |
— | — | — | ../custom_addons_scola/gcgscola/scola_cbt/models/question.py:152 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_cbt |
scola.cbt.question.choice |
ScolaCbtQuestionChoice | question_id, content |
question_id: required, ondelete=cascade, content: required |
— | _check_single_correct_for_mcq(is_correct) |
— | — | — | ../custom_addons_scola/gcgscola/scola_cbt/models/question.py:495 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_cbt |
scola.cbt.question.asset |
ScolaCbtQuestionAsset | question_id, name, asset_type |
question_id: required, ondelete=cascade, name: required, asset_type: required |
— | _check_file_or_url(file, url) |
— | — | — | ../custom_addons_scola/gcgscola/scola_cbt/models/question.py:533 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_cbt |
scola.cbt.question.set, mail.thread, mail.activity.mixin |
ScolaCbtQuestionSet | name, company_id |
code: readonly, name: required, created_by: readonly, company_id: required |
— | — | — | — | action_view_questions |
../custom_addons_scola/gcgscola/scola_cbt/models/question_set.py:8 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_cbt |
scola.cbt.score.revision |
ScolaCbtScoreRevision | attempt_id, old_score, new_score, reason, user_id |
attempt_id: required, ondelete=cascade, answer_id: ondelete=cascade, old_score: required, new_score: required, reason: required, user_id: required |
— | — | — | — | — | ../custom_addons_scola/gcgscola/scola_cbt/models/score_revision.py:5 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_core |
scola.academic.calendar |
ScolaAcademicCalendar | name, academic_year_id, education_level, structure, company_id |
name: required, academic_year_id: required, ondelete=cascade, education_level: required, structure: required, company_id: required |
— | — | — | uniq_year_level_company: unique(academic_year_id, education_level, company_id) -> Kalender akademik untuk tahun ajaran ini sudah ada. |
action_sync_non_instructional_leaves |
../custom_addons_scola/gcgscola/scola_core/models/academic_calendar.py:43 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_core |
scola.academic.calendar.entry |
ScolaAcademicCalendarEntry | calendar_id, name, entry_type, date_start, date_end, audience_scope, state |
calendar_id: required, ondelete=cascade, name: required, entry_type: required, date_start: required, date_end: required, audience_scope: required, state: required, resource_leave_id: ondelete=set null |
state |
_check_dates(date_start, date_end) |
_onchange_entry_type(entry_type) |
— | action_publish, action_unpublish |
../custom_addons_scola/gcgscola/scola_core/models/academic_calendar.py:153 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_core |
op.course |
OpCourse | company_id |
company_id: required |
— | — | — | unique_course_code_company: unique(code, company_id) -> Course code must be unique per school unit! |
— | ../custom_addons_scola/gcgscola/scola_core/models/academic_scope.py:8 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_core |
op.subject |
OpSubject | company_id |
company_id: required |
— | — | — | unique_subject_code_company: unique(code, company_id) -> Subject code must be unique per school unit! |
— | ../custom_addons_scola/gcgscola/scola_core/models/academic_scope.py:31 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_core |
op.student.course |
OpStudentCourse | — | company_id: readonly |
— | — | — | — | — | ../custom_addons_scola/gcgscola/scola_core/models/academic_scope.py:54 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_core |
op.academic.term |
OpAcademicTerm | — | locked_date: readonly, locked_by: readonly |
— | — | — | — | action_lock, action_unlock |
../custom_addons_scola/gcgscola/scola_core/models/academic_term.py:7 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_core |
scola.approval.mixin |
ScolaApprovalMixin | state |
state: required, submitted_by: readonly, submitted_date: readonly, approved_by: readonly, approved_date: readonly, rejection_reason: readonly |
state |
— | — | — | action_submit, action_approve, action_reject, action_cancel, action_reset_draft |
../custom_addons_scola/gcgscola/scola_core/models/approval_mixin.py:12 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_core |
op.batch |
OpBatch | company_id, academic_year_id |
company_id: required, academic_year_id: required, source_batch_id: ondelete=set null, parallel_group_key: size=32 |
— | _check_student_not_in_multiple_reguler(student_ids, rombel_type, academic_year_id, company_id), _check_parallel_mapel_khusus_link(source_batch_id, rombel_type, parallel_group_key), _check_max_homeroom_faculty_per_batch(faculty_ids, faculty_id, education_level, company_id), _check_single_homeroom_per_faculty_per_year(faculty_ids, faculty_id, academic_year_id, active, rombel_type, company_id) |
_onchange_education_level(education_level) |
unique_batch_code_company: unique(code, company_id) -> Batch code must be unique per school unit! |
action_sync_student_course_details |
../custom_addons_scola/gcgscola/scola_core/models/batch.py:19 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_core |
op.classroom |
OpClassroom | company_id |
company_id: required |
— | — | — | — | — | ../custom_addons_scola/gcgscola/scola_core/models/classroom.py:6 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_core |
scola.data.consent |
ScolaDataConsent | subject_type, subject_name, consent_type, state, company_id |
subject_type: required, subject_name: required, student_id: ondelete=set null, partner_id: ondelete=set null, consent_type: required, state: required, granted_by: ondelete=set null, revoked_by: ondelete=set null, company_id: required |
state |
— | — | — | action_grant, action_revoke |
../custom_addons_scola/gcgscola/scola_core/models/data_consent.py:9 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_core |
op.faculty |
ScolaFaculty | company_id |
user_id: readonly, company_id: required, nik: size=16, npwp: size=20, birth_place: size=64, nuptk: size=16, nip: size=18 |
marital_status, employee_status |
_check_nuptk(nuptk), _check_nip(nip), _check_nip_required_for_asn(nip, employee_status), _check_unique_employee_link(emp_id) |
— | — | action_create_user, action_create_employee |
../custom_addons_scola/gcgscola/scola_core/models/faculty.py:10 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_core |
scola.pii.access.log |
ScolaPiiAccessLog | user_id, resource_type, action, accessed_at |
user_id: required, ondelete=cascade, resource_type: required, action: required, accessed_at: required |
— | — | — | — | — | ../custom_addons_scola/gcgscola/scola_core/models/pii_access_log.py:7 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_core |
res.company |
ResCompany | school_timezone, scola_license_status, scola_lms_entitlement, scola_cbt_entitlement, scola_dapodik_entitlement, scola_inventory_entitlement, scola_account_entitlement, scola_bos_rkas_entitlement, scola_library_entitlement, scola_hr_attendance_entitlement, scola_student_services_entitlement, scola_hr_entitlement, scola_payroll_entitlement, scola_foundation_analytics_entitlement, scola_report_card_entitlement |
npsn: size=8, scola_school_code: size=6, readonly, school_timezone: required, scola_license_status: required, scola_lms_entitlement: required, scola_cbt_entitlement: required, scola_dapodik_entitlement: required, scola_inventory_entitlement: required, scola_account_entitlement: required, scola_bos_rkas_entitlement: required, scola_library_entitlement: required, scola_hr_attendance_entitlement: required, scola_student_services_entitlement: required, scola_hr_entitlement: required, scola_payroll_entitlement: required, scola_foundation_analytics_entitlement: required, scola_report_card_entitlement: required |
scola_license_status |
_check_npsn(npsn), _check_scola_school_code(scola_school_code), _check_scola_enabled_addon_skus(scola_enabled_addon_skus), _check_scola_trial_addon_skus(scola_trial_addon_skus) |
— | — | — | ../custom_addons_scola/gcgscola/scola_core/models/res_company.py:25 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_core |
res.users |
ResUsers | — | — | — | — | — | — | action_switch_active_scola_role |
../custom_addons_scola/gcgscola/scola_core/models/res_users.py:123 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_core |
scola.school.profile |
ScolaSchoolProfile | name, npsn, jenjang, company_id |
name: required, npsn: size=8, required, nss: size=12, jenjang: required, rt: size=3, rw: size=3, kode_pos: size=5, dapodik_last_sync: readonly, company_id: required |
status_sekolah, status_kepemilikan |
_check_npsn(npsn) |
— | unique_npsn: unique(npsn) -> NPSN harus unik! |
sync_from_dapodik |
../custom_addons_scola/gcgscola/scola_core/models/school_profile.py:6 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_core |
scola.role |
ScolaRole | name, code, category |
name: required, code: required, category: required |
— | — | — | code_unique: unique(code) -> Role code must be unique! |
— | ../custom_addons_scola/gcgscola/scola_core/models/scola_role.py:4 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_core |
scola.security.visitor |
ScolaSecurityVisitor | name, check_in_at, state, company_id |
name: required, check_in_at: required, state: required, company_id: required, checked_in_by_id: ondelete=set null, checked_out_by_id: ondelete=set null |
state |
— | — | — | — | ../custom_addons_scola/gcgscola/scola_core/models/security_visitor.py:7 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_core |
scola.sensitive.audit.log |
ScolaSensitiveAuditLog | user_id, event_type, resource_type, occurred_at |
user_id: required, ondelete=cascade, event_type: required, resource_type: required, occurred_at: required |
— | — | — | — | — | ../custom_addons_scola/gcgscola/scola_core/models/sensitive_audit_log.py:7 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_core |
scola.sic.config |
ScolaSicConfig | prefix |
prefix: required, size=8 |
— | _check_npsn_prefix(prefix) |
— | — | — | ../custom_addons_scola/gcgscola/scola_core/models/sic_config.py:6 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_core |
op.student |
OpStudent | company_id, sic |
company_id: required, nsn: size=10, nid: size=16, sic: required, rt: size=3, rw: size=3, kelurahan: size=100, kecamatan: size=100, kepala_keluarga: size=100, nomor_kk: size=16, dapodik_id: readonly, dapodik_last_sync: readonly |
— | _check_nsn(nsn), _check_nid(nid) |
— | unique_nsn_company: unique(nsn, company_id) -> NISN must be unique per school unit!, unique_nid_company: unique(nid, company_id) -> NID must be unique per school unit!, unique_sic_company: unique(sic, company_id) -> SIC must be unique per school unit! |
action_create_user |
../custom_addons_scola/gcgscola/scola_core/models/student.py:28 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_counseling |
scola.career.interest, mail.thread, mail.activity.mixin |
ScolaCareerInterest | student_id, academic_year, minat_bidang, tanggal_asesmen |
student_id: required, ondelete=restrict, company_id: readonly, academic_year: required, minat_bidang: required, tanggal_asesmen: required |
— | _check_academic_year(academic_year) |
— | — | — | ../custom_addons_scola/gcgscola/scola_counseling/models/career.py:5 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_counseling |
scola.tracer.study, mail.thread, mail.activity.mixin |
ScolaTracerStudy | name, company_id, tahun_lulus, status_setelah_lulus, tanggal_survei |
name: required, student_id: ondelete=set null, company_id: required, tahun_lulus: required, status_setelah_lulus: required, tanggal_survei: required |
status_setelah_lulus |
_check_tahun_lulus(tahun_lulus) |
— | — | — | ../custom_addons_scola/gcgscola/scola_counseling/models/career.py:143 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_counseling |
scola.counseling.report, mail.thread, mail.activity.mixin |
ScolaCounselingReport | name, student_id, jenis_laporan, deskripsi |
name: required, student_id: required, company_id: readonly, jenis_laporan: required, deskripsi: required |
state |
— | — | — | action_start_review, action_start_progress, action_resolve, action_close |
../custom_addons_scola/gcgscola/scola_counseling/models/counseling_report.py:6 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_counseling |
scola.counseling.response |
ScolaCounselingResponse | report_id |
report_id: required, ondelete=cascade, company_id: readonly, calendar_event_id: readonly |
— | _check_meeting_fields(create_meeting, meeting_type, meeting_link, meeting_location) |
— | — | — | ../custom_addons_scola/gcgscola/scola_counseling/models/counseling_report.py:163 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_counseling |
scola.incident, mail.thread, mail.activity.mixin |
ScolaIncident | title, company_id, category, status, incident_date, location, description, urgency |
name: readonly, title: required, company_id: required, category: required, status: required, incident_date: required, location: required, victim_id: ondelete=set null, description: required, urgency: required, reporter_id: readonly, created_date: readonly, resolved_date: readonly |
status |
— | — | — | action_triage, action_investigate, action_resolve, action_escalate |
../custom_addons_scola/gcgscola/scola_counseling/models/incident.py:8 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_counseling |
scola.counseling.referral, mail.thread, mail.activity.mixin |
ScolaCounselingReferral | name, student_id, status, target_role, safe_summary, sent_date |
name: required, readonly, student_id: required, ondelete=restrict, company_id: readonly, status: required, target_role: required, safe_summary: required, sent_date: required |
status |
_check_safe_summary(safe_summary) |
— | scola_counseling_referral_source_record_id_check: CHECK(source_record_id IS NULL OR source_record_id >= 0) -> ID sumber referral tidak valid. |
— | ../custom_addons_scola/gcgscola/scola_counseling/models/referral.py:7 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_dapodik_connector |
scola.dapodik.config |
ScolaDapodikConfig | host, port, npsn, access_token, company_id |
host: required, port: required, npsn: required, size=8, access_token: required, is_connected: readonly, last_connection_test: readonly, last_connection_message: readonly, last_sync_students: readonly, last_sync_gtk: readonly, last_sync_rombel: readonly, last_sync_school: readonly, company_id: required |
— | _check_npsn(npsn), _check_port(port) |
— | unique_npsn_company: unique(npsn, company_id) -> NPSN harus unik per company! |
action_test_connection |
../custom_addons_scola/gcgscola/scola_dapodik_connector/models/dapodik_config.py:10 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_dapodik_connector |
scola.dapodik.export.wizard |
DapodikExportWizard | export_type |
export_type: required, file_data: readonly, file_name: readonly, total_records: readonly, exported_count: readonly, skipped_count: readonly |
state |
— | — | — | action_export |
../custom_addons_scola/gcgscola/scola_dapodik_connector/models/dapodik_export.py:18 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_dapodik_connector |
scola.dapodik.sync.log |
ScolaDapodikSyncLog | sync_type, direction, status |
sync_type: required, direction: required, status: required, user_id: readonly, config_id: ondelete=cascade |
status |
— | — | — | action_mark_success, action_mark_failed, action_mark_partial |
../custom_addons_scola/gcgscola/scola_dapodik_connector/models/dapodik_sync_log.py:6 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_dapodik_connector |
scola.dapodik.validation.report |
DapodikValidationReport | report_type |
report_type: required, student_total: readonly, student_nisn_missing: readonly, student_nisn_invalid: readonly, student_nik_missing: readonly, student_incomplete: readonly, gtk_total: readonly, gtk_nuptk_missing: readonly, gtk_nuptk_invalid: readonly, gtk_nip_missing_asn: readonly, gtk_incomplete: readonly, rombel_total: readonly, rombel_no_wali: readonly, rombel_over_capacity: readonly, report_date: readonly |
— | — | — | — | action_generate_report |
../custom_addons_scola/gcgscola/scola_dapodik_connector/models/dapodik_validation.py:5 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_dapodik_connector |
scola.dapodik.validation.line |
DapodikValidationLine | — | report_id: ondelete=cascade |
— | — | — | — | — | ../custom_addons_scola/gcgscola/scola_dapodik_connector/models/dapodik_validation.py:238 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_dapodik_report_card_bridge |
scola.dapodik.rapor.sync |
DapodikRaporSync | academic_term_id, state |
academic_term_id: required, company_id: readonly, state: required, total_students: readonly, total_subjects: readonly, total_nilai: readonly, synced_count: readonly, queued_count: readonly, failed_count: readonly, skipped_count: readonly, sync_outcome: readonly, sync_outcome_message: readonly, retry_count: readonly, last_attempt_date: readonly, last_error_summary: readonly, validation_errors: readonly, is_valid: readonly, validated_date: readonly, synced_date: readonly, user_id: readonly |
state |
— | — | — | action_validate, action_sync_to_dapodik, action_export_nilai_excel, action_reset_to_draft |
../custom_addons_scola/gcgscola/scola_dapodik_report_card_bridge/models/dapodik_rapor_sync.py:24 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_dapodik_report_card_bridge |
scola.dapodik.rapor.sync.line |
DapodikRaporSyncLine | sync_id, student_id, status |
sync_id: required, ondelete=cascade, student_id: required, status: required |
status |
— | — | — | — | ../custom_addons_scola/gcgscola/scola_dapodik_report_card_bridge/models/dapodik_rapor_sync.py:585 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_dapodik_report_card_bridge |
scola.dapodik.rapor.export.wizard |
DapodikRaporExportWizard | academic_term_id, export_format |
academic_term_id: required, export_format: required, file_data: readonly, file_name: readonly |
state |
— | — | — | action_export |
../custom_addons_scola/gcgscola/scola_dapodik_report_card_bridge/models/dapodik_rapor_sync.py:619 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_fees |
scola.cashier.closing, mail.thread, mail.activity.mixin |
ScolaCashierClosing | name, closing_date, company_id, cashier_id |
name: required, readonly, closing_date: required, company_id: required, cashier_id: required, approved_by: readonly, approved_date: readonly |
state |
— | — | unique_cashier_date: UNIQUE(cashier_id, closing_date, company_id) -> There can only be one closing per cashier per day! |
action_load_payments, action_confirm, action_approve, action_lock, action_reset_draft, action_view_payments |
../custom_addons_scola/gcgscola/scola_fees/models/cashier_closing.py:11 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_fees |
scola.cashier.closing.line |
ScolaCashierClosingLine | closing_id, journal_id |
closing_id: required, ondelete=cascade, journal_id: required |
— | — | — | — | — | ../custom_addons_scola/gcgscola/scola_fees/models/cashier_closing.py:216 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_fees |
account.payment |
AccountPaymentCashier | — | cashier_closing_id: readonly |
— | — | — | — | — | ../custom_addons_scola/gcgscola/scola_fees/models/cashier_closing.py:230 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_fees |
scola.fee.schedule.line |
ScolaFeeScheduleLine | schedule_id, product_id, amount |
schedule_id: required, ondelete=cascade, product_id: required, amount: required |
— | — | — | — | — | ../custom_addons_scola/gcgscola/scola_fees/models/fee_schedule.py:13 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_fees |
scola.fee.schedule, mail.thread, mail.activity.mixin |
ScolaFeeSchedule | student_id, month, year, company_id |
student_id: required, month: required, year: required, company_id: required, invoice_id: readonly, invoice_state: readonly, invoice_payment_state: readonly, fees_detail_id: readonly |
invoice_state, invoice_payment_state, state |
— | _onchange_template_id(template_id), _onchange_period(month, year) |
unique_student_period_term: UNIQUE(student_id, month, year, template_id, term_number) -> A fee schedule already exists for this student in the selected period and term! |
action_generate, action_create_invoice, action_mark_paid, action_cancel, action_draft, action_view_invoice |
../custom_addons_scola/gcgscola/scola_fees/models/fee_schedule.py:38 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_fees |
scola.fee.template.line |
ScolaFeeTemplateLine | template_id, product_id, amount |
template_id: required, ondelete=cascade, product_id: required, amount: required |
— | — | _onchange_product_id(product_id) |
— | — | ../custom_addons_scola/gcgscola/scola_fees/models/fee_template.py:7 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_fees |
scola.fee.template, mail.thread, mail.activity.mixin |
ScolaFeeTemplate | name, company_id, fee_type |
name: required, company_id: required, fee_type: required |
— | _check_days(due_day, generate_day, fee_type) |
— | — | action_view_schedules, action_view_enrollments, action_open_bulk_enrollment_wizard |
../custom_addons_scola/gcgscola/scola_fees/models/fee_template.py:40 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_fees |
scola.installment.preset.line |
ScolaInstallmentPresetLine | preset_id, sequence, percentage |
preset_id: required, ondelete=cascade, sequence: required, percentage: required |
— | — | — | — | — | ../custom_addons_scola/gcgscola/scola_fees/models/installment_preset.py:8 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_fees |
scola.installment.preset |
ScolaInstallmentPreset | name |
name: required |
— | _check_percentage_total(line_ids) |
— | — | action_auto_generate_terms |
../custom_addons_scola/gcgscola/scola_fees/models/installment_preset.py:29 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_fees |
scola.late.fee.config, mail.thread, mail.activity.mixin |
ScolaLateFeeConfig | name, company_id, calculation_type |
name: required, company_id: required, calculation_type: required |
— | _check_calculation_values(calculation_type, fixed_amount, percentage) |
— | percentage_range: CHECK(percentage >= 0 AND percentage <= 100) -> Percentage must be between 0 and 100, positive_amounts: CHECK(fixed_amount >= 0 AND max_late_fee >= 0 AND min_late_fee >= 0) -> Amounts must be positive |
— | ../custom_addons_scola/gcgscola/scola_fees/models/late_fee_config.py:11 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_fees |
scola.late.fee.log |
ScolaLateFeeLog | invoice_id, config_id |
invoice_id: required, ondelete=cascade, config_id: required |
state |
— | — | — | action_waive, action_apply |
../custom_addons_scola/gcgscola/scola_fees/models/late_fee_config.py:205 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_fees |
scola.bank.account.config, mail.thread |
ScolaBankAccountConfig | name, bank_name, account_number, account_holder, company_id |
name: required, bank_name: required, account_number: required, account_holder: required, company_id: required |
— | _check_single_default(is_default, company_id) |
— | — | action_set_as_default |
../custom_addons_scola/gcgscola/scola_fees/models/manual_payment.py:10 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_fees |
scola.payment.proof, mail.thread |
ScolaPaymentProof | transaction_id |
transaction_id: required, ondelete=cascade, uploaded_by: readonly, upload_date: readonly, reviewed_by: readonly, review_date: readonly |
state |
— | — | — | action_verify, action_reject |
../custom_addons_scola/gcgscola/scola_fees/models/manual_payment.py:95 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_fees |
scola.notification.config, mail.thread, mail.activity.mixin |
ScolaNotificationConfig | name, company_id, service_type |
name: required, company_id: required, service_type: required, connection_status: readonly, last_check: readonly, qr_code: readonly |
connection_status |
— | — | — | action_check_connection, action_show_qr |
../custom_addons_scola/gcgscola/scola_fees/models/notification_service.py:13 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_fees |
scola.notification.log |
ScolaNotificationLog | — | — | state |
— | — | — | — | ../custom_addons_scola/gcgscola/scola_fees/models/notification_service.py:320 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_fees |
scola.payment.gateway.config, mail.thread, mail.activity.mixin |
ScolaPaymentGatewayConfig | name, company_id, provider, environment |
name: required, company_id: required, provider: required, environment: required |
— | — | — | — | — | ../custom_addons_scola/gcgscola/scola_fees/models/payment_gateway.py:16 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_fees |
scola.payment.transaction, mail.thread, mail.activity.mixin |
ScolaPaymentTransaction | reference, invoice_id, config_id, amount, payment_channel |
reference: required, readonly, invoice_id: required, ondelete=cascade, config_id: required, amount: required, receipt_number: readonly, payment_channel: required, verified_by: readonly, verified_date: readonly |
state |
— | — | — | action_submit_manual_transfer, action_verify_transfer, action_reject_transfer, action_receive_cash, action_create_va, action_create_qris, process_callback |
../custom_addons_scola/gcgscola/scola_fees/models/payment_gateway.py:114 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_fees |
scola.scholarship.type |
ScolaScholarshipType | name, category |
name: required, category: required |
— | _check_percentage(default_percentage, category) |
_onchange_category(category) |
— | action_view_enrollments |
../custom_addons_scola/gcgscola/scola_fees/models/scholarship_type.py:7 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_fees |
op.student |
OpStudent | — | — | — | — | — | — | action_view_fees, action_view_pending_fees, action_view_fee_enrollments |
../custom_addons_scola/gcgscola/scola_fees/models/student.py:6 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_fees |
scola.enrollment.installment.line |
ScolaEnrollmentInstallmentLine | enrollment_id, sequence, amount, due_date |
enrollment_id: required, ondelete=cascade, sequence: required, amount: required, due_date: required |
— | — | — | — | — | ../custom_addons_scola/gcgscola/scola_fees/models/student_enrollment.py:9 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_fees |
scola.student.fee.enrollment, mail.thread, mail.activity.mixin |
ScolaStudentFeeEnrollment | student_id, template_id |
student_id: required, template_id: required, approved_by: readonly, approved_date: readonly, schedule_ids: readonly |
state |
_check_custom_installment_total(custom_installment_ids, installment_mode, final_amount) |
_onchange_has_scholarship(has_scholarship), _onchange_scholarship_type_id(scholarship_type_id), _onchange_is_fully_sponsored(is_fully_sponsored), _onchange_payment_type(payment_type), _onchange_installment_mode(installment_mode), _onchange_template_id(template_id) |
unique_student_template: UNIQUE(student_id, template_id) -> Student is already enrolled to this fee template! |
action_submit_approval, action_approve, action_reject, action_cancel, action_draft, action_open_generate_wizard, action_view_schedules, action_preview_installments |
../custom_addons_scola/gcgscola/scola_fees/models/student_enrollment.py:36 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_foundation_analytics |
scola.rapor.pendidikan.indicator |
ScolaRaporPendidikanIndicator | name, company_id, npsn, data_year, dimension, indicator_code, source |
name: required, company_id: required, npsn: required, data_year: required, dimension: required, indicator_code: required, source: required |
— | _check_profile_company(school_profile_id, company_id) |
— | unique_rapor_indicator_unit_year_code: unique(company_id, data_year, indicator_code) -> Indikator Rapor Pendidikan harus unik per satuan pendidikan dan tahun data. |
— | ../custom_addons_scola/gcgscola/scola_foundation_analytics/models/external_reporting.py:7 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_foundation_analytics |
scola.asesmen.nasional.snapshot |
ScolaAsesmenNasionalSnapshot | name, company_id, npsn, data_year, grade_level, source |
name: required, company_id: required, npsn: required, data_year: required, grade_level: required, source: required |
— | — | — | unique_an_snapshot_unit_year_grade: unique(company_id, data_year, grade_level) -> Snapshot AN harus unik per satuan pendidikan, tahun data, dan kelas sasaran. |
— | ../custom_addons_scola/gcgscola/scola_foundation_analytics/models/external_reporting.py:46 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_foundation_analytics |
scola.accreditation.cycle |
ScolaAccreditationCycle | name, company_id, npsn, assessment_year, status |
name: required, company_id: required, npsn: required, assessment_year: required, status: required |
status |
— | — | unique_accreditation_cycle_unit_year: unique(company_id, assessment_year) -> Siklus akreditasi harus unik per satuan pendidikan dan tahun asesmen. |
— | ../custom_addons_scola/gcgscola/scola_foundation_analytics/models/external_reporting.py:86 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_hr |
scola.employee.school.assignment |
ScolaEmployeeSchoolAssignment | employee_id, school_id, assignment_type |
employee_id: required, ondelete=cascade, school_id: required, ondelete=cascade, assignment_type: required |
— | _check_date_range(start_date, end_date), _check_cost_allocation(cost_allocation_percent) |
— | employee_school_assignment_unique: unique(employee_id, school_id, assignment_type, start_date) -> Assignment pegawai untuk unit, jenis, dan tanggal mulai yang sama sudah ada. |
sync_linked_user_companies, apply_operational_roles_to_user |
../custom_addons_scola/gcgscola/scola_hr/models/employee_school_assignment.py:85 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_hr |
hr.attendance.config |
HrAttendanceConfig | name, company_id, late_deduction_type, absence_deduction_type, currency_id |
name: required, company_id: required, late_deduction_type: required, absence_deduction_type: required, currency_id: required |
— | _check_single_active(active), _check_late_tolerance(late_tolerance_minutes, late_tolerance_count), _check_perfect_attendance_values(perfect_min_attendance, perfect_max_late, perfect_max_absence) |
— | — | — | ../custom_addons_scola/gcgscola/scola_hr/models/hr_attendance_config.py:7 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_hr |
scola.hr.audit.log |
ScolaHrAuditLog | actor_id, timestamp, model_name, record_id, action |
actor_id: required, readonly, timestamp: required, readonly, model_name: required, readonly, record_id: required, readonly, record_name: readonly, action: required, readonly, company_id: readonly, old_values: readonly, new_values: readonly, summary: readonly |
— | — | — | — | — | ../custom_addons_scola/gcgscola/scola_hr/models/hr_audit_log.py:8 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_hr |
hr.bpjs.config |
HrBpjsConfig | name, code, program_type |
name: required, code: required, program_type: required, currency_id: readonly |
— | — | — | code_uniq: unique(code, company_id) -> Kode konfigurasi BPJS harus unik per perusahaan! |
— | ../custom_addons_scola/gcgscola/scola_hr/models/hr_bpjs_config.py:8 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_hr |
hr.contract.bpjs.line |
HrContractBpjsLine | contract_id, bpjs_config_id |
contract_id: required, ondelete=cascade, bpjs_config_id: required, ondelete=restrict, program_type: readonly, employee_pct: readonly, company_pct: readonly, max_wage: readonly, currency_id: readonly |
— | _check_unique_program(contract_id, bpjs_config_id) |
_onchange_bpjs_config(bpjs_config_id) |
— | — | ../custom_addons_scola/gcgscola/scola_hr/models/hr_bpjs_config.py:98 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_hr |
hr.contract |
HrContract | — | — | teacher_status |
— | _onchange_golongan(golongan) |
— | — | ../custom_addons_scola/gcgscola/scola_hr/models/hr_contract.py:7 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_hr |
hr.employee |
HrEmployee | — | nik: size=16, npwp: size=20, birth_place: size=64 |
ptkp_status |
— | — | — | — | ../custom_addons_scola/gcgscola/scola_hr/models/hr_employee.py:6 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_hr |
hr.employee.document, mail.thread |
HrEmployeeDocument | name, employee_id, document_type |
name: required, employee_id: required, ondelete=cascade, document_type: required |
state |
_check_dates(issue_date, expiry_date) |
— | — | action_archive, action_activate |
../custom_addons_scola/gcgscola/scola_hr/models/hr_employee_document.py:12 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_hr |
hr.employment.history, mail.thread |
HrEmploymentHistory | employee_id, change_type, effective_date |
employee_id: required, ondelete=cascade, change_type: required, effective_date: required |
teacher_status |
_check_effective_date(effective_date) |
— | — | — | ../custom_addons_scola/gcgscola/scola_hr/models/hr_employment_history.py:11 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_hr |
hr.family.allowance.config |
HrFamilyAllowanceConfig | name, code, spouse_calc_type, child_calc_type, applicable_status |
name: required, code: required, spouse_calc_type: required, child_calc_type: required, applicable_status: required, currency_id: readonly |
applicable_status |
— | — | code_uniq: unique(code, company_id) -> Kode konfigurasi tunjangan keluarga harus unik per perusahaan! |
— | ../custom_addons_scola/gcgscola/scola_hr/models/hr_family_allowance.py:9 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_hr |
hr.employee.family.member |
HrEmployeeFamilyMember | employee_id, name, relation |
employee_id: required, ondelete=cascade, name: required, relation: required |
— | — | — | — | — | ../custom_addons_scola/gcgscola/scola_hr/models/hr_family_allowance.py:141 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_hr |
hr.job.allowance.type |
HrJobAllowanceType | name, code, period_type |
name: required, code: required, period_type: required, currency_id: readonly |
— | — | — | code_uniq: unique(code, company_id) -> Kode tunjangan jabatan harus unik per perusahaan! |
— | ../custom_addons_scola/gcgscola/scola_hr/models/hr_job_allowance.py:7 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_hr |
hr.contract.job.allowance.line |
HrContractJobAllowanceLine | contract_id, allowance_type_id |
contract_id: required, ondelete=cascade, allowance_type_id: required, ondelete=restrict, period_type: readonly, period_multiplier: readonly, currency_id: readonly |
— | — | _onchange_allowance_type(allowance_type_id) |
— | — | ../custom_addons_scola/gcgscola/scola_hr/models/hr_job_allowance.py:58 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_hr |
hr.leave |
HrLeave | — | — | — | — | — | — | action_refuse_with_reason |
../custom_addons_scola/gcgscola/scola_hr/models/hr_leave.py:7 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_hr |
hr.performance.evaluation |
HrPerformanceEvaluation | employee_id, evaluator_id, evaluation_date, status |
employee_id: required, ondelete=cascade, department_id: readonly, job_id: readonly, evaluator_id: required, evaluation_date: required, status: required |
status |
_check_period_range(period_start, period_end) |
— | — | — | ../custom_addons_scola/gcgscola/scola_hr/models/performance_evaluation.py:7 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_hr |
resource.calendar.late.band |
ResourceCalendarLateBand | calendar_id, min_minutes, penalty_type |
calendar_id: required, ondelete=cascade, min_minutes: required, penalty_type: required, company_id: readonly |
— | _check_minute_range(min_minutes, max_minutes) |
— | — | — | ../custom_addons_scola/gcgscola/scola_hr/models/resource_calendar_late.py:8 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_hr |
resource.calendar |
ResourceCalendar | — | — | — | — | — | — | action_seed_default_late_bands |
../custom_addons_scola/gcgscola/scola_hr/models/resource_calendar_late.py:156 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_hr_attendance |
scola.attendance.correction, mail.thread, mail.activity.mixin, scola.approval.mixin |
AttendanceCorrection | name, employee_id, correction_type, correction_date, reason |
name: required, readonly, employee_id: required, correction_type: required, correction_date: required, reason: required |
— | — | — | — | action_submit, action_cancel, action_reset_to_draft |
../custom_addons_scola/gcgscola/scola_hr_attendance/models/attendance_correction.py:8 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_hr_attendance |
scola.attendance.lock |
AttendanceLock | date_from, date_to |
date_from: required, date_to: required, locked_by: readonly, locked_date: readonly, unlocked_by: readonly |
— | — | — | unique_period: UNIQUE(date_from, date_to) -> This period is already locked! |
— | ../custom_addons_scola/gcgscola/scola_hr_attendance/models/attendance_lock.py:7 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_hr_attendance |
scola.attendance.reconciliation |
AttendanceReconciliation | reconciliation_date |
reconciliation_date: required, readonly, records_checked: readonly, records_synced: readonly, records_failed: readonly, sync_duration: readonly, state: readonly, error_log: readonly, line_ids: readonly |
state |
— | — | — | — | ../custom_addons_scola/gcgscola/scola_hr_attendance/models/attendance_reconciliation.py:13 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_hr_attendance |
scola.attendance.reconciliation.line |
AttendanceReconciliationLine | reconciliation_id, employee_id, status |
reconciliation_id: required, ondelete=cascade, scola_attendance_id: readonly, hr_attendance_id: readonly, employee_id: required, readonly, check_in: readonly, check_out: readonly, status: required, readonly, error_message: readonly |
status |
— | — | — | — | ../custom_addons_scola/gcgscola/scola_hr_attendance/models/attendance_reconciliation.py:226 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_hr_attendance |
scola.employee.attendance, mail.thread, mail.activity.mixin |
ScolaEmployeeAttendance | employee_id, company_id, check_in |
employee_id: required, ondelete=cascade, department_id: readonly, company_id: required, hr_attendance_id: readonly, ondelete=set null, check_in: required, worked_hours: readonly |
state |
_check_validity_check_in_check_out(check_in, check_out) |
— | — | action_check_out, process_check_in, process_check_out |
../custom_addons_scola/gcgscola/scola_hr_attendance/models/employee_attendance.py:25 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_hr_attendance |
scola.employee.face |
ScolaEmployeeFace | employee_id, face_image |
employee_id: required, ondelete=cascade, face_image: required, registered_date: readonly, registered_by: readonly |
— | _check_primary_face(is_primary) |
— | — | action_set_primary, action_regenerate_encoding |
../custom_addons_scola/gcgscola/scola_hr_attendance/models/employee_face.py:24 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_hr_attendance |
hr.employee |
HrEmployee | — | — | attendance_state |
— | — | — | action_view_faces, action_view_attendance, action_register_face |
../custom_addons_scola/gcgscola/scola_hr_attendance/models/hr_employee.py:6 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_hr_attendance |
res.company |
ResCompany | attendance_anti_spoof_mode |
attendance_anti_spoof_mode: required |
— | — | — | — | action_generate_school_coordinates |
../custom_addons_scola/gcgscola/scola_hr_attendance/models/res_company.py:7 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_inventory |
maintenance.equipment |
ScolaAsset | x_asset_number |
x_asset_number: required, readonly, currency_id: readonly |
— | — | — | — | — | ../custom_addons_scola/gcgscola/scola_inventory/models/asset.py:3 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_inventory |
scola.asset.disposal, mail.thread, mail.activity.mixin |
AssetDisposal | name, asset_id, disposal_reason, description, recommended_action, request_date, state |
name: required, readonly, asset_id: required, ondelete=restrict, asset_number: readonly, asset_name: readonly, location_id: readonly, disposal_reason: required, description: required, recommended_action: required, request_date: required, state: required, requested_by: readonly, approved_by: readonly, approved_date: readonly, rejected_by: readonly, rejected_date: readonly, disposal_date: readonly |
state |
— | — | — | action_approve, action_reject, action_reject_confirm, action_dispose, action_reset_to_draft |
../custom_addons_scola/gcgscola/scola_inventory/models/asset_disposal.py:6 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_inventory |
scola.asset.inspection, mail.thread, mail.activity.mixin |
AssetInspection | name, asset_id, inspection_date, inspector_id, condition, notes, state |
name: required, readonly, asset_id: required, ondelete=restrict, asset_number: readonly, asset_name: readonly, location_id: readonly, category_id: readonly, inspection_date: required, inspector_id: required, condition: required, previous_condition: readonly, notes: required, maintenance_request_id: readonly, state: required |
state |
— | — | — | action_confirm, action_create_work_order, action_view_work_order |
../custom_addons_scola/gcgscola/scola_inventory/models/asset_inspection.py:5 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_inventory |
scola.stock.inventory, mail.thread, mail.activity.mixin |
ScolaStockInventory | name, date, location_id, state, company_id |
name: required, readonly, date: required, location_id: required, state: required, company_id: required, x_approved_by: readonly, x_approved_date: readonly, currency_id: readonly |
state |
— | — | — | action_start, action_validate, action_approve, action_reject, action_apply_adjustments, action_cancel, action_reset_to_draft |
../custom_addons_scola/gcgscola/scola_inventory/models/stock_inventory.py:6 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_inventory |
scola.stock.inventory.line |
ScolaStockInventoryLine | inventory_id, product_id, product_uom_id |
inventory_id: required, ondelete=cascade, product_id: required, product_uom_id: required, theoretical_qty: readonly, currency_id: readonly |
state |
_check_counted_qty(counted_qty) |
_onchange_product_id(product_id) |
— | — | ../custom_addons_scola/gcgscola/scola_inventory/models/stock_inventory_line.py:6 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_inventory |
stock.picking |
StockPickingAssetBridge | — | x_approved_by: readonly, x_approved_date: readonly, currency_id: readonly |
x_approval_state |
— | — | — | action_confirm, action_assign, action_scola_submit, action_scola_approve, action_scola_reject, action_scola_cancel, button_validate |
../custom_addons_scola/gcgscola/scola_inventory/models/stock_picking.py:5 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_inventory_account_bridge |
scola.stock.valuation.layer |
ScolaStockValuationLayer | product_id, date, quantity, unit_cost |
product_id: required, ondelete=cascade, date: required, quantity: required, unit_cost: required |
— | — | — | — | — | ../custom_addons_scola/gcgscola/scola_inventory_account_bridge/models/account_inventory_valuation.py:205 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_inventory_account_bridge |
stock.valuation.report |
StockValuationReport | name, date |
name: required, date: required |
state |
— | — | — | generate_report, action_generate_report |
../custom_addons_scola/gcgscola/scola_inventory_account_bridge/models/account_inventory_valuation.py:342 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_inventory_account_bridge |
stock.valuation.report.line |
StockValuationReportLine | report_id, product_id |
report_id: required, ondelete=cascade, product_id: required |
— | — | — | — | — | ../custom_addons_scola/gcgscola/scola_inventory_account_bridge/models/account_inventory_valuation.py:509 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_inventory_account_bridge |
account.move |
AccountMoveInventory | — | — | — | — | — | — | action_post |
../custom_addons_scola/gcgscola/scola_inventory_account_bridge/models/account_move.py:4 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_lesson_hours |
op.batch |
OpBatch | — | lesson_hour_profile_id: ondelete=restrict |
— | — | _onchange_education_level_lesson_profile(education_level, company_id) |
— | — | ../custom_addons_scola/gcgscola/scola_lesson_hours/models/batch.py:5 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_lesson_hours |
scola.lesson.hour.profile |
ScolaLessonHourProfile | name, company_id, weekday_mode |
name: required, company_id: required, weekday_mode: required |
— | _check_school_window(school_start_time, school_end_time), _check_unique_name_company(name, company_id, active), _check_single_default(is_default, company_id) |
— | unique_profile_code_company: unique(code, company_id) -> Kode profil jam pelajaran harus unik per satuan pendidikan. |
— | ../custom_addons_scola/gcgscola/scola_lesson_hours/models/lesson_hour_profile.py:14 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_lesson_hours |
scola.lesson.hour.profile.weekday |
ScolaLessonHourProfileWeekday | profile_id, weekday, school_start_time |
profile_id: required, ondelete=cascade, weekday: required, school_start_time: required |
— | _check_window(school_start_time, school_end_time) |
— | unique_profile_weekday: unique(profile_id, weekday) -> Setiap hari hanya boleh punya satu aturan jam masuk per profil. |
— | ../custom_addons_scola/gcgscola/scola_lesson_hours/models/lesson_hour_profile_weekday.py:6 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_lesson_hours |
scola.lesson.hours |
ScolaLessonHours | start_hour, end_hour |
start_hour: required, end_hour: required, profile_id: ondelete=restrict |
— | _check_hours(start_hour, end_hour, profile_id, company_id, active) |
— | — | — | ../custom_addons_scola/gcgscola/scola_lesson_hours/models/lesson_hours.py:9 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_library |
op.media.movement |
MediaMovementExtend | — | fine_invoice_id: readonly, fine_invoice_state: readonly |
fine_invoice_state |
— | — | — | action_renew, action_view_fine_invoice, action_create_fine_invoice |
../custom_addons_scola/gcgscola/scola_library/models/circulation_extend.py:8 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_library |
op.media |
MediaExtendExport | — | — | — | — | — | — | action_export_marc, action_export_csv |
../custom_addons_scola/gcgscola/scola_library/models/circulation_extend.py:497 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_library |
op.library.card |
LibraryCard | — | user_id: readonly |
— | — | — | — | — | ../custom_addons_scola/gcgscola/scola_library/models/library_card_extend.py:5 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_library |
op.library.location |
LibraryLocation | name, code |
name: required, code: required, parent_id: ondelete=cascade |
— | _check_parent_id(parent_id) |
— | code_company_uniq: unique(code, company_id) -> Location code must be unique per company! |
— | ../custom_addons_scola/gcgscola/scola_library/models/library_location.py:6 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_library |
op.library.notif.scheduler, mail.thread |
LibraryNotificationScheduler | movement_id, notification_type, scheduled_date |
movement_id: required, ondelete=cascade, notification_type: required, scheduled_date: required, date_sent: readonly, error_message: readonly |
state |
— | — | — | process_pending_notifications, action_send, action_cancel_schedule |
../custom_addons_scola/gcgscola/scola_library/models/library_notif_scheduler.py:6 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_library |
op.library.notification, mail.thread, mail.activity.mixin |
LibraryNotification | library_card_id, media_id, notification_type, title, message |
library_card_id: required, ondelete=cascade, media_id: required, ondelete=cascade, notification_type: required, date_created: readonly, date_delivered: readonly, date_read: readonly, title: required, message: required, movement_id: ondelete=set null, partner_id: readonly, user_id: readonly |
state |
— | — | — | action_mark_as_read, action_cancel, mark_as_read |
../custom_addons_scola/gcgscola/scola_library/models/library_notification.py:7 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_library |
op.library.damage_loss, mail.thread, mail.activity.mixin |
LibraryDamageLoss | media_id, library_card_id, date_reported, case_type, severity, description |
media_id: required, ondelete=cascade, library_card_id: required, ondelete=cascade, movement_id: ondelete=cascade, date_created: readonly, date_reported: required, date_resolved: readonly, case_type: required, severity: required, description: required |
state |
— | — | — | action_approve_case, action_reject_case, action_appeal |
../custom_addons_scola/gcgscola/scola_library/models/library_p4_damage_loss_procurement.py:7 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_library |
op.library.asset_replace, mail.thread |
LibraryAssetReplacement | damage_loss_id |
damage_loss_id: required, ondelete=cascade, date_created: readonly |
state |
— | — | — | action_order_replacement, action_receive_replacement, action_install |
../custom_addons_scola/gcgscola/scola_library/models/library_p4_damage_loss_procurement.py:70 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_library |
op.library.procurement, mail.thread, mail.activity.mixin |
LibraryProcurement | title, request_type |
title: required, request_type: required, date_created: readonly |
state |
— | — | — | action_submit_approval, action_approve, action_order, action_receive, action_catalog |
../custom_addons_scola/gcgscola/scola_library/models/library_p4_damage_loss_procurement.py:105 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_library |
op.library.visitor_log |
LibraryVisitorLog | date_checkin, visitor_type |
library_card_id: ondelete=set null, member_id: ondelete=set null, date_checkin: required, visitor_type: required |
— | — | — | — | action_checkout |
../custom_addons_scola/gcgscola/scola_library/models/library_p5_programs_visitors_accreditation.py:6 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_library |
op.library.accreditation |
LibraryAccreditationMetrics | academic_year, librarian_count, assistant_count |
academic_year: required, librarian_count: required, assistant_count: required |
— | — | — | — | — | ../custom_addons_scola/gcgscola/scola_library/models/library_p5_programs_visitors_accreditation.py:55 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_library |
op.library.queue.auto, mail.thread, mail.activity.mixin |
LibraryQueueAutoAssign | media_id, library_card_id |
media_id: required, ondelete=cascade, library_card_id: required, ondelete=cascade, company_id: readonly, queue_position: readonly, date_requested: readonly, date_assigned: readonly, assigned_unit_id: ondelete=set null |
state |
— | — | — | action_assign_unit, action_mark_collected, action_cancel, action_auto_assign_pending_queues, action_expire_overdue_queues |
../custom_addons_scola/gcgscola/scola_library/models/library_queue_auto.py:7 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_library |
op.library.return, mail.thread, mail.activity.mixin |
LibraryReturnWorkflow | movement_id, date_returned, condition |
movement_id: required, ondelete=cascade, media_id: readonly, media_unit_id: readonly, library_card_id: readonly, company_id: readonly, date_created: readonly, date_returned: required, expected_return_date: readonly, condition: required |
state |
— | — | — | action_complete_return, action_request_waiver, action_approve_waiver, action_reject_waiver, action_assess_damage |
../custom_addons_scola/gcgscola/scola_library/models/library_return_workflow.py:6 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_library |
op.library.wishlist, mail.thread, mail.activity.mixin |
LibraryWishlist | library_card_id, media_id |
library_card_id: required, ondelete=cascade, media_id: required, ondelete=cascade, date_added: readonly, partner_id: readonly, user_id: readonly, company_id: readonly |
state |
— | — | — | action_remove_from_wishlist, action_toggle_pin, action_mark_borrowed |
../custom_addons_scola/gcgscola/scola_library/models/library_wishlist.py:6 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_library |
op.media |
MediaExtend | — | — | — | — | _onchange_generate_call_number(ddc_classification, author_ids, name) |
— | — | ../custom_addons_scola/gcgscola/scola_library/models/media_unit_extend.py:80 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_library |
op.reading.log |
ReadingLog | user_id, book_title, start_date |
user_id: required, book_title: required, start_date: required |
— | — | _onchange_media_id(media_id) |
— | action_verify, action_unverify |
../custom_addons_scola/gcgscola/scola_library/models/reading_log.py:6 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_library |
op.reading.program |
ReadingProgram | name |
name: required |
state |
— | — | — | action_start, action_complete |
../custom_addons_scola/gcgscola/scola_library/models/reading_log.py:122 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_library |
op.stock.opname, mail.thread, mail.activity.mixin |
StockOpname | name, start_date |
name: required, readonly, start_date: required |
state |
— | — | — | action_start, action_review, action_done, action_cancel, action_reset_draft |
../custom_addons_scola/gcgscola/scola_library/models/stock_opname.py:7 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_library |
op.stock.opname.line |
StockOpnameLine | opname_id, media_unit_id |
opname_id: required, ondelete=cascade, media_unit_id: required |
status |
— | — | — | action_scan |
../custom_addons_scola/gcgscola/scola_library/models/stock_opname.py:152 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_library |
op.textbook.package, mail.thread, mail.activity.mixin |
TextbookPackage | name, grade_level |
name: required, grade_level: required |
— | — | — | — | action_view_distributions |
../custom_addons_scola/gcgscola/scola_library/models/textbook_package.py:7 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_library |
op.textbook.distribution, mail.thread, mail.activity.mixin |
TextbookDistribution | name, package_id, classroom_id, distribution_date |
name: required, readonly, package_id: required, classroom_id: required, distribution_date: required |
state |
— | — | — | action_generate_lines, action_distribute, action_return_all, action_cancel |
../custom_addons_scola/gcgscola/scola_library/models/textbook_package.py:69 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_library |
op.textbook.distribution.line |
TextbookDistributionLine | distribution_id, student_id, media_id |
distribution_id: required, ondelete=cascade, student_id: required, media_id: required |
state |
— | — | — | action_return |
../custom_addons_scola/gcgscola/scola_library/models/textbook_package.py:251 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_lms |
scola.class.daily.report |
ScolaClassDailyReport | company_id, batch_id, faculty_id, report_date, state |
company_id: required, batch_id: required, faculty_id: required, report_date: required, state: required |
state |
— | — | uniq_batch_date: unique(batch_id, report_date) -> Only one class daily report per class and date. |
action_ensure_activity_slots |
../custom_addons_scola/gcgscola/scola_lms/models/class_daily_report.py:10 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_lms |
scola.class.daily.report.activity |
ScolaClassDailyReportActivity | report_id, slot_label |
report_id: required, ondelete=cascade, slot_label: required, session_id: ondelete=set null, schedule_batch_id: ondelete=set null, schedule_faculty_id: ondelete=set null |
— | — | — | — | — | ../custom_addons_scola/gcgscola/scola_lms/models/class_daily_report.py:212 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_lms |
ir.attachment |
IrAttachment | — | lms_version: readonly, lms_version_group: readonly, lms_is_latest: readonly, lms_replaced_attachment_id: readonly, ondelete=set null |
— | — | — | — | — | ../custom_addons_scola/gcgscola/scola_lms/models/ir_attachment.py:8 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_lms |
lms.audit.log |
LmsAuditLog | action, model_name, user_id, created_at |
action: required, model_name: required, user_id: required, created_at: required |
— | — | — | — | — | ../custom_addons_scola/gcgscola/scola_lms/models/lms_audit_log.py:6 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_lms |
lms.content.access.log |
LmsContentAccessLog | student_id, item_id |
student_id: required, ondelete=cascade, item_id: required, ondelete=cascade, first_accessed_at: readonly, last_accessed_at: readonly, completed_at: readonly |
— | — | — | unique_student_item: UNIQUE(student_id, item_id) -> Duplicate access log for this student and item! |
mark_completed |
../custom_addons_scola/gcgscola/scola_lms/models/lms_content_access_log.py:15 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_lms |
lms.course.item |
LmsCourseItem | name, assignment_id, item_type, visibility |
name: required, assignment_id: required, ondelete=cascade, item_type: required, visibility: required, rubric_id: ondelete=set null |
— | _check_scheduled_publish_date(visibility, published_at) |
— | — | — | ../custom_addons_scola/gcgscola/scola_lms/models/lms_course_item.py:9 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_lms |
lms.discussion, mail.thread, mail.activity.mixin |
LmsDiscussion | name, batch_id, subject_id |
name: required, batch_id: required, subject_id: required, solution_post_id: ondelete=set null, moderated_by_id: readonly, moderated_at: readonly |
— | _check_course_consistency(course_id, batch_id, subject_id), _check_solution_post_consistency(solution_post_id) |
_onchange_course_id(course_id) |
— | — | ../custom_addons_scola/gcgscola/scola_lms/models/lms_discussion.py:5 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_lms |
lms.discussion.post |
LmsDiscussionPost | discussion_id, author_id, body, moderation_state |
discussion_id: required, ondelete=cascade, author_id: required, body: required, moderation_state: required, flagged_by_id: readonly, flagged_at: readonly, resolved_by_id: readonly, resolved_at: readonly, moderated_by_id: readonly, moderated_at: readonly |
moderation_state |
— | — | — | — | ../custom_addons_scola/gcgscola/scola_lms/models/lms_discussion.py:93 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_lms |
lms.enrollment |
LmsEnrollment | course_id, student_id, source, state, requested_by_id, requested_at |
course_id: required, ondelete=cascade, student_id: required, ondelete=cascade, source: required, state: required, requested_by_id: required, requested_at: required |
state |
— | — | unique_course_student: unique(course_id, student_id) -> Enrollment for this course and student already exists. |
action_approve, action_reject, action_withdraw |
../custom_addons_scola/gcgscola/scola_lms/models/lms_enrollment.py:5 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_lms |
lms.grade.mapping.template, mail.thread, mail.activity.mixin |
LmsGradeMappingTemplate | name, company_id, preset_key, state, assignment_default_component, cbt_default_component |
name: required, company_id: required, preset_key: required, state: required, assignment_default_component: required, cbt_default_component: required, submitted_by_id: readonly, submitted_at: readonly, approved_by_id: readonly, approved_at: readonly, rejected_by_id: readonly, rejected_at: readonly |
state |
_check_default_state(is_default, state, active), _check_single_default_template(is_default, company_id, state, active) |
— | lms_grade_map_tpl_name_company_uniq: unique(name, company_id) -> Template name must be unique per school. |
action_submit_for_approval, action_approve, action_reject, action_set_default, action_reset_to_preset |
../custom_addons_scola/gcgscola/scola_lms/models/lms_grade_mapping_template.py:87 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_lms |
lms.grade.mapping.template.line |
LmsGradeMappingTemplateLine | template_id, source_type, match_type, match_value, component_type |
template_id: required, ondelete=cascade, source_type: required, match_type: required, match_value: required, component_type: required |
— | _check_match_value(match_value), _check_match_type_by_source(source_type, match_type) |
— | — | — | ../custom_addons_scola/gcgscola/scola_lms/models/lms_grade_mapping_template.py:431 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_lms |
lms.grading.weight.profile, mail.thread, mail.activity.mixin |
LmsGradingWeightProfile | name, company_id, preset_key, state |
name: required, company_id: required, preset_key: required, state: required, submitted_by_id: readonly, submitted_at: readonly, approved_by_id: readonly, approved_at: readonly, rejected_by_id: readonly, rejected_at: readonly |
state |
_check_weight_total_range(line_ids), _check_total_weight_for_approved_profile(state, enforce_total_100, line_ids), _check_default_state(is_default, state, active), _check_single_default_profile(is_default, company_id, state, active) |
— | lms_weight_profile_name_company_uniq: unique(name, company_id) -> Profile name must be unique per school. |
action_submit_for_approval, action_approve, action_reject, action_set_default, action_reset_to_preset |
../custom_addons_scola/gcgscola/scola_lms/models/lms_grading_weight_profile.py:50 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_lms |
lms.grading.weight.profile.line |
LmsGradingWeightProfileLine | profile_id, component_type, weight |
profile_id: required, ondelete=cascade, component_type: required, weight: required |
— | _check_weight_value(weight) |
— | lms_weight_profile_component_uniq: unique(profile_id, component_type) -> Each component can only appear once in a profile. |
— | ../custom_addons_scola/gcgscola/scola_lms/models/lms_grading_weight_profile.py:362 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_lms |
scola.modul.ajar |
ScolaModulAjar | name, subject_id, faculty_id |
name: required, subject_id: required, faculty_id: required |
state |
— | — | — | action_publish, action_archive, action_reset_draft |
../custom_addons_scola/gcgscola/scola_lms/models/lms_modul_ajar.py:14 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_lms |
lms.parent.message, mail.thread, mail.activity.mixin |
LmsParentMessage | child_id, course_id, faculty_id, parent_user_id, subject, body, state |
child_id: required, course_id: required, faculty_id: required, parent_user_id: required, subject: required, body: required, state: required, replied_by_id: readonly, replied_at: readonly, closed_at: readonly, discuss_channel_id: readonly, discuss_parent_message_id: readonly, discuss_reply_message_id: readonly |
state |
_check_faculty_match_course(course_id, faculty_id), _check_child_course_batch(child_id, course_id) |
_onchange_course_id(course_id) |
— | action_reply, action_close |
../custom_addons_scola/gcgscola/scola_lms/models/lms_parent_message.py:6 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_lms |
lms.rubric |
LmsRubric | name |
name: required |
— | — | — | — | — | ../custom_addons_scola/gcgscola/scola_lms/models/lms_rubric.py:5 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_lms |
lms.rubric.criterion |
LmsRubricCriterion | rubric_id, title, max_points |
rubric_id: required, ondelete=cascade, title: required, max_points: required |
— | — | — | — | — | ../custom_addons_scola/gcgscola/scola_lms/models/lms_rubric.py:49 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_lms |
lms.storage.quota |
LmsStorageQuota | student_id, quota_mb, company_id |
student_id: required, ondelete=cascade, quota_mb: required, company_id: required |
— | — | — | unique_lms_quota_student: unique(student_id) -> Storage quota for this student already exists. |
— | ../custom_addons_scola/gcgscola/scola_lms/models/lms_storage_quota.py:5 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_lms |
lms.student.achievement |
LmsStudentAchievement | student_id, achievement_type, label, earned_at |
student_id: required, ondelete=cascade, achievement_type: required, label: required, earned_at: required, course_id: ondelete=set null |
— | — | — | unique_student_achievement_course: UNIQUE(student_id, achievement_type, course_id) -> Achievement ini sudah diberikan ke siswa untuk kursus ini. |
— | ../custom_addons_scola/gcgscola/scola_lms/models/lms_student_achievement.py:10 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_lms |
lms.submission |
LmsSubmission | assignment_item_id, student_id, version |
assignment_item_id: required, student_id: required, version: required, submitted_at: readonly, plagiarism_score: readonly, plagiarism_flag: readonly, plagiarism_reference_submission_id: readonly, ondelete=set null |
grade_state, state |
— | — | unique_submission_version: unique(assignment_item_id, student_id, version) -> Duplicate submission version for this assignment! |
— | ../custom_addons_scola/gcgscola/scola_lms/models/lms_submission.py:9 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_lms |
lms.syllabus |
LmsSyllabus | name, subject_id, company_id |
name: required, subject_id: required, company_id: required |
— | — | — | — | — | ../custom_addons_scola/gcgscola/scola_lms/models/lms_syllabus.py:4 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_lms |
lms.syllabus.line |
LmsSyllabusLine | name |
syllabus_id: ondelete=cascade, name: required |
— | — | — | — | — | ../custom_addons_scola/gcgscola/scola_lms/models/lms_syllabus.py:47 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_lms |
op.session |
OpSession | — | teaching_log_updated_at: readonly, teaching_log_updated_by: readonly |
— | — | — | — | — | ../custom_addons_scola/gcgscola/scola_lms/models/op_session.py:8 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_lms |
op.teaching.assignment |
OpTeachingAssignment | faculty_id, batch_id, subject_id |
faculty_id: required, batch_id: required, subject_id: required |
— | — | — | unique_assignment: unique(faculty_id, batch_id, subject_id, term_id) -> Duplicate Teaching Assignment found for this Faculty, Batch, Subject, and Term! |
— | ../custom_addons_scola/gcgscola/scola_lms/models/op_teaching_assignment.py:9 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_lms |
scola.teacher.report.program.config |
TeacherReportProgramConfig | company_id, education_level |
company_id: required, education_level: required |
— | — | — | uniq_company_level: unique(company_id, education_level) -> Only one teacher-report config per company and education level. |
— | ../custom_addons_scola/gcgscola/scola_lms/models/teacher_report_program_config.py:66 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_lms |
scola.class.weekly.plan |
ScolaClassWeeklyPlan | company_id, batch_id, faculty_id, date_from, date_to, state |
company_id: required, batch_id: required, faculty_id: required, date_from: required, date_to: required, state: required |
state |
— | — | uniq_batch_week: unique(batch_id, date_from, date_to) -> Only one weekly plan per class and week range. |
action_generate_student_reports, action_sync_week_number, action_seed_default_lessons |
../custom_addons_scola/gcgscola/scola_lms/models/weekly_teacher_report.py:14 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_lms |
scola.class.weekly.plan.lesson |
ScolaClassWeeklyPlanLesson | plan_id, subject_label |
plan_id: required, ondelete=cascade, subject_label: required |
— | — | — | — | — | ../custom_addons_scola/gcgscola/scola_lms/models/weekly_teacher_report.py:177 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_lms |
scola.student.weekly.report, scola.approval.mixin |
ScolaStudentWeeklyReport | company_id, plan_id, student_id, batch_id, faculty_id, date_from, date_to, state |
company_id: required, plan_id: required, ondelete=cascade, student_id: required, batch_id: required, faculty_id: required, date_from: required, date_to: required, state: required |
state |
— | — | uniq_plan_student: unique(plan_id, student_id) -> Only one weekly report per student and week plan. |
action_submit_for_approval, action_revise_after_reject, action_publish, action_teacher_publish_or_submit, action_parent_acknowledge |
../custom_addons_scola/gcgscola/scola_lms/models/weekly_teacher_report.py:195 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_news |
scola.news, mail.thread, mail.activity.mixin |
ScolaNews | name, author_id, priority, target_audience_type |
name: required, author_id: required, priority: required, target_audience_type: required, approved_by_id: readonly, approved_at: readonly, view_count: readonly, last_viewed_at: readonly, publish_notification_sent: readonly |
state |
_check_publish_window(publish_date_from, publish_date_to), _check_audience_policy(target_audience_type, class_ids, grade_ids, priority), _check_media_policy(featured_image, image_1, image_2, image_3, image_4, image_5, attachment_ids) |
— | — | action_submit, action_approve, action_reject, action_publish, action_archive, action_draft, action_unpublish, action_intent, action_mark_viewed |
../custom_addons_scola/gcgscola/scola_news/models/scola_news.py:96 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_news |
scola.news.category |
ScolaNewsCategory | name, company_id |
name: required, company_id: required |
— | — | — | — | — | ../custom_addons_scola/gcgscola/scola_news/models/scola_news.py:1675 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_news |
scola.news.audit.log |
ScolaNewsAuditLog | news_id, action, user_id |
news_id: required, ondelete=cascade, action: required, user_id: required |
— | — | — | — | — | ../custom_addons_scola/gcgscola/scola_news/models/scola_news.py:1713 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_news |
scola.news.read |
ScolaNewsRead | news_id, user_id, read_at |
news_id: required, ondelete=cascade, user_id: required, ondelete=cascade, read_at: required |
— | — | — | news_user_unique: UNIQUE(news_id, user_id) -> Setiap user hanya boleh memiliki satu catatan baca per berita. |
mark_as_read, mark_many_as_read |
../custom_addons_scola/gcgscola/scola_news/models/scola_news_read.py:10 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_parent |
op.parent |
ScolaParent | — | nik: size=16 |
— | _check_nik(nik) |
— | unique_nik: unique(nik) -> NIK harus unik! NIK ini sudah digunakan. |
action_create_user |
../custom_addons_scola/gcgscola/scola_parent/models/parent.py:12 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_payroll |
scola.bpjs.config |
BPJSConfig | name, effective_date |
name: required, effective_date: required |
— | — | — | unique_effective_date_company: UNIQUE(effective_date, company_id) -> Only one BPJS config per effective date per company! |
— | ../custom_addons_scola/gcgscola/scola_payroll/models/bpjs_config.py:8 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_payroll |
hr.bpjs.config |
HrBpjsConfig | — | salary_rule_id: readonly, ondelete=set null, salary_rule_comp_id: readonly, ondelete=set null |
— | — | — | — | action_create_salary_rule, action_view_salary_rule, action_view_salary_rule_comp |
../custom_addons_scola/gcgscola/scola_payroll/models/hr_bpjs_config.py:8 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_payroll |
hr.family.allowance.config |
HrFamilyAllowanceConfig | — | salary_rule_spouse_id: readonly, ondelete=set null, salary_rule_child_id: readonly, ondelete=set null |
— | — | — | — | action_view_salary_rule_spouse, action_view_salary_rule_child |
../custom_addons_scola/gcgscola/scola_payroll/models/hr_family_allowance.py:7 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_payroll |
hr.job.allowance.type |
HrJobAllowanceType | — | salary_rule_id: readonly, ondelete=set null |
— | — | — | — | action_create_salary_rule, action_view_salary_rule |
../custom_addons_scola/gcgscola/scola_payroll/models/hr_job_allowance.py:8 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_payroll |
hr.contract |
HrContract | — | — | — | — | _onchange_structure_type_id_scola(structure_type_id) |
— | — | ../custom_addons_scola/gcgscola/scola_payroll/models/hr_payroll_structure_type.py:38 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_payroll |
hr.payslip |
HrPayslip | — | — | — | — | _onchange_employee_pkg(employee_id), _onchange_employee_set_period_and_lines(employee_id), _onchange_employee_attendance(employee_id, date_from, date_to, contract_id) |
— | action_refresh_attendance, generate_1721a1 |
../custom_addons_scola/gcgscola/scola_payroll/models/hr_payslip.py:10 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_platform |
scola.addon.request |
ScolaAddonRequest | company_id, sku, requested_by, state |
company_id: required, sku: required, requested_by: required, state: required |
state |
_check_sku_valid(sku) |
— | — | action_approve, action_reject, action_queue_for_provisioning, action_start_provisioning, action_mark_active, action_mark_failed |
../custom_addons_scola/gcgscola/scola_platform/models/addon_request.py:44 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_platform |
scola.addon.request.notification |
ScolaAddonRequestNotification | request_id, audience, notification_kind, channel, state, attempt_count, max_attempts, next_attempt_at |
request_id: required, ondelete=cascade, company_id: readonly, audience: required, notification_kind: required, channel: required, recipient_user_id: ondelete=set null, state: required, attempt_count: required, max_attempts: required, next_attempt_at: required, last_attempt_at: readonly, sent_at: readonly, error_message: readonly |
state |
— | — | — | action_process |
../custom_addons_scola/gcgscola/scola_platform/models/addon_request_notification.py:28 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_platform |
scola.entitlement.audit |
ScolaEntitlementAudit | company_id, action, changed_by_id |
company_id: required, ondelete=cascade, action: required, changed_by_id: required, readonly |
license_status_before, license_status_after |
— | — | — | — | ../custom_addons_scola/gcgscola/scola_platform/models/entitlement_audit.py:5 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_portal |
scola.announcement, mail.thread, mail.activity.mixin |
ScolaAnnouncement | name, announcement_type, target_type, author_id |
name: required, announcement_type: required, target_type: required, author_id: required |
state |
_check_dates(expiry_date, publish_date) |
— | — | action_submit, action_approve, action_reject, action_publish, action_archive, action_draft, action_view_reads |
../custom_addons_scola/gcgscola/scola_portal/models/announcement.py:15 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_portal |
scola.announcement.read |
ScolaAnnouncementRead | announcement_id, user_id |
announcement_id: required, ondelete=cascade, user_id: required, ondelete=cascade |
— | — | — | user_announcement_unique: UNIQUE(user_id, announcement_id) -> User can only read an announcement once |
mark_as_read |
../custom_addons_scola/gcgscola/scola_portal/models/announcement.py:348 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_portal |
scola.announcement.reject.wizard |
ScolaAnnouncementRejectWizard | announcement_id, rejection_reason |
announcement_id: required, rejection_reason: required |
— | — | — | — | action_reject |
../custom_addons_scola/gcgscola/scola_portal/models/announcement.py:395 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_portal |
scola.fcm.device.token |
ScolaFcmDeviceToken | user_id, token, platform, last_seen |
user_id: required, ondelete=cascade, token: required, platform: required, last_seen: required, last_success_at: readonly, last_error: readonly, last_error_at: readonly, fail_count: readonly |
— | — | — | token_unique: UNIQUE(token) -> Token FCM sudah terdaftar. |
mark_delivery_result |
../custom_addons_scola/gcgscola/scola_portal/models/fcm_device_token.py:6 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_portal |
mail.message |
MailMessage | — | — | — | — | — | scola_client_request_id_unique: unique(scola_client_request_id) -> Scola client request ID must be unique. |
— | ../custom_addons_scola/gcgscola/scola_portal/models/mail_message.py:5 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_portal |
scola.notification.config |
ScolaNotificationConfig | name |
name: required, whatsapp_status: readonly, whatsapp_last_check: readonly, telegram_status: readonly, telegram_last_check: readonly, telegram_bot_username: readonly |
whatsapp_status, telegram_status |
— | — | company_unique: UNIQUE(company_id, active) -> Only one active configuration per company is allowed! |
— | ../custom_addons_scola/gcgscola/scola_portal/models/notification_config.py:11 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_portal |
scola.notification.delivery.outbox |
ScolaNotificationDeliveryOutbox | notification_id, state, attempt_count, max_attempts, next_attempt_at |
notification_id: required, ondelete=cascade, state: required, attempt_count: required, max_attempts: required, next_attempt_at: required, last_attempt_at: readonly, last_error: readonly |
state |
— | — | notification_delivery_outbox_unique: unique(notification_id) -> A notification may only have one external delivery outbox record. |
— | ../custom_addons_scola/gcgscola/scola_portal/models/notification_delivery_outbox.py:10 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_portal |
scola.notification.type |
ScolaNotificationType | name, code |
name: required, code: required |
— | — | — | code_unique: UNIQUE(code) -> Notification type code must be unique! |
— | ../custom_addons_scola/gcgscola/scola_portal/models/notification_preference.py:8 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_portal |
scola.notification.preference |
ScolaNotificationPreference | user_id, notification_type_id |
user_id: required, ondelete=cascade, notification_type_id: required, ondelete=cascade |
— | — | — | user_type_unique: UNIQUE(user_id, notification_type_id) -> User can only have one preference per notification type! |
set_user_preference |
../custom_addons_scola/gcgscola/scola_portal/models/notification_preference.py:48 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_portal |
scola.quiet.hours |
ScolaQuietHours | — | user_id: ondelete=cascade |
— | — | — | — | — | ../custom_addons_scola/gcgscola/scola_portal/models/notification_preference.py:163 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_portal |
res.users |
ResUsers | — | — | — | — | — | — | sync_legacy_fcm_token |
../custom_addons_scola/gcgscola/scola_portal/models/notification_preference.py:261 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_portal |
scola.portal.notification, mail.thread |
ScolaPortalNotification | user_id, notification_type, title |
user_id: required, ondelete=cascade, notification_type: required, title: required, announcement_id: ondelete=set null, invoice_id: ondelete=set null, student_id: ondelete=set null, channel_id: ondelete=set null, mail_message_id: ondelete=set null |
— | — | — | idempotency_unique: UNIQUE(idempotency_key) -> Notification with this idempotency key already exists |
mark_as_read, mark_channel_messages_read, mark_all_read |
../custom_addons_scola/gcgscola/scola_portal/models/portal_notification.py:16 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_portal |
scola.portal.notification.template |
ScolaPortalNotificationTemplate | name, code, category, title_id, content_id, notification_type |
name: required, code: required, category: required, title_id: required, content_id: required, notification_type: required, usage_count: readonly, last_used_date: readonly |
— | _check_available_variables(available_variables) |
— | code_unique: UNIQUE(code, company_id) -> Template code must be unique per company |
— | ../custom_addons_scola/gcgscola/scola_portal/models/portal_notification_template.py:12 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_public_complaint |
scola.public.complaint.field |
ScolaPublicComplaintField | name, field_key, field_type |
name: required, field_key: required, field_type: required |
— | _check_field_key_format(field_key), _check_options_json(options, field_type) |
— | unique_field_key: UNIQUE(field_key) -> Field Key harus unik! Tidak boleh ada dua field dengan key yang sama. |
— | ../custom_addons_scola/gcgscola/scola_public_complaint/models/complaint_field.py:9 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_public_complaint |
scola.public.complaint, mail.thread |
ScolaPublicComplaint | — | name: readonly, ip_address: readonly, submitted_at: readonly, read_by: readonly, read_date: readonly |
state |
— | — | — | action_mark_read, action_mark_unread |
../custom_addons_scola/gcgscola/scola_public_complaint/models/public_complaint.py:7 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_report_card |
scola.assessment.component |
ScolaAssessmentComponent | name, code, curriculum_id, weight, input_type |
name: required, code: required, curriculum_id: required, ondelete=cascade, parent_id: ondelete=cascade, weight: required, input_type: required |
— | _check_weight(weight), _check_child_weights(child_ids), _check_score_range(min_score, max_score) |
_onchange_source_type(source_type) |
unique_code_curriculum: UNIQUE(code, curriculum_id) -> Component code must be unique per curriculum! |
— | ../custom_addons_scola/gcgscola/scola_report_card/models/assessment_component.py:6 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_report_card |
scola.curriculum, mail.thread, mail.activity.mixin |
ScolaCurriculum | name, code, company_id |
name: required, code: required, company_id: required |
— | _check_single_active_per_company(is_active, company_id), _check_total_weight(total_weight) |
— | unique_code_company: UNIQUE(code, company_id) -> Curriculum code must be unique per school! |
action_view_components |
../custom_addons_scola/gcgscola/scola_report_card/models/curriculum.py:6 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_report_card |
scola.grade.scale |
ScolaGradeScale | name, scale_type |
name: required, scale_type: required |
— | — | — | — | — | ../custom_addons_scola/gcgscola/scola_report_card/models/grade_scale.py:6 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_report_card |
scola.grade.scale.line |
ScolaGradeScaleLine | grade_scale_id, min_score, max_score, grade_label |
grade_scale_id: required, ondelete=cascade, min_score: required, max_score: required, grade_label: required |
— | _check_score_range(min_score, max_score), _check_overlapping_ranges(min_score, max_score, grade_scale_id) |
— | unique_grade_per_scale: UNIQUE(grade_scale_id, grade_label) -> Grade label must be unique per scale! |
— | ../custom_addons_scola/gcgscola/scola_report_card/models/grade_scale.py:86 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_report_card |
scola.learning.outcome, mail.thread, mail.activity.mixin |
ScolaLearningOutcome | name, code, description, subject_id, phase |
name: required, code: required, description: required, subject_id: required, phase: required |
— | — | — | unique_code: UNIQUE(code) -> Kode CP harus unik! |
action_view_objectives |
../custom_addons_scola/gcgscola/scola_report_card/models/learning_outcome.py:6 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_report_card |
scola.learning.outcome.indicator |
ScolaLearningOutcomeIndicator | name, learning_outcome_id |
name: required, learning_outcome_id: required, ondelete=cascade |
— | — | — | — | — | ../custom_addons_scola/gcgscola/scola_report_card/models/learning_outcome.py:161 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_report_card |
scola.learning.objective, mail.thread |
ScolaLearningObjective | name, code, description, learning_outcome_id |
name: required, code: required, description: required, learning_outcome_id: required, ondelete=cascade, indicator_id: ondelete=set null |
— | — | _onchange_learning_outcome(learning_outcome_id) |
unique_code: UNIQUE(code) -> Kode TP harus unik! |
— | ../custom_addons_scola/gcgscola/scola_report_card/models/learning_outcome.py:194 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_report_card |
scola.student.learning.progress |
ScolaStudentLearningProgress | student_id, objective_id, academic_term_id |
student_id: required, objective_id: required, academic_term_id: required |
— | — | — | unique_student_objective_term: UNIQUE(student_id, objective_id, academic_term_id) -> Hanya boleh satu penilaian per siswa per TP per semester! |
— | ../custom_addons_scola/gcgscola/scola_report_card/models/learning_outcome.py:314 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_report_card |
scola.p5.dimension |
ScolaP5Dimension | name, code |
name: required, code: required |
— | — | — | unique_code_company: UNIQUE(code, company_id) -> Dimension code must be unique per school! |
— | ../custom_addons_scola/gcgscola/scola_report_card/models/p5_assessment.py:6 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_report_card |
scola.p5.element |
ScolaP5Element | name, dimension_id |
name: required, dimension_id: required, ondelete=cascade, parent_id: ondelete=cascade |
— | — | — | — | — | ../custom_addons_scola/gcgscola/scola_report_card/models/p5_assessment.py:51 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_report_card |
scola.p5.project, mail.thread, mail.activity.mixin |
ScolaP5Project | name, code, theme, academic_term_id, company_id |
name: required, code: required, theme: required, academic_term_id: required, company_id: required |
state |
— | — | unique_code_term: UNIQUE(code, academic_term_id) -> Project code must be unique per semester! |
action_activate, action_complete, action_draft |
../custom_addons_scola/gcgscola/scola_report_card/models/p5_assessment.py:88 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_report_card |
scola.p5.assessment, mail.thread, mail.activity.mixin |
ScolaP5Assessment | project_id, student_id |
project_id: required, ondelete=cascade, student_id: required |
state |
— | — | unique_student_project: UNIQUE(student_id, project_id) -> Each student can only have one assessment per project! |
action_submit, action_draft |
../custom_addons_scola/gcgscola/scola_report_card/models/p5_assessment.py:282 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_report_card |
scola.p5.assessment.line |
ScolaP5AssessmentLine | assessment_id, dimension_id |
assessment_id: required, ondelete=cascade, dimension_id: required |
— | — | _onchange_rating(rating) |
unique_dimension_assessment: UNIQUE(assessment_id, dimension_id) -> Each dimension can only be assessed once per assessment! |
— | ../custom_addons_scola/gcgscola/scola_report_card/models/p5_assessment.py:382 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_report_card |
scola.p5.phase, mail.thread, mail.activity.mixin |
ScolaP5Phase | project_id, phase_type |
project_id: required, ondelete=cascade, phase_type: required, actual_start_date: readonly, actual_end_date: readonly |
state |
_check_dates(planned_start_date, planned_end_date) |
— | — | action_start, action_complete, action_reactivate |
../custom_addons_scola/gcgscola/scola_report_card/models/p5_phase.py:16 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_report_card |
scola.p5.phase.checklist |
ScolaP5PhaseChecklist | phase_id, name |
phase_id: required, ondelete=cascade, name: required, completed_by: readonly, completed_date: readonly |
— | — | — | — | action_toggle_complete |
../custom_addons_scola/gcgscola/scola_report_card/models/p5_phase.py:197 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_report_card |
scola.p5.project |
ScolaP5Project | — | — | — | — | — | — | action_generate_default_phases |
../custom_addons_scola/gcgscola/scola_report_card/models/p5_phase.py:262 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_report_card |
scola.p5.documentation, mail.thread |
ScolaP5Documentation | project_id, doc_type, name |
project_id: required, ondelete=cascade, assessment_id: ondelete=cascade, doc_type: required, name: required, attachment_id: ondelete=cascade, file_name: readonly, file_size: readonly, uploaded_by: readonly, upload_date: readonly |
— | _check_content(doc_type, attachment_id, url) |
— | — | action_preview, action_download |
../custom_addons_scola/gcgscola/scola_report_card/models/p5_portfolio.py:16 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_report_card |
scola.p5.doc.tag |
ScolaP5DocTag | name |
name: required |
— | — | — | — | — | ../custom_addons_scola/gcgscola/scola_report_card/models/p5_portfolio.py:255 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_report_card |
scola.p5.assessment |
ScolaP5Assessment | — | — | — | — | — | — | action_view_portfolio |
../custom_addons_scola/gcgscola/scola_report_card/models/p5_portfolio.py:282 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_report_card |
scola.p5.project.template |
ScolaP5ProjectTemplate | name, code, theme, dimension_ids |
name: required, code: required, theme: required, dimension_ids: required, usage_count: readonly |
— | — | — | — | action_create_project |
../custom_addons_scola/gcgscola/scola_report_card/models/p5_project_template.py:11 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_report_card |
scola.p5.phase.template |
ScolaP5PhaseTemplate | project_template_id, name, phase_type |
project_template_id: required, ondelete=cascade, name: required, phase_type: required |
— | — | — | — | — | ../custom_addons_scola/gcgscola/scola_report_card/models/p5_project_template.py:107 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_report_card |
scola.p5.checklist.template |
ScolaP5ChecklistTemplate | phase_template_id, name |
phase_template_id: required, ondelete=cascade, name: required |
— | — | — | — | — | ../custom_addons_scola/gcgscola/scola_report_card/models/p5_project_template.py:141 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_report_card |
scola.p5.project |
ScolaP5Project | — | template_id: readonly |
— | — | — | — | — | ../custom_addons_scola/gcgscola/scola_report_card/models/p5_project_template.py:161 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_report_card |
scola.p5.rubrik |
ScolaP5Rubrik | dimension_id, rating, indicator |
dimension_id: required, ondelete=cascade, rating: required, indicator: required |
— | — | — | unique_dimension_rating: UNIQUE(dimension_id, rating, company_id) -> Each dimension can only have one rubrik per rating level per school! |
— | ../custom_addons_scola/gcgscola/scola_report_card/models/p5_rubrik.py:12 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_report_card |
scola.p5.dimension |
ScolaP5Dimension | — | — | — | — | — | — | action_generate_default_rubrik |
../custom_addons_scola/gcgscola/scola_report_card/models/p5_rubrik.py:127 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_report_card |
scola.p5.assessment.line |
ScolaP5AssessmentLine | — | — | — | — | _onchange_rating_with_rubrik(rating, dimension_id) |
— | — | ../custom_addons_scola/gcgscola/scola_report_card/models/p5_rubrik.py:198 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_report_card |
scola.student.report |
ScolaStudentReportExtracurricular | — | — | extracurricular_assessment_status |
— | — | — | — | ../custom_addons_scola/gcgscola/scola_report_card/models/report_extracurricular.py:5 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_report_card |
scola.student.promotion, mail.thread, mail.activity.mixin |
ScolaStudentPromotion | student_id, academic_year_id, current_batch_id, state, company_id |
student_id: required, academic_year_id: required, current_batch_id: required, state: required, company_id: required |
state |
— | — | unique_student_year: UNIQUE(student_id, academic_year_id) -> A student can only have one promotion record per academic year! |
action_evaluate, action_recommend_homeroom, action_review_board, action_finalize_principal, action_execute_admin, action_recommend, action_decide, action_execute, action_reset_draft, generate_batch_promotions |
../custom_addons_scola/gcgscola/scola_report_card/models/student_promotion.py:12 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_report_card |
scola.student.report, mail.thread, mail.activity.mixin |
ScolaStudentReport | student_id, academic_term_id, company_id, state |
student_id: required, academic_term_id: required, company_id: required, state: required, submitted_by: readonly, submitted_date: readonly, wali_kelas_approved_by: readonly, wali_kelas_approved_date: readonly, kepala_sekolah_approved_by: readonly, kepala_sekolah_approved_date: readonly, published_by: readonly, published_date: readonly, rejected_by: readonly, rejected_date: readonly, qr_verification_code: readonly, qr_generated_date: readonly |
state |
— | — | unique_student_batch_term: UNIQUE(student_id, batch_id, academic_term_id) -> A student can only have one report card per class and semester! |
action_submit, action_approve_wali_kelas, action_approve_kepala_sekolah, action_publish, action_reject, action_draft, action_compute_rankings, generate_batch_reports |
../custom_addons_scola/gcgscola/scola_report_card/models/student_report.py:7 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_report_card |
scola.student.report.line |
ScolaStudentReportLine | report_id, subject_id |
report_id: required, ondelete=cascade, student_id: readonly, batch_id: readonly, academic_term_id: readonly, subject_id: required |
— | — | — | unique_subject_report: UNIQUE(report_id, subject_id) -> Each subject can only appear once per report card! |
action_auto_fill_from_exams, action_open_form, action_refresh_all_scores |
../custom_addons_scola/gcgscola/scola_report_card/models/student_report.py:649 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_report_card |
scola.student.report.component |
ScolaStudentReportComponent | report_line_id, assessment_component_id |
report_line_id: required, ondelete=cascade, assessment_component_id: required |
score_status |
_check_score_range(score) |
_onchange_assessment_component(assessment_component_id) |
unique_component_line: UNIQUE(report_line_id, assessment_component_id) -> Each component can only appear once per subject line! |
action_refresh_score, action_manual_override, action_clear_override, action_bulk_refresh_from_gradebook |
../custom_addons_scola/gcgscola/scola_report_card/models/student_report.py:948 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_report_card |
scola.subject.kktp |
ScolaSubjectKKTP | curriculum_id, subject_id, kktp_value, policy_mode |
curriculum_id: required, ondelete=cascade, subject_id: required, kktp_value: required, policy_mode: required |
— | _check_kktp_value(kktp_value), _check_kktp_interval(policy_mode, interval_min, interval_max) |
— | unique_curriculum_subject: UNIQUE(curriculum_id, subject_id) -> Setiap mata pelajaran hanya boleh memiliki satu KKTP per kurikulum! |
— | ../custom_addons_scola/gcgscola/scola_report_card/models/subject_kktp.py:6 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_rules |
scola.rules, mail.thread, mail.activity.mixin |
ScolaRules | company_id, name, rule_type |
company_id: required, name: required, rule_type: required |
— | — | — | — | action_archive, action_unarchive, action_toggle_archive |
../custom_addons_scola/gcgscola/scola_rules/models/scola_rules.py:10 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_rules |
scola.rules.tag |
ScolaRulesTag | company_id, name |
company_id: required, name: required |
— | — | — | — | — | ../custom_addons_scola/gcgscola/scola_rules/models/scola_rules.py:242 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_rules |
scola.rules.audit.log |
ScolaRulesAuditLog | action, rule_id, user_id, timestamp |
action: required, rule_id: required, user_id: required, timestamp: required |
— | — | — | — | — | ../custom_addons_scola/gcgscola/scola_rules/models/scola_rules_audit_log.py:11 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_smart_attendance |
hr.attendance |
HrAttendance | — | rfid_event_id: ondelete=set null, device_id: ondelete=set null |
— | — | — | — | — | ../custom_addons_scola/gcgscola/scola_smart_attendance/models/hr_attendance.py:5 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_smart_attendance |
op.attendance.line |
OpAttendanceLine | — | rfid_event_id: ondelete=set null |
— | — | — | — | — | ../custom_addons_scola/gcgscola/scola_smart_attendance/models/op_attendance_line.py:5 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_smart_attendance |
rfid.attendance.processor |
RfidAttendanceProcessor | — | — | — | — | — | — | process_event, process_pending_events, mark_absent_students |
../custom_addons_scola/gcgscola/scola_smart_attendance/models/rfid_attendance_processor.py:16 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_smart_attendance |
rfid.attendance.rule |
RfidAttendanceRule | name, rule_type, action |
name: required, rule_type: required, action: required |
— | — | — | — | — | ../custom_addons_scola/gcgscola/scola_smart_attendance/models/rfid_attendance_rule.py:5 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_smart_attendance |
rfid.card, mail.thread, mail.activity.mixin |
RfidCard | card_uid, card_type, status, issued_date |
card_uid: required, card_type: required, student_id: ondelete=restrict, employee_id: ondelete=restrict, status: required, issued_date: required, history_ids: readonly |
status |
_check_owner(student_id, employee_id), _check_card_uid_format(card_uid) |
— | card_uid_unique: UNIQUE(card_uid) -> Card UID must be unique! |
action_deactivate, action_report_lost, action_view_history, action_view_events |
../custom_addons_scola/gcgscola/scola_smart_attendance/models/rfid_card.py:8 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_smart_attendance |
rfid.card.history |
RfidCardHistory | card_id, action, user_id, timestamp |
card_id: required, ondelete=cascade, action: required, user_id: required, timestamp: required |
— | — | — | — | — | ../custom_addons_scola/gcgscola/scola_smart_attendance/models/rfid_card_history.py:6 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_smart_attendance |
rfid.device, mail.thread, mail.activity.mixin |
RfidDevice | name, device_id, device_type, secret_key, status |
name: required, device_id: required, device_type: required, secret_key: required, status: required, last_seen: readonly, event_count: readonly |
status |
— | — | device_id_unique: UNIQUE(device_id) -> Device ID must be unique! |
action_regenerate_secret, action_view_events |
../custom_addons_scola/gcgscola/scola_smart_attendance/models/rfid_device.py:8 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_smart_attendance |
rfid.event |
RfidEvent | event_id, device_id, card_uid, event_type, timestamp |
event_id: required, device_id: required, ondelete=restrict, card_uid: required, card_id: ondelete=set null, event_type: required, timestamp: required, attendance_line_id: ondelete=set null, employee_attendance_id: ondelete=set null |
state |
— | — | event_id_unique: UNIQUE(event_id) -> Event ID must be unique (idempotency)! |
action_retry_process, action_view_attendance |
../custom_addons_scola/gcgscola/scola_smart_attendance/models/rfid_event.py:7 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_smart_attendance |
rfid.security.log |
RfidSecurityLog | event_type, timestamp |
event_type: required, device_id: ondelete=set null, timestamp: required |
— | — | — | — | — | ../custom_addons_scola/gcgscola/scola_smart_attendance/models/rfid_security_log.py:5 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_smart_attendance |
scola.student.face |
ScolaStudentFace | student_id, face_image |
student_id: required, ondelete=cascade, face_image: required, registered_date: readonly, registered_by: readonly |
— | _check_primary_face(is_primary) |
— | — | action_set_primary |
../custom_addons_scola/gcgscola/scola_smart_attendance/models/student_face.py:24 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_student_activity |
scola.achievement, mail.thread, mail.activity.mixin |
ScolaAchievement | name, organizer_name, student_id, level_id, type, category, point, date, status |
name: required, organizer_name: required, student_id: required, ondelete=restrict, level_id: required, ondelete=restrict, company_id: readonly, type: required, category: required, point: required, date: required, status: required, rejected_by: readonly, rejected_date: readonly, approved_by: readonly, approved_date: readonly |
status |
_check_point_in_level_range(point, level_id) |
— | — | action_approve, action_reject |
../custom_addons_scola/gcgscola/scola_student_activity/models/achievement.py:7 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_student_activity |
scola.achievement.level |
ScolaAchievementLevel | name, min_point, max_point, company_id |
name: required, min_point: required, max_point: required, company_id: required |
— | — | — | check_point_range: CHECK(min_point <= max_point) -> Minimum point must be less than or equal to maximum point! |
— | ../custom_addons_scola/gcgscola/scola_student_activity/models/achievement_level.py:6 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_student_activity |
scola.extracurricular, mail.thread, mail.activity.mixin |
ScolaExtracurricular | name, code, company_id, category, activity_kind, coach_id, academic_year_id |
name: required, code: required, company_id: required, category: required, activity_kind: required, coach_id: required, academic_year_id: required |
— | _check_member_limits(max_members, min_members), _check_schedule_time(schedule_time_start, schedule_time_end) |
— | code_unique: UNIQUE(code) -> Kode ekskul harus unik! |
— | ../custom_addons_scola/gcgscola/scola_student_activity/models/extracurricular.py:7 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_student_activity |
scola.extracurricular.member, mail.thread |
ScolaExtracurricularMember | extracurricular_id, student_id |
extracurricular_id: required, ondelete=cascade, company_id: readonly, student_id: required |
status |
— | — | student_extracurricular_unique: UNIQUE(student_id, extracurricular_id) -> Siswa sudah terdaftar di ekskul ini! |
action_approve, action_reject, action_resign |
../custom_addons_scola/gcgscola/scola_student_activity/models/extracurricular.py:140 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_student_activity |
scola.extracurricular.attendance, mail.thread |
ScolaExtracurricularAttendance | extracurricular_id, date |
extracurricular_id: required, ondelete=cascade, company_id: readonly, date: required |
— | — | — | — | action_auto_fill_members |
../custom_addons_scola/gcgscola/scola_student_activity/models/extracurricular.py:288 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_student_activity |
scola.extracurricular.attendance.line |
ScolaExtracurricularAttendanceLine | attendance_id, member_id, status |
attendance_id: required, ondelete=cascade, company_id: readonly, member_id: required, status: required |
status |
— | — | — | — | ../custom_addons_scola/gcgscola/scola_student_activity/models/extracurricular.py:379 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_student_activity |
scola.extracurricular.assessment, mail.thread |
ScolaExtracurricularAssessment | member_id, academic_term_id, rating, description, assessed_by, assessment_date |
member_id: required, ondelete=cascade, extracurricular_id: readonly, student_id: readonly, academic_term_id: required, rating: required, description: required, assessed_by: required, readonly, assessment_date: required, company_id: readonly |
— | _check_term_matches_program_year(member_id, academic_term_id) |
— | member_term_unique: UNIQUE(member_id, academic_term_id) -> A member can only have one extracurricular assessment per academic term. |
— | ../custom_addons_scola/gcgscola/scola_student_activity/models/extracurricular_assessment.py:6 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_student_activity |
scola.student.permit, mail.thread, mail.activity.mixin, scola.approval.mixin |
ScolaStudentPermit | student_id, permit_type, reason, date_start, date_end, requestor_type |
name: readonly, student_id: required, company_id: readonly, permit_type: required, reason: required, date_start: required, date_end: required, requestor_type: required |
status, state |
_check_dates(date_start, date_end), _check_duration(duration_days) |
— | — | action_submit, action_approve_wali, action_approve, action_reject, action_reject_by_wali, action_cancel, action_reset_draft, action_generate_letter |
../custom_addons_scola/gcgscola/scola_student_activity/models/student_permit.py:12 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_student_activity |
scola.student.permit.type |
ScolaStudentPermitType | name, code, company_id |
name: required, code: required, company_id: required |
— | — | — | code_unique: UNIQUE(code) -> Kode jenis izin harus unik! |
— | ../custom_addons_scola/gcgscola/scola_student_activity/models/student_permit.py:729 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_student_activity |
scola.violation.category |
ScolaViolationCategory | name, min_point, max_point, color, company_id |
name: required, min_point: required, max_point: required, color: required, company_id: required |
— | — | — | check_point_range: CHECK(min_point <= max_point) -> Minimum point must be less than or equal to maximum point! |
— | ../custom_addons_scola/gcgscola/scola_student_activity/models/violation_category.py:6 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_student_activity |
scola.violation.log, mail.thread, mail.activity.mixin |
ScolaViolationLog | name, student_id, category_id, date, start_date, end_date, status |
name: required, student_id: required, ondelete=restrict, batch_id: ondelete=set null, company_id: readonly, category_id: required, ondelete=restrict, date: required, start_date: required, end_date: required, status: required, rejected_by: readonly, rejected_date: readonly, approved_by: readonly, approved_date: readonly |
status |
— | — | — | action_approve, action_reject, action_complete |
../custom_addons_scola/gcgscola/scola_student_activity/models/violation_log.py:10 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_student_activity |
scola.violation.type |
ScolaViolationType | name, aspect, point, company_id |
name: required, aspect: required, point: required, company_id: required |
— | — | — | — | — | ../custom_addons_scola/gcgscola/scola_student_activity/models/violation_type.py:6 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_student_activity |
scola.warning.letter, mail.thread, mail.activity.mixin |
ScolaWarningLetter | name, student_id, level, date, status |
name: required, student_id: required, ondelete=restrict, violation_log_id: ondelete=set null, category_id: ondelete=set null, level: required, date: required, status: required |
status |
— | — | — | action_acknowledge, action_resolve |
../custom_addons_scola/gcgscola/scola_student_activity/models/warning_letter.py:10 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
scola_timetable |
op.session |
OpSession | — | company_id: readonly |
— | check_timetable_fields(faculty_id, start_datetime, end_datetime, classroom_id, batch_id, subject_id, combined_session_key) |
_onchange_lesson_hours(lesson_hours_id, start_datetime) |
— | generate_sessions |
../custom_addons_scola/gcgscola/scola_timetable/models/session.py:17 |
Confirmed from code — declaration/method exists; user-facing meaning of workflow-like method may require business confirmation |
Rekomendasi bentuk dokumentasi¶
- Inferred from code — jadikan workflow W03, W04, W05, W07-W16, W19, dan W20 sebagai panduan langkah demi langkah setelah defect/access policy terkait diselesaikan.
- Inferred from code — jadikan master-data W01-W02 sebagai prerequisite cards yang ditautkan dari halaman downstream.
- Requires business confirmation — setiap workflow perlu owner, definition of done, state glossary, exception path, dan matriks approval dari product owner/SME.