Public/Export-Transfer.ps1
|
function Export-Transfer { <# .SYNOPSIS Exports transfers to a file. .DESCRIPTION Exports one or all transfers from a budget to CSV or JSON format. .PARAMETER OutputPath The file path for the export. Extension determines format (.csv or .json). .PARAMETER Name Optional transfer name to export. If omitted, exports all transfers. .PARAMETER Format Output format: CSV or JSON. If not specified, determined by file extension. .PARAMETER Budget Optional budget name to target. Uses active budget if not specified. .PARAMETER DataPath Optional custom path for data storage. Overrides budget-based paths. .EXAMPLE Export-Transfer -OutputPath "transfers.csv" Exports all transfers to a CSV file. .EXAMPLE Export-Transfer -Name "Savings" -OutputPath "savings-transfer.json" Exports a specific transfer to JSON format. .EXAMPLE Export-Transfer -OutputPath "C:\Backups\transfers.json" -Format JSON -Budget "MyPersonalBudget" Exports all transfers from a specific budget to JSON. .OUTPUTS File path of the exported data #> [CmdletBinding()] param( [Parameter(Mandatory)] [string]$OutputPath, [Parameter()] [string]$Name, [Parameter()] [ValidateSet('CSV', 'JSON')] [string]$Format, [Parameter()] [string]$Budget, [Parameter()] [string]$DataPath ) # Get transfers $getParams = @{} if ($Name) { $getParams['Name'] = $Name } if ($Budget) { $getParams['Budget'] = $Budget } if ($DataPath) { $getParams['DataPath'] = $DataPath } $transfers = Get-Transfer @getParams if (-not $transfers -or $transfers.Count -eq 0) { Write-Warning "No transfers found to export." return } # Calculate annual amount for each transfer using helper $transfersWithAnnual = $transfers | ForEach-Object { $annualAmount = Get-CalculatedAmount -Amount $_.Amount -Frequency $_.Frequency -TargetPeriod Annual $_ | Add-Member -NotePropertyName 'AnnualAmount' -NotePropertyValue $annualAmount -PassThru } # Build export parameters $exportParams = @{ Data = $transfersWithAnnual OutputPath = $OutputPath Properties = @('Id', 'Name', 'StartDate', 'Frequency', 'Amount', 'AnnualAmount', 'FromAccountId', 'ToAccountId') EntityType = 'transfer' } if ($Format) { $exportParams['Format'] = $Format } # Use helper for export return Export-EntityData @exportParams } |