order package label
parent
4f7169d42e
commit
a532af2be6
Binary file not shown.
After Width: | Height: | Size: 596 KiB |
|
@ -0,0 +1,63 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="de">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>Versandlabel</title>
|
||||
<link
|
||||
href="https://fonts.googleapis.com/css2?family=Outfit:wght@100..900&display=swap"
|
||||
rel="stylesheet"
|
||||
/>
|
||||
<style>
|
||||
@page {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
size: 2046mm 360mm;
|
||||
}
|
||||
|
||||
:root {
|
||||
--container-width: 2046mm;
|
||||
--container-height: 360mm;
|
||||
}
|
||||
|
||||
body,
|
||||
html {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
font-family: "Outfit";
|
||||
width: var(--container-width); /* Breite des Containers */
|
||||
height: var(--container-height); /* Höhe des Containers */
|
||||
font-size: 40px;
|
||||
}
|
||||
|
||||
.large-container {
|
||||
width: var(--container-width); /* Breite des Containers */
|
||||
height: var(--container-height); /* Höhe des Containers */
|
||||
background-color: #ddd; /* Hintergrundfarbe */
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.container {
|
||||
height: var(--container-height); /* Höhe des Containers */
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="large-container">
|
||||
<h1 style="">Von SHINNEX für Annete</h1>
|
||||
|
||||
<div style="display: flex; flex-direction: column; align-items: center">
|
||||
<h1>Folge uns</h1>
|
||||
<img src="instagram-logo.png" width="80px" />
|
||||
<h1>SHINNEX</h1>
|
||||
</div>
|
||||
|
||||
<div style="display: flex; flex-direction: column; align-items: center">
|
||||
<h1>Folge uns</h1>
|
||||
<img src="tiktok-logo.png" width="80px" />
|
||||
<h1>SHINNEX</h1>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,87 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="de">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>Versandlabel</title>
|
||||
<style>
|
||||
@page {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
size: 2046mm 360mm;
|
||||
}
|
||||
|
||||
:root {
|
||||
--container-width: 2046mm;
|
||||
--container-height: 360mm;
|
||||
}
|
||||
|
||||
body,
|
||||
html {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
font-size: 14px;
|
||||
width: var(--container-width); /* Breite des Containers */
|
||||
height: var(--container-height); /* Höhe des Containers */
|
||||
}
|
||||
|
||||
.large-container {
|
||||
width: var(--container-width); /* Breite des Containers */
|
||||
height: var(--container-height); /* Höhe des Containers */
|
||||
background-color: #808080; /* Hintergrundfarbe */
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.container {
|
||||
height: var(--container-height); /* Höhe des Containers */
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="large-container">
|
||||
<div
|
||||
class="container"
|
||||
style="width: 200mm; background-color: orange"
|
||||
></div>
|
||||
|
||||
<div
|
||||
class="container"
|
||||
style="width: 12mm; background-color: #d9d9d9; position: absolute"
|
||||
></div>
|
||||
|
||||
<div
|
||||
class="container"
|
||||
style="
|
||||
width: 2400mm;
|
||||
background-color: blue;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
"
|
||||
>
|
||||
<img src="Stempel.png" width="1500" />
|
||||
</div>
|
||||
|
||||
<div class="container" style="width: 400mm; background-color: pink"></div>
|
||||
|
||||
<div
|
||||
class="container"
|
||||
style="
|
||||
width: 2400mm;
|
||||
background-color: purple;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
"
|
||||
>
|
||||
<img src="label.png" width="2600" />
|
||||
</div>
|
||||
|
||||
<div
|
||||
class="container"
|
||||
style="width: 400mm; background-color: yellow"
|
||||
></div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,15 @@
|
|||
{
|
||||
"category": "Shinnex",
|
||||
"name": "Versandlabel erstellen",
|
||||
"globalInputs": [],
|
||||
"tasks": [
|
||||
{
|
||||
"name": "Versandlabel erstellen und drucken",
|
||||
"onFinish": "next",
|
||||
"undoPossible": false,
|
||||
"repeatPossible": true,
|
||||
"scriptPath": "script.py",
|
||||
"parameters": []
|
||||
}
|
||||
]
|
||||
}
|
Binary file not shown.
After Width: | Height: | Size: 206 KiB |
Binary file not shown.
After Width: | Height: | Size: 275 KiB |
Binary file not shown.
|
@ -0,0 +1,28 @@
|
|||
import subprocess
|
||||
import sys
|
||||
|
||||
def createPdf(sourceHtml, outputPdf):
|
||||
command = [
|
||||
"google-chrome-stable",
|
||||
"--headless",
|
||||
"--no-sandbox",
|
||||
"--disable-gpu",
|
||||
"--debug=1",
|
||||
"--print-to-pdf=" + outputPdf,
|
||||
"--run-all-compositor-stages-before-draw",
|
||||
"--virtual-time-budget=10000",
|
||||
sourceHtml,
|
||||
]
|
||||
|
||||
process = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
|
||||
_, stderr = process.communicate()
|
||||
|
||||
if process.returncode != 0:
|
||||
print("Error creating PDF")
|
||||
print(stderr)
|
||||
sys.exit(1)
|
||||
|
||||
if __name__ == "__main__":
|
||||
print("Order Package Label")
|
||||
|
||||
createPdf("index.html", "output.pdf")
|
Binary file not shown.
After Width: | Height: | Size: 105 KiB |
|
@ -72,7 +72,7 @@
|
|||
</p>
|
||||
|
||||
<div class="code-box first-item" style="margin-top: 39px">
|
||||
<span>ASD</span>
|
||||
<span>{{DISCOUNT_CODE}}</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
|
@ -53,7 +53,7 @@
|
|||
Hey, wir haben gerade Dein Paket liebevoll verpackt und konnten es kaum
|
||||
erwarten, Dir diese kleine Nachricht zu hinterlassen,
|
||||
</span>
|
||||
<b>Anna</b><span>.</span>
|
||||
<b>{{CUSTOMER_NAME}}</b><span>.</span>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
|
@ -87,7 +87,7 @@
|
|||
|
||||
<p>
|
||||
<span>Jeder Code ist ein kleines Dankeschön von uns an Dich, </span>
|
||||
<b>Anna</b
|
||||
<b>{{CUSTOMER_NAME}}</b
|
||||
><span
|
||||
>, und wir hoffen, dass sie Dein Shopping-Erlebnis noch besser machen.
|
||||
Falls Du Fragen hast oder Unterstützung brauchst, zögere nicht, uns zu
|
||||
|
|
|
@ -181,7 +181,7 @@
|
|||
bgcolor="#af9363"
|
||||
>
|
||||
<a
|
||||
href="https://shinnex.de"
|
||||
href="https://shinnex.de?utm_source=email&utm_medium=email&utm_campaign=deserved_voucher&utm_content=deserved_voucher"
|
||||
class="button__text"
|
||||
style="
|
||||
font-size: 16px;
|
||||
|
|
|
@ -4,6 +4,6 @@ Dein Gutscheincode als Dankeschön
|
|||
|
||||
Dein Gutscheincode lautet: {{VOUCHER_CODE}}
|
||||
|
||||
Zu unserem Shop: https://shinnex.de
|
||||
Zu unserem Shop: https://shinnex.de?utm_source=email&utm_medium=email&utm_campaign=deserved_voucher&utm_content=deserved_voucher
|
||||
|
||||
Falls du Fragen hast, antworte auf diese E-Mail oder kontaktiere uns unter info@shinnex.de.
|
|
@ -832,3 +832,18 @@ func DeleteCrmLink(c *fiber.Ctx) error {
|
|||
|
||||
return c.SendStatus(fiber.StatusOK)
|
||||
}
|
||||
|
||||
func CrmNoLinkProvidedRedirect(c *fiber.Ctx) error {
|
||||
// swagger:operation GET /crm/nolink crm crmNoLinkProvidedRedirect
|
||||
// ---
|
||||
// summary: Redirect to crm no link provided
|
||||
// produces:
|
||||
// - application/json
|
||||
// responses:
|
||||
// '200':
|
||||
// description: Redirect to crm no link provided
|
||||
// '500':
|
||||
// description: Failed to redirect to crm no link provided
|
||||
|
||||
return c.Redirect("https://shinnex.de?utm_source=web&utm_medium=web&utm_campaign=voucherlinkredirect&utm_content=redirect")
|
||||
}
|
||||
|
|
|
@ -80,6 +80,7 @@ func SetupRoutes(app *fiber.App) {
|
|||
c.Post("/links", requestAccessValidation, crm.CreateCrmLink)
|
||||
c.Get("/links/:customerId", requestAccessValidation, crm.GetCrmLinks)
|
||||
c.Get("/link/:id", crm.CrmUseLink)
|
||||
c.Get("/link", crm.CrmNoLinkProvidedRedirect)
|
||||
c.Delete("/links/:id", requestAccessValidation, crm.DeleteCrmLink)
|
||||
|
||||
app.Static("/", config.Cfg.FolderPaths.PublicStatic)
|
||||
|
|
Loading…
Reference in New Issue