Files
d.velop/_Vorlagen/JPL-Skripte/Attribute_kopieren-verschieben_einfachattribut.jpl
2025-11-14 17:11:43 +01:00

183 lines
5.9 KiB
Plaintext

SAVE_SRV_CHANGES_ATTRIBUTES = "1"
msg query "Wollen Sie wirklich die Migration 'Attribut Einfachfeld' durchführen?!" confirm_global
if !confirm_global
return
//-----------------------------------------------------------------------------------
//-----------------------------------------------------------------------------------
//----------------------Konfigurationsbereich allgemein------------------------------
//-----------------------------------------------------------------------------------
//-----------------------------------------------------------------------------------
vars log_folder = "D\:\\Migration" //Übergeordnete Ablage der Logdatei
vars log_file = "change_field.log" //Name der Logdatei
vars doc_type = "DPRVZ" //Kürzel der Dokumentart
vars old_field = "20" //altes Mehrfachfeld
vars new_field = "31" //Neues Mehrfachfeld
vars mode = "move" //Modus: move/copy
//Achtung: SQL-Statement muss ggfs. zusätzlich angepasst werden
//-----------------------------------------------------------------------------------
//-----------------------------------------------------------------------------------
//-----------------Ende Konfigurationsbereich allgemein------------------------------
//-----------------------------------------------------------------------------------
//-----------------------------------------------------------------------------------
//Zusammenstellen des Pfads für die Logdatei
vars logpath = log_folder ## "\\" ## log_file
vars retval = check_folders_and_files()
if(retval != 0)
{
return 1
}
//-----------------------------------------------------------------------------------
//-----------------------------------------------------------------------------------
//----------------------Konfigurationsbereich SQL------------------------------------
//-----------------------------------------------------------------------------------
//-----------------------------------------------------------------------------------
vars value_help, value_value
DBMS DECLARE value_cursor CURSOR FOR \
select doku_id, dok_dat_feld_:old_field from firmen_spezifisch \
where kue_dokuart = :+doc_type \
and dok_dat_feld_:old_field is not null
DBMS WITH CURSOR value_cursor ALIAS value_help, value_value
DBMS WITH CURSOR value_cursor EXECUTE
while (@dmrowcount > 0)
{
call change_doc_type(value_help, value_value)
DBMS WITH CURSOR value_cursor CONTINUE
}
//-----------------------------------------------------------------------------------
//-----------------------------------------------------------------------------------
//-----------------Ende Konfigurationsbereich SQL------------------------------------
//-----------------------------------------------------------------------------------
//-----------------------------------------------------------------------------------
call write_log("Ende Kopieraktion")
msg emsg "Skipt wurde beendet"
//-----------------------------------------------------------------------------------
//-----------------------------------------------------------------------------------
//----------------------Funktionsbereich---------------------------------------------
//-----------------------------------------------------------------------------------
//-----------------------------------------------------------------------------------
proc change_doc_type(doc_id, value)
{
msg d_msg "Bearbeitete " ## :+doc_id
SERVER_API_NO_HOOKS = 1 //Kein Einstiegspunkt
vars retval_check = api_function( "attribute_update_single", new_field, value, 1, doc_id, "Master")
SERVER_API_NO_HOOKS = 0 //Wieder aktiviert
vars text
if (retval_check == 0)
{
text = doc_id ## " - " ## new_field ## " - erfolgreich kopiert"
call write_log(text)
if(mode == "move")
{
SERVER_API_NO_HOOKS = 1 //Kein Einstiegspunkt
vars retval_check = api_function( "attribute_update_single", old_field, "", 1, doc_id, "Master")
SERVER_API_NO_HOOKS = 0 //Wieder aktiviert
if (retval_check == 0)
{
text = doc_id ## " - " ## old_field ## " - erfolgreich gelöscht"
call write_log(text)
}
else
{
text = doc_id ## " - " ## old_field ## " - Löschen fehlgeschlagen!"
call write_log(text)
}
}
}
else
{
text = doc_id ## " - " ## new_field ## " - Kopieren fehlgeschlagen!"
call write_log(text)
}
}
proc check_folders_and_files()
{
//Ordner der Logdatei überprüfen
retval = check_folders()
if (retval == 1)
{
msg emsg "Angegebener Ordner für Logausgabe existiert nicht und konnte nicht angelegt werden -> Abbruch"
return 1
}
//Prüfung, ob Logdatei bereits existiert
retval = api_function ("file_exist", logpath)
//1 = Logdatei existiert bereits
if (retval == 1)
{
msg emsg "Logdatei existiert bereits -> Abbruch"
return 1
}
call write_log("Start Kopieraktion")
//Ungleich = 0, Fehler beim Schreiben der Logdatei
if (retval != 0 && retval != 1)
{
msg emsg "Logdatei konnte nicht erstellt werden -> Abbruch"
return 1
}
}
proc check_folders()
{
//Überprüfung, ob Arbeitsverzeichnis-Auftrag bereits existiert
vars retval
retval = api_function( "directory_exist", log_folder)
if (retval == 0) // falls Ordner nicht existiert wird er angelegt
{
retval = api_function ("directory_create", log_folder)
if (retval != 0) // falls Ordner nicht angelegt werden konnte --> abbruch
{
return 1
}
}
}
proc write_log(text)
{
vars tag_uhrzeit
call api_function("get_current_datetime", "%0d.%0m.%4y %0h\:%0M\:%0s")
tag_uhrzeit = api_single_info
text = tag_uhrzeit ## " - " ## text
//In die Logdatei wird ein Timestamp + übergebenen Text geschrieben
vars retval
retval = api_function ("file_add_line", logpath, text, "APPEND")
}