Functional Requirements Document
This FRD covers the end-to-end workflow for raising indents, running auctions, awarding suppliers, and allocating vehicles for both Client and Contract indent types. It is the functional contract for the Vehicle Indent & Auction module.
1. Actors & Roles
- Branch Ops — raises indents (Client / Contract), monitors status, allocates vehicles.
- Auction Manager — creates the auction window, monitors bids, awards the winning supplier.
- Registered Supplier — receives notification, places bids during the open window.
- Walk-in Supplier — invited explicitly to bid on specific indents.
- Control Tower — observes SLA, TAT and exceptions across all indents.
2. Indent Creation
On the listing page, Create Indent opens a single-select chooser between Client and Contract. The form below adapts to the selected kind.
2.1 Client Indent
| Field | Behaviour / Rule | Source |
|---|---|---|
| Client Code * | Select from master. Triggers auto-fetch of name and addresses. | Client master |
| Client Name | Read-only; auto-fetched. | Client master |
| Address * | Required dropdown when client has multiple addresses. | Client master |
| Pincode / City / State | Auto-fetched from the chosen address. | Client master |
| Movement Type | FM / MM / LM dropdown per requirement row. | User input |
| Branch Code | Selected branch raising the requirement. | Branch master |
| From / To | Branch or Customer Location. If Branch → branch code required; if Customer → address dropdown required. | User input |
| Requirement Date | Mandatory per row. | User input |
| Vehicle Size / Count / Body | 32ft or 40ft, count ≥ 1, Body: Open / Closed / Refrigerated / Flatbed. | User input |
| Multiple rows | Add Row supported; tabular summary shown below the form. | UI |
2.2 Contract Indent
| Field | Behaviour / Rule | Source |
|---|---|---|
| Movement Type | Local / Linehaul. | User input |
| Vehicle Type | 32 Feet / 40 Feet. | User input |
| Body Type | Open / Closed / Refrigerated / Flatbed. | User input |
| Capacity | Auto-fetched from vehicle type (32ft → 16T, 40ft → 26T). | Vehicle master |
| Requirement Date & Time | Mandatory. | User input |
| Requestor Branch | Mandatory; identifies the originating branch. | Branch master |
| Origin / Via / Destination | Each leg supports Branch or Customer Location with the same address rules as Client. Multiple Via legs are allowed. | User input |
| Total Distance / TAT | Captured leg-wise; bidding for Linehaul is on a Per KM basis. | Derived / input |
3. Auction Lifecycle
- Status flow: Pending → Auction Created → Auction InProgress → Awarded → Vehicle Allocated → Trip Created → Trip in transit → Trip Closed → Closed.
- Auction window is defined by Start and End datetime. End must be strictly after Start.
- Registered suppliers receive an automatic invite; walk-in suppliers can be added explicitly to a specific auction.
- For Contract (Linehaul) indents, the bid amount is captured as Per KM and rolled up to a total value using the route distance.
- Awarded supplier is highlighted in the bid table and the Route / Lane column shows the awarded route when an indent has more than one vehicle.
4. Allocation & Trip
- After award, the supplier is required to allocate vehicle number, driver name and contact within the SLA window.
- Replacement indents must carry the existing vehicle number being replaced.
- Once allocation is confirmed, the indent transitions to Trip Created and is handed off to the Trip module.
5. Route Visibility Rules
- When totalVehicleCount > 1, the Bidding Details and Awarded panels render a Route / Lane column so bids are unambiguously matched to a vehicle line.
- Route strings are cleaned of the trailing '(Origin, Via and Destination)' annotation before display.
- Local movements show 'Branch Local Operation' instead of an inter-city route.
6. Notifications
- Indent creation, auction start, new bid, award and allocation events generate in-app notifications via the bell.
- Notifications are grouped by Vehicle Indent and Supplier Relationship categories.
- Clicking a notification deep-links to the relevant indent or auction view.
7. Validation Rules
- Create Indent cannot be submitted unless required fields are filled and at least one vehicle row exists.
- Auction End must be after Auction Start.
- Bid amount must be a positive number; Per-KM rate must be > 0 for Linehaul Contract auctions.
- Awarded action is enabled only when the auction is in InProgress or Closed state.
8. Data Model (logical)
- Indent: id, requestType (Client | Contract), indentType (New | Replacement), status, vehicles[], origin/via/destination, branch, audit.
- VehicleLine: count, vehicleType, body, routeType, route, distanceKm, tatHours, validFrom/Till, existingVehicleNo?
- Bid: supplier, vehicleNo?, amount (or perKm), bidAt, status (Active | Awarded | Rejected), isRegistered.
9. Status Transitions
Pending
└─► Auction Created ──► Auction InProgress ──► Awarded
└─► Vehicle Allocated
└─► Trip Created ──► Trip in transit ──► Trip Closed ──► Closed10. Exceptions
- No bids received before auction end → auction marked Closed (No Award); ops can re-publish.
- Awarded supplier fails to allocate within SLA → indent reverts to Awarded with a flag, escalation notification fires.
- Trip cancelled mid-transit → status moves to Closed with reason captured in remarks.
11. Acceptance Criteria
- All field validations behave as defined in §2 and §7.
- Listing, View and Auction pages reflect only Client / Contract request types (Adhov is retired).
- FRD and PRD links are reachable from the Vehicle Indent & Auction nav group.
12. Out of Scope
- Driver onboarding and document expiry — handled in Supplier Relationship.
- Invoice generation and payouts — handled in Finance module.