Invoice integration and note creation

Troubleshoot a Delivery Note not created after invoice save

Diagnose the selected add-note branch without changing unrelated invoice or core files. The guide then takes you through the correct route, the checks to complete before making changes, the workflow in order, and the evidence to review afterwards.

Audience: Administrators and support staffPermission: Invoices: View and Delivery Note: View/CreateModule v1.0.0
Jump to steps
Where to goAdmin Area → Invoices → Open saved invoice → Delivery Note action

What you’ll accomplish

Diagnose the selected add-note branch without changing unrelated invoice or core files. This guide follows the supplied Delivery Note module’s live hooks, controller actions, model rules, views and stored side effects.

Follow these steps

  1. Verify the invoice itself was saved and has a valid ID.
  2. Check that Add Delivery Note was selected before submit.
  3. Check the module is active and `delivery_note_enabled` is on.
  4. Check `delivery_note_invoice_ui_enabled` allowed the new-invoice UI.
  5. Check the staff member had Create capability.
  6. Use the invoice button or metadata endpoint to determine whether a note exists.
  7. Check application logs for installer/schema or model errors, then retest once.

Fields and options to review

  • Invoice ID
  • Checkbox/hidden payload
  • Module options
  • Create permission
  • Both module tables
  • Existing non-void note

Rules the system enforces

  • No note is expected when the checkbox was left off.
  • An existing open or signed note prevents duplicate creation.
  • Recipient Email affects dispatch email only; it does not control note creation.
  • Do not repeat invoice submissions before checking for an existing note.

How to confirm it worked

  • The cause is identified within module scope and the invoice retains its original valid state.

Safety checks and troubleshooting

  • Never repair by inserting a partial database row; use the supported invoice resolver/create flow.
Stay within the supported flowDo not force database values, expose secure tokens, bypass permission checks, replace a stored signature or invent a status or interface that the supplied code does not implement.