Rechnungspositionen.psm1
function New-Rechnungsposition { [CmdletBinding(DefaultParameterSetName="KontierungNummern")] param( $RechnungspositionUid, [Parameter(Mandatory, ValueFromPipeline, Position = 0)] $RechnungsempfaengerUid, [Parameter(Mandatory, ParameterSetName = "KontierungNummern")] [int]$Mandantennummer, [Parameter(Mandatory, ParameterSetName = "KontierungUid")] $PlatzhalterProdukt, $AbacusAblauf, [Parameter(Mandatory, ParameterSetName = "KontierungNummern")] $PlatzhalterProduktNummer, [Parameter(Mandatory)] $WaehrungsCode, $AuftragserfasserUid, $LeistungsempfaengerUid, $RechnungsadresseUid, $VerrechnenAb, $VerrechnenAbWennBerechtigt, $AusloesenBis, $AusloesenBisWennBerechtigt, [Parameter(Mandatory)] [decimal]$Menge, [Parameter(Mandatory)] [double]$Stueckpreis, [double]$Stueckrabatt, [Parameter(Mandatory)] [string]$Positionstitel, [string]$Positionsbeschreibung, $PositionstextListe, $RechnungstextHeaderListe, $RechnungstextFooterListe, $Quellprodukt, $MwStCode, $Lieferdatum, $Gruppierungsmerkmal, $DispoDatum, $KostentraegerUid, $KostentraegerText, $LeistungszeitraumVon, $LeistungszeitraumBis, $HabenKonto, $SollKonto, $HabenKostenstelle, $SollKostenstelle, $FibuDatum, $EntstandenAus, $BeilagenUids, $SammelpositionText ) process{ $Body = New-Object PSCustomObject; if ($PSBoundParameters.ContainsKey("RechnungspositionUid")) { $Body | Add-Member -MemberType NoteProperty -Name "Uid" -Value (ConvertTo-WeeduGuid $RechnungspositionUid); } $Body | Add-Member -MemberType NoteProperty -Name "RechnungsempfaengerUid" -Value (ConvertTo-WeeduGuid $RechnungsempfaengerUid); $Body | Add-Member -MemberType NoteProperty -Name "Mandantennummer" -Value $Mandantennummer; if ($PSBoundParameters.ContainsKey("PlatzhalterProdukt")) { $Body | Add-Member -MemberType NoteProperty -Name "PlatzhalterProdukt" -Value $PlatzhalterProdukt; } if ($PSBoundParameters.ContainsKey("AbacusAblauf")) { $Body | Add-Member -MemberType NoteProperty -Name "AbacusAblauf" -Value $AbacusAblauf; } if ($PSBoundParameters.ContainsKey("PlatzhalterProduktNummer")) { $Body | Add-Member -MemberType NoteProperty -Name "PlatzhalterProduktNummer" -Value $PlatzhalterProduktNummer; } $Body | Add-Member -MemberType NoteProperty -Name "WaehrungsCode" -Value $WaehrungsCode; if ($PSBoundParameters.ContainsKey("AuftragserfasserUid")) { $Body | Add-Member -MemberType NoteProperty -Name "AuftragserfasserUid" -Value (ConvertTo-WeeduGuid $AuftragserfasserUid); } if ($PSBoundParameters.ContainsKey("LeistungsempfaengerUid")) { $Body | Add-Member -MemberType NoteProperty -Name "LeistungsempfaengerUid" -Value (ConvertTo-WeeduGuid $LeistungsempfaengerUid); } if ($PSBoundParameters.ContainsKey("RechnungsadresseUid")) { $Body | Add-Member -MemberType NoteProperty -Name "RechnungsadresseUid" -Value (ConvertTo-WeeduGuid $RechnungsadresseUid); } if ($PSBoundParameters.ContainsKey("VerrechnenAb")) { $Body | Add-Member -MemberType NoteProperty -Name "VerrechnenAb" -Value $VerrechnenAb; } if ($PSBoundParameters.ContainsKey("VerrechnenAbWennBerechtigt")) { $Body | Add-Member -MemberType NoteProperty -Name "VerrechnenAbWennBerechtigt" -Value $VerrechnenAbWennBerechtigt; } if ($PSBoundParameters.ContainsKey("AusloesenBis")) { $Body | Add-Member -MemberType NoteProperty -Name "AusloesenBis" -Value $AusloesenBis; } if ($PSBoundParameters.ContainsKey("AusloesenBisWennBerechtigt")) { $Body | Add-Member -MemberType NoteProperty -Name "AusloesenBisWennBerechtigt" -Value $AusloesenBisWennBerechtigt; } $Body | Add-Member -MemberType NoteProperty -Name "Menge" -Value $Menge; $Body | Add-Member -MemberType NoteProperty -Name "Stueckpreis" -Value $Stueckpreis; if ($PSBoundParameters.ContainsKey("Stueckrabatt")) { $Body | Add-Member -MemberType NoteProperty -Name "Stueckrabatt" -Value $Stueckrabatt; } $Body | Add-Member -MemberType NoteProperty -Name "Positionstitel" -Value $Positionstitel; if ($PSBoundParameters.ContainsKey("MwStCode")) { $Body | Add-Member -MemberType NoteProperty -Name "MwStCode" -Value $MwStCode; } if ($PSBoundParameters.ContainsKey("Positionsbeschreibung")) { $Body | Add-Member -MemberType NoteProperty -Name "Positionsbeschreibung" -Value $Positionsbeschreibung; } if ($PSBoundParameters.ContainsKey("Lieferdatum")) { $Body | Add-Member -MemberType NoteProperty -Name "Lieferdatum" -Value (ConvertTo-WeeduDateString $Lieferdatum); } if ($PSBoundParameters.ContainsKey("Gruppierungsmerkmal")) { $Body | Add-Member -MemberType NoteProperty -Name "Gruppierungsmerkmal" -Value (ConvertTo-WeeduGuid $Gruppierungsmerkmal); } if ($PSBoundParameters.ContainsKey("DispoDatum")) { $Body | Add-Member -MemberType NoteProperty -Name "DispoDatum" -Value (ConvertTo-WeeduDateString $DispoDatum); } if ($PSBoundParameters.ContainsKey("FibuDatum")) { $Body | Add-Member -MemberType NoteProperty -Name "FibuDatum" -Value (ConvertTo-WeeduDateString $FibuDatum); } if ($PSBoundParameters.ContainsKey("KostentraegerUid")) { $Body | Add-Member -MemberType NoteProperty -Name "KostentraegerUid" -Value (ConvertTo-WeeduGuid $KostentraegerUid); } if ($PSBoundParameters.ContainsKey("KostentraegerText")) { $Body | Add-Member -MemberType NoteProperty -Name "KostentraegerText" -Value $KostentraegerText; } if ($PSBoundParameters.ContainsKey("LeistungszeitraumVon")) { $Body | Add-Member -MemberType NoteProperty -Name "LeistungszeitraumVon" -Value $LeistungszeitraumVon; } if ($PSBoundParameters.ContainsKey("LeistungszeitraumBis")) { $Body | Add-Member -MemberType NoteProperty -Name "LeistungszeitraumBis" -Value $LeistungszeitraumBis; } if ($PSBoundParameters.ContainsKey("HabenKonto")) { $Body | Add-Member -MemberType NoteProperty -Name "HabenKonto" -Value $HabenKonto; } if ($PSBoundParameters.ContainsKey("SollKonto")) { $Body | Add-Member -MemberType NoteProperty -Name "SollKonto" -Value $SollKonto; } if ($PSBoundParameters.ContainsKey("HabenKostenstelle")) { $Body | Add-Member -MemberType NoteProperty -Name "HabenKostenstelle" -Value $HabenKostenstelle; } if ($PSBoundParameters.ContainsKey("SollKostenstelle")) { $Body | Add-Member -MemberType NoteProperty -Name "SollKostenstelle" -Value $SollKostenstelle; } if ($PSBoundParameters.ContainsKey("PositionstextListe")) { $PositionstextListe = [array](ConvertTo-WeeduPriorityList $PositionstextListe) $Body | Add-Member -MemberType NoteProperty -Name "PositionstextListe" -Value $PositionstextListe; } if ($PSBoundParameters.ContainsKey("RechnungstextHeaderListe")) { $RechnungstextHeaderListe = [array](ConvertTo-WeeduPriorityList $RechnungstextHeaderListe) $Body | Add-Member -MemberType NoteProperty -Name "RechnungstextHeaderListe" -Value $RechnungstextHeaderListe; } if ($PSBoundParameters.ContainsKey("RechnungstextFooterListe")) { $RechnungstextFooterListe = [array](ConvertTo-WeeduPriorityList $RechnungstextFooterListe) $Body | Add-Member -MemberType NoteProperty -Name "RechnungstextFooterListe" -Value $RechnungstextFooterListe; } if ($PSBoundParameters.ContainsKey("Quellprodukt")) { $Body | Add-Member -MemberType NoteProperty -Name "Quellprodukt" -Value $Quellprodukt; } if ($PSBoundParameters.ContainsKey("EntstandenAus")) { $Body | Add-Member -MemberType NoteProperty -Name "EntstandenAus" -Value ($EntstandenAus | ForEach-Object { ConvertTo-WeeduGuid $_ }); } if ($PSBoundParameters.ContainsKey("BeilagenUids")) { $BeilagenUids = [array]($BeilagenUids | ForEach-Object { ConvertTo-WeeduGuid $_ }) $Body | Add-Member -MemberType NoteProperty -Name "BeilagenUids" -Value $BeilagenUids; } if ($PSBoundParameters.ContainsKey("SammelpositionText")) { $Body | Add-Member -MemberType NoteProperty -Name "SammelpositionText" -Value $SammelpositionText; } Invoke-Weedu -Uri "rest/Rechnungspositionen" -Method POST -Body $Body; } } function Set-Rechnungsposition { [CmdletBinding(DefaultParameterSetName = "UID")] param( [Parameter(Mandatory, ValueFromPipeline, Position = 0)] $RechnungspositionUid, [Parameter(Mandatory, ParameterSetName = "Nummer")] $Mandantennummer, [Parameter(ParameterSetName = "UID")] $PlatzhalterProdukt, $AbacusAblauf, [Parameter(Mandatory, ParameterSetName = "Nummer")] $PlatzhalterProduktNummer, [string]$WaehrungsCode, $RechnungsempfaengerUid, $AuftragserfasserUid, $LeistungsempfaengerUid, $RechnungsadresseUid, $VerrechnenAb, $VerrechnenAbWennBerechtigt, $AusloesenBis, $AusloesenBisWennBerechtigt, [decimal]$Menge, [double]$Stueckpreis, [double]$Stueckrabatt, [string]$Positionstitel, [string]$Positionsbeschreibung, $PositionstextListe, $RechnungstextHeaderListe, $RechnungstextFooterListe, $Quellprodukt, $MwStCode, $Lieferdatum, $Gruppierungsmerkmal, $DispoDatum, $KostentraegerUid, $KostentraegerText, $LeistungszeitraumVon, $LeistungszeitraumBis, $HabenKonto, $SollKonto, $HabenKostenstelle, $SollKostenstelle, $FibuDatum, $EntstandenAus, $BeilagenUids, $SammelpositionText ) process{ $RechnungspositionUid = ConvertTo-WeeduGuid $RechnungspositionUid; $Body = New-Object PSCustomObject; Write-Verbose "Rechnungspositionen: $RechnungspositionUid"; if ($PSBoundParameters.ContainsKey("Mandantennummer")) { $Body | Add-Member -MemberType NoteProperty -Name "Mandantennummer" -Value $Mandantennummer; } if ($PSBoundParameters.ContainsKey("PlatzhalterProdukt")) { $Body | Add-Member -MemberType NoteProperty -Name "PlatzhalterProdukt" -Value $PlatzhalterProdukt; } if ($PSBoundParameters.ContainsKey("AbacusAblauf")) { $Body | Add-Member -MemberType NoteProperty -Name "AbacusAblauf" -Value $AbacusAblauf; } if ($PSBoundParameters.ContainsKey("PlatzhalterProduktNummer")) { $Body | Add-Member -MemberType NoteProperty -Name "PlatzhalterProduktNummer" -Value $PlatzhalterProduktNummer; } if ($PSBoundParameters.ContainsKey("WaehrungsCode")) { $Body | Add-Member -MemberType NoteProperty -Name "WaehrungsCode" -Value $WaehrungsCode; } if ($PSBoundParameters.ContainsKey("RechnungsempfaengerUid")) { $Body | Add-Member -MemberType NoteProperty -Name "RechnungsempfaengerUid" -Value (ConvertTo-WeeduGuid $RechnungsempfaengerUid); } if ($PSBoundParameters.ContainsKey("AuftragserfasserUid")) { $Body | Add-Member -MemberType NoteProperty -Name "AuftragserfasserUid" -Value (ConvertTo-WeeduGuid $AuftragserfasserUid); } if ($PSBoundParameters.ContainsKey("LeistungsempfaengerUid")) { $Body | Add-Member -MemberType NoteProperty -Name "LeistungsempfaengerUid" -Value (ConvertTo-WeeduGuid $LeistungsempfaengerUid); } if ($PSBoundParameters.ContainsKey("RechnungsadresseUid")) { $Body | Add-Member -MemberType NoteProperty -Name "RechnungsadresseUid" -Value (ConvertTo-WeeduGuid $RechnungsadresseUid); } if ($PSBoundParameters.ContainsKey("VerrechnenAb")) { $Body | Add-Member -MemberType NoteProperty -Name "VerrechnenAb" -Value $VerrechnenAb; } if ($PSBoundParameters.ContainsKey("VerrechnenAbWennBerechtigt")) { $Body | Add-Member -MemberType NoteProperty -Name "VerrechnenAbWennBerechtigt" -Value $VerrechnenAbWennBerechtigt; } if ($PSBoundParameters.ContainsKey("AusloesenBis")) { $Body | Add-Member -MemberType NoteProperty -Name "AusloesenBis" -Value $AusloesenBis; } if ($PSBoundParameters.ContainsKey("AusloesenBisWennBerechtigt")) { $Body | Add-Member -MemberType NoteProperty -Name "AusloesenBisWennBerechtigt" -Value $AusloesenBisWennBerechtigt; } if ($PSBoundParameters.ContainsKey("Menge")) { $Body | Add-Member -MemberType NoteProperty -Name "Menge" -Value $Menge; } if ($PSBoundParameters.ContainsKey("Stueckpreis")) { $Body | Add-Member -MemberType NoteProperty -Name "Stueckpreis" -Value $Stueckpreis; } if ($PSBoundParameters.ContainsKey("Stueckrabatt")) { $Body | Add-Member -MemberType NoteProperty -Name "Stueckrabatt" -Value $Stueckrabatt; } if ($PSBoundParameters.ContainsKey("Positionstitel")) { $Body | Add-Member -MemberType NoteProperty -Name "Positionstitel" -Value $Positionstitel; } if ($PSBoundParameters.ContainsKey("Positionsbeschreibung")) { $Body | Add-Member -MemberType NoteProperty -Name "Positionsbeschreibung" -Value $Positionsbeschreibung; } if ($PSBoundParameters.ContainsKey("MwStCode")) { $Body | Add-Member -MemberType NoteProperty -Name "MwStCode" -Value $MwStCode; } if ($PSBoundParameters.ContainsKey("Lieferdatum")) { $Body | Add-Member -MemberType NoteProperty -Name "Lieferdatum" -Value (ConvertTo-WeeduDateString $Lieferdatum); } if ($PSBoundParameters.ContainsKey("Gruppierungsmerkmal")) { $Body | Add-Member -MemberType NoteProperty -Name "Gruppierungsmerkmal" -Value (ConvertTo-WeeduGuid $Gruppierungsmerkmal); } if ($PSBoundParameters.ContainsKey("DispoDatum")) { $Body | Add-Member -MemberType NoteProperty -Name "DispoDatum" -Value (ConvertTo-WeeduDateString $DispoDatum); } if ($PSBoundParameters.ContainsKey("FibuDatum")) { $Body | Add-Member -MemberType NoteProperty -Name "FibuDatum" -Value (ConvertTo-WeeduDateString $FibuDatum); } if ($PSBoundParameters.ContainsKey("KostentraegerUid")) { $Body | Add-Member -MemberType NoteProperty -Name "KostentraegerUid" -Value (ConvertTo-WeeduGuid $KostentraegerUid); } if ($PSBoundParameters.ContainsKey("KostentraegerText")) { $Body | Add-Member -MemberType NoteProperty -Name "KostentraegerText" -Value $KostentraegerText; } if ($PSBoundParameters.ContainsKey("LeistungszeitraumVon")) { $Body | Add-Member -MemberType NoteProperty -Name "LeistungszeitraumVon" -Value $LeistungszeitraumVon; } if ($PSBoundParameters.ContainsKey("LeistungszeitraumBis")) { $Body | Add-Member -MemberType NoteProperty -Name "LeistungszeitraumBis" -Value $LeistungszeitraumBis; } if ($PSBoundParameters.ContainsKey("HabenKonto")) { $Body | Add-Member -MemberType NoteProperty -Name "HabenKonto" -Value $HabenKonto; } if ($PSBoundParameters.ContainsKey("SollKonto")) { $Body | Add-Member -MemberType NoteProperty -Name "SollKonto" -Value $SollKonto; } if ($PSBoundParameters.ContainsKey("HabenKostenstelle")) { $Body | Add-Member -MemberType NoteProperty -Name "HabenKostenstelle" -Value $HabenKostenstelle; } if ($PSBoundParameters.ContainsKey("SollKostenstelle")) { $Body | Add-Member -MemberType NoteProperty -Name "SollKostenstelle" -Value $SollKostenstelle; } if ($PSBoundParameters.ContainsKey("PositionstextListe")) { $PositionstextListe = [array](ConvertTo-WeeduPriorityList $PositionstextListe) $Body | Add-Member -MemberType NoteProperty -Name "PositionstextListe" -Value $PositionstextListe; } if ($PSBoundParameters.ContainsKey("RechnungstextHeaderListe")) { $RechnungstextHeaderListe = [array](ConvertTo-WeeduPriorityList $RechnungstextHeaderListe) $Body | Add-Member -MemberType NoteProperty -Name "RechnungstextHeaderListe" -Value $RechnungstextHeaderListe; } if ($PSBoundParameters.ContainsKey("RechnungstextFooterListe")) { $RechnungstextFooterListe = [array](ConvertTo-WeeduPriorityList $RechnungstextFooterListe) $Body | Add-Member -MemberType NoteProperty -Name "RechnungstextFooterListe" -Value $RechnungstextFooterListe; } if ($PSBoundParameters.ContainsKey("Quellprodukt")) { $Body | Add-Member -MemberType NoteProperty -Name "Quellprodukt" -Value $Quellprodukt; } if ($PSBoundParameters.ContainsKey("EntstandenAus")) { $Body | Add-Member -MemberType NoteProperty -Name "EntstandenAus" -Value ($EntstandenAus | ForEach-Object { ConvertTo-WeeduGuid $_ }); } if ($PSBoundParameters.ContainsKey("BeilagenUids")) { $BeilagenUids = [array]($BeilagenUids | ForEach-Object { ConvertTo-WeeduGuid $_ }) $Body | Add-Member -MemberType NoteProperty -Name "BeilagenUids" -Value $BeilagenUids; } if ($PSBoundParameters.ContainsKey("SammelpositionText")) { $Body | Add-Member -MemberType NoteProperty -Name "SammelpositionText" -Value $SammelpositionText; } Invoke-Weedu -Uri "rest/Rechnungspositionen?uids={0}" -UriParams @($RechnungspositionUid) -Method PUT -Body $Body; } } function Remove-Rechnungsposition { [CmdletBinding()] param( [Parameter(Mandatory, ValueFromPipeline, Position = 0)] $RechnungspositionUid ) process { $Body = New-Object PSCustomObject; Invoke-Weedu -Uri "rest/Rechnungspositionen/{0}" -UriParams @(ConvertTo-WeeduGuid $RechnungspositionUid) -Method DELETE; } } function Copy-Rechnungsposition { [CmdletBinding()] param( [Parameter(Mandatory, HelpMessage = "Uid der zu kopierenden Rechnungsposition")] $RechnungspositionUid, [Parameter(HelpMessage = "GUID, welche die Rechnungsposition referenziert (synthetische oder echte)")] $NewRechnungspositionUid, [Parameter(HelpMessage = "Wenn true so wird die Menge der zu kopierenden Rechnungsposition umgekehrt, d.h. sie wird mit dem Faktor (-1) multipliziert")] [bool]$MengeUmkehren, [Parameter(HelpMessage = "Ab diesem Datum wird die Rechnungsposition für die Verrechnung berücksichtigt. Im UTC Format, z.B. 2017-10-14T08:35:45Z")] $VerrechnenAb, [Parameter(HelpMessage = "An diesem Datum wird die Verrechnung der Rechnungposition spätestens ausgelöst. Im UTC Format, z.B. 2017-10-15T08:35:45Z")] $AusloesenBis, [Parameter(HelpMessage = "Zusätzliche Informationen zur Position. Text wird als kleiner Abschnitt unterhalb der Bezeichnung ausgegeben.")] [string]$ZusaetzlicherText ) process{ $Body = New-Object PSCustomObject; if ($PSBoundParameters.ContainsKey("NewRechnungspositionUid")) { $Body | Add-Member -MemberType NoteProperty -Name "Uid" -Value ConvertTo-WeeduGuid $NewRechnungspositionUid; } if ($PSBoundParameters.ContainsKey("VerrechnenAb")) { $Body | Add-Member -MemberType NoteProperty -Name "VerrechnenAb" -Value $VerrechnenAb; } if ($PSBoundParameters.ContainsKey("AusloesenBis")) { $Body | Add-Member -MemberType NoteProperty -Name "AusloesenBis" -Value $AusloesenBis; } if ($PSBoundParameters.ContainsKey("MengeUmkehren")) { $Body | Add-Member -MemberType NoteProperty -Name "MengeUmkehren" -Value $MengeUmkehren; } if ($PSBoundParameters.ContainsKey("ZusaetzlicherText")) { $Body | Add-Member -MemberType NoteProperty -Name "ZusaetzlicherText" -Value $ZusaetzlicherText; } Invoke-Weedu -Uri "rest/Rechnungspositionen/{0}/kopieren" -UriParams @(ConvertTo-WeeduGuid $RechnungspositionUid) -Method POST -Body $Body; } } Export-ModuleMember -function New-Rechnungsposition Export-ModuleMember -function Set-Rechnungsposition Export-ModuleMember -function Copy-Rechnungsposition Export-ModuleMember -function Remove-Rechnungsposition |