Compare commits

...
7 Commits
Author SHA1 Message Date
niggl 6d2e0241c9 feat(templates): Added selfservice qr
Build release images / build-container (push) Successful in 2m12s
Build latest image / build-container (push) Successful in 2m26s
2025-04-17 21:44:58 +02:00
niggl afc5b1f0c6 fix(models): Add required SelfServiceLink field to RunnerWithDonations struct 2025-04-17 21:43:54 +02:00
niggl 4a76ee469b fix(barcode): Use auto encoding for QR code generation to support all characters 2025-04-17 21:43:44 +02:00
niggl b58bf700df chore(static) Add base64 encoded image for new sponsors
Build latest image / build-container (push) Successful in 2m2s
Build release images / build-container (push) Successful in 2m6s
2025-04-14 18:08:03 +02:00
niggl efd3a35802 fix(templates): Update titles for runner and certificate templates 2025-04-14 17:56:49 +02:00
niggl 0f7e44a42a fix(models): Correct typo in SponsoringReceiptMinimum mapstructure tag
Build latest image / build-container (push) Successful in 2m6s
Build release images / build-container (push) Successful in 2m17s
2025-04-10 15:29:29 +02:00
niggl f90e5d75fa fix(contracts): Minimum was not read correctly
Build release images / build-container (push) Successful in 2m17s
Build latest image / build-container (push) Successful in 2m27s
2025-04-10 15:16:22 +02:00
11 changed files with 57 additions and 15 deletions

No files matched your search

+1 -1
View File
@@ -11,7 +11,7 @@ CARD_SUBTITLE=Kaya ist cool
CARD_BARCODEFORMAT=ean13
# CARD_BARCODEPREFIX=
SPONSOING_RECEIPTMINIMUM=10
SPONSORING_RECEIPTMINIMUM=40
SPONSORING_DISCLAIMER=Kaya ist cool, aber pass auf, dass du nicht zu viel Geld sammelst!
SPONSORING_BARCODEFORMAT=code128
# SPONSORING_BARCODEPREFIX=
+1
View File
@@ -15,6 +15,7 @@ type RunnerWithDonations struct {
DistanceDonations []DistanceDonation `json:"distance_donations" validate:"optional"`
TotalPerDistance int `json:"total_per_distance" validate:"optional"`
TotalDonations int `json:"total_donations" validate:"optional"`
SelfServiceLink string `json:"self_service_link" validate:"required"`
}
type DistanceDonation struct {
+1 -1
View File
@@ -10,7 +10,7 @@ type Config struct {
CardSubtitle string `mapstructure:"CARD_SUBTITLE"`
CardBarcodeFormat string `mapstructure:"CARD_BARCODEFORMAT"`
CardBarcodePrefix string `mapstructure:"CARD_BARCODEPREFIX"`
SponsoringReceiptMinimum int `mapstructure:"SPONSOING_RECEIPTMINIMUM"`
SponsoringReceiptMinimum string `mapstructure:"SPONSORING_RECEIPTMINIMUM"`
SponosringDisclaimer string `mapstructure:"SPONSORING_DISCLAIMER"`
SponsoringBarcodeFormat string `mapstructure:"SPONSORING_BARCODEFORMAT"`
SponsoringBarcodePrefix string `mapstructure:"SPONSORING_BARCODEPREFIX"`
+1 -1
View File
@@ -24,7 +24,7 @@ type ContractTemplateOptions struct {
Runners []Runner `json:"runners"`
CurrencySymbol string `json:"currency_symbol"`
Disclaimer string `json:"disclaimer"`
ReceiptMinimumAmount int `json:"receipt_minimum_amount"`
ReceiptMinimumAmount string `json:"receipt_minimum_amount"`
EventName string `json:"event_name"`
BarcodeFormat string `json:"barcode_format"`
BarcodePrefix string `json:"barcode_prefix"`
+5 -1
View File
@@ -69,7 +69,11 @@ func (b *DefaultBarcodeService) GenerateBarcode(format string, content string, w
}
break
case "qr":
generatedCode, err = qr.Encode(content, qr.M, qr.AlphaNumeric)
// Always use qr.Auto encoding to support all characters in the content
encoding := qr.Auto
// QR code generation with error correction level M and auto encoding
generatedCode, err = qr.Encode(content, qr.M, encoding)
if err != nil {
return bytes.Buffer{}, err
}
+1
View File
@@ -0,0 +1 @@
iVBORw0KGgoAAAANSUhEUgAAA+gAAAJvCAYAAADoYfswAAAACXBIWXMAAC4jAAAuIwF4pT92AAAQ32lUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgOS4xLWMwMDIgNzkuYTZhNjM5NjhhLCAyMDI0LzAzLzA2LTExOjUyOjA1ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnBkZj0iaHR0cDovL25zLmFkb2JlLmNvbS9wZGYvMS4zLyIgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIiB4bWxuczp4bXBUUGc9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC90L3BnLyIgeG1sbnM6c3REaW09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9EaW1lbnNpb25zIyIgeG1sbnM6eG1wRz0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL2cvIiB4bWxuczppbGx1c3RyYXRvcj0iaHR0cDovL25zLmFkb2JlLmNvbS9pbGx1c3RyYXRvci8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnN0RXZ0PSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VFdmVudCMiIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIgeG1wOkNyZWF0ZURhdGU9IjIwMjQtMDctMTVUMTI6NTA6MDgrMDI6MDAiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgSWxsdXN0cmF0b3IgMjguNSAoTWFjaW50b3NoKSIgeG1wOk1ldGFkYXRhRGF0ZT0iMjAyNC0wNy0xN1QxMjo1NDo1NCswMjowMCIgeG1wOk1vZGlmeURhdGU9IjIwMjQtMDctMTdUMTI6NTQ6NTQrMDI6MDAiIHBkZjpQcm9kdWNlcj0iQWRvYmUgUERGIGxpYnJhcnkgMTcuMDAiIGRjOmZvcm1hdD0iaW1hZ2UvcG5nIiB4bXBUUGc6TlBhZ2VzPSIxIiB4bXBUUGc6SGFzVmlzaWJsZVRyYW5zcGFyZW5jeT0iRmFsc2UiIHhtcFRQZzpIYXNWaXNpYmxlT3ZlcnByaW50PSJUcnVlIiBpbGx1c3RyYXRvcjpDcmVhdG9yU3ViVG9vbD0iQWRvYmUgSWxsdXN0cmF0b3IiIHhtcE1NOkRvY3VtZW50SUQ9ImFkb2JlOmRvY2lkOnBob3Rvc2hvcDo5ZjNmZDFmMi0zNWVmLTkxNDUtOTA1Zi03ZmMzNGExMmEwNDEiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NzMxNjE2YTctZWJhNy00MjRiLTlhZjgtZjY5MTRlNDBjMDRkIiB4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ9InhtcC5kaWQ6MjAwMTFiN2QtZTdiYy00OGQ4LWE2MDQtOWE5ZDlkMGJjOTU5IiB4bXBNTTpSZW5kaXRpb25DbGFzcz0iZGVmYXVsdCIgcGhvdG9zaG9wOkNvbG9yTW9kZT0iMyI+IDxkYzp0aXRsZT4gPHJkZjpBbHQ+IDxyZGY6bGkgeG1sOmxhbmc9IngtZGVmYXVsdCI+QXRsYW50aXNfTG9nb180Y19SZWxhdW5jaDIwMjRfY2xhaW1fdHVlcmtpczwvcmRmOmxpPiA8L3JkZjpBbHQ+IDwvZGM6dGl0bGU+IDx4bXBUUGc6TWF4UGFnZVNpemUgc3REaW06dz0iMjk3LjAwMDAwMiIgc3REaW06aD0iMTg2LjM1OTUzMiIgc3REaW06dW5pdD0iTWlsbGltZXRlcnMiLz4gPHhtcFRQZzpQbGF0ZU5hbWVzPiA8cmRmOlNlcT4gPHJkZjpsaT5DeWFuPC9yZGY6bGk+IDxyZGY6bGk+TWFnZW50YTwvcmRmOmxpPiA8cmRmOmxpPlllbGxvdzwvcmRmOmxpPiA8cmRmOmxpPkJsYWNrPC9yZGY6bGk+IDwvcmRmOlNlcT4gPC94bXBUUGc6UGxhdGVOYW1lcz4gPHhtcFRQZzpTd2F0Y2hHcm91cHM+IDxyZGY6U2VxPiA8cmRmOmxpPiA8cmRmOkRlc2NyaXB0aW9uIHhtcEc6Z3JvdXBOYW1lPSJTdGFuZGFyZC1GYXJiZmVsZGdydXBwZSIgeG1wRzpncm91cFR5cGU9IjAiPiA8eG1wRzpDb2xvcmFudHM+IDxyZGY6U2VxPiA8cmRmOmxpIHhtcEc6c3dhdGNoTmFtZT0iQmxhdSBBVExBTlRJUyIgeG1wRzp0eXBlPSJQUk9DRVNTIiB4bXBHOnRpbnQ9IjEwMC4wMDAwMDAiIHhtcEc6bW9kZT0iQ01ZSyIgeG1wRzpjeWFuPSIxMDAuMDAwMDAwIiB4bXBHOm1hZ2VudGE9IjY5Ljk5OTk5OSIgeG1wRzp5ZWxsb3c9IjEwLjAwMDAwMCIgeG1wRzpibGFjaz0iMC4wMDAwMDAiLz4gPHJkZjpsaSB4bXBHOnN3YXRjaE5hbWU9IkM9MCBNPTAgWT0wIEs9MCAxIiB4bXBHOm1vZGU9IkNNWUsiIHhtcEc6dHlwZT0iUFJPQ0VTUyIgeG1wRzpjeWFuPSIwLjAwMDAwMCIgeG1wRzptYWdlbnRhPSIwLjAwMDAwMCIgeG1wRzp5ZWxsb3c9IjAuMDAwMDAwIiB4bXBHOmJsYWNrPSIwLjAwMDAwMCIvPiA8cmRmOmxpIHhtcEc6c3dhdGNoTmFtZT0iVHVlcmtpcyIgeG1wRzp0eXBlPSJQUk9DRVNTIiB4bXBHOnRpbnQ9IjEwMC4wMDAwMDAiIHhtcEc6bW9kZT0iQ01ZSyIgeG1wRzpjeWFuPSI4OS45OTk5OTgiIHhtcEc6bWFnZW50YT0iNS4wMDAwMDAiIHhtcEc6eWVsbG93PSI0MC4wMDAwMDEiIHhtcEc6YmxhY2s9IjAuMDAwMDAwIi8+IDxyZGY6bGkgeG1wRzpzd2F0Y2hOYW1lPSJDPTAgTT0wIFk9MCBLPTEwMCIgeG1wRzptb2RlPSJDTVlLIiB4bXBHOnR5cGU9IlBST0NFU1MiIHhtcEc6Y3lhbj0iMC4wMDAwMDAiIHhtcEc6bWFnZW50YT0iMC4wMDAwMDAiIHhtcEc6eWVsbG93PSIwLjAwMDAwMCIgeG1wRzpibGFjaz0iMTAwLjAwMDAwMCIvPiA8L3JkZjpTZXE+IDwveG1wRzpDb2xvcmFudHM+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpsaT4gPC9yZGY6U2VxPiA8L3htcFRQZzpTd2F0Y2hHcm91cHM+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjExYmMwNDFlLTVhYjEtNDEwMC04ZDM3LTYyMGVjOWJkM2MyYyIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDoxMWJjMDQxZS01YWIxLTQxMDAtOGQzNy02MjBlYzliZDNjMmMiIHN0UmVmOm9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDoyMDAxMWI3ZC1lN2JjLTQ4ZDgtYTYwNC05YTlkOWQwYmM5NTkiIHN0UmVmOnJlbmRpdGlvbkNsYXNzPSJkZWZhdWx0Ii8+IDx4bXBNTTpIaXN0b3J5PiA8cmRmOlNlcT4gPHJkZjpsaSBzdEV2dDphY3Rpb249InNhdmVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOjIwMDExYjdkLWU3YmMtNDhkOC1hNjA0LTlhOWQ5ZDBiYzk1OSIgc3RFdnQ6d2hlbj0iMjAyMy0wOS0yNVQxMjoyNTozNyswMjowMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgSWxsdXN0cmF0b3IgMjcuOSAoTWFjaW50b3NoKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6ZjQwNWEyNjQtNTFkMS00OWY0LTg0NjQtM2U5ZTMyMmExOGRjIiBzdEV2dDp3aGVuPSIyMDI0LTA3LTE1VDEyOjUwOjA4KzAyOjAwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBJbGx1c3RyYXRvciAyOC41IChNYWNpbnRvc2gpIiBzdEV2dDpjaGFuZ2VkPSIvIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJjb252ZXJ0ZWQiIHN0RXZ0OnBhcmFtZXRlcnM9ImZyb20gYXBwbGljYXRpb24vcG9zdHNjcmlwdCB0byBpbWFnZS9lcHNmIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDoxMWJLine truncated
@@ -0,0 +1 @@
iVBORw0KGgoAAAANSUhEUgAAAjQAAADwCAAAAAAyBqFUAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAAmJLR0QA/4ePzL8AAAAJcEhZcwAAAFoAAABaAHAjuH0AAAAHdElNRQfpBA4ROzdxK7JpAAAs6UlEQVR42u1dZ2BURRc9m2x6T+idCEhvoUkRBD9AFBEEFQRFUaqooEhVQERBQcSCgigiijRpIl16F6WF3g0hpJBGerJ7vx8zb/fVLaFFM+fP7pvy3puZ8+7cO3NnxkQQEHAPHqIKBARpBARpBARpBARpBARpBAQEaQQEaQQEaQQEaQQEaQQEBGkEBGkEBGkEBGkEBGkEBARpBARpBO4hzLeR9+Tn6NtGFTYhsdzE27hl5kj0bida5T9Mmph5iFKTZsnFurdDmpx5qC9II7onJXqFdxaVLkjjHjJSbolKF6QREKS56xALrQRpBIT15A5MTlOknLqRV756WQeSJvVUXEGFmhGiIYoLaZxh24w/8gB4tBzaGwBwaChwHieaAKFbWYp9H2/IA2Du/HZb0RSCNEDuq4uAspGeMZf37Jm/tASA9L8AIPMvoASTOWNmWBFey3z1yrr1oz4yicYo9qTJ7bYJ7aa0MgHRU5dsa/9HSaDxFmDcn9WnAj4AgFEzUXVmVzNwZMzm6R4fisb414AKj43AXHXYA6jL/rwDjLTwwK9NeJL/7YwWUtJ1QNMU9tc6HNhIRJQEfEkCRRy3KWl2qwPS+e+Jmeg2Q+pxBl+dtnZlD1VKywhErAnlKvVnx3aN+Z+w5IqHpNEBkzSvwO8fe8qsSmilljSbgM/sKQ4Bu4Wk+Zfgdr5uE+AfpgK/X/4S9KhoT+k3EHsvqnIvh/8r9qum9fGr+IKLx+DejGQVqrLwIxl4Wp6up7YnO4j2AbLLdjggWqN4kMYIR4Fm8usaoTiqUmlOo5H8OhKnRWsUA9I4mEVKhGc5RU9WAYnKFGkFmGKS4U2k5Yrm+O+TxsFwXCb8lLEByFCmyNZmyhHNUawH90KRWaC4dRpClSmCgE/7K4OCRXMUa9KUBl2qIbvOv4oyKtL45N4KE/UvFGE7mgH75NdHspWKMWCqi7/l1zcvXRGtUbxJU7MsFsuvF8OsdkFvgT8yZZdPPtBbtEbxJo3pFfxxyH4ZtwDdSqmSPIeMBfarU/vwlGiN4m09YUiIdZDNXrIOTfd8h/31gWRYt2qIydds1vsY+A0QrVG8JQ3KzsTRp5K4dT1gNd7kKk05XOKsMX1lSno8hv23jPwNY0uI1ijmpMGAsfij/ieXrYib1/gH9PyIB9dAWtclK5cCQMvZON7wo8tWpC5v+Rk6jhGN8a/BbUx2bgbmGPrTEH0dAsDbF4D3+HwpMKk8AJRmF9+HAPAOBIAXM0n40/xb4Dmp8HzLy49qX0UVllCreTv+t0n/kOQESwEeGPDtMzaB5t/bLyK0TMNeAIBGLwQlJVnyULbbN8O9GIWTtLcUKGow3d1lSPkJ+WV9HKeIz4kQg3yCNAJCERYQEKQREKQREKQREKQREKQREBCkERCkERCkESiKMIsqKNLISsnNyc7LzL4eFxcXd73vdEEaAadoo3CkjhXdk4BzfNJbvrDHS5BGwDnaL074rX9IEesXBGmKOnyeWPDPC0LSCLiJ4CmCNALuooQgjUBhbVxBGgG3SVNEFGHzWK+AUH//EHgwFT0zD7cyM1MzQt/iCRInB4YFBASGAQjxQArA4rNady9GjTb/Ukigf2CIB0I8gPwMSk1NTU3PyEhNz8gJDg0r1ax5rbv78Xl4WooUaeak64Y3kEiT8W2eboKg4kSaNescRs9FSJcXO97N3bPNliLVPV1f1T9cHRjad81B6X/VhJ+7a9YT1Jt6clJx6h5W737nAYcJ0n7p3GjT3e+fighpQER5mwYE2QP8+6/PVS2OSp7bRvYZVRp9vDiuEDsyvqJi+CQsrGpkhKc8qF/GXXs4H977tGhUBV9hmT5SKvngVN10l9vx+JB11uK6sLDgJ0nkrj8j1dKNNaPsh8w0iL9bj+bH1HxRpEhDNs3mmkHCtTy+S3Fej9qcV8JNeWDugpK2bjv9Lj24NLv/N0Vr82lfm9g16Ma8Vb/FEr66NdP/7xb874kBd1enKWJzT2aTk6EAKdxTjJdoUGGTtL/g8tXFiTQms4ukKdYOOEbWS/CvkoAeb72bpDEVLdLY6sNTSBr3SYO6ffmfU1uKI2lE9+R+9wRgpNSevxQn0jjrfjxF9+So8LXr8j9b72YzeRQx0nBJ42lyIpmLtaRxYDo+xH9jY+7Gg4vWAZ9q0pidfWSie3JMGpy/i6QxCdL8hxRhwDbHcDdXDJiK2Lfj5YQTzk3uzO1HjyWk3woNrl6vU3UXHp27YfXFG8H1ZocU7s0vbo8+l3zL7F/mwfodSjtOmrH74NmrmRlhQZVqN27t5+S+yX9fjsnLDwkPDy9dy9d10oTaHqaOKTi078zF9LTQ0JKNm7bwdbV4h5Yej/WoNCWqKEoas6uSxtOJpNn69cYs/nc7UG9EX00F58bFxl6/dqMzt06XvR0DAH8PjwKQGhMQ6qffnAXJyRUC1YFpc388KfsAm77SJ8CwiFu/Xi87FMi37Ys9fGBNSkpKik9KyvhOmfbswt+iZZXzYMMGXeq41j3Z9g1UDdTsnr8mTfq/BBEvvVZZN7s1PjbuWlxM2Kfs8sTwnQBwsoUxabKvhITIC30rMSTiXrFGmk/gx7xFGM03XOHp39aN3f+Q+r71DtkjG0ZWDrPJk85ERJTT1yYx2HmoABAWFhEZGRnZMEpC7cjKQdDO0+V9qDnlp/ScAv333t9MU+SIWiVtta+YRTr2uPZTHihPMFIvF4NN//1eHrouSn2/oAWqWdBW1SIjwqRP0cT2zp0vadyfK1tnmSzjcgDmsEqRtaKiompElvMBxt7rCUtq5oQ0V3kxxujE5Y3yBIBm885m5V3//SVWYp/FUvSFDnKp8zgRUYb9eI1kIqI2Dom9TPm4aPbxm7t/teXQ7188wT//Nld03ix/nAcAmJ9beuKmNX7XeNX5QXXHpsma710zAPg/M2vD/oNbFgxgg7wj5LcbbUyaM9I9l8vqrLNead5R5LP2V+xtaiUimmi7/JGnaqy5NxVsHVZWnrPR17fuOWn4nFsJo4T/8HfToXNaRwAI+km6PlWb6dj2IqYte94maboTUW4nuyZuISJq5YgzdZRCZB1z/ul2lV+f78qSlfxT82bZLKrmMSkgc7BdP+nw2UXFZHVXAPCbbKv6o4EA8J48zVhj0tiObT1oC/o1SL8836qIveOtqraXIiL61J70N56GC6xflTktKyKlhJ323wfXCOL9S0lnpBmnibnVDABKyDyzEqoAAPxOylLlLPBnN3iWiIbLFEgiImoCAA+07zdq2idzv1+2bNnKLVu2bJG+05WKx/3mDQCmD2Qf62SWLvCgWs48DgBoJf8E32Bpm/2SokxrfR4ASh6WBY0AgI/licYZk2apVKBEKWSSCQBCn5j2846/dq2a0NRW5ACt281Orjn5E9EG2RDebiVpVqrz8ZXe5dfeF38aaumENDFGpMnvDAAe2+Rhq1naphZ54DAW2JdolQkAfKpW9AGqEhFRPcBTLSiS+YfaVOH1td9X5zV4t1HqkvIOIwAAZWLlYTkNAADlklRPmwwAHnvkQadNAL6Wh4w3Js37PKqyFDAGgO/zO+1VsOVBiQqjtdnX2T6h66UAwLNi1QAA0Ty6CYtepc72DQCgXcL9ccKSOohSRgmlU3bGqyNYB/ymMpDfbbE8bCoLe5mSSwFotz6HKGd56cZERFQD6KW+MU+PTfLARDYe8rBFqU1yyrfIl4duNWk1U6L1LOnrKs9EXwB4SRn4CIBF8oAJxqSRxGIffp1qhnl4oiJJvGSIhVvIQGSUJOoOoPqCVCLLviibSxwXU6vVufwB4IW8++S5R625FWKUMNaANPvNAFAmSxk6jyVuKA+bycIG0UDAQ/J2/XsGERFVBg6o9RE++NJWEfos04FPqxIf4yL9IzmTWBtVUlWphfWdvsqGfx4AsEuZdIm6nd41JE2GZP3+YhNzT0RrmCEZSX9r8vMBhHK0FkDfbC5rh2UrSbNGlakUAIy/5/63NtK0cZE0E1RNwATnB+rU3HY9JAv7kgUNP+oBzxWq9CXQWF/yAooeg3v8v6B5vee4QXvDHvQTC3pXnfRNFq447SXVGwD8VRIgJ0gl54xJwx+GQIfO5fwtMUsTc5FFVMl7ABilZQG3bZWqy7myADzvgwuoh6sD1QYRPx0GgIAhquByXK1fLwvjfkreE6yY/LRqsCgVz6nuYJnBLXS5YUX8fLphmvd4jY9wfWQP4iTtpE7K7cQf5GEb8gCgrKo2fDqrPDwNa8f6Mf8zKMCRHfgM/72kieGV4zX/IrpMN7k093S5QxwQsGrQfRgSltjzMLssY8Su69D7cK21AABPa5J3YalbyoJ+ZEE1gfbqPj0FJvUoy3JeTX/rKNjVdN6Pr0sKtg288IYJyjf4qE3JsjBW84115McBrf6mI2kksRgU5/ATTeet/rwmhh/CF1oaZZJ0MnKir5MFna8CoNTB++lYXshpjd9PM3GgieBOs4fSNB/TGZhmqOVbMlqoR9f5p9urkTxwFq9znTfhimi67ZDe3/iLaIb+K7Cn05+yMNb5JqmTdvFyTdIcf5v/mVrGYXUFleekM5I0qfGYEOHShOWx1leAanub3ddZbldJo0zHzrs1ddEk45tjFJySzfpIf5REYKTppQrZzprU/L488MIuPj5oTBoskwL4ueDVtE4xfMWJnDQ3AABxt9QTSq1dIs3xznyWsuswJ7XHR/G0K51tj6n6qkuuEXvaxQPN91W7vxOW/H1uNjFImK8XmPI7K2hpw/m7Cw9pp4iHalJXmfySvqDp96BCgWKHUwXU1XmVR7xZS+xLine truncated
+1 -1
View File
@@ -2,7 +2,7 @@
<head>
<meta charset="utf8">
<title>Sponsoring contract</title>
<title>Läuferkarten</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bulma@0.9.1/css/bulma.min.css">
<style>
.sheet {
+1 -1
View File
@@ -2,7 +2,7 @@
<head>
<meta charset="utf8">
<title>Sponsoring contract</title>
<title>Runner cards</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bulma@0.9.1/css/bulma.min.css">
<style>
.sheet {
+25 -8
View File
@@ -2,7 +2,7 @@
<head>
<meta charset="utf8">
<title>Sponsoring contract</title>
<title>Läuferurkunde</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bulma@0.9.1/css/bulma.min.css">
<style>
.sheet {
@@ -87,13 +87,30 @@
<td>Gesamt</td>
<td>{{ formatUnit "euro" $.Locale .TotalPerDistance }} {{ $.CurrencySymbol }}</td>
<td>{{ formatUnit "euro" $.Locale .TotalDonations }} {{ $.CurrencySymbol }}</td>
</tfoot>
</table>
</main>
<footer class="certificate-footer">
<p>
{{ $.Footer }}
</p>
</table>
</main>
<footer class="certificate-footer">
<table style="border-collapse: collapse; border: none; width: 17cm;">
<thead>
<tr>
<th style="border: none; width: 50%; text-align: center;">Link zu deinen Rundenzeiten</th>
<!-- <th style="border: none; width: 50%; text-align: center;">Spende überweisen</th> -->
</tr>
</thead>
<tbody>
<tr>
<td style="border: none; text-align: center;">
<img src="data:image/png;base64,{{ barcode .SelfServiceLink "qr" "" }}" style="height: 2.5cm; padding: 0.2cm">
</td>
<td style="border: none; text-align: center;">
<!-- <img src="data:image/png;base64,{{ barcode ".SelfServiceLink" "qr" "" }}" style="height: 2.5cm; padding: 0.2cm"> -->
</td>
</tr>
</tbody>
</table>
<p style="text-align: center;">
{{ $.Footer }}
</p>
</footer>
</article>
{{ end }}
+19 -1
View File
@@ -2,7 +2,7 @@
<head>
<meta charset="utf8">
<title>Sponsoring contract</title>
<title>Runner certificate</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bulma@0.9.1/css/bulma.min.css">
<style>
.sheet {
@@ -91,6 +91,24 @@
</table>
</main>
<footer class="certificate-footer">
<table style="border-collapse: collapse; border: none; width: 17cm;">
<thead>
<tr>
<th style="border: none; width: 50%; text-align: center;">Link to your lap times</th>
<!-- <th style="border: none; width: 50%; text-align: center;">Transfer donation</th> -->
</tr>
</thead>
<tbody>
<tr>
<td style="border: none; text-align: center;">
<img src="data:image/png;base64,{{ barcode .SelfServiceLink "qr" "" }}" style="height: 2.5cm; padding: 0.2cm">
</td>
<td style="border: none; text-align: center;">
<!-- <img src="data:image/png;base64,{{ barcode ".SelfServiceLink" "qr" "" }}" style="height: 2.5cm; padding: 0.2cm"> -->
</td>
</tr>
</tbody>
</table>
<p>
{{ $.Footer }}
</p>