Allow to print expiry date of gift card in PDFs (#2560)

This commit is contained in:
Raphael Michel
2022-03-30 17:25:29 +02:00
committed by GitHub
parent 8a8524a346
commit 76475039b5

View File

@@ -49,6 +49,7 @@ from arabic_reshaper import ArabicReshaper
from bidi.algorithm import get_display from bidi.algorithm import get_display
from django.conf import settings from django.conf import settings
from django.contrib.staticfiles import finders from django.contrib.staticfiles import finders
from django.db.models import Max, Min
from django.dispatch import receiver from django.dispatch import receiver
from django.utils.formats import date_format from django.utils.formats import date_format
from django.utils.functional import SimpleLazyObject from django.utils.functional import SimpleLazyObject
@@ -418,6 +419,17 @@ DEFAULT_VARIABLES = OrderedDict((
"editor_sample": _("2017-05-31 19:00"), "editor_sample": _("2017-05-31 19:00"),
"evaluate": lambda op, order, ev: get_first_scan(op) "evaluate": lambda op, order, ev: get_first_scan(op)
}), }),
("giftcard_issuance_date", {
"label": _("Gift card: Issuance date"),
"editor_sample": _("2017-05-31"),
"evaluate": lambda op, order, ev: get_giftcard_issuance(op, ev)
}),
("giftcard_expiry_date", {
"label": _("Gift card: Expiration date"),
"editor_sample": _("2017-05-31"),
"evaluate": lambda op, order, ev: get_giftcard_expiry(op, ev)
}),
)) ))
DEFAULT_IMAGES = OrderedDict([]) DEFAULT_IMAGES = OrderedDict([])
@@ -553,6 +565,24 @@ def get_variables(event):
return v return v
def get_giftcard_expiry(op: OrderPosition, ev):
if not op.item.issue_giftcard:
return "" # performance optimization
m = op.issued_gift_cards.aggregate(m=Min('expires'))['m']
if not m:
return ""
return date_format(m.astimezone(ev.timezone), "SHORT_DATE_FORMAT")
def get_giftcard_issuance(op: OrderPosition, ev):
if not op.item.issue_giftcard:
return "" # performance optimization
m = op.issued_gift_cards.aggregate(m=Max('issuance'))['m']
if not m:
return ""
return date_format(m.astimezone(ev.timezone), "SHORT_DATE_FORMAT")
def get_first_scan(op: OrderPosition): def get_first_scan(op: OrderPosition):
scans = list(op.checkins.all()) scans = list(op.checkins.all())