Skip to content

feat: Add RepairOrder feature (#12064)#12396

Open
stevenmini2019 wants to merge 1 commit into
inventree:masterfrom
stevenmini2019:feat/repair-orders-12064
Open

feat: Add RepairOrder feature (#12064)#12396
stevenmini2019 wants to merge 1 commit into
inventree:masterfrom
stevenmini2019:feat/repair-orders-12064

Conversation

@stevenmini2019

Copy link
Copy Markdown

Summary

Implements the Repair Order feature requested in #12064. Adds a new RepairOrder type that tracks repair work performed for a customer against a stock item, part, or serial-numbered unit.

Backend only

This PR implements the backend MVP. Frontend UI and stock consumption workflow are deferred to follow-up PRs to keep this change reviewable.

Changes

  • Models: Added RepairOrder and RepairOrderLine to the order app. RepairOrder extends the Order base class (uses statuses, references, barcode, notes, metadata, reports, tags). RepairOrderLine extends OrderLineItem for parts/stock consumed during the repair.
  • Status codes: RepairOrderStatus with PENDING, IN_PROGRESS, ON_HOLD, COMPLETE, CANCELLED, plus RepairOrderStatusGroups.
  • Events: RepairOrderEvents (repairorder.issued, repairorder.completed, repairorder.cancelled, repairorder.hold).
  • Validations: validate_repair_order_reference, validate_repair_order_reference_pattern, generate_next_repair_order_reference.
  • API: List/Detail endpoints for RepairOrder (/api/order/repair/) and RepairOrderLine (/api/order/repair-line/); plus status transition endpoints (/cancel/, /hold/, /issue/, /complete/) on each RepairOrder.
  • Serializers: Full CRUD serializers with annotated querysets (line_items, completed_lines, overdue) and optional detail fields for customer / item / part.
  • Admin: Django admin classes for RepairOrder and RepairOrderLine.
  • Settings: REPAIRORDER_ENABLED, REPAIRORDER_REFERENCE_PATTERN (default REP-{ref:04d}), REPAIRORDER_EDIT_COMPLETED_ORDERS.
  • Permissions: New repair_order ruleset in users/ruleset.py and OAuth2 scope entry in users/oauth2_scopes.py.
  • Migration: 0121_repair_order_and_repair_order_line.py (depends on order.0120, company.0080, part.0151, stock.0123, common.0046, users.0015).
  • Tests: RepairOrderTests and RepairOrderLineTests in order/test_api.py covering options endpoint, model validation, create/list/update API, status transitions, and line item creation/validation/filtering.

References #12064

Test plan

  • python InvenTree/manage.py makemigrations order --check reports no missing migrations
  • python InvenTree/manage.py check passes
  • python InvenTree/manage.py test order.test_api.RepairOrderTests order.test_api.RepairOrderLineTests --noinput passes
  • Manual API smoke test via OPTIONS endpoint returns REP-0001 default reference

Notes

🤖 Generated with Claude Code

Implement the Repair Order feature as described in GitHub issue inventree#12064.

- Add RepairOrder model extending Order base class with customer, item,
  part, serial, and description fields
- Add RepairOrderLine model for tracking parts consumed in repairs
- Add status codes (Pending, In Progress, On Hold, Complete, Cancelled)
- Add API endpoints: /api/order/repair/ and /api/order/repair-line/
- Add serializers with full CRUD support
- Add status transition endpoints (issue, hold, complete, cancel)
- Add admin classes for Django admin interface
- Add system settings for reference pattern and editing completed orders
- Add repair_order ruleset for user permissions
- Add comprehensive API tests

References inventree#12064

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@netlify

netlify Bot commented Jul 14, 2026

Copy link
Copy Markdown

Deploy Preview for inventree-web-pui-preview canceled.

Name Link
🔨 Latest commit 3e78664
🔍 Latest deploy log https://app.netlify.com/projects/inventree-web-pui-preview/deploys/6a561a93926ee200087d31ae

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant