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.
|
Copyright © 2013 CA.
Tutti i diritti riservati.
|
|