430 lines
11 KiB
Plaintext
430 lines
11 KiB
Plaintext
##########################
|
|
## hook_insert_entry_10 ##
|
|
##########################
|
|
|
|
proc hook_insert_entry_10_ass_1(p_user,P_dokuart)
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
if dok_dat_feld[26](1,1)=="~"
|
|
{
|
|
vars Anzahl=api_function("string_split", dok_dat_feld[26], "~")
|
|
|
|
dok_dat_feld[26]=api_splitted_string[2]
|
|
dok_dat_feld[81]=api_splitted_string[3]
|
|
dok_dat_feld[14]=api_splitted_string[4]
|
|
dok_dat_feld[9]=api_splitted_string[5]
|
|
dok_dat_feld[10]=api_splitted_string[6]
|
|
}
|
|
|
|
// nur bei relevanten Dokarten Metadaten aus ERP holen und nur wenn bisher noch nicht geholt
|
|
if ((P_dokuart == "ddab")||(P_dokuart == "ddls")||(P_dokuart == "ddre")||(P_dokuart == "ddgs"))&&(dok_dat_feld[1]=="")
|
|
{
|
|
// Konvertierung lange Vorgangsnummer in Einzelwerte
|
|
// 2 vg_lfd_nr
|
|
if dok_dat_feld[2] != ""
|
|
{
|
|
vars Anzahl=api_function("string_split", dok_dat_feld[2], "/")
|
|
// nur 2. Wert relevant, da Vorgangsnummer
|
|
if Anzahl > 1
|
|
{
|
|
//api_function("string_cut_leading_char", api_splitted_string[2], " ")
|
|
//dok_dat_feld[2]=api_converted_string
|
|
dok_dat_feld[2]=api_splitted_string[2]
|
|
}
|
|
}
|
|
|
|
// Ermittlung der Dokuart anhand ausgelesener Texte per DCOLD
|
|
// DB Connect herstellen
|
|
vars v_aenderungs_nr, v_belegdatum, v_kunden_ab_nr, v_kommission, v_debitor_nr, \
|
|
v_name1, v_strasse, v_plz_strasse, v_ort, v_land, v_auftragsart, \
|
|
v_auftragsart_bez, v_bestell_datum, v_erfassungs_datum, \
|
|
v_sachbearbeiter, v_vertreter_nr, v_vertreter, v_beleg_nr, v_ausgabeart, v_kopftext
|
|
vars aus_vorhanden
|
|
|
|
DBMS ALIAS \
|
|
v_aenderungs_nr, v_belegdatum, v_kunden_ab_nr, v_kommission, v_debitor_nr, \
|
|
v_name1, v_strasse, v_plz_strasse, v_ort, v_land, v_auftragsart, \
|
|
v_auftragsart_bez, v_bestell_datum, v_erfassungs_datum, \
|
|
v_sachbearbeiter, v_vertreter_nr, v_vertreter, v_beleg_nr, v_ausgabeart, v_kopftext
|
|
|
|
DBMS SQL \
|
|
SELECT aenderungs_nr, belegdatum, kunden_ab_nr, kommission, debitor_nr, \
|
|
name1, strasse, plz_strasse, ort, land, auftragsart, \
|
|
auftragsart_bez, bestell_datum, erfassungs_datum, \
|
|
sachbearbeiter, vertreter_nr, vertreter_name, beleg_nr, ausgabeart, kopftext \
|
|
FROM as_archiv_info \
|
|
WHERE auftrags_nr = :dok_dat_feld[2] and (status = 0 or status = 98)
|
|
|
|
aus_vorhanden = @dmrowcount
|
|
DBMS ALIAS
|
|
|
|
if (aus_vorhanden > 0)
|
|
{
|
|
// den Attributen des neuen Dokuments zuweisen
|
|
dok_dat_feld[12] = v_aenderungs_nr
|
|
dok_dat_feld[51] = v_belegdatum
|
|
dok_dat_feld[13] = v_kunden_ab_nr
|
|
dok_dat_feld_60[1] = v_kommission
|
|
dok_dat_feld[1] = v_debitor_nr
|
|
dok_dat_feld[4] = v_name1
|
|
dok_dat_feld[14] = v_strasse
|
|
dok_dat_feld[9] = v_plz_strasse
|
|
dok_dat_feld[10] = v_ort
|
|
dok_dat_feld[15] = v_land
|
|
dok_dat_feld[80] = v_auftragsart
|
|
dok_dat_feld[16] = v_auftragsart_bez
|
|
dok_dat_feld[52] = v_bestell_datum
|
|
dok_dat_feld[50] = v_erfassungs_datum
|
|
dok_dat_feld[17] = v_sachbearbeiter
|
|
dok_dat_feld[18] = v_vertreter_nr
|
|
dok_dat_feld[19] = v_vertreter
|
|
dok_dat_feld[28] = v_ausgabeart
|
|
if v_kopftext!=""
|
|
{
|
|
vars Anzahl=api_function("string_split", v_kopftext,"")
|
|
vars i
|
|
for i=1 while i <=Anzahl step 1
|
|
{
|
|
dok_dat_feld_63[i]=api_splitted_string[i]
|
|
}
|
|
}
|
|
if (P_dokuart == "ddls")
|
|
{
|
|
// wenn LS, dann Belegnummmer auf LS-Nr
|
|
dok_dat_feld[20] = v_beleg_nr
|
|
}
|
|
if ((P_dokuart == "ddre")||(P_dokuart == "ddgs"))
|
|
{
|
|
// wenn RE oder GS, dann Belegnummmer auf RG-Nr
|
|
dok_dat_feld[21] = v_beleg_nr
|
|
}
|
|
DBMS SQL UPDATE as_archiv_info \
|
|
SET status = status + 200 \
|
|
WHERE auftrags_nr = :dok_dat_feld[2] and status <> 98
|
|
}
|
|
else
|
|
{
|
|
msg emsg "Import abgelehnt :dok_dat_feld[2], keine Daten im Status 0"
|
|
DBMS SQL UPDATE as_archiv_info \
|
|
SET status = status + 200 \
|
|
WHERE auftrags_nr = :dok_dat_feld[2] AND status <> 98 AND status < 200
|
|
return -4713
|
|
}
|
|
|
|
//ermitteln, ob Beleg mit identischer Aenderungsnummer schon im d.3 ist und dann Import ablehnen
|
|
vars beleg_vorhanden, v_doku_temp
|
|
DBMS ALIAS v_doku_temp
|
|
DBMS SQL SELECT doku_id \
|
|
FROM firmen_spezifisch \
|
|
WHERE kue_dokuart = :+P_dokuart \
|
|
and dok_dat_feld_2 = :+dok_dat_feld[2] \
|
|
and dok_dat_feld_12 = :+dok_dat_feld[12]
|
|
beleg_vorhanden = @dmrowcount
|
|
DBMS ALIAS
|
|
|
|
if (beleg_vorhanden > 0)
|
|
{
|
|
msg emsg "Import abgelehnt :beleg_vorhanden"
|
|
return -4712
|
|
}
|
|
}
|
|
|
|
//Aenderungs-Index bei Teilezeichnung setzen
|
|
if (P_dokuart == "dtlz" && dok_dat_feld[23]=="")
|
|
{
|
|
dok_dat_feld[23]= 1
|
|
}
|
|
}
|
|
|
|
proc hook_search_entry_10_ass(p_user,P_dokuart)
|
|
{
|
|
|
|
if ( ( P_dokuart == "itwar" ) || ( P_dokuart == "ittel" ) || ( P_dokuart == "ittat" ) || ( P_dokuart == "itliz" ) || \
|
|
( P_dokuart == "itlfs" ) || ( P_dokuart == "iter" ) || ( P_dokuart == "itauf" ) )
|
|
{
|
|
vars Anzahl=api_function("string_split", dok_dat_feld[26], "~")
|
|
dok_dat_feld[26]=api_splitted_string[1]
|
|
//dok_dat_feld[81]=api_splitted_string[3]
|
|
//dok_dat_feld[14]=api_splitted_string[4]
|
|
//dok_dat_feld[9]=api_splitted_string[5]
|
|
//dok_dat_feld[10]=api_splitted_string[6]
|
|
//msg emsg ("bin in search entry und splitte")
|
|
}
|
|
}
|
|
|
|
proc hook_val_imp_entry_10_ass(p_user,P_dokuart)
|
|
{
|
|
//call xlog( 4, "dok_dat_feld[26] " ## dok_dat_feld[26] )
|
|
if ( ( P_dokuart == "itan" ) || ( P_dokuart == "itauf" ) || ( P_dokuart == "iter" ) || ( P_dokuart == "itlfs" ) \
|
|
|| ( P_dokuart == "itliz" ) || ( P_dokuart == "ittat" ) || ( P_dokuart == "ittel" ) || ( P_dokuart == "itwar" ) )
|
|
{
|
|
vars ergebnis
|
|
vars pos_name = 2
|
|
vars pos_strasse = 4
|
|
vars pos_plz = 5
|
|
vars pos_ort = 6
|
|
|
|
ergebnis = api_function( "string_get_position", dok_dat_feld[26], "~" )
|
|
|
|
if ( ergebnis > 0 )
|
|
{
|
|
if ( dok_dat_feld[26](1,1) != "~" )
|
|
{
|
|
pos_name = 1
|
|
pos_strasse = 3
|
|
pos_plz = 4
|
|
pos_ort = 5
|
|
}
|
|
|
|
|
|
vars Anzahl=api_function("string_split", dok_dat_feld[26], "~")
|
|
|
|
dok_dat_feld[26] = api_splitted_string[ pos_name ]
|
|
//dok_dat_feld[81] = api_splitted_string[ 3 ]
|
|
dok_dat_feld[14] = api_splitted_string[ pos_strasse ]
|
|
dok_dat_feld[9] = api_splitted_string[ pos_plz ]
|
|
dok_dat_feld[10] = api_splitted_string[ pos_ort ]
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
#################
|
|
## hook_insert_exit_20 ##
|
|
#################
|
|
|
|
proc hook_insert_exit_20_ass(p_doc_id, p_file_destination, p_import_ok, p_user, P_dokuart)
|
|
{
|
|
//msg emsg"Bin im Update fr :dok_dat_feld[2] :p_doc_id, :p_file_destination, :p_import_ok, :p_user, :P_dokuart"
|
|
if ((P_dokuart == "ddab")||(P_dokuart == "ddls")||(P_dokuart == "ddre")||(P_dokuart == "ddgs"))
|
|
{
|
|
DBMS SQL Update as_archiv_info \
|
|
set status = 2 \
|
|
WHERE auftrags_nr = :dok_dat_feld[2] and status = 0
|
|
//msg emsg"Bin im Update fr :dok_dat_feld[2]"
|
|
|
|
// Transferstatus
|
|
DBMS SQL Update as_archiv_info \
|
|
set transferstatus = 1 \
|
|
WHERE auftrags_nr = :dok_dat_feld[2]
|
|
}
|
|
}
|
|
|
|
#################
|
|
## hook_new_version ##
|
|
#################
|
|
|
|
proc hook_new_version_entry_10_ass(p_doc_id, p_file, p_import, p_user,P_dokuart)
|
|
{
|
|
//Aenderungs-Index bei Teilezeichnung hochsetzen
|
|
if (P_dokuart == "dtlz")
|
|
{
|
|
vars hoechstwert, ver_vorhanden
|
|
DBMS ALIAS hoechstwert
|
|
DBMS SQL select max (dok_dat_feld_23) from firmen_spezifisch \
|
|
where doku_id = :+p_doc_id
|
|
ver_vorhanden = @dmrowcount
|
|
DBMS ALIAS
|
|
|
|
if (ver_vorhanden > 0)
|
|
{
|
|
dok_dat_feld[23]=hoechstwert + 1
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// eingefügt von calb/d.OS am 2013.02.04
|
|
// Import von Konstruktionszeichnungen aus IMOS
|
|
vars bauteilart, materialart, orientierung, programm, ppsnummer, barcode, anzahl_treffer, info1, info2, info3, info4, anschlag, ergebnis
|
|
|
|
if ( P_dokuart == "dkoak" )
|
|
{
|
|
|
|
call xlog( 5, "DDF 32: " ## dok_dat_feld[ 32 ] )
|
|
ergebnis = api_function( "string_split", dok_dat_feld[ 32 ], "--" )
|
|
dok_dat_feld[ 32 ] = api_splitted_string[ 1 ]
|
|
|
|
|
|
// Angepaßt A.Brink 04.03.2024
|
|
// Abfrage der IMOS-DB-Prod Datenbank (Für die Übernahme der Konstruktionszeichnungen)
|
|
|
|
// dbms declare ta_session connection for user 'ASSMANN\\DB-connect-IMOS-D3' password 'QK+NE}qj=)q=' datasource 'IMOS-DB'
|
|
dbms declare ta_session connection for user 'sa' password 'd3db49324' datasource 'IMOS-DB'
|
|
|
|
// orientierung ANSCHLAG
|
|
dbms with connection ta_session alias bauteilart, materialart, programm, ppsnummer, barcode, info2, info3, info4, anschlag
|
|
dbms with connection ta_session sql select PARTTYPE, MATCAT, PROGRAMM, INFO1, BARCODE, INFO2, INFO3, INFO4, ANSCHLAG from IDBEXT where BARCODE = :+dok_dat_feld[ 32 ]
|
|
|
|
anzahl_treffer = @dmrowcount
|
|
dbms with connection ta_session alias
|
|
dbms close connection ta_session
|
|
|
|
|
|
|
|
if ( anzahl_treffer == 0 )
|
|
{
|
|
call xlog( 2, "Achtung: Keine Treffer gefunden! Import wurde verweigert!" )
|
|
return -10000
|
|
}
|
|
else
|
|
{
|
|
ergebnis = api_function( "string_cut_leading_char", anschlag, " " )
|
|
|
|
if ( ergebnis >= 0 )
|
|
{
|
|
anschlag = api_converted_string
|
|
}
|
|
else
|
|
{
|
|
call xlog( 2, "Achtung: Fehler beim Entfernen von Leerzeichen im Attribut 'Anschlag'!" )
|
|
return -10001
|
|
}
|
|
|
|
if ( bauteilart == "1" )
|
|
{
|
|
dok_dat_feld[ 8 ] = "Seiten"
|
|
}
|
|
|
|
if ( bauteilart == "3" )
|
|
{
|
|
dok_dat_feld[ 8 ] = "Einlegeböden"
|
|
}
|
|
|
|
if ( bauteilart == "4" )
|
|
{
|
|
dok_dat_feld[ 8 ] = "Oberböden"
|
|
}
|
|
|
|
if ( bauteilart == "5" )
|
|
{
|
|
dok_dat_feld[ 8 ] = "Unterböden"
|
|
}
|
|
|
|
if ( bauteilart == "6" )
|
|
{
|
|
dok_dat_feld[ 8 ] = "Rückwände"
|
|
}
|
|
|
|
if ( ( bauteilart == "8" ) || ( bauteilart == "9" ) || ( bauteilart == "10" ) )
|
|
{
|
|
dok_dat_feld[ 8 ] = "Türen"
|
|
}
|
|
|
|
if ( bauteilart == "13" )
|
|
{
|
|
dok_dat_feld[ 8 ] = "Konstruktionsböden"
|
|
}
|
|
|
|
if ( bauteilart == "14" )
|
|
{
|
|
dok_dat_feld[ 8 ] = "Mittelseiten"
|
|
}
|
|
|
|
if ( bauteilart == "23" )
|
|
{
|
|
dok_dat_feld[ 8 ] = "Blenden"
|
|
}
|
|
|
|
if ( bauteilart == "30" )
|
|
{
|
|
dok_dat_feld[ 8 ] = "Abdeckplatten"
|
|
}
|
|
|
|
if ( bauteilart == "21" )
|
|
{
|
|
dok_dat_feld[ 8 ] = "Schubkastenboden"
|
|
}
|
|
|
|
|
|
//dok_dat_feld[ 8 ] = bauteilart
|
|
if ( materialart != "" )
|
|
{
|
|
dok_dat_feld[ 6 ] = materialart
|
|
}
|
|
|
|
if ( orientierung != "" )
|
|
{
|
|
dok_dat_feld[ 5 ] = orientierung
|
|
}
|
|
|
|
if ( programm != "" )
|
|
{
|
|
dok_dat_feld[ 2 ] = programm
|
|
}
|
|
|
|
if ( ppsnummer != "" )
|
|
{
|
|
dok_dat_feld[ 7 ] = ppsnummer
|
|
}
|
|
|
|
if ( info2 != "" )
|
|
{
|
|
dok_dat_feld[ 37 ] = info2
|
|
}
|
|
|
|
if ( info3 != "" )
|
|
{
|
|
dok_dat_feld[ 38 ] = info3
|
|
}
|
|
|
|
if ( info4 != "" )
|
|
{
|
|
dok_dat_feld[ 39 ] = info4
|
|
}
|
|
|
|
if ( anschlag != "" )
|
|
{
|
|
dok_dat_feld[ 40 ] = anschlag
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//dok_dat_feld[ 3 ] = barcode
|
|
}
|
|
|
|
call xlog(3, "Fertig mit Einlesen! PPS-Nummer: <:ppsnummer>" )
|
|
}
|
|
|
|
// Ende Einfügung calb/d.OS am 2013.02.04
|
|
}
|
|
########### repository hook ###############
|
|
|
|
proc GetLiefName( repos_id, user, dokuart, rowNo )
|
|
{
|
|
|
|
vars v_lfnm[5000], v_lfnr[5000], v_str[5000], v_plz[5000], v_ort[5000] , v_anzahl
|
|
DBMS ALIAS v_lfnm, v_lfnr, v_str, v_plz, v_ort
|
|
DBMS SQL SELECT distinct dok_dat_feld_26,dok_dat_feld_81, dok_dat_feld_14, dok_dat_feld_9, dok_dat_feld_10 \
|
|
FROM firmen_spezifisch where kue_dokuart in('itan', 'iter', 'itlfs', 'ittat', 'itauf', 'itliz', 'itwar', 'ittel') and dok_dat_feld_26 is not null \
|
|
ORDER BY dok_dat_feld_26
|
|
v_anzahl=@dmrowcount
|
|
DBMS ALIAS
|
|
//call xlog( 4, "GetLiefName: v_anzahl " ## v_anzahl )
|
|
if v_anzahl > 0
|
|
{
|
|
vars i, zusammengesetzt
|
|
for i = 1 while( i <= v_anzahl ) step 1
|
|
{
|
|
zusammengesetzt = v_lfnm[i] ## "~" ## v_lfnr[i]## "~" ## v_str[i]## "~" ## v_plz[i]## "~" ## v_ort[i]
|
|
//call xlog( 4, "GetLiefName: zusammengesetzt " ## zusammengesetzt )
|
|
//msg emsg "zus :zusammengesetzt"
|
|
d3server_value_char_allowed[i] = zusammengesetzt
|
|
d3server_repos_id_allowed[i] = repos_id
|
|
}
|
|
}
|
|
//return 0
|
|
}// end of GetLiefName
|
|
|
|
|
|
|
|
|
|
|