#requires -version 2 [CmdletBinding()] param( [Parameter(Mandatory=$true)][ValidateScript({Test-Path -Path $_ -PathType Leaf})][string] $Path, [string] $Valuta = 'USD', [float] $Kupongskatteprosent = 15.0 ) # Copyright (C) 2015, Svendsen Tech # Author: Joakim Borger Svendsen $ErrorActionPreference = 'Stop' $TempCsv = "${Env:TEMP}\transaksjoner-nordnet-svendsen-tech.tmp.utf8.csv" Get-Content -Path $Path | Set-Content -Encoding UTF8 -Path $TempCsv Import-Csv -Delimiter ';' -Path $TempCsv | Where-Object { $_.Transaksjonstype -eq 'Utbytte' -and $_.Valuta -eq $Valuta } | Select-Object *, @{n='VekslingskursFloat'; e={ [float]($_.Vekslingskurs -replace ',', '.') }}, @{n='BeløpFloat'; e={ [float]($_.'Beløp' -replace ',', '.') }} | Group-Object -Property Verdipapir | ForEach-Object -Begin { [float] $KumulativSumMinValuta = 0; [float] $KumulativSumAnnenValuta = 0; [int] $KumulativCount = 0 } -Process { $Count = $_.Count $KumulativCount += $Count $Verdipapir = $_.Name $t = $_.Group | Select-Object *, @{n='MinValutaNettoBeløp'; e={ [math]::Round( ($_.'BeløpFloat' * $_.VekslingskursFloat * (1-($Kupongskatteprosent/100)) ), 4) }} $SumMinValuta = $t | Measure-Object -Sum -Property 'MinValutaNettoBeløp' | Select-Object -ExpandProperty Sum $SumAnnenValuta = $t | Measure-Object -Sum -Property 'BeløpFloat' | Select-Object -ExpandProperty Sum $KumulativSumMinValuta += $SumMinValuta $KumulativSumAnnenValuta += $SumAnnenValuta $AvgMinValuta = $SumMinValuta / $Count New-Object -TypeName PSObject -Property @{ Verdipapir = $Verdipapir 'Antall utbetalinger' = $Count SumUtbytteAnnenValutaBrutto = [math]::Round($SumAnnenValuta, 2) SumUtbytteAnnenValutaNetto = [math]::Round($SumAnnenValuta * (1-($Kupongskatteprosent/100)), 2) SumUtbytteMinValutaBrutto = [math]::Round(($SumMinValuta / (1-($Kupongskatteprosent/100))), 2) SumUtbytteMinValutaNetto = [math]::Round($SumMinValuta, 2) GjsnUtbytteAnnenValutaBrutto = [math]::Round(($SumAnnenValuta / $Count), 2) GjsnUtbytteAnnenValutaNetto = [math]::Round(($SumAnnenValuta * (1-($Kupongskatteprosent/100)) / $Count), 2) GjsnUtbytteMinValutaBrutto = [math]::Round(($SumMinValuta / (1-($Kupongskatteprosent/100)) / $Count), 2) GjsnUtbytteMinValutaNetto = [math]::Round(($SumMinValuta / $Count), 2) } | Select-Object Verdipapir, 'Antall utbetalinger', SumUtbytteAnnenValutaBrutto, SumUtbytteAnnenValutaNetto, SumUtbytteMinValutaBrutto, SumUtbytteMinValutaNetto, GjsnUtbytteAnnenValutaBrutto, GjsnUtbytteAnnenValutaNetto, GjsnUtbytteMinValutaBrutto, GjsnUtbytteMinValutaNetto } -End { New-Object -TypeName PSObject -Property @{ Verdipapir = '# ALLE VERDIPAPIRER #' 'Antall utbetalinger' = $KumulativCount SumUtbytteAnnenValutaBrutto = [math]::Round($KumulativSumAnnenValuta, 2) SumUtbytteAnnenValutaNetto = [math]::Round($KumulativSumAnnenValuta * (1-($Kupongskatteprosent/100)), 2) SumUtbytteMinValutaBrutto = [math]::Round(($KumulativSumMinValuta / (1-($Kupongskatteprosent/100))), 2) SumUtbytteMinValutaNetto = [math]::Round($KumulativSumMinValuta, 2) GjsnUtbytteAnnenValutaBrutto = [math]::Round(($KumulativSumAnnenValuta / $KumulativCount), 2) GjsnUtbytteAnnenValutaNetto = [math]::Round(($KumulativSumAnnenValuta * (1-($Kupongskatteprosent/100)) / $KumulativCount), 2) GjsnUtbytteMinValutaBrutto = [math]::Round(($KumulativSumMinValuta / (1-($Kupongskatteprosent/100)) / $KumulativCount), 2) GjsnUtbytteMinValutaNetto = [math]::Round(($KumulativSumMinValuta / $KumulativCount), 2) } | Select-Object Verdipapir, 'Antall utbetalinger', SumUtbytteAnnenValutaBrutto, SumUtbytteAnnenValutaNetto, SumUtbytteMinValutaBrutto, SumUtbytteMinValutaNetto, GjsnUtbytteAnnenValutaBrutto, GjsnUtbytteAnnenValutaNetto, GjsnUtbytteMinValutaBrutto, GjsnUtbytteMinValutaNetto }