Functions/BusinessLayer/ProfitCenter.ps1
|
<# Functions for the ProfitCenter table - one of OIM's three organizational-unit types alongside Department and Locality (see Department.ps1 / Locality.ps1). If your OIM instance has a genuinely custom "Org" table, this file is a direct template for it - every table involved (ProfitCenter/UID_ProfitCenter/ParentProfitCenter) would just be renamed. #> function Get-OIMProfitCenter { <# .SYNOPSIS Gets one or more ProfitCenter objects. .EXAMPLE Get-OIMProfitCenter -ShortName CC100 .EXAMPLE Get-OIMProfitCenter -id $uid #> [CmdletBinding(DefaultParameterSetName = 'Search')] param( [Parameter(ParameterSetName = 'Single', Mandatory = $true)] [Alias('uid')] [string]$id, [Parameter(ParameterSetName = 'Search')] [string]$ShortName, [Parameter(ParameterSetName = 'Search')] [string]$Where, [Parameter(ParameterSetName = 'Search')] [int]$First ) if ($PSCmdlet.ParameterSetName -eq 'Single') { Get-OIMObject -ObjectName ProfitCenter -id $id return } $conditions = [Collections.Generic.List[string]]::new() if ($PSBoundParameters.ContainsKey('ShortName')) { $conditions.Add("ShortName = '$($ShortName | ConvertTo-SQLLiteral)'") } if ($PSBoundParameters.ContainsKey('Where')) { $conditions.Add("($Where)") } $getParams = @{ ObjectName = 'ProfitCenter' } if ($conditions.Count -gt 0) { $getParams['Where'] = $conditions -join ' AND ' } if ($PSBoundParameters.ContainsKey('First')) { $getParams['First'] = $First } Get-OIMObject @getParams } function New-OIMProfitCenter { <# .SYNOPSIS Creates a ProfitCenter object. .PARAMETER ParentProfitCenter A ProfitCenter object (as returned by Get-OIMProfitCenter) or UID string to nest this one under. .PARAMETER checkexists If a ProfitCenter with the given -ShortName already exists, return it instead of creating a duplicate. .EXAMPLE New-OIMProfitCenter -ShortName CC100 -AccountNumber 100 #> [CmdletBinding(SupportsShouldProcess)] param( [Parameter(Mandatory = $true)] [string]$ShortName, [Parameter(Mandatory = $true)] [string]$AccountNumber, $ParentProfitCenter, [hashtable]$Properties = @{}, [switch]$checkexists ) if ($checkexists) { $existing = Get-OIMProfitCenter -ShortName $ShortName if ($null -ne $existing) { return $existing } } $allProperties = @{ ShortName = $ShortName } if ($PSBoundParameters.ContainsKey('AccountNumber')) { $allProperties['AccountNumber'] = $AccountNumber } if ($PSBoundParameters.ContainsKey('ParentProfitCenter')) { $allProperties['UID_ParentProfitCenter'] = ConvertTo-OIMUID -InputObject $ParentProfitCenter -PropertyName UID_ProfitCenter } foreach ($key in $Properties.Keys) { $allProperties[$key] = $Properties[$key] } if ($PSCmdlet.ShouldProcess($ShortName, 'Create ProfitCenter')) { New-OIMObject -ObjectName ProfitCenter -Properties $allProperties -Confirm:$false } } function Set-OIMProfitCenter { <# .SYNOPSIS Updates properties on one or more ProfitCenter objects. .EXAMPLE Get-OIMProfitCenter -ShortName CC100 | Set-OIMProfitCenter -Properties @{AccountNumber = '101'} #> [CmdletBinding(SupportsShouldProcess)] param( [Parameter(Mandatory = $true, ValueFromPipeline = $true)] $Object, [Parameter(Mandatory = $true)] [hashtable]$Properties ) Process { if ($PSCmdlet.ShouldProcess("$($Object.UID_ProfitCenter)", 'Update ProfitCenter')) { $Object | Set-OIMObject -Properties $Properties -Confirm:$false } } } function Remove-OIMProfitCenter { <# .SYNOPSIS Removes one or more ProfitCenter objects. .EXAMPLE Get-OIMProfitCenter -ShortName CC100 | Remove-OIMProfitCenter #> [CmdletBinding(SupportsShouldProcess)] param( [Parameter(Mandatory = $true, ValueFromPipeline = $true)] $Object ) Process { if ($PSCmdlet.ShouldProcess("$($Object.UID_ProfitCenter)", 'Remove ProfitCenter')) { $Object | Remove-OIMObject -Confirm:$false } } } |