Files
Brancheneinstufung2/connector-superoffice/generate_holiday_script.py

71 lines
2.4 KiB
Python

import datetime
from datetime import date
import holidays
# Configuration
YEARS_TO_GENERATE = [2025, 2026]
COUNTRY_CODE = "DE"
SUB_REGION = "BY" # Bayern (Wackler HQ)
def generate_crm_script():
print(f"Generating CRMScript for Holidays ({COUNTRY_CODE}-{SUB_REGION})...")
# 1. Calculate Holidays
holidays_list = []
de_holidays = holidays.Country(COUNTRY_CODE, subdiv=SUB_REGION)
for year in YEARS_TO_GENERATE:
for date_obj, name in de_holidays.items():
if date_obj.year == year:
holidays_list.append((date_obj, name))
# Sort by date
holidays_list.sort(key=lambda x: x[0])
# 2. Generate CRMScript Code
script = f"// --- AUTO-GENERATED HOLIDAY IMPORT SCRIPT ---
"
script += f"// Generated for: {COUNTRY_CODE}-{SUB_REGION} (Years: {YEARS_TO_GENERATE})\n"
script += f"// Target Table: y_holidays (Must exist! Columns: x_date, x_name)\n\n"
script += "Integer count = 0;
"
script += "DateTime date;
"
script += "String name;
\n"
for d, name in holidays_list:
# Format date for CRMScript (usually specific format required, depends on locale but DateTime can parse ISO often)
# Better: use explicit construction or string
date_str = d.strftime("%Y-%m-%d")
script += f"date = String(\"{date_str}\").toDateTime();\n"
script += f"name = \"{name}\";\n"
# Check if exists to avoid dupes (pseudo-code, adapting to likely CRMScript API)
# Usually we use specific SearchEngine or similar.
# Simple version: Just insert. Admin should clear table before run if needed.
script += f"// Inserting {date_str} - {name}\n"
script += "GenericEntity holiday = getDatabaseConnection().createGenericEntity(\"y_holidays\");\n"
script += "holiday.setValue(\"x_date\", date);
"
script += "holiday.setValue(\"x_name\", name);
"
script += "holiday.save();\n"
script += "count++;\n\n"
script += "print(\"Imported \" + count.toString() + \" holidays.\");\n"
# 3. Output
output_filename = "import_holidays_CRMSCRIPT.txt"
with open(output_filename, "w", encoding="utf-8") as f:
f.write(script)
print(f"✅ CRMScript generated: {output_filename}")
print("👉 Copy the content of this file and run it in SuperOffice (Settings -> CRMScript -> Execute).")
if __name__ == "__main__":
generate_crm_script()