Business Licensing (eBOSS)
Reference
Public
Research Evidence
The live-file evidence behind the ERPat Business Licensing (eBOSS) guide — the exact module.json, config, controller, job, library and workflow files that were read to write this documentation, and the specific fact each source establishes, so every claim in the guide is traceable to the real code.
Guide version: r1
Module version: 1.0.0 Updated: 2026-07-22 Estimated time: 4 min
Behind the Guide
Research Evidence
This guide is written from the module's actual source, not from a specification or
assumptions. This page lists the exact files that were read and what each one establishes,
so any statement in the guide can be traced back to the code. If the module changes, re-read
these files and update the guide to match.
????
Documentation-only. These docs are static HTML under
modules/CityBPLO/docs/. No route serves them and no PHP consumes them — they
exist for people, not the runtime. The evidence below is a snapshot for module version
1.0.0.
Manifest & module metadata
| File read | What it establishes |
module.json | Slug bplo, display name "Business Licensing (eBOSS)", version 1.0.0, Government category, available on main + tenant DBs, the feature flags (controllers/models/views/jobs/seeders/APIs/widgets/public pages), the full permission list, and the bplo_* table inventory (migrations_bplo). |
README.md, CHANGELOG.md | Module-level metadata rendered in Manage Modules; the 1.0.0 initial-release summary. |
config/module_config.php | Confirms module_key = bplo (equals the manifest slug), icon and Government category, route prefix bplo. |
Configuration sidecars
| File read | What it establishes |
config/menu.php, config/default_menu.php | The single Business Licensing (eBOSS) sidebar group and its 12 child workspaces (Command Center, Applications, Registry, Owners & Representatives, Rules, Clearances, Assessments, Issuance, Compliance, Reports, Charter, Settings), each gated by its permission. |
config/permissions.php | The complete eBOSS RBAC matrix and its categories — including the four-eyes keys (bplo_rules_activate, bplo_assessments_approve, bplo_payments_reconcile) and bplo_sensitive_view. |
config/routes.php | Every bplo/* route and controller target, incl. the public bplo/verify QR rewrite and the bplo/charter public page. |
config/system_logs.php | The full audit-event catalog (action:component keys) across Registry, Applications, Governance, Clearances, Inspections, Assessment, Payments, Issuance, Lifecycle, Compliance, Portal and Administration, with severities. |
config/widgets.php | The three staff dashboard widgets and their gating (pending applications, expiring permits, SLA breaches). |
config/public_pages.php | The public Citizen's Charter (with CMS sync) and Permit Verification destinations. |
config/api_routes.php, config/euapi_routes.php | The client API (/api/v1/bplo/*, scopes bplo:read/bplo:write) and the read-only self-only end-user API (/v1/api/me/bplo/{assignments,inspections}). |
Controllers
| File read | What it establishes |
controllers/Bplo_issuance.php | The gate → generate → sign → issue → release pipeline; race-safe permit numbering; void-on-failed-render; reprint re-serves the stored PDF; suspend/reinstate/revoke/supersede; the authorized-e-sign v1 record with the PNPKI seam left open. |
controllers/Bplo_assessments.php | Assessment DRAFT → FOR_APPROVAL → APPROVED (immutable); supersede-not-edit; approver ≠ preparer + dual-approval threshold; fee-set four-eyes activation (author ≠ activator) with single-active-per-code; the pure Test Calc. |
controllers/Bplo_payments.php | Payment reference lifecycle; reconcile posts a summarized GL entry to Finance (cash debit + revenue credits per accounting code), idempotent and deferred if Finance is off; reverse mirrors it and reopens the bill; settlement advances the application to PAID. |
controllers/Bplo_verify.php | Sessionless public verification via the permit QR's company_key; derived, revocation-aware status; PII-free result; deliberately not gated on the module toggle. |
controllers/Bplo_settings.php | The exact settings keys (LGU profile, permit year, app-reference format, SLA targets, deficiency pause) and the read-only number-series viewer. |
controllers/Bplo_applications.php | The application workspace tabs (overview, requirements, deficiencies, assignments, holds, timeline, lifecycle) and the renewal/amendment/retirement lifecycle actions. |
controllers/Bplo_portal.php, controllers/Bplo_claims.php | The customer owner-portal scope choke-point (404-not-403, masked fields) and the staff claim-approval flow that binds a party to a business. |
Jobs, libraries & workflow
| File read | What it establishes |
jobs/SlaSweepJob.php | Slug bplo_sla_sweep, daily 01:15; flags breached SLA clocks and emails compliance officers; per-tenant, idempotent, bounded. |
jobs/RenewalReminderJob.php | Slug bplo_renewal_reminder, daily 01:30; digests permits expiring within bplo_renewal_reminder_days (default 30); read-only. |
jobs/PermitExpirySweepJob.php | Slug bplo_permit_expiry_sweep, daily 01:45; digests lapsed permits; read-only — never mutates permit status (expiry is derived). |
jobs/ComplianceObligationSweepJob.php | Slug bplo_compliance_obligation_sweep, daily 02:00; generates annual-renewal obligations, flags overdue, spawns recurrences — all idempotent. |
libraries/Bplo_issuance_gate.php | The exact issuance-gate criteria: blocking requirements, unresolved/external-unverified clearances, non-compliant inspections, approved assessment, settled bill, active hold, valid signatory. |
src/Workflow/StateMaps.php | The authoritative transition whitelists for application (New/Renewal/Amendment + Retirement), clearance, inspection and permit — the source for the state lifecycles. |
Full module inventory (observed)
For completeness, the module directory also contains — confirming the manifest's feature flags:
Plus the two API controllers (Bplo_api, Bplo_euapi), the module
helpers (bplo_helper, bplo_notify_helper,
bplo_widget_helper), the pure fee/gate/state src/ classes, the demo
seeder, and this docs/ guide. Everything the feature needs lives under
modules/CityBPLO/ and loads through ERPat's HMVC compatibility layer.
????
Keeping this honest. When you change a controller, job, permission, setting or state
map, update the matching guide page and note the change in the module's
CHANGELOG.md. The guide's value is that every claim maps to a real file listed
above.