PersonenImport.psm1
$Script:PersonenInfo; $Script:PersonenmappingListe; $Script:PersonenmappingSplitListe; function Invoke-PersonenImport { param ( [Parameter(Mandatory, HelpMessage = "Liste der zu importierenden Parametern")] $parameterObject ) process { $KomMittelTypes = @("festnetznummer", "mobilenummer", "faxnummer","emailadresse", "wwwadresse", "postadresse"); $row = @{}; $Script:PersonenInfo = @{}; $Script:PersonenmappingListe = @{}; $Script:PersonenmappingSplitListe = @{}; $parameterObject.psobject.properties | Foreach { $row[$_.Name] = $_.Value }; $Person = [PSCustomObject]@{}; $KomMittelListe = @{}; $AnmeldungListe = @{}; $RechnungssplitListe = @{}; $TagListe = @{}; [string]$Id = $row["Id"]; $Gruppe = $row["Sicherheitsgruppe"]; if ($Id -eq $null -or $Gruppe -eq $null) { Write-Error "Sicherheitsgruppe und Id sind erforderlich"; return; } $Script:PersonenInfo = Invoke-BuildPersonUid -Gruppe $Gruppe -Id $Id; $Sicherheitseinstellung = New-Sicherheitseinstellung-Object $Gruppe; foreach ($key in $row.keys) { $elements = $key.Split('_'); if ($elements.Count -gt 1) { $name = $elements[2]; $type = $elements[0] + "_" + $elements[1]; } if ($elements.Count -eq 1) { $Person | Add-Member -MemberType NoteProperty -Name $key -Value $row[$key]; } elseif ($KomMittelTypes.Contains($elements[0].ToLower())) { if (-not $KomMittelListe[$type]) { $KomMittelListe[$type] = [PSCustomObject]@{}; } $KomMittelListe[$type] | Add-Member -MemberType NoteProperty -Name $name -Value $row[$key]; } elseif ($elements[0] -eq "anmeldung") { if (-not $AnmeldungListe[$type]) { $AnmeldungListe[$type] = [PSCustomObject]@{}; } $AnmeldungListe[$type] | Add-Member -MemberType NoteProperty -Name $name -Value $row[$key]; } elseif ($elements[0] -eq "rechnungssplit") { if (-not $RechnungssplitListe[$type]) { $RechnungssplitListe[$type] = [PSCustomObject]@{}; } $RechnungssplitListe[$type] | Add-Member -MemberType NoteProperty -Name $name -Value $row[$key]; } elseif ($elements[0] -eq "personenmapping") { if (-not $Script:PersonenmappingListe[$type]) { $Script:PersonenmappingListe[$type] = [PSCustomObject]@{}; } $Script:PersonenmappingListe[$type] | Add-Member -MemberType NoteProperty -Name $name -Value $row[$key]; } elseif ($elements[0] -eq "personenmappingsplit") { if (-not $Script:PersonenmappingSplitListe[$type]) { $Script:PersonenmappingSplitListe[$type] = [PSCustomObject]@{}; } $Script:PersonenmappingSplitListe[$type] | Add-Member -MemberType NoteProperty -Name $name -Value $row[$key]; } elseif ($elements[0] -eq "tag") { $tagName = Get-TagTyp3Bereinigung($row[$key]); if ($tagName) { $tagName = $Gruppe.Trim() +"/" + $tagName; if (-not $TagListe[$type]) { $TagListe[$type] = [PSCustomObject]@{}; } $TagListe[$type] | Add-Member -MemberType NoteProperty -Name $name -Value $tagName; } } else { Write-Warning "Parameter '$key' ist unbekannt."; } } Enable-WeeduSyncOperation; Invoke-ImportPerson -Person $Person -KomMittelListe $KomMittelListe -TagListe $TagListe -Sicherheitseinstellung $Sicherheitseinstellung; if (Invoke-ImportPersonenmappings -PersonenmappingListe $Script:PersonenmappingListe) { if (Invoke-ImportPersonenmappings -PersonenmappingListe $Script:PersonenmappingSplitListe) { Invoke-ImportRechnungssplits -RechnungssplitListe $RechnungssplitListe; } } Invoke-ImportAnmeldungen -AnmeldungListe $AnmeldungListe; } } function Invoke-ImportPerson { param ( [Parameter(Mandatory)] $Person, $TagListe, [Parameter(Mandatory)] $KomMittelListe, [Parameter(Mandatory)] $Sicherheitseinstellung ) process { try { $kmListe = @(); $AddTagsListe = @(); Write-Information "`nImportiere Person: $($Person.Vorname) $($Person.Name)" -InformationAction Continue Write-Information "====================" -InformationAction Continue if ($PSBoundParameters.ContainsKey("TagListe")) { foreach ($item in $TagListe.GetEnumerator()) { $params = $item.Value; $AddTagsListe += $params.name; } } foreach ($key in $KomMittelListe.keys) { $params = $KomMittelListe[$key]; $KmType = $key.Split('_'); if ($params.Notfall) { $Notfall = $params.Notfall; } else { $Notfall = $false; } if ($params.Wohnsitz) { $Wohnsitz = $params.Wohnsitz; } else { $Wohnsitz = $false; } if ($params.Kategorie) { $Kategorie = $params.Kategorie; } else { $Kategorie = "Privat"; } if (($KmType[0] -eq "festnetznummer" -or $KmType[0] -eq "mobilenummer" -or $KmType[0] -eq "faxnummer") -and $params.nummer) { $kmListe += New-Kommunikationsmittel-Object -Type $KmType[0] -Kategorie $params.kategorie -GueltigAb $params.GueltigAb -GueltigBis $params.GueltigBis -Bemerkungen $params.Bemerkungen -Notfall $Notfall -Wohnsitz $Wohnsitz -Nummer $params.nummer; } elseif ($KmType[0] -eq "emailadresse" -and $params.adresse) { $kmListe += New-Kommunikationsmittel-Object -Type "EMailAdresse" -Kategorie $params.kategorie -GueltigAb $params.GueltigAb -GueltigBis $params.GueltigBis -Bemerkungen $params.Bemerkungen -Notfall $Notfall -Wohnsitz $Wohnsitz -Adresse $params.adresse; } elseif ($KmType[0] -eq "wwwadresse" -and $params.Url) { $kmListe += New-Kommunikationsmittel-Object -Type "WwwAdresse" -Kategorie $params.kategorie -GueltigAb $params.GueltigAb -GueltigBis $params.GueltigBis -Bemerkungen $params.Bemerkungen -Notfall $Notfall -Wohnsitz $Wohnsitz -Url $params.UrlUrl; } elseif ($KmType[0] -eq "postadresse") { if ($params.Land) { $params.Land = $params.Land.ToUpper(); if ($params.Land -ne "CH" -and $params.Land -ne "LI" -and $params.Land -ne "DE") { if(($params.Adresse1 -ne $null -and $params.Adresse1 -ne '') -or ($params.Adresse2 -ne $null -and $params.Adresse2 -ne '') -or ($params.Adresse3 -ne $null -and $params.Adresse3 -ne '')){ $kmListe += New-PostAdresse-Object -Kategorie $Kategorie -GueltigAb $params.GueltigAb -GueltigBis $params.GueltigBis -Bemerkungen $params.Bemerkungen -Notfall $Notfall -Wohnsitz $Wohnsitz -Land $params.Land -Zusatzzeile1 $params.Zusatzzeile1 -Zusatzzeile2 $params.Zusatzzeile2 -Adresse1 $params.Adresse1 -Adresse2 $params.Adresse2 -Adresse3 $params.Adresse3; } else{ $kmListe += New-PostAdresse-Object -Kategorie $Kategorie -GueltigAb $params.GueltigAb -GueltigBis $params.GueltigBis -Bemerkungen $params.Bemerkungen -Notfall $Notfall -Wohnsitz $Wohnsitz -Land $params.Land -Zusatzzeile1 $params.Zusatzzeile1 -Zusatzzeile2 $params.Zusatzzeile2 -Strasse $params.Strasse -Hausnummer $params.Hausnummer -Postfach $params.Postfach -PLZ $params.PLZ -Ort $params.Ort; } } else { $kmListe += New-PostAdresse-Object -Kategorie $Kategorie -GueltigAb $params.GueltigAb -GueltigBis $params.GueltigBis -Bemerkungen $params.Bemerkungen -Notfall $Notfall -Wohnsitz $Wohnsitz -Land $params.Land -Zusatzzeile1 $params.Zusatzzeile1 -Zusatzzeile2 $params.Zusatzzeile2 -Strasse $params.Strasse -Hausnummer $params.Hausnummer -Postfach $params.Postfach -PLZ $params.PLZ -Ort $params.Ort; } } elseif ($params.Ort -or $params.Strasse) { Write-Error "Für Postadresse $key ist kein Land gesetzt und kann daher nicht importiert werden." } } } if ($Script:PersonenInfo.PersonExistiert -ne 0) { if ($Person.Type -eq "einzelperson") { Set-Einzelperson -PersonUid $script:PersonenInfo.PersonUid -Vorname $Person.Vorname -Name $Person.Name -Korrespondenzsprache $Person.Korrespondenzsprache -Geschlecht $Person.Geschlecht -Geburtsdatum $Person.Geburtsdatum -Muttersprache $Person.Muttersprache -Sozialversicherungsnummer $Person.Sozialversicherungsnummer -Anredezusatz $Person.Anredezusatz -AkademischerTitel $Person.AkademischerTitel -TitelZusatz $Person.TitelZusatz -Titel2 $Person.Titel2 -Funktion $Person.Funktion -Beruf $Person.Beruf -Branche $Person.Branche -Staatsangehoerigkeit $Person.Staatsangehoerigkeit -Heimatort $Person.Heimatort -Auslaenderkategorie $Person.Auslaenderkategorie -BewilligungBis $Person.BewilligungBis -Geburtsort $Person.Geburtsort -KommunikationsmittelListe $kmListe -AddTagsListe $AddTagsListe; } elseif ($Person.Type -eq "organisation") { Set-Organisation -OrganisationUid $script:PersonenInfo.PersonUid -Organisationsname $Person.Name -Organisationsform $Person.Organisationsform -Korrespondenzsprache $Person.Korrespondenzsprache -UnternehmensId $Person.UnternehmensId -Branche $Person.Branche -Mitarbeiteranzahl $Person.Mitarbeiteranzahl -KommunikationsmittelListe $kmListe -AddTagsListe $AddTagsListe; } elseif ($Person.Type -eq "familie") { Set-Familie -FamilieUid $script:PersonenInfo.PersonUid -Familienname $Person.Name -Vornamen $Person.Vorname -Korrespondenzsprache $Person.Korrespondenzsprache -KommunikationsmittelListe $kmListe -AddTagsListe $AddTagsListe; } } else { if ($Person.Type -eq "einzelperson") { New-Einzelperson -PersonUid $script:PersonenInfo.PersonUid -Vorname $Person.Vorname -Name $Person.Name -Korrespondenzsprache $Person.Korrespondenzsprache -Geschlecht $Person.Geschlecht -Geburtsdatum $Person.Geburtsdatum -Muttersprache $Person.Muttersprache -Sozialversicherungsnummer $Person.Sozialversicherungsnummer -Anredezusatz $Person.Anredezusatz -AkademischerTitel $Person.AkademischerTitel -TitelZusatz $Person.TitelZusatz -Titel2 $Person.Titel2 -Funktion $Person.Funktion -Beruf $Person.Beruf -Branche $Person.Branche -Staatsangehoerigkeit $Person.Staatsangehoerigkeit -Heimatort $Person.Heimatort -Auslaenderkategorie $Person.Auslaenderkategorie -BewilligungBis $Person.BewilligungBis -Geburtsort $Person.Geburtsort -KommunikationsmittelListe $kmListe -AddTagsListe $AddTagsListe -SicherheitsEinstellung $Sicherheitseinstellung; } elseif ($Person.Type -eq "organisation") { New-Organisation -OrganisationUid $script:PersonenInfo.PersonUid -Organisationsname $Person.Name -Organisationsform $Person.Organisationsform -Korrespondenzsprache $Person.Korrespondenzsprache -UnternehmensId $Person.UnternehmensId -Branche $Person.Branche -Mitarbeiteranzahl $Person.Mitarbeiteranzahl -KommunikationsmittelListe $kmListe -AddTagsListe $AddTagsListe -SicherheitsEinstellung $Sicherheitseinstellung; } elseif ($Person.Type -eq "familie") { New-Familie -FamilieUid $script:PersonenInfo.PersonUid -Familienname $Person.Name -Vornamen $Person.Vorname -Korrespondenzsprache $Person.Korrespondenzsprache -KommunikationsmittelListe $kmListe -AddTagsListe $AddTagsListe -SicherheitsEinstellung $Sicherheitseinstellung; } } } catch { $ErrMsg = $_.Exception.Message; if ($_.TargetObject.errors.message) { $ErrMsg += ": " + $_.TargetObject.errors.message; } Write-Error "Invoke-ImportPerson: $ErrMsg"; } } } function Invoke-ImportAnmeldungen { param ( [Parameter(Mandatory)] $AnmeldungListe ) process { try { foreach ($item in $AnmeldungListe.GetEnumerator()) { $params = $item.Value; if ($params.Modulversion -eq $null) { continue; } $AnmeldungUid = $null; $AnmeldungExist = $null; $UidString = "!Anmeldung" + $script:PersonenInfo.UidSuffix + "!" + $params.Modulversion; if ($Script:PersonenInfo.PersonExistiert -eq 1) { # mit altem Tool importiert, Anmeldung suchen $AnmeldungUid = Get-AlteAnmeldungFurPersonModulversion -PersonUid $script:PersonenInfo.PersonUid -ModulversionUid $params.Modulversion if ($AnmeldungUid -eq $null) { $AnmeldungUid = $UidString; $AnmeldungExist = $false; } else { $AnmeldungExist = $true; } } else { $AnmeldungUid = $UidString; $AnmeldungExist = Test-EntityExistsInIndex $AnmeldungUid; } if ($params.Status) { $Status = $params.Status; } else { $Status = "Definitiv"; } if ($params.Vertragspartner) { $Vertragspartner = $params.Vertragspartner; } else { $Vertragspartner = $script:PersonenInfo.PersonUid; } if ($AnmeldungExist) { Set-Anmeldung -AnmeldungUid $AnmeldungUid -LeistungsempfaengerUid $script:PersonenInfo.PersonUid -AnlassUid $params.Anlass -ModulversionUid $params.Modulversion -VertragspartnerUid $Vertragspartner -LieferadresseUid $params.Lieferadresse -Bemerkungen $params.Bemerkungen -Status $Status; } else { Start-Sleep -Seconds 2 New-Anmeldung -AnmeldungUid $AnmeldungUid -LeistungsempfaengerUid $script:PersonenInfo.PersonUid -AnlassUid $params.Anlass -ModulversionUid $params.Modulversion -VertragspartnerUid $Vertragspartner -LieferadresseUid $params.Lieferadresse -Bemerkungen $params.Bemerkungen -Status $Status; } } } catch { $ErrMsg = $_.Exception.Message; if ($_.TargetObject.errors.message) { $ErrMsg += ": " + $_.TargetObject.errors.message; } Write-Error "Invoke-ImportAnmeldungen: $ErrMsg"; } } } function Invoke-ImportPersonenmappings { param ( [Parameter(Mandatory)] $PersonenmappingListe ) process { try { foreach ($Personenmapping in $PersonenmappingListe.Values) { if ($Personenmapping.Id -eq $null -and $Personenmapping.MandantenNummer -eq $null) { # ungesetzte Zellen ignorieren continue; } $RechnungsemfaengerExists = 0; if ($Personenmapping.PersonId) { # Personenmapping des Rechnungssplits if (Test-IsGuid($Personenmapping.PersonId)) { $PersonUid = $Personenmapping.PersonId; $RechnungsemfaengerExists = Test-PersonenExistsInIndex $PersonUid; } else { $PersonInfo = Invoke-BuildPersonUid -Gruppe $script:PersonenInfo.UidPrefix -Id $Personenmapping.PersonId $RechnungsemfaengerExists = $PersonInfo.PersonExistiert; $PersonUid = $PersonInfo.PersonUid; } if ($RechnungsemfaengerExists -eq 0) { throw "Rechnungsempfaenger '" + $Personenmapping.PersonId + "' nicht gefunden oder ist inaktiv"; } } else { # Personenmapping der importierten Person $PersonUid = $script:PersonenInfo.PersonUid; } Set-PersonenmappingFurPersonMandant -PersonUid $PersonUid -Personenmapping $Personenmapping; } } catch { $ErrMsg = $_.Exception.Message; if ($_.TargetObject.errors.message) { $ErrMsg += ": " + $_.TargetObject.errors.message; } Write-Error "Invoke-ImportPersonenmappings: $ErrMsg"; return $false; } return $true; } } function Invoke-ImportRechnungssplits { param ( [Parameter(Mandatory)] $RechnungssplitListe ) process { try { foreach ($Rechnungssplit in $RechnungssplitListe.Values) { if ($Rechnungssplit.SplitId -eq $null -and $Rechnungssplit.PersonenmappingId -eq $null) { # ungesetzte Zellen ignorieren continue; } Set-RechnungssplitFurPersonMappings -PersonUid $script:PersonenInfo.PersonUid -Rechnungssplit $Rechnungssplit; } } catch { $ErrMsg = $_.Exception.Message; if ($_.TargetObject.errors.message) { $ErrMsg += ": " + $_.TargetObject.errors.message; } Write-Error "Invoke-ImportRechnungssplits: $ErrMsg"; } } } function Get-TagTyp3Bereinigung ($TagName) { if ($TagName -ne $null) { $TagName = $TagName.ToLower().Trim(); $TagName = $TagName -replace "é", "e"; $TagName = $TagName -replace "è", "e"; $TagName = $TagName -replace "à", "a"; $TagName = $TagName -replace "ç", "c"; $TagName = $TagName -replace "ä", "ae"; $TagName = $TagName -replace "ö", "oe"; $TagName = $TagName -replace "ü", "ue"; $TagName = $TagName -replace "@", "-at-"; $TagName = $TagName -replace "%", "-prozent-"; $TagName = $TagName -replace "[\s—/|\\-]+","-"; $TagName = $TagName -replace "^[^a-z0-9]+|[^a-z0-9-]+|[^a-z0-9]+$",""; $regex = [regex]("^[a-z0-9][a-z0-9-]*[a-z0-9]$"); if ($regex.Match($TagName).Success) { return $TagName; } } return $null; } function Test-IsGuid ($String) { try { if ($String.StartsWith('!')) { return $true } [System.Guid]::Parse($String) | Out-Null; return $true } catch { return $false; } } function Invoke-BuildPersonUid { param ( [Parameter(Mandatory)] [string]$Gruppe, [Parameter(Mandatory)] [string]$Id ) process { $Id = $Id.Trim(); $Gruppe = $Gruppe.Trim(); $Spezialfall = $null; switch ($Gruppe.ToLower()) { "ibwwi" { $UidPrefix = "IBW"; $Spezialfall = "IBWWI"; } "juventuswoodtli" { $UidPrefix = "Juventus"; $Spezialfall = "JuventusWoodtli"; } "juventuswirtschaft" { $UidPrefix = "JuventusWirtschaft"; } "juventusmaturitaet" { $UidPrefix = "JuventusMaturitaet"; } "bfswinterthur" { $UidPrefix = "BFSWinterthur"; } "bfswinterthurallg" { $UidPrefix = "BFSWinterthurAllg"; } "bfswinterthursozial" { $UidPrefix = "BFSWinterthurSozial"; } default { $UidPrefix = $Gruppe.ToUpper(); } } if($Spezialfall -eq $null) { $Spezialfall = $UidPrefix; } $PersonUidStrOld = "!$UidPrefix!$Id"; $PersonUidStrNew = "!Person!$Spezialfall!$Id"; $PersonOldUid = ConvertTo-WeeduGuid $PersonUidStrOld; $PersonNewUid = ConvertTo-WeeduGuid $PersonUidStrNew; $PersonExistiert = Test-PersonenExistsInIndex -Uids $PersonOldUid, $PersonNewUid; switch ($PersonExistiert) { 1 { # nach altem Schema erstellt $PersonUid = $PersonUidStrOld; $UidSuffix = $PersonUidStrOld; } default { # nach neuem Schema erstellt $PersonUid = $PersonUidStrNew; $UidPrefix = "$Spezialfall"; $UidSuffix = "!$Spezialfall!$Id"; } } $PersonenInfo = [PSCustomObject]@{ UidPrefix = $UidPrefix; UidSuffix = $UidSuffix; PersonUid = $PersonUid; PersonExistiert = $PersonExistiert; }; return $PersonenInfo; } } function Test-PersonenExistsInIndex { param ( [Parameter(Mandatory)] [array]$Uids ) process { $Entities = Get-PersonenExistInIndex -Uids $Uids; if ($Entities -ne $null) { For ($i = 0; $i -lt $Uids.Count; $i++) { foreach ($Person in $Entities) { if ($Uids[$i].ToLower() -eq $Person.idb_uid.ToLower()) { if ($i -eq 0 -and $Person.prs_aktiv -eq $false) { # alte und inaktive Personen ignorieren continue; } return $i + 1; } } } } return 0; } } function Get-PersonenExistInIndex { param ( [Parameter(Mandatory)] [array]$Uids ) process { $uidString = [string]::Join(",", ($uids | Foreach-Object { '"'+$_+'"' })); $WqlString = 'Personen mit UID in (' + $uidString + ')'; $Entities = Invoke-WqlQuery -WQLAbfrage $WqlString 3>$null 6>$null; return $Entities; } } function Get-AlteAnmeldungFurPersonModulversion { param ( [Parameter(Mandatory)] $PersonUid, [Parameter(Mandatory)] $ModulversionUid ) process { $PersUid = ConvertTo-WeeduGuid $PersonUid; $VersUid = ConvertTo-WeeduGuid $ModulversionUid; $WqlString = 'Anmeldungen [UID] von ' + $PersUid + ' an ' + $VersUid; $Anmeldung = Invoke-WqlQuery -WQLAbfrage $WqlString 3>$null 6>$null; if ($Anmeldung) { return $Anmeldung.idb_uid | select -First 1 } return $null; } } function Set-PersonenmappingFurPersonMandant { param ( [Parameter(Mandatory)] $PersonUid, [Parameter(Mandatory)] $Personenmapping ) process { $PersonUid = ConvertTo-WeeduGuid $PersonUid; $EMailAdressListe = @(); if ($Personenmapping.ZustellEmailAdressListe) { $EMailAdressen = $Personenmapping.ZustellEmailAdressListe.Split(';'); foreach ($EMailAdresse in $EMailAdressen) { $EMailAdressListe += $EMailAdresse.Trim(); } } if ($Personenmapping.GeneriereKundenNummer -eq 'Ja') { $GeneriereKundenNummer = $true; } else { $GeneriereKundenNummer = $false; } if ($Personenmapping.RechnungszustellungPerEMail -eq 'Ja') { $RechnungszustellungPerEMail = $true; } else { $RechnungszustellungPerEMail = $false; } if ($GeneriereKundenNummer) { Set-PersonenMapping -PersonUid $PersonUid -MandantenNummer $Personenmapping.MandantenNummer -GeneriereKundenNummer -ADLoginName $Personenmapping.ADLoginName -RechnungszustellungPerEMail $RechnungszustellungPerEMail -ZustellEmailAdressListe $EMailAdressListe; } else { Set-PersonenMapping -PersonUid $PersonUid -MandantenNummer $Personenmapping.MandantenNummer -KundenNummer $Personenmapping.KundenNummer -ADLoginName $Personenmapping.ADLoginName -RechnungszustellungPerEMail $RechnungszustellungPerEMail -ZustellEmailAdressListe $EMailAdressListe; } } } function Set-RechnungssplitFurPersonMappings { param ( [Parameter(Mandatory)] $PersonUid, [Parameter(Mandatory)] $Rechnungssplit ) process { $RechnungssplitId = Invoke-BuildRechnungssplitUid -PersonenmappingId $Rechnungssplit.PersonenmappingId -RechnungssplitId $Rechnungssplit.SplitId; $RechnungssplitId = ConvertTo-WeeduGuid $RechnungssplitId; $Anteil = $Rechnungssplit.Anteil / 100; $KontierungListe = @(); if ($Rechnungssplit.Kontierungen) { $Kontierungen = $Rechnungssplit.Kontierungen.Split(';'); foreach ($Kontierung in $Kontierungen) { $KontierungListe += $Kontierung.Trim(); } } # finde Personenmapping fur Split foreach ($Personenmapping in $Script:PersonenmappingSplitListe.Values) { if ($Personenmapping.Id -eq $Rechnungssplit.PersonenmappingSplitId) { $PersonenmappingSplit = $Personenmapping; break; } } if ($PersonenmappingSplit -eq $null) { throw "Set-RechnungssplitFurPersonMappings: kein Personenmapping fuer '" + $Rechnungssplit.PersonenmappingSplitId + "' gefunden."; } # get Uid fuer Rechnungsempfaenger Split if (Test-IsGuid($PersonenmappingSplit.PersonId)) { $RgEmpfaenger = $PersonenmappingSplit.PersonId; } else { $PersonInfo = Invoke-BuildPersonUid -Gruppe $Script:PersonenInfo.UidPrefix -Id $PersonenmappingSplit.PersonId; $RgEmpfaenger = $PersonInfo.PersonUid; } $RechnungssplitStatus = Invoke-Weedu -Uri "rest/Rechnungssplits/{0}" -UriParams $RechnungssplitId -Method GET -StatusOnly; if ($RechnungssplitStatus -eq 200) { Set-RechnungsSplit -RechnungsSplitUid $RechnungssplitId -RechnungsadresseUid $Rechnungssplit.RechnungsadresseUid -Anteil $Anteil -Bezeichnung $Rechnungssplit.Bezeichnung -Bemerkung $Rechnungssplit.Bemerkung -SortierPrioritaet $Rechnungssplit.Sortierprioritaet -PlatzhalterProdukte $Kontierungen; } else { $Personenmapping = Get-PersonenMapping -PersonUid $PersonUid -MandantenNummer $PersonenmappingSplit.MandantenNummer; New-RechnungsSplit -RechnungsSplitUid $RechnungssplitId -PersonMappingUid $Personenmapping.uid -RechnungsempfaengerUid $RgEmpfaenger -RechnungsadresseUid $Rechnungssplit.RechnungsadresseUid -Anteil $Anteil -Bezeichnung $Rechnungssplit.Bezeichnung -Bemerkung $Rechnungssplit.Bemerkung -SortierPrioritaet $Rechnungssplit.Sortierprioritaet -PlatzhalterProdukte $Kontierungen; } } } function Invoke-BuildRechnungssplitUid { param ( [Parameter(Mandatory)] $PersonenmappingId, [Parameter(Mandatory)] $RechnungssplitId ) process { if (Test-IsGuid($RechnungssplitId)) { return $RechnungssplitId; } else { return $script:PersonenInfo.PersonUid + "!Rechnungssplit!" + $PersonenmappingId + "!" + $RechnungssplitId; } } } Export-ModuleMember -function Invoke-PersonenImport |