Lewati ke isi

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.