fmt/pdi.ps1
|
param($Data, [hashtable] $Options) . "$PSScriptRoot/invoice/template.ps1" $Options = Get-InvoiceOptions $Options pdi $rows = @(Get-InvoiceRows $Data) & { foreach ($head in ($rows | Select-Object -Property $Options.Head -Unique | Sort-Object $Options.Key)) { Expand-InvoiceLine $Options.H $head $Options.Values $lines = @($rows | Where-Object -Property $Options.Key -EQ -Value $head.($Options.Key)) foreach ($row in ($lines | Where-Object -Property $Options.Type -EQ -Value 'd')) { Expand-InvoiceLine $Options.D $row $Options.Values } if ($Options.I) { foreach ($row in ($lines | Where-Object -Property $Options.Type -EQ -Value 'i')) { Expand-InvoiceLine $Options.I $row $Options.Values } } } } | Set-Content -LiteralPath $Options.Path -Encoding utf8NoBOM |