diff --git a/groupTasks/groups/shx-order/backPage.html b/groupTasks/groups/shx-order/backPage.html index 7553e1a..83bc115 100644 --- a/groupTasks/groups/shx-order/backPage.html +++ b/groupTasks/groups/shx-order/backPage.html @@ -69,7 +69,7 @@

- SYfwa2g + {{DISCOUNT_CODE}}
@@ -88,7 +88,7 @@
- +
@@ -130,7 +130,7 @@
- +
diff --git a/groupTasks/groups/shx-order/crmCustomer.py b/groupTasks/groups/shx-order/crmCustomer.py index e08bfa4..4e378c7 100644 --- a/groupTasks/groups/shx-order/crmCustomer.py +++ b/groupTasks/groups/shx-order/crmCustomer.py @@ -1,48 +1,56 @@ import requests import sys import json +import qrcode # DEFINITIONS -endpoint_url = "https://devdash.ex.umbach.dev/api/v1/crm" -api_key = "uY1DTUog-Iax7-ydc4-dP9V-NON1xsbTGH1I" - -headers = { - "X-Api-Key": api_key, - "Content-Type": "application/json" -} +ENDPOINT_URL = "https://devdash.ex.umbach.dev/api/v1/crm" +API_KEY = "uY1DTUog-Iax7-ydc4-dP9V-NON1xsbTGH1I" +QR_CODE_URL = "https://devdash.ex.umbach.dev/api/v1/crm/link/" # MAIN +headers = { + "X-Api-Key": API_KEY, + "Content-Type": "application/json" +} + json_object = json.loads(sys.argv[1]) customerEmail = json_object["customerEmail"] +customerName = json_object["customerName"] +discountCode = json_object["discountCode"] orderId = json_object["orderId"] -if customerEmail is None: - print("customerEmail is required") +if (customerEmail is None + or orderId is None + or customerName is None + or discountCode is None): + print("Missing required parameters") sys.exit(1) customerEmail = customerEmail["value"] +customerName = customerName["value"] +discountCode = discountCode["value"] orderId = orderId["value"] def CreateCrmCustomer(): response = requests.post( - url=f"{endpoint_url}/customer/create", + url=f"{ENDPOINT_URL}/customer/create", headers=headers, json={ "FirstName": "Shopify Customer", "Email": customerEmail, "LeadOrigin": "Shopify Customer added by GroupTask", }) + + print(f"CreateCrmCustomer response status code {response.status_code}") if response.status_code != 200: print(f"CreateCrmCustomer req error {response.status_code}") sys.exit(1) - print(response.status_code) - print(response.json()) - return response.json()["Id"] @@ -50,7 +58,7 @@ def CheckIfCrmCustomerExists(): print(f"Checking if customer exists: {customerEmail}") response = requests.post( - url=f"{endpoint_url}/customer", + url=f"{ENDPOINT_URL}/customer", headers=headers, json={"Email": customerEmail} # Hier json verwenden, um JSON-Daten zu senden ) @@ -74,6 +82,7 @@ def CheckIfCrmCustomerExists(): customerId = response.json()[0]["Id"] CreateCrmActivityLink(customerId=customerId) + GetCustomerActivityLinks(customerId=customerId) def CreateCrmActivityLink(customerId): @@ -81,23 +90,119 @@ def CreateCrmActivityLink(customerId): def req(type): response = requests.post( - url=f"{endpoint_url}/links", - headers=headers, - json={ - "CustomerId": customerId, - "Name": f"Shopify Order #{orderId} - {type}", - "Url": "https://www.example.com" - }) + url=f"{ENDPOINT_URL}/links", + headers=headers, + json={ + "CustomerId": customerId, + "Name": f"Shopify Order #{orderId} - {type}", + "Url": "https://www.example.com" + }) + + print(f"CreateCrmActivityLink response status code {response.status_code} for {type}") if response.status_code != 200: print(f"CreateCrmActivityLink req error {response.status_code}") sys.exit(1) - print(response.status_code) req("5 € Gutschein") req("10 € Gutschein") +def create_qrcode(type, id): + data = f"{QR_CODE_URL}{id}" + + # Generate QR code + qr = qrcode.QRCode( + version=1, + error_correction=qrcode.constants.ERROR_CORRECT_L, + box_size=10, + border=0, + ) + qr.add_data(data) + qr.make(fit=True) + + # Create an image from the QR Code instance + img = qr.make_image(fill_color="black", back_color="#fdf8ef") + + # Save image to a file + img.save(f"./{type}.png") + + # Display the generated QR code image + img.show() + + + +def GetCustomerActivityLinks(customerId): + response = requests.get( + url=f"{ENDPOINT_URL}/customer/view/{customerId}", + headers=headers, + json={ + "CustomerId": customerId, + "Name": f"Shopify Order #{orderId} - {type}", + "Url": "https://www.example.com" + }) + + print(f"GetCustomerActivityLinks response status code {response.status_code}") + + if response.status_code != 200: + print(f"GetCustomerActivityLinks req error {response.status_code}") + sys.exit(1) + + data = response.json()["Links"] + + if len(data) == 0: + print("No links found") + sys.exit(1) + + # sort data by creation date + + data = sorted(data, key=lambda x: x["CreatedAt"], reverse=True) + + # find the first link that has a name that starts with "Shopify Order #orderId - price € Gutschein" + + linkGift5 = None + linkGift10 = None + + for link in data: + if linkGift5 is None and link["Name"].startswith(f"Shopify Order #{orderId} - 5 € Gutschein"): + linkGift5 = link + elif linkGift10 is None and link["Name"].startswith(f"Shopify Order #{orderId} - 10 € Gutschein"): + linkGift10 = link + + if linkGift5 is None or linkGift10 is None: + print("Gift links not found") + sys.exit(1) + + create_qrcode("5euro", linkGift5["Id"]) + create_qrcode("10euro", linkGift10["Id"]) + + +def ReplaceHtmlVariables(): + print("ReplaceHtmlVariables") + + # replace variables in html file + # read html file and replace variables + + file = open("frontPage.html", "r") + html = file.read() + html = html.replace("{{CUSTOMER_NAME}}", customerName) + file.close() + + file = open("frontPage.html", "w") + file.write(html) + file.close() + + file = open("backPage.html", "r") + html = file.read() + html = html.replace("{{DISCOUNT_CODE}}", discountCode) + file.close() + + file = open("backPage.html", "w") + file.write(html) + file.close() + CheckIfCrmCustomerExists() + +ReplaceHtmlVariables() diff --git a/groupTasks/groups/shx-order/discounts.py b/groupTasks/groups/shx-order/discounts.py index f882d69..3a02113 100644 --- a/groupTasks/groups/shx-order/discounts.py +++ b/groupTasks/groups/shx-order/discounts.py @@ -1,43 +1,8 @@ -import os -import pdfkit -import qrcode import subprocess import PyPDF2 +import sys - -def create_pdf_from_html(html_file, pdf_file): - pdfkit.from_file(html_file, pdf_file, options={"page-size": "A5", "orientation": "Landscape", "enable-local-file-access": ""}) - - -def list_files_in_directory(directory): - files = os.listdir(directory) - for file in files: - print(file) - - -def create_qrcode(): - data = "https://www.example.com" - - # Generate QR code - qr = qrcode.QRCode( - version=1, - error_correction=qrcode.constants.ERROR_CORRECT_L, - box_size=10, - border=4, - ) - qr.add_data(data) - qr.make(fit=True) - - # Create an image from the QR Code instance - img = qr.make_image(fill_color="black", back_color="#fdf8ef") - - # Save image to a file - img.save("./example_qr.png") - - # Display the generated QR code image - img.show() - -def test(sourceHtml, outputPdf): +def createPdf(sourceHtml, outputPdf): command = [ "google-chrome-stable", "--headless", @@ -51,10 +16,15 @@ def test(sourceHtml, outputPdf): ] process = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE) - stdout, stderr = process.communicate() + _, stderr = process.communicate() - print("STDOUT:", stdout) - print("STDERR:", stderr) + if process.returncode != 0: + print("Error creating PDF") + print(stderr) + sys.exit(1) + + print("PDF created successfully") + def merge_pdfs(pdf1_path, pdf2_path, output_path): # Öffne die beiden PDF-Dateien @@ -81,14 +51,12 @@ def merge_pdfs(pdf1_path, pdf2_path, output_path): pdf_writer.write(output_file) if __name__ == "__main__": - directory = "oldFiles/" # Aktuelles Verzeichnis - list_files_in_directory(directory) + createPdf("oldFiles/frontPage.html", "finalFrontPage.pdf") + createPdf("oldFiles/backPage.html", "finalBackPage.pdf") - create_pdf_from_html("oldFiles/frontPage.html", "outputFront.pdf") - create_pdf_from_html("oldFiles/backPage.html", "outputBack.pdf") - create_pdf_from_html("oldFiles/backPage3.html", "outputBack3.pdf") - create_qrcode() - test("oldFiles/frontPage.html", "finalFrontPage.pdf") - test("oldFiles/backPage.html", "finalBackPage.pdf") + merge_pdfs('finalFrontPage.pdf', 'finalBackPage.pdf', 'combined.pdf') - merge_pdfs('finalFrontPage.pdf', 'finalBackPage.pdf', 'combined.pdf') \ No newline at end of file + # delete temporary files + + subprocess.run(["rm", "finalFrontPage.pdf"]) + subprocess.run(["rm", "finalBackPage.pdf"]) \ No newline at end of file diff --git a/groupTasks/groups/shx-order/frontPage.html b/groupTasks/groups/shx-order/frontPage.html index e3e0f79..b5c84ec 100644 --- a/groupTasks/groups/shx-order/frontPage.html +++ b/groupTasks/groups/shx-order/frontPage.html @@ -53,7 +53,7 @@ Hey, wir haben gerade Dein Paket liebevoll verpackt und konnten es kaum erwarten, Dir diese kleine Nachricht zu hinterlassen, - [NAME]. + {{CUSTOMER_NAME}}.

@@ -84,7 +84,7 @@

Jeder Code ist ein kleines Dankeschön von uns an Dich, - [NAME]{{CUSTOMER_NAME}}, und wir hoffen, dass sie Dein Shopping-Erlebnis noch besser machen. Falls Du Fragen hast oder Unterstützung brauchst, zögere nicht, uns zu diff --git a/groupTasks/groups/shx-order/index.json b/groupTasks/groups/shx-order/index.json index 1e02a55..887583d 100644 --- a/groupTasks/groups/shx-order/index.json +++ b/groupTasks/groups/shx-order/index.json @@ -1,18 +1,7 @@ { "category": "Shinnex", "name": "Bestellung", - "globalInputs": [ - { - "parameterName": "orderId", - "type": "text", - "displayName": "Bestellnummer" - }, - { - "parameterName": "customerEmail", - "type": "text", - "displayName": "E-Mail vom Kunden" - } - ], + "globalInputs": [], "tasks": [ { "name": "CRM Customer", @@ -24,14 +13,22 @@ { "parameterName": "orderId", "type": "text", - "displayName": "Bestellnummer", - "global": true + "displayName": "Bestellnummer" }, { "parameterName": "customerEmail", "type": "text", - "displayName": "E-Mail vom Kunden", - "global": true + "displayName": "E-Mail vom Kunden" + }, + { + "parameterName": "customerName", + "type": "text", + "displayName": "Vorname vom Kunden" + }, + { + "parameterName": "discountCode", + "type": "text", + "displayName": "10 % Gutscheincode für den Kunden (in Shopify erstellen)" } ] }, diff --git a/groupTasks/groups/shx-order/test.pdf b/groupTasks/groups/shx-order/test.pdf deleted file mode 100644 index 9038cea..0000000 Binary files a/groupTasks/groups/shx-order/test.pdf and /dev/null differ