Draft Request Created
A requester creates a draft with payment header, detail lines, and attachment uploads stored in object storage.
A payment request workspace designed around controlled approvals, finance release decisions, ERP job orchestration, and operational auditability.
A requester creates a draft with payment header, detail lines, and attachment uploads stored in object storage.
The API validates required data, resolves approvers, snapshots the workflow instance, and moves the request into pending approval.
Department mapping, position rules, and thresholds decide whether the request stops at local approvals or escalates to CFO and CEO.
The request moves through Line Manager, Reviewer, and HOD with delegation support and need-to-know visibility at record level.
Rejected, returned, resubmitted, or cancelled paths stop the finance handoff. Only approved requests move into finance control.
Finance Operations decides whether the request should create an ERP job immediately or remain on hold for further checking.
The worker pushes ERP jobs asynchronously, retries failures under policy, and runs reconcile logic for anomalies.
Audit history, request timeline, ERP job updates, and outbound webhooks expose the full lifecycle to operations and admin roles.
DNTT is a payment request workspace built as an operational business application, not just a form demo. The repository combines requester flow, approval routing, finance release control, ERP job handling, and audit visibility in one layered workspace.
The project uses a layered stack with React web, Node.js API, PostgreSQL, Redis, MinIO, and a dedicated ERP worker. The application supports draft creation, submission, approval actions, attachment handling, department-based approval setup, request audit history, finance release control, outbound webhooks, and background ERP processing.
A strong part of the design is the separation between business approval and ERP synchronization. Finance Operations can keep a request on hold, approve only, reject, or explicitly release it to ERP. Once released, the worker processes the ERP job asynchronously, supports manual retry, and runs reconcile logic for anomalies. That keeps approval transactions clean and avoids tying ERP instability directly to user actions.
DNTT shows ownership across workflow control, approval design, finance operations, ERP integration boundaries, and environment orchestration. It reads less like a UI prototype and more like a system that was shaped around actual business operating pressure.