E-Mail Adressen aus Belegzuordnung

Rolf Schmid

Neues Mitglied
Hallo zusammen,

ich muss einen automatischen Belegversand für Auftragsbestätigungen in einem externen .NET Programm machen. Der Kunde arbeitet mit der Belegzuordnung und hat dort sowohl Ansprechpartner als auch freie E-Mailadressen hinterlegt.
Kennte jemand eine Funktion in den Sage-DLLs, die mit die "An", "CC" und "BCC" E-Mailadressen für eine bestimmte Adresse und Belegart zurückgibt?

Viele Grüße
Rolf Schmid
 
Hallo Rolf,
ich hatte vor 4 Wochen eine ähnliche Anforderung, bei der VK-Belegerfassung gibt es 2 Felder A0AnsprechpartnerHandle und RechnungAnsprechpartnerHandle.
In diesen Feldern wird automatisch die Nummer des Ansprechpartners der in der Belegzuordnung des Kundenstamms zugeordnet ist vorgesetzt und kann nach Bedarf noch geändert werden.

Unsere Anforderung war:
1. Anzeige der bei den Ansprechpartnern hinterlegten Email-Adressen im Formular und
2. Andruck der Adressen bei Auftragsbestätigung und Rechnung.


(2) habe ich durch 2 eigene Felder in der Tabelle tKHKPrintBelegKopfVK gelöst und einer DCMPrintVKBelegKopf die die Tabelle mit Daten füllt.

Hier der Quellcode, darin erkennst Du das SQL Statement um die Email-Adressen:

C#:
                    case DcmDefinitionManager.DcmListId.PrintVKBelegKopf:

                        Sagede.OfficeLine.Wawi.PrintEngine.DcmContextBelegdruck kopfContext = (Sagede.OfficeLine.Wawi.PrintEngine.DcmContextBelegdruck)context;
                        beleg = kopfContext.Beleg;
                        mandant = kopfContext.Mandant;
                        sqry = "SELECT (SELECT TOP 1 Email FROM KHKAnsprechpartner WHERE Mandant = 1 AND Nummer = @AB) as AB, " +
                                      "( SELECT TOP 1 Email FROM KHKAnsprechpartner WHERE Mandant = 1 AND Nummer = @RE) as RE";
                        command = mandant.MainDevice.GenericConnection.CreateSqlStringCommand(sqry);
                        command.AppendInParameter("AB", typeof(Int32), beleg.A0AnsprechpartnerHandle);
                        command.AppendInParameter("RE", typeof(Int32), beleg.RechnungAnsprechpartnerHandle);

                        using (IGenericReader reader = command.ExecuteReader())
                        {
                            while (reader.Read())
                            {
                                if (kopfContext.IstInfoDruck)
                                {
                                    sqry = "UPDATE tKHKPrintBelegKopfVK SET mgsREan = @RE, mgsABan=@AB WHERE InfoDruckID=@InfoConnID";
                                } else
                                {
                                    sqry = "UPDATE tKHKPrintBelegKopfVK SET mgsREan = @RE, mgsABan=@AB WHERE ConnID=@ConnID";
                                }

                                command = mandant.MainDevice.GenericConnection.CreateSqlStringCommand(sqry);
                                command.AppendInParameter("ConnId", typeof(Int32), kopfContext.ConnectionID);
                                command.AppendInParameter("InfoConnId", typeof(Int32), kopfContext.InfodruckHandle);
                                command.AppendInParameter("AB", typeof(String), reader.GetString("AB"));
                                command.AppendInParameter("RE", typeof(String), reader.GetString("RE"));
                                command.ExecuteNonQuery();
                            }
                            reader.Close();
                        }
                        break;

Vielleicht hilft die der Ansatz weiter. Ich hatte zuerst auch die in Kundenstamm - Ansprechpartner - Belegzuordnung hinterlegten Adressen direkt abgefragt. Das Problem ist jedoch, dass man in der Belegerfassung den "Ansprechpartner" nach Bedarf ändern kann.
Das macht ja auch Sinn, wenn z. B. mal Mitarbeiter A und mal Mitarbeiter B eine Bestellung tätigen und jeweils individuell eine AB haben möchten.

Daher o.g. Ansatz.

Gruss Mark
 
Hallo Mark,

das mit dem A0AnsprechpartnerHandle ist ein guter Hinweis, hatte ich noch gar nicht auf dem Radar. Danke dafür.
Leider greift das etwas zu kurz. ich kann in der Belegzuordnung ja weitere Ansprechpartner anhaken und auch "freie" E-Mailadressen hinterlegen. Ebenso für das CC und BCC. Und wen kein Ansprechpartner zugeordnet ist, wird die E-Mailadresse aus dem Kundenstamm genommen.
Im Grunde brauche ich die drei E-Mailadressfelder so, wie wenn die Mail aus der Druckvorschau gesendet würde.

Gruß
Rolf
 
Hallo Rolf,

dann musst du mal in den Tabellen
- KHKAdressenBelegartenEMailZuordnung
- KHKAdressenBelegartenKommunikation


Hier sind manuell eingetragene Adressen zu finden:
select * FROM KHKAdressenBelegartenKommunikation WHERE Adresse = ?

Hier ist die Email eines Ansprechpartners
SELECT A.EMail, z.* FROM KHKAdressenBelegartenEMailZuordnung Z INNER JOIN KHKAnsprechpartner A ON Z.Ansprechpartner=A.Nummer AND Z.Mandant=A.Mandant WHERE Z.Adresse=? and Z.TypBelegArt = 4002

Da musst Du Dich einfach ein wenig durchkämpfen.

Gruss Mark
 
Hallo Mark,

ich dachte ich könnte mir den Aufwand sparen. Es gibt ja sicherlich irgendwo tief in den Objekten eine fertige Funktion.
Muss dann halt mit dem Profiler die SQL-Statements abfangen und das nachprogrammieren.

Trotzdem Vielen Dank.

Gruß
Rolf
 
Zurück
Oben