Module setup, access and architecture

Understand the Delivery Note menu and exact routes

Map the visible sidebar entry and supported admin, public and client-PDF endpoints.

Audience: Administrators and technical supportPermission: Delivery Note: ViewModule v1.0.0
Exact navigationAdmin Area → Delivery Note

What this guide covers

Map the visible sidebar entry and supported admin, public and client-PDF endpoints. 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. Use the sidebar Delivery Note entry to open the register.
  2. From an invoice, use the injected Create/View Delivery Note action.
  3. Use clean admin controller actions for create, edit, view and PDF.
  4. Use the secure recipient link generated by the module rather than constructing a token URL manually.

Fields, choices and supported possibilities

  • Admin register: `/admin/delivery_note`
  • Invoice resolver: `/admin/delivery_note/invoice/{invoiceId}`
  • Create/edit/view/PDF/invoice metadata/void controller actions
  • Public view/sign routes using the secure token
  • Client invoice PDF route with invoice ID and hash
  • Hyphenated compatibility aliases
  • Sidebar icon: Font Awesome truck
  • Sidebar position: 46

Code-backed validations and workflow rules

  • The live module defaults to underscore routes because the target SaaS router recognises them reliably.
  • Compatibility aliases exist, but the helper validates configured public routes and falls back when a value is unsafe.
  • The `dead_public_*` controller methods are not active user workflows and are excluded.

Expected result and verification

  • Support staff can identify the correct code-backed destination for each action without inventing a menu path.

Checks, security and troubleshooting

  • Never expose a secure token in a public article, ticket screenshot or shared log.
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.