We approached this as a phased build centered on one Suitelet application delivering the full set of reports the finance team needed.
We started by working with the finance team to define the report views required: a project-level detail view combining actuals, open PO exposure, and budget; a single-project account-level breakdown; a month-to-month trend view across the year; and a summary view broken out by current period, year-to-date, and project-to-date. We confirmed what “complete” looked like for each view before building anything.
From there, we resolved how project assignment was tracked across the client’s data. Project data lived across a custom body field, a transaction field, and an accounting line field depending on transaction type, so we built the reporting logic to reconcile all three, ensuring no transactions were missed regardless of how they were tagged.
We then built a single Suitelet interface to host all four report views. Most views could run across one or several selected projects at once, while the account-level breakdown was scoped to a single project. Queries pulled GL actuals, open PO balances, and budget data, rolling figures up differently depending on the view, whether that meant a full account-level breakdown, a higher-level account grouping, a monthly trend, or a period-based summary.
Finally, we validated the reports against the finance team’s own known figures to confirm completeness, then traced and resolved any gaps. In one case, this surfaced a project-tracking field the team hadn’t previously accounted for, which we then folded into the reconciliation logic, before rolling the finished tool out to the finance team for ongoing use.