Está en la página 1de 13

DOCUMENTO TECNICO

Dish México
Funcionalidad: Error en Familias

Autor: Misael Rueda Mendoza

Fecha de Creación: Enero 2021


Última Actualización:
Referencia del Documento:
Versión: 0

Copy Number _____


INCIDENCIA # I-170547
Enero 2021

Control del Documento

Registro de Cambios
3

Fecha Autor Versión Referencia del Cambio

Enero 2021 Rueda Mendoza 0 Creación de Documento


Misael

Revisores

Nombre Puesto

Distribución

Copia No. Nombre Ubicación

Nota:
Si recibe una copia electrónica de este documento y la imprime, favor de escribir su nombre
en el equivalente de la portada para propósitos de control documental.
Si recibe una copia impresa de este documento, favor de escribir su nombre en la portada
para propósitos de control documental.

Solución 2iixiv10ii
INCIDENCIA # I-170547
Enero 2021

Contenido

Control del Documento...........................................................................................................ii


Introducción..............................................................................................................................1
Issue I-170547.....................................................................................................................1
1.1 Requerimiento del negocio...............................................................................1
1.2 Supuestos de negocio.........................................................................................1
1.3 Supuestos de diseño...........................................................................................1
1.4 Consideraciones..................................................................................................1
Descripción de flujo.................................................................................................................2
Solución...................................................................................................................................10

Solución 2iiixiv10iii
INCIDENCIA # I-170547
Enero 2021

Introducción

Issue I-170547

El presente documento tiene como alcance, el análisis de actualización de servicios del suscriptor e inserción de registros,
realizándose desde la funcionalidad del servicio (SOA) de familias, adoptando así el mismo manejo y nuevas reglas que
este módulo que ya se tienen considerados para la mejora.
1.1 Requerimiento del negocio
Requerimiento:

1) Un Carrier o familia se actualiza siempre y cuando cuente con un Carrier Inactivo con fecha de instalación
esto para generar un nuevo registro.
2) Un Carrier se actualiza siempre y cuando cumpla con un Carrier en estado Activo, solo realiza la
actualización de la fecha de instalación.
3) Un Carrier se actualiza siempre y cuando cumpla con un Carrier en prospecto, solo realiza la actualización de
la fecha de instalación y el estado de la familia a Activo.

1.2 Supuestos de negocio


Un Carrier se inserta si no contiene un Carrier activo asignada previamente al Suscriptor ó no aplica las reglas
mencionadas en el apartado de requerimientos.

1.3 Supuestos de diseño

 El diseño y desarrollo deberá adaptarse a las reglas ya definidas para el módulo de familias en Siebel.
 Se realizará el ajuste necesario en los procesos existentes que abarcan el supuesto.

1.4 Consideraciones
 Los escenarios no documentados y/o validados en pruebas de certificación no serán considerados como
incidencias y tendrán que ser gestionados como control de cambios por medio de la oficina de administración de
proyectos bajo el flujo de nuevos requerimientos gestionados y priorizados por dicha oficina
INCIDENCIA # I-170547
Enero 2021

Descripción de flujo.

SOA
Request:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:cus="http://siebel.com/CustomUI" xmlns:ds="http://www.siebel.com/xml/DS%20IT%20Family%20Date
%20IO">
<soapenv:Header/>
<soapenv:Body>
<cus:UPSERT_Input>
<ds:ListOfDsItFamilyDateIo>
<!--Zero or more repetitions:-->
<ds:DsItFamilyBc Operation="?">
<ds:AccountId>1-FKNBIK0</ds:AccountId>
<ds:DSInstallDate>09/23/2020</ds:DSInstallDate>
<ds:Family>DISH DTH</ds:Family>
<ds:Status>Activo</ds:Status>
<ds:SubFamily>DISH</ds:SubFamily>
<ds:Type>Servicio</ds:Type>
</ds:DsItFamilyBc>
</ds:ListOfDsItFamilyDateIo>
<cus:Process_spcInstance_spcId/>
<cus:Object_spcId/>
<cus:Siebel_spcOperation_spcObject_spcId></cus:Siebel_spcOperation_spcObject_spcId>
<cus:Error_spcCode/>
<cus:Error_spcMessage/>
</cus:UPSERT_Input>
</soapenv:Body>
</soapenv:Envelope>

Error

<siebelf:errormsg>
El método 'SetFieldValue' del business component 'DS IT Family BC' (componente de integración 'DS IT Family BC')
para el registro con especificación de búsqueda '[Account Id] IS NULL AND [Family] = "DISH DTH" AND [Subtype] IS
NULL' ha devuelto el error siguiente:"El valor del campo Subtype del business component DS IT Family BC no
coincide con ningún valor de la lista de selección enlazada DS IT Sub Family Pick List.(SBL-DAT-00225)"(SBL-EAI-
04451)
</siebelf:errormsg>
INCIDENCIA # I-170547
Enero 2021

SIEBEL STAGE

Escenario replica para tipo de acción Nuevo y familia inactiva sin valor en la LOV High (Alto).

Suscriptor: 10202893

Simulación

Función Actualiza familia

Segmento 1
INCIDENCIA # I-170547
Enero 2021

function ActualizaFamilia(Inputs, Outputs)


{
try
{

var strAccion = Inputs.GetProperty("Accion");


var strSubFamilia = Inputs.GetProperty("SubFamilia");
var strNoCliente = Inputs.GetProperty("NoCliente");
var strFechaInsta = Inputs.GetProperty("FechaInsta");
var strFechaCancel = Inputs.GetProperty("FechaCancelacion");
var boAccnt = TheApplication().GetBusObject("Account");
var bcAccount = boAccnt.GetBusComp("Account");
//var Familia = TheApplication().InvokeMethod("LookupValue",
"DS_IT_SUB_FAMILY", strSubFamilia);
var Familia = ObtieneFamilia(strSubFamilia);

Segmento 2: Función ObtieneFamilia

function ObtieneFamilia(strSubFamilia)
{
var boLov = TheApplication().GetBusObject("List Of Values");
var bcLov = boLov.GetBusComp("List Of Values");
bcLov.ActivateField("Type");
bcLov.ActivateField("Name");
bcLov.ActivateField("High");
bcLov.ActivateField("Parent");
bcLov.SetViewMode(AllView);
bcLov.ClearToQuery();
bcLov.SetSearchSpec("Type","DS_IT_SUB_FAMILY");
bcLov.SetSearchSpec("Name", strSubFamilia);
bcLov.ExecuteQuery(ForwardOnly);

if(bcLov.FirstRecord())
{
INCIDENCIA # I-170547
Enero 2021

return(bcLov.GetFieldValue("High"));
}

Descripción:
Obtiene valor dato por la Subfamilia DTH, el código consulta una LOV con el dato de DTH, y lo obtiene el valor del
campo High

A nivel administración de lista de valores no existe el valor en el campo, lo cual no obtiene ningún valor, esto genera
que no se cumpla el proceso.

Escenario 2 replica para tipo de acción Nuevo y familia inactiva con valor en la LOV High (Alto).

Segmento 2: Función ObtieneFamilia

function ObtieneFamilia(strSubFamilia)
{
var boLov = TheApplication().GetBusObject("List Of Values");
var bcLov = boLov.GetBusComp("List Of Values");
bcLov.ActivateField("Type");
bcLov.ActivateField("Name");
bcLov.ActivateField("High");
bcLov.ActivateField("Parent");
bcLov.SetViewMode(AllView);
bcLov.ClearToQuery();
bcLov.SetSearchSpec("Type","DS_IT_SUB_FAMILY");
bcLov.SetSearchSpec("Name", strSubFamilia);
INCIDENCIA # I-170547
Enero 2021

bcLov.ExecuteQuery(ForwardOnly);

if(bcLov.FirstRecord())
{
return(bcLov.GetFieldValue("High"));
}

Descripción:
Obtiene valor dato por la Subfamilia DTH, el código consulta una LOV con el dato de DTH, y lo obtiene el valor del
campo High

Segmento 3

var Familia = ObtieneFamilia(strSubFamilia);


var Idcliente = "";
var Code = "000";
var Mensaje = "";
var Ejecuta = "";

Descripción:
Obtiene valor dato por la Subfamilia DTH, del campo High = ALPHA PREPAGO

Segmento 4

// Valida Familia
INCIDENCIA # I-170547
Enero 2021

if (Familia != "" || Familia != null)


{
// Valida Accion
if (strAccion == "Upgrade" || strAccion == "Downgrade" || strAccion == "Cancel" || strAccion == "New")
{

Descripción:
Valida que la familia sea diferente o igual a Null o blanco (sin valor)
Valida el tipo de acción a ejecutar en este escenario es New (Nuevo).

Segmento 5

if (bcAccount.FirstRecord()){
Idcliente = bcAccount.GetFieldValue("Id");
switch (strAccion){
case "Upgrade":
Ejecuta = Upgrade(Familia, Idcliente, strFechaInsta,strNoCliente,strSubFamilia);
break;

case "Downgrade":
Ejecuta = Downgrade(Familia, Idcliente, strFechaCancel,strNoCliente);
break;

case "Cancel":
Ejecuta = Cancelar(Familia, Idcliente,strFechaCancel,strNoCliente);
break;

case "New":
Ejecuta = Nuevo(Familia, Idcliente, strFechaInsta,strNoCliente,strSubFamilia);
break;
}

Descripción:
Valida que tipo de acción es para invocar la Función correspondiente, en este escenario (Nuevo)
INCIDENCIA # I-170547
Enero 2021

Segmento 4: función Nuevo

function Nuevo(Familia, Idcliente, strFechaInsta,strNoCliente,strSubFamilia)


{
try{
var boAccnt = TheApplication().GetBusObject("Account");
var bcFamily = boAccnt.GetBusComp("DS IT Family BC");
var IdFamilia = "";
var Retorno = "Exito";
var StatusFam = "";
var FechaInst = "";
var isRecord = "";
var stActivo = TheApplication().InvokeMethod("LookupValue", "DS_STATUS_FAMILY", "Activo");
var stProspec = TheApplication().InvokeMethod("LookupValue", "DS_STATUS_FAMILY", "Prospecto");
var stInact = TheApplication().InvokeMethod("LookupValue", "DS_STATUS_FAMILY", "Inactivo");

Descripción:
Setea las valiables del estatus de la Familia en las variables.

Segmento 4: continuación

// Valida si la familia ya existe


bcFamily.ActivateField("Account Id");
bcFamily.ActivateField("Status");
bcFamily.ActivateField("DS Install Date");
bcFamily.ActivateField("Family");
bcFamily.ActivateField("Subtype");
bcFamily.SetViewMode(AllView);
bcFamily.ClearToQuery();
bcFamily.SetSearchSpec("Account Id", Idcliente);
bcFamily.SetSearchSpec("Family", Familia);

Descripción:
Realiza una consulta si existe la familia llamada High = ALPHA PREPAGO en el suscriptor, si no existe no realiza
ninguna acción.

Este escenario es una regla de negocio?


INCIDENCIA # I-170547
Enero 2021

Donde si no existe la familia de lo que obtuvo en el campo High en el Suscriptor, no realiza ninguna operación el proceso
Al igual que si no contara con alguna suscripción el suscriptor, no realizaría ninguna acción?

Si la familia fuera DISH DTH y el estado de este es Inactivo, entra a actualizar e inserta el registro.

Segmento 4: continuación

else if (StatusFam == stInact){


bcFamily.NewRecord(NewAfter);
bcFamily.SetFieldValue("Account Id", Idcliente);
bcFamily.SetFieldValue("Status", stActivo);
bcFamily.SetFieldValue("Family", Familia);
bcFamily.SetFieldValue("Subtype", strSubFamilia);
bcFamily.SetFieldValue("DS Install Date", strFechaInsta);
bcFamily.WriteRecord();
}

Descripción:
Actualiza la información del Carrier existente cuando el estado de la familia esta Inactivo

Error

El valor del campo Subtype del business component DS IT Family BC no coincide con ningún valor de la lista
de selección enlazada DS IT Sub Family Pick List.(SBL-DAT-00225)

Este error pertenece a las lista de valores que de acuerdo al análisis están dañadas
INCIDENCIA # I-170547
Enero 2021

Solución

1) Para solucionar el error se quita los pick list del BC en los campos Family y Subtype ya que a nivel aplicación no
se permite elegir el valor (todo es en automático la creación del registro).

DS IT Family Pick List


DS IT Sub Family Pick List

2) Para la solución de insertar el nuevo Carrier diferente al que se tiene igual activo o no cumpla con lo anterior se
realiza una condiconal mas para la inserción.

Aprobadores

Nombre Puesto Firma

** Pendiente de agregar aprobadores funcionales (Personas a firmar)

También podría gustarte