Tema anterior: Ejemplo de modelado de métrica financieraTema siguiente: Ejemplos de modelado de datos


Caso práctico 6: Modelado de las condiciones financieras de modelado de un contrato/servicio

Hay tres tipos generales de métricas utilizadas para el modelado de las condiciones financieras de un servicio o contrato. Estas son:

Tenga en cuenta el siguiente ejemplo:

Una empresa nueva está empezando y requiere que se proporcione un servicio de correo electrónico junto con la instalación y mantenimiento de los buzones de correo. A medida que se contrate nuevo personal, el número de buzones de correo aumentará obviamente. La provisión de un servicio de correo electrónico para un contrato incurre en un coste de precio fijo de 1.000 dólares y, además, hay un coste adicional por buzón de correo que se cargará cada mes. Este coste por buzón de correo es un modelo de fijación de planes de precios de la siguiente manera:

Número de buzones de correo

Coste por buzón de correo

1-1.000

1,00 $

1.001 - 5.000

0,80 $

5.001+

0,50 $

Así, mientras más buzones de correo se agregan, más bajo será el coste adicional. (Por ejemplo: 1500 buzones de correo costarán (1000 x 1 $) + (500 x 0.80 $) = 1400 $.) Mediante este modelo, se pueden producir dos métricas para reflejar esto en el contrato.

Además hay una estimación realizada por el equipo de gestión del número de miembros del personal a lo largo del año (2007), que se describe a continuación. La tendencia viene marcada por el crecimiento inicial de la empresa mediante el empleo y por la consiguiente apertura de oficinas nuevas en otras regiones:

Ene

Feb

Mar

Abr

Mayo

Jun

Jul

Ago

Sep

Oct

Nov

Dic

50

100

500

900

1600

1700

1800

2500

2600

3500

3600

5800

Para modelar estas métricas, haga lo siguiente:

Cree la métrica de coste fijo (utilice el tipo Elemento del precio) en el contrato, mediante la información siguiente:

Para especificar el coste fijo del contrato de este servicio, implemente esto como un parámetro en la lógica de negocios (donde se deberá devolver el coste fijo de la función Resultado). Este parámetro se puede exponer mediante la declaración del objetivo de la métrica, como se muestra a continuación:

La devolución del valor de parámetro para esta métrica es tan solo un caso de devolver el valor del coste del servicio mediante la función Resultado.

A continuación, cree la métrica de fijación de precios variables (de nuevo, utilice el tipo Elemento del precio) para determinar los costes de consumo del número de buzones de correo utilizados. Nombre a esta métrica "Coste del consumo del buzón de correo" y créela con la información siguiente:

En este caso, necesita introducir los parámetros de consumo en los detalles de la métrica. Estos se introducirán en la tabla de precio por unidad. Para modelar la tabla anterior para el número de buzones de correo frente al coste, cree una columna para el límite superior de buzones de correo y otra para el precio por unidad:

A continuación introduzca los valores para cada plan. En este caso, el límite superior de buzones de correo determina el coste asociado. Como hay 3 planes, se agregan a la tabla de esta manera:

Además de esto, implemente la función de previsión sobre el consumo de buzones de correo. Para ello, cree la tabla de previsión con el diseño mensual preestablecido.

Esta se rellena a continuación con los valores de las tablas proporcionadas en la descripción del escenario.

Ahora puede agregar la declaración del objetivo para la métrica. En este caso, no se necesitan valores de parámetros, ya que se obtienen de las tablas de precio por unidad y previsión.

Finalmente, complete la lógica de negocios de la siguiente manera:

Opción explícita

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

Sub OnRegistration(dispatcher)
   'sólo registro de muestra
   dispatcher.RegisterByMetric "OnMailboxAddedEvent", "NewMailboxEventType", _
      "MailboxResource", "MONTH", "MetricName", "MetricContract", _
      "MetricContractParty"
End Sub

Sub OnLoad(TIME)
   'Inicializar las asignaciones de planes de precios y de previsión
   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: AÑADIR código aquí PARA tratar el evento de INICIO de período
   currentMonth = GetMonth (time)
   If Context.IsInForecast Then
      periodFC = getForecastValue (currentMonth)
   End If
   MailboxesThisPeriod = 0
   TotalPrice = 0
End Sub

Sub OnPeriodEnd(TIME, isComplete)
   ' Calcular el precio actual de todos los buzones de correo utilizando
   ' el modelo de planes de precios
   ' Utiliza un enfoque acumulativo a medida que pasa por cada plan para
   ' determinar el coste 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

Resultado de la función
   result = TotalPrice
End Function

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

Function getmonth(time)
   'esta función recupera el mes
   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)
   'Function calcula el coste de los buzones de correo utilizando el modelo de planes de precio
   Dim returnValue
   If num_boxes <= PPUmap1 ("Mailboxes") Then 
      'Primer plan
      returnValue = num_boxes * PPUmap1 ("UnitCost")
      'Out.Log "Tier1: " & num_boxes
   Else If num_boxes > PPUmap1 ("Mailboxes") And num_boxes <= PPUmap2 ("Mailboxes") Then
      'segundo plan solamente
      returnValue = (PPUmap1 ("Mailboxes") * PPUmap1 ("UnitCost")) + _
         ((num_boxes - PPUmap1 ("Mailboxes")) * PPUmap2 ("UnitCost"))
      'Out.Log "Tier2: " & num_boxes
   Else If num_boxes > PPUmap2 ("Mailboxes") Then
      'tercer plan
      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: Este script de lógica de negocios domina tanto el cálculo de previsión (mediante la tabla de previsión) como los resultados del coste de consumo financiero. Ambos usan la misma fórmula getMailboxCost() que calcula el plan de precio fijo basado en la tabla de precio por unidad definida para esta métrica.