diff --git a/g.rau/30_hooks.groovy b/g.rau/30_hooks.groovy index 7a65095..a0715c8 100644 --- a/g.rau/30_hooks.groovy +++ b/g.rau/30_hooks.groovy @@ -34,9 +34,9 @@ public class D3Hooks @Entrypoint( entrypoint = "hook_insert_exit_20" ) public int insertExit_20( D3Interface d3, Document doc, String fileDestination, int importOk, User user, DocumentType docType ) { - def repo_id = "a9768552-0f99-5876-a73e-f2865b09a657"; - def baseUri = "https://d3t-app.rau.rau-pforzheim.de"; - def authUsr = "VlEdhy+t56IhmlcZ45YlTOHwYa82cPd3LxakovVcJySqe+n5fzQCey+/FQ+KVGoC58z74l5qUwfQy8nXtZXQk4WVf9lO1n3wG4pgbOhjiZc=&_z_A0V5ayCRSfawhq6CylCK5wlpIpFAdRduIm5inJ1V3HmqUmSCVXfoK4GvUqlFS8C1F6hucJi-EzDrl-UqJkiCzhHRpw6ce"; + def repo_id = "2e0f1447-d775-51aa-8593-0e0a5d9662aa"; + def baseUri = "https://d3ecm.rau.rau-pforzheim.de"; + def authUsr = "Zyu0W+L0fb6HF0sxPRyPdETFQFBCTOBLb1KcZfli2Sfeepce3TAmYQ22Qq1upRpNAsZou2njb9rkV4c0MRzMdwhPMwEcQCgDWo/VDxsOLkk=&_z_A0V5ayCQR0EAw9MiR-iA1MQAZsBKD5iT_eZeqUR-mqT2T-xMwoBzOA2BvbwjxQEXwJoiuAEGbrxTzJRFYMTVwhHGjwW-p"; //xlog( d3, 2, "repo_id " + repo_id ); //xlog( d3, 2, "baseUri " + baseUri ); @@ -46,7 +46,7 @@ public class D3Hooks def username = getUserIdpId( d3, "D3-User", repo_id, baseUri, authUsr ); - xlog( d3, 2, "username " + username ); + //xlog( d3, 2, "username " + username ); empfaenger.push( username ); @@ -62,7 +62,8 @@ public class D3Hooks { doc.setStatus( "Freigabe" ); - if ( isRepoIdInDocType( d3, docType.id, 59 ) ) // Kundenstammdaten + + if ( isRepoIdInDocType( d3, docType.id, 51 ) ) // Kundenstammdaten { if ( doc.field[ 6 ] ) { @@ -142,38 +143,35 @@ public class D3Hooks } - - - - - /////////////////////////// - // eingefügt von CALB/d.velop AG / 2024.06.11 / Versionierung von Fertigungsaufträgen + // eingefügt von CALB/d.velop AG / 2024.06.12 / Setzen des Mandanten bei SAP-Dokumenten (Mandant = 200) - if ( docType.id == "DFAUF" ) + if ( ( isRepoIdInDocType( d3, docType.id, 48 ) ) && ( isRepoIdInDocType( d3, docType.id, 1 ) ) ) // Mandant / Buchungskreis ist in der Dokumentart enthalten { - if ( doc.field[ 16 ] ) + if ( doc.field[ 39 ] == "200" ) { - def sqlQuery = "select doku_id from firmen_spezifisch where kue_dokuart = 'DFAUF' and dok_dat_feld_16 = '" + doc.field[ 16 ] + "'"; - - def treffer = d3.sql.executeAndGet( (String) sqlQuery ); - - if ( treffer.size() > 0 ) + if ( doc.field[ 1 ] ) { - sqlQuery = "select zeich_nr, var_nr from phys_datei where doku_id = '" + treffer[ 0 ].doku_id + "'"; - treffer = d3.sql.executeAndGet( (String) sqlQuery ); - - if ( treffer.size() > 0 ) + if ( doc.field[ 1 ].indexOf( "|" ) > 0 ) { - doc.number = treffer[ 0 ].zeich_nr; - //doc.docField( "var_nr", treffer[ 0 ].var_nr ); + // wird weiter unten behandelt + } + else + { + def sqlQuery = "SELECT mandant_name FROM [D3ServiceT].[dbo].[dv_mandant] where mandant_nr = '" + doc.field[ 1 ] + "'"; + + def sql = groovy.sql.Sql.newInstance( "jdbc:sqlserver://d3sql;databaseName=D3ServiceT", 'd3DBAdminT', 'Dvelop1!', 'com.microsoft.sqlserver.jdbc.SQLServerDriver' ); + + def resultRows = sql.rows( sqlQuery ); + + doc.field[ 39 ] = resultRows[ 0 ].mandant_name; } } } } - // Einfügung Ende / Versionierung von Fertigungsaufträgen + // Einfügung Ende / Setzen des Mandanten bei SAP-Dokumenten (Mandant = 200) /////////////////////////// if ( isRepoIdInDocType( d3, docType.id, 31 ) ) // Materialstammdaten, ID 31 => Materialnummer @@ -312,51 +310,67 @@ public class D3Hooks } @Entrypoint( entrypoint = "hook_upd_attrib_entry_20" ) - public int hookUpdAttribEntry20(D3Interface d3, Document doc, User user, DocumentType docType, DocumentType docTypeNew) { + public int hookUpdAttribEntry20(D3Interface d3, Document doc, User user, DocumentType docType, DocumentType docTypeNew) + { d3.log.error("START | hookUpdAttribEntry20") // temporäres Objekt holen, um zu prüfen, das sich Eigenschaften geändert haben def oldDocAttributes = d3.archive.getDocument(doc.id()); - - /////////////////////////// - // eingefügt von CALB/d.velop AG / 2024.06.12 / Setzen des Mandanten bei SAP-Dokumenten (Mandant = 200) - - if ( ( isRepoIdInDocType( d3, docType.id, 48 ) ) && ( isRepoIdInDocType( d3, docType.id, 1 ) ) ) // Mandant / Buchungskreis ist in der Dokumentart enthalten - { - if ( doc.field[ 39 ] == "200" ) - { - if ( doc.field[ 1 ] ) - { - if ( doc.field[ 1 ].indexOf( "|" ) > 0 ) - { - // wird weiter unten behandelt - } - else - { - def sqlQuery = "SELECT mandant_name FROM [D3ServiceT].[dbo].[dv_mandant] where mandant_nr = '" + doc.field[ 1 ] + "'"; - - def sql = groovy.sql.Sql.newInstance( "jdbc:sqlserver://d3sql;databaseName=D3ServiceT", 'd3DBAdminT', 'Dvelop1!', 'com.microsoft.sqlserver.jdbc.SQLServerDriver' ); - - def resultRows = sql.rows( sqlQuery ); - - doc.field[ 39 ] = resultRows[ 0 ].mandant_name; - } - } - - } - } - - // Einfügung Ende / Setzen des Mandanten bei SAP-Dokumenten (Mandant = 200) - /////////////////////////// - + def ergebnis = hook_validate_update_entry_10( d3, user, docTypeNew, doc, "" ); d3.log.error("ENDE | hookUpdAttribEntry20") return 0; } - - + @Entrypoint( entrypoint = "hook_insert_entry_10" ) + public int hookInsertEntry10(D3Interface d3, User user, DocumentType docType, Document doc) + { + + d3.log.info("START | hookInsertEntry10 "); + + /////////////////////////// + // eingefügt von CALB/d.velop AG / 2024.06.11 / Versionierung von Fertigungsaufträgen + + + if ( ( docType.id == "DFAUF" ) || ( docType.id == "DPEIN" ) || ( docType.id == "DMPRO" ) || ( docType.id == "DPZEU" ) ) + { + + if ( doc.field[ 16 ] ) + { + def sqlQuery = "select doku_id from firmen_spezifisch where kue_dokuart = '" + docType.id + "' and dok_dat_feld_16 = '" + doc.field[ 16 ] + "'"; + + def treffer = d3.sql.executeAndGet( (String) sqlQuery ); + + if ( treffer.size() > 1 ) + { + d3.log.error( "Anzahl Treffer: " + treffer.size() + " => es gibt mehr als ein Dokument fuer Auftragsnummer " + doc.field[ 16 ] + " in der Dokumentart " + docType.id + " !" ); + return -120; + } + + if ( treffer.size() == 1 ) + { + + sqlQuery = "select zeich_nr, var_nr from phys_datei where doku_id = '" + treffer[ 0 ].doku_id + "'"; + treffer = d3.sql.executeAndGet( (String) sqlQuery ); + + if ( treffer.size() > 0 ) + { + d3.log.info( "Fertigungsauftrag gefunden, setze Dokumentnummer " + doc.number + " bei Auftragsnummer " + doc.field[ 16 ] ); + doc.number = treffer[ 0 ].zeich_nr; + } + } + } + } + + // Einfügung Ende / Versionierung von Fertigungsaufträgen + /////////////////////////// + + + + d3.log.info("ENDE | hookInsertEntry10 "); + return 0; + } public String getUserIdpId( D3Interface d3, String UserName, String repo_id, String baseUri, String authUserApiKey ) {