Standup 8 Oct 2026 · SP evidence 9 Oct

Applicant merge · QR generation · Fee/payment from CMS SPs

Read.ai action: analyze the merged Applicant campus/letters work, document QR-code generation (automated + manual ops), and document fee-payment mechanisms from campus stored procedures. Canonical Markdown: applicant-qr-fee-mechanisms.md.

1. Merged Applicant portal

Faid 9e007f2 (campus + Eligibility→Offer) on main; production SPA 532d6f0 (8 Oct evening redeploy). Portal API Demo includes confirmApplicationEligibility and auto Offer release until Staff owns release.

What shipped vs still open

ShippedStill open
Campus selector · Alumni Previous Student ID · Bursary/QA desks · Eligibility→Confirm→Offer→Accept · Progress rows · handoff v2 Staff-owned Offer release · durable letter URLs · LGCSE/LSL · real Lesotho catalogue · Live CMS writes

Flow compare: CMS vs Applicant.

2. QR-code generation

Automated (in CMS code)

sequenceDiagram
  actor Staff as Registry
  participant REG as qrcode_gen.php
  participant QR as qr.limkokwing.net
  participant VER as verification.limkokwing.net
  participant CMS as campus2_cambodia

  Staff->>REG: StdProgramID · StudentID · ProgramCode
  REG->>QR: POST create_qrcode_api
  Note over REG,QR: short_code KHM-PNH_… · verify URL
  QR-->>REG: PNG (encodes /qrcode/slug)
  actor Public as Scanner
  Public->>QR: GET /qrcode/slug
  QR-->>Public: 302 → /cambodia/token
  Public->>VER: GET token
  VER->>CMS: CALL GetStudentCertInfo
  CMS-->>VER: cert metadata + blob
        

Full pack inventory: certificate-qr.html.

Manual ops (standup — not in code)

sequenceDiagram
  participant KH as Cambodia campus
  participant CY as Cyberjaya ops
  Note over KH,CY: Dexter — manual exchange still happens
  KH->>CY: Certificates / QR PNGs / student data pack
  CY->>CY: Print / stamp / process
  CY-->>KH: Return physical certificates
  Note over KH: Scan path still Verification → Cambodia SP
        

Do not invent a Portal API courier method. Document as ops; M5 owns automated create/scan only.

3. Three fee / payment planes

PlaneWhenCMSRaisd today
A. Application fee Admissions b_zapplicationfee* · proof via b_paymentverification Applicant Fee step + Bursary Demo
B. Online enrolment proof After offer / term reg sp_onlinenrollment_* + sp_payment_verification_insert Student CAP-46 Demo
C. Semester / module calc Enrolled billing b_Update_Student · b_Update_billing (NMDS) Student Finance Demo

4. Online enrolment payment SPs — currency matrix

Shared insert shape across Lesotho / Eswatini / Cambodia. Currency and institution are hard-coded in the SP — Raisd campus finance profile must mirror this.

CampusInstitutionIDPaymentCurrencyRequestSource
Lesotho1M (Loti)OnlineEnrollment
Eswatini1ROnlineEnrollment
Cambodia30MYROnlineEnrollment
flowchart LR
  A[Student pays / uploads proof] --> B[sp_onlinenrollment_insert]
  B --> C[online_enrollment row]
  C --> D[sp_payment_verification_insert]
  D --> E[b_paymentverification]
  E --> F[Bursary BurStatus / FacultyStatus]
    

Application-fee Live must not assume MYR. Lesotho application screenshots show M VERIFIED amounts (e.g. M300).

5. Semester fee cases — b_Update_Student (Lesotho)

Distilled from the Lesotho procedure body for Faid’s configurable fee work. Cambodia shares the skeleton with different hardcodes (e.g. repeat 150/250).

IDCaseKey
C1Zero fee when AD/module status non-chargeable*chargable='N'
C2Historical Exempted before 2011-07termcode
C3Semester fee from f_semester.semesterfeeUseModularFee='N'
C4Modular = sum stdmodfeeUseModularFee='Y'
C5Repeat/ADD → semmodaddfees (Lesotho hardcodes e.g. 600 / 375)repeat%
C6Resource fees with many exemptionsstdsemresfees
C7Deferred zeroes / def feesDeferred
C8stdsemtotfees ≈ add + res + reptotals
C9Invoice lines → b_invoicedetailledger
C10PayStatus Partial/Full vs outstandingr_student

NMDS assist billing (separate)

b_Update_billing stamps Lesotho assist bill nos LSO/{YYMM}/FAID|FDSI|FBS|FCM/… for AssistProviderCode='nmds'. Not Applicant application fee. Cambodia dump has no b_Update_billing.

6. Follow-ups (9 Oct)

  1. Done (seed) — Campus finance profile + C1–C10: campus-finance-profile.html · campus-finance-profiles.yaml (Faid Accept pending).
  2. Done (path) — Online-enrolment proof → CAP-53 W1: cap53-online-enrolment.html (implement next).
  3. Open — Applicant: Staff-owned Offer release · LGCSE/LSL · real catalogue.
  4. Open — Vara: Sierra Leone b_calcmodule / cross-campus SP case matrix.

Markdown detail: applicant-qr-fee-mechanisms.md · QR: certificate-qr.html · CMS vs Applicant: cms-vs-applicant.html.