Troubleshoot a missing client Delivery Note PDF button
Resolve client-page visibility within the supplied hook and access rules.
Exact navigationClient Portal → Invoices → Open invoice
What this guide covers
Resolve client-page visibility within the supplied hook and access rules. 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
- Verify the module is active and enabled.
- Confirm the invoice page context is recognised.
- Confirm the invoice has a non-void linked note.
- Confirm the logged-in client owns the invoice or the route carries the exact stored hash.
- Check that customer head/footer hooks and the invoice-button JavaScript load.
- Test with the same client account in a clean browser session.
Fields, choices and supported possibilities
- Module enabled
- Invoice ID/context
- Invoice hash
- Client ID
- Active-note metadata
- Customer asset injection
Code-backed validations and workflow rules
- The button is intentionally absent for unauthorised, missing or void-note contexts.
- Invoice UI enabled option gates admin invoice UI; the customer hook uses module enabled and eligible note resolution.
- The code does not provide a global client Delivery Note menu.
Expected result and verification
- The button appears only for the correct invoice and customer without broadening access.
Checks, security and troubleshooting
- Keep the fix inside module/hook scope; do not edit core client-invoice access logic.
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.
