Il existe trois types généraux de métriques utilisés pour la modélisation des conditions financières d'un service ou contrat, à savoir :
Considérez l'exemple suivant :
Une nouvelle société émerge et requiert un service de courriel accompagné de sa configuration et maintenance de ses boîtes aux lettres. Le nombre de boîtes aux lettres augmentera évidemment lorsque de nouveaux employés seront engagés. L'approvisionnement d'un service de courriel pour un contrat est fixé à un prix de 1000 $, plus un coût supplémentaire mensuel par boîte aux lettres. Ce coût par boîte aux lettres est échelonné et tarifé comme suit :
|
Nombre de boîtes aux lettres |
Coût par boîte aux lettres |
|
1-1000 |
1,00 $ |
|
1001 - 5000 |
0,80 $ |
|
5001+ |
0,50 $ |
De fait, plus le nombre de boîtes aux lettres ajoutées est élevé, plus le coût supplémentaire est faible. (Par exemple : 1500 boîtes aux lettres coûteront (1000 x 1 $) + (500 x 0,80 $) = 1400 $.) L'utilisation de ce modèle vous permet de produire deux métriques qui refléteront ceci dans le contrat.
Une estimation du nombre de membres du personnel est également effectuée par l'équipe de gestion durant l'année (2007), établie comme suit. La tendance est due à la croissance initiale de la société de par ses emplois, puis des nouveaux bureaux ouverts dans d'autres régions :
|
Jan |
Fév |
Mars |
Avr |
Mai |
Juin |
Juil |
Août |
Sept |
Oct |
Nov |
Déc |
|
50 |
100 |
500 |
900 |
1600 |
1700 |
1800 |
2500 |
2600 |
3500 |
3600 |
5800 |
Pour modeler ces métriques, procédez comme suit :
Créez une métrique de coût fixe à l'aide du type d'élément de prix dans le contrat et spécifiez les détails suivants :

Pour spécifier le coût fixe dans le contrat de ce service, implémentez-le comme paramètre dans la logique applicative (où le coût fixe doit être renvoyé depuis la fonction Résultat). Ce paramètre peut alors être accessible via l'énoncé d'objectif de la métrique, tel qu'affiché ci-dessous :

Le renvoi de la valeur de paramètre pour cette métrique consiste simplement à renvoyer la valeur du coût de service via la fonction Résultat.

Créez ensuite la métrique de tarification variable (à nouveau, utilisez le type d'élément de prix) pour déterminer les coûts de consommation du nombre de boîtes aux lettres utilisées. Nommez cette métrique Coût de consommation de la boîte aux lettres et créez-la grâce aux détails suivants :

Dans cette instance, vous devez entrer les paramètres de consommation dans les détails de la métrique. Ceux-ci iront dans la table Prix par unité. Pour modeler la table ci-dessus sur le nombre de boîtes aux lettres selon le coût, créez une colonne pour la limite supérieure de boîtes aux lettres et une autre pour les prix unitaires :

Entrez alors les valeurs pour chaque niveau. Dans ce cas, la limite supérieure de boîtes aux lettres détermine le niveau de coût associé. Etant donné qu'il existe 3 niveaux, ceux-ci sont ajoutés à la table de la manière suivante :

Ajoutez à cela l'implémentation de la fonction de prévision à la consommation des boîtes aux lettres. Procédez en créant la table de prévision avec le schéma Mensuel préétabli.

La table est alors remplie avec les valeurs des tables données dans la description de scénario.

Vous pouvez maintenant ajouter l'énoncé d'objectif de la métrique. Dans ce cas, aucune valeur de paramètre n'est requise car celles-ci sont dérivées des tables Prix par unité et Prévision.

Finalement, terminez la logique applicative de la façon suivante :
Option Explicit
Dim PPUmap1, PPUmap2, PPUmap3, PPUkey, FCmap, periodFC, TierPPU
Dim currentMonth, TotalMailboxes, MailboxesThisPeriod, TotalPrice
Sub OnRegistration(dispatcher)
'exemple d'enregistrement seulement
dispatcher.RegisterByMetric "OnMailboxAddedEvent", "NewMailboxEventType", _
"MailboxResource", "MONTH", "MetricName", "MetricContract", _
"MetricContractParty"
End sub
Sub OnLoad(TIME)
'Initialise les plans de tarification et les plans de prévision
Set PPUmap1 = Context.Field ("Price Per Unit")(1)
Set PPUmap2 = Context.Field ("Price Per Unit")(2)
Set PPUmap3 = Context.Field ("Price Per Unit")(3)
Set FCmap = Context.Field ("Forecast")(1)
End sub
Sub OnPeriodStart(TIME)
'A FAIRE : AJOUTEZ du code ici POUR gérer l'événement de DEMARRAGE de la période
currentMonth = GetMonth (time)
If Context.IsInForecast Then
periodFC = getForecastValue (currentMonth)
End If
MailboxesThisPeriod = 0
TotalPrice = 0
End sub
Sub OnPeriodEnd(TIME, isComplete)
' Calculer le prix actuel de toutes les boîtes aux lettres en utilisant le modèle
' de tarification échelonné
' Ceci utilise une approche cumulative en traversant chaque niveau pour
' déterminer le coût total.
TotalPrice = getMailboxCost (TotalMailboxes)
End sub
Sub OnTimeslotEnter(TIME)
End sub
Sub OnTimeslotExit(TIME)
End sub
Sub OnMailboxAddedEvent(eventDetails)
MailboxesThisPeriod = MailboxesThisPeriod + 1
TotalMailboxes = TotalMailBoxes + 1
End sub
Function Forecast
Forecast = getMailboxCost (periodFC)
End Function
Function Target
Target = Null
End Function
Function Result
result = TotalPrice
End Function
Function getforecastvalue(q)
getforecastvalue = FCmap (q)
End Function
Function getmonth(time)
'cette fonction récupère le mois
Dim lTime
lTime = Tools.GetLocaleTime(time)
getmonth = monthname (datepart ("m", lTime), True) & _
"-0" & datepart ("d", lTime) & "-" & datepart ("yyyy", lTime)
End Function
Function getMailboxCost(num_boxes)
' Fonction calculant le coût des boîtes aux lettres en utilisant le modèle de tarification échelonné
Dim returnValue
If num_boxes <= PPUmap1 ("Mailboxes") Then
' Premier niveau
returnValue = num_boxes * PPUmap1 ("UnitCost")
'Out.Log "Tier1: " & num_boxes
Else If num_boxes > PPUmap1 ("Mailboxes") And num_boxes <= PPUmap2 ("Mailboxes") Then
' Deuxième niveau uniquement
returnValue = (PPUmap1 ("Mailboxes") * PPUmap1 ("UnitCost")) + _
((num_boxes - PPUmap1 ("Mailboxes")) * PPUmap2 ("UnitCost"))
'Out.Log "Tier2: " & num_boxes
Else If num_boxes > PPUmap2 ("Mailboxes") Then
' Troisième niveau
returnValue = (PPUmap1 ("Mailboxes") * PPUmap1 ("UnitCost")) + _
((PPUmap2 ("Mailboxes") - PPUmap1 ("Mailboxes")) * PPUmap2 ("UnitCost")) + _
((num_boxes - PPUmap2 ("Mailboxes")) * PPUmap3 ("UnitCost"))
'Out.Log "Tier3: " & num_boxes
End If
getMailboxCost = returnValue
'Out.Log "Cost is: " & returnValue
End Function
Remarque : Ce script de logique applicative traite aussi bien le calcul de prévision (par l'utilisation de la table Prévision) que les résultats de coût de consommation financiers. Les deux utilisent la même formule getMailboxCost() calculant la tarification échelonnée selon la table Prix par unité définie pour cette métrique.
|
Copyright © 2013 CA.
Tous droits réservés.
|
|