Get-CompanyMasterData #
ÜBERSICHT #
Liest zentrale Firmen-, Anschrift-, Kommunikations- und Bankdaten aus dem EULANDA-Firmenstamm und gibt sie als verschachtelte Hashtable zurück.
SYNTAX #
Get-CompanyMasterData [<CommonParameters>]
BESCHREIBUNG #
Liest die unter \MODULES\Grundwerte\Firmenstamm, \MODULES\Grundwerte\Xfacture und \MODULES\Grundwerte\Bank\1..5 hinterlegten Registry-Werte aus der EULANDA-Datenbank und bündelt sie in einer verschachtelten Hashtable. Das Ergebnis ist das kanonische Input-Format für die XML-Export-Pipeline (Export-InvoiceXml, Export-SalesOrderXml, Export-DeliveryNoteXml, Export-AddressXml, Export-GobdZ3) sowie für die Platzhalter-Engine (Get-PlaceholderContext -> Expand-PlaceholderString).
Abgedeckte Felder #
- Identifikation: GLN, UstID, SteuerNr, CreditorID
- Firma: Ident (Firmenname), Ceo (Geschäftsführer), RegisterGericht, RegisterNummer
- Rechtlicher Zusatztext: LegalNote (Fußzeile aus Xfacture-Konfiguration)
- Anschrift: Strasse, Plz, Ort, Land (ISO-Code via
cnf_LandNachIso) - Kommunikation: Tel, Fax, Email, PeppolId
- Bankverbindungen 1..3: Id, Ident (Bankname), IBAN, BIC
Bankeinträge ohne Name, IBAN und BIC werden ausgelassen. Alle Strings werden per Get-TrimmedValue bereinigt (Trim + geschützte Leerzeichen); IBAN, BIC, GLN, UstID, SteuerNr, CreditorID, RegisterNummer, Tel und Fax werden zusätzlich von allen Leerzeichen befreit. Die LegalNote wird von CRLF auf Komma-Trennung normalisiert.
Registry-Cache (EULXT_REGCACHE). Die Funktion liest über die RegCache-API (Get-EulandaRegistrySubtree). Ist die Environment-VariableEULXT_REGCACHE=hivegesetzt, werden die sieben Subtrees (Firmenstamm, Xfacture, Bank\1..5) aus dem lokalen HiveStore unter%LOCALAPPDATA%\EULANDA\EulandaXtools\RegCache\<DbKey>bedient statt aus der SQL-Registry geholt. Spart in VPN-Szenarien spürbar Roundtrips. Ohne gesetzte Variable (oderEULXT_REGCACHE=off) läuft der Zugriff transparent direkt gegen die Datenbank.
Memory-Footprint. Es wird bewusst NICHT der komplette
\MODULES\Grundwerte-Tree geladen (der kann in Produktion mehrere MB
umfassen - Logos, Large-Texts). Stattdessen werden nur die sieben
tatsächlich benötigten Sub-Subtrees angefordert. Das kostet ein paar
Roundtrips mehr, hält den Speicherverbrauch aber unter ca. 100 KB und
vermeidet OOM-Probleme in Export-Batches.Rückgabe$nullbei fehlendem Firmenstamm. Liegt unter\MODULES\Grundwerte\Firmenstammkein Eintrag vor (frische oder unvollständig initialisierte Datenbank), liefert die Funktion$null. Aufrufer müssen das prüfen - sieheExport-AddressXmlfür das kanonische Fehlerverhalten.
PARAMETER #
-Conn #
Offenes ADODB.Connection-Objekt zur EULANDA-Datenbank. Die Connection muss bereits geöffnet sein ($Conn.Open(...)); sie wird von dieser Funktion weder geöffnet noch geschlossen (Caller-owns-Connection).
AUSGABEN #
System.Collections.Hashtable
Verschachtelte Hashtable mit Top-Level-Keys GLN, UstID, SteuerNr, CreditorID, Ident, LegalNote, Ceo, RegisterGericht, RegisterNummer (alle string) sowie Unterknoten Anschrift (Hashtable mit Strasse, Plz, Ort, Land), Kommunikation (Hashtable mit Tel, Fax, Email, PeppolId) und Bank (Array von Hashtables mit Id, Ident, IBAN, BIC, 0..3 Elemente). Bei leerem Firmenstamm: $null.
BEISPIELE #
# 1) Absender-Kopf für eine selbstgebaute Rechnungsmail
$conn = New-Object -ComObject ADODB.Connection
$conn.Open("File Name=C:\EULANDA\eulanda.udl")
try {
$firma = Get-CompanyMasterData -Conn $conn
if (-not $firma) { throw "Firmenstammdaten fehlen." }
$absender = "{0}, {1}, {2} {3}" -f `
$firma.Ident, $firma.Anschrift.Strasse,
$firma.Anschrift.Plz, $firma.Anschrift.Ort
Write-Host "Von: $absender"
Write-Host "USt-ID: $($firma.UstID) | GLN: $($firma.GLN)"
}
finally {
$conn.Close()
}
# 2) IBAN und BIC der Hauptbank in Mail-Signatur einsetzen
$firma = Get-CompanyMasterData -Conn $conn
$hausbank = $firma.Bank | Where-Object { $_.Id -eq '1' } | Select-Object -First 1
if ($hausbank) {
$signatur = @"
Mit freundlichen Grüßen
$($firma.Ceo)
$($firma.Ident)
Bankverbindung: $($hausbank.Ident)
IBAN: $($hausbank.IBAN)
BIC: $($hausbank.BIC)
"@
Send-EulandaMail -To 'kunde@example.com' -Subject 'Rechnung' -BodyHtml $signatur
}
# 3) Peppol-/Xfacture-Versand vorbereiten (Hive-Cache aktiv)
$env:EULXT_REGCACHE = 'hive'
Initialize-EulRegStore # Store auf Hive umschalten
$firma = Get-CompanyMasterData -Conn $conn
if (-not $firma.Kommunikation.PeppolId) {
Write-Warning "Keine PeppolId im Firmenstamm - Peppol-Versand nicht möglich."
return
}
$routing = @{
SenderId = $firma.Kommunikation.PeppolId
SenderGln = $firma.GLN
SenderName = $firma.Ident
LegalFooter = $firma.LegalNote
}
$routing | Format-List
# 4) Einfache Snapshot-Zeile fürs Logbuch eines Export-Batchlaufs
$f = Get-CompanyMasterData -Conn $conn
"{0} | {1} {2} | {3}" -f $f.Ident, $f.Anschrift.Plz, $f.Anschrift.Ort, $f.UstID |
Add-Content -Path 'C:\Logs\export.log'
HINWEISE #
Consumer dieser Funktion im Modul: Export-InvoiceXml, Export-SalesOrderXml, Export-DeliveryNoteXml, Export-AddressXml (bei -WithCompanyData), Export-GobdZ3, Get-PlaceholderContext, Import-SalesOrderSimulation.
Externe Consumer (bei Signaturänderungen prüfen): XfactureModule (C:\Git\Products\XfactureModule), ErpXe-Plugins, kundenspezifische Projekte unter C:\Git\customers\.
Datenquelle: cnf_LandNachIso für ISO-Länderkonvertierung, alles andere über die RegCache-API (Get-EulandaRegistrySubtree -> $script:RegStore).