-
Notifications
You must be signed in to change notification settings - Fork 0
/
SAPParse
79 lines (64 loc) · 1.97 KB
/
SAPParse
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
function Get-AllItem {
param (
[string]$CsvPath
)
# Importer le CSV
$Csv = Import-Csv -Path $CsvPath -Delimiter ";"
$ListeArticle = @()
foreach ($article in $Csv) {
$ListeArticle += [PSCustomObject]@{
Article = $article.Article
CDIs = [int]$article.CDis
}
}
return $ListeArticle
}
function Check-MandatoryCDIs {
param (
[array]$Item,
[array]$MandatoryValues
)
$Item = $AllItem
$MandatoryValues = $MandatoryValues
$Result = @()
# Grouper les articles par leur nom
$GroupedByArticle = $Item | Group-Object -Property Article
foreach ($group in $GroupedByArticle) {
$Article = $group.Name
$ArticleItems = $group.Group
foreach ($value in $MandatoryValues) {
$FoundItem = $ArticleItems | Where-Object { $_.CDIs -eq $value }
if ($FoundItem) {
$Result += [PSCustomObject]@{
Article = $Article
CDIs = $value
Status = "Present"
}
} else {
$Result += [PSCustomObject]@{
Article = $Article
CDIs = $value
Status = "Manquant"
}
}
}
}
return $Result
}
function Main {
param (
[string]$CsvPath
)
# Définir les valeurs obligatoires
$MandatoryCDIs = @(10, 20, 30)
# Charger tous les éléments depuis le fichier CSV
$AllItem = Get-AllItem -CsvPath $CsvPath
# Vérifier les valeurs obligatoires pour chaque article
$CheckResult = Check-MandatoryCDIs -Item $AllItem -MandatoryValues $MandatoryCDIs
# Afficher les résultats
$CheckResult | Out-GridView -Title "Vérification des CDIs obligatoires par article"
return $CheckResult
}
# Exemple d'exécution
$Sortie = Main -CsvPath "PATH"
$SortieCsv = Export-Csv -Delimiter ";" -Path "SORTIE_CSV" -NoTypeInformation