Files
powershell/Dennis_Scripts/ParseFinanceNonPersistentAX.ps1
2023-03-09 09:06:25 +01:00

54 lines
1.4 KiB
PowerShell

$files = Get-Item C:\Users\ewpmni\Desktop\NonPers\Finance*.xml
$fileCount = $files.Count
$fileNum = 0
$result = foreach($file in $files) {
$fileNum++
Write-Progress -Id 1 -Activity "File" -Status "$($file.Name) - Loading XML" -PercentComplete ($fileNum / $fileCount * 100)
$xml = [xml](Get-Content $file)
Write-Progress -Id 1 -Activity "File" -Status "$($file.Name) - Processing invoices" -PercentComplete ($fileNum / $fileCount * 100)
$invoiceCount = $xml.DataExportFile.DataGroup.DataType.Finance.Invoice.Count
$invoiceNum = 0
foreach($invoice in $xml.DataExportFile.DataGroup.DataType.Finance.Invoice) {
$invoiceNum++
Write-Progress -ParentId 1 -Activity "Invoice" -Status "$invoiceNum / $invoiceCount" -PercentComplete ($invoiceNum / $invoiceCount * 100)
[pscustomobject]@{
ID = $invoice.DocumentUniqueID
File = $file.Name
PTO = $invoice.PTORefNumber
}
}
Write-Progress -ParentId 1 -Activity "Invoice" -Completed
}
$dup = @{}
$dupIds = for($i = 0; $i -lt $result.Count; $i++) {
$id = "{0}_{1}" -f $result[$i].ID, $result[$i].PTO
if(-not $dup.ContainsKey($id)) {
$dup[$id] = @( $result[$i].File )
}
else {
$dup[$id] += $result[$i].File
$id
}
}
foreach($id in $dupIds) {
Write-Verbose -Verbose "ID: $id"
$dup[$id]
}