Engineering perspectives
Case study: Mundimat: workforce hours, construction sites and Primavera ERP integration
Delivery case study based on the production codebase: web operations for hour capture, remuneration, envelopes and ERP-backed employee master data.
31 October 2026 · 4 min read
Mundimat required a dependable internal platform to track employee hours on construction sites, align them with Primavera ERP master data, and produce payroll-oriented reports and PDFs for finance teams. Damascode designed and implemented this system as a custom Laravel web application (historically maintained in the agency repository serralto). This case study describes the operational problem, integration pattern, functional modules evidenced in the codebase, and engineering lessons useful for similar ERP-adjacent programmes. It supports evaluation of Damascode for software development outsourcing and ERP integration work.
Table of contents
- Client context
- Problem statement
- Solution overview
- Functional modules
- Primavera integration pattern
- Reporting and PDF outputs
- Security and access control
- Results
- Limits and confidentiality
- FAQ
Client context
Mundimat operates in construction and related services where labour hours per site drive cost allocation, client billing and internal remuneration. Primavera holds authoritative employee identifiers and movement data; field and back-office teams need a web layer that is faster to use than spreadsheets and strict enough for audit.
Damascode is listed as an authorised engineering reference for Mundimat on damascode.pt.
Problem statement
Typical pain points without an integrated platform:
- Hours captured on paper or disconnected tools, reconciled late with ERP.
- Mismatch between Primavera employee codes and operational names on sites.
- Difficulty producing monthly hour sheets and envelope-style payment summaries per employee.
- Multiple legal entities (for example Mundimat and Mundimat/Espiral) requiring company-scoped access.
The goal was a single internal system for administrators and authorised staff: not a public consumer app.
Solution overview
Damascode delivered a monolithic Laravel 8 application with server-rendered workflows, role-based modules, and HTTP integration to Primavera-backed APIs via Guzzle. Key technical packages include DomPDF for document generation and standard Laravel authentication/UI scaffolding.
Architectural choice: optimise for clarity and maintainability for a bounded user population rather than microservices complexity.
[ Browser UI (Blade) ]
|
v
[ Laravel controllers / models ]
|
+--> [ MySQL operational DB ]
|
+--> [ Primavera API (employee + movements) ]
|
v
[ PDF / export reports ]
Functional modules
Evidence from routes and controllers includes:
| Module | Capability |
|---|---|
| Construction sites (obras) | Create, activate/deactivate, assign clients, edit metadata |
| Employees | CRUD, remuneration rates, active/inactive status, Primavera code as primary key |
| Hour allocation | Daily/monthly hour entry per employee and site, aggregation by month |
| Clients & services | Service types, departments, client companies |
| User management | Levels, passwords, company assignment (Mundimat vs Mundimat/Espiral) |
| Reports | Monthly employee PDFs, allocation exports, hour-value reports, mass envelope generation |
| Super-admin | Company picker for multi-tenant administration |
Employee screens expose Codigo Primavera prominently because ERP alignment is the spine of the data model.
Primavera integration pattern
Integration is read/sync oriented from the application’s perspective:
- Authenticate to the remote API layer configured for the Mundimat tenant.
- Resolve employees by Primavera number when pulling movements for a date interval.
- Surface clear errors when an employee exists in ERP but is not yet registered locally: preventing silent mismatches.
- Keep
primavera_idon local employee records for joins across hours, remuneration and reports.
This pattern is common in Portuguese mid-market ERP landscapes: the custom app is the operational system of engagement; Primavera remains the system of record for HR/finance identifiers and movements.
Implementation detail: controllers call REST-style endpoints (for example employee lookup by number and movement intervals scoped by client identifier). Credentials and endpoints belong to secured configuration: not reproduced in this article.
Reporting and PDF outputs
Finance and site managers require immutable-looking monthly artifacts:
- Per-employee monthly hour sheets with branding and totals.
- Tables exportable for Excel-oriented workflows (DataTables-style UX in views).
- Envelope/mass payment views listing Primavera IDs alongside computed amounts.
DomPDF-backed templates embed Mundimat visual identity. Filenames encode month, year, employee name and Primavera code for archival search.
Security and access control
- Laravel
Authroutes and session-backed login. - Role/level concepts in user management flows.
- Company scoping so users only operate within assigned legal entity.
- Server-side validation on hour insertion and employee updates.
For buyers with NIS2 or internal IS policies, this is a traditional perimeter-trusted internal app model: appropriate for workforce data with VPN or private network deployment expectations.
Results
Public case studies rarely publish payroll statistics. Qualitative outcomes consistent with this architecture:
- Single place to register sites, employees and hours instead of fragmented files.
- ERP-aligned identifiers reducing reconciliation meetings between HR and site supervisors.
- Faster monthly close for hour summaries via PDF and tabular exports.
- Extensible codebase where new report types reuse the same allocation queries.
Damascode continues to treat Mundimat as a reference for PHP/Laravel integration delivery in Portugal.
Limits and confidentiality
- This article describes engineering shape inferred from the repository; it is not an audited financial report.
- API credentials, hostnames and exact SLA figures are client confidential.
- Mundimat’s retail-facing digital channels, if any, are separate engagements from this workforce platform.
FAQ
Is this a Primavera module?
No. It is a custom Laravel application that integrates with Primavera through APIs. ERP licensing and core HR processes remain in Primavera.
Could the same pattern work with SAP or other ERPs?
The integration pattern (local operational DB + ERP identifiers + sync jobs) transfers; endpoint and master-data mapping require discovery.
Why Laravel instead of low-code?
Hour allocation rules, PDF layouts and company scoping were specific to Mundimat. Laravel keeps logic testable and deployable on standard PHP hosting.
How do I request a similar project?
Use contact with ERP name, user count, key workflows and compliance constraints.
Related reading
Integrating ERP with a custom operations layer?
Tell us about Primavera, SAP or internal APIs and the workflows your teams still run in spreadsheets. We scope integration-first delivery from Portugal.
