
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")
}













