Skip to main content
Version: Next

Exemple de vue permet de calculer la durée des étapes (en excluant les WE) + les moyennes de temps de traitement

Ci-joint un exemple :

SELECT 
D.id as id,
D.reference as reference,

FRM.DateDemande as "DateDemande",
FRM.NomFournisseur as "NomFournisseur",
FRM.MontantTTC as "MontantTTC",

PH.[activity_name] as Etape, -- C'est le nom de l'étape
PH.[performer] as Inter, -- C'est la personne qui a réalisé l'action
PRI.date_start as DateEntree, -- C'est la date de début
PRI.date_end as DateSortie, -- C'est la date de fin
Convert(decimal(12,5),PRI.date_end - PRI.date_start +case when datepart(dw,PRI.date_start) = 7 then 1 else 0 end - (datediff(wk,PRI.date_start, PRI.date_end) * 2) -
case when datepart(dw, PRI.date_start) = 1 then 1 else 0 end +
case when datepart(dw, PRI.date_end) = 1 then 1 else 0 end ) as duree -- C'est la durée


FROM [ProcessHistory] PH
INNER JOIN DocumentProcess DP on DP.id_instance = PH.id_root_instance
INNER JOIN Documents D on D.Id = DP.id_document
INNER JOIN FRM_Fiche_d_Action_ADI FRM on FRM.id_document = D.id
INNER JOIN ProcessInstances PRI ON PH.id_instance = PRI.id

WHERE

PRI.date_end is not null
AND D.Id in (SELECT id_document FROM DocumentAccessView WHERE resource_name {0})

En complément, au sein de la vue, vous pouvez faire une moyenne sur la durée lorsque une colonne est catégorisée :

if(!IsPostBack)
{
DevExpress.Web.ASPxSummaryItem itemSummary = new DevExpress.Web.ASPxSummaryItem();
itemSummary.FieldName = "duree";
itemSummary.DisplayFormat = "Moyenne : {0:##.##}";
itemSummary.SummaryType = DevExpress.Data.SummaryItemType.Average;
Grid.GroupSummary.Add(itemSummary);
}