Allow to highlight order code on invoice layouts (#3309)

This commit is contained in:
Raphael Michel
2023-05-11 13:29:59 +02:00
committed by GitHub
parent 1777a954a9
commit 19e762c9b9
6 changed files with 32 additions and 4 deletions

View File

@@ -859,8 +859,12 @@ class Modern1Renderer(ClassicInvoiceRenderer):
def _get_first_page_frames(self, doc):
footer_length = 3.5 * len(self.invoice.footer_text.split('\n')) * mm
if self.event.settings.invoice_renderer_highlight_order_code:
margin_top = 100 * mm
else:
margin_top = 95 * mm
return [
Frame(doc.leftMargin, doc.bottomMargin, doc.width, doc.height - 95 * mm,
Frame(doc.leftMargin, doc.bottomMargin, doc.width, doc.height - margin_top,
leftPadding=0, rightPadding=0, topPadding=0, bottomPadding=footer_length,
id='normal')
]
@@ -871,21 +875,31 @@ class Modern1Renderer(ClassicInvoiceRenderer):
# the font size until it fits.
begin_top = 100 * mm
def _draw(label, value, value_size, x, width):
def _draw(label, value, value_size, x, width, bold=False, sublabel=None):
if canvas.stringWidth(value, self.font_regular, value_size) > width and value_size > 6:
return False
textobject = canvas.beginText(x, self.pagesize[1] - begin_top)
textobject.setFont(self.font_regular, 8)
textobject.textLine(label)
textobject.moveCursor(0, 5)
textobject.setFont(self.font_regular, value_size)
textobject.setFont(self.font_bold if bold else self.font_regular, value_size)
textobject.textLine(value)
if sublabel:
textobject.moveCursor(0, 1)
textobject.setFont(self.font_regular, 8)
textobject.textLine(sublabel)
return textobject
value_size = 10
while value_size >= 5:
if self.event.settings.invoice_renderer_highlight_order_code:
kwargs = dict(bold=True, sublabel=pgettext('invoice', '(Please quote at all times.)'))
else:
kwargs = {}
objects = [
_draw(pgettext('invoice', 'Order code'), self.invoice.order.full_code, value_size, self.left_margin, 45 * mm)
_draw(pgettext('invoice', 'Order code'), self.invoice.order.full_code, value_size, self.left_margin, 45 * mm, **kwargs)
]
p = Paragraph(

View File

@@ -625,6 +625,7 @@ class Event(EventMixin, LoggedModel):
"""
self.settings.invoice_renderer = 'modern1'
self.settings.invoice_include_expire_date = True
self.settings.invoice_renderer_highlight_order_code = True
self.settings.ticketoutput_pdf__enabled = True
self.settings.ticketoutput_passbook__enabled = True
self.settings.event_list_type = 'calendar'

View File

@@ -634,6 +634,16 @@ DEFAULTS = {
"the same numbering scheme will be used that you configured for regular invoices."),
)
},
'invoice_renderer_highlight_order_code': {
'default': 'False',
'type': bool,
'form_class': forms.BooleanField,
'serializer_class': serializers.BooleanField,
'form_kwargs': dict(
label=_("Highlight order code to make it stand out visibly"),
help_text=_("Only respected by some invoice renderers."),
)
},
'invoice_renderer': {
'default': 'classic', # default for new events is 'modern1'
'type': str,