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





