Invoice integration and note creation

Create a Delivery Note while creating a new invoice

Create the invoice and its optional delivery note in one supported save flow.

Audience: Invoice staff with Delivery Note accessPermission: Invoices: Create and Delivery Note: CreateModule v1.0.0
Exact navigationAdmin Area → Invoices → New Invoice

What this guide covers

Create the invoice and its optional delivery note in one supported save flow. This guide follows the supplied Delivery Note module’s live hooks, controller actions, model rules, views and stored side effects.

Exact step-by-step process

  1. Complete the invoice customer, dates, currency, items and required invoice fields.
  2. Tick Add Delivery Note.
  3. Open Delivery Note Details if more delivery data is needed.
  4. Complete the delivery fields and select Use These Details.
  5. Save the invoice once.
  6. Open the saved invoice and use View Delivery Note to verify the linked note.

Fields, choices and supported possibilities

  • Add Delivery Note checkbox
  • Delivery Date
  • Delivery Method
  • Delivered By
  • Tracking / Job Reference
  • Recipient Name
  • Recipient Email
  • Delivery Address
  • Delivery Notes

Code-backed validations and workflow rules

  • The checkbox is unchecked by default.
  • Hidden delivery-note fields are added to the invoice form only when the checkbox is selected.
  • The before-save filter removes module-only keys from the core invoice payload.
  • The after-add hook creates the note after a valid invoice ID exists.
  • If a non-void note already exists, another one is not created.

Expected result and verification

  • The invoice saves normally and one open Delivery Note is created with a source snapshot, secure token, event and optional dispatch email.

Checks, security and troubleshooting

  • Verify both records after saving; an invoice success message alone does not prove the note was created.
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.