Rapport avancé - Affectation -  Rapport d'affectation par ligne (problème d'affectation erronée)

Il est possible dans certaines configurations que le rapport d'affectation affiche des affectations de la veille. Ce phénomène est présent lorsque les horaires d'un poste se trouvent à cheval sur deux journées.

Pour pallier au problème, il est nécessaire de vérifier dans la formule que le début de l'affectation est présent dans la journée de l'entête.

Ci-dessous un exemple de formule dans le cas où l'on souhaite afficher en entête "Ligne" et "Début".




Configuration du rapport
1) Créer une nouvelle brique "Rapport temporel" avec une période de type "1 Jour".
2) Créer une brique "Tableau de synthèse" dépendante de la première. Les paramètres nécessaires sont "Affectation" pour le type de sources, et "Formule" pour le type de données dans le tableau.
3) Ajouter les lignes et colonnes. Dans ce cas précis, il faut en ligne "Ligne" et en colonne "Début".
4) Ajouter la formule, cliquer sur "Hauteur automatique des cellules" et enregistrer.



System.Globalization.CultureInfo culture = new System.Globalization.CultureInfo("fr-BE");
DateTime dtHeaders = Convert.ToDateTime(Headers._RealStart.ToString().Substring(1,9),culture);
String format1 = "{0:HH:mm -}"; String format2 = "{0:HH:mm}";
string toDisplay= "";
string allocToProcess = Source.Allocation.Where(Properties.Allocation.Role.ProcessUnit==Headers._Role_ProcessUnit).List(Properties.Allocation.RealStart.Format(format1),Properties.Allocation.RealEnd.Format(format2),Properties.Allocation.Personnel.FirstName,Properties.Allocation.Personnel.LastName,Properties.Allocation.Role.Role);
string[] alloc = allocToProcess.Split('\n');
string allocStartToProcess = Source.Allocation.Where(Properties.Allocation.Role.ProcessUnit==Headers._Role_ProcessUnit).List(Properties.Allocation.RealStart);
string[] allocStart = allocStartToProcess.Split('\n');


for (int i=0; i < alloc.Length; i++)
{


if(allocStart[i] != " " && allocStart[i] != "" && allocStart[i] != "-")
{
int compareStart = DateTime.Compare(Convert.ToDateTime(allocStart[i].Trim(), culture), dtHeaders);
int compareStop = DateTime.Compare(Convert.ToDateTime(allocStart[i].Trim(), culture), dtHeaders.AddDays(1));
if (compareStart >= 0 && compareStop <= 0 )
{
toDisplay += alloc[i] + "\n";
}
/*
//Pour débug
else
{
toDisplay += "ERROR :" + alloc[i] + " DATE :" +allocStart[i] + "\n";
}
*/

}
}


toDisplay

Mis-à-jour le 21-03-16 par RVA.
Fichiers
19-03-2015 11-47-28.jpg