Argomento precedente: Esempio di modellazione della metrica finanziariaArgomento successivo: Esempi di modellazione dei dati


Case study 6: modellazione delle condizioni finanziarie di un contratto/servizio

Esistono tre tipi generali di metriche utilizzati per la modellazione delle condizioni finanziare di un servizio o di un contratto. Tali variabili sono:

Fare riferimento all'esempio seguente:

Una nuova azienda è in fase di avvio e richiede la fornitura del servizio di posta elettronica insieme all'installazione e alla manutenzione delle caselle di posta. Dal momento che verrà assunto nuovo personale, il numero delle caselle di posta ovviamente aumenterà. La previsione di un servizio di posta elettronica per un contratto comporta un costo fisso di 1000 $, con un costo aggiuntivo per ogni casella di posta che verrà addebitato ogni mese. Il costo per ogni casella di posta è un modello di determinazione dei prezzi a più livelli, come indicato di seguito:

Numero delle caselle di posta

Costo per casella di posta

1-1,000

$ 1,00

1.001 - 5.000

$0.80

5,001 +

$0.50

Pertanto, più caselle di posta vengono aggiunte, più il costo aggiuntivo si riduce. Ad esempio, 1500 caselle di posta costeranno (1000 x $ 1) + (500 x $ 0,80) = $ 1400. Utilizzando questo modello, è possibile creare due metriche per riflettere questa situazione nel contratto.

Inoltre, è presente una stima da parte del team di gestione sul numero di membri del personale nel corso dell'anno (2007), come indicato di seguito. La tendenza dipende dalla crescita aziendale iniziale con l'assunzione e quindi dall'apertura di nuovo uffici in altre regioni:

Gen

Feb

Mar

Apr

Mag

Giu

Lug

Ago

Sett

Ott

Nov

Dic

50

100

500

900

1600

1700

1800

2500

2600

3500

3600

5800

Per modellare queste metriche, procedere come segue:

Creare nel contratto la metrica di costo fisso (utilizzare il tipo Elemento di costo), con le seguenti informazioni:

Per specificare il costo fisso per il contratto del servizio, implementarlo come parametro nella business logic (in cui è necessario che il costo fisso sia restituito dalla funzione Result). Tale parametro può essere quindi visualizzato tramite la dichiarazione dell'obiettivo della metrica, come mostrato di seguito:

La restituzione del valore di parametro per questa metrica consiste solo nella restituzione del valore del costo di servizio tramite la funzione Result.

Successivamente, creare la metrica variabile di determinazione del prezzo (nuovamente, utilizzare il tipo Elemento di costo) per stabilire i costi in base al consumo del numero di caselle di posta utilizzate. Denominare questa metrica Mailbox Consumption Cost e crearla con le seguenti informazioni:

In questo esempio, è necessario immettere i parametri di consumo nelle informazioni relative alla metrica. Questi verranno inseriti nella tabella Prezzo unitario. Per modellare la tabella precedente per il numero di caselle di posta a fronte dei costi, creare una colonna per il limite superiore di caselle di posta e una colonna per i prezzi unitari.

Immettere quindi i valori per ogni livello. In questo caso, il limite superiore di caselle di posta determina la fascia di costo associata. Poiché sono presenti tre livelli, vengono aggiunti alla tabella in questo modo:

Oltre a questa operazione, implementare la funzione di previsione sul consumo delle caselle di posta. A tale scopo, creare la tabella Previsione con il layout mensile preimpostato.

Quest'ultimo viene quindi compilato con i valori dalle tabelle specificate nella descrizione del caso.

A questo punto, è possibile aggiungere la dichiarazione dell'obiettivo della metrica. In tal caso, non sono necessari valori di parametro in quanto derivati dalle tabelle Prezzo unitario e Previsione.

Infine, completare la business logic, come indicato di seguito:

Option Explicit

Dim PPUmap1, PPUmap2, PPUmap3, PPUkey, FCmap, periodFC, TierPPU
Dim currentMonth, TotalMailboxes, MailboxesThisPeriod, TotalPrice

Sub OnRegistration(dispatcher)
   'registrazione solo di esempio
   dispatcher.RegisterByMetric "OnMailboxAddedEvent", "NewMailboxEventType", _
      "MailboxResource", "MONTH", "MetricName", "MetricContract", _
      "MetricContractParty"
End Sub

Sub OnLoad(TIME)
   'Inizializzare le mappe dei livelli di prezzo e le mappe di previsione
   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)
   'TODO: AGGIUNGERE il codice qui PER gestire l'evento di INIZIO periodo
   currentMonth = GetMonth (time)
   If Context.IsInForecast Then
      periodFC = getForecastValue (currentMonth)
   End If
   MailboxesThisPeriod = 0
   TotalPrice = 0
End Sub

Sub OnPeriodEnd(TIME, isComplete)
   ' Calcolare il prezzo corrente di tutte le caselle di posta utilizzando il modello
   ' di determinazione dei prezzi a più livelli
   ' Viene impiegato un approccio globale attraverso ciascun livello per
   ' determinare il costo totale.
   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

Funzione previsione
   Forecast = getMailboxCost (periodFC)
End Function

Funzione Target
   Target = Null
End Function

Function Result
   result = TotalPrice
End Function

Function getforecastvalue(q)
   getforecastvalue = FCmap (q)
End Function

Function getmonth(time)
   'questa funzione consente di recuperare il mese
   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)
   'Funzione che calcola il costo delle caselle di posta utilizzando il modello di determinazione dei prezzi a più livelli
   Dim returnValue
   If num_boxes <= PPUmap1 ("Mailboxes") Then 
      'Primo livello
      returnValue = num_boxes * PPUmap1 ("UnitCost")
      'Out.Log "Tier1: " & num_boxes
   Else If num_boxes > PPUmap1 ("Mailboxes") And num_boxes <= PPUmap2 ("Mailboxes") Then
      'solo secondo livello
      returnValue = (PPUmap1 ("Mailboxes") * PPUmap1 ("UnitCost")) + _
         ((num_boxes - PPUmap1 ("Mailboxes")) * PPUmap2 ("UnitCost"))
      'Out.Log "Tier2: " & num_boxes
   Else If num_boxes > PPUmap2 ("Mailboxes") Then
      'terzo livello
      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

Nota: questo script di business logic gestisce sia i risultati del calcolo di previsione (utilizzando la tabella Previsione) sia del costo di consumo finanziario. Entrambi utilizzano la stessa formula getMailboxCost() che calcola la determinazione dei prezzi a più livelli in base alla tabella Prezzo unitario definita per questa metrica.