Upload DMG

This commit is contained in:
2024-06-19 16:46:15 +02:00
parent 268cf59aee
commit 2141bb5740
2 changed files with 378 additions and 0 deletions

View File

@@ -0,0 +1,291 @@
//////////////////////////////////
//
// 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 )
}
}
}

View File

@@ -0,0 +1,87 @@
Rahmen
======
Es sollen Geschäftspartner-IDs geändert werden. Bereitgestellt wird eine Tabelle, in der der alte und der neue Wert angegeben sind. Pro Kombination aus altem und neuem Wert kann es mehrere Dokumente geben, die zu ändern sind.
Die zugrundeliegende Tabelle sieht folgendermaßen aus:
CREATE TABLE [dbo].[d3_mapping](
[Kunde_alt] [varchar](50) NULL,
[Kunde_neu] [varchar](50) NULL,
[status] [varchar](20) NULL
)
Log-Augabe
==========
Die Log-Ausgaben wurden gekürzt. Es sollte hier aber klar sein was dabei rauskommt.
2019.01.24 12:13:58 INFO. *********************************************
2019.01.24 12:13:58 INFO. * DMG_gesch_id_wechsel.jpl *
2019.01.24 12:13:58 INFO. * calb/d.velop AG *
2019.01.24 12:13:58 INFO. *********************************************
2019.01.24 12:13:58 INFO. * 0.1 calb d.AG/PS 2019.01.23 Initialversion
2019.01.24 12:13:58 INFO. * db_tabelle : d3_mapping
2019.01.24 12:13:58 INFO. * spalte_alter_wert : Kunde_alt
2019.01.24 12:13:58 INFO. * spalte_neuer_wert : Kunde_neu
2019.01.24 12:13:58 INFO. * spalte_status : status
2019.01.24 12:13:58 INFO. * liste_dokuarten : AGSP,DMY,DKOR,DRECH,DVER,DKRE,DAGES,DGS,AAUF,DAB,DVPM,DFUEK,DESDO,DARTE,DLIEF,DVORK,DREKL,DGEAK
2019.01.24 12:13:58 INFO. * zu_aenderndes_ddf : 6
2019.01.24 12:13:58 INFO. * DEBUG : 1
2019.01.24 12:13:58 INFO. *********************************************
2019.01.24 12:13:59 INFO. Es wurden 27 Treffer gefunden.
2019.01.24 12:13:59 DEBUG Dokuarten 'AGSP','DMY','DKOR','DRECH','DVER','DKRE','DAGES','DGS','AAUF','DAB','DVPM','DFUEK','DESDO','DARTE','DLIEF','DVORK','DREKL','DGEAK'
2019.01.24 12:13:59 INFO. *******************
2019.01.24 12:13:59 INFO. 1: Alter Wert: 101800 | Neuer Wert: 37474
2019.01.24 12:13:59 INFO. 1: Suche zu ändernde Dokumente ...
2019.01.24 12:13:59 INFO. 1: Es wurden 2723 zu ändernde Dokumente gefunden.
2019.01.24 12:13:59 INFO. 1: ******************************************
2019.01.24 12:13:59 INFO. 1: bearbeite DokuID P003939873 ...
2019.01.24 12:13:59 WARN. 1 / 1: hier findet jetzt keine Dokumentänderung statt. :-(
2019.01.24 12:13:59 INFO. 1 / 1: DokuID P003939873 erfolgreich aktualisiert.
2019.01.24 12:13:59 INFO. 1: ==========================================
2019.01.24 12:13:59 INFO. 1: bearbeite DokuID P003939874 ...
2019.01.24 12:13:59 WARN. 1 / 2: hier findet jetzt keine Dokumentänderung statt. :-(
2019.01.24 12:13:59 INFO. 1 / 2: DokuID P003939874 erfolgreich aktualisiert.
2019.01.24 12:13:59 INFO. 1: ==========================================
2019.01.24 12:13:59 INFO. 1: bearbeite DokuID P003939875 ...
2019.01.24 12:13:59 WARN. 1 / 3: hier findet jetzt keine Dokumentänderung statt. :-(
2019.01.24 12:13:59 INFO. 1 / 3: DokuID P003939875 erfolgreich aktualisiert.
2019.01.24 12:13:59 INFO. 1: ==========================================
2019.01.24 12:13:59 INFO. 1: bearbeite DokuID P003939876 ...
2019.01.24 12:13:59 WARN. 1 / 4: hier findet jetzt keine Dokumentänderung statt. :-(
2019.01.24 12:13:59 INFO. 1 / 4: DokuID P003939876 erfolgreich aktualisiert.
2019.01.24 12:13:59 INFO. 1: ==========================================
[...]
2019.01.24 12:15:11 INFO. *********************************************
2019.01.24 12:15:11 INFO. 2: Alter Wert: 101801 | Neuer Wert: 37475
2019.01.24 12:15:11 INFO. 2: Suche zu ändernde Dokumente ...
2019.01.24 12:15:11 INFO. 2: Es wurden 0 zu ändernde Dokumente gefunden.
2019.01.24 12:15:11 INFO. 2: ******************************************
2019.01.24 12:15:11 INFO. *********************************************
2019.01.24 12:15:11 INFO. 3: Alter Wert: 101802 | Neuer Wert: 37476
2019.01.24 12:15:11 INFO. 3: Suche zu ändernde Dokumente ...
2019.01.24 12:15:11 INFO. 3: Es wurden 0 zu ändernde Dokumente gefunden.
2019.01.24 12:15:11 INFO. 3: ******************************************
2019.01.24 12:15:11 INFO. *********************************************
2019.01.24 12:15:11 INFO. 4: Alter Wert: 101803 | Neuer Wert: 37477
2019.01.24 12:15:11 INFO. 4: Suche zu ändernde Dokumente ...
2019.01.24 12:15:11 INFO. 4: Es wurden 3 zu ändernde Dokumente gefunden.
2019.01.24 12:15:11 INFO. 4: ******************************************
2019.01.24 12:15:11 INFO. 4: bearbeite DokuID P003800366 ...
2019.01.24 12:15:11 WARN. 4 / 1: hier findet jetzt keine Dokumentänderung statt. :-(
2019.01.24 12:15:11 INFO. 4 / 1: DokuID P003800366 erfolgreich aktualisiert.
2019.01.24 12:15:11 INFO. 4: ==========================================
2019.01.24 12:15:11 INFO. 4: bearbeite DokuID P003800369 ...
2019.01.24 12:15:11 WARN. 4 / 2: hier findet jetzt keine Dokumentänderung statt. :-(
2019.01.24 12:15:11 INFO. 4 / 2: DokuID P003800369 erfolgreich aktualisiert.
2019.01.24 12:15:11 INFO. 4: ==========================================
2019.01.24 12:15:11 INFO. 4: bearbeite DokuID P003800370 ...
2019.01.24 12:15:11 WARN. 4 / 3: hier findet jetzt keine Dokumentänderung statt. :-(
2019.01.24 12:15:11 INFO. 4 / 3: DokuID P003800370 erfolgreich aktualisiert.
2019.01.24 12:15:11 INFO. 4: ==========================================
[...]
2019.01.24 12:15:43 INFO. *********************************************
2019.01.24 12:15:43 INFO. Bearbeitung abgeschlossen, DMG_gesch_id_wechsel.jpl beendet sich ...
2019.01.24 12:15:43 INFO. *********************************************