71 lines
2.4 KiB
Python
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()
|