########################## ## 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