Private/Get-KadenTransactionCode.ps1

function Get-KadenTransactionCode {
    <#
    .SYNOPSIS
        Map an open transaction journal to the interruption code a developer sees.
    #>

    [CmdletBinding()]
    param(
        $Journal
    )

    if (-not $Journal) {
        return $null
    }

    switch ([string]$Journal.status) {
        'planned' { return 'KDN-TXN-PLANNED' }
        'backup-incomplete' { return 'KDN-TXN-BACKUP-INCOMPLETE' }
        'replacement-incomplete' { return 'KDN-TXN-REPLACEMENT-INCOMPLETE' }
        'payload-verified' { return 'KDN-TXN-STATE-PENDING' }
        'completed' { return $null }
        default {
            $operations = @($Journal.operations)
            $replaced = @($operations | Where-Object { [string]$_.replacementStatus -eq 'complete' })
            if ($replaced.Count -gt 0) {
                return 'KDN-TXN-REPLACEMENT-INCOMPLETE'
            }
            return 'KDN-TXN-BACKUP-INCOMPLETE'
        }
    }
}