Public/PaySchedules/New-AspirePaySchedule.ps1

<#
.SYNOPSIS
    Creates a new pay schedule in the Aspire API.
.DESCRIPTION
    Uses Invoke-AspireRequest to perform a POST request to the /PaySchedules endpoint.
.PARAMETER PayScheduleName
    The name of the pay schedule (required).
.PARAMETER DailyHoursBeforeOT
    Daily hours before overtime (required, decimal).
.PARAMETER WeeklyHoursBeforeOT
    Weekly hours before overtime (required, decimal).
.PARAMETER Active
    Active status (required, boolean).
.PARAMETER DefaultOTPayCodeID
    Default OT pay code ID (required).
.PARAMETER DefaultPayCodeID
    Default pay code ID (required).
.OUTPUTS
    The response from the API containing the pay schedule details.
.EXAMPLE
    New-AspirePaySchedule -PayScheduleName "Standard Schedule" -DailyHoursBeforeOT 8.0 -WeeklyHoursBeforeOT 40.0 -Active $true -DefaultOTPayCodeID 1 -DefaultPayCodeID 2
#>

function New-AspirePaySchedule {
    [CmdletBinding()]
    param(
        [Parameter(Mandatory = $true)]
        [string]$PayScheduleName,
        [Parameter(Mandatory = $true)]
        [decimal]$DailyHoursBeforeOT,
        [Parameter(Mandatory = $true)]
        [decimal]$WeeklyHoursBeforeOT,
        [Parameter(Mandatory = $true)]
        [bool]$Active,
        [Parameter(Mandatory = $true)]
        [int]$DefaultOTPayCodeID,
        [Parameter(Mandatory = $true)]
        [int]$DefaultPayCodeID
    )

    $body = @{
        PayScheduleName = $PayScheduleName
        DailyHoursBeforeOT = $DailyHoursBeforeOT
        WeeklyHoursBeforeOT = $WeeklyHoursBeforeOT
        Active = $Active
        DefaultOTPayCodeID = $DefaultOTPayCodeID
        DefaultPayCodeID = $DefaultPayCodeID
    }

    return Invoke-AspireRequest -Method POST -Path "/PaySchedules" -Body $body -ApiVersion $null
}