292 lines
7.4 KiB
Plaintext
292 lines
7.4 KiB
Plaintext
|
|
|
|
|
|
|
|
//////////////////////////////////
|
|
//
|
|
// Geschäftspartner-IDs ändern
|
|
//
|
|
// geschrieben von calb / 2019.01.23
|
|
//
|
|
// (c) d.velop AG 2019
|
|
//
|
|
//////////////////////////////////
|
|
|
|
|
|
//////////////////////////////////
|
|
//
|
|
// Dieses Skript passt Geschäftspartner-ID von verschiedenen Dokumentarten an
|
|
//
|
|
vars vers = "0.1 calb d.AG/PS 2019.01.23 Initialversion"
|
|
//
|
|
//////////////////////////////////
|
|
|
|
// Konfiguration
|
|
|
|
|
|
// debug = 1 => es werden keine Änderungen am Dokumentbestand durchgeführt
|
|
// debug = 0 => es werden Änderungen am Dokumentbestand durchgeführt
|
|
vars debug = 1
|
|
|
|
|
|
// db_tabelle => Tabelle, in der die zu ändernden Werte gefunden werden.
|
|
vars db_tabelle = "d3_mapping"
|
|
|
|
// spalte_alter_wert => DB-Spalte, in der der alte Wert gefunden werden kann
|
|
vars spalte_alter_wert = "Kunde_alt"
|
|
|
|
// spalte_neuer_wert => DB-Spalte, in der der neue Wert gefunden werden kann
|
|
vars spalte_neuer_wert = "Kunde_neu"
|
|
|
|
// spalte_status => DB-Spalte, in der der Status des Eintrags festgehalten wird
|
|
vars spalte_status = "status"
|
|
|
|
// liste_dokuarten => Liste von Dokumentarten, in denen das Update durchgeführt werden soll
|
|
vars liste_dokuarten = "AGSP,DMY,DKOR,DRECH,DVER,DKRE,DAGES,DGS,AAUF,DAB,DVPM,DFUEK,DESDO,DARTE,DLIEF,DVORK,DREKL,DGEAK"
|
|
//vars liste_dokuarten = "EVERT,DFOT"
|
|
|
|
// zu_aenderndes_ddf => DDF, in welchem die Information geändert werden soll
|
|
vars zu_aenderndes_ddf = "6"
|
|
|
|
//////////////////////////////////
|
|
|
|
|
|
call dmglog( 4, "*********************************************" )
|
|
call dmglog( 4, "* DMG_gesch_id_wechsel.jpl *" )
|
|
call dmglog( 4, "* calb/d.velop AG *" )
|
|
call dmglog( 4, "*********************************************" )
|
|
call dmglog( 4, "* " ## vers )
|
|
call dmglog( 4, "* db_tabelle : " ## db_tabelle )
|
|
call dmglog( 4, "* spalte_alter_wert : " ## spalte_alter_wert )
|
|
call dmglog( 4, "* spalte_neuer_wert : " ## spalte_neuer_wert )
|
|
call dmglog( 4, "* spalte_status : " ## spalte_status )
|
|
call dmglog( 4, "* liste_dokuarten : " ## liste_dokuarten )
|
|
call dmglog( 4, "* zu_aenderndes_ddf : " ## zu_aenderndes_ddf )
|
|
call dmglog( 4, "* DEBUG : " ## debug )
|
|
|
|
|
|
// Los geht's ......
|
|
|
|
call dmglog( 4, "*********************************************" )
|
|
///////////////////////////////////////////////////////////////////////
|
|
|
|
vars spalte_aw[5000], spalte_nw[5000]
|
|
|
|
vars doku_id[500000]
|
|
|
|
vars anzahl, anzahl2, i, j, k, dokuarten, ergebnis, kaputt
|
|
|
|
|
|
kaputt = 0
|
|
k = 0
|
|
|
|
// Zuerst ein Select auf die Tabelle, um festzustellen, was alles getan werden muss.
|
|
|
|
dbms alias spalte_aw, spalte_nw
|
|
dbms sql select :spalte_alter_wert, :spalte_neuer_wert \
|
|
from :db_tabelle \
|
|
where :spalte_status = '' or :spalte_status is null
|
|
anzahl = @dmrowcount
|
|
dbms alias
|
|
|
|
call dmglog( 4, "Es wurden " ## anzahl ## " Treffer gefunden." )
|
|
|
|
// Aufbereiten der Dokumentartenliste:
|
|
if ( @length( liste_dokuarten ) > 0 )
|
|
{
|
|
ergebnis = api_function( "string_replace", liste_dokuarten, " ", "" )
|
|
|
|
liste_dokuarten = api_converted_string
|
|
|
|
ergebnis = api_function( "string_split", liste_dokuarten, "," )
|
|
|
|
if ( ergebnis > 0 )
|
|
{
|
|
for j = 1 while j <= ergebnis step 1
|
|
{
|
|
dokuarten = dokuarten ## "'" ## api_splitted_string[ j ] ## "', "
|
|
}
|
|
|
|
dokuarten = dokuarten( 1, @length(dokuarten) -1 )
|
|
}
|
|
|
|
call dmglog( 5, "Dokuarten " ## dokuarten )
|
|
}
|
|
|
|
call dmglog( 4, "*******************" )
|
|
|
|
|
|
for i = 1 while i <= anzahl step 1
|
|
{
|
|
call dmglog( 4, i ## ": Alter Wert: " ## spalte_aw[ i ] ## " | Neuer Wert: " ## spalte_nw[ i ] )
|
|
|
|
call dmglog( 4, i ## ": Suche zu ändernde Dokumente ...")
|
|
|
|
dbms alias doku_id
|
|
dbms sql select doku_id from firmen_spezifisch \
|
|
where kue_dokuart in ( :dokuarten ) \
|
|
and dok_dat_feld_:zu_aenderndes_ddf = :+spalte_aw[ i ]
|
|
anzahl2 = @dmrowcount
|
|
dbms alias
|
|
|
|
call dmglog( 4, i ## ": Es wurden " ## anzahl2 ## " zu ändernde Dokumente gefunden.")
|
|
|
|
call dmglog( 4, i ## ": ******************************************" )
|
|
|
|
for j = 1 while j <= anzahl2 step 1
|
|
{
|
|
k = 1
|
|
call dmglog( 4, i ## ": bearbeite DokuID " ## doku_id[ j ] ## " ...")
|
|
|
|
if ( debug == 0 )
|
|
{
|
|
ergebnis = api_function( "attribute_update_single", zu_aenderndes_ddf, spalte_nw[ i ], "", doku_id[ j ], "Master" )
|
|
}
|
|
else
|
|
{
|
|
call dmglog( 3, i ## " / " ## j ## ": hier findet jetzt keine Dokumentänderung statt. \:-(")
|
|
ergebnis = 0
|
|
}
|
|
|
|
if ( ergebnis == 0 )
|
|
{
|
|
call dmglog( 4, i ## " / " ## j ## ": DokuID " ## doku_id[ j ] ## " erfolgreich aktualisiert." )
|
|
}
|
|
else
|
|
{
|
|
call dmglog( 2, i ## " / " ## j ## ": Fehler " ## ergebnis ## " beim Setzen des Attributes (attribute_update_single) bei DokuID " ## doku_id[ j ] )
|
|
kaputt = 1
|
|
}
|
|
call dmglog( 4, i ## ": ==========================================" )
|
|
|
|
}
|
|
|
|
//call dmglog( 5, "kaputt: " ## kaputt )
|
|
if ( debug == 0 )
|
|
{
|
|
if ( k == 1 )
|
|
{
|
|
if ( kaputt == 0 )
|
|
{
|
|
dbms sql update :db_tabelle set :spalte_status = 'fertig' where :spalte_alter_wert = :+spalte_aw[ i ] and :spalte_neuer_wert = :+spalte_nw[ i ]
|
|
}
|
|
else
|
|
{
|
|
dbms sql update :db_tabelle set :spalte_status = 'Problem' where :spalte_alter_wert = :+spalte_aw[ i ] and :spalte_neuer_wert = :+spalte_nw[ i ]
|
|
}
|
|
}
|
|
else
|
|
{
|
|
dbms sql update :db_tabelle set :spalte_status = 'keine Treffer' where :spalte_alter_wert = :+spalte_aw[ i ] and :spalte_neuer_wert = :+spalte_nw[ i ]
|
|
}
|
|
}
|
|
|
|
kaputt = 0
|
|
k = 0
|
|
|
|
call dmglog( 4, "*********************************************" )
|
|
}
|
|
|
|
|
|
|
|
call dmglog( 4, "Bearbeitung abgeschlossen, DMG_gesch_id_wechsel.jpl beendet sich ..." )
|
|
call dmglog( 4, "*********************************************" )
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
proc dmglog( loglevel, message )
|
|
{
|
|
vars l_logdirect = "BEIDE"
|
|
vars l_logdatei = "D\:\\d3\\apps\\log.txt"
|
|
vars l_loglevel = 5
|
|
|
|
vars zeitstempel, loglevel_lang, d3loglevel, logmessage
|
|
|
|
if ( loglevel == 5 )
|
|
{
|
|
loglevel_lang = "DEBUG"
|
|
// Da die d.3 Server i.d.R. nicht im Debug-Modus laufen, erscheinen DEBUG-Meldungen nicht im Log.
|
|
d3loglevel = 9
|
|
}
|
|
|
|
if ( loglevel == 4 )
|
|
{
|
|
loglevel_lang = "INFO."
|
|
d3loglevel = 6
|
|
}
|
|
|
|
if ( loglevel == 3 )
|
|
{
|
|
loglevel_lang = "WARN."
|
|
d3loglevel = 6
|
|
}
|
|
|
|
if ( loglevel == 2 )
|
|
{
|
|
loglevel_lang = "ERROR"
|
|
d3loglevel = 0
|
|
}
|
|
|
|
if ( loglevel == 1 )
|
|
{
|
|
loglevel_lang = "FATAL"
|
|
d3loglevel = 0
|
|
}
|
|
|
|
if ( loglevel <= l_loglevel )
|
|
{
|
|
|
|
|
|
if ( ( l_logdirect == "DATEI" ) || ( l_logdirect == "BEIDE" ) )
|
|
{
|
|
// Ausgabe in Datei
|
|
zeitstempel = sm_sdtime( "n%4y.%0m.%0d %0h\:%0M\:%0s" )
|
|
logmessage = zeitstempel ## " " ## loglevel_lang ## " " ## message
|
|
call api_function( "file_add_line", l_logdatei, logmessage, "APPEND" )
|
|
}
|
|
|
|
if ( ( l_logdirect == "D3LOG" ) || ( l_logdirect == "BEIDE" ) )
|
|
{
|
|
// Ausgabe im d.3 Log
|
|
logmessage = loglevel_lang ## " " ## message
|
|
call api_log( d3loglevel, logmessage )
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|