Skip to main content

Service hours approvals

Members log their own community service hours; officers review and approve what they submit. This page is the reviewer side of Service hours — read that page first if you want the submitter's view (the log-hours form, the >8-hour flag, auto-credited hours from event check-ins).

What you see

Two tabs sit at the top of the page: Approval Queue (badged with the current pending count) and Chapter Rollup.

Approving a pending submission from the officer review queue.

Service Hours officer view with the Approval Queue tab active. Service Hours officer view with the Approval Queue tab active.

Step-by-step: review a submission

Each entry in the Approval Queue shows the member's name, hours, category (if any), description, external organization (if any), a High Hours badge if it was auto-flagged, and a photo thumbnail if one was attached. Three actions are available on every entry:

  1. Approve — click Approve. The entry's status flips to approved immediately; no confirmation dialog, no notes required.
  2. Reject — click Reject to open the Reject Entry dialog. Type a Reason for rejection in the textarea and click Reject Entry. A reason is required — see Errors and edge cases.
  3. Request Info — click Request Info to open the Request More Information dialog. Type an optional message and click Send Request. This notifies the member but does not change the entry's status — see Errors and edge cases for why this distinction matters.

There is no officer-side edit action — you can only approve, reject, or request info on an entry as submitted.

Bulk approval

When there are pending entries, a bulk-actions bar appears above the queue:

  1. Check individual entries, or check Select all to select every pending entry.
  2. Once at least one entry is selected, an Approve Selected (N) button appears (N = number selected).
  3. Click it to open the Bulk Approve N Entries dialog.
  4. The dialog shows a Skip flagged entries (approve only non-flagged) checkbox, checked by default. If any selected entries are flagged for high hours, a warning banner tells you how many.
  5. Click Approve to confirm.

The "Skip flagged entries" option exists because of the >8-hour auto-flag described on the member page: flagging isn't a rejection, it's a signal that a single-day entry is unusually large and deserves a human look. Leaving the checkbox on lets you clear the queue in bulk while still routing flagged entries back for individual review instead of rubber-stamping them. There is no bulk-reject action.

The Chapter Rollup tab

Switch to Chapter Rollup to see chapter-wide progress instead of the pending queue:

  • Four summary cards: Total Members, On Track, Behind, Exceeding.
  • A Chapter Progress bar showing the percentage of members on track.
  • A per-member progress list (approved hours vs. required hours, with a mini progress bar per row), showing the first 10 members. If the chapter has more than 10 members with entries, a Show all N members button expands the full list (it collapses back to Show less).

Exporting reports

Next to the tabs, a year selector (All years, current year, or either of the prior two years) and an Export button let you download a chapter report.

Clicking Export downloads service-hours-{chapterId}-{year|all}.xlsx, an Excel workbook with two sheets:

  • Summary — Chapter ID, Export Year, Total Entries, Total Approved Hours.
  • Entries — one row per entry (for the selected year, or all years), with these 12 columns: Date, Member, Hours, Category, Description, Status, Approver, Approval Notes, External Org, Event, Photo URL, Flagged.

Entries are ordered by date of service. The Photo URL column links to the uploaded evidence photo where one exists; Flagged is Yes/No for the >8-hour auto-flag.

Errors and edge cases

  • Rejecting without a reason. Clicking Reject Entry with an empty textarea is blocked client-side ("Please provide a reason for rejection.") and, if bypassed, server-side too ("Rejection notes are required.", HTTP 400). You cannot reject an entry with no notes.
  • "Request Info" does not change status. This is easy to assume incorrectly, so it's worth stating plainly: sending a request for more information notifies the member and leaves the entry pending — it is not a third status and does not remove the entry from your Approval Queue. The entry still needs an eventual Approve or Reject.
  • Approving requires no notes. Unlike Reject, Approve has no confirmation dialog or notes field — it applies immediately.
  • Bulk approve only touches pending entries. Selecting an entry that's already been approved or rejected elsewhere (e.g., another officer acted first) has no effect on it during a bulk approve; only entries still in pending status get updated.
  • Empty queue. When there's nothing to review, the Approval Queue shows "Queue is empty — All service hour submissions have been reviewed."

Last verified against v0.65.23 (2026-07-05). Service Hours shipped v0.63.42 (backlog #29).