Neu Offene Posten per Workflow ausdrucken + Anpassungen

Garten-Nutzer

Sehr aktives Mitglied
3. Juni 2019
138
49
Hallo zusammen,

ich würde gerne die "Offene Posten" Liste (unter Zahlungen) automatisch exportieren lassen. Leider finde ich im Workflow keine Einstellung hierzu.

Ist es möglich, dass ich diese Liste mit einem Filter (Datum) versehen kann und dass System mir dann automatisch einen HTML Report erstellt, abspeichert und ausdruckt?

Ein Traum wäre es ja noch, wenn ich anzeigen lassen könnte wie weit eine Rechnung überfällig ist bzw. wie lange noch bis zum Zahlungsziel.

Wäre für Hilfen dankbar. Mir ist auch bewusst, dass es eine Vorlage pro Kunden gibt, aber das bringt mir ja nichts. Ich benötige hier eine Übersicht über alle offenen Posten.

Gruß
Garten-Nutzer
 

Garten-Nutzer

Sehr aktives Mitglied
3. Juni 2019
138
49
Nach intensiver Suche mag die Wawi die Daten nicht rausgeben, aber die JTL Ameise rückt die Daten ja raus.

Wir haben also jetzt eine bat-Datei welche diese Positionen exportiert und in eine csv-Datei schreibt. Da hier nur lesend auf die Datenbank zugegriffen wird, ist dies ja kein Problem. Diese Datei wird dann in Excel mittels Power-Query eingelesen, formatiert und bearbeitet. Damit das alles nicht immer manuell gemacht werden musste, nutzen wir hierzu ein Powershell-Skript welches die bat aufruft, dann die Excel Datei öffnet, die Daten aktualisieren lässt und automatisch ausdruckt.
Das wurde dann in die Windows Aufgabenplanung geschrieben und schon läuft es automatisiert ab.

Wenn gewünscht kann ich das Powershell-Skript hier posten.
 

sjk

Sehr aktives Mitglied
16. Januar 2019
613
272
Moin,
Ich will demnächst etwas ähnliches umsetzen und dein Skript würde mir als Beispiel sehr helfen!
 

Garten-Nutzer

Sehr aktives Mitglied
3. Juni 2019
138
49
Hallo sjk,

Wie immer: Keine Garantie, Backups anlegen.

hier ist das Skript.
Code:
Start-Process -FilePath "Pfad zur Export-Datei" -Wait -NoNewWindow

Start-Sleep 2

$xl = New-Object -ComObject Excel.Application
$xl.Visible = $false

$wb = $xl.Workbooks.Open('Pfad zu Excel-Datei die geöffnet werden soll')
$ws = $wb.WorkSheets.Item(1)

$wb.RefreshAll();

Start-Sleep 2

$xl.ActivePrinter = "Drucker angeben wenn von Std. Drucker abweichend"
$ws.PrintOut()
$ws.PrintOut()

$wb.close($false)

$xl.quit()

Das ist das ganze Skript.

Ein paar Hinweise:
Die Sleep Anweisungen stehen da, damit der Server auch bei hoher Belastung auch alles erledigen kann. Die Dateien liegen alle auf einem Netzwerkspeicher und müssen entsprechend gelesen / geschrieben werden können.

Die Befehle mit dem "$" davor sind die für das aktualisieren von Excel zuständigen Befehle. Wenn man den Visible Wert auf "true" ändert, sieht man Excel, sonst bleibt es im Hintergrund und arbeitet es durch.
der WorkSheets.Item(1) Befehl sorgt dafür, dass das erste Blatt von Excel ausgewählt wird.

Über den ActivePrinter kann man steuern welcher Drucker genommen werden muss. Wenn man den Eintrag weglässt, wird der in Windows hinterlegte Standarddrucker genommen. Achtung: Es wird der Standarddrucker von dem System genommen wo das Skript ausgeführt wird. Ein Server hat eventuell nicht den richtigen Drucker. Darum diese Anweisung.
Um den Druckernamen herauszufinden einfach den Drucker als Standard definieren und folgendes in eine PowerShell eingeben:
Code:
$xl = New-Object -ComObject Excel.Application
$xl.ActivePrinter
Dann den gesamten Namen also "Druckername auf NeXX:" kopieren und da einfügen. Man kann den ActivePrinter Befehl mehrmals nutzen um das Dokument an verschiedenen Druckern zeitgleich zu drucken.

Die Excel-Datei wird übrigens NICHT gespeichert und Excel wird dann einfach geschlossen.

Excel ist so eingestellt, dass beim öffnen der Datei die Quelldatei automatisch aktualisiert wird. Das muss man in den Eigenschaften von der Power-Query machen.