Lewati ke isi

T6B.2 Admission→Fees Path Inventory

Mode: server · workspace /home/scola/odoo
Classifications: canonical bridge | migrate | fail-close | explicit residual | excluded legacy

ID Trigger Entitlement Actor Tenant Elevation Mutation Financial owner Idempotency Recovery Class
P-001 op.admission.enroll_student_commit_admission_fees_handoff both flags at admission company Enrollment Officer same-company assert none (.sudo() forbidden) create scola.admission.fees.handoff none yet unique source_key + (company,admission,student) savepoint on unique race canonical bridge
P-002 _process_admission_fees_handoff_safe / cron re-evaluated on handoff company system processor SUPERUSER_ID + t6b2_bridge_processor same-company with_user(SUPERUSER_ID) only W10 pending enrollment via create_pending_from_bridge SC-FEES adm-fees:… + W10 idempotency op bridge.pending_enrollment line recovery_required; W03 remains enrolled canonical bridge
P-003 action_w03_enroll early path (student already exists) same as P-001 Enrollment Officer same-company none same handoff SC-FEES pending only same keys same canonical bridge
P-004 Register fee_template_ids write both flags Admissions Manager template.company == register.company none M2M only none n/a UserError canonical bridge
P-005 /api/v1/admissions/registers/update fee_template_ids write ACL + P-004 Admissions Manager controller FK + bridge write _elevated_env browse for FK check only M2M none period mutation store ValidationError lintas tenant canonical bridge
P-006 W10 /api/v1/fees/w10/enrollments/transition pending→billed scola_fees Billing Manager ≠ enrollment creator company scope none scola.w10.bill SC-FEES W10 enrollment.bill W10 recovery canonical W10 (not bridge-owned)
P-007 W10 payment/receipt scola_fees cashier / treasurer / payer W10 scope none payment/receipt SC-FEES W10 keys W10 canonical W10
P-008 _create_fee_enrollment alias both flags Enrollment Officer same processor delegates to P-001/P-002 SC-FEES pending same same migrate (compat alias, no paid bill)
P-009 _create_registration_invoice / _create_formulir_invoice n/a any n/a none returns None none n/a n/a fail-close
P-010 action_create_invoice / action_create_formulir_invoice n/a any n/a none UserError accounting_excluded none n/a n/a fail-close
P-011 /api/SPMB/payment/* fees OFF → feature_disabled; ON → accounting_excluded any n/a none none none n/a n/a fail-close
P-012 /api/SPMB/my/admission/*invoice* / payment proof/status same as P-011 applicant n/a none none none n/a n/a fail-close
P-013 /api/SPMB/account/check-discount / discounts/apply listed alternate paths any n/a none denied by leftover W03 containment none n/a n/a fail-close
P-014 /api/v1/finance/accounting/* W10 XMD finance actor n/a none accounting_excluded SC-FIN excluded n/a n/a excluded legacy
P-015 /api/v1/payment/create, /payment/callback/* W10 XMD any n/a none gateway_excluded T6B.3 n/a n/a excluded legacy
P-016 /web/dataset write on W10 models session any n/a none denied none n/a n/a fail-close
P-017 Native OpenEduCat / Odoo account.move from admission n/a any n/a none not called from T6B.2 bridge none n/a n/a fail-close
P-018 Website /my/child/.../upload T6B.1 residual parent n/a n/a not a T6B.2 lifecycle n/a n/a n/a explicit residual (T6B-R001 native path)
P-019 Admission detail fees array copying W10 amounts n/a staff n/a previously elevated search removed; handoff projection only W10 via billing_path n/a n/a migrate
P-020 Optional _run_optional_enrollment_step(..., 'fee_enrollment') swallow n/a n/a n/a n/a removed n/a n/a n/a migrate
P-021 Global FeeTemplate.search batch/course fallback n/a n/a n/a n/a removed n/a n/a n/a migrate
P-022 Scholarship percentage / affirmation copy into enrollment amount n/a n/a n/a n/a removed; informational field only W10 rule amount n/a n/a migrate / downstream decision
P-023 W03 enrolled → withdrawn W03 contract: enrolled is terminal Enrollment Officer n/a none transition denied W10 unchanged n/a operator cancel_if_unbilled if unbilled explicit residual — no W03 reversal route
P-024 Register formulir_fee / registration_fee UI W03 register config + T6C override Admissions Manager company none stored on register; if formulir_fee > 0 submit creates W10 spmb_formulir and verify gate applies SC-FEES W10 (formulir) period mutation store n/a canonical bridge (T6C) — supersedes prior “informational only” note
P-025 Odoo backend Fee Templates page when entitlements off module installed backend user write guarded none write UserError none n/a n/a explicit residual S2 — XML page visible if module installed
P-026 Direct create_pending_from_bridge without context context flag any company none capability_denied none n/a n/a fail-close
P-027 Enrollment Officer /api/v1/fees/w10/* mutate fees entitlement + W10 capability head_admin enroller company none denied (no billing_manage) none n/a n/a fail-close

No path in this inventory is permitted to create an approved/paid bill during W03 enrollment.