How Post-Processing Invoice Edits Work
Source: invoices_controller.rb:511-544
- After processing, only specific fields can be edited: odometer, vehicle_hours, follow_up_date, follow_up_comment, next_service_hours, note, job_card_note, customer_order_number, and description
- Changes to odometer and vehicle_hours also update the linked vehicle record to match
- All other fields (line items, prices, customer, vehicle, etc.) are locked after processing
- The system uses a separate controller action (edit_invoice_after_process) that explicitly whitelists allowed fields
- This restriction applies to all invoice types (invoice, credit, internal)
Support scenarios
- "Why can I only change the odometer and notes after processing?" -> this is by design; processed invoices are locked to maintain accounting integrity, with limited exceptions for operational fields
- "I updated the odometer on the processed invoice but the vehicle didn't change" -> it should update automatically; check that the vehicle record is not archived
- "I need to change the price on a processed invoice" -> this is not possible; void the invoice, recreate it with the correct price, and reprocess