DunningRun (LC.WpfInterfaces, Automatischer Mahnlauf)
Dient zur automatischen Ausführung eines Mahnlaufs.
Es kann zu fest bestimmten Tagen (am 10./20./30. oder jeden Montag, ...) ein Mahnlauf gestartet werden. Die Mahnungen werden in einem vordefinierten Ordner abgelegt oder auf Wunsch auch an die vorgesehene EMail-Adresse gesendet.
Es wird das Zusatzmodul "Offene Posten Verwaltung" benötigt!
Anforderungen
LC.WpfInterfaces ab Version 1.2020.0528.0
TaskCenter ab Version 4.70.0.0
Zusatzmodul "Offene Posten Verwaltung" - wird über TaskCenter-Lizenzschlüssel bereitgestellt
Schnellstart
LC.WpfInterfaces installieren (wenn nicht vorhanden) bzw. aktualisieren
Eigenes Layout für die Druckvorlage DunningTextSheet1.rpx erstellen (zB. XDunningTextSheet1.rpx) und im company\Reports-Ordner bereitstellen
Einmalig eine Mahnung manuell, mit die gewünschten Druckeinstellungen, drucken, damit diese für den Benutzer in der User-Ini gespeichert werden
Prüfen Sie, ob Sie bereits Mahntexte festgelegt haben - ohne Mahntexte kann die Mahnstufe nicht berechnet werden
XML-Konfigurationsdatei erstellen bzw. Vorlage kopieren und anpassen
Batch-Datei erstellen, die diese XML-Konfigurationsdatei als Parameter ausführt
Windows-Aufgabenplanung einrichten (zB. alle 7 Tage - oder 1x im Monat - je nach Bedarf)
Konfigurationsdatei
Aufbau
<?xml version="1.0" encoding="utf-8"?>
<DunningRun>
<DB>POLLEX</DB>
<USER>SYSADM</USER>
<PASSWORD>SYSADM</PASSWORD>
<LogLevel>Full</LogLevel>
<DunningLetterPrintLayout>X</DunningLetterPrintLayout>
<TargetPdfFolder>c:\POLLEX\Mahnungen</TargetPdfFolder>
<TargetPdfFilenamePattern>MAHNUNG_{CustomerNumber}.pdf</TargetPdfFilenamePattern>
<SendDunningMail>True</SendDunningMail>
<MailSuccessPdfFolder>c:\POLLEX\Mahnungen\Sent</MailSuccessPdfFolder>
<MailFailedPdfFolder>c:\POLLEX\Mahnungen\Failed</MailFailedPdfFolder>
<DunningMailBody>@GetTextModule("MAHN_MAILBODY")</DunningMailBody>
<DunningMailSubject>Mahnung vom {Today}</DunningMailSubject>
<CustomerNumberFrom></CustomerNumberFrom>
<CustomerNumberTo></CustomerNumberTo>
<AccountNumberFrom></AccountNumberFrom>
<AccountNumberTo></AccountNumberTo>
<OrgUnits></OrgUnits>
<TotalAmountGrossIncFrom></TotalAmountGrossIncFrom>
<TotalAmountGrossIncTo></TotalAmountGrossIncTo>
<IsTransferredToAccount></IsTransferredToAccount>
<IsInvoiceFinished></IsInvoiceFinished>
<SqlWhere></SqlWhere>
<Test>False</Test>
<SmtpServer>mail.mustermann.com</SmtpServer>
<SmtpUser>Benutzername</SmtpUser>
<SmtpPassword>Passwort</SmtpPassword>
<SmtpPortNumber></SmtpPortNumber>
<SmtpUseSSL>True</SmtpUseSSL>
<SenderEMail>dunning@mustermann.com</SenderEMail>
<BccEMail></BccEMail>
<ProtocolEMail>max@mustermann.com</ProtocolEMail>
<MailLevel>All</MailLevel>
<MailSubject></MailSubject>
<MailBody></MailBody>
<IsBodyHtml></IsBodyHtml>
</DunningRun>
Feldbeschreibung
Feld | Mögliche Werte | Beschreibung |
DB | Datenbankname für die Verbindung zur Datenbank | |
USER | Benutzername für die Verbindung zur Datenbank | |
PASSWORD | Passwort für die Verbindung zur Datenbank | |
LogLevel | Full, Detail, Info, Warning, Error | Detailgrad für die Protokollierung in der Log-Datei |
DunningLe tterPrintLa yout | Layout-Buchstabe für das Drucklayout (DunningTextSheet1.rpx) Wichtig!! Es muss immer ein eigenes Drucklayout angegeben und im company\Reports-Ordner bereitgestellt werden!! Die Druckeinstellungen werden über die USER-INI eingelesen. Das heißt, es muss einmalig eine Mahnung manuell gedruckt werden, mit den gewünschten Einstellungen für den DB-Benutzer, welcher dann für den Mahnlauf angemeldet wird. | |
TargetPdfF older | Ziel-Ordner, in dem die erstellten PDFs abgelegt werden | |
TargetPdfF ilenamePat tern | Vorlage, wie der Pdf-Dateiname auszusehen hat. Es können diverse Platzhalter sowie StringFunctions verwendet werden - Details siehe hier. | |
SendDunni ngMail | True, False | True = Zusätzlich zur Erstellung der PDFs wird eine EMail an den Fibu-EMail-Kontakt des Kunden bzw. an die eInvoice-Adresse geschickt False (Standard) = Es werden keine EMails gesendet |
MailSucces sPdfFolder | Pfad, wo die generierten PDF-Dateien verschoben werden, wenn die Mail erfolgreich versendet wurde | |
MailFailed PdfFolder | Pfad, wo die generierten PDF-Dateien verschoben werden, wenn die Mail nicht versendet werden konnte | |
DunningM ailBody | Mahnung vom {Today} | Text, der im EMail-Body an den Kunden gesendet wird. Es können diverse Platzhalter sowie StringFunctions verwendet werden - Details siehe hier. |
DunningM ailSubject | @GetTextModule ("MAHN_MAILB ODY") | Betreff für die Kunden-EMail. Es können diverse Platzhalter sowie StringFunctions verwendet werden - Details siehe hier. |
CustomerN umberFrom | Zahl (Kundennummer) | VON-Kundennummer - wenn angegeben, werden nur Rechnungen dieser Kundennummer selektiert |
CustomerN umberTo | Zahl (Kundennummer) | BIS-Kundennummer - wenn eine VON- sowie eine BIS-Kundennummer angegeben wurde, werden nur Rechnungen mit Kundennummern in diesem Bereich selektiert |
AccountNu mberFrom | Zahl (Kundennummer) | VON-FIBU-Nummer - wenn angegeben, werden nur Rechnungen dieser FIBU-Nummer selektiert |
AccountNu mberTo | Zahl (Kundennummer) | BIS-Kundennummer - wenn eine VON- sowie eine BIS-Kundennummer angegeben wurde, werden nur Rechnungen mit Kundennummern in diesem Bereich selektiert |
OrgUnits | 10 10;20;30 | Liste mit Nummern der organisatorischen Einheiten - wenn angegeben, werden nur Rechnungen dieser OEs selektiert |
TotalAmou ntGrossInc From | Zahl (Gesamt- Brutto-VK-Inkl) | VON-Betrag - wenn angegeben, werden nur Rechnungen mit dem Betrag größer/gleich selektiert |
TotalAmou ntGrossInc To | Zahl (Gesamt- Brutto-VK-Inkl) | BIS-Betrag - wenn angegeben, werden nur Rechnungen mit dem Betrag kleiner/gleich selektiert |
InvoiceDat eFrom | ||
InvoiceDat eTo | ||
PaymentD ateFrom | ||
PaymentD ateTo | ||
DueDateFr om | ||
DueDateTo | ||
IsTransferr edToAccou nt | True, False | True = Es werden nur Rechnungen selektiert, die bereits in die FIBU übergeleitet sind False = Es werden nur Rechnungen selektiert, die noch nicht in die FIBU übergeleitet sind leer = keine Einschränkung |
IsInvoiceFi nished | True, False | True = Es werden nur Rechnungen selektiert, die bereits erledigt sind False = Es werden nur Rechnungen selektiert, die noch nicht erledigt sind leer = keine Einschränkung |
SqlWhere | r. vertreternummer =15 | zusätzliche SQL-Einschränkung für die Abfrage der Rechnungen, welche gemahnt werden. Folgende Alias'se können verwendet werden: r. = RECHNUNGEN k. = KUNDEN z. = ZBEDINGUNGEN |
Test | True, False | True = Es werden nur die potentiellen Rechnungen selektiert und ausgegeben - es werden keine Mahnungen erstellt oder gesendet (für Test-Zwecke) False (Standard) = Mahnungen werden regulär erstellt und auf Wunsch per Mail versendet |
ProtocolE Mail | EMail-Adresse für Protokoll - mehrere Adressen können semikolon-getrennt angegeben werden | |
BccEMail | Unsichtbare Ziel-EMail-Adresse(n) - Wenn angegeben, werden alle Mails, die an Kunden gesendet werden, auch an diese Mail-Adresse(n) zusätzlich gesendet. | |
SenderEM ail | EMail-Adresse die als Absender angezeigt wird | |
SmtpServer | SMTP-Server für EMail-Versand | |
SmtpUser | mustermann\adm in | SMTP-Benutzername für EMail-Versand |
SmtpPass word | admmus | SMTP-Passwort für EMail-Versand |
SmtpUseS SL | True, False | SSL für SMTP-Email-Versand verwenden |
SmtpPortN umber | Port-Nummer für Mail-Versand (Standard=25) | |
MailLevel | All, ErrorsOnly, NoMail | Beinhaltet das Level, welche Mails versendet werden sollen. |
MailSubject | EMail-Betreff. Wenn angegeben, wird dieser Betreff angezeigt. | |
MailBody | EMail-Body. Wenn angegeben, wird dieser Body angezeigt. | |
IsBodyHtml | True, False | Gibt an, ob der Body ein HTML-Body ist, oder ein normaler Text. Wenn nicht angegeben, wird standardmäßig HTML gesendet. |
TargetPdfFilenamePattern
Platzhalter
Platzhalter | Beschreibung |
{CustomerNumber} | Wird durch die Kundennummer ersetzt |
{Today} | Wird durch das aktuelle Datum ersetzt ( Format dd.MM.yyyy ) |
{Today:FORMAT} | Wird durch das aktuelle Datum im angegebenen Format ersetzt. Bsp: {Today:yyyyMMdd} |
StringFunctions
Zusätzlich zu den Standard-StringFunctions sind folgende Funktionen möglich:
StringFunction | Beschreibung |
GetProcessingItem() | Liefert das DTO für die aktuell verarbeitete Mahnung. Ein ProcessingItem enthält folgende Felder: CustomerNumber (long?) SearchKey (string) Invoices (Liste mit Invoice-Elementen) FileContent (Dateiinhalt der Pdf-Datei) IsPdfCreated (bool - Kennzeichen ob die Pdf-Datei erfolgreich im Dateisystem abgelegt wurde) IsMailSent (bool - Kennzeichen ob eine Mail versendet wurde) MailAddress (string - Ziel-EMail-Adresse) ErrorMessage ( Element mit ev. Fehlermeldung ) |
GetCustomerNumber() | Liefert die Kundennummer für die aktuell verarbeitete Mahnung |
GetCustomerSearchKey () | Liefert die Kunden-Suchbezeichnung für die aktuell verarbeitete Mahnung |
GetInvoiceNumbers() | Liefert eine Liste mit den Rechnungsnummern für die aktuell verarbeitete Mahnung |
GetInvoice() | Liefert ein Invoice-Element der aktuell verarbeiteten Rechnung bzw. das erste Invoice-Element für den aktuellen Kunden |
GetInvoiceNumber() | Liefert die Rechnungsnummer der aktuell verarbeiteten Rechnung bzw. die erste Rechnungsnummer für den aktuellen Kunden |
GetInvoiceInx() | Liefert den Datensatz-Index der aktuell verarbeiteten Rechnung bzw. den ersten Rechnungs-Index für den aktuellen Kunden |
Kriterien für Abfrage
Es darf keine Barverkaufsrechnung sein (TYP < 100)
Die Rechnung darf nicht bezahlt sein (BEZAHLT=0)
Zusätzliche Einschränkungen über die Konfigurationsdatei
Automatisierte Aufgaben
Speziell für den Mahnlauf gibt es folgende automatisierten Aufgaben, auf die reagiert werden können:
Trigger | Beschreibung |
Invoice. DunningRunDunningBlock | Wird ausgelöst, wenn ein Mahnlauf durchgeführt wird, die Rechnung nicht bezahlt ist und mit einer Mahnsperre gekennzeichnet ist |
Invoice.DunningRun | Wird ausgelöst, wenn ein automatischer Mahnlauf durchgeführt wird und die Rechnung per Mail versendet wurde |
Beispiel: Es soll an die Buchhaltung eine EMail gesendet werden, wenn eine Rechnung nicht gemahnt wird, weil eine Mahnsperre vorliegt
Invoice.DunningRunDunningBlock.xml
<?xml version="1.0" standalone="yes"?>
<NewDataSet>
<AutomatedTasks>
<EREIGNIS>Invoice.DunningRunDunningBlock</EREIGNIS>
<AKTION>Mail.Send</AKTION>
<BEDINGUNG>where 1=1</BEDINGUNG>
<AKTION_WERTE><XML>
<MAIL Id="14039">
<FROM>"noreply@mustermann.com"</FROM>
<TO>"maria@mustermann.com"</TO>
<SUBJECT>"Mahnsperre Rechnung "+@GetSourceValue("RENUMMER")</SUBJECT>
<BODY>"bitte prüfen"</BODY>
</MAIL>
</XML></AKTION_WERTE>
<POS>1</POS>
<AKTIV>1</AKTIV>
</AutomatedTasks>
</NewDataSet>
Automatischer Start
Im Unterordner \Interfaces\POLLEX-LC\DunningRun\Templates werden Beispieldaten für die automatische Ausführung der Schnittstelle mit ausgeliefert. Wollen Sie diese Dateien verwenden, kopieren Sie diese bitte in einen eigenen Script-Ordner oder in den Ordner der LC.WpfInterfaces. exe. Die mitgelieferten Templates werden beim Update überschrieben.
Beispiel
XML-Konfigurationsdatei
DunningRun.xml
<?xml version="1.0" encoding="utf-8"?>
<DunningRun>
<DB>LC</DB>
<USER>SYSADM</USER>
<PASSWORD>SYSADM</PASSWORD>
<LogLevel>Full</LogLevel>
<DunningLetterPrintLayout>X</DunningLetterPrintLayout>
<TargetPdfFolder>c:\POLLEX\Mahnungen</TargetPdfFolder>
<TargetPdfFilenamePattern>MAHNUNG_{CustomerNumber}.pdf</TargetPdfFilenamePattern>
<SendDunningMail>True</SendDunningMail>
<MailSuccessPdfFolder>c:\POLLEX\Mahnungen\Sent</MailSuccessPdfFolder>
<MailFailedPdfFolder>c:\POLLEX\Mahnungen\Failed</MailFailedPdfFolder>
<DunningMailBody>@GetTextModule("MAHN_MAILBODY")</DunningMailBody>
<DunningMailSubject>Mahnung vom {Today}</DunningMailSubject>
<OrgUnits>10</OrgUnits>
<SmtpServer>mail.mustermann.com</SmtpServer>
<SmtpUser>max</SmtpUser>
<SmtpPassword>nnamretsum</SmtpPassword>
<SmtpPortNumber></SmtpPortNumber>
<SmtpUseSSL>True</SmtpUseSSL>
<SenderEMail>noreply@mustermann.com</SenderEMail>
<BccEMail>buchhaltung@mustermann.com</BccEMail>
<ProtocolEMail>admin@mustermann.com</ProtocolEMail>
<MailLevel>All</MailLevel>
</DunningRun>
Batch-Datei
LC.WpfInterfaces.exe /C=DunningRun.xml
Commandline-Aufruf für Test
LC.WpfInterfaces.exe /C=DunningRun.xml /Test
Commandline-Aufruf andere Datenbank
LC.WpfInterfaces.exe /C=DunningRun.xml /DB=DEMO /USER=DEMO /PASSWORD=TEST