Technical configuration, lifecycle and troubleshooting

Troubleshoot a missing Delivery Note menu or invoice buttons

Restore visibility by checking activation, options, permissions and page scoping in order.

Audience: Administrators and support staffPermission: AdministratorModule v1.0.0
Exact navigationAdmin Area → Setup → Modules and Setup → Staff → Roles

What this guide covers

Restore visibility by checking activation, options, permissions and page scoping in order. 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. Confirm the module is installed and active.
  2. Verify `delivery_note_enabled` is `1`.
  3. Verify the staff role has Delivery Note View and, where needed, Create.
  4. For invoice actions, verify `delivery_note_invoice_ui_enabled` is `1`.
  5. Open the exact admin invoice editor route.
  6. Check module CSS/JavaScript loads without browser errors.
  7. Check the invoice metadata request for an access-denied or schema error.

Fields, choices and supported possibilities

  • Activation state
  • Enabled option
  • View/Create capabilities
  • Invoice UI option
  • Invoice ID/context
  • Asset URLs and metadata endpoint

Code-backed validations and workflow rules

  • The sidebar menu is added only when enabled and then remains subject to role capability visibility.
  • Invoice buttons are injected by JavaScript only on recognised invoice pages.
  • Customer invoice buttons use separate ownership/hash checks.
  • Do not edit the global header or core invoice templates for a module-scoped visibility problem.

Expected result and verification

  • The correct role sees the intended menu/action on supported pages only.

Checks, security and troubleshooting

  • Keep the repair inside Delivery Note code/options and the CRM’s normal permission configuration.
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.