The booking summary card in the My Calendar event drawer has room for a "Download Invoice" button, but there is nothing to download yet: the only Print Format in the app is standard_ticket, on Event Ticket.
What's needed
- A
booking_invoice Print Format on Event Booking. Follow buzz/ticketing/print_format/standard_ticket/standard_ticket.json: custom_format: 1, print_format_type: Jinja, module: Ticketing, standard: Yes, pdf_generator: wkhtmltopdf.
- The body renders the booking number and date, the hosting team as issuer, the booking's
tax_id and billing_address, the per-ticket-type breakdown with add-ons, and the totals ladder (subtotal, discount, tax, total).
- Surface the button in
EventBookings.vue only when Event Booking.invoice_requested is set — that flag is what the booking form already collects alongside tax_id and billing_address.
- Link it the way
dashboard/src/pages/TicketDetails.vue:23 links the ticket PDF, via frappe.utils.print_format.download_pdf.
Notes
Buzz User already holds print on Event Booking, and the permission query restricts a user to their own bookings, so no permission work is required.
The summary endpoint (buzz.api.booking.get_my_booking_summaries) deliberately omits invoice_requested; add the field to BookingSummary when this lands.
The booking summary card in the My Calendar event drawer has room for a "Download Invoice" button, but there is nothing to download yet: the only Print Format in the app is
standard_ticket, on Event Ticket.What's needed
booking_invoicePrint Format on Event Booking. Followbuzz/ticketing/print_format/standard_ticket/standard_ticket.json:custom_format: 1,print_format_type: Jinja,module: Ticketing,standard: Yes,pdf_generator: wkhtmltopdf.tax_idandbilling_address, the per-ticket-type breakdown with add-ons, and the totals ladder (subtotal, discount, tax, total).EventBookings.vueonly whenEvent Booking.invoice_requestedis set — that flag is what the booking form already collects alongsidetax_idandbilling_address.dashboard/src/pages/TicketDetails.vue:23links the ticket PDF, viafrappe.utils.print_format.download_pdf.Notes
Buzz Useralready holdsprinton Event Booking, and the permission query restricts a user to their own bookings, so no permission work is required.The summary endpoint (
buzz.api.booking.get_my_booking_summaries) deliberately omitsinvoice_requested; add the field toBookingSummarywhen this lands.