External Vendors & Warranty
External Vendors & Warranty
When a repair requires specialist skills or manufacturer support, NexusRMS lets you send equipment to an external vendor and track the entire process. The warranty system records coverage details, manages claim numbers, and ensures warranty repairs are not billed to clients by default.
Sending a repair to an external vendor
To assign a repair to a vendor, open the repair and use the Send to Vendor dialog. The dialog contains the following fields:
- Vendor — a required selection from your Suppliers list (links to external_vendor_id on the repair)
- RMA Number — optional Return Merchandise Authorisation number (placeholder format: RMA-2025-12345), stored in the external_tracking_number field
- Estimated External Cost — the expected charge from the vendor, stored in the external_cost field
When submitted, RepairVendorController::sendToVendor updates the repair with the vendor details, sets the status to awaiting_parts, and records the sent_to_vendor_at timestamp. The repair workflow then waits for the vendor to return the equipment before progressing.
Assignment type
The repair form includes a radio selection for assignment type: Internal Technician or External Vendor. Selecting Internal Technician uses the assigned_to field to link a crew member. Selecting External Vendor reveals the vendor selection and RMA fields described above. Only one assignment type can be active at a time.
Vendor contact card
When an external vendor is selected, the repair detail page displays a vendor contact card showing the supplier's phone number, email address, and postal address. This gives technicians and managers quick access to vendor contact details without leaving the repair screen.
RMA document generation
NexusRMS can generate a professional PDF document to accompany equipment sent for external repair. Access it via GET /repairs/{id}/external-repair-pdf. The PDF is rendered using Liquid templating from the external_repair_form template and includes:
- Repair number and RMA tracking number
- Equipment details (name, serial number, category)
- Problem description and diagnosis notes
- Vendor contact information
- Reporting user details
- Your company (tenant) information
The template can be customised per tenant. The system checks for a tenant-specific template first, falling back to the system default if none exists.
Vendor-related fields on the repair
| Field | Description |
|---|---|
| external_vendor_id | UUID linking to the Supplier record |
| external_tracking_number | RMA or shipment tracking reference |
| external_cost | Vendor charges for the repair work |
| sent_to_vendor_at | Timestamp when the equipment was dispatched |
| external_sla_deadline | Vendor's service level agreement deadline |
External cost is tracked separately from labour and parts costs in the repair's total cost breakdown: total_cost = labor_cost + parts_cost + external_cost.
Warranty tracking
The Repair model includes dedicated warranty fields:
| Field | Description |
|---|---|
| is_under_warranty | Boolean flag indicating the repair is covered by warranty |
| warranty_claim_number | Reference number for the warranty claim |
| warranty_approved | Boolean indicating whether the warranty claim has been approved |
| warranty_coverage_percentage | Integer from 0 to 100 representing how much of the cost is covered (adjustable in 5% increments via a slider) |
On the repair detail page, a warranty card displays an "Under Warranty" success chip when is_under_warranty is true, along with the claim number and approval status.
Warranty repair type
The RepairType::WARRANTY enum value identifies repairs performed under warranty. By default, warranty repairs have billable_to_client set to false via the isBillableByDefault() method. The six repair types are:
- corrective — Corrective Repair (billable if caused by client)
- preventive — Preventive Maintenance (not billable)
- inspection — Inspection (not billable)
- upgrade — Upgrade (not billable)
- recall — Manufacturer Recall (not billable)
- warranty — Warranty Repair (not billable)
WarrantyService
The WarrantyService provides three key capabilities:
- Coverage validation — checkWarrantyCoverage() checks whether an equipment item has an active warranty for a given date, returning the coverage percentage and warranty details (type, provider, claim limit, deductible).
- Expiry notifications — sendExpiryNotifications() identifies warranties expiring within a configurable number of days (default 60) and sends alerts so you can plan renewals.
- Cost savings calculation — calculateWarrantySavings() totals the cost savings from approved warranty repairs over a date range, showing total savings, repair count, and average savings per repair.
Warranty parts
When adding parts to a warranty repair, set the warranty_item flag on each RepairPart that is covered. Warranty parts can be identified and excluded from internal cost reports, giving an accurate picture of out-of-pocket repair expenses versus manufacturer-covered costs.
API routes
| Method | Endpoint | Action |
|---|---|---|
| POST | /repairs/{id}/send-to-vendor | Assign to external vendor (requires vendor_id) |
| GET | /repairs/{id}/external-repair-pdf | Download the RMA PDF document |
Tips and best practices
- Record RMA numbers immediately — enter the RMA reference as soon as you receive it from the vendor so all team members can track the repair's external status.
- Set SLA deadlines — populate the external_sla_deadline field to receive alerts when vendor repairs are approaching their promised completion date.
- Check warranty coverage before starting work — use the WarrantyService to verify coverage, which may save your company from absorbing repair costs unnecessarily.
- Use the coverage slider accurately — if a warranty covers only a portion of repair costs (e.g. parts but not labour), set the warranty_coverage_percentage to reflect the actual split.
- Review warranty savings quarterly — use calculateWarrantySavings() to demonstrate the return on investment from maintaining active warranty coverage on your equipment fleet.
Next steps
This concludes the External Vendors & Warranty article. Review the earlier articles in this series for the complete Repairs & Maintenance knowledge base, or explore the Analytics module to generate reports on repair trends and costs across your fleet.
Was this article helpful?