Files
d.velop/Assmann/hook_assmann.jpl
2024-06-17 16:49:41 +02:00

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