Rubrique précédente: Exemple de modélisation de métrique financièreRubrique suivante: Exemples de modélisation de données


Etude de cas 6 : Modélisation de conditions financières d'un contrat/service

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.