0% found this document useful (0 votes)
74 views

ConfigurationReport Pnet Prod

Copyright
© © All Rights Reserved
Available Formats
Download as XLSX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
74 views

ConfigurationReport Pnet Prod

Copyright
© © All Rights Reserved
Available Formats
Download as XLSX, PDF, TXT or read online on Scribd
You are on page 1/ 1515

Application Composer Configuration Report

Created By: BDSADMIN


Creation Time: 2024-03-07 19:20:33

Customization Summary
Total number of Customized Standard Objects
Total number of Custom Objects
Total number of Global Functions
Total number of Custom Relationships
Total number of modified Standard Fields
Total number of Custom Fields
Total number of Validations
Total number of Object Functions
Total number of Triggers
Total number of Object Workflows
Total number of Dynamic Layouts
Total number of REST Web Services
Total number of SOAP Web Services
Total number of Mashup Content Web Applications

Object Summary
Object Name Parent Object Custom Fields Modified Standard Fields
ActividadEconomica_c 12
Activity 11
Address 8
Adicional_c AssetEO 19
AnchoDeBanda_c 17
AsignacionMensualLeads_c 28
AssetEO 53
Bitacora_c 26
Bucket_c 16
Canal_c 15
Cantidad_c 15
CatalogoCIIU_c 25
ClienteNetplus_c 18
CodigoPostal_c 16
ColorDeHilo_c 16
Descuento_c 23
Detalle_c 25
Diferir_c 22
DireccionInstalacion_c 10
FormaDePago_c 15
GrupoComercial_c 12
GrupoDeHilo_c 16
HistoricoConsultaScore_c 26
HistoricoDeContrato_c 15
HistoricoDeEtapaDeVenta_c 19
HistoricoDeTemporalidad_c 21
IntervaloCada_c 14
IntervaloHasta_c 14
IPRadioWifi_c 16
Lead 79
MapeoFormaTipoPago_c 12
MklLeadResources Lead 0
NodoWifi_c 14
OLT_c 14
Opportunity 175
OpportunityContact Opportunity 1
OpportunityResource Opportunity 0
Organization 61
Origen_c 18
PartidaAsignacionLeads_c 11
PartnerProfile 0
Person 61
Plan_c 15
Product 1
ProductGroupDetail 4
PromocionDescuento_c 40
PromocionesYServicios_c 69
RecursoAsignacionLead_c 14
Renovacion_c 14
Resource 5
Revenue Opportunity 59
ServicioNetplus_c 14
ServiciosAdquiridos_c 25
Splitter_c 16
Subestado_c 14
Temporalidad_c 31
UltimaMillaNetplus_c 16
VariablesDeSistema_c 13
VarReglasAsignacionLeads_c 19
15
44
26
199
66
1358
182
179
83
155
111
13
1
4

Modified Standard Fields Triggers Object Functions Object Workflows


0 0 0 3
16 5 1 3
0 1 1 1
0 0 0 0
0 0 0 3
0 1 9 3
13 4 6 3
0 1 0 3
0 0 0 3
0 0 0 3
0 0 0 3
0 0 0 3
0 0 0 3
0 0 0 3
0 0 0 3
0 0 0 3
0 0 0 3
0 1 0 3
0 0 0 0
0 0 0 3
0 0 0 3
0 0 0 3
0 2 2 3
0 0 0 3
0 1 0 3
0 0 0 3
0 0 0 3
0 0 0 3
0 0 0 3
11 11 20 3
0 0 0 3
0 0 0 0
0 0 0 3
0 0 0 3
4 14 66 18
0 0 0 0
0 0 0 0
7 11 18 2
0 0 0 3
0 0 0 3
0 0 0 0
14 17 22 2
0 0 0 3
0 0 0 0
0 0 0 0
0 0 0 3
0 4 4 3
0 0 1 0
0 0 0 3
0 0 5 0
1 8 6 0
0 0 0 3
0 0 0 3
0 0 0 3
0 0 0 3
0 1 15 3
0 0 0 3
0 0 1 3
0 1 2 3
Validations Dynamic Layouts
1 0
2 15
3 2
0 0
3 0
2 1
4 8
6 0
3 0
1 1
2 0
2 3
4 0
3 0
3 0
5 0
6 0
6 0
0 0
2 0
1 0
3 0
3 0
2 0
2 0
6 1
2 0
2 0
3 0
11 18
1 0
0 0
2 0
2 0
21 24
0 0
0 0
7 10
2 2
1 0
0 2
10 16
2 0
0 0
0 1
5 0
13 1
0 0
2 0
0 2
7 0
2 0
2 1
3 0
1 1
1 0
3 0
1 0
1 2
Global Functions
Name Parameters Return Type
usuarioMasivoCorporativo String

calcularDeltaAsignacion bolsaLeads- Double


validaClienteNetplus Long,numeroVendedores-Long
tipoDocumento- String
String,numeroDocumento-String

usuarioGenericoMasivo Long
usuarioAdministrador Boolean

getResourcePartyId resourceProfileId-Long Long


usuarioAdministradorTemporalidad Boolean

reasignarCliente tipoCliente-String,customerId- void


Long,currentRowId-Long,ownerId-
Long
getResourceProfileId partyId-Long Long

regularizarClienteMap mapClientes-Map void


historicoTemporalidad recordId-Long,tipo- void
String,customerType-String,estado-
String,fechaAsignacion-
Date,customerId-
Long,disponibleHasta-Date,ownerId-
Long

getCurrentUserResourceRow Object
validarFormatoDoc nroDoc-String,tipoDoc-String void

diasTemporalidad MoC-String,Monto-String,Objeto- Long


String
deleteView viewName-String,optyId-Long void
nowTZ Date

usuarioSoluciones Boolean

loadResourceProfileIdMap void

montoTemporalidad moc-String,monto-Double,proyecto- String


Boolean
usuarioGenericoCorporativo Long
nowSqlTZ Date

validaCanalOptysAbiertas customerId-Long,canalId-Long String


getURLEmbebido tipo-String,data-String,llave-String String
reasignarListaClientes listaClientes-List void
getVar codigo-String String

usuarioPreventa Boolean
Privileged Description
No Función que regresa MASIVO o
CORPORATIVO, dependiendo de los roels del
usuario

No numeroVendedores, bolsaLeads
No

No Regresa el ID del usuario generico masivo en


No este entorno

No
No

No reasignarCliente(tipoCliente,customerId,ownerI
d,currentRowId)
No

No
No tipos: CUSTOMER, LEAD, OPPORTUNITY
customerId: Id del cliente en que se trabajó
customerType: PERSON, ORGANIZATION

Actualmente opera con type, customer type,


recordId, y disponible hasta
Los demás parámetros aún no están instalados

No
No

No
No nombre de vista, id de oportunidad
No

No

No

No adf.util.montoTemporalidad('MASIVO',1200,
esProyecto)
No
No

No esta función valida si es posible crear una


oportunidadcanalId
customerId, para un cliente específico en un
No adf.util.(data,llave,tipo)
donde
data, llave =
cliente, cedulaRuc
planes, cedulaRuc
plan, contratoPlan
contratos, cedulaRuc
contrato, contrato
facturas, cedulaRuc
pagos.cedulaRuc

tipo = MASIVO, CORPORATIVO


No la lista de clientes contiene elementos de tipo
mapa con los siguientes atributos:
customerId - PartyId del cliente
ownerId - OwnerId del nuevo propietario
tipoCliente PERSON u ORGANIZATION
No

No
Example Expression
def secCtx = adf.context.getSecurityContext()

def moc=''
def
corp=secCtx.isUserInRole('USUARIO_CORPORATIVO')
def mas=secCtx.isUserInRole('USUARIO_MASIVO')
if(corp&&!mas){
moc='CORPORATIVO'
}
else if(!corp&&mas){
moc='MASIVO'
}
return moc
return
2*bolsaLeads/(numeroVendedores*(numeroVendedore
def payload=[
tipoDocumento:tipoDocumento,
numeroDocumento:numeroDocumento
]
println('payload:'+payload)
def
validaCte=adf.webServices.validaClienteEnNetPlus.POS
println('validaCteResponse:'+validaCte)

if((validaCte?.estatusValidacion == '0' ||
validaCte?.estatusValidacion
throw new == '2') && !
oracle.jbo.ValidationException(''+'(Puntonet)
} '
return validaCte?.estatusValidacion
300000035243676
def secCtx = adf.context.getSecurityContext()
return secCtx.isUserInRole('ADMIN_GENERAL_PNT')
if(nvl(resourceProfileId,0 as Long)==0)
return 0
def ress=newView('Resource')
def resc=newViewCriteria(ress)
def resr=resc.createRow()
def resi=resr.ensureCriteriaItem('ResourceProfileId')
resi.setOperator('=')
resi.setValue(resourceProfileId)
resc.insertRow(resr)
ress.appendViewCriteria(resc)
ress.executeQuery()
while(ress.hasNext()){
def res=ress.next()
return res.PartyId
}
return 0
def secCtx = adf.context.getSecurityContext()

return
secCtx.isUserInRole('GESTION_TEMPORALIDAD')||
adf.util.reasignarCliente('ORGANIZATION',300000 if(tipoCliente=='PERSON'){
20401,3000000066644,300000006520656) def clientes=newView('PersonProfile')
def clientec=newViewCriteria(clientes)
def clienter=clientec.createRow()
def clientei=clienter.ensureCriteriaItem('PartyId')
clientei.setOperator('=')
clientei.setValue(customerId)
clientec.insertRow(clienter)
clientes.appendViewCriteria(clientec)
clientes.executeQuery()
while(clientes.hasNext()){
def cliente=clientes.next()
if(cliente.OwnerPartyId!=ownerId &&
cliente.OwnerPartyId!=currentRowId){
cliente.setAttribute('OwnerPartyId',ownerId)
cliente.setAttribute('OverrideReassignment_c','Y')
}
}

def leads=newView('Lead')
def leadc=newViewCriteria(leads)
def leadr=leadc.createRow()
def leadi=leadr.ensureCriteriaItem('PrimaryContactId')
leadi.setOperator('=')
leadi.setValue(customerId)
leadc.insertRow(leadr)
leads.appendViewCriteria(leadc)
leads.executeQuery()
while(leads.hasNext()){
def lead=leads.next()
if(lead.OwnerId!=ownerId && lead.LeadId!
=currentRowId){
lead.setAttribute('OwnerId',ownerId)
lead.setAttribute('OverrideReassignment_c','Y')
}
}

}
else if(tipoCliente=='ORGANIZATION'){
def clientes=newView('OrganizationProfile')
def clientec=newViewCriteria(clientes)
def clienter=clientec.createRow()
def clientei=clienter.ensureCriteriaItem('PartyId')
clientei.setOperator('=')
clientei.setValue(customerId)
clientec.insertRow(clienter)
clientes.appendViewCriteria(clientec)
clientes.executeQuery()
while(clientes.hasNext()){
def cliente=clientes.next()
if(cliente.OwnerPartyId!=ownerId &&
cliente.OwnerPartyId!=currentRowId){
cliente.setAttribute('OwnerPartyId',ownerId)
cliente.setAttribute('OverrideReassignment_c','Y')
}
}

def leads=newView('Lead')
def leadc=newViewCriteria(leads)
def leadr=leadc.createRow()
def leadi=leadr.ensureCriteriaItem('Cuenta_Id_c')
leadi.setOperator('=')
leadi.setValue(customerId)
leadc.insertRow(leadr)
leads.appendViewCriteria(leadc)
leads.executeQuery()
while(leads.hasNext()){
def lead=leads.next()
if(lead.OwnerId!=ownerId && lead.LeadId!
=currentRowId){
lead.setAttribute('OwnerId',ownerId)
lead.setAttribute('OverrideReassignment_c','Y')
}
}
}

def optys=newView('OpportunityVO')
def optyc=newViewCriteria(optys)
def optyr=optyc.createRow()
def optyi=optyr.ensureCriteriaItem('TargetPartyId')
optyi.setOperator('=')
optyi.setValue(customerId)
optyc.insertRow(optyr)
optys.appendViewCriteria(optyc)
optys.executeQuery()
while(optys.hasNext()){
def opty=optys.next()
if(opty.OwnerResourcePartyId!=ownerId &&
opty.OptyId!=currentRowId){
opty.setAttribute('OwnerResourcePartyId',ownerId)
opty.setAttribute('OverrideReassignment_c','Y')
}
}
def customers
if(nvl(partyId,0 as Long)==0)
return 0
def ress=newView('Resource')
def resc=newViewCriteria(ress)
def resr=resc.createRow()
def resi=resr.ensureCriteriaItem('PartyId')
resi.setOperator('=')
resi.setValue(partyId)
resc.insertRow(resr)
ress.appendViewCriteria(resc)
ress.executeQuery()
while(ress.hasNext()){
def res=ress.next()
return res.ResourceProfileId
}
return 0
println('mapa recibido:'+mapClientes)
def startTime=now().time
def printMap=[:]
def leads=newView('Lead')
def leadc=newViewCriteria(leads)

def optys=newView('OpportunityVO')
def optyc=newViewCriteria(optys)

def countClientes=0
mapClientes.each{key,val ->
println('val:'+val)
def leadField='Cuenta_Id_c'
def customerId=key
if(customerId!=0){
def leadr=leadc.createRow()
def leadi=leadr.ensureCriteriaItem(leadField)
leadi.setOperator('=')
leadi.setValue(customerId)
leadi.setConjunction(0)
leadc.insertRow(leadr)

def optyr=optyc.createRow()
def optyi=optyr.ensureCriteriaItem('TargetPartyId')
optyi.setOperator('=')
optyi.setValue(customerId)
optyc.insertRow(optyr)
countClientes+=1
}
}
println('Terminé creación de vistas')
def optyList=[]
def leadList=[]
if(countClientes>0){
//reasignar Leads
leads.appendViewCriteria(leadc)
println('previo a búsqueda leads')
leads.executeQuery()
println('posterior a búsqueda leads')
while(leads.hasNext()){
def lead=leads.next()
def clienteId=0
def statusCode=lead.StatusCode
def statusActivo=statusCode=='QUALIFIED' ||
statusCode=='UNQUALIFIED'
if(statusActivo &&
lead.TipoCM_c=='CORPORATIVO'){
clienteId=lead.Cuenta_Id_c as Long
def currentCustomerMap = mapClientes[clienteId]

}currentCustomerMap.put('leadsAbiertos',currentCusto
}
println('previo a búsqueda optys')
optys.appendViewCriteria(optyc)
optys.executeQuery()
println('Posterior a búsqueda optys')
while(optys.hasNext()){
def opty=optys.next()
def clienteId=0

if(nvl(opty.AreaComercial_c,'CORPORATIVO')=='CORP
clienteId=opty.TargetPartyId as Long
def currentCustomerMap = mapClientes[clienteId]
if(opty.StatusCode=='OPEN'){

currentCustomerMap.put('optysAbiertas',currentCusto
println('after put')
}
if(nvl(opty.CodigoNetPlus_c,'')!=''){

currentCustomerMap.put('ConsiderarComoCliente_c','Y
}
}
}
}

mapClientes.each{key,val ->
def currentCustomerMap=val
def clienteRow=currentCustomerMap.row
println('before set attributes:' + currentCustomerMap)

clienteRow.setAttribute('OportunidadesAbiertas_c',curr
clienteRow.setAttribute('LeadsAbiertos_c',currentCusto
clienteRow.setAttribute('ConsiderarComoCliente_c',curr
println('after set attributes')
println('Entré a contabilizarContratosTotales')
def cuentaId = key
def activos = newView('AssetVO')
def activosC = newViewCriteria(activos)
def activosCR = activosC.createRow()
def activosCI =
activosCR.ensureCriteriaItem('CustomerId')
activosCI.setOperator('=')
activosCI.setValue(cuentaId)
def activosCJ =
activosCR.ensureCriteriaItem('AreaComercial_c')
activosCJ.setOperator('=')
activosCJ.setValue('CORPORATIVO')

activosC.insertRow(activosCR)
activos.appendViewCriteria(activosC)
activos.setMaxFetchSize(2000)
println('antes de activos.executeQuery()')
activos.executeQuery()

def totalIngresado = 0
def totalActivo = 0
def totalDesactivado = 0
def totalDesactivadoTemp = 0
def totalNoConcretado = 0
def totalNoConcretadoTemp = 0
def totalDeActivos = 0

println('iterando activos')
while(activos.hasNext()){
def activo = activos.next()
def estado = activo.EstatusServicio_c

if(estado == 'INGRESADO'){
totalIngresado = totalIngresado+1
}else if(estado == 'ACTIVO'){
totalActivo = totalActivo+1
}else if(estado == 'DESACTIVADO'){
totalDesactivado = totalDesactivado+1

}else if(estado == 'DESACTIVADO_TEMPORAL'){


totalDesactivadoTemp = totalDesactivadoTemp+1

}else if(estado == 'NO_CONCRETADA'){


totalNoConcretado = totalNoConcretado+1

}else if(estado == 'NO_CONCRETADA_TEMPORAL'){


totalNoConcretadoTemp =
totalNoConcretadoTemp+1
}
totalDeActivos = totalDeActivos+1
}
println('Posterior a iteración activos')

clienteRow.setAttribute('TimestampTotalContratos_c',n
clienteRow.setAttribute('TotalDeContratosIngresados_c
clienteRow.setAttribute('TotalDeContratosActivos_c',tot
clienteRow.setAttribute('TotalDeContratosDesactivados
clienteRow.setAttribute('TotalDeContratosDesactivados
clienteRow.setAttribute('TotalDeContratosNoConcreta
clienteRow.setAttribute('TotalDeContratosNoConcreta
println('posterior a setAttributes contar activos')
}

historicoTemporalidad(type, customerType, /*def re=


estado, customerId, recordId, ownerId, getOriginalAttributeValue('DisponibleHasta_c')
if(nvl(re,'')==''){
disponibleHasta, fechaAsignacion ) re='–'
}
if(isAttributeChanged('DisponibleHasta_c')&& re!
=DisponibleHasta_c){
def historico =
newView('HistoricoDeTemporalidad_c')
def crear = historico.createRow();
crear.setAttribute('IdOportunidad_c', OptyId);
crear.setAttribute('RecordName', re);
crear.setAttribute('ValorActual_c',DisponibleHasta_c);
historico.insertRow(crear)
}*/
def a=tipo
def row=adf.userSession.userData['ResourceRow']
if(row!=null){
return row
}
else{
def userName
=adf.context.getSecurityContext()?.getUserProfile()?.ge
def vo=newView('Resource')
def voc=vo.createViewCriteria()
def vor=voc.createRow()
def voi=vor.ensureCriteriaItem('Username')
voi.setOperator('=')
voi.setValue(userName)
voc.insertRow(vor)
vo.appendViewCriteria(voc)
vo.executeQuery()
while(vo.hasNext()){
def v=vo.next()
if(v.Username==userName){
adf.userSession.userData.put('ResourceRow',v)
return v
}
}
}
return null
adf.util.validarFormatoDoc('P','1231321324') if(tipoDoc=='P'){
if(!nroDoc.matches('^[0-9A-Z]*$') || !
nroDoc.trim()==nroDoc){
println('nroDoc:'+nroDoc+'.
nroDoc.trim():'+nroDoc.trim()+'.')
throw new oracle.jbo.ValidationException('El
Pasaporte
} debe estar formado sólo por números y
}
diasTemporalida('MASIVO','CONTACTO',0) def paramMap=[:]
if(MoC=='')
return 0
def key=MoC+Objeto+Monto
def userData=adf.userSession.userData
def dias=nvl(userData[key],0 as Long)
if(dias!=0)
return dias
def ts=newView('Temporalidad_c')
def tc=newViewCriteria(ts)
def tr=tc.createRow()
def ti=tr.ensureCriteriaItem('AreaComercial_c')
ti.setOperator('=')
ti.setValue(MoC)
tc.insertRow(tr)
ts.appendViewCriteria(tc)
ts.executeQuery()
while(ts.hasNext()){
def t=ts.next()
println('Recordname:'+t.RecordName)
if(Objeto=='CONTACTO'){
dias=t.DiasContacto_c
}
else if(Objeto=='CUENTA'){
dias=t.DiasCuenta_c
}
else if(Objeto=='LEAD'){
dias=t.DiasLead_c
}
else if(Objeto=='OPORTUNIDAD'){
if(Monto=='MONTO_CERO'){
dias=t.DiasOportunidadMontoCero_c as Long
}
else if(Monto=='OPORTUNIDAD'){
dias=t.DiasOportunidadEstandar_c as Long
}
else if(Monto=='GRAN_OPORTUNIDAD'){
dias=t.DiasOportunidadPremium_c as Long
}
else if(Monto=='MONTO_CERO_PROYECTO'){
dias=t.DiasMontoCeroProyecto_c as Long
}
else if(Monto=='OPORTUNIDAD_PROYECTO'){
dias=t.DiasOportunidadEstandarProyecto_c as
Long
}
else
if(Monto=='GRAN_OPORTUNIDAD_PROYECTO'){
dias=t.DiasOportunidadPremiumProyecto_c as
Long
}
}
else if(Objeto=='CLIENTE'){
dias=t.DiasClienteSinContratos_c as Long
}
}
userData.put(key,dias)
return dias as Long
adf.util.deleteView('OLT_c',320300320302)
def vs=newView(viewName)
def vc=newViewCriteria(vs)
def vr=vc.createRow()
def vi=vr.ensureCriteriaItem('Oportunidad_Id_c')
vi.setOperator('=')
vi.setValue(optyId)
vc.insertRow(vr)
vs.appendViewCriteria(vc)
vs.executeQuery()
while(vs.hasNext()){
def v=vs.next()
v.remove()

}
def userTimeZone =
oracle.apps.fnd.applcore.common.ApplSessionUtil.getT
TimeZone tz = TimeZone.getTimeZone(userTimeZone);
def curDate = now();
def curTime = curDate.time;
def newTime = curTime + tz.getRawOffset();
def newDate = new Date(newTime)
return newDate
def secCtx = adf.context.getSecurityContext()
return
secCtx.isUserInRole('PTN_ZBS_SALES_MANAGER_JOB_
def startTime=now().time
def userMap=adf.userSession.userData
if(nvl(userMap['loadedProfileIds'],'')!=''){

}
else{
def ress=newView('Resource')
def resc=newViewCriteria(ress)
def resr=resc.createRow()
resc.insertRow(resr)
ress.appendViewCriteria(resc)
ress.setMaxFetchSize(2000)
ress.executeQuery()
while(ress.hasNext()){
def res=ress.next()
def
listaRoles=['USUARIO_MASIVO','USUARIO_CORPORATI
adf.userSession.userData.put('ResID'+res.PartyId,res.Re
}
adf.userSession.userData.put('loadedProfileIds','OK')
// println('userData:'+adf.userSession.userData)
}
def elapsedTime=now().time - startTime
adf.util.montoTemporalidad('MASIVO',1200, false) def paramMap=[:]
if(moc=='')
return ''
def dias=0
def ts=newView('Temporalidad_c')
def tc=newViewCriteria(ts)
def tr=tc.createRow()
def ti=tr.ensureCriteriaItem('AreaComercial_c')
ti.setOperator('=')
ti.setValue(moc)
tc.insertRow(tr)
ts.appendViewCriteria(tc)
ts.executeQuery()
def tipoMonto=''
while(ts.hasNext()){
def t=ts.next()
def montoPremium=(nvl(t.MontoPremium_c,0 as
BigDecimal)).toInteger()
if(monto<=0){
tipoMonto='MONTO_CERO'
}
else if(monto<montoPremium){
tipoMonto='OPORTUNIDAD'
}
else{
tipoMonto='GRAN_OPORTUNIDAD'
}
}
if(proyecto){
tipoMonto+='_PROYECTO'
}
return tipoMonto
300000004627567
def userTimeZone =
oracle.apps.fnd.applcore.common.ApplSessionUtil.getT
TimeZone tz = TimeZone.getTimeZone(userTimeZone);
def curDate = now();
def curTime = curDate.time;
def newTime = curTime + tz.getRawOffset();
def newDate = new java.sql.Date(newTime)
return newDate
if(customerId==0){
throw new oracle.jbo.ValidationException('(BDS)
Campo
} Tipo de Cliente sin datos, por favor seleccionar

def optys=newView('OpportunityVO')
def optyc=newViewCriteria(optys)
def optyr=optyc.createRow()
def optyi=optyr.ensureCriteriaItem('TargetPartyId')
optyi.setOperator('=')
optyi.setValue(customerId)
def optyj=optyr.ensureCriteriaItem('StatusCode')
optyj.setOperator('=')
optyj.setValue('OPEN')
optyc.insertRow(optyr)
def optyk=optyr.ensureCriteriaItem('AreaComercial_c')
optyk.setOperator('=')
optyk.setValue('MASIVO')
optys.appendViewCriteria(optyc)
optys.setSortBy('OwnerResourcePartyId asc')
optys.executeQuery()
def errorList=[]
def errorCount=0
def usuarioGenericoList=[]
usuarioGenericoList.add(adf.util.usuarioGenericoMasiv
o() as Long)
usuarioGenericoList.add(adf.util.usuarioGenericoCorpo
rativo()
def as Long)
canalList=[]
def countCanal=0
while(optys.hasNext()){
def opty=optys.next()
def canalActual=nvl(opty.CanalObjC_Id_c, 0 as
BigDecimal) as Long
if(canalActual!=canalId && !
usuarioGenericoList.contains(opty.OwnerResourceParty
errorCount+=1
def errorMap=[:]
errorMap.put('Name',opty.Name)
errorMap.put('Owner',opty.PartyName1)
def canal=opty.CanalObjC_c
if(!canalList.contains(canal)){
countCanal+=1
canalList.add(canal)
}
errorList.add(errorMap)
}
}
if(errorCount>0){
def index=0
def errorMsg='Error al crear nueva oportunidad: '
def plural=errorCount>1
if(plural){
errorMsg='Las siguientes oportunidades se
encuentran
} abiertas en '
else{
errorMsg='La siguiente oportunidad se encuentra
abierta
} en '
if(countCanal>1){
errorMsg+='los canales '
}
else{
errorMsg+='el canal '
}
countCanal=0
for(canal in canalList){
if(countCanal>0){
errorMsg+=', '
}
errorMsg+=canal
}
errorMsg+=': '
def prevOwner=errorList[0]['Owner']
while(index<errorCount){
def errorMap=errorList[index]
def owner=errorMap['Owner'] as String
def name=errorMap['Name'] as String
if(prevOwner!=owner){
errorMsg+=' del ejecutivo '+prevOwner+'; '
}
errorMsg+= name+', '
if(index+1==errorCount){
errorMsg+=' del ejecutivo '+owner
}
index+=1
}
errorMsg+='. No es posible crear la oportunidad'
throw new oracle.jbo.ValidationException(errorMsg)
return errorMsg
}
else{
return ''
}
adf.util.('cliente','1716277874','MASIVO')
def url
try{
def tipoNum = ''
def tipoCM = ''
if (tipo=='MASIVO'){
tipoNum='305'
tipoCM = 'masivo'
} else {
tipoNum='306'
tipoCM = 'corporativo'
}

url ='https://webservice.punto.net.ec/puntonet-
embedded/pages/data/'+tipoCM+'/'+data+'.html?
def token=''
def campo = '';
if(data == 'cliente' ||data == 'planes'||data ==
'contratos'
campo =||data == 'facturas' ||data =='pagos'){
'cedulaRuc';
}
if(data == 'plan'){
campo = 'contratoPlan';
}
if(data == 'contrato'){
campo = 'contrato';
}
def tokenKey=campo+'-'+llave
def tokenKeyTimestamp=tokenKey+'-Timestamp'

def curTimestamp=now().time
def tokenDuration=590000
token=nvl(adf.userSession.userData[tokenKey],'') as
String
def
prevTimestamp=nvl(adf.userSession.userData[tokenKe
if(token=='' || curTimestamp-prevTimestamp>
tokenDuration){
def payload=[:]
payload.put(campo,llave)
//println('payload:'+payload)

token =
adf.webServices.ConsumoToken.POST(payload)
println(token)
adf.userSession.userData.put(tokenKey, token)
adf.userSession.userData.put(tokenKeyTimestamp,
}curTimestamp)
url=url+token
//println(url)
return url
}
catch(Exception e){

url=url+''
//println(url)
return url

def startTime=now().time
def printMap=[:]
def leads=newView('Lead')
def leadc=newViewCriteria(leads)

def optys=newView('OpportunityVO')
def optyc=newViewCriteria(optys)

def mapClientes=[:]
def countClientes=0
for(map in listaClientes){
def customerId=nvl(map['customerId'] as Long,0 as
Long)
def ownerId=nvl(map['ownerId'] as Long,0 as Long)
def tipoCliente=nvl(map['tipoCliente'] as String,'')
mapClientes.put(customerId,ownerId)
def leadField=''
if(tipoCliente=='PERSON'){
leadField='PrimaryContactId'
}
if(tipoCliente=='ORGANIZATION'){
leadField='Cuenta_Id_c'
}
if(customerId!=0){
def leadr=leadc.createRow()
def leadi=leadr.ensureCriteriaItem(leadField)
leadi.setOperator('=')
leadi.setValue(customerId)
leadi.setConjunction(0)
leadc.insertRow(leadr)

def optyr=optyc.createRow()
def optyi=optyr.ensureCriteriaItem('TargetPartyId')
optyi.setOperator('=')
optyi.setValue(customerId)
optyc.insertRow(optyr)
countClientes+=1
}
}
def optyList=[]
def leadList=[]
if(countClientes>0){
//reasignar Leads
leads.appendViewCriteria(leadc)
leads.executeQuery()

while(leads.hasNext()){
def map=[:]
def lead=leads.next()
def clienteId=0
def tipoCliente=lead.TipoCliente_c
def statusCode=lead.StatusCode
def statusActivo=statusCode=='QUALIFIED' ||
statusCode=='UNQUALIFIED'
if(statusActivo){
if(tipoCliente=='PERSON'){
clienteId=lead.PrimaryContactId
}
else if(tipoCliente=='ORGANIZATION'){
clienteId=lead.Cuenta_Id_c as Long
}
def ownerId=mapClientes[clienteId]
map.put('prevOwnerId',lead.OwnerId)
map.put('curOwnerId',ownerId)
map.put('Name',lead.Name)
map.put('clienteId',clienteId)
map.put('recordNumber',lead.LeadNumber)
if(lead.OwnerId!=ownerId){
lead.setAttribute('OwnerId',ownerId)
lead.setAttribute('OverrideReassignment_c','Y')
}
}
leadList.add(map)
}

optys.appendViewCriteria(optyc)
optys.executeQuery()

while(optys.hasNext()){
def opty=optys.next()
def ownerId=mapClientes[opty.TargetPartyId]
if(opty.StatusCode=='OPEN'){
def map=[:]
map.put('prevOwnerId',opty.OwnerResourcePartyId)
map.put('curOwnerId',ownerId)
map.put('Name',opty.Name)
map.put('clienteId',opty.TargetPartyId)
map.put('recordNumber',opty.OptyNumber)
if(opty.OwnerResourcePartyId!=ownerId){
opty.setAttribute('OwnerResourcePartyId',ownerId)
opty.setAttribute('OverrideReassignment_c','Y')
}
optyList.add(map)
}
}
}
printMap.put('leads',leadList)
printMap.put('optys',optyList)
printMap.put('mapClientesOwners',mapClientes)
def elapsedTime=now().time - startTime
printMap.put('elapsedTime',elapsedTime)

println(''+printMap)
def vars=newView('VariablesDeSistema_c')
def varc=newViewCriteria(vars)
def varr=varc.createRow()
def vari=varr.ensureCriteriaItem('RecordName')
vari.setOperator('=')
vari.setValue(codigo)
varc.insertRow(varr)
vars.appendViewCriteria(varc)
vars.executeQuery()
def valor=''
while(vars.hasNext()){
def var = vars.next()
valor= var.Valor_c
}
return valor
def secCtx = adf.context.getSecurityContext()
return
secCtx.isUserInRole('PTN_ZBS_SALES_MANAGER_JOB_
Relationships
Source Object Target Object
Evento o Campaña Acción inteligente

Leads Cliente

Cliente Netplus Acción inteligente

Promociones y servicios Descuento

Canal Acción inteligente

Ancho de banda Acción inteligente

Oportunidad Codigo postal

Canal Oportunidad

Color de hilo Acción inteligente

Configuración de Temporalidad Acción inteligente

Descuento Detalle

Recurso Variable de sistema

Oportunidad Consulta Score

Oportunidad Plan

Canal Origen

Descuento Acción inteligente

Grupo de hilo Oportunidad

Oportunidad IP radio wifi

Canal Leads

Oportunidad Histórico de Etapa de Venta

Intervalo cada Promociones y servicios


Intervalo cada Promociones y servicios

Oportunidad Promocion Descuento

Oportunidad Activo

Activo Adicional

Oportunidad Diferir

Recurso Contacto

Forma de pago Acción inteligente

Oportunidad Color de hilo

Plan Última Milla Netplus

Oportunidad OLT

Descuento Promociones y servicios

Canal Activo

Asignación mensual de leads Recurso

Promociones y servicios Cantidad

Plan Acción inteligente

Promociones y servicios Intervalo cada

Recurso Intervalo hasta

Splitter Acción inteligente

Consola de Asignación de Leads Asignación mensual de leads

Cliente Leads

Recurso Promocion Descuento

Recurso Cantidad

Grupo de hilo Acción inteligente


Nodo wifi Acción inteligente

Recurso Actividad

Contacto Log de Proceso

Última Milla Netplus Acción inteligente

Recurso Origen

Plan Ancho de banda

Oportunidad Descuento

Detalle Promociones y servicios

Recurso Splitter

Recurso Diferir

Recurso Historico de temporalidad

Color de hilo Oportunidad

Asignación mensual de leads Acción inteligente

Recurso Configuración de Temporalidad

Origen Activo

Oportunidad Detalle

Historico de temporalidad Acción inteligente

Promocion Descuento Acción inteligente

Oportunidad Splitter

Recurso Nodo wifi

Actividad Económica Catálogo CIIU

Recurso Evento o Campaña

Recurso Ancho de banda


Recurso Ancho de banda

Mapeo Formas de Pago - Tipos de Pago Acción inteligente

Recurso Oportunidad

Promociones y servicios Intervalo hasta

Oportunidad Histórico de Contrato

Recurso Oportunidad

Consulta Score Acción inteligente

Bucket Oportunidad

Recurso Promociones y servicios

Diferir Promociones y servicios

Contacto Historico de temporalidad

Histórico de Contrato Acción inteligente

Recurso Asignación mensual de leads

OLT Acción inteligente

Recurso Intervalo cada

Oportunidad Cliente Netplus

Detalle Promocion Descuento

Recurso Grupo de hilo

Recurso Leads

Detalle Promociones y servicios

Última Milla Netplus Oportunidad

Recurso Consulta Score

Recurso Historico de temporalidad


Oportunidad Forma de pago

Recurso Plan

Partida de Asignación de Leads Acción inteligente

Consola de Asignación de Leads Acción inteligente

Renovación Promociones y servicios

Renovación Acción inteligente

Contacto Consulta Score

Recurso Canal

Cantidad Promociones y servicios

Histórico de Etapa de Venta Acción inteligente

Recurso Servicio Netplus

Diferir Descuento

Recurso Histórico de Contrato

Recurso Bucket

Promociones y servicios Detalle

Recurso Consola de Asignación de Leads

Bucket Acción inteligente

Intervalo hasta Acción inteligente

Detalle Acción inteligente

Oportunidad Servicio Netplus

Splitter Grupo de hilo

Diferir Acción inteligente

Oportunidad Ancho de banda


Oportunidad Ancho de banda

IP radio wifi Acción inteligente

Descuento Promocion Descuento

Codigo postal Acción inteligente

Promociones y servicios Acción inteligente

Promociones y servicios Renovación

Evento o Campaña Leads

Cliente Historico de temporalidad

Origen Oportunidad

Asignación mensual de leads Leads

Promociones y servicios Diferir

Diferir Promocion Descuento

Promocion Descuento Diferir

Consulta Score Log de Proceso

Log de Proceso Acción inteligente

Recurso Leads

Actividad Económica Cliente

Recurso Cliente

Oportunidad Nodo wifi

Actividad Económica Acción inteligente

Recurso Grupo Comercial

Descuento Promociones y servicios

Recurso OLT
Recurso IP radio wifi

Intervalo cada Acción inteligente

Recurso Renovación

Recurso Última Milla Netplus

Catálogo CIIU Oportunidad

Ancho de banda Oportunidad

Forma de pago Oportunidad

Canal Oportunidad

Bucket Codigo postal

Grupo Comercial Acción inteligente

Variable de sistema Acción inteligente

Cliente Cliente Netplus

Oportunidad Historico de temporalidad

Canal Contacto

Recurso Color de hilo

Contacto Cliente Netplus

Codigo postal Bucket

Oportunidad Bucket

Plan Oportunidad

Detalle Diferir

Origen Contacto

Servicios Adquiridos Acción inteligente

Codigo postal Oportunidad


Codigo postal Oportunidad

Recurso Detalle

Recurso Servicios Adquiridos

Catálogo CIIU Cliente

Promocion Descuento Detalle

Descuento Diferir

Recurso Partida de Asignación de Leads

Recurso Mapeo Formas de Pago - Tipos de Pago

Cliente Log de Proceso

Recurso Codigo postal

Origen Acción inteligente

Contacto Leads

Intervalo hasta Promociones y servicios

Diferir Promociones y servicios

OLT Oportunidad

Oportunidad Log de Proceso

Splitter Oportunidad

Recurso Descuento

Oportunidad Última Milla Netplus

Oportunidad Grupo de hilo

Recurso Actividad Económica

Nodo wifi Oportunidad

Cantidad Acción inteligente


Recurso Forma de pago

Nodo wifi IP radio wifi

Activo Servicios Adquiridos

Grupo de hilo Color de hilo

Promocion Descuento Descuento

Recurso Cliente Netplus

Recurso Log de Proceso

Diferir Detalle

Actividad Económica Oportunidad

Recurso Catálogo CIIU

IP radio wifi Oportunidad

Oportunidad Promociones y servicios

Recurso Historico de temporalidad

Origen Leads

Leads Contacto

Catálogo CIIU Acción inteligente

OLT Splitter

Recurso Histórico de Etapa de Venta

Servicio Netplus Acción inteligente

Grupo Comercial Cliente

Dirección Oportunidad
Name Cascade Delete Intersection Object
Subestado_cTosmartActions Yes

LeadToOrganizationForLeadProgenitor No

ClienteNetplus_cTosmartActions Yes

PromocionesYServiciosToDescuentoForPromocion No
Oservicio
Canal_cTosmartActions Yes

AnchoDeBanda_cTosmartActions Yes

OpportunityToCodigoPostalForOportunidad No

ChannelToOpportunityForCanal No

ColorDeHilo_cTosmartActions Yes

Temporalidad_cTosmartActions Yes

DescuentoToDetalleForDescuentoDefault No

ResourceToVariablesDeSistemaForOraZcxOwner No

OpportunityToHistoricoConsultaScoreForOportuni No
dad
OpportunityToPlanForOportunidad No

CanalToOrigenForCanal No

Descuento_cTosmartActions Yes

GrupoDeHiloToOpportunityForGrupoDeHilo No

OpportunityToIPRadioWifiForOportunidad No

CanalToLeadForCanal No

OpportunityToHistoricoDeEtapaDeVentaForOportu No
nidad
IntervaloCadaToPromocionesYServiciosForInterval No
oCada
IntervaloCadaToPromocionesYServiciosForInterval No
oCada
OpportunityToPromocionDescuentoForOportunida No
d
OpportunityToAssetEOForIdentificadorDeOportuni No
dad
AssetEOToAdicional_c Yes

OpportunityToDiferirForOportunidad No

ResourceToPersonForUsuarioDesasignado No

FormaDePago_cTosmartActions Yes

OpportunityToColorDeHiloForOportunidad No

PlanToUltimaMillaNetplusForPlan No

OpportunityToOLTForOportunidad No

DescuentoToPromocionesYServiciosForDescuento No

CanalToAssetEOForCanal No

Vendedor No RecursoAsignacionLead_
c
PromocionesYServiciosToCantidadForPromocionO No
Servicio
Plan_cTosmartActions Yes

PromocionesYServiciosToIntervaloCadaForPromoci No
onOServicio
ResourceToIntervaloHastaForOraZcxOwner No

Splitter_cTosmartActions Yes

VarReglasAsignacionLeadsToAsignacionMensualLe No
adsForVariablesOrigen
OrganizationToLeadForCuenta No

ResourceToPromocionDescuentoForOraZcxOwner No

ResourceToCantidadForOraZcxOwner No

GrupoDeHilo_cTosmartActions Yes
NodoWifi_cTosmartActions Yes

ResourceToActivityForEjecutivoOpp No

PersonToBitacoraForContacto No

UltimaMillaNetplus_cTosmartActions Yes

ResourceToOrigenForOraZcxOwner No

PlanToAnchoDeBandaForPlan No

OpportunityToDescuentoForOportunidad No

DetalleToPromocionesYServiciosForDetalleDefault No

ResourceToSplitterForOraZcxOwner No

ResourceToDiferirForOraZcxOwner No

ResourceToHistoricoDeTemporalidadForRecursoAs No
ignado
ColorDeHiloToOpportunityForColorDeHilo No

AsignacionMensualLeads_cTosmartActions Yes

ResourceToTemporalidadForOraZcxOwner No

OrigenToAssetEOForOrigen No

OpportunityToDetalleForOportunidad No

HistoricoDeTemporalidad_cTosmartActions Yes

PromocionDescuento_cTosmartActions Yes

OpportunityToSplitterForOportunidad No

ResourceToNodoWifiForOraZcxOwner No

ActividadEconomicaToCatalogoCIIUForActividadEc No
onomicaDin
ResourceToSubestadoForOraZcxOwner No

ResourceToAnchoDeBandaForOraZcxOwner No
ResourceToAnchoDeBandaForOraZcxOwner No

MapeoFormaTipoPago_cTosmartActions Yes

ResourceToOpportunityForUsuarioDesasignado No

PromocionesYServiciosToIntervaloHastaForPromoc No
ionOServicio
OpportunityToHistoricoDeContratoForOportunida No
d
ResourceToOpportunityForEjecutivoPreventa No

HistoricoConsultaScore_cTosmartActions Yes

BucketToOpportunityForBucket No

ResourceToPromocionesYServiciosForOraZcxOwne No
r
DiferirToPromocionesYServiciosForDiferirDefault No

PersonToHistoricoDeTemporalidadForIdContacto No

HistoricoDeContrato_cTosmartActions Yes

ResourceToAsignacionMensualLeadsForOraZcxOw No
ner
OLT_cTosmartActions Yes

ResourceToIntervaloCadaForOraZcxOwner No

OpportunityToClienteNetplusForOportunidad No

DetalleToPromocionDescuentoForDetalle No

ResourceToGrupoDeHiloForOraZcxOwner No

ResourceToLeadForUsuarioDesasignado No

DetalleToPromocionesYServiciosForDetalle No

UltimaMillaNetplusToOpportunityForUltimaMilla No

ResourceToHistoricoConsultaScoreForOraZcxOwne No
r
ResourceToHistoricoDeTemporalidadForOraZcxOw No
ner
OpportunityToFormaDePagoForOportunidad No

ResourceToPlanForOraZcxOwner No

PartidaAsignacionLeads_cTosmartActions Yes

VarReglasAsignacionLeads_cTosmartActions Yes

RenovacionToPromocionesYServiciosForRenovacio No
n
Renovacion_cTosmartActions Yes

PersonToHistoricoConsultaScoreForContacto No

ResourceToCanalForOraZcxOwner No

CantidadToPromocionesYServiciosForCantidad No

HistoricoDeEtapaDeVenta_cTosmartActions Yes

ResourceToServicioNetplusForOraZcxOwner No

DiferirToDescuentoForDiferir No

ResourceToHistoricoDeContratoForOraZcxOwner No

ResourceToBucketForOraZcxOwner No

PromocionesYServiciosToDetalleForPromocionOSe No
rvicio
ResourceToVarReglasAsignacionLeadsForOraZcxO No
wner
Bucket_cTosmartActions Yes

IntervaloHasta_cTosmartActions Yes

Detalle_cTosmartActions Yes

OpportunityToServicioNetplusForOportunidad No

SplitterToGrupoDeHiloForSplitter No

Diferir_cTosmartActions Yes

OpportunityToAnchoDeBandaForOportunidad No
OpportunityToAnchoDeBandaForOportunidad No

IPRadioWifi_cTosmartActions Yes

DescuentoToPromocionDescuentoForDescuento No

CodigoPostal_cTosmartActions Yes

PromocionesYServicios_cTosmartActions Yes

PromocionesYServiciosToRenovacionForPromocion No
OServicio
SubestadoToLeadForEvento No

OrganizationToHistoricoDeTemporalidadForIdCue No
nta
OrigenToOpportunityForOrigen No

AsignacionMensualLeadsToLeadForAsignacionMen No
sual
PromocionesYServiciosToDiferirForPromocionOSer No
vicio
DiferirToPromocionDescuentoForDiferir No

PromocionDescuentoToDiferirForPromocionDescu No
ento
HistoricoConsultaScoreToBitacoraForConsultaScor No
e
Bitacora_cTosmartActions Yes

ResourceToLeadForOwnerAsignadoRegla No

ActividadEconomicaToOrganizationForActividadEc No
onomica
ResourceToOrganizationForUsuarioDesasignado No

OpportunityToNodoWifiForOportunidad No

ActividadEconomica_cTosmartActions Yes

ResourceToGrupoComercialForOraZcxOwner No

DescuentoToPromocionesYServiciosForDescuento No
Default
ResourceToOLTForOraZcxOwner No
ResourceToIPRadioWifiForOraZcxOwner No

IntervaloCada_cTosmartActions Yes

ResourceToRenovacionForOraZcxOwner No

ResourceToUltimaMillaNetplusForOraZcxOwner No

CatalogoCIIUToOpportunityForNombreCatalogoCII No
UDin
AnchoDeBandaToOpportunityForAnchoDeBanda No

FormaDePagoToOpportunityForFormaDePagoDin No

CanalToOpportunityForCanalObjC No

BucketToCodigoPostalForBucket No

GrupoComercial_cTosmartActions Yes

VariablesDeSistema_cTosmartActions Yes

OrganizationToClienteNetplusForCuenta No

OpportunityToHistoricoDeTemporalidadForIdOpor No
tunidad
CanalToPersonForCanalDeVenta No

ResourceToColorDeHiloForOraZcxOwner No

PersonToClienteNetplusForContacto No

CodigoPostalToBucketForCodigoPostal No

OpportunityToBucketForOportunidad No

PlanToOpportunityForPlan No

DetalleToDiferirForDetalle No

OrigenToPersonForOrigenDeVenta No

ServiciosAdquiridos_cTosmartActions Yes

CodigoPostalToOpportunityForCodigoPostal No
CodigoPostalToOpportunityForCodigoPostal No

ResourceToDetalleForOraZcxOwner No

ResourceToServiciosAdquiridosForOraZcxOwner No

CatalogoCIIUToOrganizationForNombreCatalogoCI No
IUDin
PromocionDescuentoToDetalleForPromocionDescu No
ento
DescuentoToDiferirForDescuentoDefault No

ResourceToPartidaAsignacionLeadsForOraZcxOwn No
er
ResourceToMapeoFormaTipoPagoForOraZcxOwne No
r
OrganizationToBitacoraForCuenta No

ResourceToCodigoPostalForOraZcxOwner No

Origen_cTosmartActions Yes

PersonToLeadForContacto No

IntervaloHastaToPromocionesYServiciosForInterval No
oHasta
DiferirToPromocionesYServiciosForDiferir No

OLTToOpportunityForOLT No

OpportunityToBitacoraForOportunidad No

SplitterToOpportunityForSplitter No

ResourceToDescuentoForOraZcxOwner No

OpportunityToUltimaMillaNetplusForOportunidad No

OpportunityToGrupoDeHiloForOportunidad No

ResourceToActividadEconomicaForOraZcxOwner No

NodoWifiToOpportunityForNodoWifi No

Cantidad_cTosmartActions Yes
ResourceToFormaDePagoForOraZcxOwner No

NodoWifiToIPRadioWifiForNodoWifi No

AssetEOToServiciosAdquiridosForIdDetalleAsset No

GrupoDeHiloToColorDeHiloForGrupoDeHilo No

PromocionDescuentoToDescuentoForPromocionD No
escuento
ResourceToClienteNetplusForOraZcxOwner No

ResourceToBitacoraForOraZcxOwner No

DiferirToDetalleForDiferirDefault No

ActividadEconomicaToOpportunityForActividadEco No
nomica
ResourceToCatalogoCIIUForOraZcxOwner No

IPRadioWifiToOpportunityForIPRadioWifi No

OpportunityToPromocionesYServiciosForOportuni No
dad
ResourceToHistoricoDeTemporalidadForRecursoAn No
terior
OrigenToLeadForOrigen No

LeadToPersonForLeadProgenitor No

CatalogoCIIU_cTosmartActions Yes

OLTToSplitterForOLT No

ResourceToHistoricoDeEtapaDeVentaForOraZcxOw No
ner
ServicioNetplus_cTosmartActions Yes

GrupoComercialToOrganizationForGrupoComercial No
Din
DireccionInstalacion No DireccionInstalacion_c
Cardinality Description
1:M

1:M Relationship created for lookup attribute


LeadProgenitor_c in Organization
1:M

1:M Relationship created for lookup attribute


PromocionOservicio_c in Descuento_c
1:M

1:M

1:M Relationship created for lookup attribute Oportunidad_c


in CodigoPostal_c
1:M Relationship created for lookup attribute Canal_c in
Opportunity
1:M

1:M

1:M Relationship created for lookup attribute


DescuentoDefault_c in Detalle_c
1:M Relationship created for lookup attribute OraZcxOwner_c
in VariablesDeSistema_c
1:M Relationship created for lookup attribute Oportunidad_c
in HistoricoConsultaScore_c
1:M Relationship created for lookup attribute Oportunidad_c
in Plan_c
1:M Relationship created for lookup attribute Canal_c in
Origen_c
1:M

1:M Relationship created for lookup attribute GrupoDeHilo_c


in Opportunity
1:M Relationship created for lookup attribute Oportunidad_c
in IPRadioWifi_c
1:M Relationship created for lookup attribute Canal_c in Lead

1:M Relationship created for lookup attribute Oportunidad_c


in HistoricoDeEtapaDeVenta_c
1:M Relationship created for lookup attribute
IntervaloCada_c in PromocionesYServicios_c
1:M

1:M Relationship created for lookup attribute Oportunidad_c


in PromocionDescuento_c
1:M Relationship created for lookup attribute
IdentificadorDeOportunidad_c in AssetEO
1:M

1:M Relationship created for lookup attribute Oportunidad_c


in Diferir_c
1:M Relationship created for lookup attribute
UsuarioDesasignado_c in Person
1:M

1:M Relationship created for lookup attribute Oportunidad_c


in ColorDeHilo_c
1:M Relationship created for lookup attribute Plan_c in
UltimaMillaNetplus_c
1:M Relationship created for lookup attribute Oportunidad_c
in OLT_c
1:M Relationship created for lookup attribute Descuento_c in
PromocionesYServicios_c
1:M Relationship created for lookup attribute Canal_c in
AssetEO
M:M

1:M Relationship created for lookup attribute


PromocionOServicio_c in Cantidad_c
1:M

1:M Relationship created for lookup attribute


PromocionOServicio_c in IntervaloCada_c
1:M Relationship created for lookup attribute OraZcxOwner_c
in IntervaloHasta_c
1:M

1:M Relationship created for lookup attribute


VariablesOrigen_c in AsignacionMensualLeads_c
1:M Relationship created for lookup attribute Cuenta_c in
Lead
1:M Relationship created for lookup attribute OraZcxOwner_c
in PromocionDescuento_c
1:M Relationship created for lookup attribute OraZcxOwner_c
in Cantidad_c
1:M
1:M

1:M Relationship created for lookup attribute EjecutivoOpp_c


in Activity
1:M Relationship created for lookup attribute Contacto_c in
Bitacora_c
1:M

1:M Relationship created for lookup attribute OraZcxOwner_c


in Origen_c
1:M Relationship created for lookup attribute Plan_c in
AnchoDeBanda_c
1:M Relationship created for lookup attribute Oportunidad_c
in Descuento_c
1:M Relationship created for lookup attribute
DetalleDefault_c in PromocionesYServicios_c
1:M Relationship created for lookup attribute OraZcxOwner_c
in Splitter_c
1:M Relationship created for lookup attribute OraZcxOwner_c
in Diferir_c
1:M Relationship created for lookup attribute
RecursoAsignado_c in HistoricoDeTemporalidad_c
1:M Relationship created for lookup attribute ColorDeHilo_c
in Opportunity
1:M

1:M Relationship created for lookup attribute OraZcxOwner_c


in Temporalidad_c
1:M Relationship created for lookup attribute Origen_c in
AssetEO
1:M Relationship created for lookup attribute Oportunidad_c
in Detalle_c
1:M

1:M

1:M Relationship created for lookup attribute Oportunidad_c


in Splitter_c
1:M Relationship created for lookup attribute OraZcxOwner_c
in NodoWifi_c
1:M Relationship created for lookup attribute
ActividadEconomicaDin_c in CatalogoCIIU_c
1:M Relationship created for lookup attribute OraZcxOwner_c
in Subestado_c
1:M Relationship created for lookup attribute OraZcxOwner_c
in AnchoDeBanda_c
1:M

1:M

1:M Relationship created for lookup attribute


UsuarioDesasignado_c in Opportunity
1:M Relationship created for lookup attribute
PromocionOServicio_c in IntervaloHasta_c
1:M Relationship created for lookup attribute Oportunidad_c
in HistoricoDeContrato_c
1:M Relationship created for lookup attribute
EjecutivoPreventa_c in Opportunity
1:M

1:M Relationship created for lookup attribute Bucket_c in


Opportunity
1:M Relationship created for lookup attribute OraZcxOwner_c
in PromocionesYServicios_c
1:M Relationship created for lookup attribute DiferirDefault_c
in PromocionesYServicios_c
1:M Relationship created for lookup attribute IdContacto_c in
HistoricoDeTemporalidad_c
1:M

1:M Relationship created for lookup attribute OraZcxOwner_c


in AsignacionMensualLeads_c
1:M

1:M Relationship created for lookup attribute OraZcxOwner_c


in IntervaloCada_c
1:M Relationship created for lookup attribute Oportunidad_c
in ClienteNetplus_c
1:M Relationship created for lookup attribute Detalle_c in
PromocionDescuento_c
1:M Relationship created for lookup attribute OraZcxOwner_c
in GrupoDeHilo_c
1:M Relationship created for lookup attribute
UsuarioDesasignado_c in Lead
1:M Relationship created for lookup attribute Detalle_c in
PromocionesYServicios_c
1:M Relationship created for lookup attribute UltimaMilla_c
in Opportunity
1:M Relationship created for lookup attribute OraZcxOwner_c
in HistoricoConsultaScore_c
1:M Relationship created for lookup attribute OraZcxOwner_c
in HistoricoDeTemporalidad_c
1:M Relationship created for lookup attribute Oportunidad_c
in FormaDePago_c
1:M Relationship created for lookup attribute OraZcxOwner_c
in Plan_c
1:M

1:M

1:M Relationship created for lookup attribute Renovacion_c


in PromocionesYServicios_c
1:M

1:M Relationship created for lookup attribute Contacto_c in


HistoricoConsultaScore_c
1:M Relationship created for lookup attribute OraZcxOwner_c
in Canal_c
1:M Relationship created for lookup attribute Cantidad_c in
PromocionesYServicios_c
1:M

1:M Relationship created for lookup attribute OraZcxOwner_c


in ServicioNetplus_c
1:M Relationship created for lookup attribute Diferir_c in
Descuento_c
1:M Relationship created for lookup attribute OraZcxOwner_c
in HistoricoDeContrato_c
1:M Relationship created for lookup attribute OraZcxOwner_c
in Bucket_c
1:M Relationship created for lookup attribute
PromocionOServicio_c in Detalle_c
1:M Relationship created for lookup attribute OraZcxOwner_c
in VarReglasAsignacionLeads_c
1:M

1:M

1:M

1:M Relationship created for lookup attribute Oportunidad_c


in ServicioNetplus_c
1:M Relationship created for lookup attribute Splitter_c in
GrupoDeHilo_c
1:M

1:M Relationship created for lookup attribute Oportunidad_c


in AnchoDeBanda_c
1:M

1:M

1:M Relationship created for lookup attribute Descuento_c in


PromocionDescuento_c
1:M

1:M

1:M Relationship created for lookup attribute


PromocionOServicio_c in Renovacion_c
1:M Relationship created for lookup attribute Evento_c in
Lead
1:M Relationship created for lookup attribute IdCuenta_c in
HistoricoDeTemporalidad_c
1:M Relationship created for lookup attribute Origen_c in
Opportunity
1:M Relationship created for lookup attribute
AsignacionMensual_c in Lead
1:M Relationship created for lookup attribute
PromocionOServicio_c in Diferir_c
1:M Relationship created for lookup attribute Diferir_c in
PromocionDescuento_c
1:M Relationship created for lookup attribute
PromocionDescuento_c in Diferir_c
1:M Relationship created for lookup attribute
ConsultaScore_c in Bitacora_c
1:M

1:M Relationship created for lookup attribute


OwnerAsignadoRegla_c in Lead
1:M Relationship created for lookup attribute
ActividadEconomica_c in Organization
1:M Relationship created for lookup attribute
UsuarioDesasignado_c in Organization
1:M Relationship created for lookup attribute Oportunidad_c
in NodoWifi_c
1:M

1:M Relationship created for lookup attribute OraZcxOwner_c


in GrupoComercial_c
1:M Relationship created for lookup attribute
DescuentoDefault_c in PromocionesYServicios_c
1:M Relationship created for lookup attribute OraZcxOwner_c
in OLT_c
1:M Relationship created for lookup attribute OraZcxOwner_c
in IPRadioWifi_c
1:M

1:M Relationship created for lookup attribute OraZcxOwner_c


in Renovacion_c
1:M Relationship created for lookup attribute OraZcxOwner_c
in UltimaMillaNetplus_c
1:M Relationship created for lookup attribute
NombreCatalogoCIIUDin_c in Opportunity
1:M Relationship created for lookup attribute
AnchoDeBanda_c in Opportunity
1:M Relationship created for lookup attribute
FormaDePagoDin_c in Opportunity
1:M Relationship created for lookup attribute CanalObjC_c in
Opportunity
1:M Relationship created for lookup attribute Bucket_c in
CodigoPostal_c
1:M

1:M

1:M Relationship created for lookup attribute Cuenta_c in


ClienteNetplus_c
1:M Relationship created for lookup attribute
IdOportunidad_c in HistoricoDeTemporalidad_c
1:M Relationship created for lookup attribute
CanalDeVenta_c in Person
1:M Relationship created for lookup attribute OraZcxOwner_c
in ColorDeHilo_c
1:M Relationship created for lookup attribute Contacto_c in
ClienteNetplus_c
1:M Relationship created for lookup attribute CodigoPostal_c
in Bucket_c
1:M Relationship created for lookup attribute Oportunidad_c
in Bucket_c
1:M Relationship created for lookup attribute Plan_c in
Opportunity
1:M Relationship created for lookup attribute Detalle_c in
Diferir_c
1:M Relationship created for lookup attribute
OrigenDeVenta_c in Person
1:M

1:M Relationship created for lookup attribute CodigoPostal_c


in Opportunity
1:M

1:M Relationship created for lookup attribute OraZcxOwner_c


in Detalle_c
1:M Relationship created for lookup attribute OraZcxOwner_c
in ServiciosAdquiridos_c
1:M Relationship created for lookup attribute
NombreCatalogoCIIUDin_c in Organization
1:M Relationship created for lookup attribute
PromocionDescuento_c in Detalle_c
1:M Relationship created for lookup attribute
DescuentoDefault_c in Diferir_c
1:M Relationship created for lookup attribute OraZcxOwner_c
in PartidaAsignacionLeads_c
1:M Relationship created for lookup attribute OraZcxOwner_c
in MapeoFormaTipoPago_c
1:M Relationship created for lookup attribute Cuenta_c in
Bitacora_c
1:M Relationship created for lookup attribute OraZcxOwner_c
in CodigoPostal_c
1:M

1:M Relationship created for lookup attribute Contacto_c in


Lead
1:M Relationship created for lookup attribute
IntervaloHasta_c in PromocionesYServicios_c
1:M Relationship created for lookup attribute Diferir_c in
PromocionesYServicios_c
1:M Relationship created for lookup attribute OLT_c in
Opportunity
1:M Relationship created for lookup attribute Oportunidad_c
in Bitacora_c
1:M Relationship created for lookup attribute Splitter_c in
Opportunity
1:M Relationship created for lookup attribute OraZcxOwner_c
in Descuento_c
1:M Relationship created for lookup attribute Oportunidad_c
in UltimaMillaNetplus_c
1:M Relationship created for lookup attribute Oportunidad_c
in GrupoDeHilo_c
1:M Relationship created for lookup attribute OraZcxOwner_c
in ActividadEconomica_c
1:M Relationship created for lookup attribute NodoWifi_c in
Opportunity
1:M
1:M Relationship created for lookup attribute OraZcxOwner_c
in FormaDePago_c
1:M Relationship created for lookup attribute NodoWifi_c in
IPRadioWifi_c
1:M Relationship created for lookup attribute
IdDetalleAsset_c in ServiciosAdquiridos_c
1:M Relationship created for lookup attribute GrupoDeHilo_c
in ColorDeHilo_c
1:M Relationship created for lookup attribute
PromocionDescuento_c in Descuento_c
1:M Relationship created for lookup attribute OraZcxOwner_c
in ClienteNetplus_c
1:M Relationship created for lookup attribute OraZcxOwner_c
in Bitacora_c
1:M Relationship created for lookup attribute DiferirDefault_c
in Detalle_c
1:M Relationship created for lookup attribute
ActividadEconomica_c in Opportunity
1:M Relationship created for lookup attribute OraZcxOwner_c
in CatalogoCIIU_c
1:M Relationship created for lookup attribute IPRadioWifi_c
in Opportunity
1:M Relationship created for lookup attribute Oportunidad_c
in PromocionesYServicios_c
1:M Relationship created for lookup attribute
RecursoAnterior_c in HistoricoDeTemporalidad_c
1:M Relationship created for lookup attribute Origen_c in
Lead
1:M Relationship created for lookup attribute
LeadProgenitor_c in Person
1:M

1:M Relationship created for lookup attribute OLT_c in


Splitter_c
1:M Relationship created for lookup attribute OraZcxOwner_c
in HistoricoDeEtapaDeVenta_c
1:M

1:M Relationship created for lookup attribute


GrupoComercialDin_c in Organization
M:M
Rest Web Services
Name URL
CreateUpdateContactResponsys https://soacs.puntonet.ec/osb/sales-resp/
CreateUpdateProductResponsys asyn/contact/update/##PARAM##
https://soacs.puntonet.ec/osb/sales-resp/
ObtenerToken asyn/product/update/##PARAM##
https://soacs.puntonet.ec/osb/soa/token
reservarLiberarSplitter https://soacs.puntonet.ec/osb/Netplus/
LogBitacora ReserveLiberateSplitter
https://eiqv.fa.us6.oraclecloud.com/
ConsumoToken crmRestApi/resources/latest/Bitacora_c
https://soacs.puntonet.ec/osb/embebido/
EnvioDeInformacionDecontrato token
https://soacs.puntonet.ec/osb/send/
CrearActualizarOportunidad ContractInformation
https://soacs.puntonet.ec/osb/
ConsultarAnchoDeBanda CreateUpdateOpportunitiesNetplus
https://soacs.puntonet.ec/osb/Netplus/
CrearClienteNaturalJuridico ConsultBandWidth
https://soacs.puntonet.ec/osb/
ConsultarCalificacionCliente CrearClienteNetplusSales
https://soacs.puntonet.ec/osb/consult/
ActualizarClienteNaturalJuridico segmentation
https://soacs.puntonet.ec/osb/netPlus/
validaClienteEnNetPlus updateCustomerNetplus
https://soacs.puntonet.ec/netPlus/
validarCliente
SOAP Web Services
Name URL
Adjuntos https://eiqv.fa.us6.oraclecloud.com:443/
crmService/ActivityService?WSDL
Mashup Content: Web Applications
Name Active
wiki Yes
PruebaAlo Yes
ReporteEmbebido Yes
EloquaProfilerProd Yes
Type
Groovy expression
Parameter-based
Groovy expression
Parameter-based
URL Definition
return 'https://en.wikipedia.org/wiki/CRM'
https://es.wikipedia.org/wiki/Wikipedia:Portada
https://des-webservice.punto.net.ec/puntonet-embedded/pages/data/
https://login.eloqua.com/apps/embed/salesTools/profiler
Object Name : ActividadEconomica_c
Object Name ActividadEconomica_c
Object Display Name Plural Actividades Economicas
Object Type Custom
Application Name CRM
Table Name HZ_REF_ENTITIES
Total number of custom fields
Total number of modified Standard fields
Total number of Triggers
Total number of Object Functions
Total number of Object Workflows
Total number of Validations
Total number of Dynamic Layouts

Custom Fields
Name Display Name Type Column Name
RecordName Código de actividad económica OOTB RECORD_NAME
CreationDate Fecha de Creación OOTB CREATION_DATE
CurrencyCode Currency Code FCL CURRENCY_CODE
LastUpdatedBy Actualizado por OOTB LAST_UPDATED_BY
CreatedBy Creado por OOTB CREATED_BY
OraZcxOwner_c Owner DCL

Descripcion_c Descripción Text EXTN_ATTRIBUTE_CHAR007


Activo_c Activo Checkbox EXTN_ATTRIBUTE_CHAR008
OraZcxOwner_Id_c Owner DCLForeignKey OWNER_RESOURCE_ID
Id Identificador de Registro OOTB ID
RecordNumber Record Number OOTB RECORD_NUMBER
LastUpdateDate Fecha de Última Actualización OOTB LAST_UPDATE_DATE

Validations
Name Type Error Message
Rule1 Field Validation
Field Name : OraZcxOwner_Id_c

Object Workflows
Name Definition Name Event Point Description
ActividadEconomica_c_Stan Create
dard_Create
ActividadEconomica_c_Stan Delete
dard_Delete
ActividadEconomica_c_Stan Update
dard_Update
ActividadEconomica_c
Actividades Economicas
Custom
CRM
HZ_REF_ENTITIES
12
0
0
0
3
1
0

umn Name Default Value Required Updatable Searchable REST Enabl


ORD_NAME Yes Yes Yes Yes
ATION_DATE Yes No Yes Yes
RENCY_CODE No Yes Yes Yes
T_UPDATED_BY Yes Yes Yes Yes
ATED_BY Yes No Yes Yes
Yes Yes No Yes
N_ATTRIBUTE_CHAR007 Yes Yes Yes Yes
N_ATTRIBUTE_CHAR008 N Yes Yes Yes Yes
NER_RESOURCE_ID Yes Yes Yes Yes
Yes No Yes Yes
ORD_NUMBER Yes No Yes Yes
T_UPDATE_DATE Yes Yes Yes Yes

Expression
adf.source.isLookupIdValid('OraZcxOwner_Id_c',newValue)

ption Disabled Actions Expression


No return
(oracle.apps.fnd.applcore.Profile.ge
No return
(oracle.apps.fnd.applcore.Profile.ge
No return
(oracle.apps.fnd.applcore.Profile.ge
Precision MaxLength Expression
80 80
0 0
15 15
64 64
64 64
1500 1500
500 500
10 10
18 18
32 32
64 64
0 0

ression
rn
cle.apps.fnd.applcore.Profile.get('ZCX_CUSTOM_OBJECT_EVENTS') ==
rn
cle.apps.fnd.applcore.Profile.get('ZCX_CUSTOM_OBJECT_EVENTS') ==
rn
cle.apps.fnd.applcore.Profile.get('ZCX_CUSTOM_OBJECT_EVENTS') ==
Object Name : Activity
Object Name Activity
Object Display Name Plural Actividades
Object Type OOTB
Application Name CRM
Table Name ZMM_ACTY_ACTIVITIES
Total number of custom fields
Total number of modified Standard fields
Total number of Triggers
Total number of Object Functions
Total number of Object Workflows
Total number of Validations
Total number of Dynamic Layouts

Standard Fields
Name Display Name Help Text
StatusCode Estado Status
ActivityEndDate Fecha y hora de finalización End Date
Subject Asunto Subject
ActivityStartDate Fecha y hora de inicio Start Date
ActivityTypeCode Tipo Type
AllDayFlag Todo el Día All Day
OwnerNameExtn Ejecutivo
OpportunityName Oportunidad Opportunity
AccountName2 Cuenta Account
PrivateFlag Privada Private
Location Ubicación Location
AccountName Account
DueDate Fecha de Vencimiento Due Date
PrimaryContactName Contacto Principal Primary Contact
PriorityCode Prioridad Priority
OutcomeCode Resultado Outcome

Custom Fields
Name Display Name Type Column Name
PrioridadMasivo_c Prioridad FCL EXTN_ATTRIBUTE_CHAR007
CorreoEjecutivoOpp_c Correo Ejecutivo Opp Text EXTN_ATTRIBUTE_CHAR009
MostrarHoraComo_c Mostrar hora como FCL EXTN_ATTRIBUTE_CHAR005
EjecutivoOpp_Id_c EjecutivoOpp DCLForeignKey EXTN_ATTRIBUTE_NUMBER001
CorreoManagerOpp_c Correo Manager Opp Text EXTN_ATTRIBUTE_CHAR010
ActividadProyecto_c Actividad Proyecto FCL EXTN_ATTRIBUTE_CHAR004
TipoActividadProyecto_c Tipo Actividad Proyecto FCL EXTN_ATTRIBUTE_CHAR003
ResultadoMasivo_c Resultado FCL EXTN_ATTRIBUTE_CHAR008
EjecutivoOpp_c EjecutivoOpp DCL

TipoMasivo_c Tipo FCL EXTN_ATTRIBUTE_CHAR006


CorreoPreventa_c CorreoPreventa Text EXTN_ATTRIBUTE_CHAR011

Triggers
Name Type Trigger PointDescription Error Message Expression
setStatus Field Trigger Modify if(OutcomeCode=='
Field Name : setAttribute('Status
OutcomeCode }
setAsunto Field Trigger Modify if((TipoActividadProy
Field Name : setAttribute('Subje
ActividadProyecto_c }
setDefaults Object Trigger Create def tipoUsuario=''
if(adf.util.usuarioPre
tipoUsuario='PREV
}
if(!adf.util.usuarioPre
tipoUsuario='SOLU
}
if(tipoUsuario!=''){
setAttribute('TipoA
setAttribute('Activit
}
InsertCorreo Object Trigger BeforeInsert tipoPreventa()
if(OpportunityId!=0
def opp= Opportun
if (OpportunityId =
def EjecutivoIdOp
def ejecutivoOpp=

//throw new ora


def emailrecurso=
setAttribute('Corr
setAttribute('Ejecu
setAttribute('Corr

ResourceVOVA?.M
NotificacionesCampan Object Trigger BeforeUpdate tipoPreventa()
aActividades if(OpportunityVOVA
setAttribute('Correo
NotificacionesCampan Object Trigger BeforeUpdate
aActividades

}
if (isAttributeChange
def nombre=''
if(ActividadProyect
nombre= 'Elabora
}
if(ActividadProyect
nombre= 'Validac
}
try {
def map = new H
def messageText
map.put("Channe
map.put("Messag
adf.util.sendNotifi

} catch (e) {

}
}

Validations
Name Type Error Message Expression
ValidacionSolucionesPr Object Validation Es necesario especificar un resultado para if(TipoActividadProy
eventa poder marcar una actividad de tipo if(StatusCode=='CO
soluciones como Completa. return nvl(Outcom
}
}
else if(TipoActividad
def attachments=A
def countAttachme
while(attachments.
def attachment=a
countAttachment
}
if(countAttachmen
throw new oracle.
}
}
return true
Rule1 Field Validation adf.source.isLookup
Field Name : EjecutivoOpp_Id_c

Object Functions
Name Parameters Return Type Privileged Visibility Description
tipoPreventa void No Default

Object Workflows
Name Definition Name Event Point Description
NotificacionActividadValid NotificacionActividadValida Update
acion cion

NotificacionValidacion NotificacionValidacion Update

NotificacionPreventaSoluc NotificacionPreventaSolucio Update


iones nes

Dynamic Layouts
Layout Name Active Role
PNT TAREA CORPORATIVO Yes PTN_ZBS_SALES_MANAGER_JOB_CUSTOM_PRE_VEN
PTN TAREA Yes _CORP;PTN_ZBS_SALES_MANAGER_JOB_CUSTOM_JE
USUARIO_MASIVO;
PNT TAREA CORPORATIVO ANY Yes
PTN LLAMADA Yes USUARIO_MASIVO;
PTN LLAMADA CORPORATIVO Yes
PTN CITA Yes USUARIO_MASIVO;
PTN CITA CORPORATIVO Yes
PTN DET CITA Yes USUARIO_MASIVO;
PTN DET CITA CORPORATIVO Yes
PTN DET TAREA Yes USUARIO_MASIVO;
PNT DET TAREA CORPORATIVO Yes PTN_ZBS_SALES_MANAGER_JOB_CUSTOM_PRE_VEN
PNT DET TAREA COPROPIETARIO ANY Yes _CORP;PTN_ZBS_SALES_MANAGER_JOB_CUSTOM_JE
PTN DET LLAMADA Yes USUARIO_MASIVO;
PTN DET LLAMADA CORPORATIVO Yes
Diseño Actividades Yes
vity
vidades
B
M
M_ACTY_ACTIVITIES
11
16
5
1
3
2
15

Searchable
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
Yes
Yes
Yes
Yes

Name Default Value Required Updatable Searchable REST Enabl


RIBUTE_CHAR007 No Yes No Yes
RIBUTE_CHAR009 No Yes No Yes
RIBUTE_CHAR005 No Yes No Yes
RIBUTE_NUMBER001 No Yes No Yes
RIBUTE_CHAR010 No Yes No Yes
RIBUTE_CHAR004 No Yes No Yes
RIBUTE_CHAR003 No Yes No Yes
RIBUTE_CHAR008 No Yes No Yes
No Yes No Yes
RIBUTE_CHAR006 No Yes No Yes
RIBUTE_CHAR011 No Yes No Yes

Expression
if(OutcomeCode=='SUCCESSFUL' || OutcomeCode=='REJECTED'){
setAttribute('StatusCode','COMPLETE')
}
if((TipoActividadProyecto_c=='SOLUCIONES' || TipoActividadProyecto_c=='PREVENTA' ) && nvl(ActividadProyecto_c,'')!=''){
setAttribute('Subject',getSelectedListDisplayValue('ActividadProyecto_c'))
}
def tipoUsuario=''
if(adf.util.usuarioPreventa()&& !adf.util.usuarioSoluciones()){
tipoUsuario='PREVENTA'
}
if(!adf.util.usuarioPreventa()&& adf.util.usuarioSoluciones()){
tipoUsuario='SOLUCIONES'
}
if(tipoUsuario!=''){
setAttribute('TipoActividadProyecto_c',tipoUsuario)
setAttribute('ActivityTypeCode',tipoUsuario)
}
tipoPreventa()
if(OpportunityId!=0 &&ActividadProyecto_c== 'ACT_VDISENO' ){
def opp= OpportunityVOVA?.OptyId
if (OpportunityId ==opp) {
def EjecutivoIdOpp=nvl(OpportunityVOVA?.getOriginalAttributeValue('OwnerResourcePartyId'),0 as BigDecimal)
def ejecutivoOpp= adf.util.getResourceProfileId(EjecutivoIdOpp as Long)

//throw new oracle.jbo.ValidationException('ejecutivo opp'+ EjecutivoIdOpp + 'Vista '+ejecutivoOpp)


def emailrecurso= OpportunityVOVA?.EmailAddress
setAttribute('CorreoEjecutivoOpp_c',emailrecurso)
setAttribute('EjecutivoOpp_Id_c',ejecutivoOpp )
setAttribute('CorreoPreventa_c',OpportunityVOVA?.CorreoPreventa_c)

ResourceVOVA?.ManagerPartyId
tipoPreventa()
if(OpportunityVOVA!=null){
setAttribute('CorreoPreventa_c',OpportunityVOVA?.CorreoPreventa_c)
}
if (isAttributeChanged('StatusCode') && StatusCode=='COMPLETE' ){
def nombre=''
if(ActividadProyecto_c=='ACT_EDISENO'){
nombre= 'Elaborar diseño HLD'
}
if(ActividadProyecto_c=='ACT_VDISENO'){
nombre= 'Validación de Diseño'
}
try {
def map = new HashMap()
def messageText ='La actividad ' + nombre+ ' de la oportunidad ' +OpportunityName + ' fue completada'
map.put("Channels",["ORA_SVC_BELL"])
map.put("MessageText",messageText)
adf.util.sendNotification(adf, map)

} catch (e) {

}
}

Expression
if(TipoActividadProyecto_c=='SOLUCIONES'){
if(StatusCode=='COMPLETE'){
return nvl(OutcomeCode,'')!=''
}
}
else if(TipoActividadProyecto_c=='PREVENTA' && StatusCode=='COMPLETE' && ActividadProyecto_c=='ACT_EDISENO'){
def attachments=Attachments
def countAttachments=0
while(attachments.hasNext()){
def attachment=attachments.next()
countAttachments+=1
}
if(countAttachments==0){
throw new oracle.jbo.ValidationException('Actividades Tipo Preventa: Debe adjuntar el documento correspondiente para finalizar la a
}
}
return true
adf.source.isLookupIdValid('EjecutivoOpp_Id_c',newValue)
Expression
if((getPrimaryRowState().isNew() || isAttributeChanged('ActivityTypeCode')) && (ActivityTypeCode=='PREVENTA' ||
ActivityTypeCode=='SOLUCIONES')){
if(!adf.util.usuarioPreventa() && !adf.util.usuarioSoluciones() &&!adf.util.usuarioAdministrador()){
throw new oracle.jbo.ValidationException('Acción no permitida: No pude crear actividades tipo Preventa o Soluciones.')
}
}

Disabled Actions Expression


No Email Notification if(!
Name : Notificacion de validacion oracle.apps.crmCommon.extensibility.con
return false;
Execution Schedule: 0:Days:After:
Template Name : Notificacion actividad if (isAttributeChanged('StatusCode') && S
validacion ActividadProyecto_c=='ACT_EDISENO' &&
return true;
}

Yes Email Notification if(!


Name : Prueba oracle.apps.crmCommon.extensibility.con
return false;
Execution Schedule: 0:Days:After: else
Template Name : NotificacionValidacionDiseño return true;

No Email Notification if(!


Name : NotificacionPreventasoluciones oracle.apps.crmCommon.extensibility.con
return false;
Execution Schedule: 0:Days:After:
Template Name : Notificacion Actividad if(TipoActividadProyecto_c=='SOLUCION
Preventa Soluciones (isAttributeChanged('OutcomeCode') || isA
return OutcomeCode=='SUCCESSFUL' ||
}
return false

Record Type Advanced Expression


B_CUSTOM_PRE_VEN
GER_JOB_CUSTOM_JE

B_CUSTOM_PRE_VEN
GER_JOB_CUSTOM_JE
Precision MaxLength Expression
1500 1500
200 200
1500 1500
18 18
200 200
1500 1500
1500 1500
1500 1500
1500 1500
1500 1500
200 200

ctividadProyecto_c,'')!=''){

,0 as BigDecimal)

voOpp)
ompletada'

cto_c=='ACT_EDISENO'){

nto correspondiente para finalizar la actividad.')


yTypeCode=='PREVENTA' ||
nistrador()){
idades tipo Preventa o Soluciones.')

ression

le.apps.crmCommon.extensibility.content.adf.data.util.ExtensibilityGro
urn false;

AttributeChanged('StatusCode') && StatusCode=='COMPLETE' &&


vidadProyecto_c=='ACT_EDISENO'
return true; &&

le.apps.crmCommon.extensibility.content.adf.data.util.ExtensibilityGro
urn false;

urn true;

le.apps.crmCommon.extensibility.content.adf.data.util.ExtensibilityGro
urn false;

poActividadProyecto_c=='SOLUCIONES' &&
tributeChanged('OutcomeCode')
urn OutcomeCode=='SUCCESSFUL' || isAttributeChanged('StatusCode')))
|| OutcomeCode=='REJECTED'

rn false
Object Name : Address
Object Name Address
Object Display Name Plural Direcciones de comunidad de
Object Type OOTB
Application Name CRM
Table Name HZ_PARTY_SITES
Total number of custom fields
Total number of modified Standard fields
Total number of Triggers
Total number of Object Functions
Total number of Object Workflows
Total number of Validations
Total number of Dynamic Layouts

Custom Fields
Name Display Name Type Column Name
TriggerAddressCreationInOpportuniDesencadenar creación en oportu Checkbox EXTN_ATTRIBUTE_CHAR003
Latitud_c Latitud FCL EXTN_ATTRIBUTE_CHAR006
Longitud_c Longitud FCL EXTN_ATTRIBUTE_CHAR007
CoordenadaLatitudNum_c Coordenada Latitud Number EXTN_ATTRIBUTE_NUMBER004
CoordenadaLatitud_c Coordenada Latitud Text EXTN_ATTRIBUTE_CHAR004
CoordenadaLongitud_c Coordenada Longitud Text EXTN_ATTRIBUTE_CHAR005
CoordenadaLongitudNum_c Coordenada Longitud Number EXTN_ATTRIBUTE_NUMBER005
BarrioSectorConjunto_c Barrio / Sector / Conjunto Text EXTN_ATTRIBUTE_CHAR008

Triggers
Name Type Trigger PointDescription Error Message
crearDireccionOportu Object Trigger BeforeUpdate
nidadesUpd

Validations
Name Type Error Message
FND_ACFF_LVR_Attribu Field Validation
teCategory__AttributeC Field Name : AttributeCategory
ategory
HintBasedMaximumVal Field Validation
idator_CoordenadaLati Field Name : CoordenadaLatitudNum_c
tudNum_c
HintBasedMaximumVal Field Validation
idator_CoordenadaLon Field Name :
gitudNum_c CoordenadaLongitudNum_c

Object Functions
Name Parameters Return Type Privileged Visibility Description
crearDirecci void No Callable by
onOportuni External
dades Systems
crearDirecci void No Callable by
onOportuni External
dades Systems
Object Workflows
Name Definition Name Event Point Description
cascadaDireccion cascadaDireccion Create

Dynamic Layouts
Layout Name Active Role
Direccion Punto Net Yes
Direccion Punto Net Creacion Yes
Address
Direcciones de comunidad de comercio
OOTB
CRM
HZ_PARTY_SITES
8
0
1
1
1
3
2

umn Name Default Value Required Updatable Searchable REST Enabl


N_ATTRIBUTE_CHAR003 N Yes Yes No Yes
N_ATTRIBUTE_CHAR006 No Yes No Yes
N_ATTRIBUTE_CHAR007 OESTE No Yes No Yes
N_ATTRIBUTE_NUMBER004 No Yes No Yes
N_ATTRIBUTE_CHAR004 No Yes No Yes
N_ATTRIBUTE_CHAR005 No Yes No Yes
N_ATTRIBUTE_NUMBER005 No Yes No Yes
N_ATTRIBUTE_CHAR008 No Yes No Yes

Expression
if(isAttributeChanged('TriggerAddressCreationInOpportunities_c')&&TriggerAddressCreationInOpportunities_c=='Y')
crearDireccionOportunidades()

Expression
return oracle.apps.fnd.applcore.oaext.model.OAEntityImpl.validateFlexfieldValue(newValue, adf.source, "FND_ACFF_VA_Attribute
"ContextCode", "Bind_ContextCode")
newValue <= Double.valueOf(adf.source.formatHintValueForAttr("CoordenadaLatitudNum_c", "maxValue"))

newValue <= Double.valueOf(adf.source.formatHintValueForAttr("CoordenadaLongitudNum_c", "maxValue"))

tion Expression
def siteId=PartySiteId
def direccionesInstalacion=DireccionInstalacion_Src_AddressToDireccionInstalacion_c_Tgt
def instalacionOptyIdList=[]
def outputMap=[:]
while(direccionesInstalacion.hasNext()){
def dirInst=direccionesInstalacion.next()
def optyId=dirInst.Opportunity_Id_Tgt_OpportunityToDireccionInstalacion_c as Long
if(!instalacionOptyIdList.contains(optyId)){
instalacionOptyIdList.add(optyId)
}
}
outputMap.put('instalacionOptyIdList',instalacionOptyIdList)
def optyList=[]
def partyId=PartyId
def optys=newView('OpportunityVO')
def optyc=newViewCriteria(optys)
def optyr=optyc.createRow()
def optyi=optyr.ensureCriteriaItem('TargetPartyId')
optyi.setOperator('=')
optyi.setValue(partyId)
optyc.insertRow(optyr)
optys.appendViewCriteria(optyc)
optys.executeQuery()
while(optys.hasNext()){
def opty=optys.next()
def optyId=opty.OptyId as Long
def optyMap=[:]
def addFlag=false
if(!instalacionOptyIdList.contains(optyId)){
def dirInst=direccionesInstalacion.createRow()
dirInst.setAttribute('Address_Id_Src_AddressToDireccionInstalacion_c',siteId)
dirInst.setAttribute('Opportunity_Id_Tgt_OpportunityToDireccionInstalacion_c',optyId)
direccionesInstalacion.insertRow(dirInst)
addFlag=true
}
optyMap.put('OptyId',optyId)
optyMap.put('Name',opty.Name)
optyMap.put('addFlag',addFlag)
optyList.add(optyMap)
}
outputMap.put('optyList',optyList)
outputMap.put('PartySiteId',siteId)
outputMap.put('FormattedAddress',FormattedAddress)
println(outputMap)
ption Disabled Actions Expression
No Field Update if(!
Name : desencadenar creación oracle.apps.crmCommon.extensibi
return false;
Execution Schedule : 0 : Days: After: else
Fields return true;
Name :
Address:TriggerAddressCreationInOpportunities
Value : Y

Record Type Advanced Expression


Precision MaxLength Expression
10 10
1500 1500
1500 1500
25 25
80 80
80 80
25 25
80 80

portunities_c=='Y')

urce, "FND_ACFF_VA_AttributeCategory__AttributeCategory",

axValue"))

maxValue"))
Tgt

d)
ression

le.apps.crmCommon.extensibility.content.adf.data.util.ExtensibilityGro
urn false;

urn true;
Object Name : Adicional_c
Object Name
Object Display Name Plural
Object Type
Application Name
Table Name
Child Object
Parent Object Name
Total number of custom fields
Total number of modified Standard fields
Total number of Triggers
Total number of Object Functions
Total number of Object Workflows
Total number of Validations
Total number of Dynamic Layouts

Custom Fields
Name Display Name Type Column Name
RecordName Desgrupo OOTB RECORD_NAME
CreationDate Fecha de Creación OOTB CREATION_DATE
CurrencyCode Currency Code FCL CURRENCY_CODE
ValorUnitario_c Valor Unitario Currency EXTN_ATTRIBUTE_NUMBER007
LastUpdatedBy Actualizado por OOTB LAST_UPDATED_BY
CreatedBy Creado por OOTB CREATED_BY
FinPromocionhasta_c Fin promocion (hasta) Date EXTN_ATTRIBUTE_TIMESTAMP002
InicioPromociondesde_c Inicio promocion (desde) Date EXTN_ATTRIBUTE_TIMESTAMP001
ValorTotal_c Valor Total Currency EXTN_ATTRIBUTE_NUMBER014
CantidadEnMeses_c Cantidad en meses Number EXTN_ATTRIBUTE_NUMBER016
Descripcion_c Descripcion Text EXTN_ATTRIBUTE_CHAR006
Cantidad_c Cantidad Number EXTN_ATTRIBUTE_NUMBER006
AssetVO_Id_c AssetVO_Id_c OOTB EXTN_ATTRIBUTE_NUMBER001
Detalle_c Detalle Text EXTN_ATTRIBUTE_CHAR008
Id Identificador de Registro OOTB ID
RecordNumber Record Number OOTB RECORD_NUMBER
DescripcionDescuento_c Descripcion % descuento Text EXTN_ATTRIBUTE_CHAR007
LastUpdateDate Fecha de Última Actualización OOTB LAST_UPDATE_DATE
Estado_c Estado Text EXTN_ATTRIBUTE_CHAR009
Adicional_c
Adicionales
Custom
CRM
ZCA_ASSET_XM
Yes
AssetEO
19
0
0
0
0
0
0

Column Name Default Value Required Updatable Searchable


RECORD_NAME Yes Yes Yes
CREATION_DATE Yes No Yes
CURRENCY_CODE No Yes Yes
EXTN_ATTRIBUTE_NUMBER007 No Yes No
LAST_UPDATED_BY Yes Yes Yes
CREATED_BY Yes No Yes
EXTN_ATTRIBUTE_TIMESTAMP002 No Yes No
EXTN_ATTRIBUTE_TIMESTAMP001 No Yes No
EXTN_ATTRIBUTE_NUMBER014 No Yes No
EXTN_ATTRIBUTE_NUMBER016 No Yes No
EXTN_ATTRIBUTE_CHAR006 No Yes No
EXTN_ATTRIBUTE_NUMBER006 No Yes No
EXTN_ATTRIBUTE_NUMBER001 No Yes Yes
EXTN_ATTRIBUTE_CHAR008 No Yes No
ID Yes No Yes
RECORD_NUMBER Yes No Yes
EXTN_ATTRIBUTE_CHAR007 No Yes No
LAST_UPDATE_DATE Yes Yes Yes
EXTN_ATTRIBUTE_CHAR009 No Yes No
REST Enabl Precision MaxLength Expression
Yes 80 80
Yes 0 0
Yes 15 15
Yes 10 10
Yes 64 64
Yes 64 64
Yes 0 0
Yes 0 0
Yes 10 10
Yes 10 10
Yes 1500 1500
Yes 10 10
Yes 18 18
Yes 1500 1500
Yes 32 32
Yes 64 64
Yes 1500 1500
Yes 0 0
Yes 80 80
Object Name : AnchoDeBanda_c
Object Name AnchoDeBanda_c
Object Display Name Plural Ancho de banda
Object Type Custom
Application Name CRM
Table Name MOT_REF_ENTITIES
Total number of custom fields
Total number of modified Standard fields
Total number of Triggers
Total number of Object Functions
Total number of Object Workflows
Total number of Validations
Total number of Dynamic Layouts

Custom Fields
Name Display Name Type Column Name
RecordName Código OOTB RECORD_NAME
CreationDate Fecha de Creación OOTB CREATION_DATE
Plan_c Plan DCL

CurrencyCode Currency Code FCL CURRENCY_CODE


PrecioBruto_c Precio Bruto Number EXTN_ATTRIBUTE_NUMBER006
LastUpdatedBy Actualizado por OOTB LAST_UPDATED_BY
CreatedBy Creado por OOTB CREATED_BY
OraZcxOwner_c Owner DCL

Plan_Id_c Plan DCLForeignKey EXTN_ATTRIBUTE_NUMBER002


Oportunidad_Id_c Oportunidad DCLForeignKey EXTN_ATTRIBUTE_NUMBER001
Descripcion_c Descripción Text EXTN_ATTRIBUTE_CHAR007
Oportunidad_c Oportunidad DCL

Activo_c Activo Checkbox EXTN_ATTRIBUTE_CHAR008


OraZcxOwner_Id_c Owner DCLForeignKey OWNER_RESOURCE_ID
Id Identificador de Registro OOTB ID
RecordNumber Record Number OOTB RECORD_NUMBER
LastUpdateDate Fecha de Última Actualización OOTB LAST_UPDATE_DATE

Validations
Name Type Error Message
Rule1 Field Validation
Field Name : OraZcxOwner_Id_c
Rule1 Field Validation
Field Name : Oportunidad_Id_c
Rule1 Field Validation
Field Name : Plan_Id_c
Object Workflows
Name Definition Name Event Point Description
AnchoDeBanda_c_Standard Create
_Create
AnchoDeBanda_c_Standard Delete
_Delete
AnchoDeBanda_c_Standard Update
_Update
AnchoDeBanda_c
Ancho de banda
Custom
CRM
MOT_REF_ENTITIES
17
0
0
0
3
3
0

umn Name Default Value Required Updatable Searchable REST Enabl


ORD_NAME Yes Yes Yes Yes
ATION_DATE Yes No Yes Yes
Yes Yes No Yes
RENCY_CODE No Yes Yes Yes
N_ATTRIBUTE_NUMBER006 No Yes No Yes
T_UPDATED_BY Yes Yes Yes Yes
ATED_BY Yes No Yes Yes
Yes Yes No Yes
N_ATTRIBUTE_NUMBER002 Yes Yes Yes Yes
N_ATTRIBUTE_NUMBER001 Yes Yes Yes Yes
N_ATTRIBUTE_CHAR007 Yes Yes Yes Yes
Yes Yes No Yes
N_ATTRIBUTE_CHAR008 N Yes Yes Yes Yes
NER_RESOURCE_ID Yes Yes Yes Yes
Yes No Yes Yes
ORD_NUMBER Yes No Yes Yes
T_UPDATE_DATE Yes Yes Yes Yes

Expression
adf.source.isLookupIdValid('OraZcxOwner_Id_c',newValue)

adf.source.isLookupIdValid('Oportunidad_Id_c',newValue)

adf.source.isLookupIdValid('Plan_Id_c',newValue)
ption Disabled Actions Expression
No return
(oracle.apps.fnd.applcore.Profile.ge
No return
(oracle.apps.fnd.applcore.Profile.ge
No return
(oracle.apps.fnd.applcore.Profile.ge
Precision MaxLength Expression
80 80
0 0
1500 1500
15 15
16 16
64 64
64 64
1500 1500
18 18
18 18
200 200
1500 1500
10 10
18 18
32 32
64 64
0 0
ression
rn
cle.apps.fnd.applcore.Profile.get('ZCX_CUSTOM_OBJECT_EVENTS') ==
rn
cle.apps.fnd.applcore.Profile.get('ZCX_CUSTOM_OBJECT_EVENTS') ==
rn
cle.apps.fnd.applcore.Profile.get('ZCX_CUSTOM_OBJECT_EVENTS') ==
Object Name : AsignacionMensualLeads_c
Object Name AsignacionMensualLeads_c
Object Display Name Plural Asignación mensual de leads
Object Type Custom
Application Name CRM
Table Name HZ_REF_ENTITIES
Record Name Sequence {0000000000}
Total number of custom fields
Total number of modified Standard fields
Total number of Triggers
Total number of Object Functions
Total number of Object Workflows
Total number of Validations
Total number of Dynamic Layouts

Custom Fields
Name Display Name Type Column Name
RecordName Número de Asignación mensual deOOTB RECORD_NAME
CreationDate Fecha de Creación OOTB CREATION_DATE
MinimoDeLead_c Mínimo de Leads Number EXTN_ATTRIBUTE_NUMBER007
ScoreEjecutado_c Score Ejecutado Checkbox EXTN_ATTRIBUTE_CHAR007
CurrencyCode Currency Code FCL CURRENCY_CODE
Vueltas_c Número de Vueltas Number EXTN_ATTRIBUTE_NUMBER022
LastUpdatedBy Actualizado por OOTB LAST_UPDATED_BY
CreatedBy Creado por OOTB CREATED_BY
AsignacionActiva_c AsignacionActiva Checkbox EXTN_ATTRIBUTE_CHAR008
OraZcxOwner_c Owner DCL

NumeroDeVendedores_c Número de Vendedores Number EXTN_ATTRIBUTE_NUMBER021


OraZcxOwner_Id_c Owner DCLForeignKey OWNER_RESOURCE_ID
Mes_c Mes Number EXTN_ATTRIBUTE_NUMBER016
EjecutarAsignacion_c Ejecutar Asignacion Datetime EXTN_ATTRIBUTE_TIMESTAMP001
NumeroDeMeses_c Número de Meses Number EXTN_ATTRIBUTE_NUMBER014
Id Identificador de Registro OOTB ID
IdParaExport_c Id para Export Text Formula

DeltaDeAsignacion_c Delta de asignación Number EXTN_ATTRIBUTE_NUMBER020


RecordNumber Record Number OOTB RECORD_NUMBER
VariablesOrigen_Id_c Variables Origen DCLForeignKey EXTN_ATTRIBUTE_NUMBER001
LeadsAsignados_c Leads Asignados Number EXTN_ATTRIBUTE_NUMBER015
UltimoObjetivoCompletado_c Último Objetivo Completado Number EXTN_ATTRIBUTE_NUMBER018
ObjetivosCompletadosAcumuladosObjetivos Completados Acumulad Number EXTN_ATTRIBUTE_NUMBER019
VariablesOrigen_c Variables Origen DCL

BolsaDeLeadsARepartir_c Bolsa de Leads a Repartir Number EXTN_ATTRIBUTE_NUMBER006


TamanoDeLotes_c Tamaño de Lotes Number EXTN_ATTRIBUTE_NUMBER008
Anio_c Año Number EXTN_ATTRIBUTE_NUMBER017
LastUpdateDate Fecha de Última Actualización OOTB LAST_UPDATE_DATE

Triggers
Name Type Trigger PointDescription Error Message
Init_AsignacionMensu Object Trigger Create
al

Validations
Name Type Error Message
Rule1 Field Validation
Field Name : OraZcxOwner_Id_c
Rule1 Field Validation
Field Name : VariablesOrigen_Id_c

Object Functions
Name Parameters Return Type Privileged Visibility Description
ejecutarAsig void No Default
nacion
calcularLead void No Default
sAsignados

calcularScor Boolean No Callable by


e External
Systems
setRanking Boolean No Default
deleteRanki void No Default
ng
asignarLeads void No Default
asignarLeads sistemaOrigen- void No Default
Canal String
removeAssig void No Default
nment
removeAssig void No Default
nment

asignarLeads void No Default


v2
Object Workflows
Name Definition Name Event Point Description
AsignacionMensualLeads_c_ Update
Standard_Update
AsignacionMensualLeads_c_ Create
Standard_Create
AsignacionMensualLeads_c_ Delete
Standard_Delete

Dynamic Layouts
Layout Name Active Role
Admin Yes
AsignacionMensualLeads_c
Asignación mensual de leads
Custom
CRM
HZ_REF_ENTITIES
{0000000000}
28
0
1
9
3
2
1

umn Name Default Value Required Updatable Searchable REST Enabl


ORD_NAME Yes Yes Yes Yes
ATION_DATE Yes No Yes Yes
N_ATTRIBUTE_NUMBER007 No Yes No Yes
N_ATTRIBUTE_CHAR007 N Yes Yes No Yes
RENCY_CODE No Yes Yes Yes
N_ATTRIBUTE_NUMBER022 No Yes No Yes
T_UPDATED_BY Yes Yes Yes Yes
ATED_BY Yes No Yes Yes
N_ATTRIBUTE_CHAR008 Y Yes Yes Yes Yes
Yes Yes No Yes
N_ATTRIBUTE_NUMBER021 No Yes No Yes
NER_RESOURCE_ID Yes Yes Yes Yes
N_ATTRIBUTE_NUMBER016 No Yes No Yes
N_ATTRIBUTE_TIMESTAMP001 No Yes No Yes
N_ATTRIBUTE_NUMBER014 No Yes No Yes
Yes No Yes Yes
No No No Yes
N_ATTRIBUTE_NUMBER020 No Yes No Yes
ORD_NUMBER Yes No Yes Yes
N_ATTRIBUTE_NUMBER001 No Yes No Yes
N_ATTRIBUTE_NUMBER015 No Yes No Yes
N_ATTRIBUTE_NUMBER018 No Yes No Yes
N_ATTRIBUTE_NUMBER019 No Yes No Yes
No Yes No Yes
N_ATTRIBUTE_NUMBER006 No Yes No Yes
N_ATTRIBUTE_NUMBER008 No Yes No Yes
N_ATTRIBUTE_NUMBER017 No Yes No Yes
T_UPDATE_DATE Yes Yes Yes Yes

Expression
def today=today()
setAttribute('Mes_c',month(today))
setAttribute('Anio_c',year(today))

Expression
adf.source.isLookupIdValid('OraZcxOwner_Id_c',newValue)

adf.source.isLookupIdValid('VariablesOrigen_Id_c',newValue)

tion Expression
def recursoAsignacions=RecursoAsignacionLead_Src_AsignacionMensualLeads_cToRecursoAsignacionLead_c_Tgt
def existenRecursos=false
while(recursoAsignacions.hasNext()&&!existenRecursos){
def recursosAsignacion=recursoAsignacions.next()
existenRecursos=true
}
def listaIdRecursos=[]
def anoymes=Anio_c*100+Mes_c
if(!existenRecursos){
def ress=newView('Resource')
def resc=newViewCriteria(ress)
def resr=resc.createRow()
def resi=resr.ensureCriteriaItem('AnoYMes_c')
resi.setOperator('<')
resi.setValue(anoymes)
resc.insertRow(resr)
ress.appendViewCriteria(resc)
ress.executeQuery()
def roleList=['SALES_SETUP_USER']
ress.setMaxFetchSize(1000)
ress.executeQuery()
while(ress.hasNext()){
def res=ress.next()
def resId=res.ResourceProfileId
res.setAttribute('AnoYMes_c',anoymes)
if(res.testRoles(roleList)&&!listaIdRecursos.contains(resId)){
listaIdRecursos.add(resId)
}
}
}
def numeroDeLeadsAAsignar=200
def leadsAsignados=LeadsAsignados_c
def leadsTotales=numeroDeLeadsAAsignar+leadsAsignados

def numeroDeVendedores=10
def minLeads=nvl(MinimoDeLead_c,0)
def bolsa=nvl(BolsaDeLeadsARepartir_c,0)
def k=nvl(UltimoObjetivoCompletado_c,0)
def c=nvl(ObjetivosCompletadosAcumulados_c,0)

if(ScoreEjecutado_c!='Y' || true){
def numeroMeses=NumeroDeMeses_c as Long
def today=today()
def yearNum=year(today)
def monthNum= 0
monthNum=month(today) as Long
println('NumeroDeMeses_c:'+numeroMeses)
yearNum=yearNum-(-monthNum+numeroMeses+1)/12 as Long
monthNum=(monthNum-numeroMeses-1)%12+1

def monthStr= ''


while(monthNum<=0){
monthNum=12+monthNum
}
if(monthNum>= 10){
monthStr=''+monthNum
}
else{
monthStr= '0'+monthNum
}
def yearStr=''+yearNum
//def fechaLimiteStr=yearStr+"-"+monthStr+"-"+"01 12:00:00"
def fechaLimiteStr=yearStr+"-"+monthStr+"-"+"01"
println('monthStr:'+monthStr)
println('fechaLimiteStr:'+fechaLimiteStr)
def fechaLimite=java.sql.Date.valueOf(fechaLimiteStr)
//def fechaLimite=new Date().parse("yyyy-MM-dd HH:mm:ss", fechaLimiteStr)
println('fechaLimite:'+fechaLimite)
def optys=newView('OpportunityVO')
def optyc=newViewCriteria(optys)
def optyr=optyc.createRow()
def optyi=optyr.ensureCriteriaItem('FechaVentaBruta_c')
optyi.setOperator('ONORAFTER')
optyi.setValue(fechaLimite)
optyc.insertRow(optyr)
optys.appendViewCriteria(optyc)
optys.setMaxFetchSize(5000)
optys.executeQuery()

def month2=month(today)
def year2=year(today)
if(month2==12){
year2=year2+1
month2=1
}
else{
month2+=1
}
def month2Str=''
if(month2>=10){
month2Str=''+month2
}
else{
month2Str= '0'+month2
}

def fechaActivoStr=''+year2+'-'+month2Str+'-01'
def fechaActivo=java.sql.Date.valueOf(fechaActivoStr)

def anoymes=Anio_c*100+Mes_c
def ress=newView('Resource')
/* def resc=newViewCriteria(ress)
def resr=resc.createRow()
def resi=resr.ensureCriteriaItem('AnoYMes_c')
resi.setOperator('<')
resi.setValue(anoymes)
def resj=resr.ensureCriteriaItem('AnoYMes_c')
resj.setOperator('ISBLANK')
resj.setConjunction(0); //OR
resc.insertRow(resr)
/*
def resr2=resc.createRow()
def resi2=resr2.ensureCriteriaItem('EndDateActive')
resi2.setOperator('ONORAFTER')
resi2.setValue(fechaActivo)
def resj2=resr2.ensureCriteriaItem('EndDateActive')
resj2.setOperator('ISBLANK')
resj2.setConjunction(0)
resc.insertRow(resr2)
*/
//ress.appendViewCriteria(resc)
ress.executeQuery()

ress.setMaxFetchSize(2000)
ress.executeQuery()
def recursosIds=[]
def recursosMap=[:]
def count=0
while(ress.hasNext()){
def res=ress.next()
def resId=res.PartyId
res.setAttribute('AnoYMes_c',anoymes)
if((res.esTeleventasDigital()&&(!recursosIds.contains(resId)||true))){
recursosIds.add(resId)
def recursoDetailMap=[:]
recursoDetailMap.put('ResourceProfileId',res.ResourceProfileId)
recursoDetailMap.put('Score',0)
recursoDetailMap.put('RecursoRow',res)
recursoDetailMap.put('EndDateActive',res.EndDateActive)
recursoDetailMap.put('Roles',res.Roles)
recursoDetailMap.put('AnoYMes_c',res.AnoYMes_c)
recursosMap.put(resId,recursoDetailMap)
}
count=count+1
}
def maxScore=0
while(optys.hasNext()){
def opty=optys.next()
def ownerId=opty.OwnerResourcePartyId
def statusCode=opty.StatusCode
if(recursosIds.contains(ownerId)&&(statusCode=='OPEN'||statusCode=='WON')){
def recursoDetailMap=recursosMap[ownerId]
def score=recursoDetailMap['Score']+1
recursoDetailMap.put('Score',score)
if(maxScore<score){
maxScore=score
}
}
}
println('RecursosMap:'+recursosMap)
for (resourcePartyId in recursosIds){
def recursoDetailMap=recursosMap[resourcePartyId]
def res=recursoDetailMap.RecursoRow
def score=recursoDetailMap.Score
res.setAttribute('Score_c',score)
res.setAttribute('AnoYMes_c',anoymes)
}

return true
}
return true
def cambioEnLista=false
def recursosAsignacion=RecursoAsignacionLead_Src_AsignacionMensualLeads_cToRecursoAsignacionLead_c_Tgt
def resAsignacionIdList=[]
def rowList=[]
def output=true
def count=0
def vueltas=nvl(Vueltas_c,0 as BigDecimal) as Long
while(recursosAsignacion.hasNext()){
def recursoAsignacion=recursosAsignacion.next()
if(recursoAsignacion.SuspenderAsignacion_c!='Y'){
resAsignacionIdList.add(recursoAsignacion.Resource_Id_Tgt_ResourceToRecursoAsignacionLead_c as Long)
}
count+=1
}
println('resAsignacionIdList:'+resAsignacionIdList)
def primeraAsignacion=false
if(count==0){
primeraAsignacion=true
}
println('countRecursos:'+count)
def resIdList=[]
def ress=newView('Resource')
ress.setSortBy('Score_c desc, StartDateActive asc')
ress.executeQuery()
def ranking=1
def numeroVendedores=0
while(ress.hasNext()){
def res=ress.next()
if(res.esTeleventasDigital()){
def resId=res.ResourceProfileId as Long
def recursoMap=[:]
recursoMap.put('ResourceProfileId',resId)
recursoMap.put('Ranking',ranking)
recursoMap.put('Insert',false)
recursoMap.put('Score',res.Score_c)
if(!resAsignacionIdList.contains(resId)){
recursoMap.put('Insert',true)
cambioEnLista=true
}
rowList.add(recursoMap)
ranking+=1
numeroVendedores+=1
resIdList.add(resId)
}
}
def deleteResAsignacionList=resAsignacionIdList-resIdList
def cantidadSkips=deleteResAsignacionList.size()
//def cantidadSkips = deleteResAsignacionList
def outputMap=[:]
outputMap.put('rowList',rowList)
outputMap.put('resAsignacionIdList',resAsignacionIdList)
//throw new oracle.jbo.ValidationException('outputMap:'+outputMap)
def deltaAsignacion=nvl(DeltaDeAsignacion_c,0 as BigDecimal)
def numeroVendedoresAnterior=nvl(NumeroDeVendedores_c,0 as BigDecimal)
setAttribute('NumeroDeVendedores_c',numeroVendedores)
if(primeraAsignacion){
deltaAsignacion=adf.util.calcularDeltaAsignacion(numeroVendedores as Long, BolsaDeLeadsARepartir_c as Long)
deltaAsignacion=(deltaAsignacion as BigDecimal).setScale(12,BigDecimal.ROUND_HALF_UP)
println('DeltaAsignacion:'+deltaAsignacion)
setAttribute('DeltaDeAsignacion_c',deltaAsignacion)
}
def minimoLeads=nvl(MinimoDeLead_c,0 as BigDecimal) as Long
def objetivoAsignacion=minimoLeads
def recursoCount=1
def rankingOffset=1+cantidadSkips
for(recursoMap in rowList){
def insert=recursoMap['Insert'] as Boolean
println('insert'+recursoCount+':'+insert)
if(insert){
println('Entré')
def recursoAsignacion=recursosAsignacion.createRow()
ranking=recursoMap['Ranking']
recursoAsignacion.setAttribute('Resource_Id_Tgt_ResourceToRecursoAsignacionLead_c',recursoMap['ResourceProf
if(!primeraAsignacion){
//-----------------cambio de numero numeroVendedoresAnterior por numeroVendedores
recursoAsignacion.setAttribute('Ranking_c',numeroVendedores+rankingOffset)
rankingOffset+=1
}
else{
recursoAsignacion.setAttribute('Ranking_c',ranking)
}
recursoAsignacion.setAttribute('Score_c',recursoMap['Score'])
recursoAsignacion.setAttribute('Offset_c',vueltas)
recursoAsignacion.setAttribute('LeadsAsignados_c',0)

if(primeraAsignacion){
recursoAsignacion.calcularObjetivoAsignacion(numeroVendedores as Long,minimoLeads as Long,deltaAsignacio
}
else{
recursoAsignacion.setAttribute('ObjetivoDeAsignacion_c',minimoLeads)
}
recursosAsignacion.insertRow(recursoAsignacion)
output=false
}
recursoCount+=1
}
recursosAsignacion.reset()
while(recursosAsignacion.hasNext()){
def res=recursosAsignacion.next()
if(deleteResAsignacionList.contains(res.Resource_Id_Tgt_ResourceToRecursoAsignacionLead_c as Long) && res.Susp
println('SuspenderAsignacion_c:' + res.SuspenderAsignacion_c)
res.setAttribute('SuspenderAsignacion_c','Y')
println('recurso suspendido:' + res.Resource_Tgt_ResourceToRecursoAsignacionLead_c_Src.PartyName)
cambioEnLista=true
}
else if(nvl(res.SuspenderAsignacion_c,'N')=='Y'){
if(resIdList.contains(res.Resource_Id_Tgt_ResourceToRecursoAsignacionLead_c)){
res.setAttribute('SuspenderAsignacion_c','N')
res.setAttribute('Offset_c',vueltas-nvl(res.LeadsAsignados_c,0 as BigDecimal))
}
}
}
outputMap.put('CambioEnLista',cambioEnLista)
println(outputMap)
//throw new oracle.jbo.ValidationException('OutputMapSetRanking'+outputMap)
return cambioEnLista

def recursosAsignacion=RecursoAsignacionLead_Src_AsignacionMensualLeads_cToRecursoAsignacionLead_c_Tgt
while(recursosAsignacion.hasNext()){
(recursosAsignacion.next()).remove()
}
def leads=newView('Lead')
def leadc=newViewCriteria(leads)
def leadr=leadc.createRow()
def leadi=leadr.ensureCriteriaItem('SistemaOrigen_c')
leadi.setOperator('=')
leadi.setValue('LEADBOX')
def leadj=leadr.ensureCriteriaItem('AsignacionMensual_Id_c')
leadj.setOperator('ISBLANK')
def leadk=leadr.ensureCriteriaItem('TipoCM_c')
leadk.setOperator('=')
leadk.setValue('MASIVO')
leadc.insertRow(leadr)
leads.appendViewCriteria(leadc)
leads.executeQuery()
def leadCount=0
while(leads.hasNext()){
def lead=leads.next()
leadCount+=1
}
println('TEST :D')
def printList=[]
def minimoLeads=nvl(MinimoDeLead_c,0 as BigDecimal) as Long
def numeroVendedores=nvl(NumeroDeVendedores_c,0 as BigDecimal) as Long
def bolsaLeads=nvl(BolsaDeLeadsARepartir_c,0 as BigDecimal) as Long
def rankingMap=[:]
def recursosAsignacion=RecursoAsignacionLead_Src_AsignacionMensualLeads_cToRecursoAsignacionLead_c_Tgt
def maximosAcumulados=nvl(ObjetivosCompletadosAcumulados_c,0 as BigDecimal) as Long
def ultimoObjetivoCompletado=nvl(UltimoObjetivoCompletado_c,numeroVendedores as BigDecimal)
def totalAnterior=nvl(LeadsAsignados_c,0 as BigDecimal) as Long
def leadTotal=leadCount+totalAnterior
//throw new oracle.jbo.ValidationException
while(recursosAsignacion.hasNext()){
def recursoAsignacion=recursosAsignacion.next()
def ranking=''+nvl(recursoAsignacion.Ranking_c,0 as BigDecimal)
def recursoMap=[:]
recursoMap.put('Row',recursoAsignacion)
recursoMap.put('Target',0)
rankingMap.put(ranking,recursoMap)
}
def primeraFrontera=numeroVendedores*minimoLeads
if(leadTotal <= primeraFrontera){
println('Condición 1')
def s=leadTotal%numeroVendedores
def i=1
while(i<=numeroVendedores){
def target=0
def recursoMap=rankingMap[''+i]
if(i<=s){
target=(leadTotal/numeroVendedores)+1
}
else{
target=leadTotal/numeroVendedores
}
println(target)
target=(target as BigDecimal).setScale(0,BigDecimal.ROUND_DOWN)
recursoMap.put('Target',target)
i+=1
}
}
else if(leadTotal<= numeroVendedores*minimoLeads+bolsaLeads){
println('Condición 2')
def i=numeroVendedores as Long
def escenario=''
def totalEsperado=0
while(i>0){
def printMap=[:]
def target=0
def recursoMap=rankingMap[''+i]
def recursoAsignacionRow=recursoMap['Row']
def objetivoAsignacion=recursoAsignacionRow.ObjetivoDeAsignacion_c as Long
totalEsperado+=objetivoAsignacion
if(objetivoAsignacion*i+totalEsperado>=leadTotal){
def s=((leadTotal-maximosAcumulados) as int)%((ultimoObjetivoCompletado-1)as int)
printMap.put('s',s)
if(i<s){
target=(leadTotal-maximosAcumulados)/(ultimoObjetivoCompletado-1)+1
escenario='target izquierda'
}
else{
target=(leadTotal-maximosAcumulados)/(ultimoObjetivoCompletado-1)
escenario='target derecha'
}
}
else{
printMap.put('s',0)
escenario='target=objetivo'
target=objetivoAsignacion
maximosAcumulados+=objetivoAsignacion
ultimoObjetivoCompletado=i
}
target=(target as BigDecimal).setScale(0,BigDecimal.ROUND_DOWN) as Long
println('target:'+target)
recursoMap.put('Target',target)
printMap.put('Escenario',escenario)
printMap.put('Rank',i)
printMap.put('maximosAcumulados',maximosAcumulados)
printMap.put('objetivoAsignacion',objetivoAsignacion)
printMap.put('ultimoObjetivoCompletado',ultimoObjetivoCompletado)
printMap.put('Target',target)
printList.add(printMap)
i-=1
}

setAttribute('ObjetivosCompletadosAcumulados_c',maximosAcumulados)
setAttribute('UltimoObjetivoCompletado_c',ultimoObjetivoCompletado)

}
else{
println('Condición 3')
ultimoObjetivoCompletado=1
maximosAcumulados=bolsaLeads+minimoLeads*numeroVendedores
setAttribute('ObjetivosCompletadosAcumulados_c',maximosAcumulados)
setAttribute('UltimoObjetivoCompletado_c',ultimoObjetivoCompletado)

def s=(leadTotal-maximosAcumulados)%numeroVendedores
def i=1
while(i<=numeroVendedores){
def target=0
def recursoMap=rankingMap[''+i]
def recursoAsignacionRow=recursoMap['Row']
def objetivoAsignacion=recursoAsignacionRow.ObjetivoDeAsignacion_c as Long
if(i<=s){
target=(leadTotal-maximosAcumulados)/numeroVendedores + 1 + objetivoAsignacion
}
else{
target=(leadTotal-maximosAcumulados)/numeroVendedores + objetivoAsignacion
}
target=(target as BigDecimal).setScale(0,BigDecimal.ROUND_DOWN) as Long
recursoMap.put('Target',target)
rankingMap.put(''+i,recursoMap)
i+=1
}
}
println('printList:'+printList)
def i=1
def leadIndex=0
def now=now()
println('RankingMap:'+rankingMap)
leads.reset()
recursosAsignacion=RecursoAsignacionLead_Src_AsignacionMensualLeads_cToRecursoAsignacionLead_c_Tgt
def countRecursos=0
while(recursosAsignacion.hasNext()){
def recursoAsignacionRow=recursosAsignacion.next()
def ranking=recursoAsignacionRow.Ranking_c
def recursoMap=rankingMap[''+ranking]
def current=nvl(recursoAsignacionRow.LeadsAsignados_c, 0 as BigDecimal) as Long
def target=recursoMap['Target'] as Long
def leadsAAsignar=target-current
def recursoRow=recursoAsignacionRow.Resource_Tgt_ResourceToRecursoAsignacionLead_c_Src
println('leadsAAsignar:'+leadsAAsignar)
while(leadsAAsignar>0&&leads.hasNext()){
def leadRow=leads.next()
if(leadRow.leadValido()){
leadRow.setAttribute('OwnerId',recursoRow.PartyId)
leadRow.setAttribute('AsignacionEjecutada_c',now)
leadRow.setAttribute('AsignacionMensual_Id_c',Id)
// println('leadRow.AsignacionEjecutada_c:'+leadRow.AsignacionEjecutada_c)
leadsAAsignar-=1
}
}
recursoAsignacionRow.setAttribute('LeadsAsignados_c',target)
println('recursoAsignacionRow.LeadsAsignados_c':+recursoAsignacionRow.LeadsAsignados_c)
countRecursos+=1
println('CountRecursos:'+countRecursos)
}
setAttribute('LeadsAsignados_c',leadTotal)

def leads=newView('Lead')
def leadc=newViewCriteria(leads)
def leadr=leadc.createRow()
//def leadi=leadr.ensureCriteriaItem('SistemaOrigen_c')
//leadi.setOperator('=')
//leadi.setValue(sistemaOrigen)
def leadj=leadr.ensureCriteriaItem('AsignacionMensual_Id_c')
leadj.setOperator('ISBLANK')
def leadk=leadr.ensureCriteriaItem('OwnerId')
leadk.setOperator('=')
leadk.setValue(300000035935384)
def leadl=leadr.ensureCriteriaItem('TipoCM_c')
leadl.setOperator('=')
leadl.setValue('MASIVO')

leadc.insertRow(leadr)
leads.appendViewCriteria(leadc)
leads.setMaxFetchSize(150)
leads.executeQuery()
def leadCount=0
while(leads.hasNext()){
def lead=leads.next()
if(lead.leadValido()){
leadCount+=1
}
}
def vueltas=nvl(Vueltas_c, 0 as BigDecimal) as Long
def printList=[]
def minimoLeads=nvl(MinimoDeLead_c,0 as BigDecimal) as Long
def numeroVendedores=nvl(NumeroDeVendedores_c,0 as BigDecimal) as Long
def bolsaLeads=nvl(BolsaDeLeadsARepartir_c,0 as BigDecimal) as Long
def rankingMap=[:]
def recursosAsignacion=RecursoAsignacionLead_Src_AsignacionMensualLeads_cToRecursoAsignacionLead_c_Tgt
def maximosAcumulados=nvl(ObjetivosCompletadosAcumulados_c,0 as BigDecimal) as Long
def ultimoObjetivoCompletado=nvl(UltimoObjetivoCompletado_c,numeroVendedores as BigDecimal)
def leadTotal=leadCount+nvl(LeadsAsignados_c,0 as BigDecimal) as Long
recursosAsignacion.reset()
def listaSkips=[]
def totalSkips=0
def totalOffset=0
def leadsDesactivados=0
while(recursosAsignacion.hasNext()){
def recursoAsignacion=recursosAsignacion.next()
def ranking=''+nvl(recursoAsignacion.Ranking_c,0 as BigDecimal)
def offset=nvl(recursoAsignacion.Offset_c,0 as BigDecimal ) as Long
if(recursoAsignacion.SuspenderAsignacion_c=='Y'){
listaSkips.add(nvl(recursoAsignacion.Ranking_c,0 as BigDecimal))
totalSkips+=1
leadsDesactivados+=nvl(recursoAsignacion.LeadsAsignados_c,0 as BigDecimal) as Long
}
else{
def recursoMap=[:]
recursoMap.put('Row',recursoAsignacion)
recursoMap.put('Target',0)
recursoMap.put('Offset',offset)
rankingMap.put(ranking,recursoMap)
}
totalOffset+=offset
}
//println('listaSkips:'+listaSkips)
//println('rankingMap:'+rankingMap)
def throwMap=[:]
throwMap.put('rankingMap',rankingMap)
throwMap.put('leadTotal',leadTotal)
throwMap.put('leadCount',leadCount)
throwMap.put('leadsAsignados',nvl(LeadsAsignados_c,0 as BigDecimal))
throwMap.put('numeroVendedores',numeroVendedores)
println('throwMap:'+throwMap)
//throw new oracle.jbo.ValidationException(''+throwMap)
//println('RecordName:'+RecordName)
//println('listaSkips:'+listaSkips)
//println('totalSkips:'+totalSkips)
leadTotal=leadTotal+totalOffset-leadsDesactivados
println('numeroVendedores:'+numeroVendedores)
println('totalSkips:'+totalSkips)
println('listaSkips:'+listaSkips)

if(leadTotal <= numeroVendedores*minimoLeads){


def s=leadTotal%numeroVendedores
def i=1 as BigDecimal
def skipCounter=0
while(i<=numeroVendedores+totalSkips){
if(!listaSkips.contains(i)){
def target=0
def recursoMap=rankingMap[''+i] as Map
println('i not skipped:'+i)
if(recursoMap!= null){
def offset=recursoMap['Offset'] as BigDecimal
if(i-skipCounter<=s){
target=(leadTotal/numeroVendedores)+1
target=target-offset
}
else{
target=(leadTotal/numeroVendedores) as Long
vueltas=target as Long
target=target-offset
}
target=(target as BigDecimal).setScale(0,BigDecimal.ROUND_DOWN)
println('recursoMap:'+recursoMap+',i:'+i+', numerovendedores:'+numeroVendedores)
recursoMap.put('Target',target)
}
}
else{
skipCounter+=1
}
i+=1
}
}
else if(leadTotal<= numeroVendedores*minimoLeads+bolsaLeads){
def i=numeroVendedores as Long
def escenario=''
def totalEsperado=0
while(i>0){
def printMap=[:]
def target=0
def recursoMap=rankingMap[''+i]
def recursoAsignacionRow=recursoMap['Row']
def objetivoAsignacion=recursoAsignacionRow.ObjetivoDeAsignacion_c as Long
totalEsperado+=objetivoAsignacion
if(objetivoAsignacion*i+totalEsperado>=leadTotal){
def s=((leadTotal-maximosAcumulados) as int)%((ultimoObjetivoCompletado-1)as int)
printMap.put('s',s)
if(i<s){
target=(leadTotal-maximosAcumulados)/(ultimoObjetivoCompletado-1)+1
escenario='target izquierda'
}
else{
target=(leadTotal-maximosAcumulados)/(ultimoObjetivoCompletado-1)
escenario='target derecha'
}
}
else{
printMap.put('s',0)
escenario='target=objetivo'
target=objetivoAsignacion
maximosAcumulados+=objetivoAsignacion
ultimoObjetivoCompletado=i
}
target=(target as BigDecimal).setScale(0,BigDecimal.ROUND_DOWN) as Long
recursoMap.put('Target',target)
printMap.put('Escenario',escenario)
printMap.put('Rank',i)
printMap.put('maximosAcumulados',maximosAcumulados)
printMap.put('objetivoAsignacion',objetivoAsignacion)
printMap.put('ultimoObjetivoCompletado',ultimoObjetivoCompletado)
printMap.put('Target',target)
printList.add(printMap)
i-=1
}

setAttribute('ObjetivosCompletadosAcumulados_c',maximosAcumulados)
setAttribute('UltimoObjetivoCompletado_c',ultimoObjetivoCompletado)

}
else{
println('Condición 3')
ultimoObjetivoCompletado=1
maximosAcumulados=bolsaLeads+minimoLeads*numeroVendedores
setAttribute('ObjetivosCompletadosAcumulados_c',maximosAcumulados)
setAttribute('UltimoObjetivoCompletado_c',ultimoObjetivoCompletado)

def s=(leadTotal-maximosAcumulados)%numeroVendedores
def i=1
while(i<=numeroVendedores){
def target=0
def recursoMap=rankingMap[''+i]
def recursoAsignacionRow=recursoMap['Row']
def objetivoAsignacion=recursoAsignacionRow.ObjetivoDeAsignacion_c as Long
if(i<=s){
target=(leadTotal-maximosAcumulados)/numeroVendedores + 1 + objetivoAsignacion
}
else{
target=(leadTotal-maximosAcumulados)/numeroVendedores + objetivoAsignacion
}
target=(target as BigDecimal).setScale(0,BigDecimal.ROUND_DOWN) as Long
recursoMap.put('Target',target)
rankingMap.put(''+i,recursoMap)
i+=1
}
}
def outputMap=[:]
outputMap.put('printList',printList)
outputMap.put('rankingMap',rankingMap)
println('printList:'+printList)
def i=1
def leadIndex=0
def now=now()
println('RankingMap:'+rankingMap)
leads.reset()
recursosAsignacion=RecursoAsignacionLead_Src_AsignacionMensualLeads_cToRecursoAsignacionLead_c_Tgt
def countRecursos=0
def recursosAsignacionList=[]
while(recursosAsignacion.hasNext()){
def recursoAsignacionRow=recursosAsignacion.next()
def raMap=[:]
def ranking=nvl(recursoAsignacionRow.Ranking_c,0 as BigDecimal)
if(!listaSkips.contains(ranking)){
println('ranking not skipped:'+ranking)
def recursoMap=rankingMap[''+ranking]
def current=nvl(recursoAsignacionRow.LeadsAsignados_c, 0 as BigDecimal) as Long
def target=recursoMap['Target'] as Long
def leadsAAsignar=target-current
def recursoRow=recursoAsignacionRow.Resource_Tgt_ResourceToRecursoAsignacionLead_c_Src
println('leadsAAsignar:'+leadsAAsignar)
def countLeadsAsignados=0
while(leadsAAsignar>0&&leads.hasNext()){
def leadRow=leads.next()
if(leadRow.leadValido()){
leadRow.setAttribute('OwnerId',recursoRow.PartyId)
leadRow.setAttribute('AsignacionEjecutada_c',now)
leadRow.setAttribute('AsignacionMensual_Id_c',Id)
leadRow.setAttribute('OwnerAsignadoRegla_Id_c',recursoRow.ResourceProfileId)
// println('leadRow.AsignacionEjecutada_c:'+leadRow.AsignacionEjecutada_c)
leadsAAsignar-=1
countLeadsAsignados+=1
}
}

recursoAsignacionRow.setAttribute('LeadsAsignados_c',target)
raMap.put('ranking',ranking)
raMap.put('target',target)
raMap.put('countLeadsAsignados',countLeadsAsignados)
recursosAsignacionList.add(raMap)
println('recursoAsignacionRow.LeadsAsignados_c':+recursoAsignacionRow.LeadsAsignados_c)
countRecursos+=1
println('CountRecursos:'+countRecursos)
}
}
outputMap.put('recursosAsignacionList',recursosAsignacionList)
outputMap.put('NumeroDeVendedores_c',NumeroDeVendedores_c)
outputMap.put('totalOffset',totalOffset)
println('outputMap:'+outputMap)
setAttribute('LeadsAsignados_c',leadTotal-totalOffset+leadsDesactivados)
setAttribute('Vueltas_c',vueltas)

def leads=newView('Lead')
def leadc=newViewCriteria(leads)
def leadr=leadc.createRow()
def leadj=leadr.ensureCriteriaItem('AsignacionMensual_Id_c')
leadj.setOperator('=')
leadj.setValue(Id)
leadc.insertRow(leadr)
leads.appendViewCriteria(leadc)
leads.executeQuery()
while(leads.hasNext()){
def lead=leads.next()
lead.remove()
}
def leads=newView('Lead')
def leadc=newViewCriteria(leads)
def leadr=leadc.createRow()
def leadi=leadr.ensureCriteriaItem('SistemaOrigen_c')
leadi.setOperator('=')
leadi.setValue('LEADBOX')
def leadj=leadr.ensureCriteriaItem('AsignacionMensual_Id_c')
leadj.setOperator('ISBLANK')
leadc.insertRow(leadr)
leads.appendViewCriteria(leadc)
leads.executeQuery()
def leadCount=0
while(leads.hasNext()){
def lead=leads.next()
leadCount+=1
}
println('TEST :D')
def printList=[]
def minimoLeads=nvl(MinimoDeLead_c,0 as BigDecimal) as Long
def numeroVendedores=nvl(NumeroDeVendedores_c,0 as BigDecimal) as Long
def bolsaLeads=nvl(BolsaDeLeadsARepartir_c,0 as BigDecimal) as Long
def rankingMap=[:]
def recursosAsignacion=RecursoAsignacionLead_Src_AsignacionMensualLeads_cToRecursoAsignacionLead_c_Tgt
def maximosAcumulados=nvl(ObjetivosCompletadosAcumulados_c,0 as BigDecimal) as Long
def ultimoObjetivoCompletado=nvl(UltimoObjetivoCompletado_c,numeroVendedores as BigDecimal)
def totalAnterior=nvl(LeadsAsignados_c,0 as BigDecimal) as Long
def leadsAsignadosTotales=totalAnterior
def leadTotal=leadCount+totalAnterior
while(recursosAsignacion.hasNext()){
def recursoAsignacion=recursosAsignacion.next()
def ranking=''+nvl(recursoAsignacion.Ranking_c,0 as BigDecimal)
def recursoMap=[:]
recursoMap.put('Row',recursoAsignacion)
recursoMap.put('Target',0)
rankingMap.put(ranking,recursoMap)
}
def primeraFrontera=numeroVendedores*minimoLeads
def segundaFrontera= primeraFrontera + bolsaLeads
def leadsAAsignar=0
def leadsFaltantes=leadCount
if(leadsAsignadosTotales <= primeraFrontera){
if(leadTotal>primeraFrontera){
leadsAAsignar=primeraFrontera
leadsFaltantes=leadTotal-primeraFrontera
leadsAsignadosTotales=primeraFrontera
}
else{
leadsAAsignar=leadTotal
leadsFaltantes=0
leadsAsignadosTotales=leadTotal
}
println('Condición 1')
def s=leadsAAsignar%numeroVendedores
def i=1
while(i<=numeroVendedores){
def target=0
def recursoMap=rankingMap[''+i]
if(i<=s){
target=(leadsAAsignar/numeroVendedores)+1
}
else{
target=leadsAAsignar/numeroVendedores
}
println(target)
target=(target as BigDecimal).setScale(0,BigDecimal.ROUND_DOWN)
recursoMap.put('Target',target)
i+=1
}
}
if(leadsFaltantes>0){
if(leadsAsignadosTotales<= segundaFrontera){
if(leadTotal>segundaFrontera){
leadsAAsignar=segundaFrontera
leadsFaltantes=leadTotal-segundaFrontera
leadsAsignadosTotales=segundaFrontera
}
else{
leadsAAsignar=leadTotal
leadsFaltantes=0
leadsAsignadosTotales=leadTotal
}
println('Condición 2')
def i=numeroVendedores as Long
def escenario=''
def totalEsperado=0
while(i>0){
def printMap=[:]
def target=0
def recursoMap=rankingMap[''+i]
def recursoAsignacionRow=recursoMap['Row']
def objetivoAsignacion=recursoAsignacionRow.ObjetivoDeAsignacion_c as Long
totalEsperado+=objetivoAsignacion
if(objetivoAsignacion*i+totalEsperado>=leadsAAsignar){
def s=((leadTotal-maximosAcumulados) as int)%((ultimoObjetivoCompletado-1)as int)
printMap.put('s',s)
if(i<s){
target=(leadTotal-maximosAcumulados)/(ultimoObjetivoCompletado-1)+1
escenario='target izquierda'
}
else{
target=(leadTotal-maximosAcumulados)/(ultimoObjetivoCompletado-1)
escenario='target derecha'
}
}
else{
printMap.put('s',0)
escenario='target=objetivo'
target=objetivoAsignacion
maximosAcumulados+=objetivoAsignacion
ultimoObjetivoCompletado=i
}
target=(target as BigDecimal).setScale(0,BigDecimal.ROUND_DOWN) as Long
println('target:'+target)
recursoMap.put('Target',target)
printMap.put('Escenario',escenario)
printMap.put('Rank',i)
printMap.put('maximosAcumulados',maximosAcumulados)
printMap.put('objetivoAsignacion',objetivoAsignacion)
printMap.put('ultimoObjetivoCompletado',ultimoObjetivoCompletado)
printMap.put('Target',target)
printList.add(printMap)
i-=1
}

setAttribute('ObjetivosCompletadosAcumulados_c',maximosAcumulados)
setAttribute('UltimoObjetivoCompletado_c',ultimoObjetivoCompletado)

}
else{
println('Condición 3')
ultimoObjetivoCompletado=1
maximosAcumulados=bolsaLeads+minimoLeads*numeroVendedores
setAttribute('ObjetivosCompletadosAcumulados_c',maximosAcumulados)
setAttribute('UltimoObjetivoCompletado_c',ultimoObjetivoCompletado)

def s=(leadTotal-maximosAcumulados)%numeroVendedores
def i=1
while(i<=numeroVendedores){
def target=0
def recursoMap=rankingMap[''+i]
def recursoAsignacionRow=recursoMap['Row']
def objetivoAsignacion=recursoAsignacionRow.ObjetivoDeAsignacion_c as Long
if(i<=s){
target=(leadTotal-maximosAcumulados)/numeroVendedores + 1 + objetivoAsignacion
}
else{
target=(leadTotal-maximosAcumulados)/numeroVendedores + objetivoAsignacion
}
target=(target as BigDecimal).setScale(0,BigDecimal.ROUND_DOWN) as Long
recursoMap.put('Target',target)
rankingMap.put(''+i,recursoMap)
i+=1
}
}
}
println('printList:'+printList)
def i=1
def leadIndex=0
def now=now()
println('RankingMap:'+rankingMap)
leads.reset()
recursosAsignacion=RecursoAsignacionLead_Src_AsignacionMensualLeads_cToRecursoAsignacionLead_c_Tgt
def countRecursos=0
while(recursosAsignacion.hasNext()){
def recursoAsignacionRow=recursosAsignacion.next()
def ranking=recursoAsignacionRow.Ranking_c
def recursoMap=rankingMap[''+ranking]
def current=nvl(recursoAsignacionRow.LeadsAsignados_c, 0 as BigDecimal) as Long
def target=recursoMap['Target'] as Long
leadsAAsignar=target-current
def recursoRow=recursoAsignacionRow.Resource_Tgt_ResourceToRecursoAsignacionLead_c_Src
println('leadsAAsignar:'+leadsAAsignar)
while(leadsAAsignar>0&&leads.hasNext()){
def leadRow=leads.next()
if(leadRow.leadValido()){
leadRow.setAttribute('OwnerId',recursoRow.PartyId)
leadRow.setAttribute('AsignacionEjecutada_c',now)
leadRow.setAttribute('AsignacionMensual_Id_c',Id)
// println('leadRow.AsignacionEjecutada_c:'+leadRow.AsignacionEjecutada_c)
leadsAAsignar-=1
}
}
recursoAsignacionRow.setAttribute('LeadsAsignados_c',target)
println('recursoAsignacionRow.LeadsAsignados_c':+recursoAsignacionRow.LeadsAsignados_c)
countRecursos+=1
println('CountRecursos:'+countRecursos)
}
setAttribute('LeadsAsignados_c',leadTotal)

ption Disabled Actions Expression


No return
(oracle.apps.fnd.applcore.Profile.ge
No return
(oracle.apps.fnd.applcore.Profile.ge
No return
(oracle.apps.fnd.applcore.Profile.ge

Record Type Advanced Expression


Precision MaxLength Expression
80 80
0 0
10 10
10 10
15 15
10 10
64 64
64 64
10 10
1500 1500
10 10
18 18
10 10
0 0
10 10
32 32
0 0 ''+Id
20 20
64 64
18 18
10 10
10 10
10 10
1500 1500
10 10
10 10
10 10
0 0

cursoAsignacionLead_c_Tgt
cursoAsignacionLead_c_Tgt

ignacionLead_c as Long)
DeLeadsARepartir_c as Long)
ALF_UP)

d_c',recursoMap['ResourceProfileId'])

ores
oLeads as Long,deltaAsignacion as Double)

onLead_c as Long) && res.SuspenderAsignacion_c!='Y'){

d_c_Src.PartyName)

cursoAsignacionLead_c_Tgt
cursoAsignacionLead_c_Tgt
s Long
s as BigDecimal)
int)
acion

n
oAsignacionLead_c_Tgt

nLead_c_Src

nados_c)
cursoAsignacionLead_c_Tgt
s Long
s as BigDecimal)

ong
ores)
int)
acion

oAsignacionLead_c_Tgt
onLead_c_Src

gnados_c)
cursoAsignacionLead_c_Tgt
s Long
s as BigDecimal)
s int)
acion

oAsignacionLead_c_Tgt
nLead_c_Src

nados_c)

ression
rn
cle.apps.fnd.applcore.Profile.get('ZCX_CUSTOM_OBJECT_EVENTS') ==
rn
cle.apps.fnd.applcore.Profile.get('ZCX_CUSTOM_OBJECT_EVENTS') ==
rn
cle.apps.fnd.applcore.Profile.get('ZCX_CUSTOM_OBJECT_EVENTS') ==
Object Name : AssetEO
Object Name AssetEO
Object Display Name Plural Activos
Object Type OOTB
Application Name CRM
Table Name ZCA_ASSET
Total number of custom fields
Total number of modified Standard fields
Total number of Triggers
Total number of Object Functions
Total number of Object Workflows
Total number of Validations
Total number of Dynamic Layouts

Standard Fields
Name Display Name Help Text
AssetNumber Código Contrato Plan Asset Number
StatusCode Activo / Inactivo Status
ResourceOwnerId Resource Owner ID Resource Owner ID
PurchaseDate Fecha de venta en CRM Purchase Date
StartDate Fecha de Activación Start Date
EndDate Fecha de Desactivación End Date
EnteredCurrencyCode Moneda Currency
CustPartyType Tipo de Cliente Customer Type
CustomerId Cliente Asset Owner Party ID
PartyType Tipo de Cliente Customer Type
InstallDate Fecha de Instalación
Quantity Cantidad Quantity
CreationDate Creation Date

Custom Fields
Name Display Name Type Column Name
Valor1erFactura_c Valor 1er factura Currency EXTN_ATTRIBUTE_NUMBER004
AnchoDeBanda_c Ancho de Banda Text EXTN_ATTRIBUTE_CHAR011
EstatusServicio_c Estatus Servicio Netplus FCL EXTN_ATTRIBUTE_CHAR032
ValorDeInstalacion_c Valor de instalación Currency EXTN_ATTRIBUTE_NUMBER006
Pasaporte_c Pasaporte Text EXTN_ATTRIBUTE_CHAR029
IdentificadorDeOportunidad_Id_c Oportunidad DCLForeignKey EXTN_ATTRIBUTE_NUMBER003
MotivoEstatusServicio_c Motivo Estatus Servicio Netplus Text EXTN_ATTRIBUTE_CHAR031
Cedula_c Cédula Text EXTN_ATTRIBUTE_CHAR027
NombrePlanEnlace_c Nombre Plan/Enlace Text EXTN_ATTRIBUTE_CHAR006
AsesorPreventa_c Asesor Preventa Text EXTN_ATTRIBUTE_CHAR020
Origen_c Origen DCL

Comisionado_c Comisionado Text EXTN_ATTRIBUTE_CHAR009


TipoDeServicio_c Tipo de Servicio Text EXTN_ATTRIBUTE_CHAR005
Timer_c Timer Number EXTN_ATTRIBUTE_NUMBER014
FechaEstatusServicio_c Fecha Estatus Servicio Netplus Date EXTN_ATTRIBUTE_TIMESTAMP003
RUCExterno_c RUC Externo Text EXTN_ATTRIBUTE_CHAR028
MontoRecurrente_c Monto recurrente Number EXTN_ATTRIBUTE_NUMBER008
DesgeografiaOracle_c Desgeografía Oracle(*) Text EXTN_ATTRIBUTE_CHAR012
TipoDeIdentificacion_c Tipo de identificación Text EXTN_ATTRIBUTE_CHAR003
MesIngresoSistema_c Mes ingreso sistema Text EXTN_ATTRIBUTE_CHAR021
EjecutivoFormula_c Ejecutivo Text Formula

CDOESaturada_c CDOE Saturada Text EXTN_ATTRIBUTE_CHAR015


Origen_Id_c Origen DCLForeignKey EXTN_ATTRIBUTE_NUMBER002
Pagada1erFactura_c Fecha de pago Primer Factura Date EXTN_ATTRIBUTE_TIMESTAMP002
UltimaMilla_c Ultima Milla Text EXTN_ATTRIBUTE_CHAR018
SalesStageId_c Id de etapa de ventas Number EXTN_ATTRIBUTE_NUMBER012
Nodo_c Nodo Text EXTN_ATTRIBUTE_CHAR034
MotivoEstado_c Motivo Estado Text EXTN_ATTRIBUTE_CHAR008
ValorDeInstalacionBruta_c Valor de Instalación Bruta Number EXTN_ATTRIBUTE_NUMBER013
Id_c Id Text Formula

Estado_c Estado Text EXTN_ATTRIBUTE_CHAR022


EnlacesNetos_c Enlaces netos Number EXTN_ATTRIBUTE_NUMBER010
MetrajeExtra_c Metros instalados Text EXTN_ATTRIBUTE_CHAR014
MontoBruto_c Monto bruto Number EXTN_ATTRIBUTE_NUMBER009
Canal_Id_c Canal DCLForeignKey EXTN_ATTRIBUTE_NUMBER001
Segmentacion_c Segmentacion Text EXTN_ATTRIBUTE_CHAR030
CiudadDeEnlace_c Ciudad de enlace (servicio) Text EXTN_ATTRIBUTE_CHAR017
DesproductoOracle_c Desproducto Oracle Text EXTN_ATTRIBUTE_CHAR013
Identificacion_c Identificación Text EXTN_ATTRIBUTE_CHAR004
PagoONoPagoDeInstalacion_c Pago o no pago de instalación Text EXTN_ATTRIBUTE_CHAR010
EjecutivoComercial_c Ejecutivo Comercial Text EXTN_ATTRIBUTE_CHAR033
PagadaPrimerFactura_c Pagada 1° factura Checkbox EXTN_ATTRIBUTE_CHAR025
AreaComercial_c Área comercial FCL EXTN_ATTRIBUTE_CHAR024
Frecuencia_c Frecuencia Text EXTN_ATTRIBUTE_CHAR016
ClienteFormula_c Cliente Text Formula

IdentificadorDeOportunidad_c Oportunidad DCL

MotivoDeDesactivacion_c Motivo de Desactivación Text EXTN_ATTRIBUTE_CHAR007


FechaFinMesAplicar_c Fecha Fin (mes aplicar) Date EXTN_ATTRIBUTE_TIMESTAMP001
TipoDeInstalacion_c Tipo de Instalación Text EXTN_ATTRIBUTE_CHAR023
EnlacesBrutos_c Enlaces brutos Number EXTN_ATTRIBUTE_NUMBER011
RUC_c RUC Text EXTN_ATTRIBUTE_CHAR026
MesComisionado_c Mes comisionado Text EXTN_ATTRIBUTE_CHAR019
Canal_c Canal DCL

Triggers
Name Type Trigger PointDescription Error Message Expression
actualizarOportunidad Object Trigger BeforeInsert actualizarOportunid
Ins def statusServicio =
if(AreaComercial_c =
setAttribute('Timer_c
}
ContratosIngresados Object Trigger BeforeInsert EstadoContratos()
ActualizarOportunida Object Trigger BeforeUpdate actualizarOportunid
d crearActualizarProdu
ActualizarContratos Object Trigger BeforeUpdate if(isAttributeChange
EstadoContratos()
}

Validations
Name Type Error Message Expression
CustomerID_CantBeNul Object Validation Los activos sólo pueden ser creados if(nvl(CustomerId,0 a
l mediante una plantilla de carga o throw new oracle.jbo
integración. return true
Rule1 Field Validation adf.source.isLookup
Field Name : Canal_Id_c
Rule1 Field Validation adf.source.isLookup
Field Name : Origen_Id_c
Rule1 Field Validation adf.source.isLookup
Field Name :
IdentificadorDeOportunidad_Id_c

Object Functions
Name Parameters Return Type Privileged Visibility Description
actualizarOp void No Default
ortunidad
ortunidad

getDatosOp void No Default


ortunidad
regularizarA void No Default
ssets

crearActualiz void No Default


arProductoR
esponsys
envioRespon void No Default
sys

EstadoContr void No Default


atos
Object Workflows
Name Definition Name Event Point Description
getDatosOportunidad getDatosOportunidad Create

testSR testSR Create

enviar_asset_a_Responsys enviar_asset_a_Responsys Update


enviar_asset_a_Responsys enviar_asset_a_Responsys Update

Dynamic Layouts
Layout Name Active Role
Común Yes ADMIN_GENERAL_PNT;
Masivo Yes USUARIO_MASIVO;
Corporativo Yes
Admin Yes ADMIN_GENERAL_PNT;
Masivo Yes USUARIO_MASIVO;
Corporativo Yes
Admin Yes ADMIN_GENERAL_PNT;
Diseño por Defecto Yes
tEO
vos
B
M
_ASSET
53
13
4
6
3
4
8

Searchable
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
Yes

Name Default Value Required Updatable Searchable REST Enabl


RIBUTE_NUMBER004 No Yes No Yes
RIBUTE_CHAR011 No Yes Yes Yes
RIBUTE_CHAR032 No Yes Yes Yes
RIBUTE_NUMBER006 No Yes No Yes
RIBUTE_CHAR029 No Yes Yes Yes
RIBUTE_NUMBER003 No Yes Yes Yes
RIBUTE_CHAR031 No Yes No Yes
RIBUTE_CHAR027 No Yes Yes Yes
RIBUTE_CHAR006 No Yes Yes Yes
RIBUTE_CHAR020 No Yes Yes Yes
No Yes No Yes
RIBUTE_CHAR009 No Yes No Yes
RIBUTE_CHAR005 No Yes No Yes
RIBUTE_NUMBER014 No Yes No Yes
RIBUTE_TIMESTAMP003 No Yes Yes Yes
RIBUTE_CHAR028 No Yes Yes Yes
RIBUTE_NUMBER008 No Yes Yes Yes
RIBUTE_CHAR012 No Yes Yes Yes
RIBUTE_CHAR003 No Yes No Yes
RIBUTE_CHAR021 No Yes No Yes
No No No Yes

RIBUTE_CHAR015 No Yes No Yes


RIBUTE_NUMBER002 No Yes Yes Yes
RIBUTE_TIMESTAMP002 No Yes Yes Yes
RIBUTE_CHAR018 No Yes No Yes
RIBUTE_NUMBER012 No Yes No Yes
RIBUTE_CHAR034 No Yes No Yes
RIBUTE_CHAR008 No Yes Yes Yes
RIBUTE_NUMBER013 No Yes No Yes
No No No Yes
RIBUTE_CHAR022 No Yes Yes Yes
RIBUTE_NUMBER010 No Yes Yes Yes
RIBUTE_CHAR014 No Yes No Yes
RIBUTE_NUMBER009 No Yes Yes Yes
RIBUTE_NUMBER001 No Yes Yes Yes
RIBUTE_CHAR030 No Yes No Yes
RIBUTE_CHAR017 No Yes Yes Yes
RIBUTE_CHAR013 No Yes No Yes
RIBUTE_CHAR004 No Yes Yes Yes
RIBUTE_CHAR010 No Yes No Yes
RIBUTE_CHAR033 No Yes No Yes
RIBUTE_CHAR025 N Yes Yes No Yes
RIBUTE_CHAR024 No Yes Yes Yes
RIBUTE_CHAR016 No Yes No Yes
No No No Yes
No Yes No Yes
RIBUTE_CHAR007 No Yes Yes Yes
RIBUTE_TIMESTAMP001 No Yes Yes Yes
RIBUTE_CHAR023 No Yes No Yes
RIBUTE_NUMBER011 No Yes Yes Yes
RIBUTE_CHAR026 No Yes Yes Yes
RIBUTE_CHAR019 No Yes Yes Yes
No Yes No Yes

Expression
actualizarOportunidad()
def statusServicio = EstatusServicio_c
if(AreaComercial_c =='MASIVO' && statusServicio == 'ACTIVO'){
setAttribute('Timer_c',now().time)
}
EstadoContratos()
actualizarOportunidad()
crearActualizarProductoResponsys()
if(isAttributeChanged('EstatusServicio_c')){
EstadoContratos()
}

Expression
if(nvl(CustomerId,0 as Long)==0)
throw new oracle.jbo.ValidationException('Los activos sólo pueden ser creados mediante una plantilla de carga o integración.')
return true
adf.source.isLookupIdValid('Canal_Id_c',newValue)

adf.source.isLookupIdValid('Origen_Id_c',newValue)

adf.source.isLookupIdValid('IdentificadorDeOportunidad_Id_c',newValue)

Expression
if(isAttributeChanged('EstatusServicio_c')||getPrimaryRowState().isNew()||isAttributeChanged('AssetAmount') ||
isAttributeChanged('ValorDeInstalacion_c')
def optyId=IdentificadorDeOportunidad_Id_c || isAttributeChanged('IdentificadorDeOportunidad_Id_c')){
if(optyId!=null){
def opty=IdentificadorDeOportunidad_Obj_c
if(nvl(opty.OptyId,0 as Long)==0){
def optys=newView('OpportunityVO')
def optyc=newViewCriteria(optys)
def optyr=optyc.createRow()
def optyi=optyr.ensureCriteriaItem('OptyId')
optyi.setOperator('=')
optyi.setValue(optyId)
optyc.insertRow(optyr)
optys.appendViewCriteria(optyc)
optys.executeQuery()
while(optys.hasNext()){
opty=optys.next()
}
}
opty.setAttribute('CambioAssets_c',now().time)
}
}
def optyId=nvl(IdentificadorDeOportunidad_Id_c,0 as BigDecimal)
if(optyId!=0 && !getPrimaryRowState().isNew()){
def opty=IdentificadorDeOportunidad_Obj_c
if(nvl(opty.OptyId, 0 as Long)!=0){
def team=assetResources
def optyOwnerId=opty.OwnerResourcePartyId
def ownerExists=false
while(team.hasNext()){
def member=team.next()
if(member.ResourceId!=optyOwnerId){
member.remove()
}
else{
member.setAttribute('OwnerFlag','Y')
ownerExists=true
}
}
if(!ownerExists){
def member=team.createRow()
member.setAttribute('ResourceId',optyOwnerId)
member.setAttribute('OwnerFlag','Y')
team.insertRow(member)
}
setAttribute('Canal_Id_c',opty.CanalObjC_Id_c)
setAttribute('Origen_Id_c',opty.Origen_Id_c)
setAttribute('Segmentacion_c',opty.Segmentacion_c)
setAttribute('SalesStageId_c',opty.SalesStageId)
}
}
def startTime=now().time
def assets=newView('AssetVO')
def assetc=newViewCriteria(assets)
def assetr=assetc.createRow()
def asseti=assetr.ensureCriteriaItem('Origen_Id_c')
asseti.setOperator('ISNOTBLANK')
def assetj=assetr.ensureCriteriaItem('Canal_Id_c')
assetj.setOperator('ISBLANK')
assetc.insertRow(assetr)
assets.appendViewCriteria(assetc)

assets.setMaxFetchSize(5000)
assets.executeQuery()
def maxTime=45000
def elapsedTime=now().time-startTime
def total=0
while(assets.hasNext() && elapsedTime<maxTime){
def asset=assets.next()
asset.getDatosOportunidad()
elapsedTime=now().time-startTime
total+=1
}
println('total Assets Regularizados:'+total)
try{
def statusServicio = EstatusServicio_c
def AssetNumber=isAttributeChanged('AssetNumber')
def ProductType=isAttributeChanged('ProductType')
def InventoryItemId=isAttributeChanged('InventoryItemId')
def InventoryOrgId=isAttributeChanged('InventoryOrgId')
def TipoDeIdentificacion_c=isAttributeChanged('TipoDeIdentificacion_c')
def Identificacion_c=isAttributeChanged('Identificacion_c')
def CustomerId=isAttributeChanged('CustomerId')
def TipoDeServicio_c=isAttributeChanged('TipoDeServicio_c')
def NombrePlanEnlace_c=isAttributeChanged('NombrePlanEnlace_c')
def InstallDate=isAttributeChanged('InstallDate')
def StartDate=isAttributeChanged('StartDate')
def EndDate=isAttributeChanged('EndDate')
def MotivoDeDesactivacion_c=isAttributeChanged('MotivoDeDesactivacion_c')
def Estado_c=isAttributeChanged('Estado_c')
def MotivoEstado_c=isAttributeChanged('MotivoEstado_c')
def PurchaseDate=isAttributeChanged('PurchaseDate')
def FechaFinMesAplicar_c=isAttributeChanged('FechaFinMesAplicar_c')
def Valor1erFactura_c=isAttributeChanged('Valor1erFactura_c')
def Pagada1erFactura_c=isAttributeChanged('Pagada1erFactura_c')
def MesIngresoSistema_c=isAttributeChanged('MesIngresoSistema_c')
def AssetAmount=isAttributeChanged('AssetAmount')
def ValorDeInstalacionBruta_c=isAttributeChanged('ValorDeInstalacionBruta_c')
def ValorDeInstalacion_c=isAttributeChanged('ValorDeInstalacion_c')
def AnchoDeBanda_c=isAttributeChanged('AnchoDeBanda_c')
def DesgeografiaOracle_c=isAttributeChanged('DesgeografiaOracle_c')
def DesproductoOracle_c=isAttributeChanged('DesproductoOracle_c')
def TipoDeInstalacion_c=isAttributeChanged('TipoDeInstalacion_c')
def MetrajeExtra_c=isAttributeChanged('MetrajeExtra_c')
def CDOESaturada_c=isAttributeChanged('CDOESaturada_c')
def Frecuencia_c=isAttributeChanged('Frecuencia_c')
def CiudadDeEnlace_c=isAttributeChanged('CiudadDeEnlace_c')
def UltimaMilla_c=isAttributeChanged('UltimaMilla_c')
def MesComisionado_c=isAttributeChanged('MesComisionado_c')
def AsesorPreventa_c=isAttributeChanged('AsesorPreventa_c')
def EnteredCurrencyCode=isAttributeChanged('EnteredCurrencyCode')
def StatusCode=isAttributeChanged('StatusCode')
def Canal_Id_c=isAttributeChanged('Canal_Id_c')
def Origen_Id_c=isAttributeChanged('Origen_Id_c')
def EnlacesBrutos_c=isAttributeChanged('EnlacesBrutos_c')
def EnlacesNetos_c=isAttributeChanged('EnlacesNetos_c')
def MontoBruto_c=isAttributeChanged('MontoBruto_c')
def MontoRecurrente_c=isAttributeChanged('MontoRecurrente_c')
def AreaComercial=isAttributeChanged('AreaComercial_c')
def ResourceOwnerPartyNumber=isAttributeChanged('ResourceOwnerPartyNumber')
def Pasaporte_c=isAttributeChanged('Pasaporte_c')
def Cedula_c=isAttributeChanged('Cedula_c')
def RUC_c=isAttributeChanged('RUC_c')
def RUCExterno_c=isAttributeChanged('RUCExterno_c')
def Segmentacion_c=isAttributeChanged('Segmentacion_c')
def EstatusServicio_c=isAttributeChanged('EstatusServicio_c')
def MotivoEstatusServicio_c=isAttributeChanged('MotivoEstatusServicio_c')
def FechaEstatusServicio_c=isAttributeChanged('FechaEstatusServicio_c')
def Nodo_c=isAttributeChanged('Nodo_c')
if(AreaComercial_c =='MASIVO' && statusServicio == 'ACTIVO'){
println('AreaComercial: '+AreaComercial_c + ' ESTATUS DEL SERVICIO: '+ EstatusServicio_c)
//throw new oracle.jbo.ValidationException('AreaComercial: '+AreaComercial_c + ' ESTATUS DEL SERVICIO: '+ statusServic
if(getPrimaryRowState().isNew()||AssetNumber||ProductType||InventoryItemId||InventoryOrgId||TipoDeIdentificacion_c||Ident
TipoDeServicio_c||NombrePlanEnlace_c||InstallDate||StartDate||EndDate||MotivoDeDesactivacion_c||Estado_c||MotivoEstado_
setAttribute('Timer_c',now().time)
}
}
}catch(Exception e){
// setAttribute('MensajeEnviadoAResponsys_c',e)
throw new oracle.jbo.ValidationException('Error: ' + e)
}
def horaCambios = nvl(Timer_c,0 as BigDecimal)

if(horaCambios != ''){
println('horaCambios (ms):'+horaCambios)
def diferencia = now().time - horaCambios;
println('diferencia (ms):'+diferencia)
if(StartDate==null || StartDate == ''){
def salto = Character.toString(10 as char);
println('Para enviar un producto a Responsys es necesario la fecha de activación, un estatus ACTIVO y área MASIVO'+salto
'StartDate:'+StartDate+salto+'status:'+EstatusServicio_c+salto+'área
}else{ comercial:'+AreaComercial_c)
if(diferencia <= 10000 && EstatusServicio_c == 'ACTIVO'){
try{
def token = adf.webServices.ObtenerToken.GET()
println('token: '+token)
def httpHeaders = ['token':token];
def service = adf.webServices.CreateUpdateProductResponsys
service.requestHTTPHeaders = httpHeaders;

try{
def serviceResponse = service.POST(Id_c)
println('AssetId: '+AssetId)
println('response: '+serviceResponse)
}catch(Exception e){
println('Error en llamada al servicio "CrearActualizarProductoResponsys: '+e.message)
}
//setAttribute('FechaDeEnvioAResponsys_c',now())
//setAttribute('MensajeEnviadoAResponsys_c',serviceResponse)
}catch(Exception e){
println('Error en llamada al servicio "ObtenerToken: '+e.message)
}

}}}
def cuenta = AssetOwnerAccount
if(cuenta==null){
if(CustomerId!=null){
def accounts=newView('OrganizationProfile')
def accountc=newViewCriteria(accounts)
def accountr=accountc.createRow()
def accounti=accountr.ensureCriteriaItem('PartyId')
accounti.setOperator('=')
accounti.setValue(CustomerId)
accountc.insertRow(accountr)
accounts.appendViewCriteria(accountc)
accounts.executeQuery()
while(accounts.hasNext()){
cuenta=accounts.next()
}
}
}
if(cuenta != null){
def estatusNetplusAnterior= nvl(getOriginalAttributeValue('EstatusServicio_c'),'')
def estatusNetplusActual= nvl(EstatusServicio_c,'')
def contratosIngresados = nvl(cuenta.TotalDeContratosIngresados_c,0 as BigDecimal)
def contratosActivos = nvl(cuenta.TotalDeContratosActivos_c,0 as BigDecimal)
def contratosDesactivados = nvl(cuenta.TotalDeContratosDesactivados_c,0 as BigDecimal)
def contratosDesactivadosTemporales = nvl(cuenta.TotalDeContratosDesactivadosTemporales_c,0 as BigDecimal)
def contratosNoConcretadosTemporales = nvl(cuenta.TotalDeContratosNoConcretadosTemporales_c,0 as BigDecimal)
def contratosNoConcretados = nvl(cuenta.TotalDeContratosNoConcretados_c,0 as BigDecimal)

def activoRecienCreado = getPrimaryRowState().isNew()

if(isAttributeChanged('EstatusServicio_c') || activoRecienCreado ){

if(estatusNetplusActual == 'INGRESADO'){
contratosIngresados = contratosIngresados+1
cuenta.setAttribute('TotalDeContratosIngresados_c',contratosIngresados)

}else if(estatusNetplusActual == 'ACTIVO'){


contratosActivos = contratosActivos+1
cuenta.setAttribute('TotalDeContratosActivos_c',contratosActivos)

}else if(estatusNetplusActual == 'DESACTIVADO'){


contratosDesactivados = contratosDesactivados+1
cuenta.setAttribute('TotalDeContratosDesactivados_c',contratosDesactivados)

}else if(estatusNetplusActual == 'DESACTIVADO_TEMPORAL'){


contratosDesactivadosTemporales = contratosDesactivadosTemporales+1
cuenta.setAttribute('TotalDeContratosDesactivadosTemporales_c',contratosDesactivadosTemporales)

}else if(estatusNetplusActual == 'NO_CONCRETADA'){


contratosNoConcretados = contratosNoConcretados+1
cuenta.setAttribute('TotalDeContratosNoConcretados_c',contratosNoConcretados)

}else if(estatusNetplusActual == 'NO_CONCRETADA_TEMPORAL'){


contratosNoConcretadosTemporales = contratosNoConcretadosTemporales+1
cuenta.setAttribute('TotalDeContratosNoConcretadosTemporales_c',contratosNoConcretadosTemporales)
}
if(!activoRecienCreado){
if(estatusNetplusAnterior== 'INGRESADO' && contratosIngresados != 0){
contratosIngresados = contratosIngresados-1
cuenta.setAttribute('TotalDeContratosIngresados_c', contratosIngresados)

}else if(estatusNetplusAnterior == 'DESACTIVADO' && contratosDesactivados != 0){


contratosDesactivados = contratosDesactivados -1
cuenta.setAttribute('TotalDeContratosDesactivados_c',contratosDesactivados)

}else if(estatusNetplusAnterior == 'DESACTIVADO_TEMPORAL' && contratosDesactivadosTemporales != 0){


contratosDesactivadosTemporales = contratosDesactivadosTemporales-1
cuenta.setAttribute('TotalDeContratosDesactivadosTemporales_c',contratosDesactivadosTemporales)

}else if(estatusNetplusAnterior == 'NO_CONCRETADA' && contratosNoConcretados != 0){


contratosNoConcretados = contratosNoConcretados-1
cuenta.setAttribute('TotalDeContratosNoConcretados_c',contratosNoConcretados)

}else if(estatusNetplusAnterior == 'NO_CONCRETADA_TEMPORAL' && contratosNoConcretadosTemporales != 0){


contratosNoConcretadosTemporales = contratosNoConcretadosTemporales-1
cuenta.setAttribute('TotalDeContratosNoConcretadosTemporales_c',contratosNoConcretadosTemporales)
}
else if(estatusNetplusAnterior == 'ACTIVO' && contratosActivos != 0){
contratosActivos = contratosActivos-1
cuenta.setAttribute('TotalDeContratosActivos_c',contratosActivos)
}
}
}
}

Disabled Actions Expression


No if(!
Groovy Function oracle.apps.crmCommon.extensibility.con
return false;
Name :getDatosOportunidad else
Description : return true;
Execution Schedule : 0:Days:After:
Function Display Name : getDatosOportunidad

Yes Field Update if(!


Name : TEST oracle.apps.crmCommon.extensibility.con
return false;
Execution Schedule : 0 : Days: After: else
Fields return true;
Name : AssetEO:PurchaseDate:Date
Value : [$Today()$]

No if(!
Groovy Function oracle.apps.crmCommon.extensibility.con
return false;
No

Name :enviarProductoResponsys
Description : if(EstatusServicio_c == 'ACTIVO'){
Execution Schedule : 0:Days:After: return true}
Function Display Name : envioResponsys

Record Type Advanced Expression


Precision MaxLength Expression
10 10
80 80
1500 1500
10 10
80 80
18 18
80 80
80 80
80 80
80 80
1500 1500
80 80
80 80
16 16
0 0
80 80
12 12
80 80
80 80
80 80
0 0 def team = assetResources
def ownerName = ""
def map = [:]

while (team.hasNext())
{
def member = team.next()

ownerName = member.Part

map.put ('OwnerName',owne
}
println ("" + map)
return ownerName
80 80
18 18
0 0
80 80
20 20
500 500
80 80
14 14
0 0 ''+AssetId
80 80
10 10
80 80
12 12
18 18
80 80
80 80
80 80
80 80
80 80
80 80
10 10
1500 1500
80 80
0 0 AccountNameTransientForLO
1500 1500
80 80
0 0
80 80
10 10
80 80
80 80
1500 1500

tilla de carga o integración.')

anged('AssetAmount') ||
tunidad_Id_c')){
vicio_c)
TATUS DEL SERVICIO: '+ statusServicio)
ryOrgId||TipoDeIdentificacion_c||Identificacion_c||CustomerId||
activacion_c||Estado_c||MotivoEstado_c||PurchaseDate||
estatus ACTIVO y área MASIVO'+salto+
Comercial_c)

e)
al)

mal)
mporales_c,0 as BigDecimal)
osTemporales_c,0 as BigDecimal)
Decimal)

osTemporales)

retadosTemporales)
adosTemporales != 0){

osTemporales)

= 0){

oncretadosTemporales != 0){

cretadosTemporales)

ression

le.apps.crmCommon.extensibility.content.adf.data.util.ExtensibilityGro
urn false;

urn true;

le.apps.crmCommon.extensibility.content.adf.data.util.ExtensibilityGro
urn false;

urn true;

le.apps.crmCommon.extensibility.content.adf.data.util.ExtensibilityGro
urn false;
tatusServicio_c == 'ACTIVO'){
rn true}
Object Name : Bitacora_c
Object Name Bitacora_c
Object Display Name Plural Logs de Proceso
Object Type Custom
Application Name CRM
Table Name SVC_REF_ENTITIES
Record Name Sequence {000000000000}
Total number of custom fields
Total number of modified Standard fields
Total number of Triggers
Total number of Object Functions
Total number of Object Workflows
Total number of Validations
Total number of Dynamic Layouts

Custom Fields
Name Display Name Type Column Name
RecordName Autonum OOTB RECORD_NAME
CreationDate Fecha de Creación OOTB CREATION_DATE
Payload_c Payload Clob EXTN_ATTRIBUTE_CLOB002
Cuenta_c Cuenta DCL

Integracion_c Integración FCL EXTN_ATTRIBUTE_CHAR008


ConsultaScore_c Consulta Score DCL

CurrencyCode Currency Code FCL CURRENCY_CODE


FechaLog_c Fecha Log Datetime EXTN_ATTRIBUTE_TIMESTAMP001
Response_c Response Clob EXTN_ATTRIBUTE_CLOB003
Contacto_Id_c Contacto DCLForeignKey EXTN_ATTRIBUTE_NUMBER005
Timestamp_c Timestamp Number EXTN_ATTRIBUTE_NUMBER006
IdPrincipal_c Id Principal de Integración Text EXTN_ATTRIBUTE_CHAR007
Cuenta_Id1_c Cuenta DCLForeignKey EXTN_ATTRIBUTE_NUMBER003
LastUpdatedBy Actualizado por OOTB LAST_UPDATED_BY
CreatedBy Creado por OOTB CREATED_BY
OraZcxOwner_c Owner DCL

ConsultaScore_Id_c Consulta Score DCLForeignKey EXTN_ATTRIBUTE_NUMBER010


Oportunidad_Id_c Oportunidad DCLForeignKey EXTN_ATTRIBUTE_NUMBER001
MensajeIntegracion_c Mensaje de Integración Clob EXTN_ATTRIBUTE_CLOB001
Oportunidad_c Oportunidad DCL

OraZcxOwner_Id_c Owner DCLForeignKey OWNER_RESOURCE_ID


Cuenta_Id_c Cuenta DCLForeignKey EXTN_ATTRIBUTE_NUMBER002
Id Identificador de Registro OOTB ID
Contacto_c Contacto DCL

RecordNumber Record Number OOTB RECORD_NUMBER


LastUpdateDate Fecha de Última Actualización OOTB LAST_UPDATE_DATE

Triggers
Name Type Trigger PointDescription Error Message
fechaLog Object Trigger Create

Validations
Name Type Error Message
Rule1 Field Validation
Field Name : OraZcxOwner_Id_c
Rule1 Field Validation
Field Name : Oportunidad_Id_c
Rule1 Field Validation
Field Name : Cuenta_Id_c
Rule1 Field Validation
Field Name : Cuenta_Id1_c
Rule1 Field Validation
Field Name : Contacto_Id_c
Rule1 Field Validation
Field Name : ConsultaScore_Id_c

Object Workflows
Name Definition Name Event Point Description
Bitacora_c_Standard_Create Create

Bitacora_c_Standard_Delete Delete

Bitacora_c_Standard_Updat Update
e
Bitacora_c
Logs de Proceso
Custom
CRM
SVC_REF_ENTITIES
{000000000000}
26
0
1
0
3
6
0

umn Name Default Value Required Updatable Searchable REST Enabl


ORD_NAME Yes Yes Yes Yes
ATION_DATE Yes No Yes Yes
N_ATTRIBUTE_CLOB002 No Yes No Yes
No Yes No Yes
N_ATTRIBUTE_CHAR008 Yes Yes No Yes
No Yes No Yes
RENCY_CODE No Yes Yes Yes
N_ATTRIBUTE_TIMESTAMP001 No Yes No Yes
N_ATTRIBUTE_CLOB003 No Yes No Yes
N_ATTRIBUTE_NUMBER005 No Yes No Yes
N_ATTRIBUTE_NUMBER006 Yes Yes Yes Yes
N_ATTRIBUTE_CHAR007 Yes Yes Yes Yes
N_ATTRIBUTE_NUMBER003 No Yes No Yes
T_UPDATED_BY Yes Yes Yes Yes
ATED_BY Yes No Yes Yes
Yes Yes No Yes
N_ATTRIBUTE_NUMBER010 No Yes No Yes
N_ATTRIBUTE_NUMBER001 No Yes No Yes
N_ATTRIBUTE_CLOB001 No Yes No Yes
No Yes No Yes
NER_RESOURCE_ID Yes Yes Yes Yes
N_ATTRIBUTE_NUMBER002 No Yes No Yes
Yes No Yes Yes
No Yes No Yes
ORD_NUMBER Yes No Yes Yes
T_UPDATE_DATE Yes Yes Yes Yes

Expression
def now=now()
setAttribute('FechaLog_c',now)
setAttribute('Timestamp_c',now.time)

Expression
adf.source.isLookupIdValid('OraZcxOwner_Id_c',newValue)

adf.source.isLookupIdValid('Oportunidad_Id_c',newValue)

adf.source.isLookupIdValid('Cuenta_Id_c',newValue)

adf.source.isLookupIdValid('Cuenta_Id1_c',newValue)

adf.source.isLookupIdValid('Contacto_Id_c',newValue)

adf.source.isLookupIdValid('ConsultaScore_Id_c',newValue)

ption Disabled Actions Expression


No return
(oracle.apps.fnd.applcore.Profile.ge
No return
(oracle.apps.fnd.applcore.Profile.ge
No return
(oracle.apps.fnd.applcore.Profile.ge
Precision MaxLength Expression
80 80
0 0
32714 32714
1500 1500
1500 1500
1500 1500
15 15
0 0
32714 32714
18 18
20 20
80 80
18 18
64 64
64 64
1500 1500
18 18
18 18
32714 32714
1500 1500
18 18
18 18
32 32
1500 1500
64 64
0 0

ression
rn
cle.apps.fnd.applcore.Profile.get('ZCX_CUSTOM_OBJECT_EVENTS') ==
rn
cle.apps.fnd.applcore.Profile.get('ZCX_CUSTOM_OBJECT_EVENTS') ==
rn
cle.apps.fnd.applcore.Profile.get('ZCX_CUSTOM_OBJECT_EVENTS') ==
Object Name : Bucket_c
Object Name Bucket_c
Object Display Name Plural Bucket
Object Type Custom
Application Name CRM
Table Name HZ_REF_ENTITIES
Total number of custom fields
Total number of modified Standard fields
Total number of Triggers
Total number of Object Functions
Total number of Object Workflows
Total number of Validations
Total number of Dynamic Layouts

Custom Fields
Name Display Name Type Column Name
RecordName Código OOTB RECORD_NAME
CreationDate Fecha de Creación OOTB CREATION_DATE
CodigoPostal_Id_c Código Postal DCLForeignKey EXTN_ATTRIBUTE_NUMBER002
CodigoPostal_c Código Postal DCL

CurrencyCode Currency Code FCL CURRENCY_CODE


LastUpdatedBy Actualizado por OOTB LAST_UPDATED_BY
CreatedBy Creado por OOTB CREATED_BY
OraZcxOwner_c Owner DCL

Oportunidad_Id_c Oportunidad DCLForeignKey EXTN_ATTRIBUTE_NUMBER001


Descripcion_c Descripción Text EXTN_ATTRIBUTE_CHAR008
Oportunidad_c Oportunidad DCL

Activo_c Activo Checkbox EXTN_ATTRIBUTE_CHAR007


OraZcxOwner_Id_c Owner DCLForeignKey OWNER_RESOURCE_ID
Id Identificador de Registro OOTB ID
RecordNumber Record Number OOTB RECORD_NUMBER
LastUpdateDate Fecha de Última Actualización OOTB LAST_UPDATE_DATE

Validations
Name Type Error Message
Rule1 Field Validation
Field Name : OraZcxOwner_Id_c
Rule1 Field Validation
Field Name : Oportunidad_Id_c
Rule1 Field Validation
Field Name : CodigoPostal_Id_c
Object Workflows
Name Definition Name Event Point Description
Bucket_c_Standard_Delete Delete

Bucket_c_Standard_Create Create

Bucket_c_Standard_Update Update
Bucket_c
Bucket
Custom
CRM
HZ_REF_ENTITIES
16
0
0
0
3
3
0

umn Name Default Value Required Updatable Searchable REST Enabl


ORD_NAME Yes Yes Yes Yes
ATION_DATE Yes No Yes Yes
N_ATTRIBUTE_NUMBER002 No Yes Yes Yes
No Yes No Yes
RENCY_CODE No Yes Yes Yes
T_UPDATED_BY Yes Yes Yes Yes
ATED_BY Yes No Yes Yes
Yes Yes No Yes
N_ATTRIBUTE_NUMBER001 No Yes Yes Yes
N_ATTRIBUTE_CHAR008 Yes Yes Yes Yes
No Yes No Yes
N_ATTRIBUTE_CHAR007 N Yes Yes Yes Yes
NER_RESOURCE_ID Yes Yes Yes Yes
Yes No Yes Yes
ORD_NUMBER Yes No Yes Yes
T_UPDATE_DATE Yes Yes Yes Yes

Expression
adf.source.isLookupIdValid('OraZcxOwner_Id_c',newValue)

adf.source.isLookupIdValid('Oportunidad_Id_c',newValue)

adf.source.isLookupIdValid('CodigoPostal_Id_c',newValue)
ption Disabled Actions Expression
No return
(oracle.apps.fnd.applcore.Profile.ge
No return
(oracle.apps.fnd.applcore.Profile.ge
No return
(oracle.apps.fnd.applcore.Profile.ge
Precision MaxLength Expression
80 80
0 0
18 18
1500 1500
15 15
64 64
64 64
1500 1500
18 18
200 200
1500 1500
10 10
18 18
32 32
64 64
0 0
ression
rn
cle.apps.fnd.applcore.Profile.get('ZCX_CUSTOM_OBJECT_EVENTS') ==
rn
cle.apps.fnd.applcore.Profile.get('ZCX_CUSTOM_OBJECT_EVENTS') ==
rn
cle.apps.fnd.applcore.Profile.get('ZCX_CUSTOM_OBJECT_EVENTS') ==
Object Name : Canal_c
Object Name Canal_c
Object Display Name Plural Canales
Object Type Custom
Application Name CRM
Table Name MOO_REF_ENTITIES
Total number of custom fields
Total number of modified Standard fields
Total number of Triggers
Total number of Object Functions
Total number of Object Workflows
Total number of Validations
Total number of Dynamic Layouts

Custom Fields
Name Display Name Type Column Name
RecordName Código OOTB RECORD_NAME
CreationDate Fecha de Creación OOTB CREATION_DATE
Corporativo_c Corporativo Checkbox EXTN_ATTRIBUTE_CHAR008
CurrencyCode Currency Code FCL CURRENCY_CODE
Masivo_c Masivo Checkbox EXTN_ATTRIBUTE_CHAR009
LastUpdatedBy Actualizado por OOTB LAST_UPDATED_BY
CreatedBy Creado por OOTB CREATED_BY
OraZcxOwner_c Owner DCL

Activo_c Activo Checkbox EXTN_ATTRIBUTE_CHAR010


OraZcxOwner_Id_c Owner DCLForeignKey OWNER_RESOURCE_ID
Id Identificador de Registro OOTB ID
Canal_c Canal Text EXTN_ATTRIBUTE_CHAR007
RecordNumber Record Number OOTB RECORD_NUMBER
Id_c Id Number Formula

LastUpdateDate Fecha de Última Actualización OOTB LAST_UPDATE_DATE

Validations
Name Type Error Message
Rule1 Field Validation
Field Name : OraZcxOwner_Id_c

Object Workflows
Name Definition Name Event Point Description
Canal_c_Standard_Create Create

Canal_c_Standard_Delete Delete
Canal_c_Standard_Delete Delete

Canal_c_Standard_Update Update

Dynamic Layouts
Layout Name Active Role
Punto Net Origen Yes
Canal_c
Canales
Custom
CRM
MOO_REF_ENTITIES
15
0
0
0
3
1
1

umn Name Default Value Required Updatable Searchable REST Enabl


ORD_NAME Yes Yes Yes Yes
ATION_DATE Yes No Yes Yes
N_ATTRIBUTE_CHAR008 N Yes Yes Yes Yes
RENCY_CODE No Yes Yes Yes
N_ATTRIBUTE_CHAR009 N Yes Yes Yes Yes
T_UPDATED_BY Yes Yes Yes Yes
ATED_BY Yes No Yes Yes
Yes Yes No Yes
N_ATTRIBUTE_CHAR010 Y Yes Yes Yes Yes
NER_RESOURCE_ID Yes Yes Yes Yes
Yes No Yes Yes
N_ATTRIBUTE_CHAR007 Yes Yes Yes Yes
ORD_NUMBER Yes No Yes Yes
No No No Yes
T_UPDATE_DATE Yes Yes Yes Yes

Expression
adf.source.isLookupIdValid('OraZcxOwner_Id_c',newValue)

ption Disabled Actions Expression


No return
(oracle.apps.fnd.applcore.Profile.ge
No return
(oracle.apps.fnd.applcore.Profile.ge
No

No return
(oracle.apps.fnd.applcore.Profile.ge

Record Type Advanced Expression


Precision MaxLength Expression
80 80
0 0
10 10
15 15
10 10
64 64
64 64
1500 1500
10 10
18 18
32 32
80 80
64 64
0 0 Id
0 0

ression
rn
cle.apps.fnd.applcore.Profile.get('ZCX_CUSTOM_OBJECT_EVENTS') ==
rn
cle.apps.fnd.applcore.Profile.get('ZCX_CUSTOM_OBJECT_EVENTS') ==
rn
cle.apps.fnd.applcore.Profile.get('ZCX_CUSTOM_OBJECT_EVENTS') ==
Object Name : Cantidad_c
Object Name Cantidad_c
Object Display Name Plural Cantidades
Object Type Custom
Application Name CRM
Table Name MKT_REF_ENTITIES
Total number of custom fields
Total number of modified Standard fields
Total number of Triggers
Total number of Object Functions
Total number of Object Workflows
Total number of Validations
Total number of Dynamic Layouts

Custom Fields
Name Display Name Type Column Name
RecordName Código OOTB RECORD_NAME
CreationDate Fecha de Creación OOTB CREATION_DATE
CurrencyCode Currency Code FCL CURRENCY_CODE
PromocionOServicio_Id_c Promoción o servicio DCLForeignKey EXTN_ATTRIBUTE_NUMBER001
LastUpdatedBy Actualizado por OOTB LAST_UPDATED_BY
CreatedBy Creado por OOTB CREATED_BY
PromocionOServicio_c Promoción o servicio DCL

OraZcxOwner_c Owner DCL

Descripcion_c Descripción Text EXTN_ATTRIBUTE_CHAR007


Cantidad_c Cantidad Number EXTN_ATTRIBUTE_NUMBER006
Activo_c Activo Checkbox EXTN_ATTRIBUTE_CHAR008
OraZcxOwner_Id_c Owner DCLForeignKey OWNER_RESOURCE_ID
Id Identificador de Registro OOTB ID
RecordNumber Record Number OOTB RECORD_NUMBER
LastUpdateDate Fecha de Última Actualización OOTB LAST_UPDATE_DATE

Validations
Name Type Error Message
Rule1 Field Validation
Field Name : OraZcxOwner_Id_c
Rule1 Field Validation
Field Name : PromocionOServicio_Id_c

Object Workflows
Name Definition Name Event Point Description
Cantidad_c_Standard_Creat Create
e
Cantidad_c_Standard_Creat Create
e
Cantidad_c_Standard_Delet Delete
e
Cantidad_c_Standard_Updat Update
e
Cantidad_c
Cantidades
Custom
CRM
MKT_REF_ENTITIES
15
0
0
0
3
2
0

umn Name Default Value Required Updatable Searchable REST Enabl


ORD_NAME Yes Yes Yes Yes
ATION_DATE Yes No Yes Yes
RENCY_CODE No Yes Yes Yes
N_ATTRIBUTE_NUMBER001 Yes Yes Yes Yes
T_UPDATED_BY Yes Yes Yes Yes
ATED_BY Yes No Yes Yes
Yes Yes No Yes
Yes Yes No Yes
N_ATTRIBUTE_CHAR007 No Yes Yes Yes
N_ATTRIBUTE_NUMBER006 Yes Yes Yes Yes
N_ATTRIBUTE_CHAR008 N Yes Yes Yes Yes
NER_RESOURCE_ID Yes Yes Yes Yes
Yes No Yes Yes
ORD_NUMBER Yes No Yes Yes
T_UPDATE_DATE Yes Yes Yes Yes

Expression
adf.source.isLookupIdValid('OraZcxOwner_Id_c',newValue)

adf.source.isLookupIdValid('PromocionOServicio_Id_c',newValue)

ption Disabled Actions Expression


No return
(oracle.apps.fnd.applcore.Profile.ge
No

No return
(oracle.apps.fnd.applcore.Profile.ge
No return
(oracle.apps.fnd.applcore.Profile.ge
Precision MaxLength Expression
80 80
0 0
15 15
18 18
64 64
64 64
1500 1500
1500 1500
200 200
10 10
10 10
18 18
32 32
64 64
0 0

ression
rn
cle.apps.fnd.applcore.Profile.get('ZCX_CUSTOM_OBJECT_EVENTS') ==
rn
cle.apps.fnd.applcore.Profile.get('ZCX_CUSTOM_OBJECT_EVENTS') ==
rn
cle.apps.fnd.applcore.Profile.get('ZCX_CUSTOM_OBJECT_EVENTS') ==
Object Name : CatalogoCIIU_c
Object Name CatalogoCIIU_c
Object Display Name Plural Catálogo CIIU
Object Type Custom
Application Name CRM
Table Name HZ_REF_ENTITIES
Record Name Sequence {0000000000}
Total number of custom fields
Total number of modified Standard fields
Total number of Triggers
Total number of Object Functions
Total number of Object Workflows
Total number of Validations
Total number of Dynamic Layouts

Custom Fields
Name Display Name Type Column Name
RecordName RUC OOTB RECORD_NAME
CreationDate Fecha de Creación OOTB CREATION_DATE
ActividadEconomicaFormula_c Actividad Económica Text Formula

ActualizarInformacionCIIU_c Actualizar Información CIIU Text EXTN_ATTRIBUTE_CHAR014


CurrencyCode Currency Code FCL CURRENCY_CODE
SectorCIIU_c Sector CIIU FCL EXTN_ATTRIBUTE_CHAR023
LastUpdatedBy Actualizado por OOTB LAST_UPDATED_BY
CreatedBy Creado por OOTB CREATED_BY
OraZcxOwner_c Owner DCL

OraZcxOwner_Id_c Owner DCLForeignKey OWNER_RESOURCE_ID


Sector_c Sector Text EXTN_ATTRIBUTE_CHAR012
ActividadEconomicaDin_c Actividad Económica DCL

Id Identificador de Registro OOTB ID


RecordNumber RUC OOTB RECORD_NUMBER
CantidadEmpleados_c Cantidad Empleados Text EXTN_ATTRIBUTE_CHAR013
ExisteEnCatalogoCIIU_c Existe en catálogo CIIU Text EXTN_ATTRIBUTE_CHAR007
NombreEnCatalogoCIIU_c Nombre en Catálogo CIIU Text EXTN_ATTRIBUTE_CHAR008
Sectorl_c Sector FCL EXTN_ATTRIBUTE_CHAR022
RazonSocial_c Razon Social Text EXTN_ATTRIBUTE_CHAR021
Ciudad_c Ciudad Text EXTN_ATTRIBUTE_CHAR010
Tamano_c Tamaño Text EXTN_ATTRIBUTE_CHAR011
RUC_c RUC Text EXTN_ATTRIBUTE_CHAR020
ActividadEconomicaDin_Id_c Actividad Económica DCLForeignKey EXTN_ATTRIBUTE_NUMBER001
ActividadEconomica_c Actividad Económica Text EXTN_ATTRIBUTE_CHAR009
LastUpdateDate Fecha de Última Actualización OOTB LAST_UPDATE_DATE
Validations
Name Type Error Message
Rule1 Field Validation
Field Name : OraZcxOwner_Id_c
Rule1 Field Validation
Field Name :
ActividadEconomicaDin_Id_c

Object Workflows
Name Definition Name Event Point Description
CatalogoCIIU_c_Standard_U Update
pdate
CatalogoCIIU_c_Standard_C Create
reate
CatalogoCIIU_c_Standard_D Delete
elete

Dynamic Layouts
Layout Name Active Role
PTN Corporativo Yes USUARIO_CORPORATIVO;
PTN Detalle Yes
Detalles Administrador Yes
CatalogoCIIU_c
Catálogo CIIU
Custom
CRM
HZ_REF_ENTITIES
{0000000000}
25
0
0
0
3
2
3

umn Name Default Value Required Updatable Searchable REST Enabl


ORD_NAME Yes Yes Yes Yes
ATION_DATE Yes No Yes Yes
No No No Yes
N_ATTRIBUTE_CHAR014 No Yes No Yes
RENCY_CODE No Yes Yes Yes
N_ATTRIBUTE_CHAR023 No Yes No Yes
T_UPDATED_BY Yes Yes Yes Yes
ATED_BY Yes No Yes Yes
Yes Yes No Yes
NER_RESOURCE_ID Yes Yes Yes Yes
N_ATTRIBUTE_CHAR012 No Yes No Yes
Yes Yes No Yes
Yes No Yes Yes
ORD_NUMBER Yes No Yes Yes
N_ATTRIBUTE_CHAR013 No Yes No Yes
N_ATTRIBUTE_CHAR007 No Yes No Yes
N_ATTRIBUTE_CHAR008 No Yes No Yes
N_ATTRIBUTE_CHAR022 No Yes Yes Yes
N_ATTRIBUTE_CHAR021 Yes Yes No Yes
N_ATTRIBUTE_CHAR010 No Yes No Yes
N_ATTRIBUTE_CHAR011 No Yes No Yes
N_ATTRIBUTE_CHAR020 No Yes Yes Yes
N_ATTRIBUTE_NUMBER001 Yes Yes No Yes
N_ATTRIBUTE_CHAR009 No Yes No Yes
T_UPDATE_DATE Yes Yes Yes Yes
Expression
adf.source.isLookupIdValid('OraZcxOwner_Id_c',newValue)

adf.source.isLookupIdValid('ActividadEconomicaDin_Id_c',newValue)

ption Disabled Actions Expression


No return
(oracle.apps.fnd.applcore.Profile.ge
No return
(oracle.apps.fnd.applcore.Profile.ge
No return
(oracle.apps.fnd.applcore.Profile.ge

Record Type Advanced Expression


Precision MaxLength Expression
80 80
0 0
0 0 return ActividadEconomicaDin
80 80
15 15
1500 1500
64 64
64 64
1500 1500
18 18
80 80
1500 1500
32 32
64 64
80 80
80 80
80 80
1500 1500
500 500
80 80
80 80
80 80
18 18
80 80
0 0
ression
rn
cle.apps.fnd.applcore.Profile.get('ZCX_CUSTOM_OBJECT_EVENTS') ==
rn
cle.apps.fnd.applcore.Profile.get('ZCX_CUSTOM_OBJECT_EVENTS') ==
rn
cle.apps.fnd.applcore.Profile.get('ZCX_CUSTOM_OBJECT_EVENTS') ==
Object Name : ClienteNetplus_c
Object Name ClienteNetplus_c
Object Display Name Plural Clientes Netplus
Object Type Custom
Application Name CRM
Table Name MKT_REF_ENTITIES
Total number of custom fields
Total number of modified Standard fields
Total number of Triggers
Total number of Object Functions
Total number of Object Workflows
Total number of Validations
Total number of Dynamic Layouts

Custom Fields
Name Display Name Type Column Name
RecordName Id Netplus OOTB RECORD_NAME
CreationDate Fecha de Creación OOTB CREATION_DATE
Cuenta_c Cuenta DCL

CurrencyCode Currency Code FCL CURRENCY_CODE


Contacto_Id_c Contacto DCLForeignKey EXTN_ATTRIBUTE_NUMBER001
TipoDeDocumento_c Tipo de Documento FCL EXTN_ATTRIBUTE_CHAR010
LastUpdatedBy Actualizado por OOTB LAST_UPDATED_BY
CreatedBy Creado por OOTB CREATED_BY
OraZcxOwner_c Owner DCL

Oportunidad_Id_c Oportunidad DCLForeignKey EXTN_ATTRIBUTE_NUMBER003


NumeroDeDocumento_c Número de Documento Text EXTN_ATTRIBUTE_CHAR009
Oportunidad_c Oportunidad DCL

OraZcxOwner_Id_c Owner DCLForeignKey OWNER_RESOURCE_ID


Cuenta_Id_c Cuenta DCLForeignKey EXTN_ATTRIBUTE_NUMBER002
Id Identificador de Registro OOTB ID
Contacto_c Contacto DCL

RecordNumber Record Number OOTB RECORD_NUMBER


LastUpdateDate Fecha de Última Actualización OOTB LAST_UPDATE_DATE

Validations
Name Type Error Message
Rule1 Field Validation
Field Name : OraZcxOwner_Id_c
Rule1 Field Validation
Field Name : Contacto_Id_c
Rule1 Field Validation
Rule1
Field Name : Cuenta_Id_c
Rule1 Field Validation
Field Name : Oportunidad_Id_c

Object Workflows
Name Definition Name Event Point Description
ClienteNetplus_c_Standard_ Update
Update
ClienteNetplus_c_Standard_ Create
Create
ClienteNetplus_c_Standard_ Delete
Delete
ClienteNetplus_c
Clientes Netplus
Custom
CRM
MKT_REF_ENTITIES
18
0
0
0
3
4
0

umn Name Default Value Required Updatable Searchable REST Enabl


ORD_NAME Yes Yes Yes Yes
ATION_DATE Yes No Yes Yes
No Yes No Yes
RENCY_CODE No Yes Yes Yes
N_ATTRIBUTE_NUMBER001 No Yes Yes Yes
N_ATTRIBUTE_CHAR010 No Yes No Yes
T_UPDATED_BY Yes Yes Yes Yes
ATED_BY Yes No Yes Yes
Yes Yes No Yes
N_ATTRIBUTE_NUMBER003 No Yes No Yes
N_ATTRIBUTE_CHAR009 No Yes Yes Yes
No Yes No Yes
NER_RESOURCE_ID Yes Yes Yes Yes
N_ATTRIBUTE_NUMBER002 No Yes Yes Yes
Yes No Yes Yes
No Yes No Yes
ORD_NUMBER Yes No Yes Yes
T_UPDATE_DATE Yes Yes Yes Yes

Expression
adf.source.isLookupIdValid('OraZcxOwner_Id_c',newValue)

adf.source.isLookupIdValid('Contacto_Id_c',newValue)

adf.source.isLookupIdValid('Cuenta_Id_c',newValue)
adf.source.isLookupIdValid('Cuenta_Id_c',newValue)

adf.source.isLookupIdValid('Oportunidad_Id_c',newValue)

ption Disabled Actions Expression


No return
(oracle.apps.fnd.applcore.Profile.ge
No return
(oracle.apps.fnd.applcore.Profile.ge
No return
(oracle.apps.fnd.applcore.Profile.ge
Precision MaxLength Expression
80 80
0 0
1500 1500
15 15
18 18
1500 1500
64 64
64 64
1500 1500
18 18
80 80
1500 1500
18 18
18 18
32 32
1500 1500
64 64
0 0
ression
rn
cle.apps.fnd.applcore.Profile.get('ZCX_CUSTOM_OBJECT_EVENTS') ==
rn
cle.apps.fnd.applcore.Profile.get('ZCX_CUSTOM_OBJECT_EVENTS') ==
rn
cle.apps.fnd.applcore.Profile.get('ZCX_CUSTOM_OBJECT_EVENTS') ==
Object Name : CodigoPostal_c
Object Name CodigoPostal_c
Object Display Name Plural Codigo postal
Object Type Custom
Application Name CRM
Table Name MOT_REF_ENTITIES
Total number of custom fields
Total number of modified Standard fields
Total number of Triggers
Total number of Object Functions
Total number of Object Workflows
Total number of Validations
Total number of Dynamic Layouts

Custom Fields
Name Display Name Type Column Name
RecordName Código OOTB RECORD_NAME
CreationDate Fecha de Creación OOTB CREATION_DATE
CurrencyCode Currency Code FCL CURRENCY_CODE
LastUpdatedBy Actualizado por OOTB LAST_UPDATED_BY
CreatedBy Creado por OOTB CREATED_BY
OraZcxOwner_c Owner DCL

Bucket_c Bucket DCL

Oportunidad_Id_c Oportunidad DCLForeignKey EXTN_ATTRIBUTE_NUMBER002


Descripcion_c Descripción Text EXTN_ATTRIBUTE_CHAR008
Oportunidad_c Oportunidad DCL

Activo_c Activo Checkbox EXTN_ATTRIBUTE_CHAR007


OraZcxOwner_Id_c Owner DCLForeignKey OWNER_RESOURCE_ID
Bucket_Id_c Bucket DCLForeignKey EXTN_ATTRIBUTE_NUMBER001
Id Identificador de Registro OOTB ID
RecordNumber Record Number OOTB RECORD_NUMBER
LastUpdateDate Fecha de Última Actualización OOTB LAST_UPDATE_DATE

Validations
Name Type Error Message
Rule1 Field Validation
Field Name : OraZcxOwner_Id_c
Rule1 Field Validation
Field Name : Bucket_Id_c
Rule1 Field Validation
Field Name : Oportunidad_Id_c
Object Workflows
Name Definition Name Event Point Description
CodigoPostal_c_Standard_C Create
reate
CodigoPostal_c_Standard_D Delete
elete
CodigoPostal_c_Standard_U Update
pdate
CodigoPostal_c
Codigo postal
Custom
CRM
MOT_REF_ENTITIES
16
0
0
0
3
3
0

umn Name Default Value Required Updatable Searchable REST Enabl


ORD_NAME Yes Yes Yes Yes
ATION_DATE Yes No Yes Yes
RENCY_CODE No Yes Yes Yes
T_UPDATED_BY Yes Yes Yes Yes
ATED_BY Yes No Yes Yes
Yes Yes No Yes
No Yes No Yes
N_ATTRIBUTE_NUMBER002 No Yes Yes Yes
N_ATTRIBUTE_CHAR008 Yes Yes Yes Yes
No Yes No Yes
N_ATTRIBUTE_CHAR007 N Yes Yes Yes Yes
NER_RESOURCE_ID Yes Yes Yes Yes
N_ATTRIBUTE_NUMBER001 No Yes Yes Yes
Yes No Yes Yes
ORD_NUMBER Yes No Yes Yes
T_UPDATE_DATE Yes Yes Yes Yes

Expression
adf.source.isLookupIdValid('OraZcxOwner_Id_c',newValue)

adf.source.isLookupIdValid('Bucket_Id_c',newValue)

adf.source.isLookupIdValid('Oportunidad_Id_c',newValue)
ption Disabled Actions Expression
No return
(oracle.apps.fnd.applcore.Profile.ge
No return
(oracle.apps.fnd.applcore.Profile.ge
No return
(oracle.apps.fnd.applcore.Profile.ge
Precision MaxLength Expression
80 80
0 0
15 15
64 64
64 64
1500 1500
1500 1500
18 18
200 200
1500 1500
10 10
18 18
18 18
32 32
64 64
0 0
ression
rn
cle.apps.fnd.applcore.Profile.get('ZCX_CUSTOM_OBJECT_EVENTS') ==
rn
cle.apps.fnd.applcore.Profile.get('ZCX_CUSTOM_OBJECT_EVENTS') ==
rn
cle.apps.fnd.applcore.Profile.get('ZCX_CUSTOM_OBJECT_EVENTS') ==
Object Name : ColorDeHilo_c
Object Name ColorDeHilo_c
Object Display Name Plural Color de hilo
Object Type Custom
Application Name CRM
Table Name ZCA_REF_ENTITIES
Total number of custom fields
Total number of modified Standard fields
Total number of Triggers
Total number of Object Functions
Total number of Object Workflows
Total number of Validations
Total number of Dynamic Layouts

Custom Fields
Name Display Name Type Column Name
RecordName Código OOTB RECORD_NAME
CreationDate Fecha de Creación OOTB CREATION_DATE
CurrencyCode Currency Code FCL CURRENCY_CODE
LastUpdatedBy Actualizado por OOTB LAST_UPDATED_BY
CreatedBy Creado por OOTB CREATED_BY
OraZcxOwner_c Owner DCL

Oportunidad_Id_c Oportunidad DCLForeignKey EXTN_ATTRIBUTE_NUMBER001


GrupoDeHilo_Id_c Grupo de hilo DCLForeignKey EXTN_ATTRIBUTE_NUMBER002
Descripcion_c Descripción Text EXTN_ATTRIBUTE_CHAR007
GrupoDeHilo_c Grupo de hilo DCL

Oportunidad_c Oportunidad DCL

Activo_c Activo Checkbox EXTN_ATTRIBUTE_CHAR008


OraZcxOwner_Id_c Owner DCLForeignKey OWNER_RESOURCE_ID
Id Identificador de Registro OOTB ID
RecordNumber Record Number OOTB RECORD_NUMBER
LastUpdateDate Fecha de Última Actualización OOTB LAST_UPDATE_DATE

Validations
Name Type Error Message
Rule1 Field Validation
Field Name : OraZcxOwner_Id_c
Rule1 Field Validation
Field Name : Oportunidad_Id_c
Rule1 Field Validation
Field Name : GrupoDeHilo_Id_c
Object Workflows
Name Definition Name Event Point Description
ColorDeHilo_c_Standard_Cr Create
eate
ColorDeHilo_c_Standard_De Delete
lete
ColorDeHilo_c_Standard_Up Update
date
ColorDeHilo_c
Color de hilo
Custom
CRM
ZCA_REF_ENTITIES
16
0
0
0
3
3
0

umn Name Default Value Required Updatable Searchable REST Enabl


ORD_NAME Yes Yes Yes Yes
ATION_DATE Yes No Yes Yes
RENCY_CODE No Yes Yes Yes
T_UPDATED_BY Yes Yes Yes Yes
ATED_BY Yes No Yes Yes
Yes Yes No Yes
N_ATTRIBUTE_NUMBER001 Yes Yes Yes Yes
N_ATTRIBUTE_NUMBER002 Yes Yes Yes Yes
N_ATTRIBUTE_CHAR007 Yes Yes Yes Yes
Yes Yes No Yes
Yes Yes No Yes
N_ATTRIBUTE_CHAR008 N Yes Yes Yes Yes
NER_RESOURCE_ID Yes Yes Yes Yes
Yes No Yes Yes
ORD_NUMBER Yes No Yes Yes
T_UPDATE_DATE Yes Yes Yes Yes

Expression
adf.source.isLookupIdValid('OraZcxOwner_Id_c',newValue)

adf.source.isLookupIdValid('Oportunidad_Id_c',newValue)

adf.source.isLookupIdValid('GrupoDeHilo_Id_c',newValue)
ption Disabled Actions Expression
No return
(oracle.apps.fnd.applcore.Profile.ge
No return
(oracle.apps.fnd.applcore.Profile.ge
No return
(oracle.apps.fnd.applcore.Profile.ge
Precision MaxLength Expression
80 80
0 0
15 15
64 64
64 64
1500 1500
18 18
18 18
200 200
1500 1500
1500 1500
10 10
18 18
32 32
64 64
0 0
ression
rn
cle.apps.fnd.applcore.Profile.get('ZCX_CUSTOM_OBJECT_EVENTS') ==
rn
cle.apps.fnd.applcore.Profile.get('ZCX_CUSTOM_OBJECT_EVENTS') ==
rn
cle.apps.fnd.applcore.Profile.get('ZCX_CUSTOM_OBJECT_EVENTS') ==
Object Name : Descuento_c
Object Name Descuento_c
Object Display Name Plural Descuento
Object Type Custom
Application Name CRM
Table Name SVC_REF_ENTITIES
Total number of custom fields
Total number of modified Standard fields
Total number of Triggers
Total number of Object Functions
Total number of Object Workflows
Total number of Validations
Total number of Dynamic Layouts

Custom Fields
Name Display Name Type Column Name
RecordName Código OOTB RECORD_NAME
CreationDate Fecha de Creación OOTB CREATION_DATE
Cada_c Cada Number EXTN_ATTRIBUTE_NUMBER007
Diferir_c Diferir DCL

CurrencyCode Currency Code FCL CURRENCY_CODE


PromocionOservicio_c Promoción o servicio DCL

Porcentaje_c Porcentaje Percentage EXTN_ATTRIBUTE_NUMBER008


Hasta_c Hasta Number EXTN_ATTRIBUTE_NUMBER006
PromocionOservicio_Id_c Promoción o servicio DCLForeignKey EXTN_ATTRIBUTE_NUMBER001
LastUpdatedBy Actualizado por OOTB LAST_UPDATED_BY
PromocionDescuento_Id_c Promocion descuento DCLForeignKey EXTN_ATTRIBUTE_NUMBER004
CreatedBy Creado por OOTB CREATED_BY
OraZcxOwner_c Owner DCL

PromocionDescuento_c Promocion descuento DCL

Oportunidad_Id_c Oportunidad DCLForeignKey EXTN_ATTRIBUTE_NUMBER002


Descripcion_c Descripción Text EXTN_ATTRIBUTE_CHAR007
Oportunidad_c Oportunidad DCL

Activo_c Activo Checkbox EXTN_ATTRIBUTE_CHAR008


OraZcxOwner_Id_c Owner DCLForeignKey OWNER_RESOURCE_ID
Id Identificador de Registro OOTB ID
RecordNumber Record Number OOTB RECORD_NUMBER
Diferir_Id_c Diferir DCLForeignKey EXTN_ATTRIBUTE_NUMBER003
LastUpdateDate Fecha de Última Actualización OOTB LAST_UPDATE_DATE

Validations
Name Type Error Message
Rule1 Field Validation
Field Name : OraZcxOwner_Id_c
Rule1 Field Validation
Field Name : PromocionOservicio_Id_c
Rule1 Field Validation
Field Name : Oportunidad_Id_c
Rule1 Field Validation
Field Name : Diferir_Id_c
Rule1 Field Validation
Field Name :
PromocionDescuento_Id_c

Object Workflows
Name Definition Name Event Point Description
Descuento_c_Standard_Upd Update
ate
Descuento_c_Standard_Dele Delete
te
Descuento_c_Standard_Crea Create
te
Descuento_c
Descuento
Custom
CRM
SVC_REF_ENTITIES
23
0
0
0
3
5
0

umn Name Default Value Required Updatable Searchable REST Enabl


ORD_NAME Yes Yes Yes Yes
ATION_DATE Yes No Yes Yes
N_ATTRIBUTE_NUMBER007 No Yes No Yes
Yes Yes No Yes
RENCY_CODE No Yes Yes Yes
No Yes No Yes
N_ATTRIBUTE_NUMBER008 No Yes No Yes
N_ATTRIBUTE_NUMBER006 No Yes No Yes
N_ATTRIBUTE_NUMBER001 No Yes Yes Yes
T_UPDATED_BY Yes Yes Yes Yes
N_ATTRIBUTE_NUMBER004 No Yes No Yes
ATED_BY Yes No Yes Yes
Yes Yes No Yes
No Yes No Yes
N_ATTRIBUTE_NUMBER002 No Yes Yes Yes
N_ATTRIBUTE_CHAR007 Yes Yes Yes Yes
No Yes No Yes
N_ATTRIBUTE_CHAR008 N Yes Yes Yes Yes
NER_RESOURCE_ID Yes Yes Yes Yes
Yes No Yes Yes
ORD_NUMBER Yes No Yes Yes
N_ATTRIBUTE_NUMBER003 Yes Yes Yes Yes
T_UPDATE_DATE Yes Yes Yes Yes

Expression
adf.source.isLookupIdValid('OraZcxOwner_Id_c',newValue)

adf.source.isLookupIdValid('PromocionOservicio_Id_c',newValue)

adf.source.isLookupIdValid('Oportunidad_Id_c',newValue)

adf.source.isLookupIdValid('Diferir_Id_c',newValue)

adf.source.isLookupIdValid('PromocionDescuento_Id_c',newValue)

ption Disabled Actions Expression


No return
(oracle.apps.fnd.applcore.Profile.ge
No return
(oracle.apps.fnd.applcore.Profile.ge
No return
(oracle.apps.fnd.applcore.Profile.ge
Precision MaxLength Expression
80 80
0 0
10 10
1500 1500
15 15
1500 1500
10 10
10 10
18 18
64 64
18 18
64 64
1500 1500
1500 1500
18 18
80 80
1500 1500
10 10
18 18
32 32
64 64
18 18
0 0
ression
rn
cle.apps.fnd.applcore.Profile.get('ZCX_CUSTOM_OBJECT_EVENTS') ==
rn
cle.apps.fnd.applcore.Profile.get('ZCX_CUSTOM_OBJECT_EVENTS') ==
rn
cle.apps.fnd.applcore.Profile.get('ZCX_CUSTOM_OBJECT_EVENTS') ==
Object Name : Detalle_c
Object Name Detalle_c
Object Display Name Plural Detalle
Object Type Custom
Application Name CRM
Table Name HZ_REF_ENTITIES
Total number of custom fields
Total number of modified Standard fields
Total number of Triggers
Total number of Object Functions
Total number of Object Workflows
Total number of Validations
Total number of Dynamic Layouts

Custom Fields
Name Display Name Type Column Name
RecordName Código OOTB RECORD_NAME
CreationDate Fecha de Creación OOTB CREATION_DATE
Cada_c Cada Number EXTN_ATTRIBUTE_NUMBER007
Valor_c Valor Number EXTN_ATTRIBUTE_NUMBER008
CurrencyCode Currency Code FCL CURRENCY_CODE
DescuentoDefault_c Descuento Default DCL

PromocionOServicio_Id_c Promoción o servicio DCLForeignKey EXTN_ATTRIBUTE_NUMBER001


Hasta_c Hasta Number EXTN_ATTRIBUTE_NUMBER006
LastUpdatedBy Actualizado por OOTB LAST_UPDATED_BY
PromocionDescuento_Id_c Promocion Descuento DCLForeignKey EXTN_ATTRIBUTE_NUMBER003
CreatedBy Creado por OOTB CREATED_BY
PromocionOServicio_c Promoción o servicio DCL

OraZcxOwner_c Owner DCL

PromocionDescuento_c Promocion Descuento DCL

Oportunidad_Id_c Oportunidad DCLForeignKey EXTN_ATTRIBUTE_NUMBER002


DescuentoDefault_Id_c Descuento Default DCLForeignKey EXTN_ATTRIBUTE_NUMBER005
Descripcion_c Descripción Text EXTN_ATTRIBUTE_CHAR008
Oportunidad_c Oportunidad DCL

Activo_c Activo Checkbox EXTN_ATTRIBUTE_CHAR007


OraZcxOwner_Id_c Owner DCLForeignKey OWNER_RESOURCE_ID
DiferirDefault_Id_c Diferir Default DCLForeignKey EXTN_ATTRIBUTE_NUMBER004
DiferirDefault_c Diferir Default DCL

Id Identificador de Registro OOTB ID


RecordNumber Record Number OOTB RECORD_NUMBER
LastUpdateDate Fecha de Última Actualización OOTB LAST_UPDATE_DATE
Validations
Name Type Error Message
Rule1 Field Validation
Field Name : OraZcxOwner_Id_c
Rule1 Field Validation
Field Name : PromocionOServicio_Id_c
Rule1 Field Validation
Field Name : Oportunidad_Id_c
Rule1 Field Validation
Field Name :
PromocionDescuento_Id_c
Rule1 Field Validation
Field Name : DiferirDefault_Id_c
Rule1 Field Validation
Field Name : DescuentoDefault_Id_c

Object Workflows
Name Definition Name Event Point Description
Detalle_c_Standard_Create Create

Detalle_c_Standard_Update Update

Detalle_c_Standard_Delete Delete
Detalle_c
Detalle
Custom
CRM
HZ_REF_ENTITIES
25
0
0
0
3
6
0

umn Name Default Value Required Updatable Searchable REST Enabl


ORD_NAME Yes Yes Yes Yes
ATION_DATE Yes No Yes Yes
N_ATTRIBUTE_NUMBER007 No Yes No Yes
N_ATTRIBUTE_NUMBER008 No Yes No Yes
RENCY_CODE No Yes Yes Yes
No Yes No Yes
N_ATTRIBUTE_NUMBER001 No Yes Yes Yes
N_ATTRIBUTE_NUMBER006 No Yes No Yes
T_UPDATED_BY Yes Yes Yes Yes
N_ATTRIBUTE_NUMBER003 No Yes Yes Yes
ATED_BY Yes No Yes Yes
No Yes No Yes
Yes Yes No Yes
No Yes No Yes
N_ATTRIBUTE_NUMBER002 No Yes Yes Yes
N_ATTRIBUTE_NUMBER005 No Yes No Yes
N_ATTRIBUTE_CHAR008 Yes Yes Yes Yes
No Yes No Yes
N_ATTRIBUTE_CHAR007 N Yes Yes Yes Yes
NER_RESOURCE_ID Yes Yes Yes Yes
N_ATTRIBUTE_NUMBER004 No Yes No Yes
No Yes No Yes
Yes No Yes Yes
ORD_NUMBER Yes No Yes Yes
T_UPDATE_DATE Yes Yes Yes Yes
Expression
adf.source.isLookupIdValid('OraZcxOwner_Id_c',newValue)

adf.source.isLookupIdValid('PromocionOServicio_Id_c',newValue)

adf.source.isLookupIdValid('Oportunidad_Id_c',newValue)

adf.source.isLookupIdValid('PromocionDescuento_Id_c',newValue)

adf.source.isLookupIdValid('DiferirDefault_Id_c',newValue)

adf.source.isLookupIdValid('DescuentoDefault_Id_c',newValue)

ption Disabled Actions Expression


No return
(oracle.apps.fnd.applcore.Profile.ge
No return
(oracle.apps.fnd.applcore.Profile.ge
No return
(oracle.apps.fnd.applcore.Profile.ge
Precision MaxLength Expression
80 80
0 0
10 10
10 10
15 15
1500 1500
18 18
10 10
64 64
18 18
64 64
1500 1500
1500 1500
1500 1500
18 18
18 18
200 200
1500 1500
10 10
18 18
18 18
1500 1500
32 32
64 64
0 0
ression
rn
cle.apps.fnd.applcore.Profile.get('ZCX_CUSTOM_OBJECT_EVENTS') ==
rn
cle.apps.fnd.applcore.Profile.get('ZCX_CUSTOM_OBJECT_EVENTS') ==
rn
cle.apps.fnd.applcore.Profile.get('ZCX_CUSTOM_OBJECT_EVENTS') ==
Object Name : Diferir_c
Object Name Diferir_c
Object Display Name Plural Diferir
Object Type Custom
Application Name CRM
Table Name MKT_REF_ENTITIES
Total number of custom fields
Total number of modified Standard fields
Total number of Triggers
Total number of Object Functions
Total number of Object Workflows
Total number of Validations
Total number of Dynamic Layouts

Custom Fields
Name Display Name Type Column Name
RecordName Código OOTB RECORD_NAME
CreationDate Fecha de Creación OOTB CREATION_DATE
CurrencyCode Currency Code FCL CURRENCY_CODE
DescuentoDefault_c Descuento Default DCL

PromocionOServicio_Id_c Promoción o servicio DCLForeignKey EXTN_ATTRIBUTE_NUMBER001


LastUpdatedBy Actualizado por OOTB LAST_UPDATED_BY
PromocionDescuento_Id_c Promocion Descuento DCLForeignKey EXTN_ATTRIBUTE_NUMBER003
CreatedBy Creado por OOTB CREATED_BY
PromocionOServicio_c Promoción o servicio DCL

OraZcxOwner_c Owner DCL

PromocionDescuento_c Promocion Descuento DCL

Oportunidad_Id_c Oportunidad DCLForeignKey EXTN_ATTRIBUTE_NUMBER002


DescuentoDefault_Id_c Descuento Default DCLForeignKey EXTN_ATTRIBUTE_NUMBER005
Descripcion_c Descripción Text EXTN_ATTRIBUTE_CHAR007
Oportunidad_c Oportunidad DCL

Detalle_Id_c Detalle DCLForeignKey EXTN_ATTRIBUTE_NUMBER004


Activo_c Activo Checkbox EXTN_ATTRIBUTE_CHAR008
OraZcxOwner_Id_c Owner DCLForeignKey OWNER_RESOURCE_ID
Detalle_c Detalle DCL

Id Identificador de Registro OOTB ID


RecordNumber Record Number OOTB RECORD_NUMBER
LastUpdateDate Fecha de Última Actualización OOTB LAST_UPDATE_DATE

Triggers
Name Type Trigger PointDescription Error Message
printlns Object Trigger BeforeInsert
printlns Object Trigger BeforeInsert

Validations
Name Type Error Message
Rule1 Field Validation
Field Name : OraZcxOwner_Id_c
Rule1 Field Validation
Field Name : PromocionOServicio_Id_c
Rule1 Field Validation
Field Name : Oportunidad_Id_c
Rule1 Field Validation
Field Name :
PromocionDescuento_Id_c
Rule1 Field Validation
Field Name : Detalle_Id_c
Rule1 Field Validation
Field Name : DescuentoDefault_Id_c

Object Workflows
Name Definition Name Event Point Description
Diferir_c_Standard_Create Create

Diferir_c_Standard_Delete Delete

Diferir_c_Standard_Update Update
Diferir_c
Diferir
Custom
CRM
MKT_REF_ENTITIES
22
0
1
0
3
6
0

umn Name Default Value Required Updatable Searchable REST Enabl


ORD_NAME Yes Yes Yes Yes
ATION_DATE Yes No Yes Yes
RENCY_CODE No Yes Yes Yes
No Yes No Yes
N_ATTRIBUTE_NUMBER001 No Yes Yes Yes
T_UPDATED_BY Yes Yes Yes Yes
N_ATTRIBUTE_NUMBER003 No Yes Yes Yes
ATED_BY Yes No Yes Yes
No Yes No Yes
Yes Yes No Yes
No Yes No Yes
N_ATTRIBUTE_NUMBER002 No Yes Yes Yes
N_ATTRIBUTE_NUMBER005 No Yes No Yes
N_ATTRIBUTE_CHAR007 Yes Yes Yes Yes
No Yes No Yes
N_ATTRIBUTE_NUMBER004 Yes Yes Yes Yes
N_ATTRIBUTE_CHAR008 N Yes Yes Yes Yes
NER_RESOURCE_ID Yes Yes Yes Yes
Yes Yes No Yes
Yes No Yes Yes
ORD_NUMBER Yes No Yes Yes
T_UPDATE_DATE Yes Yes Yes Yes

Expression
def map=[:]
map.put('RecordName',RecordName)
map.put('Descripcion_c',Descripcion_c)
map.put('Activo_c',Activo_c)
map.put('PromocionOServicio_Id_c',PromocionOServicio_Id_c)

Expression
adf.source.isLookupIdValid('OraZcxOwner_Id_c',newValue)

adf.source.isLookupIdValid('PromocionOServicio_Id_c',newValue)

adf.source.isLookupIdValid('Oportunidad_Id_c',newValue)

adf.source.isLookupIdValid('PromocionDescuento_Id_c',newValue)

adf.source.isLookupIdValid('Detalle_Id_c',newValue)

adf.source.isLookupIdValid('DescuentoDefault_Id_c',newValue)

ption Disabled Actions Expression


No return
(oracle.apps.fnd.applcore.Profile.ge
No return
(oracle.apps.fnd.applcore.Profile.ge
No return
(oracle.apps.fnd.applcore.Profile.ge
Precision MaxLength Expression
80 80
0 0
15 15
1500 1500
18 18
64 64
18 18
64 64
1500 1500
1500 1500
1500 1500
18 18
18 18
200 200
1500 1500
18 18
10 10
18 18
1500 1500
32 32
64 64
0 0
ression
rn
cle.apps.fnd.applcore.Profile.get('ZCX_CUSTOM_OBJECT_EVENTS') ==
rn
cle.apps.fnd.applcore.Profile.get('ZCX_CUSTOM_OBJECT_EVENTS') ==
rn
cle.apps.fnd.applcore.Profile.get('ZCX_CUSTOM_OBJECT_EVENTS') ==
Object Name : DireccionInstalacion_c
Object Name
Object Display Name Plural
Object Description
Object Type
Application Name
Table Name
Record Name Sequence
Total number of custom fields
Total number of modified Standard fields
Total number of Triggers
Total number of Object Functions
Total number of Object Workflows
Total number of Validations
Total number of Dynamic Layouts

Custom Fields
Name Display Name Type Column Name
RecordName DireccionInstalacionRecordName OOTB RECORD_NAME
CreationDate Fecha de Creación OOTB CREATION_DATE
SeleccionarDireccionDeInstalacion Dirección de instalación Checkbox EXTN_ATTRIBUTE_CHAR006
CurrencyCode Currency Code FCL CURRENCY_CODE
DireccionDeFacturacion_c Dirección de Facturación Checkbox EXTN_ATTRIBUTE_CHAR007
LastUpdatedBy Actualizado por OOTB LAST_UPDATED_BY
CreatedBy Creado por OOTB CREATED_BY
Id Identificador de Registro OOTB ID
RecordNumber Record Number OOTB RECORD_NUMBER
LastUpdateDate Fecha de Última Actualización OOTB LAST_UPDATE_DATE
DireccionInstalacion_c
DireccionInstalacions
Intersection Entity generated by M:M
Relationship
Custom
CRM
MOT_REF_ENTITIES_XMM
{0000000}-{YY}{MM}{DD}
10
0
0
0
0
0
0

Column Name Default Value Required Updatable Searchable


RECORD_NAME Yes Yes Yes
CREATION_DATE Yes No Yes
EXTN_ATTRIBUTE_CHAR006 N Yes Yes No
CURRENCY_CODE No Yes Yes
EXTN_ATTRIBUTE_CHAR007 N Yes Yes No
LAST_UPDATED_BY Yes Yes Yes
CREATED_BY Yes No Yes
ID Yes No Yes
RECORD_NUMBER Yes No Yes
LAST_UPDATE_DATE Yes Yes Yes
REST Enabl Precision MaxLength Expression
Yes 80 80
Yes 0 0
Yes 10 10
Yes 15 15
Yes 10 10
Yes 64 64
Yes 64 64
Yes 32 32
Yes 64 64
Yes 0 0
Object Name : FormaDePago_c
Object Name FormaDePago_c
Object Display Name Plural Formas de pago
Object Type Custom
Application Name CRM
Table Name ZCA_REF_ENTITIES
Total number of custom fields
Total number of modified Standard fields
Total number of Triggers
Total number of Object Functions
Total number of Object Workflows
Total number of Validations
Total number of Dynamic Layouts

Custom Fields
Name Display Name Type Column Name
RecordName Código OOTB RECORD_NAME
CreationDate Fecha de Creación OOTB CREATION_DATE
CurrencyCode Currency Code FCL CURRENCY_CODE
TipoFormaPago_c Tipo de forma de pago FCL EXTN_ATTRIBUTE_CHAR009
LastUpdatedBy Actualizado por OOTB LAST_UPDATED_BY
CreatedBy Creado por OOTB CREATED_BY
OraZcxOwner_c Owner DCL

Oportunidad_Id_c Oportunidad DCLForeignKey EXTN_ATTRIBUTE_NUMBER001


Descripcion_c Descripción Text EXTN_ATTRIBUTE_CHAR007
Oportunidad_c Oportunidad DCL

Activo_c Activo Checkbox EXTN_ATTRIBUTE_CHAR008


OraZcxOwner_Id_c Owner DCLForeignKey OWNER_RESOURCE_ID
Id Identificador de Registro OOTB ID
RecordNumber Record Number OOTB RECORD_NUMBER
LastUpdateDate Fecha de Última Actualización OOTB LAST_UPDATE_DATE

Validations
Name Type Error Message
Rule1 Field Validation
Field Name : OraZcxOwner_Id_c
Rule1 Field Validation
Field Name : Oportunidad_Id_c

Object Workflows
Name Definition Name Event Point Description
FormaDePago_c_Standard_ Delete
Delete
FormaDePago_c_Standard_ Delete
Delete
FormaDePago_c_Standard_ Update
Update
FormaDePago_c_Standard_ Create
Create
FormaDePago_c
Formas de pago
Custom
CRM
ZCA_REF_ENTITIES
15
0
0
0
3
2
0

umn Name Default Value Required Updatable Searchable REST Enabl


ORD_NAME Yes Yes Yes Yes
ATION_DATE Yes No Yes Yes
RENCY_CODE No Yes Yes Yes
N_ATTRIBUTE_CHAR009 No Yes No Yes
T_UPDATED_BY Yes Yes Yes Yes
ATED_BY Yes No Yes Yes
Yes Yes No Yes
N_ATTRIBUTE_NUMBER001 Yes Yes Yes Yes
N_ATTRIBUTE_CHAR007 Yes Yes Yes Yes
Yes Yes No Yes
N_ATTRIBUTE_CHAR008 N Yes Yes Yes Yes
NER_RESOURCE_ID Yes Yes Yes Yes
Yes No Yes Yes
ORD_NUMBER Yes No Yes Yes
T_UPDATE_DATE Yes Yes Yes Yes

Expression
adf.source.isLookupIdValid('OraZcxOwner_Id_c',newValue)

adf.source.isLookupIdValid('Oportunidad_Id_c',newValue)

ption Disabled Actions Expression


No return
(oracle.apps.fnd.applcore.Profile.ge
No

No return
(oracle.apps.fnd.applcore.Profile.ge
No return
(oracle.apps.fnd.applcore.Profile.ge
Precision MaxLength Expression
80 80
0 0
15 15
1500 1500
64 64
64 64
1500 1500
18 18
200 200
1500 1500
10 10
18 18
32 32
64 64
0 0

ression
rn
cle.apps.fnd.applcore.Profile.get('ZCX_CUSTOM_OBJECT_EVENTS') ==
rn
cle.apps.fnd.applcore.Profile.get('ZCX_CUSTOM_OBJECT_EVENTS') ==
rn
cle.apps.fnd.applcore.Profile.get('ZCX_CUSTOM_OBJECT_EVENTS') ==
Object Name : GrupoComercial_c
Object Name GrupoComercial_c
Object Display Name Plural Grupo Comercial
Object Type Custom
Application Name CRM
Table Name MKT_REF_ENTITIES
Total number of custom fields
Total number of modified Standard fields
Total number of Triggers
Total number of Object Functions
Total number of Object Workflows
Total number of Validations
Total number of Dynamic Layouts

Custom Fields
Name Display Name Type Column Name
RecordName Código OOTB RECORD_NAME
CreationDate Fecha de Creación OOTB CREATION_DATE
CurrencyCode Currency Code FCL CURRENCY_CODE
Inactivar_c Inactivar Checkbox EXTN_ATTRIBUTE_CHAR008
LastUpdatedBy Actualizado por OOTB LAST_UPDATED_BY
CreatedBy Creado por OOTB CREATED_BY
OraZcxOwner_c Owner DCL

Descripcion_c Grupo comercial Text EXTN_ATTRIBUTE_CHAR007


OraZcxOwner_Id_c Owner DCLForeignKey OWNER_RESOURCE_ID
Id Identificador de Registro OOTB ID
RecordNumber Record Number OOTB RECORD_NUMBER
LastUpdateDate Fecha de Última Actualización OOTB LAST_UPDATE_DATE

Validations
Name Type Error Message
Rule1 Field Validation
Field Name : OraZcxOwner_Id_c

Object Workflows
Name Definition Name Event Point Description
GrupoComercial_c_Standard Create
_Create
GrupoComercial_c_Standard Delete
_Delete
GrupoComercial_c_Standard Update
_Update
GrupoComercial_c
Grupo Comercial
Custom
CRM
MKT_REF_ENTITIES
12
0
0
0
3
1
0

umn Name Default Value Required Updatable Searchable REST Enabl


ORD_NAME Yes Yes Yes Yes
ATION_DATE Yes No Yes Yes
RENCY_CODE No Yes Yes Yes
N_ATTRIBUTE_CHAR008 N Yes Yes Yes Yes
T_UPDATED_BY Yes Yes Yes Yes
ATED_BY Yes No Yes Yes
Yes Yes No Yes
N_ATTRIBUTE_CHAR007 Yes Yes Yes Yes
NER_RESOURCE_ID Yes Yes Yes Yes
Yes No Yes Yes
ORD_NUMBER Yes No Yes Yes
T_UPDATE_DATE Yes Yes Yes Yes

Expression
adf.source.isLookupIdValid('OraZcxOwner_Id_c',newValue)

ption Disabled Actions Expression


No return
(oracle.apps.fnd.applcore.Profile.ge
No return
(oracle.apps.fnd.applcore.Profile.ge
No return
(oracle.apps.fnd.applcore.Profile.ge
Precision MaxLength Expression
80 80
0 0
15 15
10 10
64 64
64 64
1500 1500
160 160
18 18
32 32
64 64
0 0

ression
rn
cle.apps.fnd.applcore.Profile.get('ZCX_CUSTOM_OBJECT_EVENTS') ==
rn
cle.apps.fnd.applcore.Profile.get('ZCX_CUSTOM_OBJECT_EVENTS') ==
rn
cle.apps.fnd.applcore.Profile.get('ZCX_CUSTOM_OBJECT_EVENTS') ==
Object Name : GrupoDeHilo_c
Object Name GrupoDeHilo_c
Object Display Name Plural Grupo de hilo
Object Type Custom
Application Name CRM
Table Name MOT_REF_ENTITIES
Total number of custom fields
Total number of modified Standard fields
Total number of Triggers
Total number of Object Functions
Total number of Object Workflows
Total number of Validations
Total number of Dynamic Layouts

Custom Fields
Name Display Name Type Column Name
RecordName Grupo de hilo OOTB RECORD_NAME
CreationDate Fecha de Creación OOTB CREATION_DATE
CurrencyCode Currency Code FCL CURRENCY_CODE
LastUpdatedBy Actualizado por OOTB LAST_UPDATED_BY
CreatedBy Creado por OOTB CREATED_BY
Splitter_Id_c Splitter DCLForeignKey EXTN_ATTRIBUTE_NUMBER002
OraZcxOwner_c Owner DCL

Oportunidad_Id_c Oportunidad DCLForeignKey EXTN_ATTRIBUTE_NUMBER001


Descripcion_c Descripción Text EXTN_ATTRIBUTE_CHAR007
Oportunidad_c Oportunidad DCL

Activo_c Activo Checkbox EXTN_ATTRIBUTE_CHAR008


OraZcxOwner_Id_c Owner DCLForeignKey OWNER_RESOURCE_ID
Splitter_c Splitter DCL

Id Identificador de Registro OOTB ID


RecordNumber Record Number OOTB RECORD_NUMBER
LastUpdateDate Fecha de Última Actualización OOTB LAST_UPDATE_DATE

Validations
Name Type Error Message
Rule1 Field Validation
Field Name : OraZcxOwner_Id_c
Rule1 Field Validation
Field Name : Oportunidad_Id_c
Rule1 Field Validation
Field Name : Splitter_Id_c
Object Workflows
Name Definition Name Event Point Description
GrupoDeHilo_c_Standard_Cr Create
eate
GrupoDeHilo_c_Standard_D Delete
elete
GrupoDeHilo_c_Standard_U Update
pdate
GrupoDeHilo_c
Grupo de hilo
Custom
CRM
MOT_REF_ENTITIES
16
0
0
0
3
3
0

umn Name Default Value Required Updatable Searchable REST Enabl


ORD_NAME Yes Yes Yes Yes
ATION_DATE Yes No Yes Yes
RENCY_CODE No Yes Yes Yes
T_UPDATED_BY Yes Yes Yes Yes
ATED_BY Yes No Yes Yes
N_ATTRIBUTE_NUMBER002 Yes Yes Yes Yes
Yes Yes No Yes
N_ATTRIBUTE_NUMBER001 Yes Yes Yes Yes
N_ATTRIBUTE_CHAR007 Yes Yes Yes Yes
Yes Yes No Yes
N_ATTRIBUTE_CHAR008 N Yes Yes Yes Yes
NER_RESOURCE_ID Yes Yes Yes Yes
Yes Yes No Yes
Yes No Yes Yes
ORD_NUMBER Yes No Yes Yes
T_UPDATE_DATE Yes Yes Yes Yes

Expression
adf.source.isLookupIdValid('OraZcxOwner_Id_c',newValue)

adf.source.isLookupIdValid('Oportunidad_Id_c',newValue)

adf.source.isLookupIdValid('Splitter_Id_c',newValue)
ption Disabled Actions Expression
No return
(oracle.apps.fnd.applcore.Profile.ge
No return
(oracle.apps.fnd.applcore.Profile.ge
No return
(oracle.apps.fnd.applcore.Profile.ge
Precision MaxLength Expression
80 80
0 0
15 15
64 64
64 64
18 18
1500 1500
18 18
200 200
1500 1500
10 10
18 18
1500 1500
32 32
64 64
0 0
ression
rn
cle.apps.fnd.applcore.Profile.get('ZCX_CUSTOM_OBJECT_EVENTS') ==
rn
cle.apps.fnd.applcore.Profile.get('ZCX_CUSTOM_OBJECT_EVENTS') ==
rn
cle.apps.fnd.applcore.Profile.get('ZCX_CUSTOM_OBJECT_EVENTS') ==
Object Name : HistoricoConsultaScore_c
Object Name HistoricoConsultaScore_c
Object Display Name Plural Consultas Score
Object Type Custom
Application Name CRM
Table Name HZ_REF_ENTITIES
Total number of custom fields
Total number of modified Standard fields
Total number of Triggers
Total number of Object Functions
Total number of Object Workflows
Total number of Validations
Total number of Dynamic Layouts

Custom Fields
Name Display Name Type Column Name
RecordName Número de Identificación OOTB RECORD_NAME
CreationDate Fecha de Creación OOTB CREATION_DATE
ClienteConDeuda_c Cliente con deuda Text EXTN_ATTRIBUTE_CHAR011
RecordNameFormula_c Número de Identificación Text Formula

CurrencyCode Currency Code FCL CURRENCY_CODE


Segmentacion_c Segmentación Text EXTN_ATTRIBUTE_CHAR007
LastUpdatedBy Actualizado por OOTB LAST_UPDATED_BY
RegistraTCActiva_c Registra TCA activa Text EXTN_ATTRIBUTE_CHAR010
CreatedBy Creado por OOTB CREATED_BY
OraZcxOwner_c Owner DCL

Oportunidad_c Oportunidad DCL

OraZcxOwner_Id_c Owner DCLForeignKey OWNER_RESOURCE_ID


Id Identificador de Registro OOTB ID
Contacto_c Contacto DCL

RecordNumber Record Number OOTB RECORD_NUMBER


ConsultarScore_c Consultar Score Checkbox EXTN_ATTRIBUTE_CHAR020
TipoConsulta_c Tipo de consulta FCL EXTN_ATTRIBUTE_CHAR013
CapacidadDePago_c Capacidad de pago Text EXTN_ATTRIBUTE_CHAR012
TipoDeIdentificacion_c Tipo de Identificacion FCL EXTN_ATTRIBUTE_CHAR014
Contacto_Id_c Contacto DCLForeignKey EXTN_ATTRIBUTE_NUMBER001
ControlTipo_c control Tipo FCL EXTN_ATTRIBUTE_CHAR021
ResultadoDelModelo_c Resultado del modelo Text EXTN_ATTRIBUTE_CHAR009
Oportunidad_Id_c Oportunidad DCLForeignKey EXTN_ATTRIBUTE_NUMBER002
Sucursal_c Sucursal Text Formula
Sucursal_c Sucursal Text Formula

ClienteCastigado_c Cliente castigado Text EXTN_ATTRIBUTE_CHAR008


LastUpdateDate Fecha de Última Actualización OOTB LAST_UPDATE_DATE

Triggers
Name Type Trigger PointDescription Error Message
setOwner Object Trigger Create

ControlInsert Object Trigger BeforeInsert

Validations
Name Type Error Message
Rule1 Field Validation
Field Name : OraZcxOwner_Id_c
Rule1 Field Validation
Field Name : Contacto_Id_c
Rule1 Field Validation
Rule1
Field Name : Oportunidad_Id_c

Object Functions
Name Parameters Return Type Privileged Visibility Description
ActualiarSco void No Default
reContacto

consultaScor void No Default


e
Object Workflows
Name Definition Name Event Point Description
HistoricoConsultaScore_c_St Update
andard_Update
HistoricoConsultaScore_c_St Create
andard_Create
HistoricoConsultaScore_c_St Delete
andard_Delete
HistoricoConsultaScore_c
Consultas Score
Custom
CRM
HZ_REF_ENTITIES
26
0
2
2
3
3
0

umn Name Default Value Required Updatable Searchable REST Enabl


ORD_NAME Yes Yes Yes Yes
ATION_DATE Yes No Yes Yes
N_ATTRIBUTE_CHAR011 No Yes No Yes
No No No Yes
RENCY_CODE No Yes Yes Yes
N_ATTRIBUTE_CHAR007 No Yes No Yes
T_UPDATED_BY Yes Yes Yes Yes
N_ATTRIBUTE_CHAR010 No Yes No Yes
ATED_BY Yes No Yes Yes
Yes Yes No Yes
No Yes No Yes
NER_RESOURCE_ID Yes Yes Yes Yes
Yes No Yes Yes
No Yes No Yes
ORD_NUMBER Yes No Yes Yes
N_ATTRIBUTE_CHAR020 N Yes Yes No Yes
N_ATTRIBUTE_CHAR013 No Yes No Yes
N_ATTRIBUTE_CHAR012 No Yes No Yes
N_ATTRIBUTE_CHAR014 No Yes No Yes
N_ATTRIBUTE_NUMBER001 No Yes No Yes
N_ATTRIBUTE_CHAR021 No Yes No Yes
N_ATTRIBUTE_CHAR009 No Yes No Yes
N_ATTRIBUTE_NUMBER002 No Yes No Yes
No No No Yes
No No No Yes

N_ATTRIBUTE_CHAR008 No Yes No Yes


T_UPDATE_DATE Yes Yes Yes Yes

Expression
def userName =adf.context.getSecurityContext()?.getUserProfile()?.getUserID()
def vo=newView('Resource')
def voc=vo.createViewCriteria()
def vor=voc.createRow()
def voi=vor.ensureCriteriaItem('Username')
voi.setOperator('=')
voi.setValue(userName)
voc.insertRow(vor)
vo.appendViewCriteria(voc)
vo.executeQuery()
def resource
while(vo.hasNext()){
def v=vo.next()
if(v.Username==userName){
resource =v
}
}
if(resource!=null){
setAttribute('OraZcxOwner_Id_c',resource.ResourceProfileId)
}
setAttribute('ConsultarScore_c','Y')
setAttribute('ControlTipo_c','Y')
if(ConsultarScore_c=='Y'){
consultaScore()
}

if(TipoConsulta_c=='1'){
ActualiarScoreContacto()
}

Expression
adf.source.isLookupIdValid('OraZcxOwner_Id_c',newValue)

adf.source.isLookupIdValid('Contacto_Id_c',newValue)

adf.source.isLookupIdValid('Oportunidad_Id_c',newValue)
adf.source.isLookupIdValid('Oportunidad_Id_c',newValue)

tion Expression
def contacto= Contacto_Obj_c
if(contacto!=null){
contacto.setAttribute('Segmentacion_c',Segmentacion_c)
contacto.setAttribute('CapacidadDePago_c',CapacidadDePago_c)
contacto.setAttribute('RegistraTCActiva_c',RegistraTCActiva_c)
contacto.setAttribute('ResultadoDelModelo_c',ResultadoDelModelo_c)
contacto.setAttribute('ClienteCastigado_c',ClienteCastigado_c)
contacto.setAttribute('ClienteConDeuda_c',ClienteConDeuda_c)
}
def tipoDocumento_c = '';
def numeroDocumento_c = '';
def payload = [:]
def POST_param=[:]
def consulta= '';
def contacto = '';

def ownerResourceProfileId=nvl(OraZcxOwner_Id_c,0 as Long)


if(ownerResourceProfileId!=0){
def owner=OraZcxOwner_Obj_c
if(owner==null){
def res=newView('Resource')
def resc=newViewCriteria(res)
def resr=resc.createRow()
def resi=resr.ensureCriteriaItem('ResourceProfileId')
resi.setOperator('=')
resi.setValue(ownerResourceProfileId)
resc.insertRow(resr)
res.appendViewCriteria(resc)
res.executeQuery()
while(res.hasNext()){
owner=res.next()
}
}
try{
def tipoDocumento = nvl(TipoDeIdentificacion_c,'')
def numDocumento = nvl(RecordName,'')
if((tipoDocumento == 'C' || tipoDocumento == 'P')&&numDocumento!='' ){
payload.put('tipoDocumento',tipoDocumento)
payload.put('numeroDocumento',''+numDocumento)
payload.put('idEjecutivoCorporativo',''+owner.PartyId)
}else{
throw new oracle.jbo.ValidationException('Para consultar el score es necesario enviar Cédula o Pasaporte')
}

println('payload consulta calificacion:'+payload)


consulta = adf.webServices.ConsultarCalificacionCliente.POST(payload)
println('RESPUESTA CONSULTA CALIFICACION: '+ consulta)

if(consulta?.codigoRespuesta == '1' ){
def capacidadPago_c = consulta?.capacidadPago;
setAttribute('Segmentacion_c',consulta?.segmentacion);
setAttribute('ClienteCastigado_c',consulta?.clienteCastigado.Descripcion[0]);
setAttribute('ResultadoDelModelo_c',consulta?.resultadoModelo);
setAttribute('RegistraTCActiva_c',consulta?.registraTCActiva);
setAttribute('ClienteConDeuda_c',consulta?.clienteDeuda.Descripcion[0]);
setAttribute('CapacidadDePago_c', (capacidadPago_c as BigDecimal).setScale(2,BigDecimal.ROUND_HALF_UP))
setAttribute('Segmentacion_c',consulta?.segmentacion)

//println('Forma de pago: '+ listaFormaDePago)

/* for(Cod in listaFormaDePago){
def listRow = listRows.createRow()
listRow.setAttribute('Oportunidad_Id_c',OptyId)
listRow.setAttribute('Activo_c','Y')
listRow.setAttribute('RecordName',Cod['Codigo'])
listRow.setAttribute('Descripcion_c',Cod['Descripcion'])
listRow.setAttribute('TipoFormaPago_c',Cod['tipo'])
listRows.insertRow(listRow)
}
*/

POST_param.put('Integracion_c',2)
POST_param.put('MensajeIntegracion_c',encodeToBase64('Consulta Exitosa'))
POST_param.put('Payload_c',encodeToBase64(''+ payload))
POST_param.put('Response_c',encodeToBase64(''+consulta))
POST_param.put('IdPrincipal_c',0)

//adf.webServices.LogBitacora.POST(POST_param)
}else{

def mensaje = consulta?.mensaje;


throw new oracle.jbo.ValidationException(''+mensaje)
}
}
catch(Exception e){
def msg=e.message

POST_param.put('Integracion_c',2)
POST_param.put('MensajeIntegracion_c',encodeToBase64(msg))
POST_param.put('Payload_c',encodeToBase64(''+ payload))
POST_param.put('Response_c',encodeToBase64(''+consulta))
POST_param.put('IdPrincipal_c',0)

// adf.webServices.LogBitacora.POST(POST_param)
//throw new oracle.jbo.ValidationException(''+consulta?.resultadoModelo)

throw new oracle.jbo.ValidationException(''+msg)


}
}

ption Disabled Actions Expression


No return
(oracle.apps.fnd.applcore.Profile.ge
No return
(oracle.apps.fnd.applcore.Profile.ge
No return
(oracle.apps.fnd.applcore.Profile.ge
Precision MaxLength Expression
80 80
0 0
80 80
0 0 RecordName
15 15
80 80
64 64
80 80
64 64
1500 1500
1500 1500
18 18
32 32
1500 1500
64 64
10 10
1500 1500
80 80
1500 1500
18 18
1500 1500
80 80
18 18
0 0 if(OraZcxOwner_Obj_c==null){
return ''
}
0 0

else{
return OraZcxOwner_Obj_c?.ge
}
80 80
0 0
Cédula o Pasaporte')

ecimal.ROUND_HALF_UP))
ression
rn
cle.apps.fnd.applcore.Profile.get('ZCX_CUSTOM_OBJECT_EVENTS') ==
rn
cle.apps.fnd.applcore.Profile.get('ZCX_CUSTOM_OBJECT_EVENTS') ==
rn
cle.apps.fnd.applcore.Profile.get('ZCX_CUSTOM_OBJECT_EVENTS') ==
Object Name : HistoricoDeContrato_c
Object Name HistoricoDeContrato_c
Object Display Name Plural Históricos de Contrato
Object Type Custom
Application Name CRM
Table Name SVC_REF_ENTITIES
Record Name Sequence {000000000}
Total number of custom fields
Total number of modified Standard fields
Total number of Triggers
Total number of Object Functions
Total number of Object Workflows
Total number of Validations
Total number of Dynamic Layouts

Custom Fields
Name Display Name Type Column Name
RecordName Histórico de Contrato OOTB RECORD_NAME
CreationDate Fecha OOTB CREATION_DATE
Subestado_c Subestado FCL EXTN_ATTRIBUTE_CHAR007
CurrencyCode Currency Code FCL CURRENCY_CODE
ComentariosObservaciones_c Comentarios / Observaciones Clob EXTN_ATTRIBUTE_CLOB001
LastUpdatedBy Actualizado por OOTB LAST_UPDATED_BY
CreatedBy Creado por OOTB CREATED_BY
OraZcxOwner_c Owner DCL

Usuario_c Usuario Text EXTN_ATTRIBUTE_CHAR008


Oportunidad_Id_c Oportunidad DCLForeignKey EXTN_ATTRIBUTE_NUMBER001
Oportunidad_c Oportunidad DCL

OraZcxOwner_Id_c Owner DCLForeignKey OWNER_RESOURCE_ID


Id Identificador de Registro OOTB ID
RecordNumber Record Number OOTB RECORD_NUMBER
LastUpdateDate Fecha de Última Actualización OOTB LAST_UPDATE_DATE

Validations
Name Type Error Message
Rule1 Field Validation
Field Name : OraZcxOwner_Id_c
Rule1 Field Validation
Field Name : Oportunidad_Id_c

Object Workflows
Name Definition Name Event Point Description
HistoricoDeContrato_c_Stan Create
dard_Create
HistoricoDeContrato_c_Stan Delete
dard_Delete
HistoricoDeContrato_c_Stan Update
dard_Update
HistoricoDeContrato_c
Históricos de Contrato
Custom
CRM
SVC_REF_ENTITIES
{000000000}
15
0
0
0
3
2
0

umn Name Default Value Required Updatable Searchable REST Enabl


ORD_NAME Yes Yes Yes Yes
ATION_DATE Yes No Yes Yes
N_ATTRIBUTE_CHAR007 Yes Yes Yes Yes
RENCY_CODE No Yes Yes Yes
N_ATTRIBUTE_CLOB001 No Yes No Yes
T_UPDATED_BY Yes Yes Yes Yes
ATED_BY Yes No Yes Yes
Yes Yes No Yes
N_ATTRIBUTE_CHAR008 No Yes No Yes
N_ATTRIBUTE_NUMBER001 No Yes No Yes
No Yes No Yes
NER_RESOURCE_ID Yes Yes Yes Yes
Yes No Yes Yes
ORD_NUMBER Yes No Yes Yes
T_UPDATE_DATE Yes Yes Yes Yes

Expression
adf.source.isLookupIdValid('OraZcxOwner_Id_c',newValue)

adf.source.isLookupIdValid('Oportunidad_Id_c',newValue)

ption Disabled Actions Expression


No return
(oracle.apps.fnd.applcore.Profile.ge
No return
(oracle.apps.fnd.applcore.Profile.ge
No return
(oracle.apps.fnd.applcore.Profile.ge
Precision MaxLength Expression
80 80
0 0
1500 1500
15 15
32714 32714
64 64
64 64
1500 1500
80 80
18 18
1500 1500
18 18
32 32
64 64
0 0

ression
rn
cle.apps.fnd.applcore.Profile.get('ZCX_CUSTOM_OBJECT_EVENTS') ==
rn
cle.apps.fnd.applcore.Profile.get('ZCX_CUSTOM_OBJECT_EVENTS') ==
rn
cle.apps.fnd.applcore.Profile.get('ZCX_CUSTOM_OBJECT_EVENTS') ==
Object Name : HistoricoDeEtapaDeVenta_c
Object Name HistoricoDeEtapaDeVenta_c
Object Display Name Plural Historico de Etapa de Venta
Object Type Custom
Application Name CRM
Table Name HZ_REF_ENTITIES
Total number of custom fields
Total number of modified Standard fields
Total number of Triggers
Total number of Object Functions
Total number of Object Workflows
Total number of Validations
Total number of Dynamic Layouts

Custom Fields
Name Display Name Type Column Name
RecordName Etapa Actual OOTB RECORD_NAME
CreationDate Fecha de inicio de etapa OOTB CREATION_DATE
Dias_c Días Number EXTN_ATTRIBUTE_NUMBER006
EtapaAnterior_c Etapa Anterior Text EXTN_ATTRIBUTE_CHAR007
DiasForm_c Días Number Formula

FechaInicioDeEtapa_c Fecha inicio de etapa Date EXTN_ATTRIBUTE_TIMESTAMP002


FechaFinDeEtapa_c Fecha fin de etapa Date EXTN_ATTRIBUTE_TIMESTAMP001
CurrencyCode Currency Code FCL CURRENCY_CODE
LastUpdatedBy Actualizado por OOTB LAST_UPDATED_BY
CreatedBy Creado por OOTB CREATED_BY
OraZcxOwner_c Owner DCL

Oportunidad_Id_c Oportunidad DCLForeignKey EXTN_ATTRIBUTE_NUMBER001


EtapaTermiinada_c Etapa termiinada Checkbox EXTN_ATTRIBUTE_CHAR009
Oportunidad_c Oportunidad DCL

OraZcxOwner_Id_c Owner DCLForeignKey OWNER_RESOURCE_ID


EtapaActual_c Etapa actual Text EXTN_ATTRIBUTE_CHAR008
Id Identificador de Registro OOTB ID
RecordNumber Record Number OOTB RECORD_NUMBER
LastUpdateDate Fecha de actualización OOTB LAST_UPDATE_DATE

Triggers
Name Type Trigger PointDescription Error Message
Fechafin Object Trigger BeforeUpdate

Validations
Name Type Error Message
Rule1 Field Validation
Field Name : OraZcxOwner_Id_c
Rule1 Field Validation
Field Name : Oportunidad_Id_c

Object Workflows
Name Definition Name Event Point Description
HistoricoDeEtapaDeVenta_c Update
_Standard_Update
HistoricoDeEtapaDeVenta_c Delete
_Standard_Delete
HistoricoDeEtapaDeVenta_c Create
_Standard_Create
HistoricoDeEtapaDeVenta_c
Historico de Etapa de Venta
Custom
CRM
HZ_REF_ENTITIES
19
0
1
0
3
2
0

umn Name Default Value Required Updatable Searchable REST Enabl


ORD_NAME Yes Yes Yes Yes
ATION_DATE Yes No Yes Yes
N_ATTRIBUTE_NUMBER006 No Yes No Yes
N_ATTRIBUTE_CHAR007 No Yes No Yes
No No No Yes

N_ATTRIBUTE_TIMESTAMP002 No Yes No Yes


N_ATTRIBUTE_TIMESTAMP001 No Yes No Yes
RENCY_CODE No Yes Yes Yes
T_UPDATED_BY Yes Yes Yes Yes
ATED_BY Yes No Yes Yes
Yes Yes No Yes
N_ATTRIBUTE_NUMBER001 No Yes No Yes
N_ATTRIBUTE_CHAR009 N Yes Yes No Yes
No Yes No Yes
NER_RESOURCE_ID Yes Yes Yes Yes
N_ATTRIBUTE_CHAR008 No Yes No Yes
Yes No Yes Yes
ORD_NUMBER Yes No Yes Yes
T_UPDATE_DATE Yes Yes Yes Yes
Expression
if(isAttributeChanged('EtapaTermiinada_c')&& EtapaTermiinada_c=='Y' ){
setAttribute('FechaFinDeEtapa_c',today())
}

Expression
adf.source.isLookupIdValid('OraZcxOwner_Id_c',newValue)

adf.source.isLookupIdValid('Oportunidad_Id_c',newValue)

ption Disabled Actions Expression


No return
(oracle.apps.fnd.applcore.Profile.ge
No return
(oracle.apps.fnd.applcore.Profile.ge
No return
(oracle.apps.fnd.applcore.Profile.ge
Precision MaxLength Expression
80 80
0 0
10 10
80 80
0 0 def fechanull=null
if(CreationDate!=fechanull){
if(FechaFinDeEtapa_c!=fechanull){
CreationDate - FechaFinDeEtapa_c
}
}
0 0
0 0
15 15
64 64
64 64
1500 1500
18 18
10 10
1500 1500
18 18
80 80
32 32
64 64
0 0
ression
rn
cle.apps.fnd.applcore.Profile.get('ZCX_CUSTOM_OBJECT_EVENTS') ==
rn
cle.apps.fnd.applcore.Profile.get('ZCX_CUSTOM_OBJECT_EVENTS') ==
rn
cle.apps.fnd.applcore.Profile.get('ZCX_CUSTOM_OBJECT_EVENTS') ==
Object Name : HistoricoDeTemporalidad_c
Object Name HistoricoDeTemporalidad_c
Object Display Name Plural Historico de temporalidad
Object Type Custom
Application Name CRM
Table Name SVC_REF_ENTITIES
Total number of custom fields
Total number of modified Standard fields
Total number of Triggers
Total number of Object Functions
Total number of Object Workflows
Total number of Validations
Total number of Dynamic Layouts

Custom Fields
Name Display Name Type Column Name
RecordName Valor anterior OOTB RECORD_NAME
CreationDate Fecha de Creación OOTB CREATION_DATE
RecursoAnterior_c Recurso Anterior DCL

CurrencyCode Currency Code FCL CURRENCY_CODE


ValorActual_c Valor actual Text EXTN_ATTRIBUTE_CHAR007
RecursoAnterior_Id_c Recurso Anterior DCLForeignKey EXTN_ATTRIBUTE_NUMBER005
IdOportunidad_c Id oportunidad DCL

IdCuenta_Id_c Id cuenta DCLForeignKey EXTN_ATTRIBUTE_NUMBER002


LastUpdatedBy Usuario de actualización OOTB LAST_UPDATED_BY
IdOportunidad_Id_c Id oportunidad DCLForeignKey EXTN_ATTRIBUTE_NUMBER003
CreatedBy Creado por OOTB CREATED_BY
RecursoAsignado_c Recurso Asignado DCL

OraZcxOwner_c Owner DCL

IdContacto_c Id contacto DCL

RecursoAsignado_Id_c Recurso Asignado DCLForeignKey EXTN_ATTRIBUTE_NUMBER004


OraZcxOwner_Id_c Owner DCLForeignKey OWNER_RESOURCE_ID
IdCuenta_c Id cuenta DCL

IdContacto_Id_c Id contacto DCLForeignKey EXTN_ATTRIBUTE_NUMBER001


Id Identificador de Registro OOTB ID
RecordNumber Record Number OOTB RECORD_NUMBER
LastUpdateDate Fecha de actualización OOTB LAST_UPDATE_DATE

Validations
Name Type Error Message
Rule1 Field Validation
Field Name : OraZcxOwner_Id_c
Rule1 Field Validation
Field Name : IdContacto_Id_c
Rule1 Field Validation
Field Name : IdCuenta_Id_c
Rule1 Field Validation
Field Name : IdOportunidad_Id_c
Rule1 Field Validation
Field Name : RecursoAsignado_Id_c
Rule1 Field Validation
Field Name : RecursoAnterior_Id_c

Object Workflows
Name Definition Name Event Point Description
HistoricoDeTemporalidad_c Create
_Standard_Create
HistoricoDeTemporalidad_c Delete
_Standard_Delete
HistoricoDeTemporalidad_c Update
_Standard_Update

Dynamic Layouts
Layout Name Active Role
Default custom layout 1 Yes
HistoricoDeTemporalidad_c
Historico de temporalidad
Custom
CRM
SVC_REF_ENTITIES
21
0
0
0
3
6
1

umn Name Default Value Required Updatable Searchable REST Enabl


ORD_NAME Yes Yes Yes Yes
ATION_DATE Yes Yes Yes Yes
No Yes No Yes
RENCY_CODE No Yes Yes Yes
N_ATTRIBUTE_CHAR007 No Yes No Yes
N_ATTRIBUTE_NUMBER005 No Yes No Yes
No Yes No Yes
N_ATTRIBUTE_NUMBER002 No Yes No Yes
T_UPDATED_BY Yes Yes Yes Yes
N_ATTRIBUTE_NUMBER003 No Yes No Yes
ATED_BY Yes Yes Yes Yes
No Yes No Yes
Yes Yes No Yes
No Yes No Yes
N_ATTRIBUTE_NUMBER004 No Yes No Yes
NER_RESOURCE_ID Yes Yes Yes Yes
No Yes No Yes
N_ATTRIBUTE_NUMBER001 No Yes No Yes
Yes No Yes Yes
ORD_NUMBER Yes No Yes Yes
T_UPDATE_DATE Yes Yes Yes Yes

Expression
adf.source.isLookupIdValid('OraZcxOwner_Id_c',newValue)
adf.source.isLookupIdValid('IdContacto_Id_c',newValue)

adf.source.isLookupIdValid('IdCuenta_Id_c',newValue)

adf.source.isLookupIdValid('IdOportunidad_Id_c',newValue)

adf.source.isLookupIdValid('RecursoAsignado_Id_c',newValue)

adf.source.isLookupIdValid('RecursoAnterior_Id_c',newValue)

ption Disabled Actions Expression


No return
(oracle.apps.fnd.applcore.Profile.ge
No return
(oracle.apps.fnd.applcore.Profile.ge
No return
(oracle.apps.fnd.applcore.Profile.ge

Record Type Advanced Expression


Precision MaxLength Expression
80 80
0 0
1500 1500
15 15
80 80
18 18
1500 1500
18 18
64 64
18 18
64 64
1500 1500
1500 1500
1500 1500
18 18
18 18
1500 1500
18 18
32 32
64 64
0 0
ression
rn
cle.apps.fnd.applcore.Profile.get('ZCX_CUSTOM_OBJECT_EVENTS') ==
rn
cle.apps.fnd.applcore.Profile.get('ZCX_CUSTOM_OBJECT_EVENTS') ==
rn
cle.apps.fnd.applcore.Profile.get('ZCX_CUSTOM_OBJECT_EVENTS') ==
Object Name : IntervaloCada_c
Object Name IntervaloCada_c
Object Display Name Plural Intervalo cada
Object Type Custom
Application Name CRM
Table Name HZ_REF_ENTITIES
Total number of custom fields
Total number of modified Standard fields
Total number of Triggers
Total number of Object Functions
Total number of Object Workflows
Total number of Validations
Total number of Dynamic Layouts

Custom Fields
Name Display Name Type Column Name
RecordName Código OOTB RECORD_NAME
CreationDate Fecha de Creación OOTB CREATION_DATE
CurrencyCode Currency Code FCL CURRENCY_CODE
PromocionOServicio_Id_c Promoción o servicio DCLForeignKey EXTN_ATTRIBUTE_NUMBER001
LastUpdatedBy Actualizado por OOTB LAST_UPDATED_BY
CreatedBy Creado por OOTB CREATED_BY
PromocionOServicio_c Promoción o servicio DCL

OraZcxOwner_c Owner DCL

Descripcion_c Descripción Text EXTN_ATTRIBUTE_CHAR008


Activo_c Activo Checkbox EXTN_ATTRIBUTE_CHAR007
OraZcxOwner_Id_c Owner DCLForeignKey OWNER_RESOURCE_ID
Id Identificador de Registro OOTB ID
RecordNumber Record Number OOTB RECORD_NUMBER
LastUpdateDate Fecha de Última Actualización OOTB LAST_UPDATE_DATE

Validations
Name Type Error Message
Rule1 Field Validation
Field Name : OraZcxOwner_Id_c
Rule1 Field Validation
Field Name : PromocionOServicio_Id_c

Object Workflows
Name Definition Name Event Point Description
IntervaloCada_c_Standard_ Update
Update
IntervaloCada_c_Standard_C Create
reate
IntervaloCada_c_Standard_ Delete
Delete
IntervaloCada_c
Intervalo cada
Custom
CRM
HZ_REF_ENTITIES
14
0
0
0
3
2
0

umn Name Default Value Required Updatable Searchable REST Enabl


ORD_NAME Yes Yes Yes Yes
ATION_DATE Yes No Yes Yes
RENCY_CODE No Yes Yes Yes
N_ATTRIBUTE_NUMBER001 Yes Yes Yes Yes
T_UPDATED_BY Yes Yes Yes Yes
ATED_BY Yes No Yes Yes
Yes Yes No Yes
Yes Yes No Yes
N_ATTRIBUTE_CHAR008 Yes Yes Yes Yes
N_ATTRIBUTE_CHAR007 N Yes Yes Yes Yes
NER_RESOURCE_ID Yes Yes Yes Yes
Yes No Yes Yes
ORD_NUMBER Yes No Yes Yes
T_UPDATE_DATE Yes Yes Yes Yes

Expression
adf.source.isLookupIdValid('OraZcxOwner_Id_c',newValue)

adf.source.isLookupIdValid('PromocionOServicio_Id_c',newValue)

ption Disabled Actions Expression


No return
(oracle.apps.fnd.applcore.Profile.ge
No return
(oracle.apps.fnd.applcore.Profile.ge
No return
(oracle.apps.fnd.applcore.Profile.ge
Precision MaxLength Expression
80 80
0 0
15 15
18 18
64 64
64 64
1500 1500
1500 1500
80 80
10 10
18 18
32 32
64 64
0 0

ression
rn
cle.apps.fnd.applcore.Profile.get('ZCX_CUSTOM_OBJECT_EVENTS') ==
rn
cle.apps.fnd.applcore.Profile.get('ZCX_CUSTOM_OBJECT_EVENTS') ==
rn
cle.apps.fnd.applcore.Profile.get('ZCX_CUSTOM_OBJECT_EVENTS') ==
Object Name : IntervaloHasta_c
Object Name IntervaloHasta_c
Object Display Name Plural Intervalo hasta
Object Type Custom
Application Name CRM
Table Name MOO_REF_ENTITIES
Total number of custom fields
Total number of modified Standard fields
Total number of Triggers
Total number of Object Functions
Total number of Object Workflows
Total number of Validations
Total number of Dynamic Layouts

Custom Fields
Name Display Name Type Column Name
RecordName Código OOTB RECORD_NAME
CreationDate Fecha de Creación OOTB CREATION_DATE
CurrencyCode Currency Code FCL CURRENCY_CODE
PromocionOServicio_Id_c Promoción o servicio DCLForeignKey EXTN_ATTRIBUTE_NUMBER001
LastUpdatedBy Actualizado por OOTB LAST_UPDATED_BY
CreatedBy Creado por OOTB CREATED_BY
PromocionOServicio_c Promoción o servicio DCL

OraZcxOwner_c Owner DCL

Descripcion_c Descripcion Text EXTN_ATTRIBUTE_CHAR007


Activo_c Activo Checkbox EXTN_ATTRIBUTE_CHAR008
OraZcxOwner_Id_c Owner DCLForeignKey OWNER_RESOURCE_ID
Id Identificador de Registro OOTB ID
RecordNumber Record Number OOTB RECORD_NUMBER
LastUpdateDate Fecha de Última Actualización OOTB LAST_UPDATE_DATE

Validations
Name Type Error Message
Rule1 Field Validation
Field Name : OraZcxOwner_Id_c
Rule1 Field Validation
Field Name : PromocionOServicio_Id_c

Object Workflows
Name Definition Name Event Point Description
IntervaloHasta_c_Standard_ Update
Update
IntervaloHasta_c_Standard_ Create
Create
IntervaloHasta_c_Standard_ Delete
Delete
IntervaloHasta_c
Intervalo hasta
Custom
CRM
MOO_REF_ENTITIES
14
0
0
0
3
2
0

umn Name Default Value Required Updatable Searchable REST Enabl


ORD_NAME Yes Yes Yes Yes
ATION_DATE Yes No Yes Yes
RENCY_CODE No Yes Yes Yes
N_ATTRIBUTE_NUMBER001 Yes Yes Yes Yes
T_UPDATED_BY Yes Yes Yes Yes
ATED_BY Yes No Yes Yes
Yes Yes No Yes
Yes Yes No Yes
N_ATTRIBUTE_CHAR007 Yes Yes Yes Yes
N_ATTRIBUTE_CHAR008 N Yes Yes Yes Yes
NER_RESOURCE_ID Yes Yes Yes Yes
Yes No Yes Yes
ORD_NUMBER Yes No Yes Yes
T_UPDATE_DATE Yes Yes Yes Yes

Expression
adf.source.isLookupIdValid('OraZcxOwner_Id_c',newValue)

adf.source.isLookupIdValid('PromocionOServicio_Id_c',newValue)

ption Disabled Actions Expression


No return
(oracle.apps.fnd.applcore.Profile.ge
No return
(oracle.apps.fnd.applcore.Profile.ge
No return
(oracle.apps.fnd.applcore.Profile.ge
Precision MaxLength Expression
80 80
0 0
15 15
18 18
64 64
64 64
1500 1500
1500 1500
200 200
10 10
18 18
32 32
64 64
0 0

ression
rn
cle.apps.fnd.applcore.Profile.get('ZCX_CUSTOM_OBJECT_EVENTS') ==
rn
cle.apps.fnd.applcore.Profile.get('ZCX_CUSTOM_OBJECT_EVENTS') ==
rn
cle.apps.fnd.applcore.Profile.get('ZCX_CUSTOM_OBJECT_EVENTS') ==
Object Name : IPRadioWifi_c
Object Name IPRadioWifi_c
Object Display Name Plural IP radio wifi
Object Type Custom
Application Name CRM
Table Name SVC_REF_ENTITIES
Total number of custom fields
Total number of modified Standard fields
Total number of Triggers
Total number of Object Functions
Total number of Object Workflows
Total number of Validations
Total number of Dynamic Layouts

Custom Fields
Name Display Name Type Column Name
RecordName Código OOTB RECORD_NAME
CreationDate Fecha de Creación OOTB CREATION_DATE
NodoWifi_c Nodo wifi DCL

CurrencyCode Currency Code FCL CURRENCY_CODE


LastUpdatedBy Actualizado por OOTB LAST_UPDATED_BY
CreatedBy Creado por OOTB CREATED_BY
OraZcxOwner_c Owner DCL

Oportunidad_Id_c Oportunidad DCLForeignKey EXTN_ATTRIBUTE_NUMBER001


Descripcion_c Descripción Text EXTN_ATTRIBUTE_CHAR007
Oportunidad_c Oportunidad DCL

Activo_c Activo Checkbox EXTN_ATTRIBUTE_CHAR008


OraZcxOwner_Id_c Owner DCLForeignKey OWNER_RESOURCE_ID
Id Identificador de Registro OOTB ID
RecordNumber Record Number OOTB RECORD_NUMBER
NodoWifi_Id_c Nodo wifi DCLForeignKey EXTN_ATTRIBUTE_NUMBER002
LastUpdateDate Fecha de Última Actualización OOTB LAST_UPDATE_DATE

Validations
Name Type Error Message
Rule1 Field Validation
Field Name : OraZcxOwner_Id_c
Rule1 Field Validation
Field Name : Oportunidad_Id_c
Rule1 Field Validation
Field Name : NodoWifi_Id_c
Object Workflows
Name Definition Name Event Point Description
IPRadioWifi_c_Standard_Cre Create
ate
IPRadioWifi_c_Standard_Up Update
date
IPRadioWifi_c_Standard_Del Delete
ete
IPRadioWifi_c
IP radio wifi
Custom
CRM
SVC_REF_ENTITIES
16
0
0
0
3
3
0

umn Name Default Value Required Updatable Searchable REST Enabl


ORD_NAME Yes Yes Yes Yes
ATION_DATE Yes No Yes Yes
Yes Yes No Yes
RENCY_CODE No Yes Yes Yes
T_UPDATED_BY Yes Yes Yes Yes
ATED_BY Yes No Yes Yes
Yes Yes No Yes
N_ATTRIBUTE_NUMBER001 Yes Yes Yes Yes
N_ATTRIBUTE_CHAR007 Yes Yes Yes Yes
Yes Yes No Yes
N_ATTRIBUTE_CHAR008 N Yes Yes Yes Yes
NER_RESOURCE_ID Yes Yes Yes Yes
Yes No Yes Yes
ORD_NUMBER Yes No Yes Yes
N_ATTRIBUTE_NUMBER002 Yes Yes Yes Yes
T_UPDATE_DATE Yes Yes Yes Yes

Expression
adf.source.isLookupIdValid('OraZcxOwner_Id_c',newValue)

adf.source.isLookupIdValid('Oportunidad_Id_c',newValue)

adf.source.isLookupIdValid('NodoWifi_Id_c',newValue)
ption Disabled Actions Expression
No return
(oracle.apps.fnd.applcore.Profile.ge
No return
(oracle.apps.fnd.applcore.Profile.ge
No return
(oracle.apps.fnd.applcore.Profile.ge
Precision MaxLength Expression
80 80
0 0
1500 1500
15 15
64 64
64 64
1500 1500
18 18
200 200
1500 1500
10 10
18 18
32 32
64 64
18 18
0 0
ression
rn
cle.apps.fnd.applcore.Profile.get('ZCX_CUSTOM_OBJECT_EVENTS') ==
rn
cle.apps.fnd.applcore.Profile.get('ZCX_CUSTOM_OBJECT_EVENTS') ==
rn
cle.apps.fnd.applcore.Profile.get('ZCX_CUSTOM_OBJECT_EVENTS') ==
Object Name : Lead
Object Name Lead
Object Display Name Plural Leads
Object Type OOTB
Application Name CRM
Table Name MKL_LM_LEADS
Total number of custom fields
Total number of modified Standard fields
Total number of Triggers
Total number of Object Functions
Total number of Object Workflows
Total number of Validations
Total number of Dynamic Layouts

Standard Fields
Name Display Name Help Text
CreationDate Fecha de creación
JobTitle Cargo
OrganizationName Name
Rank Clasificación Clasificación
Name Nombre de lead Nombre de lead
CustPartyType Customer Type Customer Type
PrimaryPhoneNumber Teléfono de contacto
AddrElementAttribute1 Ciudad / Canton
AddrElementAttribute2 Barrio / Sector
AddrElementAttribute3 Conjunto / Urbanización /
AddrElementAttribute4 Edificio
Referencia

Custom Fields
Name Display Name Type Column Name
AnchoDeBanda_c Ancho de Banda Text EXTN_ATTRIBUTE_CHAR051
AsignacionMensual_Id_c Asignacion Mensual DCLForeignKey EXTN_ATTRIBUTE_NUMBER003
Nombres_c Nombres Text EXTN_ATTRIBUTE_CHAR030
PortafolioDeProductos_c Portafolio de Productos Text EXTN_ATTRIBUTE_CHAR052
SectoresComercialesCuenta_c Sectores Comerciales FCL EXTN_ATTRIBUTE_CHAR028
MotivoBaja_c Motivo de Baja FCL EXTN_ATTRIBUTE_CHAR038
AntiguedadEnDias_c No_Usar Antigüedad en días FCL EXTN_ATTRIBUTE_CHAR017
LongitudL_c Longitud FCL EXTN_ATTRIBUTE_CHAR043
Origen_Id_c Origen DCLForeignKey EXTN_ATTRIBUTE_NUMBER002
LeadsAbiertos_c Leads Abiertos Number EXTN_ATTRIBUTE_NUMBER009
Canal_Id_c Canal DCLForeignKey EXTN_ATTRIBUTE_NUMBER001
AreaComercialLead_c Area Comercial - NO USAR FCL EXTN_ATTRIBUTE_CHAR020
NumeroDeDocumento_c Número de documento Text EXTN_ATTRIBUTE_CHAR004
PasaportePersona_c Pasaporte Text EXTN_ATTRIBUTE_CHAR022
CoordenadaLongitud_c Coordenada Longitud Text EXTN_ATTRIBUTE_CHAR041
SectoresComercialesPersona_c Sectores Comerciales FCL EXTN_ATTRIBUTE_CHAR024
RUCCliente_c RUC Text EXTN_ATTRIBUTE_CHAR033
SistemaOrigen_c Sistema Origen FCL EXTN_ATTRIBUTE_CHAR014
Canal_c Canal DCL

OverrideReassignment_c Override Reassignment Checkbox EXTN_ATTRIBUTE_CHAR048


UsuarioDesasignado_c Usuario Desasignado DCL

AsignacionMensual_c Asignacion Mensual DCL

Clasificacion_c Clasificación FCL EXTN_ATTRIBUTE_CHAR010


SubMotivoBaja_txt_c Sub Motivo Baja Text EXTN_ATTRIBUTE_CHAR019
IdentificadorExterno_c Identificador Externo Text EXTN_ATTRIBUTE_CHAR012
DarDeBaja_c Dar de Baja Checkbox EXTN_ATTRIBUTE_CHAR044
IdCuentaCreada_c Id cuenta creada Number EXTN_ATTRIBUTE_NUMBER008
EstadoDeTemporalidad_c Estado de temporalidad FCL EXTN_ATTRIBUTE_CHAR045
AsignacionEjecutada_c AsignacionEjecutada Datetime EXTN_ATTRIBUTE_TIMESTAMP002
Estado_c Estado FCL EXTN_ATTRIBUTE_CHAR029
Cuenta_c Cuenta existente DCL

PasaporteCuenta_c Pasaporte Cuenta Text EXTN_ATTRIBUTE_CHAR025


OwnerAsignadoRegla_c Owner Asignado por regla de AsigDCL
Cuenta_Id_c Cuenta existente DCLForeignKey EXTN_ATTRIBUTE_NUMBER188
OwnerAsignadoRegla_Id_c Owner Asignado por regla de AsigDCLForeignKey EXTN_ATTRIBUTE_NUMBER192
MotivoBajaRegestion_c MB Regestión Text EXTN_ATTRIBUTE_CHAR018
ComentariosTemporalidad_c Comentarios Temporalidad Text EXTN_ATTRIBUTE_CHAR005
NombreDeEmpresa_c Nombre de empresa Text EXTN_ATTRIBUTE_CHAR054
EdificioUrbanizacion_c Edificio/Urbanización Text EXTN_ATTRIBUTE_CHAR008
BarrioSectorConjunto_c Barrio / Sector / Conjunto Text EXTN_ATTRIBUTE_CHAR037
Ciudad_c Ciudad Text EXTN_ATTRIBUTE_CHAR016
CrearContacto_c Crear Contacto Checkbox EXTN_ATTRIBUTE_CHAR047
Latitud_c Latitud Number EXTN_ATTRIBUTE_NUMBER006
Origen_c Origen DCL

Producto_c Producto Text EXTN_ATTRIBUTE_CHAR013


EstadoTemporalidad_c Estado Temporalidad Text Formula
RUCExternoCuenta_c RUC Externo Text EXTN_ATTRIBUTE_CHAR026
RUCPersona_c RUC Text EXTN_ATTRIBUTE_CHAR023
TipoDeIdentificacion_c Tipo de Identificación FCL EXTN_ATTRIBUTE_CHAR003
RazonSocial_c Razón Social Text EXTN_ATTRIBUTE_CHAR027
TelefonoEloqua_c Teléfono Eloqua Text EXTN_ATTRIBUTE_CHAR050
TipoCM_c Área Comercial FCL EXTN_ATTRIBUTE_CHAR011
NombreComercial_c Nombre Comercial Text EXTN_ATTRIBUTE_CHAR031
AntiguedadDias_c Antigüedad en días Number EXTN_ATTRIBUTE_NUMBER005
FechaDeAsignacion_c Fecha de asignación Date EXTN_ATTRIBUTE_TIMESTAMP003
ProvinciaFixed_c Provincia FCL EXTN_ATTRIBUTE_CHAR053
MotivoOrigen_c Motivo Origen FCL EXTN_ATTRIBUTE_CHAR006
CedulaPersona_c Cédula Text EXTN_ATTRIBUTE_CHAR021
Antiguedad_c Antigüedad de días Number Formula

CoordenadaLatitud_c Coordenada Latitud Text EXTN_ATTRIBUTE_CHAR040


LatitudLV_c Latitud FCL EXTN_ATTRIBUTE_CHAR042
Contacto_Id_c Contacto DCLForeignKey EXTN_ATTRIBUTE_NUMBER190
TipoCliente_c Tipo de Cliente FCL EXTN_ATTRIBUTE_CHAR034
AntiguedadTemporalidadForm_c Antigüedad Temporalidad Text Formula

LeadId_c Lead id Text Formula

SubMotivoDeBaja_c Sub Motivo de Baja FCL EXTN_ATTRIBUTE_CHAR007


DisponibleHasta_c Disponible Hasta Date EXTN_ATTRIBUTE_TIMESTAMP001
ContactoEdificioUrbanizacion_c Contacto Edificio/Urbanización Text EXTN_ATTRIBUTE_CHAR009
UsuarioDesasignado_Id_c Usuario Desasignado DCLForeignKey EXTN_ATTRIBUTE_NUMBER189
Longitud_c Longitud Number EXTN_ATTRIBUTE_NUMBER007
Provincia_c Provincia Text EXTN_ATTRIBUTE_CHAR015
Evento_Id_c Evento DCLForeignKey EXTN_ATTRIBUTE_NUMBER191
Isla_c Isla Text EXTN_ATTRIBUTE_CHAR049
CrearCliente_c Crear Cuenta Checkbox EXTN_ATTRIBUTE_CHAR046
AntiguedadTemporalidad_c Antigüedad Temporalidad - obsoleNumber EXTN_ATTRIBUTE_NUMBER004
Evento_c Evento DCL

Contacto_c Contacto DCL

MotivoDeBajaRegestion_c Motivo Baja Regestión FCL EXTN_ATTRIBUTE_CHAR039


Apellidos_c Apellidos Text EXTN_ATTRIBUTE_CHAR032

Triggers
Name Type Trigger PointDescription Error Message Expression
setDatosContactoDin Field Trigger Modify setDatosContacto()
Field Name :
setDatosCuentaDin ContactName
Field Trigger Modify setDatosCuenta()
Field Name :
borrar_isla Cuenta_Id_c
Field Trigger Modify if(Origen_Id_c==100
Field Name :
Origen_Id_c }
else{
setAttribute('Isla_c'
}
Init_Lead Object Trigger Create def com=adf.util.usu
if(nvl(TipoCM_c,'')==
setAttribute('TipoC
}
else{
com=TipoCM_c
}
def map=[:]
map.put('CustomerI
map.put('PersonPart
map.put('CustomerP
map.put('CampaignC
map.put('CustomerA
map.put('CustomerP
map.put('PrimaryCo
map.put('SalesAccou

println('datos lead:'+
def tipoCliente=''
if(com=='MASIVO'){
tipoCliente='PERS
}
else if(com=='CORP
tipoCliente='ORGA
}
else{
tipoCliente='PERSO
}
if(nvl(PrimaryContac
tipoCliente='PERSO
}
if(nvl(Cuenta_Id_c,0
tipoCliente='ORGA
}
setAttribute('TipoCli
setAttribute('Primary
setDatosContacto()
setDatosCuenta()
buscaContactoCuenta Object Trigger BeforeInsert return true
regularizarLead()
return true
def numeroDocume
def tipoDocumento=
def busqueda=true
def setContacto=nu
if(nvl(numeroDocum
if(tipoDocumento!=
def accounts=newV
def acc=newViewCr
def accr=acc.create
def acci;
if(tipoDocumento=
acci=accr.ensureCr
}
if(tipoDocumento=
acci=accr.ensureCr
}
acci.setOperator('='
acci.setValue(nume
acc.insertRow(accr)
accounts.appendVie
accounts.executeQu
def accounte=''
while(accounts.hasN
accounte=accoun
if(nvl(accounte.Pa
//throw new ora
setCuenta=acco
busqueda=false;
}
}
if(busqueda && tip
def accounts1=new
def acc1=newViewC
def accr1=acc1.crea
def acci1='';
acci1=accr1.ensure
acci1.setOperator('=
acci1.setValue(num
acc1.insertRow(accr
accounts1.appendV
accounts1.executeQ
def accounte1=''
while(accounts1.has
accounte1=accou
if(nvl(accounte1.P
//throw new ora
setCuenta=acco
busqueda=false;
}
}
}
}
if(busqueda){
def contacts=newV
def con=newViewC
def conr=con.create
def coni='';
if(tipoDocumento=
coni=conr.ensureC
}
if(tipoDocumento=
coni=conr.ensureC
}
if(tipoDocumento=
coni=conr.ensureC
}
coni.setOperator('=
coni.setValue(nume
con.insertRow(conr
contacts.appendVie
contacts.executeQu
def conount=''
while(contacts.hasN
conount=contact
if(nvl(conount.Par
//throw new ora
setContacto=con
busqueda=false;
}
}
}
setAttribute('Accou
setAttribute('Prima
}
Temporalidad_INS Object Trigger BeforeInsert if(OwnerPartyId==3
return true
if(OwnerPartyId!=nu
setAttribute('Fecha
}
else{
setAttribute('Fecha
}
def fecha=date(2010
setAttribute('FechaD
def nullDate=new D
def fechaAsign=nvl(
if(fechaAsign!=nullD
def dias=adf.util.di
println('dias:'+dias)
setAttribute('Dispo
setAttribute('Estado
}
else{
setAttribute('Dispo
}
def tipoCliente=nvl(
def party
def idCliente
def viewName
if(tipoCliente=='PER
if(nvl(EnableCreate
party=PersonDVO
idCliente=nvl(Prima
viewName='Person
}
else if(tipoCliente==
if(nvl(EnableCreate
party=Cuenta_Obj_
idCliente=nvl(Cuen
viewName='Organ
}
if(party==null && id
def partys=newVie
def partyc=newVie
def partyr=partyc.c
def partyi=partyr.e
partyi.setOperator(
partyi.setValue(idC
partyc.insertRow(p
partys.appendView
partys.executeQuer
while(partys.hasNe
party=partys.next
}
}
if(party!=null){
if(party?.SalesProfil
party.setAttribute
}
else if(party?.SalesP
setAttribute('Estad
setAttribute('Disp
}
else if(party?.SalesP
throw new oracle.
}
}
procesosInsertLead Object Trigger BeforeInsert if(nvl(Estado_c,'')=='
setAttribute('Estado
}
if(nvl(Rank,'')==''){
setAttribute('Rank',
}
LlenadodeDocumen
transformarTelefono
DarDeBaja Object Trigger BeforeUpdate def CoordenadaLatit
def CoordenadaLon
DarDeBaja Object Trigger BeforeUpdate

/* if(isAttributeChan
if(nvl(MotivoBaja_c
throw new oracle.
}else{
setAttribute('Estad
setAttribute('Statu
setAttribute('DarD
}
*/
if((isAttributeChange
if(nvl(MotivoBaja_c
throw new oracle.jbo
}else{
setAttribute('Statu
}
if(nvl(SubMotivoDe

throw new oracle.


}else{
setAttribute('Statu
}
if((nvl(MotivoBaja_c
if((CoordenadaLat
throw new oracle
}
if((CoordenadaLat
{
def regex=/^([0-

if((!CoordenadaL
{
throw new orac
}
if(nvl(LatitudLV_c
throw new oracle.j
}
}
}
}
if(isAttributeChange
if(nvl(LatitudLV_c,'
throw new oracle.
}
}

if(isAttributeChange
//setAttribute('Estad
setAttribute('Status
setAttribute('Motiv

}
controlUpd Object Trigger BeforeUpdate //if(isAttributeChang
if(isAttributeChange
setAttribute('Estado
}
//setAttribute('Enabl
//setAttribute('Enabl
if(isAttributeChange
setAttribute('Estado
println('Antes de va
validarConversion()
def flagCrearCuenta
def flagCrearContac
if(CrearCliente_c==
println('Antes de b
if(!buscarCuenta())
println('Antes de
validarCrearCuen
flagCrearCuenta=
}
}

if(CrearContacto_c=
println('Antes de b
if(!buscarContacto
println('Antes de
validarCrearCont
flagCrearContact
}
}

if(flagCrearCuenta)
println('Antes de c
crearCuenta()
}
if(flagCrearContact
println('Antes de c
crearContacto()
}
if(isAttributeChang
println('Antes de c
convertLeadToOp
}
}
if(isAttributeChange
transformarTelefon
}
LlenadoDocumentoBe Object Trigger BeforeUpdate
fore
if(isAttributeChange
isAttributeChanged(
LlenadodeDocume
}

OrquestacionTempora Object Trigger BeforeUpdate def cliente


lidad def idClienteActual=
def tipoActual=nvl(T
def map=[:]
map.put('Nombre d
def cambioTipoClien
def cambioCuenta=
def cambioContacto
def idCuentaActual=
def idContactoActua
if(idCuentaActual!=0
setAttribute('CrearC
}
if(idContactoActual!
setAttribute('CrearC
}
def cambioCliente=f
def leadAbierto=Sta
if(tipoActual=='PERS
cliente=PersonDVO
idClienteActual=idC
}
else if(tipoActual=='
cliente=Cuenta_Ob
idClienteActual=idC
}
def tipoAnterior=''
def idCuentaAnterio
def idContactoAnter
def idClienteAnterio
def tipoClienteAnter
if(cambioTipoCliente
if(cambioTipoClien
tipoAnterior=nvl(
}
if(cambioCuenta){
idCuentaAnterior=
}
if(cambioContacto)
idContactoAnterio
}
if(tipoAnterior=='P
tipoClienteAnterio
if(idContactoAnterio
idClienteAnterior=i
}
else{
idClienteAnterior=i
}
if(idCuentaActual!
cambioCliente=tr

}
else if(tipoAnterior
tipoClienteAnterio
if(idCuentaAnterior=
idClienteAnterior=i
}
else{
idClienteAnterior=i
}
if(idContactoActu
cambioCliente=tr
}
else if(tipoActual==
if(cambioCuenta){
tipoClienteAnterior
idClienteAnterior=i
cambioCliente=t
}
}
else if(tipoActual==
if(cambioContacto
tipoClienteAnterior
idClienteAnterior=i
cambioCliente=t
}
}
}

if(idClienteAnterior!=
//println('Actualizar
if(tipoClienteAnteri
def partys
if(tipoClienteAnte
partys=newView
}
else if(tipoClienteA
partys=newView
}
def partyc=newVi
def partyr=partyc
def partyi=partyr.
partyi.setOperato
partyi.setValue(idC
partyc.insertRow(p
partys.appendVie
partys.executeQue
while(partys.hasN
//println('Pude e
def party=partys
def leadsAbiertos=
if(leadsAbiertos>
party.setAttribute
}
}
}
def fechaAsignacion
def statusTemporalid
def oportunidadesA
if(cliente!=null){
oportunidadesAbie
}
def previousOwnerId
def cambioOwner=i
def cambioStatus=is

if((cambioOwner||ca
//println('Determin
if(cambioOwner){
fechaAsignacion=
if(OverrideReassig
def mapCliente=
if(idClienteAnter
cliente.setAttrib
cliente.setAttrib
mapCliente.put
mapCliente.put
mapCliente.put
adf.util.reasigna
}
}
}
statusTemporalidad
def currentOwnerId
def usuarioGeneric
def usuarioGeneric
def usuarioGeneric
if(TipoCM_c=='MA
usuarioGenericoId
}
if(TipoCM_c=='COR
usuarioGenericoId
}
def leadsAbiertos=
if(cliente!=null)
leadsAbiertos=nvl(
fechaAsignacion=n
def disponibleHast
if(!leadAbierto || cu
//println('El status
if(!leadAbierto||op
statusTemporalidad
if(cambioCliente&&
cliente.setAttrib
}
if(cambioStatus&
def previousSta
if(previousStatu
if(leadsAbierto
cliente.setAttribut
}
}
}
}
else{
statusTemporalidad
}
if(currentOwnerId
if(cambioOwner)
if(previousOwn
setAttribute('U
def team=Mkl
while(team.ha
def member=
if(member.Pa
member.rem
}
}
fechaAsignacio
}
}
}
else{
//println('El Status
statusTemporalida
disponibleHasta=
if(cambioStatus || ca
if((cambioStatus||ca
def previousStatu
if(((cambioStatu
cliente.setAttr
}
}
if(cambioOwner)
if((currentOwne
&&OverrideReassign
cliente.setAttr
}
else if((previous
&&OverrideReassign
cliente.setAttr
}
}
fechaAsignacion
def fecha=date(2
def dias=adf.util
disponibleHasta=
}
}
setAttribute('Estado
setAttribute('Dispo
if((previousOwnerId
currentOwnerId != u
setAttribute('Fecha
}
map.put('usuarioGe
map.put('disponibl
}
if(OverrideReassignm
setAttribute('Overr
}
map.put('tipoActual
map.put('statusTemp
map.put('idClienteA
map.put('idClienteA
map.put('fechaAsign
map.put('leadAbiert
map.put('oportunida
map.put('cambioClie
////println(''+map)

Validations
Name Type Error Message Expression
Validar_telefono Object Validation El código de área y el número de return true
teléfono sólo pueden tener caracteres def phoneNumber=
numéricos def areaCode=nvl(P
def okFormat=phon
if(!okFormat)
throw new oracle.jbo
en blanco,
return true guiones,
validarTipoDeCliente Object Validation El tipo de cliente es obligatorio if(getPrimaryRowSta
return true
if(nvl(TipoCliente_c,'
throw new oracle.jb
}
if(TipoCliente_c=='P
def contact=Person

}
return true
validaOwner Object Validation No tienes permisos para editar este lead if(getPrimaryRowSta
validaOwner Object Validation No tienes permisos para editar este lead
return true
if(adf.util.usuarioAdm
return true
}
def cliente
if(TipoCliente_c=='O
cliente=Cuenta_Ob
}
else if(TipoCliente_c=
cliente=PersonDVO
}
def moc=nvl(TipoCM
def genericoMasivo=
def genericoCorpora
def ownerLead=nvl(

def tipoUsuario=adf
def usuarioMasivo=
def prevOwner=getO
if(cliente!=null && o
adf.util.usuarioMasiv
def ownerCliente=n
if(ownerCliente==0
def partys
def clienteId=0
if(TipoCliente_c==
clienteId=nvl(Cu
partys=newView
}
else if(TipoCliente
clienteId=nvl(Pri
partys=newView
}
if(clienteId!=0){
def partyc=newV
def partyr=party
def partyi=party
partyi.setOperato
partyi.setValue(c
partyc.insertRow
partys.appendVi
partys.executeQu
while(partys.hasN
def party=party
ownerCliente=p
}
}
if(ownerCliente!=O
throw new oracle
}
}
}
def currentUsernam

def resources=newV
def resourcec=newV
def resourcer=resou
def resourcei=resou
resourcei.setOperato
resourcei.setValue(c
resourcec.insertRow
resources.appendVie
resources.executeQu
def currentUserId
while(resources.hasN
def resource=resou
currentUserId=reso
}

if( isAttributeChange
if(OwnerId!=curren
throw new oracle.
}
def usuarioDesasig
if((prevOwner==ge
def fechaNull=new
def fechaAsignaci
if(usuarioDesasign
return true
}
else{
throw new oracle
asignación')
}
}
else if(OwnerId!=pr
throw new oracle.
}
}
else{
if(OwnerId!=curren
def team=MklLead
def partOfTeam=f
while(team.hasNe
def member=tea
if(member.PartyI
partOfTeam=tr
}
}
if(!partOfTeam){
if(!adf.util.usuario
throw new orac
}
}
}
}
return true
Rule1 Field Validation adf.source.isLookup
Field Name : Canal_Id_c
Rule1 Field Validation adf.source.isLookup
Field Name : Origen_Id_c
Rule1 Field Validation adf.source.isLookup
Field Name : AsignacionMensual_Id_c
Rule1 Field Validation adf.source.isLookup
Field Name : Cuenta_Id_c
Rule1 Field Validation adf.source.isLookup
Field Name :
UsuarioDesasignado_Id_c
Rule1 Field Validation adf.source.isLookup
Field Name : Contacto_Id_c
Rule1 Field Validation adf.source.isLookup
Field Name : Evento_Id_c
Rule1 Field Validation adf.source.isLookup
Field Name :
OwnerAsignadoRegla_Id_c

Object Functions
Name Parameters Return Type Privileged Visibility Description
ConversionL void No Callable by
eads External
Systems
LlenadodeD void No Default
ocumentoLe
ad
leadsAbierto void No Default
s

regularizarLe void No Default


ad
setDatosCue void No Default
nta

setDatosCon void No Default


tacto
crearCuenta void No Default
crearContact void No Default
o
conversionL void No Default
eadGroovy

heredarDato void No Callable by


sOportunida External
d Systems
validarCrear void No Default
Cuenta
validarCrear void No Default
Contacto
leadValido Boolean No Default

aplicarRegla List No Default


sTemporalid
ad
reasignacion void No Callable by
Cascada External
Systems

buscarCuent Boolean No Default


a
buscarConta Boolean No Default
cto
validarConve void No Default
rsion
getClienteId Long No Default

transformarT void No Default


elefonoEloq
ua

Object Workflows
Name Definition Name Event Point Description
reasignacionCascada reasignacionCascada Update

heredarInfoAOportunidad heredarInfoAOportunidad Update


ConversionLead ConversionLead Update

Dynamic Layouts
Layout Name Active Role
ADMIN Yes
Landing Masivo Yes USUARIO_MASIVO;
Landing Corporativo Yes
Creación Admin Yes ADMIN_GENERAL_PNT;
Creacion Masivo No USUARIO_MASIVO;
Creación Corporativo Contacto 2 Yes
Creacion Corporativo Persona No
Creacion Corporativo Yes
Detalles Admin 2 Yes ADMIN_GENERAL_PNT;
Detalle masivo convertido Yes EJECUTIVO_MASIVO;USUARIO_MASIVO;
Diseño Masivo Contacto Yes USUARIO_MASIVO;EJECUTIVO_MASIVO;
Diseño Masivo Cuenta Yes USUARIO_MASIVO;EJECUTIVO_MASIVO;
Lead Admin No ADMIN_GENERAL_PNT;
Detalles Masivo No USUARIO_MASIVO;
Detalle corporativo convertida Yes
Detalles Corporativo Persona Yes
Detalles Corporativo Cuenta Yes
Diseño personalizado por defecto Yes
d
ds
B
M
_LM_LEADS
79
11
11
20
3
11
18

Searchable
Yes
No
Yes
Yes
Yes
Yes
Yes
No
No
No
No

Name Default Value Required Updatable Searchable REST Enabl


RIBUTE_CHAR051 No Yes No Yes
RIBUTE_NUMBER003 No Yes Yes Yes
RIBUTE_CHAR030 No Yes Yes Yes
RIBUTE_CHAR052 No Yes No Yes
RIBUTE_CHAR028 No Yes No Yes
RIBUTE_CHAR038 No Yes Yes Yes
RIBUTE_CHAR017 No Yes No Yes
RIBUTE_CHAR043 OESTE No Yes No Yes
RIBUTE_NUMBER002 Yes Yes Yes Yes
RIBUTE_NUMBER009 No Yes No Yes
RIBUTE_NUMBER001 Yes Yes Yes Yes
RIBUTE_CHAR020 No Yes No Yes
RIBUTE_CHAR004 No Yes No Yes
RIBUTE_CHAR022 No Yes No Yes
RIBUTE_CHAR041 No Yes No Yes
RIBUTE_CHAR024 No Yes No Yes
RIBUTE_CHAR033 No Yes Yes Yes
RIBUTE_CHAR014 No Yes Yes Yes
Yes Yes No Yes
RIBUTE_CHAR048 N Yes Yes No Yes
No Yes No Yes
No Yes No Yes
RIBUTE_CHAR010 No Yes No Yes
RIBUTE_CHAR019 No Yes No Yes
RIBUTE_CHAR012 No Yes No Yes
RIBUTE_CHAR044 N Yes Yes No Yes
RIBUTE_NUMBER008 No Yes No Yes
RIBUTE_CHAR045 No Yes No Yes
RIBUTE_TIMESTAMP002 No Yes Yes Yes
RIBUTE_CHAR029 No Yes No Yes
No Yes No Yes
RIBUTE_CHAR025 No Yes No Yes
No Yes No Yes
RIBUTE_NUMBER188 No Yes Yes Yes
RIBUTE_NUMBER192 No Yes No Yes
RIBUTE_CHAR018 No Yes No Yes
RIBUTE_CHAR005 No Yes No Yes
RIBUTE_CHAR054 No Yes No Yes
RIBUTE_CHAR008 No Yes No Yes
RIBUTE_CHAR037 No Yes Yes Yes
RIBUTE_CHAR016 No Yes No Yes
RIBUTE_CHAR047 N Yes Yes No Yes
RIBUTE_NUMBER006 No Yes Yes Yes
Yes Yes No Yes
RIBUTE_CHAR013 No Yes No Yes
No No No Yes
RIBUTE_CHAR026 No Yes No Yes
RIBUTE_CHAR023 No Yes Yes Yes
RIBUTE_CHAR003 No Yes Yes Yes
RIBUTE_CHAR027 No Yes No Yes
RIBUTE_CHAR050 No Yes No Yes
RIBUTE_CHAR011 Yes Yes Yes Yes
RIBUTE_CHAR031 No Yes No Yes
RIBUTE_NUMBER005 No No Yes Yes
RIBUTE_TIMESTAMP003 No Yes No Yes
RIBUTE_CHAR053 No Yes No Yes
RIBUTE_CHAR006 No Yes No Yes
RIBUTE_CHAR021 No Yes No Yes
No No No Yes
RIBUTE_CHAR040 No Yes No Yes
RIBUTE_CHAR042 No Yes No Yes
RIBUTE_NUMBER190 No Yes No Yes
RIBUTE_CHAR034 No Yes Yes Yes
No No No Yes

No No No Yes
RIBUTE_CHAR007 No Yes No Yes
RIBUTE_TIMESTAMP001 No Yes No Yes
RIBUTE_CHAR009 No Yes No Yes
RIBUTE_NUMBER189 No Yes No Yes
RIBUTE_NUMBER007 No Yes Yes Yes
RIBUTE_CHAR015 No Yes No Yes
RIBUTE_NUMBER191 No Yes Yes Yes
RIBUTE_CHAR049 Yes Yes No Yes
RIBUTE_CHAR046 N Yes Yes No Yes
RIBUTE_NUMBER004 No Yes No Yes
No Yes No Yes
No Yes No Yes
RIBUTE_CHAR039 No Yes No Yes
RIBUTE_CHAR032 No Yes No Yes

Expression
setDatosContacto()

setDatosCuenta()

if(Origen_Id_c==100000104471653 ||Origen_Id_c==100000104471662){

}
else{
setAttribute('Isla_c','')
}
def com=adf.util.usuarioMasivoCorporativo()
if(nvl(TipoCM_c,'')==''){
setAttribute('TipoCM_c',com)
}
else{
com=TipoCM_c
}
def map=[:]
map.put('CustomerId',CustomerId)
map.put('PersonPartyVO',PersonPartyVO)
map.put('CustomerPersonProfileId',CustomerPersonProfileId)
map.put('CampaignContactId',CampaignContactId)
map.put('CustomerAccountId',CustomerAccountId)
map.put('CustomerPartyId',CustomerPartyId)
map.put('PrimaryContactId',PrimaryContactId)
map.put('SalesAccountPartyId',SalesAccountPartyId)

println('datos lead:'+map)
def tipoCliente=''
if(com=='MASIVO'){
tipoCliente='PERSON'
}
else if(com=='CORPORATIVO'){
tipoCliente='ORGANIZATION'
}
else{
tipoCliente='PERSON'
}
if(nvl(PrimaryContactId,0 as Long)!=0){
tipoCliente='PERSON'
}
if(nvl(Cuenta_Id_c,0 as BigDecimal)!=0){
tipoCliente='ORGANIZATION'
}
setAttribute('TipoCliente_c',tipoCliente)
setAttribute('PrimaryPhoneCountryCode','593')
setDatosContacto()
setDatosCuenta()
return true
regularizarLead()
return true
def numeroDocumento=getAttribute('NumeroDeDocumento_c');
def tipoDocumento=getAttribute('TipoDeIdentificacion_c');
def busqueda=true
def setContacto=null, setCuenta=null
if(nvl(numeroDocumento,null)!=null && nvl(tipoDocumento,null)!=null){
if(tipoDocumento!="C"){
def accounts=newView('OrganizationProfile')
def acc=newViewCriteria(accounts)
def accr=acc.createRow()
def acci;
if(tipoDocumento=="R"){
acci=accr.ensureCriteriaItem('JgzzFiscalCode')
}
if(tipoDocumento=="P"){
acci=accr.ensureCriteriaItem('Pasaporte_c')
}
acci.setOperator('=')
acci.setValue(numeroDocumento)
acc.insertRow(accr)
accounts.appendViewCriteria(acc)
accounts.executeQuery()
def accounte=''
while(accounts.hasNext()){
accounte=accounts.next()
if(nvl(accounte.PartyId,null)!=null){
//throw new oracle.jbo.ValidationException("El numero de documento: '"+numeroDocumento+"' está duplicado en la cuenta '"+ac
setCuenta=accounte.PartyNumber;
busqueda=false;
}
}
if(busqueda && tipoDocumento=="R"){
def accounts1=newView('OrganizationProfile')
def acc1=newViewCriteria(accounts1)
def accr1=acc1.createRow()
def acci1='';
acci1=accr1.ensureCriteriaItem('RUCExterno_c')
acci1.setOperator('=')
acci1.setValue(numeroDocumento)
acc1.insertRow(accr1)
accounts1.appendViewCriteria(acc1)
accounts1.executeQuery()
def accounte1=''
while(accounts1.hasNext()){
accounte1=accounts1.next()
if(nvl(accounte1.PartyId,null)!=null){
//throw new oracle.jbo.ValidationException("El numero de documento: '"+numeroDocumento+"' está duplicado en la cuenta '"+ac
setCuenta=accounte1.PartyNumber;
busqueda=false;
}
}
}
}
if(busqueda){
def contacts=newView('PersonProfile')
def con=newViewCriteria(contacts)
def conr=con.createRow()
def coni='';
if(tipoDocumento=="R"){
coni=conr.ensureCriteriaItem('JgzzFiscalCode')
}
if(tipoDocumento=="P"){
coni=conr.ensureCriteriaItem('NumeroDePasaporte_c')
}
if(tipoDocumento=="C"){
coni=conr.ensureCriteriaItem('NumeroDeCedula_c')
}
coni.setOperator('=')
coni.setValue(numeroDocumento)
con.insertRow(conr)
contacts.appendViewCriteria(con)
contacts.executeQuery()
def conount=''
while(contacts.hasNext()){
conount=contacts.next()
if(nvl(conount.PartyId,null)!=null){
//throw new oracle.jbo.ValidationException("El numero de documento: '"+numeroDocumento+"' está duplicado en el contacto '"+c
setContacto=conount.PartyId;
busqueda=false;
}
}
}
setAttribute('AccountPartyNumber',setCuenta);
setAttribute('PrimaryContactId',setContacto);
}
if(OwnerPartyId==300000029783351)
return true
if(OwnerPartyId!=null){
setAttribute('FechaDeAsignacion_c',today())
}
else{
setAttribute('FechaDeAsignacion_c',null)
}
def fecha=date(2010,01,01)
setAttribute('FechaDeAsignacion_c',today())
def nullDate=new Date(01,01,01)
def fechaAsign=nvl(FechaDeAsignacion_c,nullDate)
if(fechaAsign!=nullDate){
def dias=adf.util.diasTemporalidad(nvl(TipoCM_c,''),'LEAD','')
println('dias:'+dias)
setAttribute('DisponibleHasta_c',nvl(FechaDeAsignacion_c,today())+dias.toInteger())
setAttribute('EstadoDeTemporalidad_c','ACTIVA')
}
else{
setAttribute('DisponibleHasta_c',null)
}
def tipoCliente=nvl(TipoCliente_c,'')
def party
def idCliente
def viewName
if(tipoCliente=='PERSON'){
if(nvl(EnableCreateContact,'N')=='N')
party=PersonDVO
idCliente=nvl(PrimaryContactId,0 as Long)
viewName='PersonProfile'
}
else if(tipoCliente=='ORGANIZATION'){
if(nvl(EnableCreateAccount,'N')=='N')
party=Cuenta_Obj_c
idCliente=nvl(Cuenta_Id_c, 0 as BigDecimal)
viewName='OrganizationProfile'
}
if(party==null && idCliente!=0){
def partys=newView(viewName)
def partyc=newViewCriteria(partys)
def partyr=partyc.createRow()
def partyi=partyr.ensureCriteriaItem('PartyId')
partyi.setOperator('=')
partyi.setValue(idCliente)
partyc.insertRow(partyr)
partys.appendViewCriteria(partyc )
partys.executeQuery()
while(partys.hasNext()){
party=partys.next()
}
}
if(party!=null){
if(party?.SalesProfileType=='ZCA_PROSPECT'){
party.setAttribute('LeadsAbiertos_c',nvl(party.LeadsAbiertos_c,0 as BigDecimal)+1)
}
else if(party?.SalesProfileType=='ZCA_CUSTOMER'){
setAttribute('EstadoDeTemporalidad_c','INACTIVA')
setAttribute('DisponibleHasta_c',null)
}
else if(party?.SalesProfileType=='ZCA_CONTACT'){
throw new oracle.jbo.ValidationException('No es posible elegir un contacto tipo Contacto como cliente.')
}
}
if(nvl(Estado_c,'')==''){
setAttribute('Estado_c','NUEVO')
}
if(nvl(Rank,'')==''){
setAttribute('Rank','COOL')
}
LlenadodeDocumentoLead()
transformarTelefonoEloqua()
def CoordenadaLatitud=nvl(CoordenadaLatitud_c,'')
def CoordenadaLongitud=nvl(CoordenadaLongitud_c,'')
/* if(isAttributeChanged('DarDeBaja_c')&& DarDeBaja_c=='Y' || isAttributeChanged('MotivoBaja_c') || isAttributeChanged('SubMotivoDe
if(nvl(MotivoBaja_c,'')==''){
throw new oracle.jbo.ValidationException('Se requiere agregar un motivo de baja ')
}else{
setAttribute('Estado_c','DADO_DE_BAJA')
setAttribute('StatusCode','RETIRED')
setAttribute('DarDeBaja_c','N')
}
*/
if((isAttributeChanged('Estado_c')&& Estado_c=='DADO_DE_BAJA') || isAttributeChanged('MotivoBaja_c') || isAttributeChanged('SubMo
if(nvl(MotivoBaja_c,'')==''){
throw new oracle.jbo.ValidationException('(BDS)Se requiere agregar un motivo de baja ')
}else{
setAttribute('StatusCode','RETIRED')
}
if(nvl(SubMotivoDeBaja_c,'')==''&& (MotivoBaja_c =='NO_DESEA' ||
MotivoBaja_c =='NO_APLICA' ||
MotivoBaja_c =='YA_CONTRATO_SERVICIO' ||
MotivoBaja_c =='NO_COBERTURA' ||
MotivoBaja_c =='NO_APLICA_SCORE' ||
MotivoBaja_c =='VOLVER_A_LLAMAR' ||
MotivoBaja_c =='VENTA_FUTURA')){
throw new oracle.jbo.ValidationException('(BDS)Se requiere agregar un Sub Motivo de baja ')
}else{
setAttribute('StatusCode','RETIRED')
}
if((nvl(MotivoBaja_c,'')=='NO_COBERTURA')&&(SubMotivoDeBaja_c='CIUDAD_SIN_COBERTURA')) {
if((CoordenadaLatitud == '') && (CoordenadaLongitud == '')) {
throw new oracle.jbo.ValidationException('(BDS)Favor de colocar coordenadas de latitud y longitud')
}
if((CoordenadaLatitud != '') || (CoordenadaLongitud != ''))
{
def regex=/^([0-9]{3})\°([0-9]{2})\'([0-9]{2})\.([0-9]{2})$/

if((!CoordenadaLatitud.matches(regex)) || (!CoordenadaLongitud.matches(regex)))
{
throw new oracle.jbo.ValidationException('(BDS) La Longitud y/o Lalitud no tienen un formato correcto o no se encuentran dentro
}
if(nvl(LatitudLV_c,'')==''){
throw new oracle.jbo.ValidationException('(BDS)Favor de colocar latitud (Norte o Sur)')
}
}
}
}
if(isAttributeChanged('LatitudLV_c')&&Estado_c=='DADO_DE_BAJA'){
if(nvl(LatitudLV_c,'')==''){
throw new oracle.jbo.ValidationException('(BDS)Favor de colocar latitud (Norte o Sur)')
}
}

if(isAttributeChanged('Estado_c')&& Estado_c=='NUEVO' &&StatusCode=='RETIRED'){


//setAttribute('Estado_c','NUEVO')
setAttribute('StatusCode','UNQUALIFIED')
setAttribute('MotivoBaja_c','')

}
//if(isAttributeChanged('TipoCliente_c')||isAttributeChanged('TipoDeDocumento_c')||
if(isAttributeChanged('StatusCode')&& StatusCode=='RETIRED' ){
setAttribute('Estado_c','DADO_DE_BAJA')
}
//setAttribute('EnableCreateAccount',CrearCliente_c)
//setAttribute('EnableCreateContact',CrearContacto_c)
if(isAttributeChanged('StatusCode')&&StatusCode=='CONVERTED' || isAttributeChanged('Rank')&&Rank=='HOT'){
setAttribute('Estado_c','CONVERTIDO')
println('Antes de validar conversión')
validarConversion()
def flagCrearCuenta=false
def flagCrearContacto=false
if(CrearCliente_c=='Y' &&TipoCliente_c=='ORGANIZATION'){
println('Antes de buscarCuenta')
if(!buscarCuenta()){
println('Antes de validarCrearCuenta')
validarCrearCuenta()
flagCrearCuenta=true
}
}

if(CrearContacto_c=='Y'){
println('Antes de buscarContacto')
if(!buscarContacto()){
println('Antes de validarCrearContacto')
validarCrearContacto()
flagCrearContacto=true
}
}

if(flagCrearCuenta){
println('Antes de crearCuenta')
crearCuenta()
}
if(flagCrearContacto){
println('Antes de crearContacto')
crearContacto()
}
if(isAttributeChanged('Rank')&&Rank=='HOT' && StatusCode!='CONVERTED' ){
println('Antes de convertLeadToOpty')
convertLeadToOpty(LeadId, Name, OwnerResource.PartyNumber,'N', 'N', [:]);
}
}
if(isAttributeChanged('TelefonoEloqua_c')){
transformarTelefonoEloqua()
}

if(isAttributeChanged('RUCPersona_c')|| isAttributeChanged('RUCCliente_c') || isAttributeChanged('RUCExternoCuenta_c') || isAttributeC


isAttributeChanged('PasaporteCuenta_c')
LlenadodeDocumentoLead() || isAttributeChanged('CedulaPersona_c') || isAttributeChanged('TipoDeIdentificacion_c')||
}

def cliente
def idClienteActual=0
def tipoActual=nvl(TipoCliente_c,'')
def map=[:]
map.put('Nombre de lead',Name)
def cambioTipoCliente=isAttributeChanged('TipoCliente_c')
def cambioCuenta=isAttributeChanged('Cuenta_Id_c')
def cambioContacto=isAttributeChanged('PrimaryContactId')
def idCuentaActual=nvl(Cuenta_Id_c,0 as BigDecimal)
def idContactoActual=nvl(PrimaryContactId,0 as Long)
if(idCuentaActual!=0){
setAttribute('CrearCliente_c','N')
}
if(idContactoActual!=0){
setAttribute('CrearContacto_c','N')
}
def cambioCliente=false
def leadAbierto=StatusCode=='UNQUALIFIED'||StatusCode=='QUALIFIED'
if(tipoActual=='PERSON'){
cliente=PersonDVO
idClienteActual=idContactoActual
}
else if(tipoActual=='ORGANIZATION'){
cliente=Cuenta_Obj_c
idClienteActual=idCuentaActual
}
def tipoAnterior=''
def idCuentaAnterior=0
def idContactoAnterior=0
def idClienteAnterior=0
def tipoClienteAnterior=''
if(cambioTipoCliente||cambioCuenta||cambioContacto){
if(cambioTipoCliente){
tipoAnterior=nvl(getOriginalAttributeValue('TipoCliente_c'),'')
}
if(cambioCuenta){
idCuentaAnterior=nvl(getOriginalAttributeValue('Cuenta_Id_c'),0 as BigDecimal)
}
if(cambioContacto){
idContactoAnterior=nvl(getOriginalAttributeValue('PrimaryContactId'),0 as Long)
}
if(tipoAnterior=='PERSON'){
tipoClienteAnterior='PERSON'
if(idContactoAnterior==0){
idClienteAnterior=idContactoActual
}
else{
idClienteAnterior=idContactoAnterior
}
if(idCuentaActual!=0&&tipoActual!='')
cambioCliente=true

}
else if(tipoAnterior=='ORGANIZATION'){
tipoClienteAnterior='ORGANIZATION'
if(idCuentaAnterior==0){
idClienteAnterior=idCuentaActual
}
else{
idClienteAnterior=idCuentaAnterior
}
if(idContactoActual!=0&&tipoActual!='')
cambioCliente=true
}
else if(tipoActual=='ORGANIZATION'){
if(cambioCuenta){
tipoClienteAnterior='ORGANIZATION'
idClienteAnterior=idCuentaAnterior
cambioCliente=true
}
}
else if(tipoActual=='PERSON'){
if(cambioContacto){
tipoClienteAnterior='PERSON'
idClienteAnterior=idContactoAnterior
cambioCliente=true
}
}
}

if(idClienteAnterior!=0){
//println('Actualizar leads en cliente anterior, de tipo ' + tipoClienteAnterior +' con el iD de cliente ' +idClienteAnterior)
if(tipoClienteAnterior=='PERSON'||tipoClienteAnterior=='ORGANIZATION'){
def partys
if(tipoClienteAnterior=='ORGANIZATION'){
partys=newView('OrganizationProfile')
}
else if(tipoClienteAnterior=='PERSON'){
partys=newView('PersonProfile')
}
def partyc=newViewCriteria(partys)
def partyr=partyc.createRow()
def partyi=partyr.ensureCriteriaItem('PartyId')
partyi.setOperator('=')
partyi.setValue(idClienteAnterior)
partyc.insertRow(partyr)
partys.appendViewCriteria(partyc)
partys.executeQuery()
while(partys.hasNext()){
//println('Pude encontrar un registro dentro de la vista')
def party=partys.next()
def leadsAbiertos=nvl(party.LeadsAbiertos_c,0 as BigDecimal)
if(leadsAbiertos>0)
party.setAttribute('LeadsAbiertos_c',leadsAbiertos-1)
}
}
}
def fechaAsignacion
def statusTemporalidad
def oportunidadesAbiertas=0 as BigDecimal
if(cliente!=null){
oportunidadesAbiertas= nvl(cliente.OportunidadesAbiertas_c,0 as BigDecimal)
}
def previousOwnerId=nvl(getOriginalAttributeValue('OwnerId') as Long,0 as Long)
def cambioOwner=isAttributeChanged('OwnerId') && previousOwnerId!=ownerId
def cambioStatus=isAttributeChanged('StatusCode')

if((cambioOwner||cambioCliente||cambioStatus||oportunidadesAbiertas>0)){
//println('Determinar status temporalidad')
if(cambioOwner){
fechaAsignacion=today()
if(OverrideReassignment_c!='Y' && TipoCM_c=='CORPORATIVO'){
def mapCliente=[:]
if(idClienteAnterior!=0){
cliente.setAttribute('OwnerPartyId',ownerId)
cliente.setAttribute('OverrideReassignment_c','Y')
mapCliente.put('customerId',idClienteActual)
mapCliente.put('ownerId',ownerId)
mapCliente.put('tipoCliente',tipoActual)
adf.util.reasignarListaClientes([mapCliente])
}
}
}
statusTemporalidad=nvl(EstadoDeTemporalidad_c,'')
def currentOwnerId=nvl(OwnerId,0 as Long)
def usuarioGenericoId
def usuarioGenericoMasivo=adf.util.usuarioGenericoMasivo()
def usuarioGenericoCorporativo=adf.util.usuarioGenericoCorporativo()
if(TipoCM_c=='MASIVO'){
usuarioGenericoId=usuarioGenericoMasivo
}
if(TipoCM_c=='CORPORATIVO'){
usuarioGenericoId=usuarioGenericoCorporativo
}
def leadsAbiertos=0
if(cliente!=null)
leadsAbiertos=nvl(cliente.LeadsAbiertos_c,0 as BigDecimal)as Long
fechaAsignacion=nvl(FechaDeAsignacion_c,today())
def disponibleHasta=DisponibleHasta_c
if(!leadAbierto || currentOwnerId==usuarioGenericoMasivo || currentOwnerId==usuarioGenericoCorporativo||oportunidadesAbiertas>
//println('El status de la temporalidad no será ACTIVO')
if(!leadAbierto||oportunidadesAbiertas>0 ){
statusTemporalidad='INACTIVA'
if(cambioCliente&&leadAbierto&&oportunidadesAbiertas>0 &&OverrideReassignment_c!='Y'){
cliente.setAttribute('LeadsAbiertos_c',leadsAbiertos+1)
}
if(cambioStatus&&!leadAbierto){
def previousStatus=getOriginalAttributeValue('StatusCode')
if(previousStatus=='QUALIFIED'||previousStatus=='UNQUALIFIED'){
if(leadsAbiertos>0&&OverrideReassignment_c!='Y'){
cliente.setAttribute('LeadsAbiertos_c',leadsAbiertos-1)
}
}
}
}
else{
statusTemporalidad='DESASIGNADO'
}
if(currentOwnerId==usuarioGenericoMasivo || currentOwnerId==usuarioGenericoCorporativo){
if(cambioOwner){
if(previousOwnerId!=0){
setAttribute('UsuarioDesasignado_Id_c',adf.util.getResourceProfileId(previousOwnerId))
def team=MklLeadResources
while(team.hasNext()){
def member=team.next()
if(member.PartyId==previousOwnerId)
member.remove()
}
}
fechaAsignacion=today()
}
}
}
else{
//println('El Status será activo')
statusTemporalidad='ACTIVA'
disponibleHasta=DisponibleHasta_c
if(cambioStatus || cambioOwner || cambioCliente){
if((cambioStatus||cambioCliente)&&leadAbierto){
def previousStatus=getOriginalAttributeValue('StatusCode')
if(((cambioStatus&&(previousStatus=='RETIRED'||previousStatus=='CONVERTED'))||cambioCliente)&&cliente!=null &&OverrideRe
cliente.setAttribute('LeadsAbiertos_c',leadsAbiertos+1)
}
}
if(cambioOwner){
if((currentOwnerId==usuarioGenericoMasivo || currentOwnerId==usuarioGenericoCorporativo) &&previousOwnerId!=currentOwn
&&OverrideReassignment_c!='Y' &&cliente!=null ){
cliente.setAttribute('LeadsAbiertos_c',leadsAbiertos-1)
}
else if((previousOwnerId==usuarioGenericoMasivo || previousOwnerId==usuarioGenericoCorporativo) &&previousOwnerId!=curr
&&OverrideReassignment_c!='Y' &&cliente!=null ){
cliente.setAttribute('LeadsAbiertos_c',leadsAbiertos+1)
}
}
fechaAsignacion=today()
def fecha=date(2001,01,01)
def dias=adf.util.diasTemporalidad(nvl(TipoCM_c,''),'CUENTA','')
disponibleHasta=fechaAsignacion+dias.toInteger()
}
}
setAttribute('EstadoDeTemporalidad_c',statusTemporalidad)
setAttribute('DisponibleHasta_c',disponibleHasta)
if((previousOwnerId == usuarioGenericoMasivo || previousOwnerId == usuarioGenericoCorporativo) && (currentOwnerId != usuarioG
currentOwnerId != usuarioGenericoMasivo) ){
setAttribute('FechaDeAsignacion_c',fechaAsignacion)
}
map.put('usuarioGenericoId',usuarioGenericoId)
map.put('disponibleHasta',disponibleHasta)
}
if(OverrideReassignment_c=='Y'){
setAttribute('OverrideReassignment_c','N')
}
map.put('tipoActual',tipoActual)
map.put('statusTemporalidad',statusTemporalidad)
map.put('idClienteActual',idClienteActual)
map.put('idClienteAnterior',idClienteAnterior)
map.put('fechaAsignacion',fechaAsignacion)
map.put('leadAbierto',leadAbierto)
map.put('oportunidadesAbiertas',oportunidadesAbiertas)
map.put('cambioCliente',cambioCliente)
////println(''+map)

Expression
return true
def phoneNumber=nvl(PrimaryPhoneNumber,'0')
def areaCode=nvl(PrimaryPhoneAreaCode,'0')
def okFormat=phoneNumber.isInteger() && areaCode.isInteger()
if(!okFormat)
throw new oracle.jbo.ValidationException('El código de área y el número de teléfono sólo pueden tener caracteres numéricos. Favor de
en blanco,
return true guiones, ni ningún otro caracter que no sea número.')
if(getPrimaryRowState().isNew())
return true
if(nvl(TipoCliente_c,'')==''){
throw new oracle.jbo.ValidationException('El tipo de cliente es obligatorio')
}
if(TipoCliente_c=='PERSON'){
def contact=PersonDVO

}
return true
if(getPrimaryRowState().isNew())
return true
if(adf.util.usuarioAdministrador() || adf.util.usuarioAdministradorTemporalidad()){
return true
}
def cliente
if(TipoCliente_c=='ORGANIZATION'){
cliente=Cuenta_Obj_c
}
else if(TipoCliente_c=='PERSON'){
cliente=PersonDVO
}
def moc=nvl(TipoCM_c,'')
def genericoMasivo=adf.util.usuarioGenericoMasivo()
def genericoCorporativo=adf.util.usuarioGenericoCorporativo()
def ownerLead=nvl(OwnerId,0 as Long)

def tipoUsuario=adf.util.usuarioMasivoCorporativo()
def usuarioMasivo=tipoUsuario=='MASIVO'
def prevOwner=getOriginalAttributeValue('OwnerId')
if(cliente!=null && ownerLead!=genericoMasivo && ownerLead != genericoCorporativo &&prevOwner!= genericoMasivo && prevOw
adf.util.usuarioMasivoCorporativo()!='MASIVO'){
def ownerCliente=nvl(cliente.OwnerPartyId, 0 as Long)
if(ownerCliente==0){
def partys
def clienteId=0
if(TipoCliente_c=='ORGANIZATION'){
clienteId=nvl(Cuenta_Id_c, 0 as BigDecimal)
partys=newView('OrganizationProfile')
}
else if(TipoCliente_c=='PERSON'){
clienteId=nvl(PrimaryContactId, 0 as Long)
partys=newView('PersonProfile')
}
if(clienteId!=0){
def partyc=newViewCriteria(partys)
def partyr=partyc.createRow()
def partyi=partyr.ensureCriteriaItem('PartyId')
partyi.setOperator('=')
partyi.setValue(clienteId)
partyc.insertRow(partyr)
partys.appendViewCriteria(partyc)
partys.executeQuery()
while(partys.hasNext()){
def party=partys.next()
ownerCliente=party.OwnerPartyId
}
}
if(ownerCliente!=OwnerId){
throw new oracle.jbo.ValidationException('El Cliente ' + cliente.PartyUniqueName + ' le pertenece al ejecutivo ' + cliente.OwnerPart
}
}
}
def currentUsername=adf.context.getSecurityContext()?.getUserProfile()?.getUserID()

def resources=newView('Resource')
def resourcec=newViewCriteria(resources)
def resourcer=resourcec.createRow()
def resourcei=resourcer.ensureCriteriaItem('Username')
resourcei.setOperator('=')
resourcei.setValue(currentUsername)
resourcec.insertRow(resourcer)
resources.appendViewCriteria(resourcec)
resources.executeQuery()
def currentUserId
while(resources.hasNext()&&currentUserId==null){
def resource=resources.next()
currentUserId=resource.PartyId
}

if( isAttributeChanged('OwnerId')){
if(OwnerId!=currentUserId){
throw new oracle.jbo.ValidationException('Sólo los managers pueden asignar un lead a otros usuarios')
}
def usuarioDesasignadoId=nvl(UsuarioDesasignado_Obj_c?.PartyId,0 as Long)
if((prevOwner==genericoMasivo && tipoUsuario=='MASIVO' )||(prevOwner==genericoCorporativo && tipoUsuario=='CORPORATIV
def fechaNull=new Date(01,01,50)
def fechaAsignacion=nvl(FechaDeAsignacion_c,fechaNull)
if(usuarioDesasignadoId!=currentUserId || fechaAsignacion+15<today()){
return true
}
else{
throw new oracle.jbo.ValidationException('Este usuario no puede tomar el lead porque le fue desasignado en el pasado, hasta que
asignación')
}
}
else if(OwnerId!=prevOwner){
throw new oracle.jbo.ValidationException('No es posible tomar el lead porque está siendo gestionado por otro ejecutivo')
}
}
else{
if(OwnerId!=currentUserId){
def team=MklLeadResources
def partOfTeam=false
while(team.hasNext()&&!partOfTeam){
def member=team.next()
if(member.PartyId==currentUserId && !member.getPrimaryRowState().isNew()){
partOfTeam=true
}
}
if(!partOfTeam){
if(!adf.util.usuarioAdministradorTemporalidad()){
throw new oracle.jbo.ValidationException('No puedes modificar este lead porque no eres parte del equipo de trabajo')
}
}
}
}
return true
adf.source.isLookupIdValid('Canal_Id_c',newValue)

adf.source.isLookupIdValid('Origen_Id_c',newValue)

adf.source.isLookupIdValid('AsignacionMensual_Id_c',newValue)

adf.source.isLookupIdValid('Cuenta_Id_c',newValue)

adf.source.isLookupIdValid('UsuarioDesasignado_Id_c',newValue)

adf.source.isLookupIdValid('Contacto_Id_c',newValue)

adf.source.isLookupIdValid('Evento_Id_c',newValue)

adf.source.isLookupIdValid('OwnerAsignadoRegla_Id_c',newValue)

Expression
def con=adf.webServices.convertLead
def httpHeaders=['Content-Type':'application/vnd.oracle.adf.action+json']
con.requestHTTPHeaders=httpHeaders
def payload= [
"name": "convertLeadToOpty",
"parameters": [
[
"leadId": LeadId
]
]
]
con.POST(payload)

convertLeadToOpty(LeadId, Name, '','N', 'N',[:]);

def moc=TipoCM_c
def tipoIdentificacion=nvl(TipoDeIdentificacion_c,'')
def numeroDocumento=nvl(NumeroDeDocumento_c,'')
def tipoCliente=nvl(TipoCliente_c,'')
if(tipoCliente=='' && tipoIdentificacion!=''){
if(tipoIdentificacion=='RE'){
tipoCliente='ORGANIZATION'
}
else if(tipoIdentificacion=='C'){
tipoCliente='PERSON'
}
else if(moc=='CORPORATIVO'){
tipoCliente='ORGANIZATION'
}
else if(moc=='MASIVO'){
tipoCliente='PERSON'
}
setAttribute('TipoCliente_c',tipoCliente)
}

if(tipoCliente=='PERSON'){
if(numeroDocumento!=''){
if(tipoIdentificacion=='R' &&!isAttributeChanged('RUCPersona_c')){
setAttribute('RUCPersona_c',numeroDocumento)
}
else if(tipoIdentificacion=='C' &&!isAttributeChanged('CedulaPersona_c')){
setAttribute('CedulaPersona_c',numeroDocumento)
}
else if(tipoIdentificacion=='P'&&!isAttributeChanged('PasaportePersona_c')){
setAttribute('PasaportePersona_c',numeroDocumento)
}
}
def R= nvl(RUCPersona_c,'')
def P= nvl(PasaportePersona_c,'')
def C=nvl(CedulaPersona_c,'')
if( R!='' || C!='' || P!=''){
if(C!=''){
setAttribute('TipoDeIdentificacion_c','C')
setAttribute('NumeroDeDocumento_c',CedulaPersona_c)
}
else if(P!=''){
setAttribute('TipoDeIdentificacion_c','P')
setAttribute('NumeroDeDocumento_c',PasaportePersona_c)
}
else if( R!=''){
setAttribute('TipoDeIdentificacion_c','R')
setAttribute('NumeroDeDocumento_c',RUCPersona_c)
}

}
}
if(tipoCliente=='ORGANIZATION'){
if(numeroDocumento!=''){
if(tipoIdentificacion=='R'&&!isAttributeChanged('RUCCliente_c')){
setAttribute('RUCCliente_c',numeroDocumento)
}
else if(tipoIdentificacion=='RE'&&!isAttributeChanged('RUCExternoCuenta_c')){
setAttribute('RUCExternoCuenta_c',numeroDocumento)
}
else if(tipoIdentificacion=='P'&&!isAttributeChanged('PasaporteCuenta_c')){
setAttribute('PasaporteCuenta_c',numeroDocumento)
}
}
def org=Cuenta_Obj_c
def RC= nvl(RUCCliente_c,'')
def REC= nvl(RUCExternoCuenta_c,'')
def PC= nvl(PasaporteCuenta_c,'')
if( RC!='' || REC!='' || PC!='') {
def tipoC=''
def numeroC=''
if( RC!=''){
tipoC= setAttribute('TipoDeIdentificacion_c','R')

numeroC =setAttribute('NumeroDeDocumento_c',RUCCliente_c)
}
else if(REC!=''){
tipoC= setAttribute('TipoDeIdentificacion_c','C')
numeroC= setAttribute('NumeroDeDocumento_c',RUCExternoCuenta_c)
}
else{
tipoC= setAttribute('TipoDeIdentificacion_c','P')
numeroC= setAttribute('NumeroDeDocumento_c',PasaporteCuenta_c)
}
}
}

def party
def newRow=getPrimaryRowState().isNew()
def cambioStatus=isAttributeChanged('StatusCode')
def setOportunidadAbierta=cambioStatus||newRow
def esPersona=TipoCliente_c=='PERSON'&&EnableCreateContact=='Y'
def esOrganizacion=TipoCliente_c=='ORGANIZATION'&&EnableCreateAccount=='Y'
if(setOportunidadAbierta&&(esPersona||esOrganizacion)){
if(esPersona){
party=PersonDVO
}
else if(Organization!=null){
party=Cuenta_Obj_c
}
if(party!=null){
def opAbiertas=nvl(party.OportunidadesAbiertas_c,0 as BigDecimal)
def statusAnterior=getOriginalAttributeValue('StatusCode')
if((StatusCode=='QUALIFIED'||StatusCode=='UNQUALIFIED')&&(newRow|| cambioStatus&&(statusAnterior=='RETIRED'||
statusAnterior=='CONVERTED'))){
opAbiertas+=1
}
else if((StatusCode=='CONVERTED'||StatusCode=='RETIRED')&& cambioStatus&&(statusAnterior=='UNQUALIFIED'||stat
{ opAbiertas-=1
}
party.setAttribute('OportunidadesAbiertas_c',opAbiertas as Integer)
}
}
def cuentaId=nvl(Cuenta_Id_c,0 as BigDecimal)
def contactoId=nvl(PrimaryContactId, 0 as Long)
def tipoCliente=nvl(TipoCliente_c,'')
def cuentaExistente=nvl(CrearCliente_c,'N')=='N'
def contactoExistente=nvl(CrearContacto_c,'N')=='N'
if(tipoCliente==''){
if(TipoCM_c=='CORPORATIVO'){
tipoCliente='ORGANIZATION'
}
else{
tipoCliente='PERSON'
}
setAttribute('TipoCliente_c',tipoCliente)
}
if(cuentaExistente){
setDatosCuenta()

}
if(contactoExistente){
setDatosContacto()
}
def cuentaId= nvl(Cuenta_Id_c, 0 as BigDecimal)
def cuentaExistente=nvl(CrearCliente_c,'N')=='N' &&cuentaId!=0
if(cuentaExistente){
def cuenta=Cuenta_Obj_c
if(cuenta==null){
def cuentas=newView('OrganizationProfile')
def cc=newViewCriteria(cuentas)
def cr=cc.createRow()
def ci=cr.ensureCriteriaItem('PartyId')
ci.setOperator('=')
ci.setValue(cuentaId)
cc.insertRow(cr)
cuentas.appendViewCriteria(cc)
cuentas.executeQuery()
while(cuentas.hasNext()){
cuenta=cuentas.next()
}
}
setAttribute('NombreComercial_c',cuenta.OrganizationName)
setAttribute('RazonSocial_c',cuenta.RazonSocial_c)
setAttribute('RUCCliente_c',cuenta.JgzzFiscalCode)
setAttribute('RUCExternoCuenta_c',cuenta.RUCExterno_c)
setAttribute('PasaporteCuenta_c',cuenta.Pasaporte_c)
}
def contactoId=nvl(PrimaryContactId, 0 as Long)
def contactoExistente=nvl(CrearContacto_c,'N')=='N' && contactoId!=0
if(contactoExistente){
println('CrearContacto_c:' + CrearContacto_c +', PrimaryContactId' + PrimaryContactId)
println('contactoExistente')
def contacto=PersonDVO
if(contacto==null){
def contactos=newView('PersonProfile')
def cc=newViewCriteria(contactos)
def cr=cc.createRow()
def ci=cr.ensureCriteriaItem('PartyId')
ci.setOperator('=')
ci.setValue(contactoId)
cc.insertRow(cr)
contactos.appendViewCriteria(cc)
contactos.executeQuery()
while(contactos.hasNext()){
contacto=contactos.next()
}
}
setAttribute('Nombres_c',contacto.PersonFirstName)
setAttribute('Apellidos_c',contacto.PersonLastName)
setAttribute('CedulaPersona_c',contacto.NumeroDeCedula_c)
setAttribute('PasaportePersona_c',contacto.NumeroDePasaporte_c)
setAttribute('RUCPersona_c',contacto.JgzzFiscalCode)
setAttribute('PrimaryContactEmailAddress',contacto.CorreoElectronico_c)
if(contacto.SalesProfileType=='ZCA_CONTACT'){
contacto.setAttribute('SalesProfileType','ZCA_PROSPECT')
}
def phones=contacto.Phone
def exit=false
println('Antes de teléfonos')
while(phones.hasNext()&&!exit){
def phone=phones.next()
setAttribute('PrimaryPhoneCountryCode',phone.PhoneCountryCode)
setAttribute('PrimaryPhoneAreaCode',phone.PhoneAreaCode)
setAttribute('PrimaryPhoneNumber',phone.PhoneNumber)
exit=true
}
println('Después de teléfonos')
}
def orgParties=newView('OrganizationParty')
def orgParty=orgParties.createRow()
orgParty.setAttribute('CreatedByModule','FUSE')
def organizationProfiles=orgParty.OrganizationProfile
def organizationProfile=organizationProfiles.createRow()
organizationProfile.setAttribute('OrganizationName',NombreComercial_c)
organizationProfile.setAttribute('RazonSocial_c',RazonSocial_c)
organizationProfile.setAttribute('JgzzFiscalCode',RUCCliente_c)
organizationProfile.setAttribute('RUCExterno_c',RUCExternoCuenta_c)
organizationProfile.setAttribute('Pasaporte_c',PasaporteCuenta_c)
organizationProfile.setAttribute('IdLeadProgenitor_c',LeadId)
organizationProfile.setAttribute('CreatedByModule','FUSE')
organizationProfile.setAttribute('OwnerPartyId',OwnerId)
organizationProfiles.insertRow(organizationProfile)
def usageAssignments=orgParty.PartyUsageAssignment
def usageAssignment=usageAssignments.createRow()
usageAssignment.setAttribute('CreatedByModule','FUSE')
usageAssignment.setAttribute('PartyUsageCode','SALES_PROSPECT')
usageAssignments.insertRow(usageAssignment)
orgParties.insertRow(orgParty)
println('PARTYID De cuenta creada!!:'+orgParty.PartyId)
setAttribute('IdCuentaCreada_c',orgParty.PartyId)
def personParties=newView('PersonParty')
def personParty=personParties.createRow()
personParty.setAttribute('CreatedByModule','FUSE')
def personProfiles=personParty.PersonProfile
def personProfile=personProfiles.createRow()
personProfile.setAttribute('CreatedByModule','FUSE')
personProfile.setAttribute('PersonFirstName',Nombres_c)
personProfile.setAttribute('PersonLastName',Apellidos_c)
personProfile.setAttribute('NumeroDeCedula_c',CedulaPersona_c)
personProfile.setAttribute('NumeroDePasaporte_c',PasaportePersona_c)
personProfile.setAttribute('JgzzFiscalCode',RUCPersona_c)
personProfile.setAttribute('CorreoElectronico_c',PrimaryContactEmailAddress)
personProfile.setAttribute('SalesProfileType','ZCA_PROSPECT')
personProfile.setAttribute('IdLeadProgenitor_c',LeadId)
personProfile.setAttribute('OwnerPartyId',OwnerId)
if(SistemaOrigen_c == 'RESPONSYS'){
//personProfile.setAttribute('IdentificadorExterno_c',IdentificadorExterno_c)
println('Ejecutando requerimiento RESPONSYS')
//println(Canal_Id_c)
//println(Origen_Id_c)
personProfile.setAttribute('CanalDeVenta_Id_c', Canal_Id_c)
personProfile.setAttribute('OrigenDeVenta_Id_c', Origen_Id_c)
personProfile.setAttribute('CondicionesResponsys_c', 'Y')
}
def countryCode=nvl(PrimaryPhoneCountryCode,'')
def areaCode=nvl(PrimaryPhoneAreaCode,'')
def number=nvl(PrimaryPhoneNumber,'')
if(countryCode!=''&&areaCode!=''&&number!=''){
def phones =personProfile.Phone
def phone=phones.createRow()
phone.setAttribute('PhoneCountryCode',PrimaryPhoneCountryCode)
phone.setAttribute('PhoneAreaCode',PrimaryPhoneAreaCode)
phone.setAttribute('PhoneNumber',PrimaryPhoneNumber)
phone.setAttribute('PhoneType','MOBILE')
phone.setAttribute('CreatedByModule','FUSE')
phones.insertRow(phone)
}
personProfiles.insertRow(personProfile)
def usageAssignments=personParty.PartyUsageAssignment
def usageAssignment=usageAssignments.createRow()
usageAssignment.setAttribute('CreatedByModule','FUSE')
usageAssignment.setAttribute('PartyUsageCode','SALES_PROSPECT')
usageAssignments.insertRow(usageAssignment)
usageAssignment=usageAssignments.createRow()
usageAssignment.setAttribute('CreatedByModule','FUSE')
usageAssignment.setAttribute('PartyUsageCode','CONTACT')
usageAssignments.insertRow(usageAssignment)

personParties.insertRow(personParty)
setAttribute('Contacto_Id_c',personParty.PartyId)
if(CrearCliente_c=='Y'){
println('ENTRE A LOGICA DE CREAR CLIENTE UWU')
crearCuenta()
}
if(CrearContacto_c=='Y'){
crearContacto()
}
def optys=newView('OpportunityVO')
def opty=optys.createRow()
opty.setAttribute('AreaComercial_c','TipoCM_c')
opty.setAttribute('Name',Name +' '+ today())
opty.setAttribute('CanalObjC_Id_c',Canal_Id_c)
opty.setAttribute('Origen_Id_c',Origen_Id_c)
opty.setAttribute('OwnerResourcePartyId',OwnerId)
opty.setAttribute('PrimaryOrganizationId',BusinessUnitId)
optys.insertRow(opty)

def optyLeads=opty.OpportunityLead
//def optyLeads=newView('OpportunityLeadVO')
def optyLead=optyLeads.createRow()
//optyLead.setAttribute('OptyId',opty.OptyId)
optyLead.setAttribute('LeadId',LeadId)
optyLeads.insertRow(optyLead)

setAttribute('StatusCode','CONVERTED')
setAttribute('Estado_c','CONVERTIDO')
def leadOptys=LeadOpportunity
while(leadOptys.hasNext()){
def leadOpty=leadOptys.next()
def optys=newView('OpportunityVO')
def optyc=newViewCriteria(optys)
def optyr=optyc.createRow()
def optyi=optyr.ensureCriteriaItem('OptyId')
optyi.setOperator('=')
optyi.setValue(leadOpty.OptyId)
optyc.insertRow(optyr)
optys.appendViewCriteria(optyc)
optys.executeQuery()
while(optys.hasNext()){
def opty=optys.next()
opty.hererdarInformacionLead()
}
}
def errorMsg=''
def errorCount=0
def Espacios = 0
if(nvl(NombreComercial_c,'')=='' &&TipoCM_c=='CORPORATIVO'){
errorMsg='El campo Nombre Comercial es requerido para crear una cuenta. '
errorCount+=1
}
if(nvl(RazonSocial_c,'')==''){
errorMsg+='El campo Razón social es requerido para crear una cuenta. '
errorCount+=1
if(TipoCM_c=='MASIVO'){
setAttribute('NombreComercial_c',RazonSocial_c)
}
}
def NumPasaporte = nvl(PasaporteCuenta_c,'')
def NumRuc = nvl(RUCCliente_c,'')
def NumRucExt = nvl(RUCExternoCuenta_c,'')

if(NumPasaporte=='' && NumRuc ==''&& NumRucExt==''){


errorMsg+='Es necesario especificar al menos un documento para poder crear una cuenta. '
errorCount+=1
}
try{
if (NumPasaporte !=''){
for (int i = 0; i < NumPasaporte.length(); i++) {
if (NumPasaporte.charAt(i) == ' ') {Espacios++;}
}
}else{
if (NumRuc !=''){
for (int i = 0; i < NumRuc.length(); i++) {
if (NumRuc.charAt(i) == ' ') {Espacios++;}
}

}else{
if (NumRucExt !=''){
for (int i = 0; i < NumRucExt.length(); i++) {
if (NumRucExt.charAt(i) == ' ') {Espacios++;}
}
} }}
if (Espacios >0){
throw new oracle.jbo.ValidationException('El número de documento no puede contener espacios.')
}
adf.util.validarFormatoDoc('P', nvl(PasaporteCuenta_c,''))
}
catch(Exception e){
errorMsg+=' '+ e.message
errorCount+=1
}
if(errorCount>0){
throw new oracle.jbo.ValidationException(errorMsg)
}
/*def tipoDocumento =''+nvl(TipoDeIdentificacion_c,'');
def numeroDocumento=''+nvl(NumeroDeDocumento_c,'');

if((TipoDeIdentificacion_c=='R'||TipoDeIdentificacion_c=='C')&&numeroDocumento!='' ){
def nomEjecutivo=''+nvl(OwnerPartyName,'');

def organizations = newView('OrganizationProfile');


def organizationc = newViewCriteria(organizations);
def organizationr = organizationc.createRow();
def organizationi = organizationr.ensureCriteriaItem('NumeroDeDocumento_c');
organizationi.setOperator('=');
organizationi.setValue(numeroDocumento);
def organizationj=organizationr.ensureCriteriaItem('TipoDeDocumento_c')
organizationj.setOperator('=')
organizationj.setValue(tipoDocumento)
organizationc.insertRow(organizationr);
organizations.appendViewCriteria(organizationc);
organizations.executeQuery();
while (organizations.hasNext()) {
def curRow = organizations.next()
if(''+PartyId!=''+curRow.PartyId){
throw new oracle.jbo.ValidationException(''+'El numero de '+getSelectedListDisplayValue('TipoDocumento_c') + ' ya exi
'+curRow.organizationName+'
} del usuario '+curRow.OwnerPartyName);
}

def status=adf.util.validaClienteNetplus(tipoDocumento,numeroDocumento)
}
*/
def errorMsg=''
def errorCount=0
def Espacios = 0
if(nvl(Nombres_c,'')=='' || nvl(Apellidos_c,'')==''){
errorMsg='Es necesario especificar Nombres y Apellidos para poder crear un contacto. '
errorCount+=1
}
if(nvl(PrimaryPhoneNumber,'')=='' &&nvl(PrimaryContactEmailAddress,'')==''){
errorMsg+='Es necesario especificar un teléfono o un correo electrónico para poder crear un contacto. '
errorCount+=1
}
def NumPasaporte = nvl(PasaportePersona_c,'')
def NumRuc = nvl(RUCPersona_c,'')
def NumCedula = nvl(CedulaPersona_c,'')

if(NumPasaporte=='' && NumRuc =='' && NumCedula ==''){


errorMsg+='Es necesario especificar al menos un documento para poder crear un contacto. '
errorCount+=1
}
try{
if (NumPasaporte !=''){
for (int i = 0; i < NumPasaporte.length(); i++) {
if (NumPasaporte.charAt(i) == ' ') {Espacios++;}
}
}else{
if (NumRuc !=''){
for (int i = 0; i < NumRuc.length(); i++) {
if (NumRuc.charAt(i) == ' ') {Espacios++;}
}

}else{
if (NumCedula !=''){
for (int i = 0; i < NumCedula.length(); i++) {
if (NumCedula.charAt(i) == ' ') {Espacios++;}
}
}}}
if (Espacios >0){
throw new oracle.jbo.ValidationException('El número de documento no puede contener espacios.')
}
adf.util.validarFormatoDoc('P',nvl(PasaportePersona_c,''))
}
catch(Exception e){
errorMsg+=' '+ e.message
errorCount+=1
}
if(errorCount>0){
throw new oracle.jbo.ValidationException(errorMsg)
}
/*def tipoDocumento =''+nvl(TipoDeIdentificacion_c,'');
def numeroDocumento=''+nvl(NumeroDeDocumento_c,'');

if((TipoDeIdentificacion_c=='R'||TipoDeIdentificacion_c=='C')&&numeroDocumento!='' ){
def nomEjecutivo=''+nvl(OwnerPartyName,'');
def organizations = newView('OrganizationProfile');
def organizationc = newViewCriteria(organizations);
def organizationr = organizationc.createRow();
def organizationi = organizationr.ensureCriteriaItem('NumeroDeDocumento_c');
organizationi.setOperator('=');
organizationi.setValue(numeroDocumento);
def organizationj=organizationr.ensureCriteriaItem('TipoDeDocumento_c')
organizationj.setOperator('=')
organizationj.setValue(tipoDocumento)
organizationc.insertRow(organizationr);
organizations.appendViewCriteria(organizationc);
organizations.executeQuery();
while (organizations.hasNext()) {
def curRow = organizations.next()
if(''+PartyId!=''+curRow.PartyId){
throw new oracle.jbo.ValidationException(''+'El numero de '+getSelectedListDisplayValue('TipoDocumento_c') + ' ya exi
'+curRow.organizationName+'
} del usuario '+curRow.OwnerPartyName);
}

def status=adf.util.validaClienteNetplus(tipoDocumento,numeroDocumento)
}
*/
if(!adf.util.usuarioAdministrador()){
return false
}
/*def phoneNumber=nvl(PrimaryPhoneNumber,'0')
def areaCode=nvl(PrimaryPhoneAreaCode,'0')
def okFormat=phoneNumber.isInteger() && areaCode.isInteger()
if(!okFormat)
return false*/
if(nvl(TipoCliente_c,'')=='' && (StatusCode=='QUALIFIED'||StatusCode=='UNQUALIFIED')){
return false
}
return true

def map=[:]
if(leadValido()){
def usuarioGenericoId
def moc=nvl(TipoCM_c,'')
if(moc=='MASIVO'){
usuarioGenericoId=adf.util.usuarioGenericoMasivo()
}
else if(moc=='CORPORATIVO'){
usuarioGenericoId=adf.util.usuarioGenericoCorporativo()
}
def tipoCliente=nvl(TipoCliente_c,'')
if(tipoCliente!=''){
def cliente
def clienteId
if(tipoCliente=='PERSON'){
cliente=PersonDVO
clienteId=PrimaryContactId
}
else if(tipoCliente=='ORGANIZATION'){
cliente=Cuenta_Obj_c
clienteId=Cuenta_Id_c
}
if(cliente!=null){
if(cliente.filaValida()&&TipoCM_c=='CORPORATIVO'){
if(cliente.LeadsAbiertos_c==1 &&nvl(cliente.OportunidadesAbiertas_c,0 as BigDecimal)==0){
cliente.setAttribute('OwnerPartyId',usuarioGenericoId)
cliente.setAttribute('OverrideReassignment_c','Y')
map.put('customerId',clienteId)
map.put('ownerId',usuarioGenericoId)
map.put('tipoCliente',tipoCliente)
map.put('PartyUniqueName',cliente.PartyUniqueName)
return [map]
}
else{
setAttribute('OwnerId',usuarioGenericoId)
setAttribute('OverrideReassignment_c','Y')
cliente.setAttribute('LeadsAbiertos_c',nvl(cliente.LeadsAbiertos_c,0 as BigDecimal)-1)
cliente.setAttribute('OverrideReassignment_c','Y')
return []
}
}
else{
setAttribute('OwnerId',usuarioGenericoId)
setAttribute('OverrideReassignment_c','Y')
}
}
else{
setAttribute('OwnerId',usuarioGenericoId)
setAttribute('OverrideReassignment_c','Y')
}
map.put('leadName',Name)
}
}
return [map]
def tipoActual=nvl(TipoCliente_c,'')
def idClienteActual
if(tipoActual=='PERSON'){
idClienteActual=nvl(PrimaryContactId,0 as Long)
}
else if(tipoActual=='ORGANIZATION'){
idClienteActual=nvl(Cuenta_Id_c, 0 as BigDecimal)
}
if(OverrideReassignment_c!='Y' && TipoCM_c!='MASIVO'){
adf.util.reasignarCliente(tipoActual,idClienteActual,OwnerId,LeadId)
}
else{
setAttribute('OverrideReassignment_c','N')
}

def existeCuenta=false
def docCuenta=''
def rucCuenta=nvl(RUCCliente_c,'')
def pasaporteCuenta=nvl(PasaporteCuenta_c,'')
def rucExterno=nvl(RUCExternoCuenta_c,'')
def numDoc=''
def tipoDocumento=''
def campo=''
if(rucCuenta!='' || rucExterno!='' || pasaporteCuenta!=''){
if(rucCuenta!=''){
numDoc=rucCuenta
tipoDocumento='R'
campo='JgzzFiscalCode'
}else if(rucExterno!=''){
numDoc=rucExterno
tipoDocumento='RE'
campo='RUCExterno_c'
}
else{
numDoc=pasaporteCuenta
tipoDocumento='P'
campo='Pasaporte_c'
}
}
else{
throw new oracle.jbo.ValidationException('Es necesario capturar el RUC, RUC Externo, o Pasaporte para la cuenta')
}
def accounts=newView('OrganizationProfile')
def acc=newViewCriteria(accounts)
def accr=acc.createRow()
def acci;
acci=accr.ensureCriteriaItem(campo)
acci.setOperator('=')
acci.setValue(numDoc)
acc.insertRow(accr)
accounts.appendViewCriteria(acc)
accounts.executeQuery()
while(accounts.hasNext()){
def account=accounts.next()
def partyId=nvl(account.PartyId,0 as Long)
if(partyId!=0){
setAttribute('CrearCliente_c','N')
setAttribute('Cuenta_Id_c',partyId)
existeCuenta=true
}
}
return existeCuenta
def existeContacto=false
def docContacto=''
def rucContacto=nvl(RUCPersona_c,'').trim()
def pasaporteContacto=nvl(PasaportePersona_c,'').trim()
def cedula=nvl(CedulaPersona_c,'').trim()
def numDoc=''
def tipoDocumento=''
def campo=''
if(rucContacto!='' || cedula!='' || pasaporteContacto!=''){
if(rucContacto!=''){
numDoc=rucContacto
tipoDocumento='R'
campo='JgzzFiscalCode'
}else if(cedula!=''){
numDoc=cedula
tipoDocumento='C'
campo='NumeroDeCedula_c'
}
else{
numDoc=pasaporteContacto
tipoDocumento='P'
campo='NumeroDePasaporte_c'
}
}
else{
throw new oracle.jbo.ValidationException('Es necesario capturar el RUC, la Cédula o el Pasaporte para el contacto')
}
def contacts=newView('PersonProfile')
def con=newViewCriteria(contacts)
def conr=con.createRow()
def coni;
coni=conr.ensureCriteriaItem(campo)
coni.setOperator('=')
coni.setValue(numDoc)
con.insertRow(conr)
contacts.appendViewCriteria(con)
contacts.executeQuery()
while(contacts.hasNext()){
def contact=contacts.next()
def partyId=nvl(contact.PartyId,0 as Long)
println('contactPartyId: '+partyId)
if(partyId!=0){
println('antes de setAttribute CrearContacto_c')
setAttribute('CrearContacto_c','N')
println('antes de setAttribute PrimaryContactId')
setAttribute('PrimaryContactId',partyId)
existeContacto=true
}
}
println('existeContacto:' + existeContacto)
return existeContacto
if(TipoCM_c=='MASIVO'){
def idClienteActual=0
def tipoActual=nvl(TipoCliente_c,'')
def idCuentaActual=nvl(Cuenta_Id_c,0 as BigDecimal)
def idContactoActual=nvl(PrimaryContactId,0 as Long)
println('tipoActual:'+tipoActual)
def cliente
def skipValidation=false
if(tipoActual=='PERSON'){
if(CrearContacto_c=='Y'){
skipValidation=true
}
idClienteActual=idContactoActual
cliente=PersonDVO
}
else if(tipoActual=='ORGANIZATION'){
if(CrearCliente_c=='Y'){
skipValidation=true
}
idClienteActual=idCuentaActual
cliente=Cuenta_Obj_c
}
if(!skipValidation){
def idCanalActual=nvl(Canal_Id_c, 0 as BigDecimal) as Long
if(cliente.OwnerPartyId!=OwnerId){
throw new oracle.jbo.ValidationException('No puedes convertir este lead porque el cliente le pertenece a otro ejecutivo
}
}
}
def clienteId
if(TipoCliente_c=='PERSON'){
clienteId= PrimaryContactId
}
else if(TipoCliente_c=='ORGANIZATION'){
clienteId= Cuenta_Id_c as Long
}
println(''+clienteId)
return clienteId
def telEloqua=nvl(TelefonoEloqua_c,'').trim()
if(telEloqua!=''){
def length=telEloqua.length()
if(telEloqua.substring(0,3)=='593'&&length>6){
setAttribute('PrimaryPhoneCountryCode','593')
setAttribute('PrimaryPhoneAreaCode',telEloqua.substring(3,5))
setAttribute('PrimaryPhoneNumber',telEloqua.substring(5,length))
}
else if(length>3){
setAttribute('PrimaryPhoneCountryCode','593')
setAttribute('PrimaryPhoneAreaCode',telEloqua.substring(0,2))
setAttribute('PrimaryPhoneNumber',telEloqua.substring(2,length))
}
}

Disabled Actions Expression


Yes if(!
Groovy Function oracle.apps.crmCommon.extensibility.con
return false;
Name :reasignacionCascada else
Description : return true;
Execution Schedule : 0:Days:After:
Function Display Name : reasignacionCascada

No if(!
Groovy Function oracle.apps.crmCommon.extensibility.con
return false;
Name :HeredarDatos
Description : isAttributeChanged('StatusCode')&&Statu
Execution Schedule : 0:Days:After:
Function Display Name :
heredarDatosOportunidad

No Field Update if(!


Name : CambiarEstado oracle.apps.crmCommon.extensibility.con
return false;
Execution Schedule : 0 : Days: After:
Fields if (isAttributeChanged('Rank') && Rank==
Name : Lead:Estado_c:String return true;
Value : CONVERTIDO }

Groovy Function
Name :CovertirLead
Description :
Execution Schedule : 0:Days:After:
Function Display Name : ConversionLeads

Record Type Advanced Expression

TipoCliente_c=='PERSON'
TipoCliente_c=='PERSON'

MASIVO; StatusCode=='CONVERTED'
MASIVO; nvl(TipoCliente_c,'')=='PERSON'
MASIVO;

StatusCode=='CONVERTED'
nvl(TipoCliente_c,'')=='PERSON'
Precision MaxLength Expression
80 80
18 18
120 120
80 80
1500 1500
1500 1500
1500 1500
1500 1500
18 18
10 10
18 18
1500 1500
80 80
80 80
80 80
1500 1500
80 80
1500 1500
1500 1500
10 10
1500 1500
1500 1500
1500 1500
1500 1500
80 80
10 10
20 20
1500 1500
0 0
1500 1500
1500 1500
80 80
1500 1500
18 18
18 18
1500 1500
80 80
80 80
80 80
200 200
80 80
10 10
24 24
1500 1500
80 80
0 0 def estadoTemporalidad=nvl(E
def disponibleHasta=Disponib
def txt=''
def cliente
if(TipoCliente_c=='PERSON'){
cliente=PersonDVO
}
if(TipoCliente_c=='ORGANIZA
cliente=Cuenta_Obj_c
}
if(cliente==null){
return 'La temporalidad no apl
}
def optysAbiertas=nvl(cliente.
if(estadoTemporalidad=='FINA
txt='La temporalidad ya no apl
}
else if(estadoTemporalidad=='
txt='Este lead se encuentra di
}
else if(estadoTemporalidad=
txt='Este lead ya fue desasig
}
else if(optysAbiertas>0){
txt='La temporalidad no aplica
}
else{
txt='La temporalidad no aplica
}
return txt
80 80
80 80
1500 1500
80 80
80 80
1500 1500
200 200
10 10
0 0
1500 1500
1500 1500
80 80
0 0 CreationDate-today()
80 80
1500 1500
18 18
1500 1500
0 0 def nullDate= new Date(1900,0
def fechaAsig=nvl(FechaDeAsi
if(fechaAsig==nullDate){
return 0
}
else{
return today()-fechaAsig
}
0 0 ''+LeadId
1500 1500
0 0
80 80
18 18
24 24
80 80
18 18
80 80
10 10
10 10
1500 1500
1500 1500
1500 1500
80 80
+"' está duplicado en la cuenta '"+accounte.OrganizationName+"'")

+"' está duplicado en la cuenta '"+accounte1.OrganizationName+"'")


+"' está duplicado en el contacto '"+conount.PersonFirstName+"'")
o cliente.')
) || isAttributeChanged('SubMotivoDeBaja_c') ){

Baja_c') || isAttributeChanged('SubMotivoDeBaja_c') ){

)) {

gitud')

o correcto o no se encuentran dentro del territorio de Ecuador')


&&Rank=='HOT'){
'RUCExternoCuenta_c') || isAttributeChanged('PasaportePersona_c') ||
anged('TipoDeIdentificacion_c')||
e ' +idClienteAnterior)
Corporativo||oportunidadesAbiertas>0){
iente)&&cliente!=null &&OverrideReassignment_c!='Y'){

vo) &&previousOwnerId!=currentOwnerId

rporativo) &&previousOwnerId!=currentOwnerId
ivo) && (currentOwnerId != usuarioGenericoCorporativo &&

tener caracteres numéricos. Favor de capturar el número sin espacios


Owner!= genericoMasivo && prevOwner!=genericoCorporativo &&
ece al ejecutivo ' + cliente.OwnerPartyName)

suarios')

ivo && tipoUsuario=='CORPORATIVO' )){

desasignado en el pasado, hasta que pasen 15 días desde la fecha de

onado por otro ejecutivo')


te del equipo de trabajo')
tatus&&(statusAnterior=='RETIRED'||

statusAnterior=='UNQUALIFIED'||statusAnterior=='QUALIFIED'))
d)
uenta. '

er espacios.')
'' ){

yValue('TipoDocumento_c') + ' ya existe en el contacto

to. '
crear un contacto. '

ntacto. '

er espacios.')

'' ){
yValue('TipoDocumento_c') + ' ya existe en el contacto

D')){
cimal)==0){

l)-1)
, o Pasaporte para la cuenta')
el Pasaporte para el contacto')
l cliente le pertenece a otro ejecutivo')

ression

le.apps.crmCommon.extensibility.content.adf.data.util.ExtensibilityGro
urn false;

urn true;

le.apps.crmCommon.extensibility.content.adf.data.util.ExtensibilityGro
urn false;

ributeChanged('StatusCode')&&StatusCode=='CONVERTED'
le.apps.crmCommon.extensibility.content.adf.data.util.ExtensibilityGro
urn false;

AttributeChanged('Rank') && Rank=='HOT'){


return true;
Object Name : MapeoFormaTipoPago_c
Object Name MapeoFormaTipoPago_c
Object Display Name Plural Mapeo Formas - Tipos de Pag
Object Type Custom
Application Name CRM
Table Name HZ_REF_ENTITIES
Record Name Sequence {0000}
Total number of custom fields
Total number of modified Standard fields
Total number of Triggers
Total number of Object Functions
Total number of Object Workflows
Total number of Validations
Total number of Dynamic Layouts

Custom Fields
Name Display Name Type Column Name
RecordName Autonum OOTB RECORD_NAME
CreationDate Fecha de Creación OOTB CREATION_DATE
CurrencyCode Currency Code FCL CURRENCY_CODE
LastUpdatedBy Actualizado por OOTB LAST_UPDATED_BY
CreatedBy Creado por OOTB CREATED_BY
OraZcxOwner_c Owner DCL

TipoFormaDePago_c Tipo de Forma de Pago FCL EXTN_ATTRIBUTE_CHAR008


FormaDePago_c Forma de Pago FCL EXTN_ATTRIBUTE_CHAR007
OraZcxOwner_Id_c Owner DCLForeignKey OWNER_RESOURCE_ID
Id Identificador de Registro OOTB ID
RecordNumber Record Number OOTB RECORD_NUMBER
LastUpdateDate Fecha de Última Actualización OOTB LAST_UPDATE_DATE

Validations
Name Type Error Message
Rule1 Field Validation
Field Name : OraZcxOwner_Id_c

Object Workflows
Name Definition Name Event Point Description
MapeoFormaTipoPago_c_St Create
andard_Create
MapeoFormaTipoPago_c_St Delete
andard_Delete
MapeoFormaTipoPago_c_St Update
andard_Update
MapeoFormaTipoPago_c_St Update
andard_Update
MapeoFormaTipoPago_c
Mapeo Formas - Tipos de Pago
Custom
CRM
HZ_REF_ENTITIES
{0000}
12
0
0
0
3
1
0

umn Name Default Value Required Updatable Searchable REST Enabl


ORD_NAME Yes Yes Yes Yes
ATION_DATE Yes No Yes Yes
RENCY_CODE No Yes Yes Yes
T_UPDATED_BY Yes Yes Yes Yes
ATED_BY Yes No Yes Yes
Yes Yes No Yes
N_ATTRIBUTE_CHAR008 Yes Yes Yes Yes
N_ATTRIBUTE_CHAR007 Yes Yes Yes Yes
NER_RESOURCE_ID Yes Yes Yes Yes
Yes No Yes Yes
ORD_NUMBER Yes No Yes Yes
T_UPDATE_DATE Yes Yes Yes Yes

Expression
adf.source.isLookupIdValid('OraZcxOwner_Id_c',newValue)

ption Disabled Actions Expression


No return
(oracle.apps.fnd.applcore.Profile.ge
No return
(oracle.apps.fnd.applcore.Profile.ge
No return
(oracle.apps.fnd.applcore.Profile.ge
No
Precision MaxLength Expression
80 80
0 0
15 15
64 64
64 64
1500 1500
1500 1500
1500 1500
18 18
32 32
64 64
0 0

ression
rn
cle.apps.fnd.applcore.Profile.get('ZCX_CUSTOM_OBJECT_EVENTS') ==
rn
cle.apps.fnd.applcore.Profile.get('ZCX_CUSTOM_OBJECT_EVENTS') ==
rn
cle.apps.fnd.applcore.Profile.get('ZCX_CUSTOM_OBJECT_EVENTS') ==
Object Name : MklLeadResources
Object Name MklLeadResources
Object Display Name Plural Recursos de oportunidad pote
Object Type OOTB
Application Name CRM
Table Name MKL_LEAD_RESOURCES
Child Object Yes
Parent Object Name Lead
Total number of custom fields
Total number of modified Standard fields
Total number of Triggers
Total number of Object Functions
Total number of Object Workflows
Total number of Validations
Total number of Dynamic Layouts

Standard Fields
Name Display Name Help Text
RoleName Puesto
LeadResources
ursos de oportunidad potencial de venta
B
M
_LEAD_RESOURCES

d
0
0
0
0
0
0
0

Searchable
No
Object Name : NodoWifi_c
Object Name NodoWifi_c
Object Display Name Plural Nodo wifi
Object Type Custom
Application Name CRM
Table Name SVC_REF_ENTITIES
Total number of custom fields
Total number of modified Standard fields
Total number of Triggers
Total number of Object Functions
Total number of Object Workflows
Total number of Validations
Total number of Dynamic Layouts

Custom Fields
Name Display Name Type Column Name
RecordName Código OOTB RECORD_NAME
CreationDate Fecha de Creación OOTB CREATION_DATE
CurrencyCode Currency Code FCL CURRENCY_CODE
LastUpdatedBy Actualizado por OOTB LAST_UPDATED_BY
CreatedBy Creado por OOTB CREATED_BY
OraZcxOwner_c Owner DCL

Oportunidad_Id_c Oportunidad DCLForeignKey EXTN_ATTRIBUTE_NUMBER001


Descripcion_c Descripción Text EXTN_ATTRIBUTE_CHAR007
Oportunidad_c Oportunidad DCL

Activo_c Activo Checkbox EXTN_ATTRIBUTE_CHAR008


OraZcxOwner_Id_c Owner DCLForeignKey OWNER_RESOURCE_ID
Id Identificador de Registro OOTB ID
RecordNumber Record Number OOTB RECORD_NUMBER
LastUpdateDate Fecha de Última Actualización OOTB LAST_UPDATE_DATE

Validations
Name Type Error Message
Rule1 Field Validation
Field Name : OraZcxOwner_Id_c
Rule1 Field Validation
Field Name : Oportunidad_Id_c

Object Workflows
Name Definition Name Event Point Description
NodoWifi_c_Standard_Upda Update
te
NodoWifi_c_Standard_Delet Delete
e
NodoWifi_c_Standard_Creat Create
e
NodoWifi_c
Nodo wifi
Custom
CRM
SVC_REF_ENTITIES
14
0
0
0
3
2
0

umn Name Default Value Required Updatable Searchable REST Enabl


ORD_NAME Yes Yes Yes Yes
ATION_DATE Yes No Yes Yes
RENCY_CODE No Yes Yes Yes
T_UPDATED_BY Yes Yes Yes Yes
ATED_BY Yes No Yes Yes
Yes Yes No Yes
N_ATTRIBUTE_NUMBER001 Yes Yes Yes Yes
N_ATTRIBUTE_CHAR007 Yes Yes Yes Yes
Yes Yes No Yes
N_ATTRIBUTE_CHAR008 N Yes Yes Yes Yes
NER_RESOURCE_ID Yes Yes Yes Yes
Yes No Yes Yes
ORD_NUMBER Yes No Yes Yes
T_UPDATE_DATE Yes Yes Yes Yes

Expression
adf.source.isLookupIdValid('OraZcxOwner_Id_c',newValue)

adf.source.isLookupIdValid('Oportunidad_Id_c',newValue)

ption Disabled Actions Expression


No return
(oracle.apps.fnd.applcore.Profile.ge
No return
(oracle.apps.fnd.applcore.Profile.ge
No return
(oracle.apps.fnd.applcore.Profile.ge
Precision MaxLength Expression
80 80
0 0
15 15
64 64
64 64
1500 1500
18 18
200 200
1500 1500
10 10
18 18
32 32
64 64
0 0

ression
rn
cle.apps.fnd.applcore.Profile.get('ZCX_CUSTOM_OBJECT_EVENTS') ==
rn
cle.apps.fnd.applcore.Profile.get('ZCX_CUSTOM_OBJECT_EVENTS') ==
rn
cle.apps.fnd.applcore.Profile.get('ZCX_CUSTOM_OBJECT_EVENTS') ==
Object Name : OLT_c
Object Name OLT_c
Object Display Name Plural OLT
Object Type Custom
Application Name CRM
Table Name SVC_REF_ENTITIES
Total number of custom fields
Total number of modified Standard fields
Total number of Triggers
Total number of Object Functions
Total number of Object Workflows
Total number of Validations
Total number of Dynamic Layouts

Custom Fields
Name Display Name Type Column Name
RecordName Código OOTB RECORD_NAME
CreationDate Fecha de Creación OOTB CREATION_DATE
CurrencyCode Currency Code FCL CURRENCY_CODE
LastUpdatedBy Actualizado por OOTB LAST_UPDATED_BY
CreatedBy Creado por OOTB CREATED_BY
OraZcxOwner_c Owner DCL

Oportunidad_Id_c Oportunidad DCLForeignKey EXTN_ATTRIBUTE_NUMBER001


Descripcion_c Descripción Text EXTN_ATTRIBUTE_CHAR007
Oportunidad_c Oportunidad DCL

Activo_c Activo Checkbox EXTN_ATTRIBUTE_CHAR008


OraZcxOwner_Id_c Owner DCLForeignKey OWNER_RESOURCE_ID
Id Identificador de Registro OOTB ID
RecordNumber Record Number OOTB RECORD_NUMBER
LastUpdateDate Fecha de Última Actualización OOTB LAST_UPDATE_DATE

Validations
Name Type Error Message
Rule1 Field Validation
Field Name : OraZcxOwner_Id_c
Rule1 Field Validation
Field Name : Oportunidad_Id_c

Object Workflows
Name Definition Name Event Point Description
OLT_c_Standard_Update Update
OLT_c_Standard_Delete Delete

OLT_c_Standard_Create Create
OLT_c
OLT
Custom
CRM
SVC_REF_ENTITIES
14
0
0
0
3
2
0

umn Name Default Value Required Updatable Searchable REST Enabl


ORD_NAME Yes Yes Yes Yes
ATION_DATE Yes No Yes Yes
RENCY_CODE No Yes Yes Yes
T_UPDATED_BY Yes Yes Yes Yes
ATED_BY Yes No Yes Yes
Yes Yes No Yes
N_ATTRIBUTE_NUMBER001 Yes Yes Yes Yes
N_ATTRIBUTE_CHAR007 Yes Yes Yes Yes
Yes Yes No Yes
N_ATTRIBUTE_CHAR008 N Yes Yes Yes Yes
NER_RESOURCE_ID Yes Yes Yes Yes
Yes No Yes Yes
ORD_NUMBER Yes No Yes Yes
T_UPDATE_DATE Yes Yes Yes Yes

Expression
adf.source.isLookupIdValid('OraZcxOwner_Id_c',newValue)

adf.source.isLookupIdValid('Oportunidad_Id_c',newValue)

ption Disabled Actions Expression


No return
(oracle.apps.fnd.applcore.Profile.ge
No return
(oracle.apps.fnd.applcore.Profile.ge
No return
(oracle.apps.fnd.applcore.Profile.ge
Precision MaxLength Expression
80 80
0 0
15 15
64 64
64 64
1500 1500
18 18
200 200
1500 1500
10 10
18 18
32 32
64 64
0 0

ression
rn
cle.apps.fnd.applcore.Profile.get('ZCX_CUSTOM_OBJECT_EVENTS') ==
rn
cle.apps.fnd.applcore.Profile.get('ZCX_CUSTOM_OBJECT_EVENTS') ==
rn
cle.apps.fnd.applcore.Profile.get('ZCX_CUSTOM_OBJECT_EVENTS') ==
Object Name : Opportunity
Object Name Opportunity
Object Display Name Plural Oportunidades
testEtapaVentas(CMV o MMV
Object Description
etapa de ventas(1 a 6)
Object Type OOTB
Application Name CRM
Table Name MOO_OPTY
Total number of custom fields
Total number of modified Standard fields
Total number of Triggers
Total number of Object Functions
Total number of Object Workflows
Total number of Validations
Total number of Dynamic Layouts

Standard Fields
Name Display Name Help Text
RcmndWinProb Probabilidad de éxito
StageStatusCd Estado
Comments Comentarios
AccountName Cliente

Custom Fields
Name Display Name Type Column Name
AnchoDeBanda_c Ancho de banda DCL

FechaSubestado_c Fecha Subestado Datetime EXTN_ATTRIBUTE_TIMESTAMP005


UltimaMilla_Id_c Ultima Milla DCLForeignKey EXTN_ATTRIBUTE_NUMBER019
OLT_Id_c OLT DCLForeignKey EXTN_ATTRIBUTE_NUMBER022
ProbabilidadCierreOfertaCotizacion% Probabilidad cierre Oferta/Cotiz Percentage EXTN_ATTRIBUTE_NUMBER007
Splitter_Id_c Splitter DCLForeignKey EXTN_ATTRIBUTE_NUMBER023
CanalObjC_c Canal DCL

Ductos_c Ductos FCL EXTN_ATTRIBUTE_CHAR042


NombreCatalogoCIIUDin_c Nombre Catálogo CIIU DCL

TipoDeServicio_c Tipo de Servicio FCL EXTN_ATTRIBUTE_CHAR056


NroCuentaTarjeta_c Nro. Cuenta/Tarjeta Text EXTN_ATTRIBUTE_CHAR039
CedulaDeTitular_c Cédula de Titular Text EXTN_ATTRIBUTE_CHAR082
Score_c Consultar Score Checkbox EXTN_ATTRIBUTE_CHAR053
PisoDeInstalacion_c Piso de instalación FCL EXTN_ATTRIBUTE_CHAR045
EstatusValidOpp_c Estatus de actualización FCL EXTN_ATTRIBUTE_CHAR012
OLT_c OLT DCL

NumeroDeEnviosContratoD_c Nro. envíos Contrato Digital Number EXTN_ATTRIBUTE_NUMBER008


DescuentoImporte_c Descuento oportunidad $ - no usarNumber EXTN_ATTRIBUTE_NUMBER004
ActualizadoPorLayout_c Actualizado por layout Checkbox EXTN_ATTRIBUTE_CHAR086
FechaEnvioContratoDigital_c Fecha de envio de contrato digital Datetime EXTN_ATTRIBUTE_TIMESTAMP009
ContratoFisico_c Contrato Físico Checkbox EXTN_ATTRIBUTE_CHAR020
Origen_Id_c Origen DCLForeignKey EXTN_ATTRIBUTE_NUMBER188
ClienteConDeuda_c Cliente con deuda Text EXTN_ATTRIBUTE_CHAR036
CambioAssets_c cambio Assets Number EXTN_ATTRIBUTE_NUMBER034
NumeroDeEnviosValidador_c Nro. envíos a Validador Number EXTN_ATTRIBUTE_NUMBER009
CodigoPostal_c Codigo postal DCL

Canal_Id_c Canal-no usar DCLForeignKey EXTN_ATTRIBUTE_NUMBER003


ActividadEconomica_Id_c Actividad Económica DCLForeignKey EXTN_ATTRIBUTE_NUMBER189
ComentariosDeInstalacionSimple_cComentarios de instalación Text EXTN_ATTRIBUTE_CHAR057
RegistraTCActiva_c Registra TC Activa Text EXTN_ATTRIBUTE_CHAR033
AreaComercial_c Área Comercial FCL EXTN_ATTRIBUTE_CHAR024
NumeroDeDocumento_c Número de Documento Text EXTN_ATTRIBUTE_CHAR063
DescripcionInt_c Descripción int Text EXTN_ATTRIBUTE_CHAR005
FechaConsultaScore_c Fecha consulta score Datetime EXTN_ATTRIBUTE_TIMESTAMP007
EstatusIntOpp_c Estatus integracion opp FCL EXTN_ATTRIBUTE_CHAR013
OrigenForm_c Origen Text Formula

RequiereNuevaFirma_c Requiere nueva firma Checkbox EXTN_ATTRIBUTE_CHAR055


CapacidadDePago_c Capacidad de pago Text EXTN_ATTRIBUTE_CHAR031
CoordenadaLongitud_c Coordenada longitud Text EXTN_ATTRIBUTE_CHAR049
NumeroDeDevolucionesCliente_c Número de devoluciones Cliente Number EXTN_ATTRIBUTE_NUMBER036
HojaTecnicaEmitida_c Hoja técnica emitida Checkbox EXTN_ATTRIBUTE_CHAR014
FechaHoraSegmentacionSupervisoFecha/Hora Segmentación superviDatetime EXTN_ATTRIBUTE_TIMESTAMP006
Observacion_c Observación Text EXTN_ATTRIBUTE_CHAR028
ClienteCastigado_c Cliente castigado Text EXTN_ATTRIBUTE_CHAR035
NumeroDeDevolucionesValidador_Número de devoluciones ValidadoNumber EXTN_ATTRIBUTE_NUMBER035
NombreCatalogoCIIUDin_Id_c Nombre Catálogo CIIU DCLForeignKey EXTN_ATTRIBUTE_NUMBER028
Canal_c Canal-no usar DCL

OverrideReassignment_c Override Reassignment Checkbox EXTN_ATTRIBUTE_CHAR071


UsuarioDesasignado_c Usuario desasignado DCL

ContadorConsultaScore_c Contador Consulta Score Number EXTN_ATTRIBUTE_NUMBER032


FormaDePagoDin_c Forma de pago DCL

PorcentajeDeDescuento_c Descuento oportunidad % - no usaNumber EXTN_ATTRIBUTE_NUMBER005


Plan_Id_c Plan DCLForeignKey EXTN_ATTRIBUTE_NUMBER018
GrupoDeHilo_c Grupo de hilo DCL

EstadoOpp_c Estado Text Formula

AceptacionDeOferta_c Aceptación de oferta Checkbox EXTN_ATTRIBUTE_CHAR003


SectorComercial_c Sector comercial FCL EXTN_ATTRIBUTE_CHAR017
NombreDeTitular_c Nombre de Titular Text EXTN_ATTRIBUTE_CHAR080
NodoWifi_c Nodo Wifi DCL

IPRadioWifi_Id_c IP radio wifi DCLForeignKey EXTN_ATTRIBUTE_NUMBER027


ConsultarPromocionesYServicios_cConsultar promociones y serviciosCheckbox EXTN_ATTRIBUTE_CHAR059
AnchoDeBanda_Id_c Ancho de banda DCLForeignKey EXTN_ATTRIBUTE_NUMBER020
EstadoDeTemporalidad_c Estado de Temporalidad FCL EXTN_ATTRIBUTE_CHAR011
EjecutivoPreventa_Id_c Ejecutivo Preventa DCLForeignKey EXTN_ATTRIBUTE_NUMBER002
ActividadEconomica_c Actividad Económica DCL

Estado_c Estado Text Formula

Cuenta_c Cuenta existente Text EXTN_ATTRIBUTE_CHAR076


Segmentacion_c Segmentación Text EXTN_ATTRIBUTE_CHAR026
ScoreFixed_c Score FCL EXTN_ATTRIBUTE_CHAR084
SectorCIIU_c Sector CIIU FCL EXTN_ATTRIBUTE_CHAR068
IPRadioWifi_c IP radio wifi DCL

UsuarioSubestado_c Usuario Subestado Text EXTN_ATTRIBUTE_CHAR027


MetrosEstimados_c Metros estimados Number EXTN_ATTRIBUTE_NUMBER026
RequiereEscalera_c Requiere escalera FCL EXTN_ATTRIBUTE_CHAR040
Referencia_c Referencia de dirección - en desu Text EXTN_ATTRIBUTE_CHAR078
Sector_c Sector FCL EXTN_ATTRIBUTE_CHAR016
ColorDeHilo_Id_c Color de hilo DCLForeignKey EXTN_ATTRIBUTE_NUMBER025
Pozos_c Pozos FCL EXTN_ATTRIBUTE_CHAR043
BarrioSectorConjunto_c Barrio / Sector / Conjunto - en de Text EXTN_ATTRIBUTE_CHAR051
TamanioOportunidad_c Tamaño de Oportunidad FCL EXTN_ATTRIBUTE_CHAR018
CorreoPreventa_c Correo ejecutivo preventa Text EXTN_ATTRIBUTE_CHAR067
UsuarioSegmentacionSupervisor_cUsuario segmentación supervisor Text EXTN_ATTRIBUTE_CHAR030
FechaConsultaInformacionPlanes_Fecha de consulta de información Datetime EXTN_ATTRIBUTE_TIMESTAMP008
ColorDeHilo_c Color de hilo DCL

AntiguedadEnDiasF_c Antigüedad de días Number Formula

ActualizarContratoDigital_c Actualizar Contrato Digital Checkbox EXTN_ATTRIBUTE_CHAR073


FechaVentaNeta_c Fecha Venta Neta Date EXTN_ATTRIBUTE_TIMESTAMP004
ApellidosDeTitular_c Apellidos de Titular Text EXTN_ATTRIBUTE_CHAR081
EjecutivoPreventaForm_c Ejecutivo Preventa Text Formula

OportunidadAbiertaContabilizada_cOportunidad Abierta ContabilizadaCheckbox EXTN_ATTRIBUTE_CHAR070


PrimeraVenta_c 1era. Venta Checkbox EXTN_ATTRIBUTE_CHAR021
NumeroExterior_c Número Exterior - en desuso Text EXTN_ATTRIBUTE_CHAR077
NombreOpp_c Nombre Text Formula

Latitud_c Latitud FCL EXTN_ATTRIBUTE_CHAR047


Origen_c Origen DCL

OportunidadRegularizada_c Oportunidad Regularizada Checkbox EXTN_ATTRIBUTE_CHAR085


RUCPersona_c RUC Text EXTN_ATTRIBUTE_CHAR074
Plan_c Plan DCL

InformaciónDeLeadActualizada_c Información de lead actualizada Checkbox EXTN_ATTRIBUTE_CHAR061


TipoDeIdentificacion_c Tipo de Identificación FCL EXTN_ATTRIBUTE_CHAR062
NombreOfertaFinal_c Nombre Oferta Final Text EXTN_ATTRIBUTE_CHAR025
StatusFirma_c Status Firma Text Formula
StatusFirma_c Status Firma Text Formula

DescuentoOportunidad_c Descuento Oportunidad % Percentage EXTN_ATTRIBUTE_NUMBER010


CodigoNetPlus_c Código NetPlus Opp Text EXTN_ATTRIBUTE_CHAR001
CuentaExistenteFormula_c Cuenta Existente Text Formula

UltimaMilla_c Ultima Milla DCL

PisosDeEdificacion_c Pisos de edificación FCL EXTN_ATTRIBUTE_CHAR044


InstalacionBruta_c Instalación bruta Currency EXTN_ATTRIBUTE_NUMBER014
SubEstado_c SubEstado FCL EXTN_ATTRIBUTE_CHAR022
RUCformula_c RUC Text Formula

NodoWifi_Id_c Nodo Wifi DCLForeignKey EXTN_ATTRIBUTE_NUMBER021


FormaDePagoDin_Id_c Forma de pago DCLForeignKey EXTN_ATTRIBUTE_NUMBER192
InstalacionNeta_c Instalación neta Currency EXTN_ATTRIBUTE_NUMBER016
IDTicketContratoNetplus_c ID Ticket Contrato Netplus Text EXTN_ATTRIBUTE_CHAR066
ContratoEmitido_c Contrato emitido Checkbox EXTN_ATTRIBUTE_CHAR004
ConsultarInformacionDePlanes_c Consultar información de planes Checkbox EXTN_ATTRIBUTE_CHAR054
Sucursal_n_c Sucursal FCL EXTN_ATTRIBUTE_CHAR058
TipoFormaPago_c Tipo de Forma de Pago FCL EXTN_ATTRIBUTE_CHAR079
Servicio_Id_c Servicio DCLForeignKey EXTN_ATTRIBUTE_NUMBER191
EnviaNotificacion_c Envia Notificación Checkbox EXTN_ATTRIBUTE_CHAR010
ComentariosDeInstalacion_c Comentarios de instalación Clob EXTN_ATTRIBUTE_CLOB002
Banco_c Banco FCL EXTN_ATTRIBUTE_CHAR090
AntiguedadDeTemporalidadForm_cAntigüedad Temporalidad Number Formula

FormaDePago_c Forma de pago Text EXTN_ATTRIBUTE_CHAR032


EnviaCliente_c Enviar cliente Checkbox EXTN_ATTRIBUTE_CHAR008
FechaDeAsignacion_c Fecha de Asignación Date EXTN_ATTRIBUTE_TIMESTAMP002
Splitter_c Splitter DCL

ActualizarOportunidad_c Actualizar Oportunidad Checkbox EXTN_ATTRIBUTE_CHAR072


EjecutivoPreventa_c Ejecutivo Preventa DCL

CodigoPostal_Id_c Codigo postal DCLForeignKey EXTN_ATTRIBUTE_NUMBER030


CoordenadaLatitud_c Coordenada latitud Text EXTN_ATTRIBUTE_CHAR048
EstadoActivo_c Estado Activo Text Formula

CodigoNetplusDelCliente_c Código Netplus del Cliente Text EXTN_ATTRIBUTE_CHAR065


ResultadoDelModelo_c Resultado del Modelo Text EXTN_ATTRIBUTE_CHAR034
RUCClient_c RUC Text EXTN_ATTRIBUTE_CHAR075
ImporteBruto_c Importe Bruto Number Formula

Motivo_c Motivo Text EXTN_ATTRIBUTE_CHAR060


GrupoDeHilo_Id_c Grupo de hilo DCLForeignKey EXTN_ATTRIBUTE_NUMBER024
IDNetplus_c Código Netplus Text Formula
FechaExpiracionTarjeta_c Fecha de expiración de la tarjeta Date EXTN_ATTRIBUTE_TIMESTAMP010
ComentariosDeTemporalidad_c Comentarios de temporalidad Clob EXTN_ATTRIBUTE_CLOB001
SucursalDeVenta_c Sucursal de venta FCL EXTN_ATTRIBUTE_CHAR069
MotivoDeGananciaperdida_c Motivo de ganancia o pérdida FCL EXTN_ATTRIBUTE_CHAR046
DisponibleHasta_c Disponible hasta: Date EXTN_ATTRIBUTE_TIMESTAMP001
PosibilidadDeCierre_c Posibilidad de Cierre Oferta/Cotiz FCL EXTN_ATTRIBUTE_CHAR088
CapacidadPagoNum_c Capacidad de pago Number EXTN_ATTRIBUTE_NUMBER029
Bucket_c Bucket DCL

FechaVentaBruta_c Fecha Venta Bruta Date EXTN_ATTRIBUTE_TIMESTAMP003


ImporteNeto_c Importe Neto Number EXTN_ATTRIBUTE_NUMBER006
CanalForm_c Canal Text Formula

Bucket_Id_c Bucket DCLForeignKey EXTN_ATTRIBUTE_NUMBER031


CuentaPropia_c Cuenta propia FCL EXTN_ATTRIBUTE_CHAR037
UsuarioDesasignado_Id_c Usuario desasignado DCLForeignKey EXTN_ATTRIBUTE_NUMBER001
RegularizarOportunidad_c Regularizar Oportunidad Number EXTN_ATTRIBUTE_NUMBER037
FechaDeCierreForm_c Fecha de cierre Date Formula

Longitud_c Longitud FCL EXTN_ATTRIBUTE_CHAR050


DescuentoOportunidadMoneda_c Descuento Oportunidad $ Currency EXTN_ATTRIBUTE_NUMBER011
Servicio_c Servicio DCL

CambioRevenue_c cambioRevenue Number EXTN_ATTRIBUTE_NUMBER033


OrigenDeLaOportunidad_c Origen de la oportunidad FCL EXTN_ATTRIBUTE_CHAR015
Tipo_c Tipo FCL EXTN_ATTRIBUTE_CHAR023
FormaDePagoFixed_c Forma de Pago FCL EXTN_ATTRIBUTE_CHAR083
Isla_c Isla Text EXTN_ATTRIBUTE_CHAR089
DocumentosLegales_c Documentos legales 1 Checkbox EXTN_ATTRIBUTE_CHAR006
EnviarContratoDigital_c Enviar contrato digital Checkbox EXTN_ATTRIBUTE_CHAR052
SegmentacionSupervisor_c Segmentación supervisor Text EXTN_ATTRIBUTE_CHAR029
AntiguedadTemporalidad_c Antigüedad Temporalidad - obsoleNumber EXTN_ATTRIBUTE_NUMBER013
ActividadEconomicaForm_c Actividad Económica Text Formula

DocumentosLegalesE2_c Documentos legales Checkbox EXTN_ATTRIBUTE_CHAR007


AlturaDeEscalera_c Altura de Escalera FCL EXTN_ATTRIBUTE_CHAR041
EnviaOportunidad_c Enviar oportunidad Checkbox EXTN_ATTRIBUTE_CHAR009
ActualizarCliente_c Corregir Datos del Cliente Checkbox EXTN_ATTRIBUTE_CHAR087
Sucursal_c Sucursal_t Text EXTN_ATTRIBUTE_CHAR019
TipoDeCuenta_c Tipo de cuenta FCL EXTN_ATTRIBUTE_CHAR038
CanalObjC_Id_c Canal DCLForeignKey EXTN_ATTRIBUTE_NUMBER190

Triggers
Name Type Trigger PointDescription Error Message Expression
Tipo_de_forma_de_pa Field Trigger Modify return true
go Field Name : def formaPagoId=nv
FormaDePagoDin_Id if(formaPagoId==0
setAttribute('Tipo
}
else{
setAttribute('Tipo
}
Reset_Planes Field Trigger Modify setAttribute('UltimaM
Field Name : setAttribute('NodoW
Plan_Id_c setAttribute('IPRadio
setAttribute('AnchoD
setAttribute('OLT_c',
setAttribute('Splitter
setAttribute('GrupoD
setAttribute('ColorD
setAttribute('Bucket_
setAttribute('Codigo
setFormaDePagoDin Field Trigger Modify def formaPagoCode
Field Name : if(formaPagoCode!=
FormaDePagoFixed_ def formaPagoAnte
if(formaPagoAnteri
if(formaPagoAnte
setAttribute('For
formaPagoAnter
}
}
def tipoFormaPago
def formasPago=
def formaPagoR
formaPagoRow.s
formaPagoRow.s
formaPagoRow.s
formaPagoRow.s
formaPagoRow.s
formasPago.inse
setAttribute('For
setAttribute('Tip
}
else{
FormaDePagoDin_
setAttribute('Forma
setAttribute('TipoFo
}
setAttribute('UltimaM
setAttribute('NodoW
setAttribute('IPRadio
setAttribute('AnchoD
setAttribute('OLT_c',
setAttribute('Splitter
setAttribute('GrupoD
setAttribute('ColorD
setAttribute('Bucket_
setAttribute('Codigo
Tipo_Forma_Pago Field Trigger Modify def TipoformaPago=
Field Name : //def TipoCuenta =
TipoFormaPago_c
if(TipoFormaPago_c
setAttribute('Banco
}
if(TipoformaPago ==
setAttribute('TipoD

if(TipoformaPago ==
setAttribute('TipoD

}
if(TipoformaPago ==
setAttribute('TipoD

}
if(TipoformaPago ==
setAttribute('TipoDe
}
borrar_isla Field Trigger Modify if(Origen_Id_c==100
Field Name :
Origen_Id_c }
else{
setAttribute('Isla_c'
}
InitOptyCreate Object Trigger Create def moc=adf.util.usu
setAttribute('AreaCo
def method=adf.util
if(moc=='MASIVO'){
method=adf.util.ge
}
setAttribute('SalesM
if(moc=='MASIVO'){
setAttribute('CustP
}
else{
setAttribute('CustP
}
def cliente
if(Organization!=nul
cliente=Organizatio
}
else if(Person!=null){
cliente=Person
}
if(cliente!=null){
if(cliente.SalesProfi
setAttribute('Prim
}

}
controlInsert Object Trigger BeforeInsert setAttribute('WinPro
println('INS OPTY')
def moc=nvl(AreaCo
def method=adf.util
if(moc=='MASIVO'){
method=adf.util.ge
}
setAttribute('SalesM
getDatosOwner()
getDatosCliente()
//InsertarHistoricoE
Temporalidad_INS Object Trigger BeforeInsert if(OwnerResourcePa
validaOwner()
}
def party
def newRow=getPrim
def ownerChanged=
def setOportunidadA
def tipoCliente=''
def tamanioOportun
if(Tipo_c=='PROYEC
tamanioOportunid
}
setAttribute('Tamani
if(setOportunidadAb
if(Person!=null){
party=Person
tipoCliente='PERS
}
else if(Organization
party=Organizatio
tipoCliente='ORG
}

def fecha=date(2010
setAttribute('FechaD
def fechaAsign=nvl(
if(fechaAsign!=fecha
def dias=adf.util.di
println('dias:'+dias)
setAttribute('Dispo
setAttribute('Estado
}
else{
setAttribute('Dispo
}
if(party!=null){
def opAbiertas=n
if(party?.SalesProfil
if(StatusCode=='O
opAbiertas+=1
}
else if(!newRow){
opAbiertas-=1
}
party.setAttribute
}
else if(party?.SalesP
party?.setAttribute
setAttribute('Estad
setAttribute('Disp
}
setAttribute('Oport
}
MatrizCambioEtapas Object Trigger BeforeUpdate def acepOferta = ge
def docOferta = get
def emContrato = g
def docContrato = g
def docHoja = getAt
def envOpp = getAt
def envCliente = get
def codNetPlus=get
def nombreOferta=g
def asesorPreventa=
def segmentacion=
def segmentacionS=
def segmentacionU=
def segmentacionfec
def capacidadpago=
def formasdepago=
def RegistraTCA= ge
def resultadomodelo
def clientecastigado
def clientedeuda= g
def fechanull= null
def fecha = nvl(Fech
def valoractual= Sal
def oldvalor= getOr
if(isAttributeChange

if((CanalObjC_Id_c=
throw new oracle.
}
def MetodoVentaCM
def MetodoVentaMM
if(SalesMethodId==
def cmvetapa1=G
def cmvetapa2=G
def cmvetapa3=G
def cmvetapa4=G
def cmvetapa5=G
def cmvetapa6=G
// throw new ora

if(oldvalor==cmve
setAttribute('Sale
throw new oracle
}

else if(oldvalor==
}
else if(oldvalor==
}
else if(oldvalor==
if(Tipo_c=='PROY
if(nvl(EjecutivoPr
setAttribute('Sa
throw new orac
de Preventa.')
}
def actividades =
def act = newVie
def row = act.cre
def vrc = row.en
vrc.setOperator('
vrc.setValue('TAS
def vrc1 = row.e
vrc1.setOperator

vrc1.setValue(Op
act.insertRow(ro
actividades.appe
actividades.execu
def countPreven
def countSolucio
def tipoText=''
while (actividade
def actividad =
def tipoActivida
def estado= ac
def outcome=n
if(tipoActividad
if(tipoActividad=='
if(estado=='C
countPreve
}
tipoText='pre
}
else{
if(outcome==
countSoluci
}
tipoText='so
}
def nameact=
def idoportun

if(estado!='CO
setAttribute(
//throw new
if(tipoActivid
throw new ora
}
if(tipoActivid
throw new ora
}
}
}
}

if(countPreventa
setAttribute('Sa
if(countPrevent
throw new ora
de etapa
} ')
else if(countPre
throw new ora
para }poder avanzar
else{
throw new ora
diseño } y una activid
}
def archivo=Atta
def count=0
while(archivo.has
def att=archivo
count+=1
}
if(count< 1){
setAttribute('Sa
throw new orac
}
}
}
else if(oldvalor==

if(nvl(nombreOfe
setAttribute('Sale
throw new oracle
}
if(acepOferta!='
setAttribute('Sa
throw new ora
}
if(docOferta!='Y'
setAttribute('Sa
throw new ora
}
}
else if(oldvalor==

if( emContrato!=
setAttribute('Sa
throw new orac
}
if(nvl(CodigoNet
setAttribute('Sa
throw new orac
}
if(nvl(CodigoNe
setAttribute('Sa
throw new orac
}

}
else if(oldvalor==
if(StatusCode!='W
setAttribute('Sa
throw new orac
}

}
else if(oldvalor==

}
else if(oldvalor==cm

}
else if(oldvalor==cm

}
/* else if(oldvalor=

}
else if(oldvalor==

}
else if(oldvalor==
}
else if(oldvalor==

}*/
else {
setAttribute('Sale
throw new orac
}
historicoCambio
}
else if(SalesMethod
def cmmetapa1=G
def cmmetapa2=G
def cmmetapa3=G
def cmmetapa4=G
def cmmetapa5=G

if(oldvalor==cmm
if(nvl(segmentac
if(nvl(Coordena
setAttribute('Sa
throw new orac
}
setAttribute('Sa
throw new ora
}

if( segmentacion
ScoreContactPro
}

}
else if(oldvalor==
if(Person!=''){
def telColeccion
def sinTel = tru
def cont=0;
def mobile=fals
def work=false
while (telColecc
def ps = telCo
def type=nvl(p
if((type=='MO
cont+=1
}
}
if(cont<2){
setAttribute('Sa
throw new orac
}
}
if(MetrosEstimad
nvl(PisosDeEdificacio
setAttribute('Sa
throw new orac
edificación')
}

if(RequiereEscale
if(nvl(AlturaDe
setAttribute('SalesSt
throw new oracle.jbo
}
}

if(nvl(FechaEnvio
setAttribute('Sal
throw new oracle
}

}
else if(oldvalor==
if(nvl(SubEstado_
if(SubEstado_c!
setAttribute('Sa
throw new oracle.jb
encuentra
} Validado.
}
}
else if(oldvalor==
if(nvl(IDTicketCo
setAttribute('Sa
throw new orac
}
}

else {
setAttribute('Sale
throw new oracle
}
historicoCambio
}
}

controlIntegraciones Object Trigger BeforeUpdate def consultarScore=


def consultarPlanes=
def consultarPromoc
def enviaCliente = is
def enviaContrato =
def enviaOportunida
def actualizarContra
if(consultarScore || c
if(consultarScore){
setAttribute('Scor
consultaCalificacio
historicoCambioE
}
if(consultarPlanes){
setAttribute('Cons
validaCoordenada
ConsultarAnchoD
setAttribute('Fech
}
if(consultarPromoc
setAttribute('Cons
reservarLiberarSp
insertarProductoM
}
if(enviaCliente){
if(ActualizarClient
setAttribute('Act
}
def partys
if(Organization!=n
partys=newView
}
else if(Person!=nu
partys=newView
}
else{
throw new oracle
}
/*
partys es la vista
partyc es el criteri
partyr es una fila d
partyi es unacond

*/
validarColeccionC
def errorList=[]
def errorCount=0
def errorMessage
def tipodocument
if(tipodocumento
errorList.add('T
errorCount+=1
}
def nroDocumento
if(nroDocumento
errorList.add('Nú
errorCount+=1
}
for(error in errorL
errorMessage+=
}
if (errorCount > 0
throw new oracle.

}else{
println('llegué aq
def partyc=newVi
def partyr=party
def partyi=party
partyi.setOperato
partyi.setValue(T
partyc.insertRow
partys.appendVi
partys.executeQu
while(partys.hasN
def party=party
setAttribute('En
party.funcionCr
setAttribute('Co

}
}
}
if(enviaContrato){
if(nvl(Segmentacio
throw new orac
}
setAttribute('Envia
validarColeccionC
validaCoordenada
def param='1'
def idContrato=n
if(idContrato!=''){
throw new oracle
}
enviarContrato('1
setAttribute('Envia
setAttribute('Num
setAttribute('SubE
setAttribute('Fech
historicoCambioE
}
if(actualizarContrat
setAttribute('Actu
validaCoordenada
def idContrato=n
if(idContrato=='')
throw new oracle
}
enviarContrato('2
setAttribute('SubE
setAttribute('Fech
setAttribute('Num
}
if(enviaOportunida
setAttribute('Envia
validarColeccionC
CrearActualizarOp
setAttribute('Envia
setAttribute('Fech
setAttribute('Sales
historicoCambioE

}
}

orquestacionTemporal Object Trigger BeforeUpdate validaOwner()


idad def moc=nvl(AreaCo
def cliente
orquestacionTemporal Object Trigger BeforeUpdate
idad

def idClienteActual=
def map=[:]
map.put('Nombre d
def cambioTipoClien
def cambioCliente=i
def statusActual=Sta
def oportunidadAbie
def oportunidadCerr
def cambioStatus=is
def cambioTipo=isA
def statusAnterior='
def tipo=nvl(Tipo_c,
if(cambioStatus){
statusAnterior=get
}
else{
statusAnterior=stat
}
def tipoActual=''
if(Person!=null){
cliente=Person
tipoActual='PERSO
}
else if(Organization!
cliente=Organizatio
tipoActual='ORGAN
}
def tipoAnterior=''
def idClienteAnterio

def fechaAsignacion
def statusTemporalid
def oportunidadesA
if(idClienteActual!=0
oportunidadesAbie
}
def newSize=''
def size=nvl(Tamani
if(cambioTipo){
println('Entré camb
if(tipo=='PROYECT
newSize=size+'_P
}
else{
newSize=size.repl
}
println('newsize:'+n
setAttribute('Taman
}
def cambioOwner=i
def finalizarMasivo=
def finalizarCorporat
def finalizarTempora
def inactivarTempor
def cambioMonto=i
newSize=nvl(Taman
if((cambioOwner||ca
// println('Determin
statusTemporalidad
def currentOwnerId
def previousOwner
def usuarioGeneric
def usuarioGeneric
def usuarioGeneric
if(moc=='MASIVO'
usuarioGenericoId
}
if(moc=='CORPOR
usuarioGenericoId
}
fechaAsignacion=n
def disponibleHast
if(oportunidadCerr
// println('El status
if(oportunidadCer
statusTemporalidad
if(inactivarTempora
if(oportunidade
cliente.setAttribute
}
}
}
else if(finalizarTemp
statusTemporalidad
setAttribute('Esta
}
else{
statusTemporalid
}
if(cambioOwner){
def revs=ChildRe
fechaAsignacion
while(revs.hasNe
def rev=revs.ne
rev.setAttribute
}
if(currentOwnerI
setAttribute('Us
def team=Oppo
while(team.hasN
def member=
if(member.Par
member.remo
}
}
}
}
else{
// println('El Status
statusTemporalida
disponibleHasta=
if(cambioStatus || ca
if((cambioStatus||ca
def previousStatu
if(((cambioStatu
cliente.setAttr
}
}
fechaAsignacion
def fecha=date(2
def dias=adf.util
println('Dias:'+di
disponibleHasta=
}
}
setAttribute('Estado
if(disponibleHasta)
setAttribute('Dis
} else if (previousOw
if(currentOwnerId
setAttribute('Fec
}
map.put('usuarioGe
map.put('disponibl
}
map.put('tipoActual
map.put('statusTemp
map.put('idClienteA
map.put('idClienteA
map.put('fechaAsign
map.put('oportunida
map.put('oportunida
map.put('cambioClie
println(''+map)

if(cambioCliente){
if(statusAnterior==
idClienteAnterior=
def partys=newVi
def partyc=newVi
def partyr=partyc
def partyi=partyr.
partyi.setOperato
partyi.setValue(idC
partyc.insertRow(p
partys.appendVie
partys.executeQue
def party
while(partys.hasN
party=partys.nex
tipoAnterior='OR
}
if(party==null){
partys=newView
partyc=newView
partyr=partyc.cre
partyi=partyr.en
partyi.setOperato
partyi.setValue(id
partyc.insertRow
partys.appendVi
partys.executeQu
while(partys.hasN
party=partys.ne
tipoAnterior='P
}
}
if(party!=null){
def opsAbiertas=
if(opsAbiertas>0
party.setAttribu
}
}
}
getDatosCliente()
}

controlGeneralOportu Object Trigger BeforeUpdate if((isAttributeChange


nidad try{
adf.util.validaCana
}
catch(Exception e){
if(isAttributeChan
setAttribute('Can
}
if(isAttributeChan
setAttribute('Tar
}
throw new oracle.
}
}
if(InformaciónDeLea
hererdarInformacio

if(isAttributeChange
getNumeroDocum
}
if(isAttributeChange
getDatosOwner()
}

def identificacionOri
def clienteOriginal =
def cambioIdentifica
def cambioCliente =

if((cambioIdentificac
if( nvl(identificacionO
BorrarDatosScrore()
}
if(cambioCliente){
BorrarDatosScrore()
}
}
if(isAttributeChange
BorrarPlanes()
BorrarPromocionesS
}

if(isAttributeChange
setAttribute('Fecha
}

if(isAttributeChange
setAttribute('Nomb
setAttribute('Apelli
setAttribute('Cedul
}

def cambioPreventa
if(cambioPreventa){
def preventaActual
def preventaAnteri
preventaActualId=
preventaAnteriorId
modificarEquipoDe

def emailrecurso=
setAttribute('Correo

try {
def map = new H
def messageText =
map.put("Channe
map.put("Messag
adf.util.sendNotifi

} catch (e) {
}

}
def cmvetapa2= Ge
def cmvetapa3=Get
def cmvetapa4=Get
def oldvalor= getOr
if(isAttributeChange
if(SalesStageId==c
def revenue= Chil
def countrevenue
while (revenue.ha
countrevenue+=
def rlinea = reve
}
//println('countrev
if(countrevenue==
//setAttribute('Sa
throw new oracle
}
}
/* if(SalesStageId==
def countActivida
def actividad = ne
def act = newView
def row = act.crea
def vrc = row.ensu
vrc.setOperator('=
vrc.setValue('TASK
def vrc1 = row.en
vrc1.setOperator('
vrc1.setValue(Opt
def vrc2 = row.en
vrc2.setOperator('
vrc2.setValue('ACT
def vrc3 = row.en
vrc3.setOperator('
vrc3.setValue('CO
act.insertRow(row
actividad.appendV
actividad.executeQ
while (actividad.ha
countActividad+
def curRow = ac
if(countActivida
setAttribute('Notifi
}
}
}*/
}
if(SalesStageId==cm
def nombreOferta=
def acepOferta = g
def docOferta = ge
if(nvl(nombreOfert
setAttribute('Sales
}
}

/*if((isAttributeChan
try{
adf.util.validaCana
}
catch(Exception e){
if(isAttributeChan
setAttribute('Can
}
if(isAttributeChan
setAttribute('Tar
}
throw new oracle.
}
}
if(InformaciónDeLea
hererdarInformacio

if(isAttributeChange
getNumeroDocum
}
if(isAttributeChange
getDatosOwner()
}

def cambioPreventa
if(cambioPreventa){
def preventaActual
def preventaAnteri
preventaActualId=
preventaAnteriorId
modificarEquipoDe

def emailrecurso=
setAttribute('Correo
try {
def map = new H
def messageText =
map.put("Channe
map.put("Messag
adf.util.sendNotifi

} catch (e) {
}

}
def cmvetapa3=Get
def oldvalor= getOr
if(isAttributeChange
if(SalesStageId==c
def revenue= Chil
def countrevenue
while (revenue.ha
countrevenue+=
def rlinea = reve
}
//println('countrev
if(countrevenue==
//setAttribute('Sa
throw new oracle
}
}
}*/

matrizCambioEstados Object Trigger BeforeUpdate if(isAttributeChange


getAssets()
}
if(isAttributeChange
def revs=ChildReve
while(revs.hasNext(
def rev=revs.next(
rev.setAttribute('E
}
}
if(isAttributeChange
if((CanalObjC_Id_c=
throw new oracle.
}
def nombre=''
historicoCambioEta
def prevStatusCode
if(StatusCode=='LO
nombre = 'Perdid
if(AreaComercial_
if(nvl(MotivoDeG
throw new orac
}
if(isAttributeCha
throw new orac
}
}
if(AreaComercial_
if(nvl(Competito
throw new orac
}
}
}else{
historicoCambioE
}
if(StatusCode=='W
nombre='Ganada
def cliente
if(Organization!=n
cliente=Organiza
}
else if(Person!=nu
cliente=Person
}
if(cliente!=null){
cliente.setAttribu
//cliente.setAttrib
if(AreaComercial
if(nvl(cliente.Pri
cliente.setAttr
cliente.setAttr
}
}
}
}
if(statusCode!=pre
// historicoCambio
try {
def map = new H
def messageText
map.put("Channe
map.put("Messag
adf.util.sendNotifi

} catch (e) {

}
}
}
controlSubestados Object Trigger BeforeUpdate def subEstado=nvl(S
def cambioSubestad
def cambioComenta
def nombre=''

if(cambioSubestado

def cmmetapa2=G
def cmmetapa3=G
def cmmetapa4=G
def cmmetapa5=G
if(cambioSubestado

if(SubEstado_c==
nombre= 'Contr
setAttribute('Sale
historicoCambio
}
if(SubEstado_c==
nombre= 'Servic
setAttribute('Sale
setAttribute('Sta
setAttribute('Mo
historicoCambio
def cliente
if(Organization!=n
cliente=Organiza
}
else if(Person!=nu
cliente=Person
}
if(cliente!=null){
cliente.setAttribu
}
}
if(SubEstado_c==
setAttribute('Sale
if(SubEstado_c==
nombre= 'Cont
setAttribute('Nu
}
else if(SubEstado
nombre= 'Cont
setAttribute('Nu
}
else if(SubEstado
nombre = 'Con
}
historicoCambioE
}
try {
def map = new H
def messageText
map.put("Channe
map.put("Messag
adf.util.sendNotifi

} catch (e) {

}
def historicosContr
def historicoContra
historicoContrato.s
historicoContrato.s
historicoContrato.s
historicoContrato.s
historicosContrato.
}

Validations
Name Type Error Message Expression
validaOwner Object Validation No tienes permiso para editar esta if(adf.util.usuarioAdm
oportunidad return true
}
validaOwner Object Validation No tienes permiso para editar esta
oportunidad

def cliente
def tipoCliente
def partys
if(Organization!=nul
cliente=Organizatio
tipoCliente='ORGA
partys=newView('O
}
else if(Person!=null){
cliente=Person
tipoCliente='PERSO
partys=newView('P
}
def genericoMasivo=
def genericoCorpora
def tipoUsuario=adf
def usuarioMasivo=
def optyOwnerId=nv
def prevOwnerId=ge
def cambioCliente=i

if(TargetPartyId!=nu
if(cliente==null){
def partyc=newVi
def partyr=partyc
def partyi=partyr.
partyi.setOperato
partyi.setValue(Ta
partyc.insertRow(p
partys.appendVie
partys.executeQue
while(partys.hasN
def party=partys
cliente=party
}
}
}

if(cliente!=null && o
def ownerIdCliente
if(ownerIdCliente=
partys
def clienteId=nvl(
if(tipoCliente=='O
partys=newView
}
else if(tipoCliente=
partys=newView
}
if(clienteId!=0){
def partyc=newV
def partyr=party
def partyi=party
partyi.setOperato
partyi.setValue(c
partyc.insertRow
partys.appendVi
partys.executeQu
while(partys.hasN
def party=party
ownerIdCliente

}
}

}
if(ownerIdCliente!=
throw new oracle.
esta
} oportunidad')

}
def currentUsernam
def resources=newV
def resourcec=newV
def resourcer=resou
def resourcei=resou
resourcei.setOperato
resourcei.setValue(c
resourcec.insertRow
resources.appendVie
resources.executeQu
def currentUserId
while(resources.hasN
def resource=resou
currentUserId=reso
}
if(isAttributeChange
def prevOwner=ge
if(OwnerResourceP
throw new oracle.
}
def usuarioDesasig
if((prevOwner==ge
def fechaNull=new
def fechaAsignaci
if(usuarioDesasign
return true
}
else{
throw new oracle
fecha
} de asignación
}
else{
if(getPrimaryRowS
return true
throw new oracle.
}
}
else{
if(OwnerResourceP
def team=Opportu
def partOfTeam=f
while(team.hasNe
def member=tea
if(member.PartyI
partOfTeam=tr
}
}
if(!partOfTeam){
if(!adf.util.usuario
throw new orac
}
}
}
}
return true

Rule1 Field Validation adf.source.isLookup


Field Name :
UsuarioDesasignado_Id_c
Rule1 Field Validation adf.source.isLookup
Field Name : EjecutivoPreventa_Id_c
Rule1 Field Validation adf.source.isLookup
Field Name : Canal_Id_c
Rule1 Field Validation adf.source.isLookup
Field Name : Origen_Id_c
Rule1 Field Validation adf.source.isLookup
Field Name : ActividadEconomica_Id_c
Rule1 Field Validation adf.source.isLookup
Field Name : CanalObjC_Id_c
Rule1 Field Validation adf.source.isLookup
Field Name : Servicio_Id_c
Rule1 Field Validation adf.source.isLookup
Field Name : FormaDePagoDin_Id_c
Rule1 Field Validation adf.source.isLookup
Field Name : Plan_Id_c
Rule1 Field Validation adf.source.isLookup
Field Name : UltimaMilla_Id_c
Rule1 Field Validation adf.source.isLookup
Field Name : AnchoDeBanda_Id_c
Rule1 Field Validation adf.source.isLookup
Field Name : NodoWifi_Id_c
Rule1 Field Validation adf.source.isLookup
Field Name : OLT_Id_c
Rule1 Field Validation adf.source.isLookup
Field Name : Splitter_Id_c
Rule1 Field Validation adf.source.isLookup
Field Name : GrupoDeHilo_Id_c
Rule1 Field Validation adf.source.isLookup
Field Name : ColorDeHilo_Id_c
Rule1 Field Validation adf.source.isLookup
Field Name : IPRadioWifi_Id_c
Rule1 Field Validation adf.source.isLookup
Field Name :
NombreCatalogoCIIUDin_Id_c
Rule1 Field Validation adf.source.isLookup
Field Name : CodigoPostal_Id_c
Rule1 Field Validation adf.source.isLookup
Field Name : Bucket_Id_c

Object Functions
Name Parameters Return Type Privileged Visibility Description
Temporalida void No Callable by
dContacto External
Systems
Temporalida void No Callable by
dCuenta External
Systems
Temporalida void No Callable by
dOportunida External
d Systems

InsertarHisto void No Callable by


rial External
Systems

crearDirecci void No Callable by


onesDeinstal External
acion Systems
GetSalesSta stageVarName- Long No Default
geId String
GetSalesMet MethodVarName- Long No Default
hod String

CrearActuali void No Default


zarOportuni
dadNetplus
mapProduct Map No Default
osMasivo
pruebaProd void No Default
uctos

ConsultarCal void No Default


ificacionClie
nte
GetTokenSe void No Default
sionNetplus
GetTokenSe void No Default
sionNetplus
mapEjemplo Map No Default
parsePlanes planes-List void No Default
parseWifi nodosWifi-List void No Default
parseFibra olts-List void No Default
listPromocio List No Default
nesYServicio
s
parsePromo pyss-List Void No Default
cionesYServi
cios
cios
checkbox input-Boolean String No Default

pruebaProm void No Default


os

consultaAnc void No Default


hoBanda
enviaInform void No Default
acionSpliter
testScript void No Default
ConsultarAn void No Default
choDeBanda
ScoreContac void No Default
tProspect

creaHistoric void No Default


oContacto

EnvioInform void No Default


acionDeCont
rato
EnvioInform void No Default
acionDeCont
rato

oppAbiertas void No Default

reservarLiber void No Default


arSplitter
enviarContra TipoDeEnvio- void No Default
to String
hererdarInfo void No Callable by
rmacionLead External
Systems
InsertarHisto void No Default
ricoEtapa

consultaCalif void No Default


icacionVersi
onFinal
fechaFinEtap void No Default
aVenta

getNumero void No Default


Documento
ValidarCamp String No Default
osEnvioDeC
ontrato
ontrato
testEtapaVe claveMetodoVent Boolean No Default testEtapaVentas(CMV o MMV)
ntas as- etapa de ventas(1 a 6)
String,numeroEtap
aVentas-Long
ActualizarNu void No Default
meroTipoDo
cumento

importarRev void No Callable by


enue External
Systems
getDatosClie void No Default
nte
getDatosOw void No Default
ner
modificarEq partyIdInsert- void No Default Agrega al equipo el
uipoDeVent Long,partyIdRemo PartyIdInsert si no existe. Bprra
a ve-Long del equipo el PartyIdRemove si
existe.

historicoCa void No Callable by


mbioEtapa External
Systems
getAssets void No Callable by
External
Systems
findProduct itemName-String Long No Default

validaCoord void No Default


enadas
validaCoord void No Default
enadas

filaValida Boolean No Default

aplicarRegla List No Default


sTemporalid
ad
reasignacion void No Callable by
Cascada External
Systems
reasignacion void No Callable by
Cascada External
Systems

upsertReven itemId- void No Default upsertRevenueLine(itemId,mont


ueLine Long,monto- o)
Double

validaOwner Boolean No Default


regularizarO void No Callable by
portunidad External
Systems

BorrarForma void No Default


sDePago

BorrarPromo void No Default


cionesServici
os
BorrarPlanes void No Default
mapTipoPag formaPago-String String No Default
oFormaPago
creaHistoric numeroDocument void No Default creaHistoricoConsultaScore(nu
oConsultaSc o- meroDocumento,tipoDocument
ore String,tipoDocum o)
ento-String
contratoDev void No Default
ueltoCliente

insertarProd void No Default


uctoMasivo

bloqueaCon Boolean No Default


version

validarColec void No Default


cionCodigo
Netplus
conversionN Boolean No Default
uevoCliente
conversionN Boolean No Default
uevoCliente

getAssetsCo void No Default


rporativo
ConsultarDe codigoPromocion void No Default
tallePromoci -String
on
validarDetall Boolean No Default
eDescuento
BorrarDatos void No Callable by
Scrore External
Systems

Object Workflows
Name Definition Name Event Point Description
Prueba_SR Prueba_SR Create

Historial_oportunidad Historial_oportunidad Create Inserta el primer valor que


tendra la oportunidad en el
historial

Regularizar_Oportunidad Regularizar_Oportunidad Update

ImportardireccionesInstal ImportardireccionesInstalaci Create


acion on
ImportardireccionesInstal ImportardireccionesInstalaci Create
acion on

reasignacionCascada reasignacionCascada Update

Contrato_caducado_Email Contrato_caducado_Email Update

Servicio_Activado Servicio_Activado Create

EnviaNotificacionImporte EnviaNotificacionImporteDif Update Si el importe bruto y el


Diferente erente importe neto son diferentes se
ejecuta el workflow.

Contrato_devuelto Contrato_devuelto Update

HistoricoEtapaVenta HistoricoEtapaVenta Create

Contrato_devuelto_por_V Contrato_devuelto_por_Vali Update


alidador dador
Contrato_devuelto_por_V Contrato_devuelto_por_Vali Update
alidador dador

EnviaNotificacion EnviaNotificacion Update Envía notificación si el


descuento es igual o mayor al
30% de descuento o el
Importe de descuento es
mayor o igual a 600USD.

OportunidadPreventa OportunidadPreventa Update

OportunidadGanada OportunidadGanada Update

Contrato_devuelto_por_Cl Contrato_devuelto_por_Clie Update


iente nte

Contrato_firmado_por_Cli Contrato_firmado_por_Clien Update


ente te

getAssets getAssets Update


getAssets getAssets Update

OportunidadGanandaOPe OportunidadGanandaOPerd Update


rdida ida

Dynamic Layouts
Layout Name Active Role
Admin Final Yes ADMIN_GENERAL_PNT;
Corporativo no editable Yes USUARIO_CORPORATIVO;
Admin No ADMIN_GENERAL_PNT;
Masivo E1 Yes USUARIO_MASIVO;
Masivo Principal No
C Preventa Yes PTN_ZBS_SALES_MANAGER_JOB_CUSTOM_PRE_VEN
Corporativo E1 Yes _CORP;
Preventa No PTN_ZBS_SALES_MANAGER_JOB_CUSTOM_PRE_VEN
Preventa Cor No _CORP;
USUARIO_PREVENTA;
Masivo E5 No USUARIO_MASIVO;
Masivo E4 No USUARIO_MASIVO;
Masivo E3 No USUARIO_MASIVO;
Masivo E2 No USUARIO_MASIVO;
Corporativo E6 No
Corporativo E5 No
Corporativo E4 No
Corporativo E3 No
Corporativo E2 No
Corp Preventa No USUARIO_PREVENTA;
Usuario Masivo Yes USUARIO_MASIVO;
Usuario Corporativo Yes
Admin Yes ADMIN_GENERAL_PNT;
Usuario Masivo Yes USUARIO_MASIVO;
Usuario Corporativo Yes
ortunity
rtunidades
EtapaVentas(CMV o MMV)
a de ventas(1 a 6)
B
M
O_OPTY
175
4
14
66
18
21
24

Searchable
Yes
No
No
No

Name Default Value Required Updatable Searchable REST Enabl


No Yes No Yes
RIBUTE_TIMESTAMP005 No Yes No Yes
RIBUTE_NUMBER019 No Yes Yes Yes
RIBUTE_NUMBER022 No Yes No Yes
RIBUTE_NUMBER007 No Yes No Yes
RIBUTE_NUMBER023 No Yes No Yes
Yes Yes No Yes
RIBUTE_CHAR042 No Yes Yes Yes
No Yes No Yes
RIBUTE_CHAR056 No Yes No Yes
RIBUTE_CHAR039 Yes Yes Yes Yes
RIBUTE_CHAR082 Yes Yes No Yes
RIBUTE_CHAR053 N Yes Yes No Yes
RIBUTE_CHAR045 No Yes Yes Yes
RIBUTE_CHAR012 No Yes No Yes
No Yes No Yes
RIBUTE_NUMBER008 No Yes No Yes
RIBUTE_NUMBER004 0 No Yes No Yes
RIBUTE_CHAR086 N Yes Yes No Yes
RIBUTE_TIMESTAMP009 No Yes No Yes
RIBUTE_CHAR020 N Yes Yes No Yes
RIBUTE_NUMBER188 Yes Yes No Yes
RIBUTE_CHAR036 No Yes Yes Yes
RIBUTE_NUMBER034 No Yes No Yes
RIBUTE_NUMBER009 No Yes No Yes
No Yes No Yes
RIBUTE_NUMBER003 No Yes No Yes
RIBUTE_NUMBER189 No Yes No Yes
RIBUTE_CHAR057 No Yes No Yes
RIBUTE_CHAR033 No Yes Yes Yes
RIBUTE_CHAR024 Yes Yes Yes Yes
RIBUTE_CHAR063 No Yes No Yes
RIBUTE_CHAR005 No Yes No Yes
RIBUTE_TIMESTAMP007 No Yes No Yes
RIBUTE_CHAR013 No Yes No Yes
No No No Yes
RIBUTE_CHAR055 N Yes Yes No Yes
RIBUTE_CHAR031 No Yes Yes Yes
RIBUTE_CHAR049 No Yes No Yes
RIBUTE_NUMBER036 No Yes No Yes
RIBUTE_CHAR014 N Yes Yes No Yes
RIBUTE_TIMESTAMP006 No Yes Yes Yes
RIBUTE_CHAR028 No Yes No Yes
RIBUTE_CHAR035 No Yes Yes Yes
RIBUTE_NUMBER035 No Yes No Yes
RIBUTE_NUMBER028 No Yes No Yes
No Yes No Yes
RIBUTE_CHAR071 N Yes Yes No Yes
No Yes No Yes
RIBUTE_NUMBER032 No Yes No Yes
No Yes No Yes
RIBUTE_NUMBER005 No Yes No Yes
RIBUTE_NUMBER018 No Yes Yes Yes
No Yes No Yes
No No No Yes
RIBUTE_CHAR003 N Yes Yes No Yes
RIBUTE_CHAR017 No Yes No Yes
RIBUTE_CHAR080 Yes Yes No Yes
No Yes No Yes
RIBUTE_NUMBER027 No Yes No Yes
RIBUTE_CHAR059 N Yes Yes No Yes
RIBUTE_NUMBER020 No Yes Yes Yes
RIBUTE_CHAR011 No Yes No Yes
RIBUTE_NUMBER002 No Yes Yes Yes
No Yes No Yes
No No No Yes
RIBUTE_CHAR076 No Yes No Yes
RIBUTE_CHAR026 No Yes Yes Yes
RIBUTE_CHAR084 No Yes No Yes
RIBUTE_CHAR068 No Yes No Yes
No Yes No Yes
RIBUTE_CHAR027 No Yes No Yes
RIBUTE_NUMBER026 No Yes No Yes
RIBUTE_CHAR040 No Yes Yes Yes
RIBUTE_CHAR078 No Yes No Yes
RIBUTE_CHAR016 No Yes No Yes
RIBUTE_NUMBER025 No Yes No Yes
RIBUTE_CHAR043 No Yes Yes Yes
RIBUTE_CHAR051 No Yes No Yes
RIBUTE_CHAR018 OPORTUNIDAD No Yes No Yes
RIBUTE_CHAR067 No Yes No Yes
RIBUTE_CHAR030 No Yes No Yes
RIBUTE_TIMESTAMP008 No Yes No Yes
No Yes No Yes
No No No Yes

RIBUTE_CHAR073 N Yes Yes No Yes


RIBUTE_TIMESTAMP004 No Yes No Yes
RIBUTE_CHAR081 Yes Yes No Yes
No No No Yes
RIBUTE_CHAR070 N Yes Yes No Yes
RIBUTE_CHAR021 N Yes Yes No Yes
RIBUTE_CHAR077 No Yes No Yes
No No No Yes
RIBUTE_CHAR047 No Yes No Yes
Yes Yes No Yes
RIBUTE_CHAR085 N Yes Yes No Yes
RIBUTE_CHAR074 No Yes No Yes
No Yes No Yes
RIBUTE_CHAR061 N Yes Yes No Yes
RIBUTE_CHAR062 No Yes No Yes
RIBUTE_CHAR025 No Yes No Yes
No No No Yes
No No No Yes

RIBUTE_NUMBER010 No Yes No Yes


RIBUTE_CHAR001 No Yes Yes Yes
No No No Yes

No Yes No Yes
RIBUTE_CHAR044 No Yes Yes Yes
RIBUTE_NUMBER014 No Yes Yes Yes
RIBUTE_CHAR022 No Yes Yes Yes
No No No Yes

RIBUTE_NUMBER021 No Yes Yes Yes


RIBUTE_NUMBER192 No Yes No Yes
RIBUTE_NUMBER016 No Yes Yes Yes
RIBUTE_CHAR066 No Yes Yes Yes
RIBUTE_CHAR004 N Yes Yes No Yes
RIBUTE_CHAR054 N Yes Yes No Yes
RIBUTE_CHAR058 No Yes No Yes
RIBUTE_CHAR079 No Yes No Yes
RIBUTE_NUMBER191 No Yes Yes Yes
RIBUTE_CHAR010 N Yes Yes Yes Yes
RIBUTE_CLOB002 No Yes No Yes
RIBUTE_CHAR090 Yes Yes No Yes
No No No Yes

RIBUTE_CHAR032 No Yes No Yes


RIBUTE_CHAR008 N Yes Yes Yes Yes
RIBUTE_TIMESTAMP002 No Yes No Yes
No Yes No Yes
RIBUTE_CHAR072 N Yes Yes No Yes
No Yes No Yes
RIBUTE_NUMBER030 No Yes No Yes
RIBUTE_CHAR048 Yes Yes No Yes
No No No Yes
RIBUTE_CHAR065 No Yes No Yes
RIBUTE_CHAR034 No Yes Yes Yes
RIBUTE_CHAR075 No Yes No Yes
No No No Yes
RIBUTE_CHAR060 No Yes No Yes
RIBUTE_NUMBER024 No Yes No Yes
No No No Yes
RIBUTE_TIMESTAMP010 Yes Yes No Yes
RIBUTE_CLOB001 No Yes No Yes
RIBUTE_CHAR069 No Yes No Yes
RIBUTE_CHAR046 No Yes Yes Yes
RIBUTE_TIMESTAMP001 No Yes No Yes
RIBUTE_CHAR088 Yes Yes No Yes
RIBUTE_NUMBER029 No Yes No Yes
No Yes No Yes
RIBUTE_TIMESTAMP003 No Yes No Yes
RIBUTE_NUMBER006 No Yes No Yes
No No No Yes
RIBUTE_NUMBER031 No Yes No Yes
RIBUTE_CHAR037 Yes Yes Yes Yes
RIBUTE_NUMBER001 No Yes No Yes
RIBUTE_NUMBER037 No Yes Yes Yes
No No No Yes
RIBUTE_CHAR050 No Yes No Yes
RIBUTE_NUMBER011 No Yes No Yes
No Yes No Yes
RIBUTE_NUMBER033 No Yes No Yes
RIBUTE_CHAR015 No Yes Yes Yes
RIBUTE_CHAR023 No Yes Yes Yes
RIBUTE_CHAR083 No Yes No Yes
RIBUTE_CHAR089 Yes Yes No Yes
RIBUTE_CHAR006 N Yes Yes No Yes
RIBUTE_CHAR052 N Yes Yes No Yes
RIBUTE_CHAR029 No Yes Yes Yes
RIBUTE_NUMBER013 No Yes No Yes
No No No Yes
RIBUTE_CHAR007 N Yes Yes No Yes
RIBUTE_CHAR041 No Yes Yes Yes
RIBUTE_CHAR009 N Yes Yes Yes Yes
RIBUTE_CHAR087 N Yes Yes No Yes
RIBUTE_CHAR019 No Yes Yes Yes
RIBUTE_CHAR038 No Yes Yes Yes
RIBUTE_NUMBER190 Yes Yes No Yes

Expression
return true
def formaPagoId=nvl(FormaDePagoDin_Id_c, 0 as BigDecimal)
if(formaPagoId==0){
setAttribute('TipoFormaPago_c',null)
}
else{
setAttribute('TipoFormaPago_c',FormaDePagoDin_Obj_c?.TipoFormaPago_c)
}
setAttribute('UltimaMilla_c',null)
setAttribute('NodoWifi_c',null)
setAttribute('IPRadioWifi_c',null)
setAttribute('AnchoDeBanda_c',null)
setAttribute('OLT_c',null)
setAttribute('Splitter_c',null)
setAttribute('GrupoDeHilo_c',null)
setAttribute('ColorDeHilo_c',null)
setAttribute('Bucket_c',null)
setAttribute('CodigoPostal_c',null)
def formaPagoCode=nvl(FormaDePagoFixed_c, '')
if(formaPagoCode!=''){
def formaPagoAnterior=FormaDePagoDin_Obj_c
if(formaPagoAnterior!=null){
if(formaPagoAnterior.RecordName!=formaPagoCode){
setAttribute('FormaDePagoDin_Id_c',null)
formaPagoAnterior.remove()
}
}
def tipoFormaPago=mapTipoPagoFormaPago(formaPagoCode)
def formasPago=newView('FormaDePago_c')
def formaPagoRow = formasPago.createRow()
formaPagoRow.setAttribute('Oportunidad_Id_c',OptyId)
formaPagoRow.setAttribute('Activo_c','Y')
formaPagoRow.setAttribute('RecordName',formaPagoCode)
formaPagoRow.setAttribute('Descripcion_c',getSelectedListDisplayValue('FormaDePagoFixed_c'))
formaPagoRow.setAttribute('TipoFormaPago_c',tipoFormaPago)
formasPago.insertRow(formaPagoRow)
setAttribute('FormaDePagoDin_Id_c',formaPagoRow.Id)
setAttribute('TipoFormaPago_c',tipoFormaPago)
}
else{
FormaDePagoDin_Obj_c?.remove()
setAttribute('FormaDePagoDin_Id_c',null)
setAttribute('TipoFormaPago_c','')
}
setAttribute('UltimaMilla_c',null)
setAttribute('NodoWifi_c',null)
setAttribute('IPRadioWifi_c',null)
setAttribute('AnchoDeBanda_c',null)
setAttribute('OLT_c',null)
setAttribute('Splitter_c',null)
setAttribute('GrupoDeHilo_c',null)
setAttribute('ColorDeHilo_c',null)
setAttribute('Bucket_c',null)
setAttribute('CodigoPostal_c',null)
def TipoformaPago=nvl(TipoFormaPago_c,'')
//def TipoCuenta = nvl(TipoDeCuenta_c,'')

if(TipoFormaPago_c!='4'){
setAttribute('Banco_c',null)
}
if(TipoformaPago == '0'){
setAttribute('TipoDeCuenta_c','AHORROS')

if(TipoformaPago == '1'){
setAttribute('TipoDeCuenta_c','AHORROS')

}
if(TipoformaPago == '2'){
setAttribute('TipoDeCuenta_c','CORRIENTE')

}
if(TipoformaPago == '4'){
setAttribute('TipoDeCuenta_c',null)
}
if(Origen_Id_c==100000104471653 ||Origen_Id_c==100000104471662){

}
else{
setAttribute('Isla_c','')
}
def moc=adf.util.usuarioMasivoCorporativo()
setAttribute('AreaComercial_c',moc)
def method=adf.util.getVar('CMV') as Long
if(moc=='MASIVO'){
method=adf.util.getVar('MMV') as Long
}
setAttribute('SalesMethodId',method)
if(moc=='MASIVO'){
setAttribute('CustPartyType','PERSON')
}
else{
setAttribute('CustPartyType','ORGANIZATION')
}
def cliente
if(Organization!=null){
cliente=Organization
}
else if(Person!=null){
cliente=Person
}
if(cliente!=null){
if(cliente.SalesProfileType=='ZCA_PROSPECT'){
setAttribute('PrimeraVenta_c','Y')
}

}
setAttribute('WinProb',RcmndWinProb)
println('INS OPTY')
def moc=nvl(AreaComercial_c,'')
def method=adf.util.getVar('CMV') as Long
if(moc=='MASIVO'){
method=adf.util.getVar('MMV') as Long
}
setAttribute('SalesMethodId',method)
getDatosOwner()
getDatosCliente()
//InsertarHistoricoEtapa()
if(OwnerResourcePartyId!=null){
validaOwner()
}
def party
def newRow=getPrimaryRowState().isNew()
def ownerChanged=isAttributeChanged('OwnerResourcePartyId')
def setOportunidadAbierta=isAttributeChanged('StatusCode')||newRow
def tipoCliente=''
def tamanioOportunidad='MONTO_CERO'
if(Tipo_c=='PROYECTO'){
tamanioOportunidad='MONTO_CERO_PROYECTO'
}
setAttribute('TamanioOportunidad_c',tamanioOportunidad)
if(setOportunidadAbierta){
if(Person!=null){
party=Person
tipoCliente='PERSON'
}
else if(Organization!=null){
party=Organization
tipoCliente='ORGANIZATION'
}

def fecha=date(2010,01,01)
setAttribute('FechaDeAsignacion_c',today())
def fechaAsign=nvl(FechaDeAsignacion_c,today())
if(fechaAsign!=fecha){
def dias=adf.util.diasTemporalidad(nvl(AreaComercial_c,''),'OPORTUNIDAD',tamanioOportunidad)
println('dias:'+dias)
setAttribute('DisponibleHasta_c',nvl(FechaDeAsignacion_c,today())+dias.toInteger())
setAttribute('EstadoDeTemporalidad_c','ACTIVA')
}
else{
setAttribute('DisponibleHasta_c',null)
}
if(party!=null){
def opAbiertas=nvl(party.OportunidadesAbiertas_c,0 as BigDecimal)
if(party?.SalesProfileType=='ZCA_PROSPECT'){
if(StatusCode=='OPEN'){
opAbiertas+=1
}
else if(!newRow){
opAbiertas-=1
}
party.setAttribute('OportunidadesAbiertas_c',opAbiertas as Integer)
}
else if(party?.SalesProfileType=='ZCA_CUSTOMER'){
party?.setAttribute('EstadoDeTemporalidad_c','FINALIZADA')
setAttribute('EstadoDeTemporalidad_c','FINALIZADA')
setAttribute('DisponibleHasta_c',null)
}
setAttribute('OportunidadAbiertaContabilizada_c','Y')
}
def acepOferta = getAttribute('AceptacionDeOferta_c');
def docOferta = getAttribute('DocumentosLegalesE2_c');
def emContrato = getAttribute('ContratoEmitido_c');
def docContrato = getAttribute('DocumentosLegales_c');
def docHoja = getAttribute('HojaTecnicaEmitida_c');
def envOpp = getAttribute('EnviaOportunidad_c');
def envCliente = getAttribute('EnviaCliente_c');
def codNetPlus=getAttribute('IDNetplus_c');
def nombreOferta=getAttribute('NombreOfertaFinal_c')
def asesorPreventa= getAttribute('EjecutivoPreventa_c','')
def segmentacion= getAttribute('Segmentacion_c','')
def segmentacionS= getAttribute ('SegmentacionSupervisor_c','')
def segmentacionU= getAttribute('UsuarioSegmentacionSupervisor_c','')
def segmentacionfechaHora= getAttribute('FechaHoraSegmentacionSupervisor_c', '' )
def capacidadpago=getAttribute('CapacidadDePago_c','')
def formasdepago= getAttribute('FormaDePagoDin_c','')
def RegistraTCA= getAttribute('RegistraTCActiva_c','')
def resultadomodelo= getAttribute('ResultadoDelModelo_c','')
def clientecastigado = getAttribute('ClienteCastigado_c','')
def clientedeuda= getAttribute('ClienteConDeuda_c','')
def fechanull= null
def fecha = nvl(FechaHoraSegmentacionSupervisor_c,fechanull)
def valoractual= SalesStageId
def oldvalor= getOriginalAttributeValue('SalesStageId')
if(isAttributeChanged('SalesStageId')&& oldvalor!=SalesStageId){

if((CanalObjC_Id_c==null || Origen_Id_c==null)&&!adf.util.usuarioAdministrador()){
throw new oracle.jbo.ValidationException('No es posible hacer el cambio de etapa sin antes especificar el canal y origen')
}
def MetodoVentaCMV=GetSalesMethod('CMV')
def MetodoVentaMMV=GetSalesMethod('MMV')
if(SalesMethodId==MetodoVentaCMV){
def cmvetapa1=GetSalesStageId('CMVE1')
def cmvetapa2=GetSalesStageId('CMVE2')
def cmvetapa3=GetSalesStageId('CMVE3')
def cmvetapa4=GetSalesStageId('CMVE4')
def cmvetapa5=GetSalesStageId('CMVE5')
def cmvetapa6=GetSalesStageId('CMVE6')
// throw new oracle.jbo.ValidationException('VALOR ACTUAL ' + cmvetapa1)

if(oldvalor==cmvetapa1 && SalesStageId==cmvetapa2 && Tipo_c=='NORMAL' ){


setAttribute('SalesStageId',oldvalor);
throw new oracle.jbo.ValidationException('Es imposible pasar a la etapa 2 cuando el tipo es Normal ')
}

else if(oldvalor==cmvetapa1 && SalesStageId==cmvetapa3 && Tipo_c=='NORMAL'){


}
else if(oldvalor==cmvetapa1 && SalesStageId==cmvetapa2 && Tipo_c=='PROYECTO'){
}
else if(oldvalor==cmvetapa2 && SalesStageId== cmvetapa3){
if(Tipo_c=='PROYECTO'){
if(nvl(EjecutivoPreventa_c,'')==''){
setAttribute('SalesStageId',oldvalor);
throw new oracle.jbo.ValidationException('Acción no permitida: Oportunidad tipo Proyecto, no permite cambiar de etapa de 2 a 3
de Preventa.')
}
def actividades = newView('Activity');
def act = newViewCriteria(actividades);
def row = act.createRow();
def vrc = row.ensureCriteriaItem('ActivityFunctionCode');
vrc.setOperator('=');
vrc.setValue('TASK');
def vrc1 = row.ensureCriteriaItem('OpportunityId');
vrc1.setOperator('=');

vrc1.setValue(OptyId);
act.insertRow(row);
actividades.appendViewCriteria(act);
actividades.executeQuery();
def countPreventa= 0
def countSoluciones= 0
def tipoText=''
while (actividades.hasNext()){
def actividad = actividades.next()
def tipoActividad=nvl(actividad.ActivityTypeCode,'')
def estado= actividad.StatusCode
def outcome=nvl(actividad.OutcomeCode,'')
if(tipoActividad=='PREVENTA' || tipoActividad=='SOLUCIONES'){
if(tipoActividad=='PREVENTA'){
if(estado=='COMPLETE' && actividad.ActividadProyecto_c=='ACT_EDISENO'){
countPreventa+=1
}
tipoText='preventa - Elaboración de diseño'
}
else{
if(outcome=='SUCCESSFUL' && estado=='COMPLETE'){
countSoluciones+=1
}
tipoText='soluciones '
}
def nameact= actividad.Subject
def idoportunidad= actividad.OpportunityId

if(estado!='COMPLETE' && estado!='CANCELED'){


setAttribute('SalesStageId',oldvalor);
//throw new oracle.jbo.ValidationException('La actividad de tipo '+tipoText +nameact + ' no ha sido completada.')
if(tipoActividad=='PREVENTA'){
throw new oracle.jbo.ValidationException('Actividades Tipo Preventa: Debe completar las actividades para pasar de etapa.')
}
if(tipoActividad=='SOLUCIONES'){
throw new oracle.jbo.ValidationException('Actividades Tipo Preventa: La actividad de tipo soluciones ' +nameact + ' no ha sido c
}
}
}
}

if(countPreventa==0 || countSoluciones==0){
setAttribute('SalesStageId',oldvalor);
if(countPreventa==0 && countSoluciones!=0){
throw new oracle.jbo.ValidationException('Es necesario contar con al menos una actividad completa de tipo preventa - Elaboració
de etapa
} ')
else if(countPreventa!=0 && countSoluciones==0){
throw new oracle.jbo.ValidationException('Actividades Tipo Preventa: Es necesario contar con al menos una actividad aprobada y
para }poder avanzar de etapa.')
else{
throw new oracle.jbo.ValidationException('Acción no permitida: Es necesario contar con al menos una actividad completa de tipo
diseño } y una actividad aprobada y completa de tipo soluciones para poder avanzar de etapa.')
}
def archivo=Attachment
def count=0
while(archivo.hasNext()){
def att=archivo.next()
count+=1
}
if(count< 1){
setAttribute('SalesStageId',oldvalor);
throw new oracle.jbo.ValidationException('Es necesario cargar la cotización en la Etapa 3.')
}
}
}
else if(oldvalor==cmvetapa3 && SalesStageId== cmvetapa4){

if(nvl(nombreOferta,'')==''){
setAttribute('SalesStageId',oldvalor);
throw new oracle.jbo.ValidationException('El campo Nombre Oferta Final es obligatorio para cambiar de Etapa.')
}
if(acepOferta!='Y' ){
setAttribute('SalesStageId',oldvalor);
throw new oracle.jbo.ValidationException('El campo Aceptación de Oferta es Obligatorio para cambiar de Etapa.')
}
if(docOferta!='Y'){
setAttribute('SalesStageId',oldvalor);
throw new oracle.jbo.ValidationException('El campo Documentos Legales es Obligatorio para cambiar de Etapa.')
}
}
else if(oldvalor==cmvetapa4 && SalesStageId== cmvetapa5){

if( emContrato!='Y' || docHoja!='Y' ){


setAttribute('SalesStageId',oldvalor);
throw new oracle.jbo.ValidationException('Los campos Contrato Emitido y Hoja Técnica Emitida son Obligatorios para cambiar de
}
if(nvl(CodigoNetplusDelCliente_c,'')==''){
setAttribute('SalesStageId',oldvalor);
throw new oracle.jbo.ValidationException('No es posible cambiar de etapa a hasta no enviar el cliente a Netplus. Favor de realizar
}
if(nvl(CodigoNetPlus_c,'')==''){
setAttribute('SalesStageId',oldvalor);
throw new oracle.jbo.ValidationException('Se requiere el codigo de neplus de la oportunidad ')
}

}
else if(oldvalor==cmvetapa5 && SalesStageId== cmvetapa6){
if(StatusCode!='WON'){
setAttribute('SalesStageId',oldvalor);
throw new oracle.jbo.ValidationException('No es posible realizar el cambio a la etapa 6.')
}

}
else if(oldvalor==cmvetapa3 && SalesStageId== cmvetapa1 ){

}
else if(oldvalor==cmvetapa3 && SalesStageId== cmvetapa2 ){

}
else if(oldvalor==cmvetapa2 && SalesStageId== cmvetapa1 ){

}
/* else if(oldvalor==cmvetapa1 && SalesStageId== cmvetapa6 ){

}
else if(oldvalor==cmvetapa2 && SalesStageId== cmvetapa6 ){

}
else if(oldvalor==cmvetapa3 && SalesStageId== cmvetapa6 ){
}
else if(oldvalor==cmvetapa4 && SalesStageId== cmvetapa6 ){

}*/
else {
setAttribute('SalesStageId',oldvalor);
throw new oracle.jbo.ValidationException('Acción no permitida: Oportunidad tipo Proyecto, no permite cambiar de etapa de 1 a 3
}
historicoCambioEtapa()
}
else if(SalesMethodId==MetodoVentaMMV){
def cmmetapa1=GetSalesStageId('MMVE1')
def cmmetapa2=GetSalesStageId('MMVE2')
def cmmetapa3=GetSalesStageId('MMVE3')
def cmmetapa4=GetSalesStageId('MMVE4')
def cmmetapa5=GetSalesStageId('MMVE5')

if(oldvalor==cmmetapa1 && SalesStageId==cmmetapa2){


if(nvl(segmentacion,'')==''){
if(nvl(CoordenadaLatitud_c,'')=='' && nvl(CoordenadaLongitud_c,'')==''){
setAttribute('SalesStageId',oldvalor);
throw new oracle.jbo.ValidationException('Se requiere las coordenadas de latitud y longitud')
}
setAttribute('SalesStageId',oldvalor);
throw new oracle.jbo.ValidationException('Se requiere ingresar toda la información de score' )
}

if( segmentacion!='' ){
ScoreContactProspect()
}

}
else if(oldvalor==cmmetapa2 && SalesStageId==cmmetapa3){
if(Person!=''){
def telColeccion =Person?.Phone;
def sinTel = true;
def cont=0;
def mobile=false
def work=false
while (telColeccion.hasNext()){
def ps = telColeccion?.next();
def type=nvl(ps.PhoneType,'')
if((type=='MOBILE'||type=='WORK')&&ps.Status=='A'){
cont+=1
}
}
if(cont<2){
setAttribute('SalesStageId',oldvalor);
throw new oracle.jbo.ValidationException('Se requiere ingresar 2 números de teléfono en el contacto')
}
}
if(MetrosEstimados_c==null && nvl(RequiereEscalera_c,'')=='' && nvl(Ductos_c,'')=='' && nvl(Pozos_c,'')=='' && nvl(PisoDeInstalac
nvl(PisosDeEdificacion_c,'')==''){
setAttribute('SalesStageId',oldvalor);
throw new oracle.jbo.ValidationException('Se requiere ingresar los campos metros estimados, requiere escalera, ductos, pozos, pis
edificación')
}

if(RequiereEscalera_c=='SI'){
if(nvl(AlturaDeEscalera_c,'')==''){
setAttribute('SalesStageId',oldvalor)
throw new oracle.jbo.ValidationException('Se requiere ingresar a que altura se requiere la escalera')
}
}

if(nvl(FechaEnvioContratoDigital_c,fechanull)== fechanull ){
setAttribute('SalesStageId',oldvalor);
throw new oracle.jbo.ValidationException('(BDS) Acción no permitida: para cambiar a etapa 3 debe enviar el contrato digital.')
}

}
else if(oldvalor==cmmetapa3 && SalesStageId==cmmetapa4){
if(nvl(SubEstado_c,'')!=''){
if(SubEstado_c!='CONTRATO_VALIDADO'){
setAttribute('SalesStageId',oldvalor);
throw new oracle.jbo.ValidationException('(BDS) Acción no permitida: para cambiar a etapa 4 el subestado de la oportunidad debe ini
encuentra
} Validado.')
}
}
else if(oldvalor==cmmetapa4 && SalesStageId==cmmetapa5){
if(nvl(IDTicketContratoNetplus_c,'')==''){
setAttribute('SalesStageId',oldvalor);
throw new oracle.jbo.ValidationException('No es posible avanzar si no se tiene un id de ticket de contrato')
}
}

else {
setAttribute('SalesStageId',oldvalor);
throw new oracle.jbo.ValidationException('(BDS) Acción no permitida: No se debe retroceder etapas.')
}
historicoCambioEtapa()
}
}

def consultarScore=isAttributeChanged('Score_c')&& Score_c=='Y'


def consultarPlanes=isAttributeChanged('ConsultarInformacionDePlanes_c')&& ConsultarInformacionDePlanes_c=='Y'
def consultarPromociones=isAttributeChanged('ConsultarPromocionesYServicios_c')&& ConsultarPromocionesYServicios_c=='Y' && A
def enviaCliente = isAttributeChanged('EnviaCliente_c')&& EnviaCliente_c=='Y' || isAttributeChanged('ActualizarCliente_c')&& Actualiza
def enviaContrato = isAttributeChanged('EnviarContratoDigital_c')&& EnviarContratoDigital_c=='Y'
def enviaOportunidad =isAttributeChanged('EnviaOportunidad_c')&& EnviaOportunidad_c=='Y'
def actualizarContrato=isAttributeChanged('ActualizarContratoDigital_c')&& ActualizarContratoDigital_c=='Y'
if(consultarScore || consultarPlanes || consultarPromociones || enviaCliente || enviaContrato || enviaOportunidad || actualizarContrato){
if(consultarScore){
setAttribute('Score_c','N')
consultaCalificacionVersionFinal()
historicoCambioEtapa()
}
if(consultarPlanes){
setAttribute('ConsultarInformacionDePlanes_c','N')
validaCoordenadas()
ConsultarAnchoDeBanda()
setAttribute('FechaConsultaInformacionPlanes_c',now())
}
if(consultarPromociones){
setAttribute('ConsultarPromocionesYServicios_c','N')
reservarLiberarSplitter()
insertarProductoMasivo()
}
if(enviaCliente){
if(ActualizarCliente_c=='Y'){
setAttribute('ActualizarCliente_c','N')
}
def partys
if(Organization!=null){
partys=newView('OrganizationProfile')
}
else if(Person!=null){
partys=newView('PersonProfile')
}
else{
throw new oracle.jbo.ValidationException('La oportunidad no cuenta con un cliente seleccionado')
}
/*
partys es la vista
partyc es el criterio dentro de la vista
partyr es una fila dentro de los criterios
partyi es unacondición

*/
validarColeccionCodigoNetplus()
def errorList=[]
def errorCount=0
def errorMessage ='Campo requerido: '
def tipodocumento = nvl(TipoDeIdentificacion_c,'')
if(tipodocumento == null || tipodocumento ==''){
errorList.add('Tipo de Identificación.')
errorCount+=1
}
def nroDocumento=nvl(NumeroDeDocumento_c,'')
if(nroDocumento == null || nroDocumento ==''){
errorList.add('Número de documento.')
errorCount+=1
}
for(error in errorList){
errorMessage+=error
}
if (errorCount > 0){
throw new oracle.jbo.ValidationException(''+errorMessage)

}else{
println('llegué aquí')
def partyc=newViewCriteria(partys)
def partyr=partyc.createRow()
def partyi=partyr.ensureCriteriaItem('PartyId')
partyi.setOperator('=')
partyi.setValue(TargetPartyId)
partyc.insertRow(partyr)
partys.appendViewCriteria(partyc)
partys.executeQuery()
while(partys.hasNext()){
def party=partys.next()
setAttribute('EnviaCliente_c','Y')
party.funcionCreaCliente(tipodocumento,nroDocumento)
setAttribute('CodigoNetplusDelCliente_c',party.CodigoNetPlus_c)

}
}
}
if(enviaContrato){
if(nvl(Segmentacion_c,'')=='' && AreaComercial_c=='MASIVO'){
throw new oracle.jbo.ValidationException('No es posible crear el contrato sin Consultar el Score.')
}
setAttribute('EnviarContratoDigital_c','N')
validarColeccionCodigoNetplus()
validaCoordenadas()
def param='1'
def idContrato=nvl(IDTicketContratoNetplus_c,'')
if(idContrato!=''){
throw new oracle.jbo.ValidationException('No es posible crear el contrato dos veces.')
}
enviarContrato('1')
setAttribute('EnviarContratoDigital_c','Y')
setAttribute('NumeroDeEnviosContratoD_c',nvl(NumeroDeEnviosContratoD_c,0 as BigDecimal)+1)
setAttribute('SubEstado_c','CONTRATO_ENVIADO_CLIENTE')
setAttribute('FechaVentaBruta_c',now())
historicoCambioEtapa()
}
if(actualizarContrato){
setAttribute('ActualizarContratoDigital_c','N')
validaCoordenadas()
def idContrato=nvl(IDTicketContratoNetplus_c,'')
if(idContrato==''){
throw new oracle.jbo.ValidationException('No es posible hacer la actualización del ticket porque no se cuenta con un Ticket de Con
}
enviarContrato('2')
setAttribute('SubEstado_c','CONTRATO_ENVIADO_CLIENTE')
setAttribute('FechaVentaBruta_c',now())
setAttribute('NumeroDeEnviosContratoD_c',nvl(NumeroDeEnviosContratoD_c,0 as BigDecimal)+1)
}
if(enviaOportunidad){
setAttribute('EnviaOportunidad_c','N')
validarColeccionCodigoNetplus()
CrearActualizarOportunidadNetplus()
setAttribute('EnviaOportunidad_c','Y')
setAttribute('FechaVentaBruta_c',now())
setAttribute('SalesStageId',GetSalesStageId('CMVE5'))
historicoCambioEtapa()

}
}

validaOwner()
def moc=nvl(AreaComercial_c,'')
def cliente
def idClienteActual=nvl(TargetPartyId,0 as Long)
def map=[:]
map.put('Nombre de lead',Name)
def cambioTipoCliente=false
def cambioCliente=isAttributeChanged('TargetPartyId')
def statusActual=StatusCode
def oportunidadAbierta=statusActual=='OPEN'
def oportunidadCerrada=statusActual=='LOST'||statusActual=='NO_SALE'
def cambioStatus=isAttributeChanged('StatusCode')
def cambioTipo=isAttributeChanged('Tipo_c')
def statusAnterior=''
def tipo=nvl(Tipo_c,'NORMAL')
if(cambioStatus){
statusAnterior=getOriginalAttributeValue('StatusCode')
}
else{
statusAnterior=statusActual
}
def tipoActual=''
if(Person!=null){
cliente=Person
tipoActual='PERSON'
}
else if(Organization!=null){
cliente=Organization
tipoActual='ORGANIZATION'
}
def tipoAnterior=''
def idClienteAnterior=0

def fechaAsignacion
def statusTemporalidad
def oportunidadesAbiertas=0 as BigDecimal
if(idClienteActual!=0){
oportunidadesAbiertas= nvl(cliente.OportunidadesAbiertas_c,0 as BigDecimal)
}
def newSize=''
def size=nvl(TamanioOportunidad_c,'MONTO_CERO')
if(cambioTipo){
println('Entré cambioTipo '+ getOriginalAttributeValue('Tipo_c')+ ' - '+tipo)
if(tipo=='PROYECTO'){
newSize=size+'_PROYECTO'
}
else{
newSize=size.replace('_PROYECTO','')
}
println('newsize:'+newSize)
setAttribute('TamanioOportunidad_c',newSize)
}
def cambioOwner=isAttributeChanged('OwnerResourcePartyId')
def finalizarMasivo=isAttributeChanged('IDTicketContratoNetplus_c')&&nvl(IDTicketContratoNetplus_c,'')!=''&&moc=='MASIVO'
def finalizarCorporativo=isAttributeChanged('CodigoNetPlus_c')&&nvl(CodigoNetPlus_c,'')!=''&&moc=='CORPORATIVO'
def finalizarTemporalidad=finalizarMasivo||finalizarCorporativo
def inactivarTemporalidad=cambioStatus&& statusAnterior=='OPEN' && oportunidadCerrada
def cambioMonto=isAttributeChanged('TamanioOportunidad_c')
newSize=nvl(TamanioOportunidad_c,'')
if((cambioOwner||cambioCliente||cambioStatus||finalizarTemporalidad|| cambioMonto || cambioTipo)){
// println('Determinar status temporalidad')
statusTemporalidad=nvl(EstadoDeTemporalidad_c,'')
def currentOwnerId=nvl(OwnerResourcePartyId,0 as Long)
def previousOwnerId=getOriginalAttributeValue('OwnerResourcePartyId') as Long
def usuarioGenericoId
def usuarioGenericoMasivo=adf.util.usuarioGenericoMasivo()
def usuarioGenericoCorporativo=adf.util.usuarioGenericoCorporativo()
if(moc=='MASIVO'){
usuarioGenericoId=usuarioGenericoMasivo
}
if(moc=='CORPORATIVO'){
usuarioGenericoId=usuarioGenericoCorporativo
}
fechaAsignacion=nvl(FechaDeAsignacion_c,today())
def disponibleHasta=null
if(oportunidadCerrada || currentOwnerId==usuarioGenericoMasivo || currentOwnerId==usuarioGenericoCorporativo || finalizarTempo
// println('El status de la temporalidad no será ACTIVO')
if(oportunidadCerrada){
statusTemporalidad='INACTIVA'
if(inactivarTemporalidad){
if(oportunidadesAbiertas>0){
cliente.setAttribute('OportunidadesAbiertas_c',oportunidadesAbiertas-1)
}
}
}
else if(finalizarTemporalidad){
statusTemporalidad='FINALIZADA'
setAttribute('EstadoDeTemporalidad_c',statusTemporalidad)
}
else{
statusTemporalidad='DESASIGNADO'
}
if(cambioOwner){
def revs=ChildRevenue
fechaAsignacion=today()
while(revs.hasNext()){
def rev=revs.next()
rev.setAttribute('ResourcePartyId',currentOwnerId)
}
if(currentOwnerId==usuarioGenericoMasivo || currentOwnerId==usuarioGenericoCorporativo){
setAttribute('UsuarioDesasignado_Id_c',adf.util.getResourceProfileId(previousOwnerId))
def team=OpportunityResource
while(team.hasNext()){
def member=team.next()
if(member.PartyId==previousOwnerId)
member.remove()
}
}
}
}
else{
// println('El Status será activo')
statusTemporalidad='ACTIVA'
disponibleHasta=DisponibleHasta_c
if(cambioStatus || cambioOwner || cambioCliente || cambioMonto || cambioTipo){
if((cambioStatus||cambioCliente)&&oportunidadAbierta){
def previousStatus=getOriginalAttributeValue('StatusCode')
if(((cambioStatus&&(previousStatus=='RETIRED'||previousStatus=='CONVERTED'))||cambioCliente)&&cliente!=null){
cliente.setAttribute('OportunidadesAbiertas_c',oportunidadesAbiertas+1)
}
}
fechaAsignacion=today()
def fecha=date(2001,01,01)
def dias=adf.util.diasTemporalidad(moc,'OPORTUNIDAD',newSize)
println('Dias:'+dias)
disponibleHasta=fechaAsignacion+dias.toInteger()
}
}
setAttribute('EstadoDeTemporalidad_c',statusTemporalidad)
if(disponibleHasta){
setAttribute('DisponibleHasta_c', disponibleHasta)
} else if (previousOwnerId == usuarioGenericoMasivo || previousOwnerId == usuarioGenericoCorporativo){
if(currentOwnerId != usuarioGenericoCorporativo || currentOwnerId != usuarioGenericoMasivo)
setAttribute('FechaDeAsignacion_c',fechaAsignacion)
}
map.put('usuarioGenericoId',usuarioGenericoId)
map.put('disponibleHasta',disponibleHasta)
}
map.put('tipoActual',tipoActual)
map.put('statusTemporalidad',statusTemporalidad)
map.put('idClienteActual',idClienteActual)
map.put('idClienteAnterior',idClienteAnterior)
map.put('fechaAsignacion',fechaAsignacion)
map.put('oportunidadAbierta',oportunidadAbierta)
map.put('oportunidadesAbiertas',oportunidadesAbiertas)
map.put('cambioCliente',cambioCliente)
println(''+map)

if(cambioCliente){
if(statusAnterior=='OPEN'){
idClienteAnterior=getOriginalAttributeValue('TargetPartyId')
def partys=newView('OrganizationProfile')
def partyc=newViewCriteria(partys)
def partyr=partyc.createRow()
def partyi=partyr.ensureCriteriaItem('PartyId')
partyi.setOperator('=')
partyi.setValue(idClienteAnterior)
partyc.insertRow(partyr)
partys.appendViewCriteria(partyc)
partys.executeQuery()
def party
while(partys.hasNext()){
party=partys.next()
tipoAnterior='ORGANIZATION'
}
if(party==null){
partys=newView('PersonProfile')
partyc=newViewCriteria(partys)
partyr=partyc.createRow()
partyi=partyr.ensureCriteriaItem('PartyId')
partyi.setOperator('=')
partyi.setValue(idClienteAnterior)
partyc.insertRow(partyr)
partys.appendViewCriteria(partyc)
partys.executeQuery()
while(partys.hasNext()){
party=partys.next()
tipoAnterior='PERSON'
}
}
if(party!=null){
def opsAbiertas=nvl(party.OportunidadesAbiertas_c,0 as BigDecimal)
if(opsAbiertas>0){
party.setAttribute('OportunidadesAbiertas_c',opsAbiertas-1)
}
}
}
getDatosCliente()
}

if((isAttributeChanged('CanalObjC_Id_c')|| isAttributeChanged('TargetPartyId') )&& AreaComercial_c=='MASIVO'){


try{
adf.util.validaCanalOptysAbiertas(nvl(TargetPartyId, 0 as Long), nvl(CanalObjC_Id_c,0 as BigDecimal) as Long)
}
catch(Exception e){
if(isAttributeChanged('CanalObjC_Id_c')){
setAttribute('CanalObjC_Id_c',getOriginalAttributeValue('CanalObjC_Id_c'))
}
if(isAttributeChanged('TargetPartyId')){
setAttribute('TargetPartyId',getOriginalAttributeValue('TargetPartyId'))
}
throw new oracle.jbo.ValidationException(e.message)
}
}
if(InformaciónDeLeadActualizada_c!='Y')
hererdarInformacionLead()

if(isAttributeChanged('TipoDeIdentificacion_c')){
getNumeroDocumento()
}
if(isAttributeChanged('OwnerResourcePartyId')){
getDatosOwner()
}

def identificacionOriginal = getOriginalAttributeValue('TipoDeIdentificacion_c')


def clienteOriginal = getOriginalAttributeValue('AccountName')
def cambioIdentificacion = isAttributeChanged('TipoDeIdentificacion_c')
def cambioCliente = isAttributeChanged('AccountName')

if((cambioIdentificacion && nvl(identificacionOriginal,'')!= '') || cambioCliente){


if( nvl(identificacionOriginal,'') != 'C' && nvl(TipoDeIdentificacion_c,'') != 'R'){
BorrarDatosScrore()
}
if(cambioCliente){
BorrarDatosScrore()
}
}
if(isAttributeChanged('FormaDePagoFixed_c')){
BorrarPlanes()
BorrarPromocionesServicios()
}

if(isAttributeChanged('TipoFormaPago_c') && TipoFormaPago_c!='4' && FechaExpiracionTarjeta_c != null){


setAttribute('FechaExpiracionTarjeta_c', null)
}

if(isAttributeChanged('CuentaPropia_c') && CuentaPropia_c != 'NO'){


setAttribute('NombreDeTitular_c', '')
setAttribute('ApellidosDeTitular_c', '')
setAttribute('CedulaDeTitular_c', '')
}

def cambioPreventa=isAttributeChanged('EjecutivoPreventa_Id_c')&&nvl(EjecutivoPreventa_Id_c,0 as BigDecimal)!=0


if(cambioPreventa){
def preventaActualId=nvl(EjecutivoPreventa_Id_c,0 as BigDecimal)
def preventaAnteriorId=nvl(getOriginalAttributeValue('EjecutivoPreventa_Id_c'),0 as BigDecimal)
preventaActualId=adf.util.getResourcePartyId(preventaActualId as Long)
preventaAnteriorId=adf.util.getResourcePartyId(preventaAnteriorId as Long)
modificarEquipoDeVenta(preventaActualId as Long,preventaAnteriorId as Long)

def emailrecurso= EjecutivoPreventa_Obj_c?.EmailAddress


setAttribute('CorreoPreventa_c',emailrecurso)

try {
def map = new HashMap()
def messageText ='Se te ha asignado la oportunidad ' + Name+ ' de tipo Proyecto, requiere su atención para la elaboración del docu
map.put("Channels",["ORA_SVC_BELL"])
map.put("MessageText",messageText)
adf.util.sendNotification(adf, map)

} catch (e) {
}

}
def cmvetapa2= GetSalesStageId('CMVE2')
def cmvetapa3=GetSalesStageId('CMVE3')
def cmvetapa4=GetSalesStageId('CMVE4')
def oldvalor= getOriginalAttributeValue('SalesStageId')
if(isAttributeChanged('SalesStageId')&& oldvalor!=SalesStageId){
if(SalesStageId==cmvetapa3){
def revenue= ChildRevenue
def countrevenue= 0
while (revenue.hasNext()) {
countrevenue+=1
def rlinea = revenue.next()
}
//println('countrevenue:'+countrevenue
if(countrevenue==0){
//setAttribute('SalesStageId',oldvalor);
throw new oracle.jbo.ValidationException('Se requiere agregar un producto')
}
}
/* if(SalesStageId==cmvetapa2){
def countActividad = 0
def actividad = newView('Activity');
def act = newViewCriteria(actividad);
def row = act.createRow()
def vrc = row.ensureCriteriaItem('ActivityFunctionCode');
vrc.setOperator('=');
vrc.setValue('TASK');
def vrc1 = row.ensureCriteriaItem('OpportunityId');
vrc1.setOperator('=');
vrc1.setValue(OptyId);
def vrc2 = row.ensureCriteriaItem('ActividadProyecto_c');
vrc2.setOperator('=');
vrc2.setValue('ACT_VDISENO');
def vrc3 = row.ensureCriteriaItem('StatusCode');
vrc3.setOperator('=');
vrc3.setValue('COMPLETE');
act.insertRow(row);
actividad.appendViewCriteria(act);
actividad.executeQuery()
while (actividad.hasNext()) {
countActividad+=1
def curRow = actividad.next()
if(countActividad==1){
setAttribute('NotificacionVDISENO_c','Y')
}
}
}*/
}
if(SalesStageId==cmvetapa3){
def nombreOferta=getAttribute('NombreOfertaFinal_c')
def acepOferta = getAttribute('AceptacionDeOferta_c')
def docOferta = getAttribute('DocumentosLegalesE2_c');
if(nvl(nombreOferta,'')!=''&& acepOferta=='Y' && docOferta=='Y') {
setAttribute('SalesStageId',cmvetapa4)
}
}

/*if((isAttributeChanged('CanalObjC_Id_c')|| isAttributeChanged('TargetPartyId') )&& AreaComercial_c=='MASIVO'){


try{
adf.util.validaCanalOptysAbiertas(nvl(TargetPartyId, 0 as Long), nvl(CanalObjC_Id_c,0 as BigDecimal) as Long)
}
catch(Exception e){
if(isAttributeChanged('CanalObjC_Id_c')){
setAttribute('CanalObjC_Id_c',getOriginalAttributeValue('CanalObjC_Id_c'))
}
if(isAttributeChanged('TargetPartyId')){
setAttribute('TargetPartyId',getOriginalAttributeValue('TargetPartyId'))
}
throw new oracle.jbo.ValidationException(e.message)
}
}
if(InformaciónDeLeadActualizada_c!='Y')
hererdarInformacionLead()

if(isAttributeChanged('TipoDeIdentificacion_c')){
getNumeroDocumento()
}
if(isAttributeChanged('OwnerResourcePartyId')){
getDatosOwner()
}

def cambioPreventa=isAttributeChanged('EjecutivoPreventa_Id_c')&&nvl(EjecutivoPreventa_Id_c,0 as BigDecimal)!=0


if(cambioPreventa){
def preventaActualId=nvl(EjecutivoPreventa_Id_c,0 as BigDecimal)
def preventaAnteriorId=nvl(getOriginalAttributeValue('EjecutivoPreventa_Id_c'),0 as BigDecimal)
preventaActualId=adf.util.getResourcePartyId(preventaActualId as Long)
preventaAnteriorId=adf.util.getResourcePartyId(preventaAnteriorId as Long)
modificarEquipoDeVenta(preventaActualId as Long,preventaAnteriorId as Long)

def emailrecurso= EjecutivoPreventa_Obj_c?.EmailAddress


setAttribute('CorreoPreventa_c',emailrecurso)
try {
def map = new HashMap()
def messageText ='Se te ha asignado la oportunidad ' + Name+ ' de tipo Proyecto, requiere su atención para la elaboración del docu
map.put("Channels",["ORA_SVC_BELL"])
map.put("MessageText",messageText)
adf.util.sendNotification(adf, map)

} catch (e) {
}

}
def cmvetapa3=GetSalesStageId('CMVE3')
def oldvalor= getOriginalAttributeValue('SalesStageId')
if(isAttributeChanged('SalesStageId')&& oldvalor!=SalesStageId){
if(SalesStageId==cmvetapa3){
def revenue= ChildRevenue
def countrevenue= 0
while (revenue.hasNext()) {
countrevenue+=1
def rlinea = revenue.next()
}
//println('countrevenue:'+countrevenue
if(countrevenue==0){
//setAttribute('SalesStageId',oldvalor);
throw new oracle.jbo.ValidationException('Se requiere agregar un producto')
}
}
}*/

if(isAttributeChanged('CambioAssets_c')){
getAssets()
}
if(isAttributeChanged('EffectiveDate')){
def revs=ChildRevenue
while(revs.hasNext()){
def rev=revs.next()
rev.setAttribute('EffectiveDate',EffectiveDate)
}
}
if(isAttributeChanged('StatusCode')){
if((CanalObjC_Id_c==null || Origen_Id_c==null)&&!adf.util.usuarioAdministrador()){
throw new oracle.jbo.ValidationException('No es posible hacer el cambio de estado sin antes especificar el canal y origen')
}
def nombre=''
historicoCambioEtapa()
def prevStatusCode=getOriginalAttributeValue('StatusCode')
if(StatusCode=='LOST' &&prevStatusCode!='LOST'){
nombre = 'Perdida'
if(AreaComercial_c=='CORPORATIVO'){
if(nvl(MotivoDeGananciaperdida_c,'')==''){
throw new oracle.jbo.ValidationException('Se requiere ingresar un motivo de perdida')
}
if(isAttributeChanged('MotivoDeGananciaperdida_c')&& MotivoDeGananciaperdida_c=='COMPETENCIA' && nvl(PartyUniqueNam
throw new oracle.jbo.ValidationException('Se requiere ingresar un competidor')
}
}
if(AreaComercial_c=='MASIVO'){
if(nvl(Competitors,'')==''){
throw new oracle.jbo.ValidationException('Es necesario elegir un competidor para poner la oportunidad como perdida.')
}
}
}else{
historicoCambioEtapa()
}
if(StatusCode=='WON' &&prevStatusCode!='WON'){
nombre='Ganada'
def cliente
if(Organization!=null){
cliente=Organization
}
else if(Person!=null){
cliente=Person
}
if(cliente!=null){
cliente.setAttribute('SalesProfileType','ZCA_CUSTOMER')
//cliente.setAttribute('CodigoNetPlus_c',CodigoNetplusDelCliente_c)
if(AreaComercial_c=='MASIVO'){
if(nvl(cliente.PrimeraVentaCerrada_c,'N')=='N'){
cliente.setAttribute('PrimeraVentaCerrada_c','Y')
cliente.setAttribute('OwnerPartyId',OwnerResourcePartyId)
}
}
}
}
if(statusCode!=prevStatusCode){
// historicoCambioEtapa()
try {
def map = new HashMap()
def messageText ='La oportunidad ' + Name+ ' esta con estado ' +nombre
map.put("Channels",["ORA_SVC_BELL"])
map.put("MessageText",messageText)
adf.util.sendNotification(adf, map)

} catch (e) {

}
}
}
def subEstado=nvl(SubEstado_c,'')
def cambioSubestado=isAttributeChanged('SubEstado_c')
def cambioComentarios=isAttributeChanged('Comments')
def nombre=''

if(cambioSubestado || cambioComentarios){

def cmmetapa2=GetSalesStageId('MMVE2')
def cmmetapa3=GetSalesStageId('MMVE3')
def cmmetapa4=GetSalesStageId('MMVE4')
def cmmetapa5=GetSalesStageId('MMVE5')
if(cambioSubestado){

if(SubEstado_c=='CONTRATO_VALIDADO' ){
nombre= 'Contrato validado'
setAttribute('SalesStageId',cmmetapa4);
historicoCambioEtapa()
}
if(SubEstado_c=='SERVICIO_ACTIVADO' ){
nombre= 'Servicio activado'
setAttribute('SalesStageId',cmmetapa5);
setAttribute('StatusCode','WON')
setAttribute('MotivoDeGananciaperdida_c','SI_INSTALACION')
historicoCambioEtapa()
def cliente
if(Organization!=null){
cliente=Organization
}
else if(Person!=null){
cliente=Person
}
if(cliente!=null){
cliente.setAttribute('SalesProfileType','ZCA_CUSTOMER')
}
}
if(SubEstado_c=='CONTRATO_DEVUELTO_VALIDADOR' || SubEstado_c=='CONTRATO_DEVUELTO_CLIENTE' || SubEstado_c=='CONTR
setAttribute('SalesStageId',cmmetapa2);
if(SubEstado_c=='CONTRATO_DEVUELTO_CLIENTE'){
nombre= 'Contrato devuelto por cliente'
setAttribute('NumeroDeDevolucionesCliente_c',nvl(NumeroDeDevolucionesCliente_c, 0 as BigDecimal)+1);
}
else if(SubEstado_c=='CONTRATO_DEVUELTO_VALIDADOR'){
nombre= 'Contrato devuelto por validador'
setAttribute('NumeroDeDevolucionesValidador_c',nvl(NumeroDeDevolucionesValidador_c,0 as BigDecimal)+1);
}
else if(SubEstado_c=='CONTRATO_CADUCADO'){
nombre = 'Contrato caducado por falta de firma'
}
historicoCambioEtapa()
}
try {
def map = new HashMap()
def messageText ='La oportunidad ' + Name+ ' esta con subestado ' +nombre
map.put("Channels",["ORA_SVC_BELL"])
map.put("MessageText",messageText)
adf.util.sendNotification(adf, map)

} catch (e) {

}
def historicosContrato=newView('HistoricoDeContrato_c')
def historicoContrato=historicosContrato.createRow()
historicoContrato.setAttribute('Subestado_c',SubEstado_c)
historicoContrato.setAttribute('ComentariosObservaciones_c',encodeToBase64(nvl(Comments,'')))
historicoContrato.setAttribute('Usuario_c',UsuarioSubestado_c)
historicoContrato.setAttribute('Oportunidad_Id_c',OptyId)
historicosContrato.insertRow(historicoContrato)
}

Expression
if(adf.util.usuarioAdministrador() || adf.util.usuarioAdministradorTemporalidad()){
return true
}
def cliente
def tipoCliente
def partys
if(Organization!=null){
cliente=Organization
tipoCliente='ORGANIZATION'
partys=newView('OrganizationProfile')
}
else if(Person!=null){
cliente=Person
tipoCliente='PERSON'
partys=newView('PersonProfile')
}
def genericoMasivo=adf.util.usuarioGenericoMasivo() as Long
def genericoCorporativo=adf.util.usuarioGenericoCorporativo() as Long
def tipoUsuario=adf.util.usuarioMasivoCorporativo()
def usuarioMasivo=tipoUsuario=='MASIVO'
def optyOwnerId=nvl(OwnerResourcePartyId,0 as Long)
def prevOwnerId=getOriginalAttributeValue('OwnerResourcePartyId') as Long
def cambioCliente=isAttributeChanged('OwnerResourcePartyId')

if(TargetPartyId!=null){
if(cliente==null){
def partyc=newViewCriteria(partys)
def partyr=partyc.createRow()
def partyi=partyr.ensureCriteriaItem('PartyId')
partyi.setOperator('=')
partyi.setValue(TargetPartyId)
partyc.insertRow(partyr)
partys.appendViewCriteria(partyc)
partys.executeQuery()
while(partys.hasNext()){
def party=partys.next()
cliente=party
}
}
}

if(cliente!=null && optyOwnerId!=genericoMasivo && optyOwnerId != genericoCorporativo && adf.util.usuarioMasivoCorporativo()!=


def ownerIdCliente=nvl(cliente.OwnerPartyId, 0 as Long)
if(ownerIdCliente==0){
partys
def clienteId=nvl(TargetPartyId,0 as Long)
if(tipoCliente=='ORGANIZATION'){
partys=newView('OrganizationProfile')
}
else if(tipoCliente=='PERSON'){
partys=newView('PersonProfile')
}
if(clienteId!=0){
def partyc=newViewCriteria(partys)
def partyr=partyc.createRow()
def partyi=partyr.ensureCriteriaItem('PartyId')
partyi.setOperator('=')
partyi.setValue(clienteId)
partyc.insertRow(partyr)
partys.appendViewCriteria(partyc)
partys.executeQuery()
while(partys.hasNext()){
def party=partys.next()
ownerIdCliente=party.OwnerPartyId

}
}

}
if(ownerIdCliente!=optyOwnerId && !usuarioMasivo){
throw new oracle.jbo.ValidationException('El Cliente ' + cliente.PartyUniqueName + ' le pertenece al ejecutivo ' + cliente.OwnerParty
esta
} oportunidad')

}
def currentUsername=adf.context.getSecurityContext()?.getUserProfile()?.getUserID()
def resources=newView('Resource')
def resourcec=newViewCriteria(resources)
def resourcer=resourcec.createRow()
def resourcei=resourcer.ensureCriteriaItem('Username')
resourcei.setOperator('=')
resourcei.setValue(currentUsername)
resourcec.insertRow(resourcer)
resources.appendViewCriteria(resourcec)
resources.executeQuery()
def currentUserId
while(resources.hasNext()&&currentUserId==null){
def resource=resources.next()
currentUserId=resource.PartyId
}
if(isAttributeChanged('OwnerResourcePartyId') || getPrimaryRowState().isNew()){
def prevOwner=getOriginalAttributeValue('OwnerResourcePartyId') as Long
if(OwnerResourcePartyId!=currentUserId){
throw new oracle.jbo.ValidationException('Sólo los managers pueden asignar una oportunidad a otros usuarios')
}
def usuarioDesasignadoId=nvl(UsuarioDesasignado_Obj_c?.PartyId,0 as Long)
if((prevOwner==genericoMasivo && tipoUsuario=='MASIVO' )||(prevOwner==genericoCorporativo && tipoUsuario=='CORPORATIV
def fechaNull=new Date(01,01,50)
def fechaAsignacion=nvl(FechaDeAsignacion_c,fechaNull)
if(usuarioDesasignadoId!=currentUserId || fechaAsignacion+15<today()){
return true
}
else{
throw new oracle.jbo.ValidationException('Este usuario no puede tomar la oportunidad porque le fue desasignada en el pasado, ha
fecha
} de asignación')
}
else{
if(getPrimaryRowState().isNew())
return true
throw new oracle.jbo.ValidationException('No es posible tomar la oportunidad porque está siendo gestionada por otro ejecutivo')
}
}
else{
if(OwnerResourcePartyId!=currentUserId){
def team=OpportunityResource
def partOfTeam=false
while(team.hasNext()&&!partOfTeam){
def member=team.next()
if(member.PartyId==currentUserId && !member.getPrimaryRowState().isNew()){
partOfTeam=true
}
}
if(!partOfTeam){
if(!adf.util.usuarioAdministradorTemporalidad()){
throw new oracle.jbo.ValidationException('No puedes modificar esta oportunidad porque no eres parte del equipo de trabajo')
}
}
}
}
return true

adf.source.isLookupIdValid('UsuarioDesasignado_Id_c',newValue)

adf.source.isLookupIdValid('EjecutivoPreventa_Id_c',newValue)

adf.source.isLookupIdValid('Canal_Id_c',newValue)

adf.source.isLookupIdValid('Origen_Id_c',newValue)
adf.source.isLookupIdValid('ActividadEconomica_Id_c',newValue)

adf.source.isLookupIdValid('CanalObjC_Id_c',newValue)

adf.source.isLookupIdValid('Servicio_Id_c',newValue)

adf.source.isLookupIdValid('FormaDePagoDin_Id_c',newValue)

adf.source.isLookupIdValid('Plan_Id_c',newValue)

adf.source.isLookupIdValid('UltimaMilla_Id_c',newValue)

adf.source.isLookupIdValid('AnchoDeBanda_Id_c',newValue)

adf.source.isLookupIdValid('NodoWifi_Id_c',newValue)

adf.source.isLookupIdValid('OLT_Id_c',newValue)

adf.source.isLookupIdValid('Splitter_Id_c',newValue)

adf.source.isLookupIdValid('GrupoDeHilo_Id_c',newValue)

adf.source.isLookupIdValid('ColorDeHilo_Id_c',newValue)

adf.source.isLookupIdValid('IPRadioWifi_Id_c',newValue)

adf.source.isLookupIdValid('NombreCatalogoCIIUDin_Id_c',newValue)

adf.source.isLookupIdValid('CodigoPostal_Id_c',newValue)

adf.source.isLookupIdValid('Bucket_Id_c',newValue)

Expression
//Temporalidad Contacto
def vo=newView('PersonProfile')
def voc=newViewCriteria(vo)
def vocr=voc.createRow()
def voci=vocr.ensureCriteriaItem('DisponibleHasta_c')
voci.setOperator('<=')
voci.setValue(today())
def vocj=vocr.ensureCriteriaItem('EstadoDeTemporalidad_c')
vocj.setOperator('=')
vocj.setValue('ACTIVA')
voc.insertRow(vocr)
vo.appendViewCriteria(voc)
vo.executeQuery()
def ids='['
def count=0
while(vo.hasNext()){
def reg=vo.next()
if(reg.SectorComercial_c!=null&&reg.Sector_c!=null&&nvl(reg.PrimaryFormattedAddress,'')!=''){
reg.setAttribute('OwnerPartyId',300000004627567)
reg.setAttribute('EstadoDeTemporalidad_c','DESASIGNADO')
//reg.setAttribute('EstadoDeTemporalidad_c','ACTIVA')
if(count>0)
ids+=','
ids+=reg.PartyId
count+=1
}
}
//Temporalidad Cuenta
def vo=newView('OrganizationProfile')
def voc=newViewCriteria(vo)
def vocr=voc.createRow()
def voci=vocr.ensureCriteriaItem('DisponibleHasta_c')
voci.setOperator('<=')
voci.setValue(today())
def vocj=vocr.ensureCriteriaItem('EstadoDeTemporalidad_c')
vocj.setOperator('=')
vocj.setValue('ACTIVA')
voc.insertRow(vocr)
vo.appendViewCriteria(voc)
vo.executeQuery()
def ids='['
def count=0
while(vo.hasNext()){
def reg=vo.next()
//throw new oracle.jbo.ValidationException(''+reg.SalesProfileType)
def ps=reg.PartySite
def exists=false
while(ps.hasNext()){
def p=ps.next()
exists=true
}
if(reg.SectoresComerciales_c!=null&&reg.Sector_c!=null&&exists){
reg.setAttribute('OwnerPartyId',300000004627567)
reg.setAttribute('EstadoDeTemporalidad_c','DESASIGNADO')
if(count>0)
ids+=','
ids+=reg.PartyId+reg.SalesProfileType
count+=1
}
}

//Temporalidad Oportunidad//
def vo=newView('OpportunityVO')
def voc=newViewCriteria(vo)
def vocr=voc.createRow()
def voci=vocr.ensureCriteriaItem('DisponibleHasta_c')
voci.setOperator('<=')
voci.setValue(today())
def vocj=vocr.ensureCriteriaItem('EstadoDeTemporalidad_c')
vocj.setOperator('=')
vocj.setValue('ACTIVA')
voc.insertRow(vocr)
vo.appendViewCriteria(voc)
vo.executeQuery()
def ids='['
def count=0
while(vo.hasNext()){
def reg=vo.next()
reg.setAttribute('OwnerResourcePartyId',300000004627567)
reg.setAttribute('EstadoDeTemporalidad_c','DESASIGNADO')
if(count>0)
ids+=','
ids+=reg.OptyId
count+=1
}
def historico = newView('HistoricoDeTemporalidad_c')
def crear = historico.createRow();
crear.setAttribute('IdOportunidad_c', OptyId);
crear.setAttribute('RecordName', '--');
crear.setAttribute('ValorActual_c',DisponibleHasta_c);
historico.insertRow(crear)

def partyType=CustPartyType
def party
if(AreaComercial_c=='MASIVO'){
if(Organization!=null)
party=Organization
if(Person!=null)
party=Person
def direccionesInstalacion=DireccionInstalacion_Tgt_OpportunityToDireccionInstalacion_c_Tgt
def instalacionSiteIdList=[]
def outputMap=[:]
while(direccionesInstalacion.hasNext()){
def dirInst=direccionesInstalacion.next()
dirInst.remove()
}
outputMap.put('instalacionSiteIdList',instalacionSiteIdList)
def partySiteList=[]
def siteIdToAdd=[]
if(party){
def sites=party.PartySite
while(sites.hasNext()){
def site=sites.next()
def siteId=site.PartySiteId
def siteMap=[:]
def addFlag=false
if(!instalacionSiteIdList.contains(siteId)){
def dirInst=direccionesInstalacion.createRow()
dirInst.setAttribute('Address_Id_Src_AddressToDireccionInstalacion_c',siteId)
dirInst.setAttribute('Opportunity_Id_Tgt_OpportunityToDireccionInstalacion_c',OptyId)
direccionesInstalacion.insertRow(dirInst)
addFlag=true
}
siteMap.put('AddressId',siteId)
siteMap.put('Address',site.FormattedAddress)
siteMap.put('addFlag',addFlag)
partySiteList.add(siteMap)
}
}
outputMap.put('partySiteList',partySiteList)
println(outputMap)
}
def stageId=nvl(adf.userSession.userData[stageVarName],0 as Long) as Long
if(stageId!=0){
return stageId
}
def cs=newView('VariablesDeSistema_c')
def csc=newViewCriteria(cs)
def csr=csc.createRow()
def csi=csr.ensureCriteriaItem('RecordName')
csi.setOperator('=')
csi.setValue(stageVarName)
csc.insertRow(csr)
cs.appendViewCriteria(csc)
cs.executeQuery()
//def stageId=0
while(cs.hasNext()){
def c=cs.next()
stageId=c.ValorEntero_c as Long
}
adf.userSession.userData.put(stageVarName,stageId)
return stageId
def methodId=nvl(adf.userSession.userData[MethodVarName],0 as Long) as Long
if(methodId!=0){
return methodId
}
// Put a name/value pair in the user data map
//
// Get a value by key from the user data map

def cs=newView('VariablesDeSistema_c')
def csc=newViewCriteria(cs)
def csr=csc.createRow()
def csi=csr.ensureCriteriaItem('RecordName')
csi.setOperator('=')
csi.setValue(MethodVarName)
csc.insertRow(csr)
cs.appendViewCriteria(csc)
cs.executeQuery()
//def methodId=0
while(cs.hasNext()){
def c=cs.next()
methodId=c.ValorEntero_c as Long
}
adf.userSession.userData.put(MethodVarName, methodId)
return methodId
def idClienteSales =nvl(NumeroDeDocumento_c,'');
def errorMsg=''
def identificadorClienteOSC =TargetPartyId;
def tipoCliente = CustPartyType;
//if(tipoCliente == 'PERSON'){
//idClienteSales = Person?.CodigoNetPlus_c;
// identificadorClienteOSC = Person?.PartyNumber;
//}else{
//idClienteSales = PrimaryContactPerson?.CodigoNetPlus_c;
// identificadorClienteOSC = PrimaryContactPerson?.PartyNumber;
//}
def identificadorOppOSC = OptyId;
def numeroOportunidad = OptyNumber;
def nombreOportunidad = nvl(Name,'');
nombreOportunidad = nombreOportunidad.trim();
def moneda = nvl(CurrencyCode,'');
moneda = moneda.trim();
def monto = nvl(Revenue,0 as BigDecimal);

def importeNeto = nvl(ImporteNeto_c,'0.0');


def ownerId = OwnerResourcePartyId;
def ownerName = nvl(PartyName1,'');
ownerName = ownerName.trim();
def descuentoOppP = nvl(DescuentoOportunidad_c,0 as BigDecimal);
def descuentoOppM = nvl(DescuentoImporte_c,0 as BigDecimal);
def CodigoNetPlus = CodigoNetPlus_c;
def accion ='';
if (CodigoNetPlus == null || CodigoNetPlus == '' || CodigoNetPlus == '0'|| CodigoNetPlus == ' '){accion ='Creación'}
else{accion ='Actualización'}

def tipo = nvl(Tipo_c,'');


tipo = tipo.trim();
def Canal = nvl(CanalObjC_c,'');
Canal = Canal.trim();
def origen =nvl(Origen_c,'');
origen = origen.trim();

//def LOportunidad = [:]


//def lineasOportunidad= [LOportunidad]

def codProducto ='';


def codGrupoProducto ='';
def producto = '';
def cantidad = '';
def descuento ='';
def valorUnitario ='';
def montoTotal ='';
def lineasOportunidad = []
def contador = 0;
def lineas = ChildRevenue;
while (lineas.hasNext()){
def linea = lineas.next();
def maplinea = [:]
maplinea.put('codLineaOportunidad', linea.RevnNumber);
maplinea.put('codProducto',linea.RevnId)
maplinea.put('codGrupoProducto',linea.InventoryItemId)
maplinea.put('producto',linea.Description)
maplinea.put('cantidad',linea.Quantity)
maplinea.put('descuento',nvl(linea.Descuento_c,0 as BigDecimal))
maplinea.put('valorUnitario',linea.UnitPrice)
maplinea.put('montoTotal',linea.RevnAmount)
maplinea.put('valorInstalacion', linea.ValorDeInstalacion_c);
lineasOportunidad.add(maplinea)
contador +=1;
}
println('contador: ' +contador)

if(nvl(CodigoNetplusDelCliente_c,'')==''){
errorMsg+='No es posible enviar la oportunidad porque el cliente aún no ha sido enviado a Netplus'
}
if(idClienteSales==''){
errorMsg+='Es necesario seleccionar el Número de Documento sobre el que se levantará el Plan. Para seleccionar el Núm
elegir
} un Tipo de Documento capturado en el cliente.'
if(contador==0){
errorMsg+='La oportunidad no cuenta con un producto. No es posible enviar el contrato. '
}
if(errorMsg!=''){
throw new oracle.jbo.ValidationException(errorMsg)
}
/*
LOportunidad.put('codLineaOportunidad',codLineaOportunidad)
LOportunidad.put('codProducto',codProducto)
LOportunidad.put('codGrupoProducto',codGrupoProducto)
LOportunidad.put('producto',producto)
LOportunidad.put('cantidad',cantidad)
LOportunidad.put('descuento',descuento)
LOportunidad.put('valorUnitario',valorUnitario)
LOportunidad.put('montoTotal',montoTotal)
LOportunidad.put('valorInstalacion',valorInstalacion)

*/

def payload = [:]


payload.put('idClienteSales',idClienteSales.trim())
payload.put('identificadorOppOSC',identificadorOppOSC)
payload.put('identificadorClienteOSC',identificadorClienteOSC)
payload.put('numeroOportunidad',numeroOportunidad)
payload.put('nombreOportunidad',nombreOportunidad)
payload.put('moneda',moneda)
payload.put('monto',monto)
payload.put('importeNeto',importeNeto)
payload.put('ownerId',ownerId)
payload.put('ownerName',ownerName)
payload.put('descuentoOppP',descuentoOppP)
payload.put('descuentoOppM',descuentoOppM)
payload.put('accion',accion)
payload.put('tipo',tipo)
payload.put('lineasOportunidad',lineasOportunidad)

println('PAYLOAD: ' +payload)

def crearActualizar = '';


def MensajeRespuesta = '';
if(contador == 0){
throw new oracle.jbo.ValidationException('Es necesario enviar un producto para crear o actualizar una oportunidad')
}
if(idClienteSales)
try{
crearActualizar = adf.webServices.CrearActualizarOportunidad.POST(payload)
println('RESPONSE: ' +crearActualizar)
MensajeRespuesta = crearActualizar.mensaje;
if (crearActualizar.codigoRespuesta == '1'){
def codOportunidadNetplus=nvl(crearActualizar['codOportunidadNetplus'],'')
if(codOportunidadNetplus!=''){
setAttribute('DescripcionInt_c','Oportunidad creada con éxito en Netplus')
setAttribute('CodigoNetPlus_c',codOportunidadNetplus)
def cliente=Organization
if(cliente==null){
cliente=Person
}
if(cliente!=null){
cliente.setAttribute('ConsiderarComoCliente_c','Y')
}
}
def POST_param=[:]
POST_param.put('Oportunidad_Id_c',identificadorOppOSC)
POST_param.put('Integracion_c',16)
POST_param.put('IdPrincipal_c',0)

POST_param.put('MensajeIntegracion_c',encodeToBase64(''+MensajeRespuesta))
POST_param.put('Payload_c',encodeToBase64(''+ payload))
POST_param.put('Response_c',encodeToBase64(''+crearActualizar))

adf.webServices.LogBitacora.POST(POST_param)
}else{
def POST_param=[:]
POST_param.put('Oportunidad_Id_c',identificadorOppOSC)
POST_param.put('Integracion_c',16)
POST_param.put('IdPrincipal_c',0)

POST_param.put('MensajeIntegracion_c',encodeToBase64(''+MensajeRespuesta))
POST_param.put('Payload_c',encodeToBase64(''+ payload))
POST_param.put('Response_c',encodeToBase64(''+ crearActualizar))

adf.webServices.LogBitacora.POST(POST_param)

throw new oracle.jbo.ValidationException(''+MensajeRespuesta)

}
}
catch(Exception e){
def msg=e.message
def POST_param=[:]
POST_param.put('Oportunidad_Id_c',identificadorOppOSC)
POST_param.put('Integracion_c',16)
POST_param.put('IdPrincipal_c',0)

POST_param.put('MensajeIntegracion_c',encodeToBase64(msg))
POST_param.put('Payload_c',encodeToBase64(''+ payload))
POST_param.put('Response_c',encodeToBase64(''+crearActualizar))
adf.webServices.LogBitacora.POST(POST_param)

//throw new oracle.jbo.ValidationException(''+ msg)


throw new oracle.jbo.ValidationException('Error: ' + e)
//guardar la integración con este mensaje
}

def outputMap=[:]
def i=1
while(i<=2){
def ultimaMillaMap=[:]
ultimaMillaMap.put('Descripcion','Última Milla ' + i)
def j=1
def planes=[:]
while(j<=2){
def planMap=[:]
def numPlan=(i-1)*2+j
planMap.put('Nombre','Plan ' + numPlan )
def k=1
def anchosBanda=[:]
while(k<=2){
def anchoBandaMap=[:]
def numAnchoBanda=(numPlan-1)*2+k
anchoBandaMap.put('Descripcion','Ancho de Banda '+numAnchoBanda)
anchosBanda.put('AB'+numAnchoBanda,anchoBandaMap)
k+=1
}
planMap.put('AnchoBanda',anchosBanda)
planes.put('P'+numPlan,planMap)
j+=1
}
ultimaMillaMap.put('Planes',planes)
outputMap.put('UM'+i,ultimaMillaMap)
i+=1
}
outputMap
def map=mapEjemplo()
parsePlanes(map['Planes'])
parseWifi(map['Wifi'])
parseFibra(map['Fibra'])
//cuentas
def tipoCliente = CustPartyType;
def identificadorOppOSC_c =OptyId;
def tipoDocumento_c = '';
def numeroDocumento_c = '';
def payload = [:]
def POST_param=[:]
def consulta= '';
def contacto = '';

try{
if(tipoCliente == 'PERSON'){
contacto = AccountName;
if(nvl(contacto,null)==null){ throw new oracle.jbo.ValidationException('Campo requerido:Cliente ')}
tipoDocumento_c = Person?.TipoDocumento_c;
numeroDocumento_c = Person?.NumeroDeDocumento_c;
if(nvl(tipoDocumento_c,null)==null){ throw new oracle.jbo.ValidationException('Campo requerido: Tipo de documento')}
if(nvl(numeroDocumento_c,null)==null){ throw new oracle.jbo.ValidationException('Campo requerido: Número de docum
}
else{
contacto = ContactName;
if(nvl(contacto,null)==null){ throw new oracle.jbo.ValidationException('Campo requerido: Contacto principal')}
tipoDocumento_c =PrimaryContactPerson?.TipoDocumento_c;
numeroDocumento_c = PrimaryContactPerson?.NumeroDeDocumento_c;
if(nvl(tipoDocumento_c,null)==null){ throw new oracle.jbo.ValidationException('Campo requerido: Tipo de documento')}
if(nvl(numeroDocumento_c,null)==null){ throw new oracle.jbo.ValidationException('Campo requerido: Número de docum
}
payload.put('tipoDocumento',tipoDocumento_c)
payload.put('numeroDocumento',numeroDocumento_c)

println('PAYLOAD CONSULTA CALIFICACION: '+ payload)


consulta = adf.webServices.ConsultarCalificacionCliente.POST(payload)
println('RESPUESTA CONSULTA CALIFICACION: '+ consulta)
if(consulta?.codigoRespuesta == '1' ){

def capacidadPago_c = consulta?.capacidadPago;


setAttribute('Segmentacion_c',consulta?.segmentacion);

setAttribute('ClienteCastigado_c',consulta?.clienteCastigado.Descripcion[0]);

setAttribute('ResultadoDelModelo_c',consulta?.resultadoModelo);
setAttribute('RegistraTCActiva_c',consulta?.registraTCActiva);
setAttribute('ClienteConDeuda_c',consulta?.clienteDeuda.Descripcion[0]);
println(consulta?.clienteDeuda.Descripcion)
setAttribute('CapacidadPagoNum_c', (capacidadPago_c as BigDecimal).setScale(2,BigDecimal.ROUND_HALF_UP))

println('CAPACIDAD DE PAGO: '+ CapacidadPagoNum_c)

def listaFormaDePago= consulta['formaPago']


//println('Forma de pago: '+ listaFormaDePago)

def listRows = newView('FormaDePago_c')


for(Cod in listaFormaDePago){
def listRow = listRows.createRow()
listRow.setAttribute('Oportunidad_Id_c',OptyId)
listRow.setAttribute('Activo_c','Y')
listRow.setAttribute('RecordName',Cod['Codigo'])
listRow.setAttribute('Descripcion_c',Cod['Descripcion'])
listRows.insertRow(listRow)
}

POST_param.put('Oportunidad_Id_c',identificadorOppOSC_c)
POST_param.put('Integracion_c',2)
POST_param.put('MensajeIntegracion_c',encodeToBase64('prueba'))
POST_param.put('Payload_c',encodeToBase64(''+ payload))
POST_param.put('Response_c',encodeToBase64(''+consulta))
POST_param.put('IdPrincipal_c',0)
adf.webServices.LogBitacora.POST(POST_param)
creaHistoricoConsultaScore()
setAttribute('FechaConsultaScore_c',now())

}else{

def mensaje = consulta?.mensaje;


POST_param.put('Oportunidad_Id_c',identificadorOppOSC_c)
POST_param.put('Integracion_c',2)
POST_param.put('MensajeIntegracion_c',encodeToBase64(''+mensaje))
POST_param.put('Payload_c',encodeToBase64(''+ payload))
POST_param.put('Response_c',encodeToBase64(''+consulta))
POST_param.put('IdPrincipal_c',0)

adf.webServices.LogBitacora.POST(POST_param)
throw new oracle.jbo.ValidationException(''+mensaje)

}
catch(Exception e){
def msg=e.message

POST_param.put('Oportunidad_Id_c',identificadorOppOSC_c)
POST_param.put('Integracion_c',2)
POST_param.put('MensajeIntegracion_c',encodeToBase64(msg))
POST_param.put('Payload_c',encodeToBase64(''+ payload))
POST_param.put('Response_c',encodeToBase64(''+consulta))
POST_param.put('IdPrincipal_c',0)

adf.webServices.LogBitacora.POST(POST_param)
//throw new oracle.jbo.ValidationException(''+consulta?.resultadoModelo)

throw new oracle.jbo.ValidationException('' + msg)


}

def promociones_c =[]


def serviciosAdicionales = []
def Tipo_1 = '';
def Renovacion_1 = '';
def Renovacion_2 = '';

def serviciosAdd =[:]


def promociones = newView('PromocionesYServicios_c')
def promocionc = newViewCriteria(promociones)
def promocionr = promocionc.createRow()
def promocioni = promocionr.ensureCriteriaItem('Oportunidad_Id_c')
promocioni.setOperator('=')
promocioni.setValue(OptyId)
promocionc.insertRow(promocionr)
promociones.appendViewCriteria(promocionc)
def promocionj=promocionr.ensureCriteriaItem('Seleccionar_c')
promocionj.setOperator('=')
promocionj.setValue('Y')
promocionc.insertRow(promocionr)
promociones.appendViewCriteria(promocionc)
promociones.executeQuery();
while (promociones.hasNext()){
def promocion = promociones.next();
def promo = [:]
def enviar = promocion.Seleccionar_c
Tipo_1 = promocion.Tipo_c;
if (Tipo_1 == 'PROMOCION'){
promo.put('idPromocion',nvl(promocion.RecordName,''))
// println('id:'+promocion.RecordName)
promociones_c.add(promo)
}

/*def enviar = promocion.Seleccionar_c;

//promo.put('tipo'{,promocion.Tipo_c)
if (enviar == 'Y'){
if(Tipo_1 == 'PROMOCION'){
promo.put('idPromocion',nvl(promocion.RecordName,''))
promo.put('cantidad',nvl(promocion.CantidadNum_c,0 as BigDecimal))
Renovacion_1 = nvl(promocion.RenovacionFlag_c,'N');
if(Renovacion_1 == 'Y'){Renovacion_1 = '1'}else{Renovacion_1 = '0'}
promo.put('renovacion',Renovacion_1)
def detalleP = nvl(promocion.Detalle_Obj_c?.RecordName,'')
//if (detalleP == 0){detalleP =''}
promo.put('detalle',detalleP)
def diferirP = nvl(promocion.Diferir_Obj_c?.RecordName,'');
if (diferirP == '0'){diferirP =''}
promo.put('diferir',diferirP)
def descuentoP = nvl(promocion.Descuento_Obj_c?.RecordName,'');
if(descuentoP == '0'){descuentoP =''}
promo.put('descuento',descuentoP)
promo.put('intervaloCada',nvl(promocion.IntervaloCada_c,''))
promo.put('intervaloHasta',nvl(promocion.IntervaloHasta_c,''))
promo.put('valorUnitario',nvl(promocion.ValorUnitario_c,0 as BigDecimal))
promo.put('valorMensual',nvl(promocion.ValorMensual_c,0 as BigDecimal))
promociones_c.add(promo)
}else{
// serviciosAdd.put('tipo',nvl(promocion.Tipo_c,''))
serviciosAdd.put('idServicio',nvl(promocion.RecordName,''))
serviciosAdd.put('cantidad',nvl(promocion.CantidadNum_c,0 as BigDecimal))
Renovacion_2 = nvl(promocion.Renovacion_c,'N')
if(Renovacion_2 == 'Y'){Renovacion_2 = '0'}else{Renovacion_2 = '1'}
serviciosAdd.put('renovacion',Renovacion_2)
def detalleS = nvl(promocion.Detalle_Obj_c?.RecordName,'');
//if (detalleS ==0){detalleS =''}
serviciosAdd.put('detalle',detalleS)
def diferirS = nvl(promocion.Diferir_Obj_c?.RecordName,'');
if(diferirS == '0'){diferirS=''}
serviciosAdd.put('diferir',diferirS)
def descuentoS =nvl(promocion.Descuento_Obj_c?.RecordName,'');
if(descuentoS == '0'){descuentoS=''}
serviciosAdd.put('descuento',descuentoS)
serviciosAdd.put('intervaloCada',nvl(promocion.IntervaloCada_c,''))
serviciosAdd.put('intervaloHasta',nvl(promocion.IntervaloHasta_c,''))
serviciosAdd.put('valorUnitario',nvl(promocion.ValorUnitario_c,0 as BigDecimal))
serviciosAdd.put('valorMensual',nvl(promocion.ValorMensual_c,0 as BigDecimal))
serviciosAdicionales.add(serviciosAdd)
}
}
*/
}

println('promociones: '+promociones_c)
/*
def revs = ChildRevenue;
while (revs.hasNext()){
def rev = revs.next();
def des = [:]
des.put('idPromocion',nvl(rev.DescuentoMasivoDin_Obj_c?.RecordName,''))
des.put('cantidad',1)
des.put('renovacion',1)
def detalleP = nvl(rev.Detalle_Obj_c?.RecordName,'')
des.put('detalle',detalleP)
def diferirP = nvl(rev.Diferir_Obj_c?.RecordName,'');
if (diferirP == '0'){diferirP =''}
des.put('diferir',diferirP)
def descuentoP = nvl(rev.DescuentoDin_Obj_c?.RecordName,'');
if(descuentoP == '0'){descuentoP =''}
des.put('descuento',descuentoP)
des.put('intervaloCada',nvl(rev.IntervaloCadaNum_c,''))
des.put('intervaloHasta',nvl(rev.IntervaloHastaNum_c,''))
des.put('valorUnitario',nvl(rev.CostoDelPlan_c,0 as BigDecimal))
des.put('valorMensual',nvl(rev.TotalDelPlan_c,0 as BigDecimal))
promociones_c.add(des)

}
*/

def outputMap=[:]
def i=1
def maxEntries=2
def planList=[]
def wifiList=[]
def fibraList=[]
while(i<=maxEntries){
//PLANES
def mapPlan=[:]
def index=i
mapPlan.put('Codigo','P'+index)
mapPlan.put('Descripcion','Plan '+index)
def j=1
def listUM=[]
while(j<=maxEntries){
def mapUM=[:]
index=j+(i-1)*2
mapUM.put('Codigo','UM'+index)
mapUM.put('Descripcion','Ultima Milla '+index)

listUM.add(mapUM)
j+=1
}
mapPlan.put('UltimaMilla',listUM)
def listAB=[]

j=1
while(j<=maxEntries){
def mapAB=[:]
index=j+(i-1)*2
mapAB.put('Codigo','AB'+index)
mapAB.put('Descripcion','Ancho de Banda '+index)

listAB.add(mapAB)
j+=1
}
mapPlan.put('AnchoDeBanda',listAB)
planList.add(mapPlan)

//WIFI
def mapNW=[:]
index=i
mapNW.put('Codigo','NW'+index)
mapNW.put('Descripcion','Nodo Wifi '+index)
def listIW=[]
j=1
while(j<=maxEntries){
def mapIW=[:]
index=j+(i-1)*2
mapIW.put('Codigo','IW'+index)
mapIW.put('Descripcion','IP Wifi '+index)
listIW.add(mapIW)
j+=1
}
mapNW.put('IpWifi',listIW)
wifiList.add(mapNW)
//Fibra
def mapOLT=[:]
index=1
mapOLT.put('Codigo','OLT'+index)
mapOLT.put('Descripcion','OLT '+index)
def listSP=[]
j=1
while(j<=maxEntries){
def mapSP=[:]
index=j+(i-1)*2
mapSP.put('Codigo','SP'+index)
mapSP.put('Descripcion','Splitter '+index)
def listGH=[]
def k=1
while(k<=maxEntries){
def mapGH=[:]
index=k+(j-1)*2+(i-1)*4
mapGH.put('Codigo','GH'+index)
mapGH.put('Descripcion','Grupo de Hilo '+index)
def listCH=[]
def m=1
while(m<=maxEntries){
def mapCH=[:]
index=m+(k-1)*2+(j-1)*4+(i-1)*8
mapCH.put('Codigo','CH'+index)
mapCH.put('Descripcion','Color de Hilo '+index)
listCH.add(mapCH)
m+=1
}
mapGH.put('ColorHilo',listCH)
listGH.add(mapGH)
k+=1
}
mapSP.put('GrupoHilo',listGH)
listSP.add(mapSP)
j+=1
}
mapOLT.put('Splitter',listSP)
fibraList.add(mapOLT)
i+=1
}
outputMap.put('Planes',planList)
outputMap.put('Wifi',wifiList)
outputMap.put('Fibra',fibraList)
outputMap
def planRows=newView('Plan_c')
for(plan in planes){
def planRow=planRows.createRow()
println('plan:'+plan)
planRow.setAttribute('Oportunidad_Id_c',OptyId)
planRow.setAttribute('Activo_c','Y')
planRow.setAttribute('RecordName',plan['Codigo'])
planRow.setAttribute('Descripcion_c',plan['Descripcion'])
planRows.insertRow(planRow)
def planId=planRow.Id
def ultimasMillas=plan['UltimaMilla']
def anchosBanda=plan['AnchoDeBanda']

def umRows=newView('UltimaMillaNetplus_c')
for(um in ultimasMillas){
println('um:'+um)
def umRow=umRows.createRow()
umRow.setAttribute('Oportunidad_Id_c',OptyId)
umRow.setAttribute('Activo_c','Y')
umRow.setAttribute('RecordName',um['Codigo'])
umRow.setAttribute('Descripcion_c',um['Descripcion'])
umRow.setAttribute('Plan_Id_c',planId)
umRows.insertRow(umRow)
}
def abRows=newView('AnchoDeBanda_c')
for(ab in anchosBanda){
println('anchoBanda:'+ab)
def abRow=abRows.createRow()
abRow.setAttribute('Oportunidad_Id_c',OptyId)
abRow.setAttribute('Activo_c','Y')
abRow.setAttribute('RecordName',ab['Codigo'])
abRow.setAttribute('Descripcion_c',ab['Descripcion'])
abRow.setAttribute('Plan_Id_c',planId)
abRows.insertRow(abRow)
}
}
def nodoWifiRows=newView('NodoWifi_c')
for(nodoWifi in nodosWifi){
println('nodoWifi:'+nodoWifi)
def nodoWifiRow=nodoWifiRows.createRow()
nodoWifiRow.setAttribute('Oportunidad_Id_c',OptyId)
nodoWifiRow.setAttribute('Activo_c','Y')
nodoWifiRow.setAttribute('RecordName',nodoWifi['Codigo'])
nodoWifiRow.setAttribute('Descripcion_c',nodoWifi['Descripcion'])
nodoWifiRows.insertRow(nodoWifiRow)
def nodoWifiId=nodoWifiRow.Id
def ipws=nodoWifi['IpWifi']
def ipwRows=newView('IPRadioWifi_c')
for(ipw in ipws){
println('ipw:'+ipw)
def ipwRow=ipwRows.createRow()
ipwRow.setAttribute('Oportunidad_Id_c',OptyId)
ipwRow.setAttribute('Activo_c','Y')
ipwRow.setAttribute('RecordName',ipw['Codigo'])
ipwRow.setAttribute('Descripcion_c',ipw['Descripcion'])
ipwRow.setAttribute('NodoWifi_Id_c',nodoWifiId)
ipwRows.insertRow(ipwRow)
}
}
def oltRows=newView('OLT_c')
for(olt in olts){
def oltRow=oltRows.createRow()
println('olt:'+olt)
oltRow.setAttribute('Oportunidad_Id_c',OptyId)
oltRow.setAttribute('Activo_c','Y')
oltRow.setAttribute('RecordName',olt['Codigo'])
oltRow.setAttribute('Descripcion_c',olt['Descripcion'])
oltRows.insertRow(oltRow)
def oltId=oltRow.Id
def splitters=olt['Splitter']
def splitterRows=newView('Splitter_c')
for(splitter in splitters){
println('splitter:'+splitter)
def splitterRow=splitterRows.createRow()
def splitterId=splitterRow.Id
splitterRow.setAttribute('Oportunidad_Id_c',OptyId)
splitterRow.setAttribute('Activo_c','Y')
splitterRow.setAttribute('RecordName',splitter['Codigo'])
splitterRow.setAttribute('Descripcion_c',splitter['Descripcion'])
splitterRow.setAttribute('OLT_Id_c',oltId)
splitterRows.insertRow(splitterRow)

def gruposHilo=splitter['GrupoHilo']
def ghRows=newView('GrupoDeHilo_c')
for(gh in gruposHilo){
println('gh:'+gh)
def ghRow=ghRows.createRow()
def ghId=ghRow.Id
ghRow.setAttribute('Oportunidad_Id_c',OptyId)
ghRow.setAttribute('Activo_c','Y')
ghRow.setAttribute('RecordName',gh['Codigo'])
ghRow.setAttribute('Descripcion_c',gh['Descripcion'])
ghRow.setAttribute('Splitter_Id_c',splitterId)
ghRows.insertRow(ghRow)
def coloresHilo=gh['ColorHilo']
def chRows=newView('ColorDeHilo_c')
for(ch in coloresHilo){
println('ch:'+ch)
def chRow=chRows.createRow()
chRow.setAttribute('Oportunidad_Id_c',OptyId)
chRow.setAttribute('Activo_c','Y')
chRow.setAttribute('RecordName',ch['Codigo'])
chRow.setAttribute('Descripcion_c',ch['Descripcion'])
chRow.setAttribute('GrupoDeHilo_Id_c',ghId)
chRows.insertRow(chRow)
}
}
}
}
def i=1
def maxEntries=2
def listaPYS=[]
while(i<=maxEntries){
def mapPYS=[:]
def tipo=(i%2==0)?'SERVICIO':'PROMOCION'
def edit= i==1
mapPYS.put('Tipo',tipo)
mapPYS.put('Codigo','PYS'+i)
mapPYS.put('Descripcion',tipo+'1')

def j=1
def listCantidad=[]
def index=0
while(j<=maxEntries){
def mapCantidad=[:]
index=j+(i-1)*2
mapCantidad.put('Codigo','Cantidad'+index)
mapCantidad.put('Cantidad',index*3)

listCantidad.add(mapCantidad)
j+=1
}
mapPYS.put('Cantidad',listCantidad)
mapPYS.put('CantidadEditable',edit)

j=1
def listRenovacion=[]
while(j<=maxEntries){
def mapRenovacion=[:]
index=j+(i-1)*2
mapRenovacion.put('Codigo','Renovacion'+index)
mapRenovacion.put('Descripcion','Renovacion '+index)

listRenovacion.add(mapRenovacion)
j+=1
}
mapPYS.put('Renovacion',listRenovacion)
mapPYS.put('RenovacionEditable',edit)

j=1
def listDet=[]
while(j<=maxEntries){
def mapDet=[:]
index=j+(i-1)*2
mapDet.put('Codigo','Det'+index)
mapDet.put('Descripcion','Detalle '+index)

listDet.add(mapDet)
j+=1
}
mapPYS.put('Detalle',listDet)
mapPYS.put('DetalleEditable',edit)

j=1
def listDiferir=[]
while(j<=maxEntries){
def mapDiferir=[:]
index=j+(i-1)*2
mapDiferir.put('Codigo','Diferir'+index)
mapDiferir.put('Descripcion','Diferir '+index)

listDiferir.add(mapDiferir)
j+=1
}
mapPYS.put('Diferir',listDiferir)
mapPYS.put('DiferirEditable',!edit)

j=1
def listDescuento=[]
while(j<=maxEntries){
def mapDescuento=[:]
index=j+(i-1)*2
mapDescuento.put('Codigo','Descuento'+index)
mapDescuento.put('Descripcion','Descuento '+index)

listDescuento.add(mapDescuento)
j+=1
}
mapPYS.put('Descuento',listDescuento)
mapPYS.put('DescuentoEditable',edit)

j=1
def listIntervaloCada=[]
while(j<=maxEntries){
def mapIntervaloCada=[:]
index=j+(i-1)*2
mapIntervaloCada.put('Codigo','IntervaloCada'+index)
mapIntervaloCada.put('Descripcion','Intervalo Cada '+index)

listIntervaloCada.add(mapIntervaloCada)
j+=1
}
mapPYS.put('IntervaloCada',listIntervaloCada)
mapPYS.put('IntervaloCadaEditable',!edit)

j=1
def listIntervaloHasta=[]
while(j<=maxEntries){
def mapIntervaloHasta=[:]
index=j+(i-1)*2
mapIntervaloHasta.put('Codigo','IntervaloHasta'+index)
mapIntervaloHasta.put('Descripcion','Intervalo Hasta '+index)

listIntervaloHasta.add(mapIntervaloHasta)
j+=1
}
mapPYS.put('IntervaloHasta',listIntervaloHasta)
mapPYS.put('IntervaloHastaEditable',edit)

mapPYS.put('Estado','Estado')
mapPYS.put('ValorUnitario',10024.50)
mapPYS.put('ValorMensual',10024.50*100)

listaPYS.add(mapPYS)
i+=1
}
listaPYS
def pysRows=newView('PromocionesYServicios_c')
for(pys in pyss){
def pysRow=pysRows.createRow()
def pysId=pysRow.Id
pysRow.setAttribute('RecordName',pys['Codigo'])
pysRow.setAttribute('Descripcion_c',pys['Descripcion'])
pysRow.setAttribute('Tipo_c',pys['Tipo'])
pysRow.setAttribute('CantidadEditable_c',checkbox(pys['CantidadEditable'] as Boolean))
pysRow.setAttribute('RenovacionEditable_c',checkbox(pys['RenovacionEditable'] as Boolean))
pysRow.setAttribute('DetalleEditable_c',checkbox(pys['DetalleEditable'] as Boolean))
pysRow.setAttribute('DiferirEditable_c',checkbox(pys['DiferirEditable'] as Boolean))
pysRow.setAttribute('DescuentoEditable_c',checkbox(pys['DescuentoEditable'] as Boolean))
pysRow.setAttribute('IntervaloCadaEditable_c',checkbox(pys['IntervaloCadaEditable'] as Boolean))
pysRow.setAttribute('IntervaloHastaEditable_c',checkbox(pys['IntervaloHastaEditable'] as Boolean))
pysRow.setAttribute('Oportunidad_Id_c',OptyId)

def cantidades=pys['Cantidad']
def cantidadRows=newView('Cantidad_c')
def count=0
for(cantidad in cantidades){
def cantidadRow=cantidadRows.createRow()
if(count==0)
pysRow.setAttribute('Cantidad_Id_c',cantidadRow.Id)
cantidadRow.setAttribute('PromocionOServicio_Id_c',pysId)
cantidadRow.setAttribute('Activo_c','Y')
cantidadRow.setAttribute('RecordName',cantidad['Codigo'])
cantidadRow.setAttribute('Cantidad_c',cantidad['Cantidad'])
cantidadRows.insertRow(cantidadRow)
count+=1
}

def Renovaciones=pys['Renovacion']
def RenovacionRows=newView('Renovacion_c')
count=0
for(Renovacion in Renovaciones){
def RenovacionRow=RenovacionRows.createRow()
if(count==0)
pysRow.setAttribute('Renovacion_Id_c',RenovacionRow.Id)
RenovacionRow.setAttribute('PromocionOServicio_Id_c',pysId)
RenovacionRow.setAttribute('Activo_c','Y')
RenovacionRow.setAttribute('RecordName',Renovacion['Codigo'])
RenovacionRow.setAttribute('Descripcion_c',Renovacion['Descripcion'])
RenovacionRows.insertRow(RenovacionRow)
count+=1
}

def Detalles=pys['Detalle']
def DetalleRows=newView('Detalle_c')
count=0
for(Detalle in Detalles){
def DetalleRow=DetalleRows.createRow()
if(count==0)
pysRow.setAttribute('Detalle_Id_c',DetalleRow.Id)
DetalleRow.setAttribute('PromocionOServicio_Id_c',pysId)
DetalleRow.setAttribute('Activo_c','Y')
DetalleRow.setAttribute('RecordName',Detalle['Codigo'])
DetalleRow.setAttribute('Descripcion_c',Detalle['Descripcion'])
DetalleRows.insertRow(DetalleRow)
count+=1
}

def Diferires=pys['Diferir']
println('Diferir:'+Diferires)
def DiferirRows=newView('Diferir_c')
count=0
for(Diferir in Diferires){
def DiferirRow=DiferirRows.createRow()
if(count==0)
pysRow.setAttribute('Diferir_Id_c',DiferirRow.Id)
DiferirRow.setAttribute('PromocionOServicio_Id_c',pysId)
DiferirRow.setAttribute('Activo_c','Y')
DiferirRow.setAttribute('RecordName',Diferir['Codigo'])
DiferirRow.setAttribute('Descripcion_c',Diferir['Descripcion'])
DiferirRows.insertRow(DiferirRow)
count+=1
}

def Descuentoes=pys['Descuento']
def DescuentoRows=newView('Descuento_c')
count=0
for(Descuento in Descuentoes){
def DescuentoRow=DescuentoRows.createRow()
if(count==0)
pysRow.setAttribute('Descuento_Id_c',DescuentoRow.Id)
DescuentoRow.setAttribute('PromocionOservicio_Id_c',pysId)
DescuentoRow.setAttribute('Activo_c','Y')
DescuentoRow.setAttribute('RecordName',Descuento['Codigo'])
DescuentoRow.setAttribute('Descripcion_c',Descuento['Descripcion'])
DescuentoRows.insertRow(DescuentoRow)
count+=1
}

def IntervaloCadaes=pys['IntervaloCada']
def IntervaloCadaRows=newView('IntervaloCada_c')
count=0
for(IntervaloCada in IntervaloCadaes){
def IntervaloCadaRow=IntervaloCadaRows.createRow()
if(count==0)
pysRow.setAttribute('IntervaloCada_Id_c',IntervaloCadaRow.Id)
IntervaloCadaRow.setAttribute('PromocionOServicio_Id_c',pysId)
IntervaloCadaRow.setAttribute('Activo_c','Y')
IntervaloCadaRow.setAttribute('RecordName',IntervaloCada['Codigo'])
IntervaloCadaRow.setAttribute('Descripcion_c',IntervaloCada['Descripcion'])
IntervaloCadaRows.insertRow(IntervaloCadaRow)
count+=1
}

def IntervaloHastaes=pys['IntervaloHasta']
def IntervaloHastaRows=newView('IntervaloHasta_c')
count=0
for(IntervaloHasta in IntervaloHastaes){
def IntervaloHastaRow=IntervaloHastaRows.createRow()
if(count==0)
pysRow.setAttribute('IntervaloHasta_Id_c',IntervaloHastaRow.Id)
IntervaloHastaRow.setAttribute('PromocionOServicio_Id_c',pysId)
IntervaloHastaRow.setAttribute('Activo_c','Y')
IntervaloHastaRow.setAttribute('RecordName',IntervaloHasta['Codigo'])
IntervaloHastaRow.setAttribute('Descripcion_c',IntervaloHasta['Descripcion'])
IntervaloHastaRows.insertRow(IntervaloHastaRow)
count+=1
}
pysRow.setAttribute('Estado_c',pys['Estado'])
pysRow.setAttribute('ValorUnitario_c',pys['ValorUnitario'])
pysRow.setAttribute('ValorMensual_c',pys['ValorMensual'])
pysRows.insertRow(pysRow)

if(input){
return 'Y'
}
return 'N'
def list=listPromocionesYServicios()
println('list:'+list)
parsePromocionesYServicios(list)
///***CAMPOS OPORTUNIDAD***///
def milla = UltimaMilla_c
///***CAMPOS ANCHO DE BANDA***///
def descripción=AnchoDeBanda_Obj_c?.Descripcion_c
def plan = AnchoDeBanda_Obj_c?.Plan_c
def codigoAncho=''
def descAncho=''
///***CAMPOS WIFI***///
def nodoWifi=IPRadioWifi_Obj_c?.NodoWifi_c
def ipRadio='IP'
///***CAMPOS FIBRA***///
def OLT=OLT_c
def spliter=Splitter_c
def grupoHilo=GrupoDeHilo_c
def colorHilo=ColorDeHilo_c
if(nvl(nodoWifi)==null){ throw new oracle.jbo.ValidationException('Campo requerido: Nodo Wifi')}
if(nvl(ipRadio)==null){ throw new oracle.jbo.ValidationException('Campo requerido: IP Radio Wiffi')}
if(nvl(OLT)==null){ throw new oracle.jbo.ValidationException('Campo requerido: OLT')}
if(nvl(grupoHilo)==null){ throw new oracle.jbo.ValidationException('Campo requerido: Grupo de Hilo')}
if(nvl(colorHilo)==null){ throw new oracle.jbo.ValidationException('Campo requerido: Color de Hilo')}
if(nvl(spliter)==null){ throw new oracle.jbo.ValidationException('Campo requerido: Splitter')}

try{
def payload=[

]
try{
def result='';
def POST_param=[:]
POST_param.put('Cuenta_Id_c','11')
POST_param.put('Integracion_c',11)
POST_param.put('MensajeIntegracion_c','Exito')
POST_param.put('Payload_c',encodeToBase64('Payload'))
POST_param.put('Response_c',encodeToBase64('Response'))
POST_param.put('IdPrincipal_c','')
adf.webServices.LogBitacora.POST(POST_param)
}catch(Exception e){
//throw new oracle.jbo.ValidationException('Mensaje integración: ')
}
}catch(Exception e){
throw new oracle.jbo.ValidationException('Error en la integración: ')
}
///***CAMPOS OPORTUNIDAD***///
def Tipo = Tipo_c
///***CAMPOS FIBRA***///
def OLT=OLT_c
def spliter=Splitter_c
def grupoHilo=GrupoDeHilo_c
def colorHilo=ColorDeHilo_c

if(nvl(OLT,null)==null){ throw new oracle.jbo.ValidationException('Campo requerido: OLT')}


if(nvl(grupoHilo,null)==null){ throw new oracle.jbo.ValidationException('Campo requerido: Grupo de Hilo')}
if(nvl(colorHilo,null)==null){ throw new oracle.jbo.ValidationException('Campo requerido: Color de Hilo')}
if(nvl(spliter,null)==null){ throw new oracle.jbo.ValidationException('Campo requerido: Splitter')}

if(nvl(Segmentacion_c,null)==null){ throw new oracle.jbo.ValidationException('Campo requerido: Segmentacion')}


if(nvl(Servicio_c,null)==null){ throw new oracle.jbo.ValidationException('Campo requerido: Servicio')}
if(nvl(Plan_c,null)==null){ throw new oracle.jbo.ValidationException('Campo requerido: Plan')}

try{
def payload=[

]
def result='';

def POST_param=[:]
POST_param.put('Cuenta_Id_c','11')
POST_param.put('Integracion_c',11)
POST_param.put('MensajeIntegracion_c','Exito')
POST_param.put('Payload_c',encodeToBase64('Payload'))
POST_param.put('Response_c',encodeToBase64('Response'))
POST_param.put('IdPrincipal_c','')
adf.webServices.LogBitacora.POST(POST_param)
}catch(Exception e){
def POST_param=[:]
POST_param.put('Cuenta_Id_c','11')
POST_param.put('Integracion_c',11)
POST_param.put('MensajeIntegracion_c','Error:'+e.message)
POST_param.put('Payload_c',encodeToBase64(''))
POST_param.put('Response_c',encodeToBase64(''))
POST_param.put('IdPrincipal_c','')
adf.webServices.LogBitacora.POST(POST_param)
//throw new oracle.jbo.ValidationException('Mensaje integración: ')
}
def ae
def aes=newView('ActividadEconomica_c')
ae= aes.createRow()
ae.setAttribute('RecordName','A01')
ae.setAttribute('Descripcion_c','A01 - AGRICULTURA, GANADERÍA, CAZA Y ACTIVIDADES DE SERVICIOS CONEXAS.')
ae.setAttribute('Activo_c','Y')
aes.insertRow(ae)
ae= aes.createRow()
ae.setAttribute('RecordName','A02')
ae.setAttribute('Descripcion_c','A02 - SILVICULTURA Y EXTRACCIÓN DE MADERA.')
ae.setAttribute('Activo_c','Y')
aes.insertRow(ae)
ae= aes.createRow()
ae.setAttribute('RecordName','A03')
ae.setAttribute('Descripcion_c','A03 - PESCA Y ACUICULTURA.')
ae.setAttribute('Activo_c','Y')
aes.insertRow(ae)
ae= aes.createRow()
ae.setAttribute('RecordName','B05')
ae.setAttribute('Descripcion_c','B05 - EXTRACCIÓN DE CARBÓN DE PIEDRA Y LIGNITO.')
ae.setAttribute('Activo_c','Y')
aes.insertRow(ae)
ae= aes.createRow()
ae.setAttribute('RecordName','B06')
ae.setAttribute('Descripcion_c','B06 - EXTRACCIÓN DE PETRÓLEO CRUDO Y GAS NATURAL.')
ae.setAttribute('Activo_c','Y')
aes.insertRow(ae)
ae= aes.createRow()
ae.setAttribute('RecordName','B07')
ae.setAttribute('Descripcion_c','B07 - EXTRACCIÓN DE MINERALES METALÍFEROS.')
ae.setAttribute('Activo_c','Y')
aes.insertRow(ae)
ae= aes.createRow()
ae.setAttribute('RecordName','B08')
ae.setAttribute('Descripcion_c','B08 - EXPLOTACIÓN DE OTRAS MINAS Y CANTERAS.')
ae.setAttribute('Activo_c','Y')
aes.insertRow(ae)
ae= aes.createRow()
ae.setAttribute('RecordName','B09')
ae.setAttribute('Descripcion_c','B09 - ACTIVIDADES DE SERVICIOS DE APOYO PARA LA EXPLOTACIÓN DE MINAS Y CANTER
ae.setAttribute('Activo_c','Y')
aes.insertRow(ae)
ae= aes.createRow()
ae.setAttribute('RecordName','C10')
ae.setAttribute('Descripcion_c','C10 - ELABORACIÓN DE PRODUCTOS ALIMENTICIOS.')
ae.setAttribute('Activo_c','Y')
aes.insertRow(ae)
ae= aes.createRow()
ae.setAttribute('RecordName','C11')
ae.setAttribute('Descripcion_c','C11 - ELABORACIÓN DE BEBIDAS.')
ae.setAttribute('Activo_c','Y')
aes.insertRow(ae)
ae= aes.createRow()
ae.setAttribute('RecordName','C12')
ae.setAttribute('Descripcion_c','C12 - ELABORACIÓN DE PRODUCTOS DE TABACO.')
ae.setAttribute('Activo_c','Y')
aes.insertRow(ae)
ae= aes.createRow()
ae.setAttribute('RecordName','C13')
ae.setAttribute('Descripcion_c','C13 - FABRICACIÓN DE PRODUCTOS TEXTILES.')
ae.setAttribute('Activo_c','Y')
aes.insertRow(ae)
ae= aes.createRow()
ae.setAttribute('RecordName','C14')
ae.setAttribute('Descripcion_c','C14 - FABRICACIÓN DE PRENDAS DE VESTIR.')
ae.setAttribute('Activo_c','Y')
aes.insertRow(ae)
ae= aes.createRow()
ae.setAttribute('RecordName','C15')
ae.setAttribute('Descripcion_c','C15 - FABRICACIÓN DE CUEROS Y PRODUCTOS CONEXOS.')
ae.setAttribute('Activo_c','Y')
aes.insertRow(ae)
ae= aes.createRow()
ae.setAttribute('RecordName','C16')
ae.setAttribute('Descripcion_c','C16 - PRODUCCIÓN DE MADERA Y FABRICACIÓN DE PRODUCTOS DE MADERA Y CORCHO
FABRICACIÓN DE ARTÍCULOS DE PAJA Y DE MATERIALES TRENZABLES.')
ae.setAttribute('Activo_c','Y')
aes.insertRow(ae)
ae= aes.createRow()
ae.setAttribute('RecordName','C17')
ae.setAttribute('Descripcion_c','C17 - FABRICACIÓN DE PAPEL Y DE PRODUCTOS DE PAPEL.')
ae.setAttribute('Activo_c','Y')
aes.insertRow(ae)
ae= aes.createRow()
ae.setAttribute('RecordName','C18')
ae.setAttribute('Descripcion_c','C18 - IMPRESIÓN Y REPRODUCCIÓN DE GRABACIONES.')
ae.setAttribute('Activo_c','Y')
aes.insertRow(ae)
ae= aes.createRow()
ae.setAttribute('RecordName','C19')
ae.setAttribute('Descripcion_c','C19 - FABRICACIÓN DE COQUE Y DE PRODUCTOS DE LA REFINACIÓN DEL PETRÓLEO.')
ae.setAttribute('Activo_c','Y')
aes.insertRow(ae)
ae= aes.createRow()
ae.setAttribute('RecordName','C20')
ae.setAttribute('Descripcion_c','C20 - FABRICACIÓN DE SUBSTANCIAS Y PRODUCTOS QUÍMICOS.')
ae.setAttribute('Activo_c','Y')
aes.insertRow(ae)
ae= aes.createRow()
ae.setAttribute('RecordName','C21')
ae.setAttribute('Descripcion_c','C21 - FABRICACIÓN DE PRODUCTOS FARMACÉUTICOS, SUSTANCIAS QUÍMICAS MEDICINA
BOTÁNICOS DE USO FARMACÉUTICO.')
ae.setAttribute('Activo_c','Y')
aes.insertRow(ae)
ae= aes.createRow()
ae.setAttribute('RecordName','C22')
ae.setAttribute('Descripcion_c','C22 - FABRICACIÓN DE PRODUCTOS DE CAUCHO Y PLÁSTICO.')
ae.setAttribute('Activo_c','Y')
aes.insertRow(ae)
ae= aes.createRow()
ae.setAttribute('RecordName','C23')
ae.setAttribute('Descripcion_c','C23 - FABRICACIÓN DE OTROS PRODUCTOS MINERALES NO METÁLICOS.')
ae.setAttribute('Activo_c','Y')
aes.insertRow(ae)
ae= aes.createRow()
ae.setAttribute('RecordName','C24')
ae.setAttribute('Descripcion_c','C24 - FABRICACIÓN DE METALES COMUNES.')
ae.setAttribute('Activo_c','Y')
aes.insertRow(ae)
ae= aes.createRow()
ae.setAttribute('RecordName','C25')
ae.setAttribute('Descripcion_c','C25 - FABRICACIÓN DE PRODUCTOS ELABORADOS DE METAL, EXCEPTO MAQUINARIA Y EQ
ae.setAttribute('Activo_c','Y')
aes.insertRow(ae)
ae= aes.createRow()
ae.setAttribute('RecordName','C26')
ae.setAttribute('Descripcion_c','C26 - FABRICACIÓN DE PRODUCTOS DE INFORMÁTICA, ELECTRÓNICA Y ÓPTICA.')
ae.setAttribute('Activo_c','Y')
aes.insertRow(ae)
ae= aes.createRow()
ae.setAttribute('RecordName','C27')
ae.setAttribute('Descripcion_c','C27 - FABRICACIÓN DE EQUIPO ELÉCTRICO.')
ae.setAttribute('Activo_c','Y')
aes.insertRow(ae)
ae= aes.createRow()
ae.setAttribute('RecordName','C28')
ae.setAttribute('Descripcion_c','C28 - FABRICACIÓN DE MAQUINARIA Y EQUIPO N.C.P.')
ae.setAttribute('Activo_c','Y')
aes.insertRow(ae)
ae= aes.createRow()
ae.setAttribute('RecordName','C29')
ae.setAttribute('Descripcion_c','C29 - FABRICACIÓN DE VEHÍCULOS AUTOMOTORES, REMOLQUES Y SEMIRREMOLQUES.')
ae.setAttribute('Activo_c','Y')
aes.insertRow(ae)
ae= aes.createRow()
ae.setAttribute('RecordName','C30')
ae.setAttribute('Descripcion_c','C30 - FABRICACIÓN DE OTROS TIPOS DE EQUIPOS DE TRANSPORTE.')
ae.setAttribute('Activo_c','Y')
aes.insertRow(ae)
ae= aes.createRow()
ae.setAttribute('RecordName','C31')
ae.setAttribute('Descripcion_c','C31 - FABRICACIÓN DE MUEBLES.')
ae.setAttribute('Activo_c','Y')
aes.insertRow(ae)
ae= aes.createRow()
ae.setAttribute('RecordName','C32')
ae.setAttribute('Descripcion_c','C32 - OTRAS INDUSTRIAS MANUFACTURERAS.')
ae.setAttribute('Activo_c','Y')
aes.insertRow(ae)
ae= aes.createRow()
ae.setAttribute('RecordName','C33')
ae.setAttribute('Descripcion_c','C33 - REPARACIÓN E INSTALACIÓN DE MAQUINARIA Y EQUIPO.')
ae.setAttribute('Activo_c','Y')
aes.insertRow(ae)
ae= aes.createRow()
ae.setAttribute('RecordName','D35')
ae.setAttribute('Descripcion_c','D35 - SUMINISTRO DE ELECTRICIDAD, GAS, VAPOR Y AIRE ACONDICIONADO.')
ae.setAttribute('Activo_c','Y')
aes.insertRow(ae)
ae= aes.createRow()
ae.setAttribute('RecordName','E36')
ae.setAttribute('Descripcion_c','E36 - CAPTACIÓN, TRATAMIENTO Y DISTRIBUCIÓN DE AGUA.')
ae.setAttribute('Activo_c','Y')
aes.insertRow(ae)
ae= aes.createRow()
ae.setAttribute('RecordName','E37')
ae.setAttribute('Descripcion_c','E37 - EVACUACIÓN DE AGUAS RESIDUALES.')
ae.setAttribute('Activo_c','Y')
aes.insertRow(ae)
ae= aes.createRow()
ae.setAttribute('RecordName','E38')
ae.setAttribute('Descripcion_c','E38 - RECOLECCIÓN, TRATAMIENTO Y ELIMINACIÓN DE DESECHOS, RECUPERACIÓN DE M
ae.setAttribute('Activo_c','Y')
aes.insertRow(ae)
ae= aes.createRow()
ae.setAttribute('RecordName','E39')
ae.setAttribute('Descripcion_c','E39 - ACTIVIDADES DE DESCONTAMINACIÓN Y OTROS SERVICIOS DE GESTIÓN DE DESECH
ae.setAttribute('Activo_c','Y')
aes.insertRow(ae)
ae= aes.createRow()
ae.setAttribute('RecordName','F41')
ae.setAttribute('Descripcion_c','F41 - CONSTRUCCIÓN DE EDIFICIOS.')
ae.setAttribute('Activo_c','Y')
aes.insertRow(ae)
ae= aes.createRow()
ae.setAttribute('RecordName','F42')
ae.setAttribute('Descripcion_c','F42 - OBRAS DE INGENIERÍA CIVIL.')
ae.setAttribute('Activo_c','Y')
aes.insertRow(ae)
ae= aes.createRow()
ae.setAttribute('RecordName','F43')
ae.setAttribute('Descripcion_c','F43 - ACTIVIDADES ESPECIALIZADAS DE LA CONSTRUCCIÓN.')
ae.setAttribute('Activo_c','Y')
aes.insertRow(ae)
ae= aes.createRow()
ae.setAttribute('RecordName','G45')
ae.setAttribute('Descripcion_c','G45 - COMERCIO Y REPARACIÓN DE VEHÍCULOS AUTOMOTORES Y MOTOCICLETAS.')
ae.setAttribute('Activo_c','Y')
aes.insertRow(ae)
ae= aes.createRow()
ae.setAttribute('RecordName','G46')
ae.setAttribute('Descripcion_c','G46 - COMERCIO AL POR MAYOR, EXCEPTO EL DE VEHÍCULOS AUTOMOTORES Y MOTOCIC
ae.setAttribute('Activo_c','Y')
aes.insertRow(ae)
ae= aes.createRow()
ae.setAttribute('RecordName','G47')
ae.setAttribute('Descripcion_c','G47 - COMERCIO AL POR MENOR, EXCEPTO EL DE VEHÍCULOS AUTOMOTORES Y MOTOCIC
ae.setAttribute('Activo_c','Y')
aes.insertRow(ae)
ae= aes.createRow()
ae.setAttribute('RecordName','H49')
ae.setAttribute('Descripcion_c','H49 - TRANSPORTE POR VÍA TERRESTRE Y POR TUBERÍAS.')
ae.setAttribute('Activo_c','Y')
aes.insertRow(ae)
ae= aes.createRow()
ae.setAttribute('RecordName','H50')
ae.setAttribute('Descripcion_c','H50 - TRANSPORTE POR VÍA ACUÁTICA.')
ae.setAttribute('Activo_c','Y')
aes.insertRow(ae)
ae= aes.createRow()
ae.setAttribute('RecordName','H51')
ae.setAttribute('Descripcion_c','H51 - TRANSPORTE POR VÍA AÉREA.')
ae.setAttribute('Activo_c','Y')
aes.insertRow(ae)
ae= aes.createRow()
ae.setAttribute('RecordName','H52')
ae.setAttribute('Descripcion_c','H52 - ALMACENAMIENTO Y ACTIVIDADES DE APOYO AL TRANSPORTE.')
ae.setAttribute('Activo_c','Y')
aes.insertRow(ae)
ae= aes.createRow()
ae.setAttribute('RecordName','H53')
ae.setAttribute('Descripcion_c','H53 - ACTIVIDADES POSTALES Y DE MENSAJERÍA.')
ae.setAttribute('Activo_c','Y')
aes.insertRow(ae)
ae= aes.createRow()
ae.setAttribute('RecordName','I55')
ae.setAttribute('Descripcion_c','I55 - ACTIVIDADES DE ALOJAMIENTO.')
ae.setAttribute('Activo_c','Y')
aes.insertRow(ae)
ae= aes.createRow()
ae.setAttribute('RecordName','I56')
ae.setAttribute('Descripcion_c','I56 - SERVICIO DE ALIMENTO Y BEBIDA.')
ae.setAttribute('Activo_c','Y')
aes.insertRow(ae)
ae= aes.createRow()
ae.setAttribute('RecordName','J58')
ae.setAttribute('Descripcion_c','J58 - ACTIVIDADES DE PUBLICACIÓN.')
ae.setAttribute('Activo_c','Y')
aes.insertRow(ae)
ae= aes.createRow()
ae.setAttribute('RecordName','J59')
ae.setAttribute('Descripcion_c','J59 - ACTIVIDADES DE PRODUCCIÓN DE PELÍCULAS CINEMATOGRÁFICAS, VÍDEOS Y PROG
GRABACIÓN DE SONIDO Y EDICIÓN DE MÚSICA.')
ae.setAttribute('Activo_c','Y')
aes.insertRow(ae)
ae= aes.createRow()
ae.setAttribute('RecordName','J60')
ae.setAttribute('Descripcion_c','J60 - ACTIVIDADES DE PROGRAMACIÓN Y TRANSMISIÓN.')
ae.setAttribute('Activo_c','Y')
aes.insertRow(ae)
ae= aes.createRow()
ae.setAttribute('RecordName','J61')
ae.setAttribute('Descripcion_c','J61 - TELECOMUNICACIONES.')
ae.setAttribute('Activo_c','Y')
aes.insertRow(ae)
ae= aes.createRow()
ae.setAttribute('RecordName','J62')
ae.setAttribute('Descripcion_c','J62 - PROGRAMACIÓN INFORMÁTICA, CONSULTORÍA DE INFORMÁTICA Y ACTIVIDADES CO
ae.setAttribute('Activo_c','Y')
aes.insertRow(ae)
ae= aes.createRow()
ae.setAttribute('RecordName','J63')
ae.setAttribute('Descripcion_c','J63 - ACTIVIDADES DE SERVICIOS DE INFORMACIÓN.')
ae.setAttribute('Activo_c','Y')
aes.insertRow(ae)
ae= aes.createRow()
ae.setAttribute('RecordName','K64')
ae.setAttribute('Descripcion_c','K64 - ACTIVIDADES DE SERVICIOS FINANCIEROS, EXCEPTO LAS DE SEGUROS Y FONDOS DE
ae.setAttribute('Activo_c','Y')
aes.insertRow(ae)
ae= aes.createRow()
ae.setAttribute('RecordName','K65')
ae.setAttribute('Descripcion_c','K65 - SEGUROS, REASEGUROS Y FONDOS DE PENSIONES, EXCEPTO LOS PLANES DE SEGUR
AFILIACIÓN OBLIGATORIA.')
ae.setAttribute('Activo_c','Y')
aes.insertRow(ae)
ae= aes.createRow()
ae.setAttribute('RecordName','K66')
ae.setAttribute('Descripcion_c','K66 - ACTIVIDADES AUXILIARES DE LAS ACTIVIDADES DE SERVICIOS FINANCIEROS.')
ae.setAttribute('Activo_c','Y')
aes.insertRow(ae)
ae= aes.createRow()
ae.setAttribute('RecordName','L68')
ae.setAttribute('Descripcion_c','L68 - ACTIVIDADES INMOBILIARIAS.')
ae.setAttribute('Activo_c','Y')
aes.insertRow(ae)
ae= aes.createRow()
ae.setAttribute('RecordName','M69')
ae.setAttribute('Descripcion_c','M69 - ACTIVIDADES JURÍDICAS Y DE CONTABILIDAD.')
ae.setAttribute('Activo_c','Y')
aes.insertRow(ae)
ae= aes.createRow()
ae.setAttribute('RecordName','M70')
ae.setAttribute('Descripcion_c','M70 - ACTIVIDADES DE OFICINAS PRINCIPALES; ACTIVIDADES DE CONSULTORÍA DE GESTIÓ
ae.setAttribute('Activo_c','Y')
aes.insertRow(ae)
ae= aes.createRow()
ae.setAttribute('RecordName','M71')
ae.setAttribute('Descripcion_c','M71 - ACTIVIDADES DE ARQUITECTURA E INGENIERÍA; ENSAYOS Y ANÁLISIS TÉCNICOS.')
ae.setAttribute('Activo_c','Y')
aes.insertRow(ae)
ae= aes.createRow()
ae.setAttribute('RecordName','M72')
ae.setAttribute('Descripcion_c','M72 - INVESTIGACIÓN CIENTÍFICA Y DESARROLLO.')
ae.setAttribute('Activo_c','Y')
aes.insertRow(ae)
ae= aes.createRow()
ae.setAttribute('RecordName','M73')
ae.setAttribute('Descripcion_c','M73 - PUBLICIDAD Y ESTUDIOS DE MERCADO.')
ae.setAttribute('Activo_c','Y')
aes.insertRow(ae)
ae= aes.createRow()
ae.setAttribute('RecordName','M74')
ae.setAttribute('Descripcion_c','M74 - OTRAS ACTIVIDADES PROFESIONALES, CIENTÍFICAS Y TÉCNICAS.')
ae.setAttribute('Activo_c','Y')
aes.insertRow(ae)
ae= aes.createRow()
ae.setAttribute('RecordName','M75')
ae.setAttribute('Descripcion_c','M75 - ACTIVIDADES VETERINARIAS.')
ae.setAttribute('Activo_c','Y')
aes.insertRow(ae)
ae= aes.createRow()
ae.setAttribute('RecordName','N77')
ae.setAttribute('Descripcion_c','N77 - ACTIVIDADES DE ALQUILER Y ARRENDAMIENTO.')
ae.setAttribute('Activo_c','Y')
aes.insertRow(ae)
ae= aes.createRow()
ae.setAttribute('RecordName','N78')
ae.setAttribute('Descripcion_c','N78 - ACTIVIDADES DE EMPLEO.')
ae.setAttribute('Activo_c','Y')
aes.insertRow(ae)
ae= aes.createRow()
ae.setAttribute('RecordName','N79')
ae.setAttribute('Descripcion_c','N79 - ACTIVIDADES DE AGENCIAS DE VIAJES, OPERADORES TURÍSTICOS, SERVICIOS DE RES
CONEXAS.')
ae.setAttribute('Activo_c','Y')
aes.insertRow(ae)
ae= aes.createRow()
ae.setAttribute('RecordName','N80')
ae.setAttribute('Descripcion_c','N80 - ACTIVIDADES DE SEGURIDAD E INVESTIGACIÓN.')
ae.setAttribute('Activo_c','Y')
aes.insertRow(ae)
ae= aes.createRow()
ae.setAttribute('RecordName','N81')
ae.setAttribute('Descripcion_c','N81 - ACTIVIDADES DE SERVICIOS A EDIFICIOS Y PAISAJISMO.')
ae.setAttribute('Activo_c','Y')
aes.insertRow(ae)
ae= aes.createRow()
ae.setAttribute('RecordName','N82')
ae.setAttribute('Descripcion_c','N82 - ACTIVIDADES ADMINISTRATIVAS Y DE APOYO DE OFICINA Y OTRAS ACTIVIDADES D
EMPRESAS.')
ae.setAttribute('Activo_c','Y')
aes.insertRow(ae)
ae= aes.createRow()
ae.setAttribute('RecordName','O84')
ae.setAttribute('Descripcion_c','O84 - ADMINISTRACIÓN PÚBLICA Y DEFENSA; PLANES DE SEGURIDAD SOCIAL DE AFILIACI
ae.setAttribute('Activo_c','Y')
aes.insertRow(ae)
ae= aes.createRow()
ae.setAttribute('RecordName','P85')
ae.setAttribute('Descripcion_c','P85 - ENSEÑANZA.')
ae.setAttribute('Activo_c','Y')
aes.insertRow(ae)
ae= aes.createRow()
ae.setAttribute('RecordName','Q86')
ae.setAttribute('Descripcion_c','Q86 - ACTIVIDADES DE ATENCIÓN DE LA SALUD HUMANA.')
ae.setAttribute('Activo_c','Y')
aes.insertRow(ae)
ae= aes.createRow()
ae.setAttribute('RecordName','Q87')
ae.setAttribute('Descripcion_c','Q87 - ACTIVIDADES DE ATENCIÓN EN INSTITUCIONES.')
ae.setAttribute('Activo_c','Y')
aes.insertRow(ae)
ae= aes.createRow()
ae.setAttribute('RecordName','Q88')
ae.setAttribute('Descripcion_c','Q88 - ACTIVIDADES DE ASISTENCIA SOCIAL SIN ALOJAMIENTO.')
ae.setAttribute('Activo_c','Y')
aes.insertRow(ae)
ae= aes.createRow()
ae.setAttribute('RecordName','R90')
ae.setAttribute('Descripcion_c','R90 - ACTIVIDADES CREATIVAS, ARTÍSTICAS Y DE ENTRETENIMIENTO.')
ae.setAttribute('Activo_c','Y')
aes.insertRow(ae)
ae= aes.createRow()
ae.setAttribute('RecordName','R91')
ae.setAttribute('Descripcion_c','R91 - ACTIVIDADES DE BIBLIOTECAS, ARCHIVOS, MUSEOS Y OTRAS ACTIVIDADES CULTURA
ae.setAttribute('Activo_c','Y')
aes.insertRow(ae)
ae= aes.createRow()
ae.setAttribute('RecordName','R92')
ae.setAttribute('Descripcion_c','R92 - ACTIVIDADES DE JUEGOS DE AZAR Y APUESTAS.')
ae.setAttribute('Activo_c','Y')
aes.insertRow(ae)
ae= aes.createRow()
ae.setAttribute('RecordName','R93')
ae.setAttribute('Descripcion_c','R93 - ACTIVIDADES DEPORTIVAS, DE ESPARCIMIENTO Y RECREATIVAS.')
ae.setAttribute('Activo_c','Y')
aes.insertRow(ae)
ae= aes.createRow()
ae.setAttribute('RecordName','S94')
ae.setAttribute('Descripcion_c','S94 - ACTIVIDADES DE ASOCIACIONES.')
ae.setAttribute('Activo_c','Y')
aes.insertRow(ae)
ae= aes.createRow()
ae.setAttribute('RecordName','S95')
ae.setAttribute('Descripcion_c','S95 - REPARACIÓN DE COMPUTADORES Y DE EFECTOS PERSONALES Y ENSERES DOMÉSTIC
ae.setAttribute('Activo_c','Y')
aes.insertRow(ae)
ae= aes.createRow()
ae.setAttribute('RecordName','S96')
ae.setAttribute('Descripcion_c','S96 - OTRAS ACTIVIDADES DE SERVICIOS PERSONALES.')
ae.setAttribute('Activo_c','Y')
aes.insertRow(ae)
ae= aes.createRow()
ae.setAttribute('RecordName','T97')
ae.setAttribute('Descripcion_c','T97 - ACTIVIDADES DE LOS HOGARES COMO EMPLEADORES DE PERSONAL DOMÉSTICO.')
ae.setAttribute('Activo_c','Y')
aes.insertRow(ae)
ae= aes.createRow()
ae.setAttribute('RecordName','T98')
ae.setAttribute('Descripcion_c','T98 - ACTIVIDADES NO DIFERENCIADAS DE LOS HOGARES COMO PRODUCTORES DE BIEN
PROPIO.')
ae.setAttribute('Activo_c','Y')
aes.insertRow(ae)
ae= aes.createRow()
ae.setAttribute('RecordName','U99')
ae.setAttribute('Descripcion_c','U99 - ACTIVIDADES DE ORGANIZACIONES Y ÓRGANOS EXTRATERRITORIALES.')
ae.setAttribute('Activo_c','Y')
aes.insertRow(ae)

BorrarPlanes()
BorrarPromocionesServicios()
def planRows=newView('Plan_c')
def abRows= newView('AnchoDeBanda_c')
def RadioRows= newView('IPRadioWifi_c')
def wifiRows= newView('NodoWifi_c')
def umRows = newView('UltimaMillaNetplus_c')
def olts = newView('OLT_c')
def splts = newView('Splitter_c')
def gHilos = newView('GrupoDeHilo_c')
def ColorHilos = newView('ColorDeHilo_c')
def buckets = newView('Bucket_c')
def CodPostales = newView('CodigoPostal_c')

def payload = [:]


def POST_param=[:]
def consulta= '';
def mensajeIntegracion = '';
def identificadorOppOSC_c = OptyId;
POST_param.put('Oportunidad_Id_c',identificadorOppOSC_c)
POST_param.put('Integracion_c',3)
POST_param.put('IdPrincipal_c',0)

def tipoProducto = nvl(TipoDeServicio_c,'');


tipoProducto = tipoProducto.trim();
def segmentacion_c = nvl(Segmentacion_c,'');
segmentacion_c = segmentacion_c.trim();
def formaPago = nvl(FormaDePagoDin_c,'');
//def sucursal_c = getSelectedListDisplayValue('SucursalDeVenta_c');
def salto = Character.toString(10 as char);
def sucursalVenta = nvl(getSelectedListDisplayValue('SucursalDeVenta_c'),'');
sucursalVenta = sucursalVenta.trim();
def sucursalFac = nvl(getSelectedListDisplayValue('SucursalDeFacturacion_c'),'');
sucursalFac = sucursalFac.trim();
def sucursal_c = 'sucursalFacturacion:'+sucursalFac+salto+'sucursalVenta:'+sucursalVenta;

def Latitud = nvl(Latitud_c,'');


Latitud = Latitud.trim();
def latitud_c = nvl(CoordenadaLatitud_c,'');
latitud_c = latitud_c.trim();
def longitud_c = nvl(CoordenadaLongitud_c,'');
longitud_c = longitud_c.trim();
def valorLatitud_c ='';

if(Latitud == 'NORTE'){
valorLatitud_c = 'N'
}else{
valorLatitud_c = 'S'
}
if(nvl(tipoProducto,null)==null){ throw new oracle.jbo.ValidationException('Campo requerido: Servicio')}
if(nvl(segmentacion_c,null)==null){ throw new oracle.jbo.ValidationException('Campo requerido: Segmentacion')}
if(nvl(formaPago,null)==null){ throw new oracle.jbo.ValidationException('Campo requerido: Forma de Pago')}
if(nvl(sucursal_c,null)==null){ throw new oracle.jbo.ValidationException('Campo requerido: Sucursal')}
if(nvl(latitud_c,null)==null){ throw new oracle.jbo.ValidationException('Campo requerido: Coordenada Latitud')}
if(nvl(longitud_c,null)==null){ throw new oracle.jbo.ValidationException('Campo requerido: Coordenada Longitud')}
if(nvl(Latitud,null)==null){ throw new oracle.jbo.ValidationException('Campo requerido: Latitud')}
//servicio_c = 'fibra home';
/*
segmentacion_c = 'ultra';
formaPago = 'diners';
sucursal_c = 'quito';
latitud_c = "0°17'56.43\"";

longitud_c = "78°34'15.74\"";
*/

def provincia=''
def canton = '';
def dirs = DireccionInstalacion_Tgt_OpportunityToDireccionInstalacion_c_Tgt;
while (dirs.hasNext()){
def dir = dirs.next();
def esInstalacion = dir.SeleccionarDireccionDeInstalacion_c == 'Y';
println('dir instalación: '+ esInstalacion)
if (esInstalacion){
def datosDireccion=dir.Address_Src_AddressToDireccionInstalacion_c_Src
provincia = nvl(datosDireccion?.State,'');
provincia = provincia.toUpperCase().trim();
canton = nvl(datosDireccion?.AddrElementAttribute1,'');
canton = canton.toUpperCase().trim();
}
}
println('Consulta ancho de Banda provincia: '+provincia)
println('Consulta ancho de Banda canton: '+canton)
if(provincia == '' || canton == '' ){
throw new oracle.jbo.ValidationException('Es necesario ingresar una dirección de instalación')
}

payload.put('servicio',tipoProducto)
payload.put('segmentacion',segmentacion_c)
payload.put('formaPago',formaPago)
payload.put('sucursal',sucursal_c)
payload.put('latitud',latitud_c)
payload.put('valorLatitud',valorLatitud_c)
payload.put('longitud',longitud_c)
payload.put('provinciaEnlace',provincia)
payload.put('cantonEnlace',canton)

println('PAYLOAD ANCHOBANDA: ' + payload)

try{
consulta= adf.webServices.ConsultarAnchoDeBanda.POST(payload);
mensajeIntegracion = consulta?.message;
if(consulta?.code == '1' ){
def listaPlanes = consulta?.data['planes']
if(tipoProducto == 'wifi' ){
println('entrando a tipo wifi')
def listawifi = consulta?.data['wifi']
// println('listawifi: ' +listawifi)

int i=0;
for(nodo in listawifi){
//println('nodo: '+ nodo)
def wifiRow= wifiRows.createRow()
wifiRow.setAttribute('Oportunidad_Id_c',OptyId)
wifiRow.setAttribute('Activo_c','Y')
wifiRow.setAttribute('RecordName',nodo['codNodo'])
wifiRow.setAttribute('Descripcion_c',nodo['desNodo'])
wifiRows.insertRow(wifiRow)
def nodoWifiId =wifiRow.Id
def radioWifis = nodo['radioWifi']

for(ab in radioWifis){
//println('radio wifi: '+ ab)
//i++;
//if (i <10){
def radioRow = RadioRows.createRow()
radioRow.setAttribute('Oportunidad_Id_c',OptyId)
radioRow.setAttribute('Activo_c','Y')
radioRow.setAttribute('RecordName',ab['codRadio'])
radioRow.setAttribute('Descripcion_c',ab['desRadio'])
radioRow.setAttribute('NodoWifi_Id_c',nodoWifiId)
RadioRows.insertRow(radioRow)
//}
}
}

}else {
println('entrando a tipo Fibra')
def listafibra = consulta?.data['fibra']
def listaBuckets = consulta?.data['buckets']

for(ol in listafibra){
def olt = olts.createRow()
//println('olt:'+olt)
olt.setAttribute('Oportunidad_Id_c',OptyId)
olt.setAttribute('Activo_c','Y')
olt.setAttribute('RecordName',ol['codOlt'])
olt.setAttribute('Descripcion_c',ol['desOlt'])
olts.insertRow(olt)
def oltId = olt.Id
def listasplitter= ol['splitter']
for(sp in listasplitter){
//println('splitter:'+sp)
def splt = splts.createRow()
splt.setAttribute('Oportunidad_Id_c',OptyId)
splt.setAttribute('Activo_c','Y')
splt.setAttribute('RecordName',sp['codSplitter'])
splt.setAttribute('Descripcion_c',sp['codificacion'])
splt.setAttribute('OLT_Id_c',oltId)
def splitterId = splt.Id
splts.insertRow(splt)
def gruposHilo = sp['grupoHilo']
for(gh in gruposHilo){
//println('gh:'+gh)
def gHilo = gHilos.createRow()
gHilo.setAttribute('Oportunidad_Id_c',OptyId)
gHilo.setAttribute('Activo_c','Y')
gHilo.setAttribute('RecordName',gh['codGrupo'])
gHilo.setAttribute('Descripcion_c',gh['desGrupo'])
gHilo.setAttribute('Splitter_Id_c',splitterId)
gHilos.insertRow(gHilo)
def ghId = gHilo.Id
def coloresHilo = gh['colorHilo']
//println(coloresHilo)
for(ch in coloresHilo){
//println('ch:'+ ch)
def ColorHilo = ColorHilos.createRow()
ColorHilo.setAttribute('Oportunidad_Id_c',OptyId)
ColorHilo.setAttribute('Activo_c','Y')
ColorHilo.setAttribute('RecordName',ch['codColor'])
ColorHilo.setAttribute('Descripcion_c',ch['desColor'])
ColorHilo.setAttribute('GrupoDeHilo_Id_c',ghId)
ColorHilos.insertRow(ColorHilo)
}
}
}
}
for(bc in listaBuckets){
def bucket = buckets.createRow()
//println('olt:'+olt)
bucket.setAttribute('Oportunidad_Id_c',OptyId)
bucket.setAttribute('Activo_c','Y')
bucket.setAttribute('RecordName',bc['codBucket'])
bucket.setAttribute('Descripcion_c',bc['desBucket'])
buckets.insertRow(bucket)
def cpId = bucket.Id
def listasCodigos = bc['codigos']
for(cp in listasCodigos){
//println('splitter:'+sp)
def CodPostal = CodPostales.createRow()
CodPostal.setAttribute('Oportunidad_Id_c',OptyId)
CodPostal.setAttribute('Activo_c','Y')
CodPostal.setAttribute('RecordName',cp['codPostal'])
CodPostal.setAttribute('Descripcion_c',cp['desPostal'])
CodPostal.setAttribute('Bucket_Id_c',cpId)
CodPostales.insertRow(CodPostal)

}
}
}
println('guardando planes')
for(plan in listaPlanes){
//println('planes:' +plan)
def planRow=planRows.createRow()
def inventoryId= ''+plan['inventoryItemId']
def skipPlan= ! inventoryId.isInteger()
//if(!skipPlan){
planRow.setAttribute('Oportunidad_Id_c',OptyId)
planRow.setAttribute('Activo_c','Y')
planRow.setAttribute('RecordName',plan['codPlan'])
planRow.setAttribute('Descripcion_c',plan['desPlan'])
planRow.setAttribute('InventoryItemId_c',plan['inventoryItemId'])
planRows.insertRow(planRow)

def planId=planRow.Id
def ultimasMillas=plan['ultimaMilla']
def anchosBanda=plan['anchoBanda']
for (um in ultimasMillas){
println('ultimaMilla: '+ultimasMillas)
//def codUltimaMilla = ultimasMillas.codUltimaMilla;
//def cod =codUltimaMilla.trim();
def desUltimaMilla = um['desUltimaMilla'];
def des =desUltimaMilla.trim();

def umRow=umRows.createRow()
umRow.setAttribute('Oportunidad_Id_c',OptyId)
umRow.setAttribute('Activo_c','Y')
umRow.setAttribute('RecordName',um['codUltimaMilla'])
umRow.setAttribute('Descripcion_c',des)
umRow.setAttribute('Plan_Id_c',planId)
umRows.insertRow(umRow)
}

//}

for(ab in anchosBanda){
println('ancho de banda: '+ab)
def abRow=abRows.createRow()
abRow.setAttribute('Oportunidad_Id_c',OptyId)
abRow.setAttribute('Activo_c','Y')
abRow.setAttribute('RecordName',ab['codAnchoBanda'])
abRow.setAttribute('Descripcion_c',ab['desAnchoBanda'])
abRow.setAttribute('PrecioBruto_c',ab['tarifaBasica'])
abRow.setAttribute('Plan_Id_c',planId)
abRows.insertRow(abRow)
}
}

setAttribute('FechaConsultaInformacionPlanes_c',now())
POST_param.put('MensajeIntegracion_c',encodeToBase64(''+mensajeIntegracion))
POST_param.put('Payload_c',encodeToBase64(''+ payload))
POST_param.put('Response_c',encodeToBase64(''+consulta))
adf.webServices.LogBitacora.POST(POST_param)

}else{
println('Entrando a code =! de 1')
POST_param.put('MensajeIntegracion_c',encodeToBase64(''+mensajeIntegracion))
POST_param.put('Payload_c',encodeToBase64(''+ payload))
POST_param.put('Response_c',encodeToBase64(''+consulta))
adf.webServices.LogBitacora.POST(POST_param)
throw new oracle.jbo.ValidationException('(Puntonet) '+mensajeIntegracion)
}
}
catch(Exception e){
def msg=e.message
POST_param.put('MensajeIntegracion_c',encodeToBase64(''+msg))
POST_param.put('Payload_c',encodeToBase64(''+ payload))
POST_param.put('Response_c',encodeToBase64(''+consulta))
adf.webServices.LogBitacora.POST(POST_param)
throw new oracle.jbo.ValidationException('' + msg)
}

if( PrimaryContactPerson?.SalesProfileType == 'ZCA_PROSPECT' || Organization?.SalesProfileType == 'ZCA_PROSPECT' ){


PrimaryContactPerson?.setAttribute('Segmentacion_c',Segmentacion_c)
PrimaryContactPerson?.setAttribute('CapacidadDePago_c',CapacidadPagoNum_c)
PrimaryContactPerson?.setAttribute('RegistraTCActiva_c',RegistraTCActiva_c)
PrimaryContactPerson?.setAttribute('ResultadoDelModelo_c',ResultadoDelModelo_c)
PrimaryContactPerson?.setAttribute('ClienteCastigado_c',ClienteCastigado_c)
PrimaryContactPerson?.setAttribute('ClienteConDeuda_c',ClienteConDeuda_c)
}
def historicos= newView('HistoricoConsultaScore_c')
def historico= historicos.createRow()
def contadorConsultaScore=nvl(ContadorConsultaScore_c,0 as BigDecimal)
def tipoConsulta = ''
if(contadorConsultaScore==0){
tipoConsulta='1'
}else{
tipoConsulta='N'
}
def contactoId
if(Organization!=null){
contactoId=KeyContactId
}
else{
contactoId=TargetPartyId
}
historico.setAttribute('Segmentacion_c',Segmentacion_c)
historico.setAttribute('ClienteCastigado_c',ClienteCastigado_c)
historico.setAttribute('ResultadoDelModelo_c',ResultadoDelModelo_c)
historico.setAttribute('RegistraTCActiva_c',RegistraTCActiva_c)
historico.setAttribute('ClienteConDeuda_c',ClienteConDeuda_c)
historico.setAttribute('CapacidadDePago_c',CapacidadPagoNum_c)
historico.setAttribute('Oportunidad_Id_c',OptyId)
historico.setAttribute('Contacto_Id_c',contactoId)
historico.setAttribute('TipoConsulta_c',tipoConsulta)
historicos.insertRow(historico)
println('insertando score en oportunidad '+historico.Oportunidad_Id_c)
enviarContrato('1')
def party
def newRow=getPrimaryRowState().isNew()
def ownerChanged=isAttributeChanged('OwnerResourcePartyId')
def setOportunidadAbierta=isAttributeChanged('StatusCode')||newRow
if(setOportunidadAbierta){
if(Person!=null){
party=Person
}
else if(Organization!=null){
party=Organization
}
if(party!=null){
def opAbiertas=nvl(party.OportunidadesAbiertas_c,0 as BigDecimal)
if(StatusCode=='OPEN'){
opAbiertas+=1
}
else if(!newRow){
opAbiertas-=1
}
party.setAttribute('OportunidadesAbiertas_c',opAbiertas as Integer)
}
}
BorrarPromocionesServicios()
def pysRows = newView('PromocionesYServicios_c')
def PydRows = newView('PromocionDescuento_c')
def DetalleRows=newView('Detalle_c')
def DiferirRows=newView('Diferir_c')
def DescuentoRows=newView('Descuento_c')

def bitacora=[:]
def payload=[:]
bitacora.put('Oportunidad_Id_c',OptyId)
bitacora.put('Integracion_c','4')
bitacora.put('IdPrincipal_c',0)
def response = '';
def mensajeRespuesta = '';
def tipoCliente = CustPartyType;
//println(OptyId)

try{
def accion='3'
// def sucursal= getSelectedListDisplayValue('SucursalDeVenta_c');

def salto = Character.toString(10 as char);


def sucursalVenta = nvl(getSelectedListDisplayValue('SucursalDeVenta_c'),'')
sucursalVenta = sucursalVenta.trim();
def sucursalFac = nvl(getSelectedListDisplayValue('SucursalDeFacturacion_c'),'');
sucursalFac = sucursalFac.trim();
def sucursal = 'sucursalFacturacion:'+sucursalFac+salto+'sucursalVenta:'+sucursalVenta;

def servicio= nvl(TipoDeServicio_c,'');


servicio = servicio.trim();
def segmentacion= nvl(Segmentacion_c,'');
segmentacion = segmentacion.trim();
def formaPago= nvl(FormaDePagoDin_c,'');
formaPago = formaPago.trim();
def plan= nvl(Plan_c,'');
plan = plan.trim();
def anchoBanda= nvl(AnchoDeBanda_c,'');
anchoBanda = anchoBanda.trim();
def aplicaAdultoMayor= '';
def aplicaDiscapacidad='';
def owner = nvl(EmailAddress,'')
owner = owner.trim();
def discapacitado = '';
def terceraEdad ='';
def codSplitter = nvl(Splitter_Obj_c?.RecordName, '').trim(); //REVIEW: SR_Splitter 16/02/23
if(nvl(sucursal,null)==null){ throw new oracle.jbo.ValidationException('Campo requerido: Sucursal')}
if(nvl(servicio,null)==null){ throw new oracle.jbo.ValidationException('Campo requerido: Tipo de servicio')}
if(nvl(segmentacion,null)==null){ throw new oracle.jbo.ValidationException('Campo requerido: Segmentacion')}
if(nvl(formaPago,null)==null){ throw new oracle.jbo.ValidationException('Campo requerido: Forma de Pago')}
if(nvl(plan,null)==null){ throw new oracle.jbo.ValidationException('Campo requerido: Plan')}
if(nvl(anchoBanda,null)==null){ throw new oracle.jbo.ValidationException('Campo requerido: Ancho Banda')}
if(nvl(anchoBanda,null)==null){ throw new oracle.jbo.ValidationException('Campo requerido: Ancho Banda')}

def primaryId = Person?.PartyId;


def partyId = '';
if (tipoCliente == 'PERSON'){

def admin_view = newView('PersonProfile');


def criteria = newViewCriteria(admin_view);
def row = criteria.createRow();
def vrc = row.ensureCriteriaItem('PartyId');
vrc.setOperator('=');
vrc.setValue(primaryId);
criteria.insertRow(row);
admin_view.appendViewCriteria(criteria);
admin_view.executeQuery();
while (admin_view.hasNext()) {
def curRow = admin_view.next()
partyId = curRow.PartyId;
terceraEdad = nvl(curRow.TerceraEdad_c,'');
discapacitado = nvl(curRow.Discapacitado_c,'');
println('discapacitado'+discapacitado+' terceraEdad'+terceraEdad)
if (discapacitado == '' || discapacitado == 'N'){discapacitado = 'N'}else{discapacitado = 'Y'}
if (terceraEdad == '' || terceraEdad == 'N'){terceraEdad = 'N'}else{terceraEdad = 'Y'}
}
if (discapacitado == 'Y'){
aplicaDiscapacidad = '1';
}else{
aplicaDiscapacidad = '0';
}
if(terceraEdad == 'Y'){
aplicaAdultoMayor = '1';
}else{
aplicaAdultoMayor = '0';
}
}else{
aplicaDiscapacidad = '0';
aplicaAdultoMayor = '0';

}
def provincia=''
def canton = '';
def dirs = DireccionInstalacion_Tgt_OpportunityToDireccionInstalacion_c_Tgt;
while (dirs.hasNext()){
def dir = dirs.next();
def esInstalacion = dir.SeleccionarDireccionDeInstalacion_c == 'Y';
println('esInstalacion: '+esInstalacion)
if (esInstalacion){
def datosDireccion=dir.Address_Src_AddressToDireccionInstalacion_c_Src
provincia = nvl(datosDireccion?.State,'');
provincia = provincia.toUpperCase().trim();
canton = nvl(datosDireccion?.AddrElementAttribute1,'');
canton = canton.toUpperCase().trim();
}
}

if(provincia == '' || canton == ''){


throw new oracle.jbo.ValidationException('Es necesario ingresar una dirección de instalación')
}
def codigopromocion= '0';
payload.put('accion',accion)
payload.put('sucursal',sucursal)
payload.put('servicio',servicio)
payload.put('segmentacion',segmentacion)
payload.put('formaPago',formaPago)
payload.put('plan',plan)
payload.put('anchoBanda',anchoBanda)
payload.put('aplicaAdultoMayor',aplicaAdultoMayor)
payload.put('aplicaDiscapacidad',aplicaDiscapacidad)
payload.put('owner',owner)
payload.put('codPromocion',codigopromocion)
payload.put('provinciaEnlace',provincia)
payload.put('cantonEnlace',canton)
payload.put('codSplitter', codSplitter) //REVIEW: SR_Splitter 16/02/23
bitacora.put('Payload_c',encodeToBase64(''+payload))
println('PAYLOAD SPLITTER: '+payload)

try{
response = adf.webServices.reservarLiberarSplitter.POST(payload)
println('RESPUESTA: '+response)
mensajeRespuesta = response.mensaje;
if (response.codigoRespuesta == '1'){
def pyss = response.promociones;
for(pys in pyss){
def tipo =pys['tipo']
def subtipo =pys['subtipo']
if(tipo == 'Promoción'){tipo = 'PROMOCION'}else{tipo = 'SERVICIO'}
def pysRow
if(subtipo == 'Descuento'){
pysRow=PydRows.createRow()
pysRow.setAttribute('Activo_c','Y')
pysRow.setAttribute('IntervaloCadaEditableX_c',checkbox(pys['intervaloCadaEditable'] as Boolean))
pysRow.setAttribute('IntervaloHastaEditableX_c',checkbox(pys['intervaloMaxHastaEditable'] as Boolean))

}
else{
def cantidadNum = nvl(pys['cantidad'],'')
def cantidadMin = nvl(pys['cantidadMin'],'')
def cantidadMax = nvl(pys['cantidadMax'],'')
def estado = nvl(pys['estado.Descripcion'],'')
def valorMensual = nvl(pys['valorMensual'],'')
pysRow=pysRows.createRow()
pysRow.setAttribute('Tipo_c',tipo)
def renovacion = pys['renovacion']
pysRow.setAttribute('RenovacionFlag_c',checkbox(pys['renovacion']as Boolean))
pysRow.setAttribute('Renovacion_c',checkbox(pys['renovacion']as Boolean))
pysRow.setAttribute('CantidadEditable_c',checkbox(pys['cantidadEditable'] as Boolean))
pysRow.setAttribute('RenovacionEditable_c',checkbox(pys['renovacionEditable'] as Boolean))
pysRow.setAttribute('ValorUnitarioEditable_c',checkbox(pys['valorUnitarioEditable'] as Boolean))
pysRow.setAttribute('Seleccionar_c',checkbox(pys['obligatorio'] as Boolean))
pysRow.setAttribute('ConsultarDetalleDeLaPromocion_c',checkbox(pys['obligatorio'] as Boolean))
pysRow.setAttribute('CantidadNum_c',cantidadNum)
pysRow.setAttribute('CantidadMinima_c',cantidadMin)
pysRow.setAttribute('CantidadMaxima_c',cantidadMax)
pysRow.setAttribute('Estado_c',estado)
pysRow.setAttribute('ValorUnitario_c',pys['valorUnitario'] as BigDecimal)
pysRow.setAttribute('ValorMensual_c',valorMensual)
pysRow.setAttribute('IntervaloCadaEditable_c',checkbox(pys['intervaloCadaEditable'] as Boolean))
pysRow.setAttribute('IntervaloHastaEditable_c',checkbox(pys['intervaloMaxHastaEditable'] as Boolean))
pysRow.setAttribute('Subtipo_c',subtipo)

}
def idPromocion = nvl(pys['idPromocion'],'')
def descripcionPromocion = nvl(pys['Descripcion'],'')
if (descripcionPromocion ==''){
descripcionPromocion = 'Sin Descripcion'
}
def intervaloMaxCada = nvl(pys['intervaloMaxCada'],'')
def intervaloMinCada = nvl(pys['intervaloMinCada'],'')
def intervaloMaxHasta = nvl(pys['intervaloMaxHasta'],'')
def intervaloMinHasta = nvl(pys['intervaloMinHasta'],'')
def intervalocadaNumP = nvl(pys['intervaloMinCada'],'')
def intervaloHastaNumP = nvl(pys['intervaloMinHasta'],'')
def pysId=pysRow.Id
pysRow.setAttribute('RecordName',idPromocion)
pysRow.setAttribute('Descripcion_c',descripcionPromocion)
pysRow.setAttribute('DetalleEditable_c',checkbox(pys['detalleEditable'] as Boolean))
pysRow.setAttribute('Obligatorio_c',checkbox(pys['obligatorio'] as Boolean))
pysRow.setAttribute('DiferirEditable_c',checkbox(pys['diferirEditable'] as Boolean))
pysRow.setAttribute('DescuentoEditable_c',checkbox(pys['descuentoEditable'] as Boolean))
pysRow.setAttribute('Oportunidad_Id_c',OptyId)
pysRow.setAttribute('IntervaloMaximoCada_c',intervaloMaxCada)
pysRow.setAttribute('IntervaloMinimoCada_c',intervaloMinCada)
pysRow.setAttribute('IntervaloMaximoHasta_c',intervaloMaxHasta)
pysRow.setAttribute('IntervaloMinimoHasta_c',intervaloMinHasta)
pysRow.setAttribute('IntervaloCadaNum_c',intervalocadaNumP)
pysRow.setAttribute('IntervaloHastaNum_c',intervaloHastaNumP)
if(subtipo=='Descuento'){
PydRows.insertRow(pysRow)
}
else{
pysRows.insertRow(pysRow)
}

def Detalles = pys['detalle']


def count=0
for(Detalle in Detalles){
def DetalleRow=DetalleRows.createRow()
def detalleId = DetalleRow.Id;
def detalleDescripcion = nvl(Detalle['Descripcion'],'')
if(detalleDescripcion == ''){detalleDescripcion = 'Sin Detalle'}
DetalleRow.setAttribute('Descripcion_c',detalleDescripcion)
//pysRow.setAttribute('Detalle_c',detalleDescripcion)
if(subtipo == 'Descuento' && pysId!= null){
DetalleRow.setAttribute('PromocionDescuento_Id_c',pysId)
}
else{
if(pysId!= null){
DetalleRow.setAttribute('PromocionOServicio_Id_c',pysId)
}
}
DetalleRow.setAttribute('Oportunidad_Id_c',OptyId)
DetalleRow.setAttribute('Activo_c','Y')
def coddetalle = nvl(Detalle['Codigo'],'');
if (coddetalle == '' ){coddetalle = 0}
DetalleRow.setAttribute('RecordName',coddetalle)
def detalleDefault = nvl(Detalle['Default'],'');
if(detalleDefault ==1 ){pysRow.setAttribute('Detalle_Id_c',detalleId)}
def detalleHasta= nvl(Detalle['Hasta'],'')
def detalleCada = nvl(Detalle['Cada'],'')
def valorDetalle = nvl(Detalle['Valor'],'')
DetalleRow.setAttribute('Hasta_c',detalleHasta)
DetalleRow.setAttribute('Cada_c',detalleCada)
DetalleRow.setAttribute('Valor_c',valorDetalle)
DetalleRows.insertRow(DetalleRow)
def Diferires = Detalle['diferir']
for(Diferir in Diferires){
def DiferirRow=DiferirRows.createRow()
def DiferirId = DiferirRow.Id;
def diferirDescripcion = nvl(Diferir['Descripcion'],'')
if(diferirDescripcion == ''){diferirDescripcion = 'Sin Diferir'}
DiferirRow.setAttribute('Descripcion_c',diferirDescripcion)
//pysRow.setAttribute('Diferir_c',Diferir['Descripcion'])
if(subtipo == 'Descuento'){
DiferirRow.setAttribute('PromocionDescuento_Id_c',pysId)
}
else{
DiferirRow.setAttribute('PromocionOServicio_Id_c',pysId)
}
DiferirRow.setAttribute('Oportunidad_Id_c',OptyId)
DiferirRow.setAttribute('Activo_c','Y')
def coddiferir = nvl(Diferir['Codigo'],'');
if (coddiferir == ''){coddiferir = 0}
DiferirRow.setAttribute('RecordName',coddiferir)
def diferirDefault = nvl(Diferir['Default'],'');
if(diferirDefault == 1){
DetalleRow.setAttribute('DiferirDefault_Id_c',DiferirId)
if(detalleDefault ==1 ){
pysRow.setAttribute('Diferir_Id_c',DiferirId)
}

DiferirRow.setAttribute('Detalle_Id_c',detalleId)
def Descuentos = Diferir['descuento']
for(Descuento in Descuentos){
def DescuentoRow=DescuentoRows.createRow()
def descuentoId = DescuentoRow.Id;
def descuentoDescripcion = nvl(Descuento['Descripcion'],'')
if (descuentoDescripcion == '' ){descuentoDescripcion = 'Sin Descuento'}
DescuentoRow.setAttribute('Descripcion_c',descuentoDescripcion)
//pysRow.setAttribute('Descuento_c',Descuento['Descripcion'])
if(subtipo == 'Descuento'){
DescuentoRow.setAttribute('PromocionDescuento_Id_c',pysId)
}
else{
DescuentoRow.setAttribute('PromocionOservicio_Id_c',pysId)
}
DescuentoRow.setAttribute('Oportunidad_Id_c',OptyId)
DescuentoRow.setAttribute('Activo_c','Y')
def coddescuento = nvl(Descuento['Codigo'],'');
if (coddescuento == ''){coddescuento = 0}
DescuentoRow.setAttribute('RecordName',coddescuento)
def descuentoHasta = nvl(Descuento['Hasta'],'')
def descuentoCada = nvl(Descuento['Cada'],'')
def porcentajeDescuento = nvl(Descuento['Porcentaje'],'')
DescuentoRow.setAttribute('Hasta_c',descuentoHasta)
DescuentoRow.setAttribute('Cada_c',descuentoCada)
DescuentoRow.setAttribute('Porcentaje_c',porcentajeDescuento)
DescuentoRow.setAttribute('Diferir_Id_c',DiferirId)
DescuentoRows.insertRow(DescuentoRow)
def descuentoDefault = nvl(Descuento['Default'],'');
if(descuentoDefault == 1){
DiferirRow.setAttribute('DescuentoDefault_Id_c', descuentoId)
if(diferirDefault == 1 && detalleDefault ==1){
pysRow.setAttribute('Descuento_Id_c',descuentoId)
}}

}
}

}
}
bitacora.put('MensajeIntegracion_c',encodeToBase64('Consulta Exitosa'))
bitacora.put('Payload_c',encodeToBase64(''+ payload))
bitacora.put('Response_c',encodeToBase64(''+response))

adf.webServices.LogBitacora.POST(bitacora)

}else{
throw new oracle.jbo.ValidationException('(Puntonet) '+ mensajeRespuesta)
}
}
catch(Exception e){

def msg=e.message
throw new oracle.jbo.ValidationException(''+msg)
bitacora.put('MensajeIntegracion_c',encodeToBase64(''+msg))
bitacora.put('Payload_c',encodeToBase64(''+ payload))
bitacora.put('Response_c',encodeToBase64(''+response))
adf.webServices.LogBitacora.POST(bitacora)

}
catch(Exception e){
def msg=e.message
bitacora.put('MensajeIntegracion_c',encodeToBase64(''+msg))
bitacora.put('Payload_c',encodeToBase64(''+ payload))
bitacora.put('Response_c',encodeToBase64(''+response))
adf.webServices.LogBitacora.POST(bitacora)
throw new oracle.jbo.ValidationException(''+msg)

validarDetalleDescuento()
def tipoDeIdentificacion = '';
def numeroDeIdentificacion = '';
def tipoDoc=nvl(TipoDeIdentificacion_c,'');
def numDoc = nvl(NumeroDeDocumento_c,'');

def base64 = '';


def type= '';
def nombreArchivo= '';
def AttachedDocumentId = '';
def EntityName = 'MOO_OPTY';
def Pk1Value ='';
def size ='';
def listaNombreArchivoAdjunto = []
def archivosAdjuntosA = []
def ATS = Attachment;
while (ATS.hasNext()){
def atts = ATS.next();
def archivosAdjuntos = [:]
def archivoMap=[:]

nombreArchivo = nvl(atts.FileName,'');
size = nvl(atts.UploadedFileLength,0 as long);
//println('nombre archivo:'+nombreArchivo)
type = nvl(atts.UploadedFileContentType,'');
AttachedDocumentId = nvl(atts.AttachedDocumentId,0 as long);
Pk1Value = nvl(atts.Pk1Value,'');
archivoMap.put('fileName',nombreArchivo)
archivoMap.put('size',size)
listaNombreArchivoAdjunto.add(archivoMap)

archivosAdjuntos.put('nombreArchivo',nombreArchivo)
archivosAdjuntos.put('type',type)
def GetParameters= [:]
GetParameters.put('AttachedDocumentId',AttachedDocumentId)
GetParameters.put('EntityName',EntityName)
GetParameters.put('Pk1Value',Pk1Value)
if(nombreArchivo != ''|| Pk1Value != ''){
def response = adf.webServices.Adjuntos.getAttachmentContent(GetParameters)
//println('responseadjunto:'+response)
base64 = response.UploadedFile;
base64=base64.replace(Character.toString(13 as char),'')
base64=base64.replace(Character.toString(10 as char),'')
archivosAdjuntos.put('base64',base64)

}
archivosAdjuntosA.add(archivosAdjuntos)
}
println('listaNombreArchivoAdjunto:'+listaNombreArchivoAdjunto)

def errorListOp=[]
def errorListCon=[]
def errorCountOp=0
def errorCountCon=0
def countT = 0;
def countR = 0;
def TelefonoMovil=false;
def tipoCliente = CustPartyType;
def countTelefonos=0
// datos de oportunidad
def datosOportunidad_c = [:]
def IdOportunidad = OptyNumber;
//def IdOportunidad = '669183';

def identificadorOppOSC = OptyId;


def identificadorClienteOSC =TargetPartyId;
def nombreOportunidad = Name;
def montoBruto = nvl(ImporteBruto_c,0 as BigDecimal);
def importeNeto = nvl(ImporteNeto_c,0 as BigDecimal);
def porcentajeDescuento =nvl(DescuentoOportunidad_c,0 as BigDecimal) *100;
def ejecutivoCorporativoId = OwnerResourcePartyId;
def salto = Character.toString(10 as char);
def EjecutivoComercial =
'identificadorOppOSC:'+identificadorOppOSC+salto+'identificadorClienteOSC:'+identificadorClienteOSC+salto+'nombreOp
def CanalDeVenta = '' + nvl(CanalObjC_c,'');
def ContratoFisico = ''+ nvl(ContratoFisico_c,'N');
def nroEnviosContrato=nvl(NumeroDeEnviosContratoD_c,0 as BigDecimal)
def requiereFirma=nvl(RequiereNuevaFirma_c,'Y')

def flagContratoFisico = ContratoFisico=='Y' || (requiereFirma=='N' && nroEnviosContrato>0)


if(flagContratoFisico){
ContratoFisico='Y'
}
else{
ContratoFisico='N'
}
def sucursalVenta = nvl(getSelectedListDisplayValue('SucursalDeVenta_c'),'')
def sucursalFac = nvl(getSelectedListDisplayValue('SucursalDeFacturacion_c'),'');
def Sucursal = 'sucursalFacturacion:'+ sucursalFac.trim()+salto+'sucursalVenta:'+sucursalVenta.trim();
datosOportunidad_c.put('tipoDeEnvio',TipoDeEnvio)
datosOportunidad_c.put('idOportunidad',IdOportunidad)
datosOportunidad_c.put('canalDeVenta',CanalDeVenta.trim())
datosOportunidad_c.put('contratoFisico',ContratoFisico)
datosOportunidad_c.put('ejecutivoComercial',EjecutivoComercial)
datosOportunidad_c.put('sucursal',Sucursal)
//datos del cliente
//Correos electrónicos
def datosCliente_c = [:]
def correoElectronico_c = [:]
def correoFacturacion = '';
def correo1 = '';
def correo2 = '';
def IdNetplus = '';
//Teléfonos
def extension = '';
def numero = '';
//def operadora = '';
def principal = '';
def tipoTelefono = '';

def razonSocial = '';


def nombres = '';
def apellidos = '';
def genero = '';
def fechaDeNacimiento = '';
def estadoCivil = '';
def discapacitado = '';
def porcentajeDiscapacitado=0;
def terceraEdad = '';
def nombreReferencial= '';
def empresa= '';
def representanteLegal = '';
def nombresRepresentante ='';
def apellidosRepresentante ='';
def cedulaRepresentante = '';
def cargoRepresentante = '';
//Direcciones
def contacto = '';
def telefonosA = []
if(tipoCliente == 'PERSON'){
contacto = AccountName;
if(nvl(contacto,null)==null){
throw new oracle.jbo.ValidationException('Campo requerido:Cliente ')
}
def clientes = newView('ClienteNetplus_c')
def clientesc = newViewCriteria(clientes)
def clientescr = clientesc.createRow()
def clientesci = clientescr.ensureCriteriaItem('Contacto_Id_c')
clientesci.setOperator('=')
clientesci.setValue(identificadorClienteOSC)
def cliNetj=clientescr.ensureCriteriaItem('NumeroDeDocumento_c')
cliNetj.setOperator('=')
cliNetj.setValue(numDoc)
clientesc.insertRow(clientescr)
clientes.appendViewCriteria(clientesc)
clientes.executeQuery();
while (clientes.hasNext()){
def cliente = clientes.next();
def CoC = cliente.Cuenta_Id_c;
tipoDeIdentificacion = nvl(cliente.TipoDeDocumento_c,'');
tipoDeIdentificacion = tipoDeIdentificacion.trim();
numeroDeIdentificacion =nvl(cliente.NumeroDeDocumento_c,'');
numeroDeIdentificacion = numeroDeIdentificacion.trim();
}
correoFacturacion = nvl(Person?.CorreoElectronico_c,'');
correoFacturacion = correoFacturacion.trim();
correo1 = nvl(Person?.CorreoElectronico_c,'');
correo1 = correo1.trim();
correo2 = nvl(Person?.CorreoElectronico2_c,'');
correo2 = correo2.trim();
IdNetplus = ''+nvl(Person?.CodigoNetPlus_c,'')
IdNetplus =IdNetplus.trim();

def telefonos = Person?.Phone;


while (telefonos.hasNext()){
def telefono = telefonos.next();
def telefonos_c = [:]
def TipoTel = nvl(telefono.PhoneType,'');
def area = nvl(telefono.PhoneAreaCode,'');
area = area.trim();
def num = nvl(telefono.PhoneNumber,'');
num = num.trim();
def operadora = nvl(Person?.OperadoraDeTelefonoPrincipal_c,'');
operadora = operadora.trim();
extension= nvl(telefono.PhoneExtension,'')
principal = nvl(telefono.PrimaryFlag,'');
telefonos_c.put('extension',extension.trim())
telefonos_c.put('numero',area+num)

telefonos_c.put('tipo',TipoTel.trim())
if(TipoTel == 'MOBILE'){
if (operadora == null ||operadora == ''){
throw new oracle.jbo.ValidationException('(BDS) Falló envio de contrato: Faltan los siguientes datos en el perfil del Con
telefono.')
}
else{
telefonos_c.put('principal','Y')
telefonos_c.put('operadora',operadora)
TelefonoMovil = true
countTelefonos+=1
}
}
else{
if(TipoTel == 'WORK'){
telefonos_c.put('principal','N')
telefonos_c.put('operadora','')
countTelefonos+=1
}
else{
if(TipoTel == 'HOME'){
telefonos_c.put('principal','N')
telefonos_c.put('operadora','')
countTelefonos+=1
}
}
}
telefonosA.add(telefonos_c)
countT+=1
}
if(!TelefonoMovil)
{
throw new oracle.jbo.ValidationException('(BDS) Falló envio de contrato: Faltan los siguientes datos en el perfil del Contac
móvil.')
}
nombres = nvl (Person?.PersonFirstName, '');
apellidos = nvl(Person?.PersonLastName,'');
genero = nvl(Person?.Gender,'');
fechaDeNacimiento = nvl(Person?.DateOfBirth as String,'');
estadoCivil = nvl( Person?.MaritalStatus,'');
discapacitado = nvl (Person?.Discapacitado_c,'');
println('discapacitado:'+discapacitado )
porcentajeDiscapacitado = nvl(Person?.PorcentajeDeDiscapacidad_c,0 as BigDecimal)*100
if(discapacitado == '' || discapacitado == 'N'){discapacitado = 'N'}else{discapacitado = 'Y'}
terceraEdad = nvl(Person?.TerceraEdad_c,'');
println('terceraEdad:'+terceraEdad)
if(terceraEdad == '' || terceraEdad == 'N'){terceraEdad = 'N'}else{terceraEdad = 'Y'}
if (tipoDeIdentificacion == 'R'){

razonSocial = nombres + ' '+apellidos;


nombreReferencial= nombres + ' '+apellidos;
empresa= nombres +' '+apellidos;
representanteLegal = nombres +' '+apellidos;
nombresRepresentante =nombres;
apellidosRepresentante = apellidos;
cedulaRepresentante = nvl(Person?.NumeroDeCedula_c,'')
cargoRepresentante = nvl(Person?.JobTitle,'')
}
}
else{
contacto = ContactName;
if(nvl(contacto,null)==null){ throw new oracle.jbo.ValidationException('Campo requerido: Contacto principal')}
def clientes = newView('ClienteNetplus_c')
def clientesc = newViewCriteria(clientes)
def clientescr = clientesc.createRow()
def clientesci = clientescr.ensureCriteriaItem('Cuenta_Id_c')
clientesci.setOperator('=')
clientesci.setValue(identificadorClienteOSC)
def cliNetj=clientescr.ensureCriteriaItem('NumeroDeDocumento_c')
cliNetj.setOperator('=')
cliNetj.setValue(numDoc)
clientesc.insertRow(clientescr)
clientes.appendViewCriteria(clientesc)
clientes.executeQuery();
while (clientes.hasNext()){
def cliente = clientes.next();
def CoC = cliente.Cuenta_Id_c;
tipoDeIdentificacion = nvl(cliente.TipoDeDocumento_c,'');
numeroDeIdentificacion =nvl(cliente.NumeroDeDocumento_c,'');
}
correoFacturacion = nvl(PrimaryContactPerson?.CorreoElectronico_c,'');
correo1 = nvl(PrimaryContactPerson?.CorreoElectronico_c,'');
correo2 = nvl(PrimaryContactPerson?.CorreoElectronico2_c,'');
IdNetplus =nvl(PrimaryContactPerson?.CodigoNetPlus_c,'');

def telefonos = PrimaryContactPerson?.Phone;


while (telefonos.hasNext()){
def telefono = telefonos.next();
def telefonos_c = [:]
def area = nvl(telefono.PhoneAreaCode,'')
area = area.trim();
def num = nvl(telefono.PhoneNumber,'')
num = num.trim();
extension = nvl(telefono.PhoneExtension,'')
principal = nvl(telefono.PrimaryFlag,'')
def TipoTel = nvl(telefono.PhoneType,'')
def operadora = nvl(PrimaryContactPerson?.OperadoraDeTelefonoPrincipal_c,'')
operadora = operadora.trim();
telefonos_c.put('extension',extension.trim())
telefonos_c.put('numero',area+num)

telefonos_c.put('tipo',TipoTel.trim())
if(TipoTel == 'MOBILE'){
if (operadora == null ||operadora == ''){
//if ()
throw new oracle.jbo.ValidationException('(BDS) Falló envio de contrato: Faltan los siguientes datos en el perfil del Cont
telefono.')
}else{
telefonos_c.put('principal','Y')
telefonos_c.put('operadora',operadora)
countTelefonos+=1
TelefonoMovil = true
}}else{
if (TipoTel == 'WORK'){
telefonos_c.put('principal','N')
telefonos_c.put('operadora',nvl(operadora,''))
countTelefonos+=1
}else{
if (TipoTel == 'HOME'){
telefonos_c.put('principal','N')
telefonos_c.put('operadora',nvl(operadora,''))
countTelefonos+=1
}
}
}
telefonosA.add(telefonos_c)
countT+=1
}
if(!TelefonoMovil){
throw new oracle.jbo.ValidationException('(BDS) Falló envio de contrato: Faltan los siguientes datos en el perfil del Conta
móvil.')
}
//tipoDeIdentificacion = ''+nvl(PrimaryContactPerson?.TipoDocumento_c,'');
//numeroDeIdentificacion = '' +nvl(PrimaryContactPerson?.NumeroDeDocumento_c,'');
nombres = nvl(PrimaryContactPerson?.PersonFirstName, '');
apellidos = nvl(PrimaryContactPerson?.PersonLastName,'');
genero = nvl(PrimaryContactPerson?.Gender,'');
fechaDeNacimiento = nvl(PrimaryContactPerson?.DateOfBirth as String,'');
estadoCivil = nvl( PrimaryContactPerson?.MaritalStatus,'');
discapacitado = nvl (PrimaryContactPerson?.Discapacitado_c,'');
if(discapacitado == '' || discapacitado == 'N'){discapacitado = 'N'}else{discapacitado = 'Y'}
terceraEdad = nvl(PrimaryContactPerson?.TerceraEdad_c,'');
if(terceraEdad == '' || terceraEdad == 'N'){terceraEdad = 'N'}else{terceraEdad = 'Y'}
if (tipoDeIdentificacion == 'R' ||tipoDeIdentificacion == 'RE' ){
nombreReferencial= nvl(Organization?.OrganizationName,'')
nombreReferencial = nombreReferencial.trim();
razonSocial = nvl(Organization?.RazonSocial_c,'')
razonSocial = razonSocial.trim();
empresa= nvl(TargetPartyName,'')
empresa=empresa.trim();
representanteLegal = nombres +' '+apellidos;
nombresRepresentante =nombres;
apellidosRepresentante = apellidos;
cedulaRepresentante = nvl(PrimaryContactPerson?.NumeroDeCedula_c,'')
cargoRepresentante = nvl(PrimaryContactPerson?.JobTitle,'');
}}
//DIRECCIONES
def Expresion = /^[A-Za-zÁÉÍÓÚáéíóúñÑ0-9\s.]+$/
def errorListCaracteres=[]
def errorCountCaracteres=0
def direccionesA = []
def latitud = '';
def longitud = '';
def coordenadaLatitud = '';
def coordenadaLongitud = '';
def pais='';
def parroquia='';
def canton = '';
def ciudad ='';
def calleprincipal = '';
def callesecundaria = '';
def provincia=''
def dirs = DireccionInstalacion_Tgt_OpportunityToDireccionInstalacion_c_Tgt;
def countDI = 0;
def countDF = 0
def barrioSectorConjunto=''
def NroExterior =''
def conjuntoUrbanizacion=''
def Referencia = ''
while (dirs.hasNext()){
def dir = dirs.next();
def direccionI = [:]
def direccionF =[:]
def esInstalacion = dir.SeleccionarDireccionDeInstalacion_c=='Y';
def esFacturacion=dir.DireccionDeFacturacion_c=='Y'

if (esInstalacion){
latitud = nvl(Latitud_c,'')
longitud = nvl(Longitud_c,'')
coordenadaLatitud = nvl(CoordenadaLatitud_c,'');
coordenadaLatitud = coordenadaLatitud.trim();
coordenadaLongitud = nvl(CoordenadaLongitud_c,'');
coordenadaLongitud = coordenadaLongitud.trim();
def datosDireccion=dir.Address_Src_AddressToDireccionInstalacion_c_Src
pais=nvl(datosDireccion?.Country,'');
pais = pais.trim();
provincia = nvl(datosDireccion?.State,'');
provincia = provincia.toUpperCase().trim();
canton = nvl(datosDireccion?.AddrElementAttribute1,'');
canton = canton.toUpperCase().trim();
parroquia =nvl(datosDireccion?.City,'');
ciudad = parroquia.trim();
calleprincipal = nvl(datosDireccion?.Address1,'').trim();
callesecundaria = nvl(datosDireccion?.Address2,'')
barrioSectorConjunto=nvl(datosDireccion?.AddrElementAttribute2,'').trim()
conjuntoUrbanizacion= nvl(datosDireccion?.AddrElementAttribute3,'').trim()
NroExterior=nvl(datosDireccion?.Address3,'').trim()
Referencia=nvl(datosDireccion?.AddrElementAttribute4,'').trim()
direccionI.put('latitud',latitud)
direccionI.put('longitud',longitud)
direccionI.put('coordenadaLatitud',coordenadaLatitud)
direccionI.put('coordenadaLongitud',coordenadaLongitud)
direccionI.put('tipoDireccion','1')
direccionI.put('pais',pais)
direccionI.put('provincia',provincia)
direccionI.put('canton',canton)
direccionI.put('parroquia',parroquia)
direccionI.put('ciudad',ciudad)
direccionI.put('calleprincipal',calleprincipal.trim())
direccionI.put('callesecundaria',callesecundaria.trim())
direccionI.put('numeroExterior',NroExterior.trim())
direccionI.put('barrioSector',barrioSectorConjunto.trim())
direccionI.put('numeracion',NroExterior.trim())
direccionI.put('conjuntoUrbanizacionEdificio',conjuntoUrbanizacion.trim())
direccionI.put('referencia',Referencia.trim())
direccionesA.add(direccionI)
countDI+=1
}
if(esFacturacion){
latitud = nvl(Latitud_c,'')
longitud = nvl(Longitud_c,'')
coordenadaLatitud = nvl(CoordenadaLatitud_c,'');
coordenadaLongitud = nvl(CoordenadaLongitud_c,'');
pais=nvl(dir.Address_Src_AddressToDireccionInstalacion_c_Src?.Country,'');
provincia = nvl(dir.Address_Src_AddressToDireccionInstalacion_c_Src?.State,'');
provincia = provincia.toUpperCase().trim();
canton = nvl(dir.Address_Src_AddressToDireccionInstalacion_c_Src?.AddrElementAttribute1,'');
canton = canton.toUpperCase().trim();
parroquia =nvl(dir.Address_Src_AddressToDireccionInstalacion_c_Src?.City,'');
calleprincipal = nvl(dir.Address_Src_AddressToDireccionInstalacion_c_Src?.Address1,'');
callesecundaria = nvl(dir.Address_Src_AddressToDireccionInstalacion_c_Src?.Address2,'');
NroExterior = nvl(dir.Address_Src_AddressToDireccionInstalacion_c_Src?.Address3,'');

barrioSectorConjunto = nvl(dir.Address_Src_AddressToDireccionInstalacion_c_Src?.AddrElementAttribute2,'');
conjuntoUrbanizacion = nvl(dir.Address_Src_AddressToDireccionInstalacion_c_Src?.AddrElementAttribute3,'');
Referencia=nvl(dir.Address_Src_AddressToDireccionInstalacion_c_Src?.AddrElementAttribute4,'').trim()
direccionF.put('latitud','')
direccionF.put('longitud','')
direccionF.put('coordenadaLatitud','')
direccionF.put('coordenadaLongitud','')
direccionF.put('tipoDireccion','2')
direccionF.put('pais',pais.trim())
direccionF.put('provincia',provincia)
direccionF.put('canton',canton)
direccionF.put('parroquia',parroquia.trim())
direccionF.put('ciudad',ciudad.trim())
direccionF.put('calleprincipal',calleprincipal.trim())
direccionF.put('callesecundaria',callesecundaria.trim())
direccionF.put('numeroExterior',NroExterior.trim())
direccionF.put('barrioSector',barrioSectorConjunto.trim())
direccionI.put('numeracion',NroExterior.trim())
direccionI.put('conjuntoUrbanizacionEdificio',conjuntoUrbanizacion.trim())
direccionF.put('referencia',Referencia.trim())
direccionesA.add(direccionF)
countDF+=1
}
}
correoElectronico_c.put('correoFacturacion',correoFacturacion.trim())
correoElectronico_c.put('correo1',correo1.trim())
correoElectronico_c.put('correo2',correo2.trim())
datosCliente_c.put('correoElectronico',correoElectronico_c)
datosCliente_c.put('idNetplus',IdNetplus.trim())
datosCliente_c.put('telefonos',telefonosA)
datosCliente_c.put('tipoDeIdentificacion',tipoDeIdentificacion.trim())
datosCliente_c.put('numeroDeIdentificacion',numeroDeIdentificacion.trim())
datosCliente_c.put('razonSocial',razonSocial)
datosCliente_c.put('nombres',nombres.trim())
datosCliente_c.put('apellidos',apellidos.trim())
datosCliente_c.put('genero',genero.trim())
datosCliente_c.put('fechaDeNacimiento',fechaDeNacimiento)
datosCliente_c.put('estadoCivil',estadoCivil.trim())
datosCliente_c.put('discapacitado',discapacitado)
datosCliente_c.put('porcentajeDiscapacitado',porcentajeDiscapacitado)
datosCliente_c.put('terceraEdad',terceraEdad)
datosCliente_c.put('nombreReferencial',nombreReferencial)
datosCliente_c.put('empresa',empresa)
datosCliente_c.put('representanteLegal',representanteLegal)
datosCliente_c.put('nombresRepresentante',nombresRepresentante)
datosCliente_c.put('apellidosRepresentante',apellidosRepresentante)
datosCliente_c.put('cedulaRepresentante',cedulaRepresentante.trim())
datosCliente_c.put('cargoRepresentante',cargoRepresentante.trim())
datosCliente_c.put('direcciones',direccionesA)
//Referencias
def countIguales = 0; //agregar data clean
def tipos = []//agregar data clean
def referenciasA = []
def areaTelefonica = '';
def NombresReferencia = '';
def ApellidosReferencia = '';
def Parentesco = '';
def TelefonoReferencia = '';
def SectorReferencia = '';
def Role ='';
def PartyId = '';
def area ='';
def referencias_c=[:]
def Breferencias = newView('OpportunityContactVO')
def Breferenciasc = newViewCriteria(Breferencias)
def Breferenciasr = Breferenciasc.createRow()
def Breferenciasi = Breferenciasr.ensureCriteriaItem('OptyId')
Breferenciasi.setOperator('=')
Breferenciasi.setValue(OptyId)
Breferenciasc.insertRow(Breferenciasr)
Breferencias.appendViewCriteria(Breferenciasc)
Breferencias.executeQuery();
while (Breferencias.hasNext()){
def Breferencia = Breferencias.next();
if(Breferencia.RoleCd == 'REFERENCIA'){
if(Breferencia.PartyId == PrimaryContactPerson?.PartyId && tipoCliente == 'ORGANIZATION'){
throw new oracle.jbo.ValidationException('El contacto principal no puede ser referencia,seleccione otro contacto.')
}else{
countR+=1
NombresReferencia = nvl(Breferencia.ContactFirstName,'');
ApellidosReferencia = nvl(Breferencia.ContactLastName,'')
Parentesco = nvl(Breferencia.Parentesco_c,'')
PartyId = Breferencia.PartyId;
def admin_view = newView('PersonProfile');
def criteria = newViewCriteria(admin_view);
def row = criteria.createRow();
def vrc = row.ensureCriteriaItem('PartyId');
vrc.setOperator('=');
vrc.setValue(PartyId);
criteria.insertRow(row);
admin_view.appendViewCriteria(criteria);
admin_view.executeQuery();
while (admin_view.hasNext()) {
def curRow = admin_view.next()
SectorReferencia= nvl(curRow.Sector_c,'')
def telefonos = curRow.Phone;
while (telefonos.hasNext()){
def telefono = telefonos.next();
areaTelefonica = nvl(telefono.PhoneAreaCode,'')
TelefonoReferencia = nvl(telefono.PhoneNumber,'')
TelefonoReferencia = areaTelefonica.trim()+TelefonoReferencia.trim();
for (tel in telefonosA){
println('telefono de contacto: '+tel['numero'])
if(TelefonoReferencia == tel['numero']){
countIguales+=1
if(tel['tipo'] == 'WORK'){
tipos.add('Teléfono de trabajo:'+tel['numero'])
}else if(tel['tipo'] == 'HOME'){
tipos.add('Teléfono particular:'+tel['numero'])
}else{
tipos.add('Teléfono móvil:'+tel['numero'])
}
println('telefono de contacto: '+tel['numero']+' telefono de referencia: '+TelefonoReferencia)
}
}
println('referencia: '+countR)
}}}}}
if(countIguales >0){
def errorMessage = '(BDS) Los números de teléfono de la referencia no pueden ser iguales que en el contacto principal: ';
for(tipo in tipos){
errorMessage+=tipo
errorMessage+=' '
}
throw new oracle.jbo.ValidationException(errorMessage)
}
referencias_c.put('nombres',NombresReferencia.trim());
referencias_c.put('apellidos',ApellidosReferencia.trim());
referencias_c.put('parentescoRelacion',Parentesco.trim())
referencias_c.put('sector',SectorReferencia.trim());
referencias_c.put('telefono',TelefonoReferencia)
referenciasA.add(referencias_c)

//Score
def score = [:]
def Segmentacion = nvl(Segmentacion_c,'');
def SegmentacionSupervisor = nvl(SegmentacionSupervisor_c,'');
def CapacidaDePago = nvl(CapacidadDePago_c,'');
def FormaDePago_s =''+nvl(FormaDePagoDin_c,'');
def Registra_TC_Activa = nvl(RegistraTCActiva_c,'');
def ResultadoDelModelo = nvl(ResultadoDelModelo_c,'');
def ClienteCastigado_c = nvl(ClienteCastigado_c,'');
def ClienteConDeuda_c = nvl(ClienteConDeuda_c,'');
score.put('segmentacion',Segmentacion.trim())
score.put('segmentacionSupervisor',SegmentacionSupervisor.trim())
score.put('capacidadDePago',CapacidaDePago.trim())
score.put('formaDePago',FormaDePago_s.trim())
score.put('registraTCActiva',Registra_TC_Activa.trim())
score.put('resultadoDelModelo',ResultadoDelModelo.trim())
score.put('clienteCastigado',ClienteCastigado_c.trim())
score.put('clienteConDeuda',ClienteConDeuda_c.trim())
//Forma de Pago
def formaDePago = [:]
def CuentaPropia = nvl(CuentaPropia_c,'');
def FormaDePago_f = nvl(FormaDePagoDin_c,'');
def bancoTarjeta= nvl(getSelectedListDisplayValue('Banco_c'),'')
def defaultCuenta=''
if(TipoFormaPago_c=='4'){
defaultCuenta='CORRIENTE'
}
def TipoDeCuenta = nvl(TipoDeCuenta_c,defaultCuenta);
def numeroCuentaTarjeta =nvl(NroCuentaTarjeta_c,'');
def fechaExpiracionTarjeta = nvl(FechaExpiracionTarjeta_c as String,'');
def nombreTitular = nvl(NombreDeTitular_c,'')
def apellidosTitular = nvl(ApellidosDeTitular_c,'')
def cedulaTitular = nvl(CedulaDeTitular_c,'')
formaDePago.put('cuentaPropia',CuentaPropia.trim())
formaDePago.put('formaDePago',FormaDePago_f.trim())
formaDePago.put('bancoTarjeta',bancoTarjeta)
formaDePago.put('tipoDeCuenta',TipoDeCuenta)
formaDePago.put('numeroCuentaTarjeta',numeroCuentaTarjeta.trim())
formaDePago.put('fechaExpiracionTarjeta',fechaExpiracionTarjeta)
formaDePago.put('nombreTitular',nombreTitular.trim())
formaDePago.put('apellidosTitular',apellidosTitular.trim())
formaDePago.put('cedulaTitular',cedulaTitular.trim())
//Producto
def producto = [:]
def Servicio_c = nvl (TipoDeServicio_c,'');
if(Servicio_c == 'wifi'){Servicio_c = 'Wifi'}else{Servicio_c = 'Fibra Home'}
def UltimaMilla = nvl(UltimaMilla_c,'');
def ultimaMillaC =nvl(UltimaMilla_Obj_c?.RecordName,'');
def Plan =nvl(Plan_c,'');
def AnchoDeBanda = nvl(AnchoDeBanda_c,'');
def Bucket = nvl(Bucket_Obj_c?.RecordName,'');
def CodigoPostal ='';
def cps = newView('CodigoPostal_c')
def cpsc = newViewCriteria(cps)
def cpsr = cpsc.createRow()
def cpsi = cpsr.ensureCriteriaItem('Oportunidad_Id_c')
cpsi.setOperator('=')
cpsi.setValue(OptyId)
cpsc.insertRow(cpsr)
cps.appendViewCriteria(cpsc)
cps.executeQuery();
while (cps.hasNext()){
def cp = cps.next();
CodigoPostal = nvl(cp.RecordName,'');
}
//Promociones
def promociones_c =[]
def serviciosAdicionales = []
def Tipo_1 = '';
def Renovacion_1 = '';
def Renovacion_2 = '';
def promociones = newView('PromocionesYServicios_c')
def promocionc = newViewCriteria(promociones)
def promocionr = promocionc.createRow()
def promocioni = promocionr.ensureCriteriaItem('Oportunidad_Id_c')
promocioni.setOperator('=')
promocioni.setValue(OptyId)
promocionc.insertRow(promocionr)
promociones.appendViewCriteria(promocionc)
def promocionj=promocionr.ensureCriteriaItem('Seleccionar_c')
promocionj.setOperator('=')
promocionj.setValue('Y')
promocionc.insertRow(promocionr)
promociones.appendViewCriteria(promocionc)
promociones.executeQuery();
while (promociones.hasNext()){
def promo = [:]
def serviciosAdd =[:]
def promocion = promociones.next();
promocion.calcularPromocion()
promocion.validarPromocion()
def enviar = promocion.Seleccionar_c;
def seleccionado = promocion.Descripcion_c;
//println(seleccionado+':'+enviar )
Tipo_1 = promocion.Tipo_c;
//promo.put('tipo'{,promocion.Tipo_c)
//if (enviar == 'Y'){
if(Tipo_1 == 'PROMOCION'){
promo.put('idPromocion',nvl(promocion.RecordName,''))
promo.put('cantidad',nvl(promocion.CantidadNum_c,0 as BigDecimal))
Renovacion_1 = nvl(promocion.RenovacionFlag_c,'N');
if(Renovacion_1 == 'Y'){Renovacion_1 = '1'}else{Renovacion_1 = '0'}
promo.put('renovacion',Renovacion_1)
def detalleP = nvl(promocion.Detalle_Obj_c?.RecordName,'')
//if (detalleP == 0){detalleP =''}
promo.put('detalle',detalleP)
def diferirP = nvl(promocion.Diferir_Obj_c?.RecordName,'');
if (diferirP == '0'){diferirP =''}
promo.put('diferir',diferirP)
def descuentoP = nvl(promocion.Descuento_Obj_c?.RecordName,'');
if(descuentoP == '0'){descuentoP =''}
promo.put('descuento',descuentoP)
promo.put('intervaloCada',nvl(promocion.IntervaloCadaNum_c,0 as BigDecimal))
promo.put('intervaloHasta',nvl(promocion.IntervaloHastaNum_c,0 as BigDecimal))
promo.put('valorUnitario',nvl(promocion.ValorUnitario_c,0 as BigDecimal))
promo.put('valorMensual',nvl(promocion.ValorMensual_c,0 as BigDecimal))
promociones_c.add(promo)
}else{
// serviciosAdd.put('tipo',nvl(promocion.Tipo_c,''))
serviciosAdd.put('idServicio',nvl(promocion.RecordName,''))
serviciosAdd.put('cantidad',nvl(promocion.CantidadNum_c,0 as BigDecimal))
Renovacion_2 = nvl(promocion.Renovacion_c,'N')
if(Renovacion_2 == 'Y'){Renovacion_2 = '0'}else{Renovacion_2 = '1'}
serviciosAdd.put('renovacion',Renovacion_2)
def detalleS = nvl(promocion.Detalle_Obj_c?.RecordName,'');
//if (detalleS ==0){detalleS =''}
serviciosAdd.put('detalle',detalleS)
def diferirS = nvl(promocion.Diferir_Obj_c?.RecordName,'');
if(diferirS == '0'){diferirS=''}
serviciosAdd.put('diferir',diferirS)
def descuentoS =nvl(promocion.Descuento_Obj_c?.RecordName,'');
if(descuentoS == '0'){descuentoS=''}
serviciosAdd.put('descuento',descuentoS)
serviciosAdd.put('intervaloCada',nvl(promocion.IntervaloCadaNum_c,0 as BigDecimal))
serviciosAdd.put('intervaloHasta',nvl(promocion.IntervaloHastaNum_c,0 as BigDecimal))
serviciosAdd.put('valorUnitario',nvl(promocion.ValorUnitario_c,0 as BigDecimal))
serviciosAdd.put('valorMensual',nvl(promocion.ValorMensual_c,0 as BigDecimal))
serviciosAdicionales.add(serviciosAdd)
}
//}
}
def revs = ChildRevenue;
while (revs.hasNext()){
def rev = revs.next();
def des = [:]
def desc = nvl(rev.DescuentoMasivoDin_Obj_c?.RecordName,'');

if(desc == '' || desc == 0){


}else{
des.put('idPromocion',desc)
des.put('cantidad',1)
des.put('renovacion',1)
def detalleP = nvl(rev.Detalle_Obj_c?.RecordName,'')
des.put('detalle',detalleP)
def diferirP = nvl(rev.Diferir_Obj_c?.RecordName,'');
if (diferirP == '0'){diferirP =''}
des.put('diferir',diferirP)
def descuentoP = nvl(rev.DescuentoDin_Obj_c?.RecordName,'');
if(descuentoP == '0'){descuentoP =''}
des.put('descuento',descuentoP)
des.put('intervaloCada',nvl(rev.IntervaloCadaNum_c,0 as BigDecimal))
des.put('intervaloHasta',nvl(rev.IntervaloHastaNum_c,0 as BigDecimal))
des.put('valorUnitario',nvl(rev.CostoDelPlan_c,0 as BigDecimal))
des.put('valorMensual',nvl(rev.TotalDelPlan_c,0 as BigDecimal))
promociones_c.add(des)
}

//informacionGeneralDeInstalacion
def infoGeneralInstalacion = [:]
def metrosEstimados = nvl(MetrosEstimados_c,0 as BigDecimal);
def pozos = nvl(Pozos_c,'');
def comentario =nvl(ComentariosDeInstalacionSimple_c,'');
//def comentario ='';
def pisosEdificacion=nvl(PisosDeEdificacion_c,'')
if(pisosEdificacion == 'UNO'){pisosEdificacion=1}
if(pisosEdificacion == 'DOS'){pisosEdificacion=2}
if(pisosEdificacion == 'TRES'){pisosEdificacion=3}
if(pisosEdificacion == 'CUATRO'){pisosEdificacion=4}
if(pisosEdificacion == 'EDIFICIO'){pisosEdificacion='Edificio'}
def Ductos = nvl(Ductos_c,'');
if(Ductos == 'NO'){Ductos = 'No'}
if(Ductos == 'SI'){Ductos = 'Si'}
def pisoInstalacion=nvl(PisoDeInstalacion_c,'')
if (pisoInstalacion =='UNO_INS'){pisoInstalacion =1}
if (pisoInstalacion =='DOS_INS'){pisoInstalacion =2}
if (pisoInstalacion =='TRES_INS'){pisoInstalacion =3}
if (pisoInstalacion =='CUATRO_INS'){pisoInstalacion =4}
if (pisoInstalacion =='CINCO_INS'){pisoInstalacion =5}
if (pisoInstalacion =='SEIS_INS'){pisoInstalacion =6}
if (pisoInstalacion =='SIETE_INS'){pisoInstalacion =7}
if (pisoInstalacion =='OCHO_INS'){pisoInstalacion =8}
if (pisoInstalacion =='NUEVE_INS'){pisoInstalacion =9}
if (pisoInstalacion =='MAYOR_9_INS'){pisoInstalacion ='mayor a 9'}
def requiereEscalera = nvl(RequiereEscalera_c,'')
def alturaEscalera = nvl(AlturaDeEscalera_c,'')
if (alturaEscalera =='TRES_METROS'){alturaEscalera ='3 m'}
if (alturaEscalera =='SEIS_METROS'){alturaEscalera ='6 m'}
if (alturaEscalera =='NUEVE_METROS'){alturaEscalera ='9 m'}

infoGeneralInstalacion.put('metrosEstimados',metrosEstimados)
infoGeneralInstalacion.put('pozos',pozos.trim())
infoGeneralInstalacion.put('comentario',comentario.trim())
infoGeneralInstalacion.put('pisosInstalacion',pisoInstalacion)
infoGeneralInstalacion.put('pisosEdificacion',pisosEdificacion)
infoGeneralInstalacion.put('ductos',Ductos)
infoGeneralInstalacion.put('requiereEscalera',requiereEscalera.trim())
infoGeneralInstalacion.put('alturaEscalera',alturaEscalera)

def NodoWifi = nvl(NodoWifi_Obj_c?.RecordName,'');


def IP_RadioWifi = nvl(IPRadioWifi_Obj_c?.RecordName,'');
def OLT = nvl(OLT_Obj_c?.RecordName,'');
def Splitter = nvl(Splitter_Obj_c?.RecordName,'');
def GrupoDeHilo = nvl(GrupoDeHilo_Obj_c?.RecordName,'');
def ColorDeHilo = nvl(ColorDeHilo_Obj_c?.RecordName,'');
producto.put('servicioC',Servicio_c)
producto.put('ultimaMilla',UltimaMilla.trim())
producto.put('plan',Plan.trim())
producto.put('anchoDeBanda',AnchoDeBanda.trim())
producto.put('bucket',Bucket.trim())
producto.put('codigoPostal',CodigoPostal.trim())
producto.put('promociones',promociones_c)
producto.put('serviciosAdicionales',serviciosAdicionales)
producto.put('informacionGeneralDeInstalacion',infoGeneralInstalacion)
producto.put('nodoWifi',NodoWifi.trim())
producto.put('ipRadioWifi',IP_RadioWifi.trim())
producto.put('olt',OLT.trim())
producto.put('splitter',Splitter.trim())
producto.put('grupodeHilo',GrupoDeHilo.trim())
producto.put('colordeHilo',ColorDeHilo.trim())

//archivosAdjuntos":

def payload = [:]


payload.put('datosOportunidad',datosOportunidad_c)
payload.put('datosCliente',datosCliente_c)
payload.put('referencias',referenciasA)
payload.put('score',score)
payload.put('formaDePago',formaDePago)
payload.put('producto',producto)
payload.put('archivosAdjuntos',archivosAdjuntosA)

//println('PAYLOAD ENVIO DE CONTRATO: '+ payload)

def MsgE = '';


def count = 0;
if(countT == 0){
count+=1
MsgE = MsgE + 'un teléfono del cliente,' + ' ';
}
if(countDI != 1){
count+=1
MsgE = MsgE + 'sólo una dirección de instalación,' + ' ';
}
if(countDF != 1){
count+=1
MsgE = MsgE + 'sólo una dirección de facturación,' + ' ';

if(countR == 0){
count+=1
MsgE = MsgE + 'una Referencia,' + ' ';
}

if(barrioSectorConjunto==''){
count+=1
MsgE = MsgE + 'el Barrio / Sector,' + ' ';
}else if (!barrioSectorConjunto.matches(Expresion)){
errorListCaracteres.add('Barrio/Sector')
errorCountCaracteres+=1
}
if(conjuntoUrbanizacion==''){
count+=1
MsgE = MsgE + 'Conjunto/Urbanización/Edificio,' + ' ';
}else if(!conjuntoUrbanizacion.matches(Expresion)){
errorListCaracteres.add('Conjunto/Urbanización/Edificio')
errorCountCaracteres+=1
}
if(pisosEdificacion==''){
count+=1
MsgE = MsgE + 'Pisos de edificación, ' + ' ';

}
if(pisoInstalacion==''){
count+=1
MsgE = MsgE + 'Piso de instalación.' + ' ';
}
if (MsgE != ''){
if(count == 1){
MsgE = '(BDS) Falló envio de contrato: Falta el siguiente campo en la oportunidad: "'+ MsgE + '".';
}
else{
MsgE = '(BDS) Falló envio de contrato: Faltan los siguientes campos en la oportunidad: "'+ MsgE + '".';
}
throw new oracle.jbo.ValidationException(MsgE)

if(AreaComercial_c == 'CORPORATIVO' ){
if(IdNetplus == null ||IdNetplus ==''){
throw new oracle.jbo.ValidationException('No se puede enviar el contrato si el cliente no esta registrado en Netplus')
}
}

if(NroExterior == null || NroExterior ==''){


errorListCon.add('Número Exterior. ')
errorCountCon+=1
}else if(!NroExterior.matches(Expresion)){
errorListCaracteres.add('Numeración')
errorCountCaracteres+=1
}

if(Referencia == null || Referencia ==''){


errorListCon.add('Referencia. ')
errorCountCon+=1
}else if(!Referencia.matches(Expresion)){
errorListCaracteres.add('Referencia')
errorCountCaracteres+=1
}
if(latitud == null || latitud ==''){
errorListOp.add('Latitud. ')
errorCountOp+=1
}
if( longitud == null || longitud ==''){
errorListOp.add('Longitud. ')
errorCountOp+=1}
if( coordenadaLatitud == null || coordenadaLatitud ==''){
errorListOp.add('Coordenada Latitud. ')
errorCountOp+=1}
if( coordenadaLongitud == null || coordenadaLongitud==''){
errorListOp.add('Coordenada Longitud. ')
errorCountOp+=1}
if( pais== null || pais ==''){
errorListCon.add('Pais. ')
errorCountCon+=1}
if( provincia== null || provincia ==''){
errorListCon.add('Provincia. ')
errorCountCon+=1}
if( canton== null ||canton ==''){
errorListCon.add('Cantón. ')
errorCountCon+=1}
if( parroquia == null || parroquia==''){
errorListCon.add('Parroquia. ')
errorCountCon+=1}
if( calleprincipal== null || calleprincipal ==''){
errorListCon.add('Calle Principal. ')
errorCountCon+=1
}else if(!calleprincipal.matches(Expresion)){
errorListCaracteres.add('Calle principal')
errorCountCaracteres+=1
}

if(callesecundaria == null || callesecundaria==''){


errorListCon.add('Calle secundaria')
errorCountCon+=1
}else if(callesecundaria != '' && !callesecundaria.matches(Expresion)){
errorListCaracteres.add('Calle secundaria')
errorCountCaracteres+=1
}
if(tipoDeIdentificacion == null || tipoDeIdentificacion ==''){
errorListCon.add('Tipo de Identificación. ')
errorCountCon+=1
}
if(numeroDeIdentificacion== null || numeroDeIdentificacion ==''){
errorListCon.add('Número de Identificación. ')
errorCountCon+=1
}
if(genero== null || genero ==''){
errorListCon.add('Genero. ')
errorCountCon+=1
}
if(fechaDeNacimiento== null || fechaDeNacimiento ==''){
errorListCon.add('fecha de Nacimiento. ')
errorCountCon+=1
}
if(estadoCivil== null || estadoCivil ==''){
errorListCon.add('Estado Civil. ')
errorCountCon+=1
}

if(CanalDeVenta == null || CanalDeVenta ==''){


errorListOp.add('Canal. ')
errorCountOp+=1
}
if(EjecutivoComercial == null || EjecutivoComercial ==''){
errorListOp.add('Ejecutivo. ')
errorCountOp+=1
}
if(Sucursal == null || Sucursal ==''){
errorListOp.add('Sucursal. ')
errorCountOp+=1
}
if(FormaDePago_f == null || FormaDePago_f ==''){
errorListOp.add('Forma de pago. ')
errorCountOp+=1
}
if(UltimaMilla == null || UltimaMilla ==''){
errorListOp.add('Ultima milla. ')
errorCountOp+=1
}
if(Plan == null || Plan ==''){
errorListOp.add('Plan.')
errorCountOp+=1
}
if(AnchoDeBanda == null || AnchoDeBanda ==''){
errorListOp.add('Ancho de banda.')
errorCountOp+=1
}

if(pozos == null || pozos ==''){


errorListOp.add('Pozos.')
errorCountOp+=1
}

if(Servicio_c == null || Servicio_c ==''){


errorListOp.add('Tipo de servicio.')
errorCountOp+=1
}else{
if(Servicio_c == 'Wifi'){
if(NodoWifi == null || NodoWifi ==''){
errorListOp.add('Nodo wifi.')
errorCountOp+=1
}
if(IP_RadioWifi == null || IP_RadioWifi ==''){
errorListOp.add('IP radio wifi.')
errorCountOp+=1
}
}else{
println('ultimaMillaC:'+ ultimaMillaC)
if (ultimaMillaC != '11'){
if(OLT == null || OLT ==''){
errorListOp.add('OLT.')
errorCountOp+=1
}
if(Splitter == null || Splitter ==''){
errorListOp.add('splitter.')
errorCountOp+=1
}
if(GrupoDeHilo == null || GrupoDeHilo ==''){
errorListOp.add('Grupo de hilo.')
errorCountOp+=1
}
if(ColorDeHilo == null || ColorDeHilo ==''){
errorListOp.add('Color de hilo.')
errorCountOp+=1
}
}

if(Bucket == null || Bucket ==''){


errorListOp.add('Bucket.')
errorCountOp+=1
}
if(CodigoPostal == null || CodigoPostal ==''){
errorListOp.add('Codigo Postal.')
errorCountOp+=1
}

}
}
def errorMessage= ''
if(errorCountOp>0 || errorCountCon >0){
errorMessage= '(BDS) Falló envio de contrato:'
if(errorCountCon>0){
if(errorCountCon==1){
errorMessage+= ' Falta el siguiente campo en el perfil del Contacto: '
}
else{
errorMessage+= ' Faltan los siguientes campos en el perfil del Contacto: '
}
for(error in errorListCon){
errorMessage+=error
}
errorMessage+='.'
}
if(errorCountOp>0){
if(errorCountCon==1){
errorMessage+= ' Falta el siguiente campo en la oportunidad: '
}
else{
errorMessage+= ' Faltan los siguientes campos en la oportunidad: '
}
for(error in errorListOp){
errorMessage+=error
}
errorMessage+='.'
}
throw new oracle.jbo.ValidationException(''+errorMessage+')')
}
def errorMessageCaracteres= ''
if(errorCountCaracteres>0){
errorMessageCaracteres= '(BDS):'
if(errorCountCaracteres==1){
errorMessageCaracteres+= ' El campo: '
for(error in errorListCaracteres){
errorMessageCaracteres+=error
}
errorMessageCaracteres+= ' no puede contener caracteres especiales.'
}
else{
errorMessageCaracteres+= ' Los campos: '
for(error in errorListCaracteres){
errorMessageCaracteres+=error
errorMessageCaracteres+=','
}
errorMessageCaracteres+= ' no pueden contener caracteres especiales.'
}
throw new oracle.jbo.ValidationException(''+errorMessageCaracteres)
}
def envio = '';

//println('payload envio: ' +payload)

try{
//throw new oracle.jbo.ValidationException(tipoDeIdentificacion+numeroDeIdentificacion)
//println('entrando a llamada')
println('payload envio: ' +payload)
envio = adf.webServices.EnvioDeInformacionDecontrato.POST(payload)
println('RESPUESTA ENVIO DE CONTRATO: '+ envio)
if (envio!=null ||envio!=''){
if (envio?.codigoRespuesta == '1'){

setAttribute('SalesStageId',GetSalesStageId('MMVE3'))
setAttribute('FechaEnvioContratoDigital_c', now())
setAttribute('IDTicketContratoNetplus_c', envio?.idTicketNetplus)
def POST_param = [:]

payload.put('archivosAdjuntos',listaNombreArchivoAdjunto)
def identificadorOppOSC_c = OptyId;
POST_param.put('Oportunidad_Id_c',identificadorOppOSC_c)
POST_param.put('Integracion_c',5)
POST_param.put('IdPrincipal_c',envio?.idTicketNetplus)
POST_param.put('MensajeIntegracion_c',encodeToBase64('Envio Correcto'))
POST_param.put('Payload_c',encodeToBase64(''+ payload))
POST_param.put('Response_c',encodeToBase64(''+envio))
adf.webServices.LogBitacora.POST(POST_param)

}else
{
//if(envio?.Status == 'Error'){
// }

throw new oracle.jbo.ValidationException('(Puntonet) '+envio?.mensaje)

}
}

}
catch(Exception e){

def msg=e.message
def POST_param = [:]

payload.put('archivosAdjuntos',listaNombreArchivoAdjunto)
def identificadorOppOSC_c = OptyId;
POST_param.put('Oportunidad_Id_c',identificadorOppOSC_c)
POST_param.put('Integracion_c',5)
POST_param.put('IdPrincipal_c',0)
POST_param.put('MensajeIntegracion_c',encodeToBase64(''+msg))
POST_param.put('Payload_c',encodeToBase64(''+ payload))
POST_param.put('Response_c',encodeToBase64(''+envio))
adf.webServices.LogBitacora.POST(POST_param)
throw new oracle.jbo.ValidationException(''+'' + msg)

def opLeads=newView('OpportunityLeadVO')
def opLeadc=newViewCriteria(opLeads)
def opLeadr=opLeadc.createRow()
def opLeadi=opLeadr.ensureCriteriaItem('OptyId')
opLeadi.setOperator('=')
opLeadi.setValue(OptyId)
opLeadc.insertRow(opLeadr)
opLeads.appendViewCriteria(opLeadc)
opLeads.executeQuery()
println('Ingresé a script')
while(opLeads.hasNext()){
def opLead=opLeads.next()
def leads=newView('Lead')
def leadc=newViewCriteria(leads)
def leadr=leadc.createRow()
def leadi=leadr.ensureCriteriaItem('LeadNumber')
leadi.setOperator('=')
leadi.setValue(opLead.LeadNumber)
leadc.insertRow(leadr)
leads.appendViewCriteria(leadc)
leads.executeQuery()
println('LeadNumber:'+opLead.LeadNumber)
while(leads.hasNext()){
def lead=leads.next()
def contactoId
def cuentaId
def clienteId
if(lead.CrearContacto_c=='Y'){
contactoId=lead.Contacto_Id_c
}
else{
contactoId=lead.PrimaryContactId
}
if(lead.CrearCliente_c=='Y'){
cuentaId=lead.IdCuentaCreada_c
}
else{
cuentaId=lead.Cuenta_Id_c
}
if(lead.TipoCliente_c=='PERSON'){
clienteId=contactoId
}
else if(lead.TipoCliente_c=='ORGANIZATION'){
clienteId=cuentaId
}
setAttribute('TargetPartyId',clienteId)
setAttribute('KeyContactId',contactoId)
setAttribute('Latitud_c',nvl(lead.LatitudLV_c,''))

setAttribute('CoordenadaLatitud_c',nvl(lead.CoordenadaLatitud_c,''))
setAttribute('CoordenadaLongitud_c', nvl(lead.CoordenadaLongitud_c,''))
setAttribute('Longitud_c',nvl(lead.LongitudL_c,''))
setAttribute('BarrioSectorConjunto_c',nvl(lead.BarrioSectorConjunto_c,''))

lead.setAttribute('CustomerId',clienteId)
lead.setAttribute('PrimaryContactId',contactoId)
lead.setAttribute('Cuenta_Id_c',cuentaId)
def map=[:]
map.put('clienteId',clienteId)
map.put('contactoId',contactoId)
map.put(cuentaId,cuentaId)
println(''+map)
}
crearDireccionesDeinstalacion()
}
setAttribute('InformaciónDeLeadActualizada_c','Y')
def historico = newView('HistoricoDeEtapaDeVenta_c')
def crear = historico.createRow();
crear.setAttribute('Oportunidad_c',OptyNumber);
crear.setAttribute('RecordName', SalesStage);
//crear.setAttribute('FechaFinDeEtapa_c',today());
historico.insertRow(crear)

//cuentas

BorrarFormasDePago()
def listRows = newView('FormaDePago_c')

def tipoCliente = CustPartyType;


def identificadorOppOSC_c =OptyId;
def tipoDocumento_c = '';
def numeroDocumento_c = '';
def payload = [:]
def POST_param=[:]
def consulta= '';
def contacto = '';
def nombre ='';

try{

if(tipoCliente == 'PERSON'){
println('entrando a contacto')
contacto = AccountName;
if(nvl(contacto,null)==null){
throw new oracle.jbo.ValidationException('Campo requerido:Cliente ')
}else{
tipoDocumento_c = nvl(TipoDeIdentificacion_c,'')
numeroDocumento_c = nvl(NumeroDeDocumento_c,'')
if(tipoDocumento_c == 'R' ){
throw new oracle.jbo.ValidationException('Para consultar el score es necesario enviar Cédula o Pasaporte')
}

}
}else{
println('entrando a cuenta')
contacto = AccountName;
if(nvl(contacto,null)==null){
throw new oracle.jbo.ValidationException('Campo requerido:Cliente ')
}else{
def id= Organization?.PreferredContactPersonId;
println('id:'+id)
def admin_view = newView('PersonProfile');
def criteria = newViewCriteria(admin_view);
def row = criteria.createRow();
def vrc = row.ensureCriteriaItem('PartyId');
vrc.setOperator('=');
vrc.setValue(KeyContactId);
criteria.insertRow(row);
admin_view.appendViewCriteria(criteria);
admin_view.executeQuery();
while (admin_view.hasNext()) {
def curRow = admin_view.next()
tipoDocumento_c =curRow.TipoDocumento_c;
def cedula = nvl(curRow.NumeroDeCedula_c,'');
def pasaporte = nvl(curRow.NumeroDePasaporte_c,'');
nombre = nvl(curRow.PersonFirstName,'')
if(cedula ==''){
if(pasaporte == ''){
throw new oracle.jbo.ValidationException('Para consultar el score es necesario enviar Cédula o Pasaporte')
}else{
numeroDocumento_c = pasaporte;
tipoDocumento_c ='P'
}
}else{
numeroDocumento_c= cedula;
tipoDocumento_c ='C'
}

} }}

tipoDocumento_c = tipoDocumento_c.trim();
numeroDocumento_c = numeroDocumento_c.trim();

payload.put('tipoDocumento',tipoDocumento_c)
payload.put('numeroDocumento',''+numeroDocumento_c)
payload.put('idEjecutivoCorporativo',''+OwnerResourcePartyId)
println('PAYLOAD CONSULTA CALIFICACION: '+ payload+' Nombre:'+nombre)

consulta = adf.webServices.ConsultarCalificacionCliente.POST(payload)
println('RESPUESTA CONSULTA CALIFICACION: '+ consulta)

if(consulta?.codigoRespuesta == '1' ){
def capacidadPago_c = consulta?.capacidadPago;
setAttribute('Segmentacion_c',consulta?.segmentacion);
setAttribute('ClienteCastigado_c',consulta?.clienteCastigado.Descripcion[0]);
setAttribute('ResultadoDelModelo_c',consulta?.resultadoModelo);
setAttribute('RegistraTCActiva_c',consulta?.registraTCActiva);
setAttribute('ClienteConDeuda_c',consulta?.clienteDeuda.Descripcion[0]);
setAttribute('CapacidadPagoNum_c', (capacidadPago_c as BigDecimal).setScale(2,BigDecimal.ROUND_HALF_UP))
setAttribute('ScoreFixed_c',consulta?.segmentacion)
println('CAPACIDAD DE PAGO: '+ CapacidadPagoNum_c)
// creaHistoricoConsultaScore()

setAttribute('FechaConsultaScore_c',now())

def listaFormaDePago= consulta['formaPago']


//println('Forma de pago: '+ listaFormaDePago)
/* for(Cod in listaFormaDePago){
def listRow = listRows.createRow()
listRow.setAttribute('Oportunidad_Id_c',OptyId)
listRow.setAttribute('Activo_c','Y')
listRow.setAttribute('RecordName',Cod['Codigo'])
listRow.setAttribute('Descripcion_c',Cod['Descripcion'])
listRow.setAttribute('TipoFormaPago_c',Cod['tipo'])
listRows.insertRow(listRow)
}
*/

POST_param.put('Oportunidad_Id_c',identificadorOppOSC_c)
POST_param.put('Integracion_c',2)
POST_param.put('MensajeIntegracion_c',encodeToBase64('Consulta Exitosa'))
POST_param.put('Payload_c',encodeToBase64(''+ payload))
POST_param.put('Response_c',encodeToBase64(''+consulta))
POST_param.put('IdPrincipal_c',0)

adf.webServices.LogBitacora.POST(POST_param)
if(Segmentacion_c != null ||Segmentacion_c!=''){
setAttribute('SalesStageId',GetSalesStageId('MMVE2'))

}else{

def mensaje = consulta?.mensaje;


throw new oracle.jbo.ValidationException(''+mensaje)

}
}
catch(Exception e){
def msg=e.message

POST_param.put('Oportunidad_Id_c',identificadorOppOSC_c)
POST_param.put('Integracion_c',2)
POST_param.put('MensajeIntegracion_c',encodeToBase64(msg))
POST_param.put('Payload_c',encodeToBase64(''+ payload))
POST_param.put('Response_c',encodeToBase64(''+consulta))
POST_param.put('IdPrincipal_c',0)

adf.webServices.LogBitacora.POST(POST_param)
//throw new oracle.jbo.ValidationException(''+consulta?.resultadoModelo)
throw new oracle.jbo.ValidationException('Error: ' + e)
}

def oldvalor= getOriginalAttributeValue('SalesStageId')


def oldvalorNom= getOriginalAttributeValue('SalesStage')
if(isAttributeChanged('SalesStageId')&& oldvalor!=SalesStageId){
def actividad = newView('HistoricoDeEtapaDeVenta_c');
def act = newViewCriteria(actividad);
def row = act.createRow();
def vrc = row.ensureCriteriaItem('Oportunidad_c');
vrc.setOperator('=');
vrc.setValue(OptyNumber);
act.insertRow(row);
actividad.appendViewCriteria(act);
actividad.executeQuery();
while (actividad.hasNext()) {
def curRow = actividad.next()
curRow.setAttribute('EtapaTermiinada_c','Y');
}
}
def tipoDocumento=nvl(TipoDeIdentificacion_c,'')
def tipoDeIdentificacion='';
def numeroDeIdentificacion ='';
def identificadorClienteOSC =TargetPartyId;
def codNetplus;
def CoC;
def party
def nroDoc=''
if(Person!=null){
party=Person
def clientes = newView('ClienteNetplus_c')
def clientesc = newViewCriteria(clientes)
def clientescr = clientesc.createRow()
def clientesci = clientescr.ensureCriteriaItem('Contacto_Id_c')
clientesci.setOperator('=')
clientesci.setValue(identificadorClienteOSC)
clientesc.insertRow(clientescr)
clientes.appendViewCriteria(clientesc)
def clientesj = clientescr.ensureCriteriaItem('TipoDeDocumento_c')
clientesj.setOperator('=')
clientesj.setValue(tipoDocumento)
clientesc.insertRow(clientescr)
clientes.appendViewCriteria(clientesc)
clientes.executeQuery();
while (clientes.hasNext()){
def cliente = clientes.next();
CoC = cliente.Contacto_Id_c;
tipoDeIdentificacion = nvl(cliente.TipoDeDocumento_c,'');
numeroDeIdentificacion =nvl(cliente.NumeroDeDocumento_c,'');
codNetplus= nvl(cliente.RecordName,'');

if(CoC!=null){

if(tipoDocumento=='C' ){
if(tipoDocumento==tipoDeIdentificacion){
nroDoc=nvl(party.NumeroDeCedula_c,'')
setAttribute('EnviaCliente_c','Y')
setAttribute('CodigoNetplusDelCliente_c',codNetplus)
}else{
nroDoc=nvl(party.NumeroDeCedula_c,'')
setAttribute('EnviaCliente_c','N')
setAttribute('CodigoNetplusDelCliente_c',null)

}else{
if(tipoDocumento=='R'){
if(tipoDocumento==tipoDeIdentificacion){
nroDoc=nvl(party.JgzzFiscalCode,'')
setAttribute('EnviaCliente_c','Y')
setAttribute('CodigoNetplusDelCliente_c',codNetplus)
}else{
nroDoc=nvl(party.JgzzFiscalCode,'')
setAttribute('EnviaCliente_c','N')
setAttribute('CodigoNetplusDelCliente_c',null)
}

}else{
if(tipoDocumento=='P'){
if( tipoDocumento==tipoDeIdentificacion){
nroDoc=nvl(party.NumeroDePasaporte_c,'')
setAttribute('EnviaCliente_c','Y')
setAttribute('CodigoNetplusDelCliente_c',codNetplus)
}else{
nroDoc=nvl(party.NumeroDePasaporte_c,'')
setAttribute('EnviaCliente_c','N')
setAttribute('CodigoNetplusDelCliente_c',null)
}

} else{
setAttribute('TipoDeIdentificacion_c',party.TipoDocumento_c)
nroDoc=nvl(party.NumeroDeDocumento_c,'')
}
}

}
}else{
if(tipoDocumento=='C'){
nroDoc=nvl(party.NumeroDeCedula_c,'')
setAttribute('EnviaCliente_c','Y')
setAttribute('CodigoNetplusDelCliente_c',codNetplus)
}
else if(tipoDocumento=='R'){
nroDoc=nvl(party.JgzzFiscalCode,'')
setAttribute('EnviaCliente_c','Y')
setAttribute('CodigoNetplusDelCliente_c',codNetplus)
}
else if(tipoDocumento=='P'){
nroDoc=nvl(party.NumeroDePasaporte_c,'')
setAttribute('EnviaCliente_c','Y')
setAttribute('CodigoNetplusDelCliente_c',codNetplus)
}
else{
setAttribute('TipoDeIdentificacion_c',party.TipoDocumento_c)
nroDoc=nvl(party.NumeroDeDocumento_c,'')
}
setAttribute('EnviaCliente_c','N')
}

}
else if(Organization!=null){
party=Organization
def clientes = newView('ClienteNetplus_c')
def clientesc = newViewCriteria(clientes)
def clientescr = clientesc.createRow()
def clientesci = clientescr.ensureCriteriaItem('Cuenta_Id_c')
clientesci.setOperator('=')
clientesci.setValue(identificadorClienteOSC)
def clientesj = clientescr.ensureCriteriaItem('TipoDeDocumento_c')
clientesj.setOperator('=')
clientesj.setValue(tipoDocumento)
clientesc.insertRow(clientescr)
clientes.appendViewCriteria(clientesc)
clientes.executeQuery();
while (clientes.hasNext()){
def cliente = clientes.next();
CoC = cliente.Cuenta_Id_c;

tipoDeIdentificacion = nvl(cliente.TipoDeDocumento_c,'');
numeroDeIdentificacion =nvl(cliente.NumeroDeDocumento_c,'');
codNetplus= nvl(cliente.RecordName,'');
//println(tipoDeIdentificacion+numeroDeIdentificacion)
}
if(CoC!=null){
if(tipoDocumento=='RE'){
if(tipoDocumento==tipoDeIdentificacion){
nroDoc=nvl(party.RUCExterno_c,'')
setAttribute('EnviaCliente_c','Y')
setAttribute('CodigoNetplusDelCliente_c',codNetplus)
}else{
nroDoc=nvl(party.RUCExterno_c,'')
setAttribute('EnviaCliente_c','N')
setAttribute('CodigoNetplusDelCliente_c',null)
}
}
else if(tipoDocumento=='R'){
if(tipoDocumento==tipoDeIdentificacion){
setAttribute('EnviaCliente_c','Y')
setAttribute('CodigoNetplusDelCliente_c',codNetplus)
nroDoc=nvl(party.JgzzFiscalCode,'')
}
else{
nroDoc=nvl(party.JgzzFiscalCode,'')
setAttribute('EnviaCliente_c','N')
setAttribute('CodigoNetplusDelCliente_c',null)
}
}
else if(tipoDocumento=='P'){
if(tipoDocumento==tipoDeIdentificacion){
nroDoc=nvl(party.Pasaporte_c,'')
setAttribute('EnviaCliente_c','Y')
setAttribute('CodigoNetplusDelCliente_c',codNetplus)
}else{
nroDoc=nvl(party.Pasaporte_c,'')
setAttribute('EnviaCliente_c','N')
setAttribute('CodigoNetplusDelCliente_c',null)
}
}
else{
setAttribute('TipoDeIdentificacion_c',party.TipoDeDocumento_c)
nroDoc=nvl(party.NumeroDeDocumento_c,'')
}
}else{
party=Organization
if(tipoDocumento=='RE'){
nroDoc=nvl(party.RUCExterno_c,'')
setAttribute('EnviaCliente_c','Y')
setAttribute('CodigoNetplusDelCliente_c',codNetplus)
}
else if(tipoDocumento=='R'){
nroDoc=nvl(party.JgzzFiscalCode,'')
setAttribute('EnviaCliente_c','Y')
setAttribute('CodigoNetplusDelCliente_c',codNetplus)
}
else if(tipoDocumento=='P'){
nroDoc=nvl(party.Pasaporte_c,'')
setAttribute('EnviaCliente_c','Y')
setAttribute('CodigoNetplusDelCliente_c',codNetplus)
}
else{
setAttribute('TipoDeIdentificacion_c',party.TipoDeDocumento_c)
nroDoc=nvl(party.NumeroDeDocumento_c,'')
}
}

println('nroDoc:'+nroDoc)
}
if(nroDoc==''){
throw new oracle.jbo.ValidationException('El cliente no cuenta con el tipo de identificación seleccionado. Favor de seleccio
}
else{
setAttribute('NumeroDeDocumento_c',nroDoc)
}

def errorList=[]
def errorCount=0
def countT =0
def genero = '';
def tipoDeIdentificacion = '';
def numeroDeIdentificacion = '';
def fechaDeNacimiento = '';
def estadoCivil = '';
def tipoCliente = CustPartyType;
def canal =nvl(CanalObjC_c,'')
def Ejecutivo = nvl(PartyName1,'')
def sucursal = nvl(getSelectedListDisplayValue('SucursalDeFacturacion_c'),'')
def FormaDePago = nvl(FormaDePagoDin_c,'')
def UltimaMilla = nvl(UltimaMilla_c,'')
def plan = nvl(Plan_c,'')
def AnchoDeBanda = nvl(AnchoDeBanda_c,'')
def tipoDeServicio = nvl(TipoDeServicio_c,'')
def NodoWifi = nvl(NodoWifi_c,'')
def ipRadioWifi = nvl(IPRadioWifi_c,'')
def OLT = nvl(OLT_c,'')
def splitter = nvl(Splitter_c,'')
def GrupoDeHilo = nvl(GrupoDeHilo_c,'')
def ColorDeHilo = nvl(ColorDeHilo_c,'')
def bucket = nvl(Bucket_c,'')
def CodigoPostal = nvl(CodigoPostal_c,'');
def contacto = '';
if(tipoCliente == 'PERSON'){
contacto = AccountName;
if(contacto == null || contacto ==''){
errorList.add('Cliente.')
errorCount+=1
}

def telefonos = Person?.Phone;


while (telefonos.hasNext()){
def telefono = telefonos.next();
def telefonos_c = [:]
def TipoTel = telefono.PhoneType;
def operadora = Person?.OperadoraDeTelefonoPrincipal_c;
if(TipoTel == 'MOBILE'){
if (operadora == null ||operadora == ''){
errorList.add('Operadora de telefono,debe elegirse desde el cliente.')
errorCount+=1
}}
countT+=1

}
tipoDeIdentificacion = nvl(Person?.TipoDocumento_c,'');
numeroDeIdentificacion = nvl(Person?.NumeroDeDocumento_c,'');
genero = nvl(Person?.Gender,'');
fechaDeNacimiento = nvl(Person?.DateOfBirth,'');
estadoCivil = nvl( Person?.MaritalStatus,'');

}
else{
contacto = ContactName;
if(contacto == null || contacto ==''){
errorList.add('Contacto principal.')
errorCount+=1
}

def telefonos = PrimaryContactPerson?.Phone;


while (telefonos.hasNext()){
def telefono = telefonos.next();
def telefonos_c = [:]
def TipoTel = telefono.PhoneType;
def operadora = PrimaryContactPerson?.OperadoraDeTelefonoPrincipal_c;

if(TipoTel == 'MOBILE'){
if (operadora == null ||operadora == ''){
errorList.add('Operadora de telefono,debe elegirse desde el cliente.')
errorCount+=1
}}
countT+=1
}
tipoDeIdentificacion = nvl(PrimaryContactPerson?.TipoDocumento_c,'');
numeroDeIdentificacion = nvl(PrimaryContactPerson?.NumeroDeDocumento_c,'');
genero = nvl(PrimaryContactPerson?.Gender,'');
fechaDeNacimiento = nvl(PrimaryContactPerson?.DateOfBirth,'');
estadoCivil = nvl( PrimaryContactPerson?.MaritalStatus,'');
}

if(tipoDeIdentificacion == null || tipoDeIdentificacion ==''){


errorList.add('Tipo de Identificación.')
errorCount+=1
}
if(numeroDeIdentificacion== null || numeroDeIdentificacion ==''){
errorList.add('Número de Identificación.')
errorCount+=1
}
if(genero== null || genero ==''){
errorList.add('Genero, debe elegirse desde el cliente.')
errorCount+=1
}
if(fechaDeNacimiento== null || fechaDeNacimiento ==''){
errorList.add('fecha de Nacimiento, debe elegirse desde el cliente.')
errorCount+=1
}
if(estadoCivil== null || estadoCivil ==''){
errorList.add('Estado Civil, debe elegirse desde el cliente.')
errorCount+=1
}

if(canal == null || canal ==''){


errorList.add('Canal.')
errorCount+=1
}
if(Ejecutivo == null || Ejecutivo ==''){
errorList.add('Ejecutivo.')
errorCount+=1
}
if(sucursal == null || sucursal ==''){
errorList.add('Sucursal.')
errorCount+=1
}
if(FormaDePago == null || FormaDePago ==''){
errorList.add('(Puntonet) Forma de pago.')
errorCount+=1
}
if(UltimaMilla == null || UltimaMilla ==''){
errorList.add('Ultima milla.')
errorCount+=1
}
if(plan == null || plan ==''){
errorList.add('Plan.')
errorCount+=1
}
if(AnchoDeBanda == null || AnchoDeBanda ==''){
errorList.add('Ancho de banda.')
errorCount+=1
}

if(tipoDeServicio == null || tipoDeServicio ==''){


errorList.add('Tipo de servicio.')
errorCount+=1
}else{
if(tipoDeServicio == 'wifi'){
if(NodoWifi == null || NodoWifi ==''){
errorList.add('Nodo wifi.')
errorCount+=1
}
if(ipRadioWifi == null || ipRadioWifi ==''){
errorList.add('IP radio wifi.')
errorCount+=1
}
}else{
if(OLT == null || OLT ==''){
errorList.add('OLT.')
errorCount+=1
}
if(splitter == null || splitter ==''){
errorList.add('splitter.')
errorCount+=1
}
if(GrupoDeHilo == null || GrupoDeHilo ==''){
errorList.add('Grupo de hilo.')
errorCount+=1
}
if(ColorDeHilo == null || ColorDeHilo ==''){
errorList.add('Color de hilo.')
errorCount+=1
}
if(bucket == null || bucket ==''){
errorList.add('Bucket.')
errorCount+=1
}
if(CodigoPostal == null || CodigoPostal ==''){
errorList.add('Codigo Postal.')
errorCount+=1
}

}
}
def errorMessage= 'Campo requerido: '
for(error in errorList){
errorMessage+=error
}

return errorMessage
(CMV o MMV) def metodoVentaId=GetSalesMethod(claveMetodoVentas)
(1 a 6) def etapaVentasId=GetSalesStageId(claveMetodoVentas+'E'+numeroEtapaVentas)
return SalesStageId==etapaVentasId
def TipoIdentificacion = TipoDeIdentificacion_c;
def NumeroDocumento = NumeroDeDocumento_c;
Organization?.CrearPersonaJuridicaNetplus()

def item = ChildRevenue;


def cont = 0;
def descuento = 0.00;
def porc = 0.00;
def totalItem=0.00;
def total=0.0;
def instalacion=0.0
def moc=nvl(AreaComercial_c,'CORPORATIVO')
if(moc=='MASIVO'){
while (item.hasNext()) {
cont=cont+1;
def revLine=item.next()
totalItem=totalItem+(nvl(revLine.RevnAmount,0 as BigDecimal));
descuento=descuento+nvl(revLine.Descuento_c,0.00);
instalacion+=nvl(revLine.ValorDeInstalacion_c, 0 as BigDecimal)
}
setAttribute('InstalacionBruta_c',instalacion.setScale(2,BigDecimal.ROUND_HALF_UP))
if(totalItem>=0){
def re= nvl(Revenue,0.0)
def BigDecimal totalItem2 =new BigDecimal(""+totalItem)
setAttribute('TamanioOportunidad_c',adf.util.montoTemporalidad(moc,totalItem2 as Double,Tipo_c=='PROYECTO'))
}
}
else if(moc=='CORPORATIVO'){
while (item.hasNext()) {
cont=cont+1;
def revLine=item.next()
totalItem=totalItem+(nvl(revLine.RevnAmount,0 as BigDecimal));
descuento=descuento+nvl(revLine.Descuento_c,0.00);
instalacion+=nvl(revLine.ValorDeInstalacion_c, 0 as BigDecimal)
}
//setAttribute('InstalacionBruta_c',instalacion.setScale(2,BigDecimal.ROUND_HALF_UP))
if(totalItem>=0){
def re= nvl(Revenue,0.0)
setAttribute('TamanioOportunidad_c',adf.util.montoTemporalidad(moc,totalItem as Double,Tipo_c=='PROYECTO'))
}
}
def clienteId=nvl(TargetPartyId, 0 as Long)
if(clienteId!=0){
def cliente
def cuenta=Organization
def contacto=Person
def tipoCliente=''
def viewName=''
if(Person!=null){
tipoCliente='PERSON'
cliente=Person
}
else if(Organization!=null){
tipoCliente='ORGANIZATION'
cliente=Organization
}
if(nvl(cliente?.PartyId,0 as Long)==0 && tipoCliente!=''){
if(tipoCliente=='PERSON'){
def clientes=newView('PersonProfile')
def clientec=newViewCriteria(clientes)
def clienter=clientec.createRow()
def clientei=clienter.ensureCriteriaItem('PartyId')
clientei.setOperator('=')
clientei.setValue(clienteId)
clientec.insertRow(clienter)
clientes.appendViewCriteria(clientec)
clientes.executeQuery()
while(clientes.hasNext()){
cliente=clientes.next()
contacto=cliente
}
}
else if(tipoCliente=='ORGANIZATION'){
def clientes=newView('OrganizationProfile')
def clientec=newViewCriteria(clientes)
def clienter=clientec.createRow()
def clientei=clienter.ensureCriteriaItem('PartyId')
clientei.setOperator('=')
clientei.setValue(clienteId)
clientec.insertRow(clienter)
clientes.appendViewCriteria(clientec)
clientes.executeQuery()
while(clientes.hasNext()){
cliente=clientes.next()
cuenta=cliente
}
}
}
getNumeroDocumento()
def codigoNetplus=nvl(cliente.CodigoNetPlus_c,'')
if(codigoNetplus!=''){
setAttribute('EnviaCliente_c','Y')
}
setAttribute('CodigoNetplusDelCliente_c',codigoNetplus)

if(cliente.SalesProfileType=='ZCA_PROSPECT'){
setAttribute('PrimeraVenta_c','Y')
if(nvl(OportunidadAbiertaContabilizada_c,'N')=='N'){
if(EstadoDeTemporalidad_c=='ACTIVA'){
cliente.setAttribute('OportunidadesAbiertas_c',nvl(cliente.OportunidadesAbiertas_c,0 as BigDecimal) + 1)
}
setAttribute('OportunidadAbiertaContabilizada_c','Y')
}
}
if(tipoCliente=='ORGANIZATION'){
setAttribute('ActividadEconomica_Id_c',cuenta.ActividadEconomica_Id_c)
setAttribute('NombreCatalogoCIIUDin_Id_c',cuenta.NombreCatalogoCIIUDin_Id_c)
setAttribute('SectorCIIU_c',cuenta.SectorCIIU_c)

}
else if(tipoCliente=='PERSON'){
if(AreaComercial_c=='MASIVO' && nvl(IDTicketContratoNetplus_c,'')==''){
crearDireccionesDeinstalacion()
}
}
}
if(nvl(OwnerResourcePartyId,0 as Long)!=0){
def r=OpportunityOwnerResource
if(nvl(r?.PartyId,0 as Long)==0){
def rs=newView('Resource')
def rc=newViewCriteria(rs)
def rr=rc.createRow()
def ri=rr.ensureCriteriaItem('PartyId')
ri.setOperator('=')
ri.setValue(OwnerResourcePartyId)
rc.insertRow(rr)
rs.appendViewCriteria(rc)
rs.executeQuery()
while(rs.hasNext()){
r=rs.next()
}
}
setAttribute('SucursalDeFacturacion_c',r.SucursalesDeFacturacion_c)
if(nvl(SucursalDeVenta_c,'')=='')
setAttribute('SucursalDeVenta_c',r.SucursalesDeFacturacion_c)
}
o el def team=OpportunityResource
no existe. Bprra def insert=true
rtyIdRemove si while(team.hasNext()){
def member=team.next()
if(member.ResourceId==partyIdInsert){
member.setAttribute('AccessLevelCode','300')
insert=false
}
if(member.ResourceId==partyIdRemove&&member.ResourceId!=OwnerResourcePartyId){
member.remove()
}
}
if(insert&&partyIdInsert!=0){
def member=team.createRow()
member.setAttribute('ResourceId',partyIdInsert)
member.setAttribute('AccessLevelCode','300')
team.insertRow(member)
}
def oldvalor= getOriginalAttributeValue('SalesStageId')
def oldvalorNom= getOriginalAttributeValue('SalesStage')
if(isAttributeChanged('SalesStageId')&& oldvalor!=SalesStageId){
//EN ESTA SECCIÓN DEBES BUSCAR LAS ETAPAS HISTORICAS Y PONERLES A TODAS QUE FINALIZARON EL DIA DE HOY
def historicos = newView('HistoricoDeEtapaDeVenta_c');
def act = newViewCriteria(historicos);
def row = act.createRow();
def vrc = row.ensureCriteriaItem('Oportunidad_Id_c');
vrc.setOperator('=');
vrc.setValue(OptyId);
/* def vri=row.ensureCriteriaItem('FechaFinDeEtapa_c')
vri.setOperator('ISBLANK')
*/
act.insertRow(row);
historicos.appendViewCriteria(act);
historicos.executeQuery();

while (historicos.hasNext()) {
def curRow = historicos.next()
curRow.setAttribute('FechaFinDeEtapa_c',today());
}
// A PARTIR DE ESTA SECCION HAY QUE CREAR EL HISTORICO NUEVO
def crear = historicos.createRow();
crear.setAttribute('Oportunidad_c', OptyNumber);
crear.setAttribute('RecordName', oldvalorNom);
//crear.setAttribute('FechaInicioDeEtapa_c', today());
historicos.insertRow(crear)
}
if(AreaComercial_c=='CORPORATIVO'){
getAssetsCorporativo()
}
else{
def assets=newView('AssetVO')
def assetc=newViewCriteria(assets)
def assetr=assetc.createRow()
def asseti=assetr.ensureCriteriaItem('IdentificadorDeOportunidad_Id_c')
asseti.setOperator('=')
asseti.setValue(OptyId)
assetc.insertRow(assetr)
assets.appendViewCriteria(assetc)
assets.executeQuery()
def totales=0
def instalados=0
def noConcretados=0
def otros=0
def importeNeto=0 as BigDecimal
def importeBruto=0 as BigDecimal
//ValorDeInstalacion_c
def instalacionNeta=0
def assList=[]
def serviciosActivos=true
def count=0

def noSale=false
while(assets.hasNext()){
def asset=assets.next()
def statusServicio=nvl(asset.EstatusServicio_c,'')
def importe=nvl(asset.AssetAmount,0 as BigDecimal)
def instalacion=nvl(asset.ValorDeInstalacion_c,0 as BigDecimal)
def assMap=[:]
assMap.put('statusServicio',statusServicio)
assMap.put('importe',importe)
assMap.put('instalados',instalados)
asset.getDatosOportunidad()
if(statusServicio=='ACTIVO'){
instalados+=1
importeNeto+=importe
instalacionNeta+=instalacion
importeBruto+=importe
}
else{
serviciosActivos=false
if(statusServicio=='NO_CONCRETADA'){
noSale=true
noConcretados+=1
importeBruto+=importe
}
else{
otros+=1
importeBruto+=importe
}
}
totales+=1
assList.add(assMap)
}
if(totales>0){
setAttribute('ImporteNeto_c',importeNeto)
setAttribute('InstalacionNeta_c',instalacionNeta)
if(instalados>0){
setAttribute('StatusCode','WON')
setAttribute('EffectiveDate',today())
def motivo=''
def codigoEtapa=''
if(AreaComercial_c=='MASIVO'){
motivo='SI_INSTALACION'
codigoEtapa='MMVE5'
}
else{
motivo='ADJUDICADA'
codigoEtapa='CMVE6'
}
setAttribute('MotivoDeGananciaperdida_c',motivo)
setAttribute('FechaVentaNeta_c',today())
setAttribute('SalesStageId',GetSalesStageId(codigoEtapa))
def cliente
if(Person!=null){
cliente=Person
}
else{
cliente=Organization
}
if(cliente!=null){
cliente.setAttribute('SalesProfileType','ZCA_CUSTOMER')
}

}
else{
if(noConcretados==totales){
setAttribute('EffectiveDate',today())
setAttribute('StatusCode','NO_SALE')
setAttribute('MotivoDeGananciaperdida_c','INSTALACION_NO_CONCRETA')
}
}
}/*
def map=[:]
map.put('totales',totales)
map.put('noConcretados',noConcretados)
map.put('instalados',instalados)
map.put('otros',otros)
map.put('importeBruto',importeBruto)
map.put('importeNeto',importeNeto)
map.put('assList',assList)
println('mapGetAssets:'+map) */
}
def prods=newView('Product')
def prodc=newViewCriteria(prods)
def prodr=prodc.createRow()
def prodi=prodr.ensureCriteriaItem('Name')
prodi.setOperator('=')
prodi.setValue(itemName)
prodc.insertRow(prodr)
prods.appendViewCriteria(prodc)
prods.executeQuery()
def itemId=0
def msgMap=[:]
msgMap.put('itemName',itemName)
while(prods.hasNext()&&itemId!=0){
def prod=prods.next()
msgMap.put('msg1','Entre')
itemId=nvl(prod.InventoryItemId,0 as Long)
}
println(''+msgMap)
return itemId as Long
def latitud=nvl(CoordenadaLatitud_c,'')
def longitud = nvl(CoordenadaLongitud_c,'')
def latitudValida= latitud =~ /^00([0-5])°([0-5]0|[0-5][1-9])\'([0-5]0.[0-9]*|[0-5][1-9].[0-9]*)/ || latitud==''
def longitudValida= longitud =~ /^^0(7[5-9]|[8-9]0|8[0-9]|9[1-2]|95)°([0-5]0|[0-5][0-9])\'([0-5]0.[0-9]|[0-5][0-9].[0-9]*)/ || lon
if(!longitudValida || !latitudValida){
def count=0
def msg = '(BDS) La '
if(!longitudValida){
msg+= 'Longitud '
count+=1
}
if(!latitudValida){
if(count==1)
msg+= 'y la '
msg+= 'Latitud '
count+=1
}
if(count==1){
msg+='no tiene '
}
else{
msg+='no tienen '
}
msg+="un formato correcto o no se encuentran dentro del territorio de Ecuador."
throw new oracle.jbo.ValidationException(msg)
}
def moc=nvl(AreaComercial_c,'')
def canal =nvl(CanalObjC_Id_c,0 as BigDecimal)
def origen=nvl(Origen_Id_c,0 as BigDecimal)

return moc!='' && canal!=0 && origen!=0 || true


if(filaValida()){
def map=[:]
def usuarioGenericoId
def moc=nvl(AreaComercial_c,'')
if(moc=='MASIVO'){
usuarioGenericoId=adf.util.usuarioGenericoMasivo()
}
else if(moc=='CORPORATIVO'){
usuarioGenericoId=adf.util.usuarioGenericoCorporativo()
}
def tipoCliente=''
def cliente
if(Person!=null){
tipoCliente='PERSON'
cliente=Person
}
else if(Organization!=null){
tipoCliente='ORGANIZATION'
cliente=Organization
}
if(OwnerResourcePartyId as Long ==usuarioGenericoId ){
setAttribute('EstadoDeTemporalidad_c','DESASIGNADO')
}
if(cliente!=null &&OwnerResourcePartyId!=usuarioGenericoId ){
map.put('optyName',Name)
map.put('OptyNumber',OptyNumber)
map.put('ownerId',usuarioGenericoId)
if(AreaComercial_c==null)
setAttribute('AreaComercial_c','CORPORATIVO')
if(AreaComercial_c=='CORPORATIVO'){
setAttribute('StatusCode','NO_SALE')
setAttribute('MotivoDeGananciaperdida_c','TEMPORALIDAD')
setAttribute('ReasonWonLostCode','TEMPORALIDAD')
cliente.setAttribute('OverrideReassignment_c','Y')
def optysAbiertasNew=(nvl(cliente.OportunidadesAbiertas_c,0 as BigDecimal) as Long ) -1
if(optysAbiertasNew<0){
optysAbiertasNew=0
}
if(cliente.OportunidadesAbiertas_c==1 && nvl(cliente.LeadsAbiertos_c, 0 as BigDecimal)==0){
cliente.setAttribute('OwnerPartyId',usuarioGenericoId)

map.put('customerId',TargetPartyId)
map.put('tipoCliente',CustPartyType)
map.put('PartyUniqueName',cliente.PartyUniqueName)
return [map]
}
else{
setAttribute('OwnerResourcePartyId',usuarioGenericoId)
return []
}
cliente.setAttribute('OportunidadesAbiertas_c',optysAbiertasNew)
}
}
if(AreaComercial_c=='MASIVO' &&OwnerResourcePartyId!=usuarioGenericoId){
setAttribute('OwnerResourcePartyId',usuarioGenericoId)
setAttribute('OverrideReassignment_c','Y')
}
}
return []
def cliente
def tipoActual
if(Person!=null){
cliente=Person
tipoActual='PERSON'
}
else if(Organization!=null){
cliente=Organization
tipoActual='ORGANIZATION'
}

if(OverrideReassignment_c!='Y' && AreaComercial_c!='MASIVO'){


adf.util.reasignarCliente(tipoActual,TargetPartyId,OwnerResourcePartyId,OptyId)
}
else{
setAttribute('OverrideReassignment_c','N')
}
ine(itemId,mont def revs=ChildRevenue
def existeItem=false
println('itemId:'+itemId)
while(revs.hasNext()&&!existeItem){
def rev=revs.next()
rev.remove()
}
if(nvl(itemId,0 as Long)!=0){
def rev=revs.createRow()
rev.setAttribute('ProductType','Item')
rev.setAttribute('ResourcePartyId',OwnerResourcePartyId)
rev.setAttribute('InventoryItemId',itemId)
rev.setAttribute('InventoryOrgId',300000001746628)
rev.setAttribute('Quantity',1)
rev.setAttribute('StatusCode',StatusCode)
rev.setAttribute('CostoDelPlan_c',monto)
rev.setAttribute('UnitPrice',monto)
rev.setAttribute('RevnAmount',monto)
revs.insertRow(rev)
}
if(adf.util.usuarioAdministrador() || adf.util.usuarioAdministradorTemporalidad()){
return true
}
def cliente
def tipoCliente
if(Organization!=null){
cliente=Organization
tipoCliente='ORGANIZATION'
}
else if(Person!=null){
cliente=Person
tipoCliente='PERSON'
}
def genericoMasivo=adf.util.usuarioGenericoMasivo() as Long
def genericoCorporativo=adf.util.usuarioGenericoCorporativo() as Long
def optyOwnerId=nvl(OwnerResourcePartyId,0 as Long)

if(cliente!=null && optyOwnerId!=genericoMasivo && optyOwnerId != genericoCorporativo){


def ownerIdCliente=nvl(cliente.OwnerPartyId, 0 as Long)
if(ownerIdCliente==0){
def partys
def clienteId=nvl(TargetPartyId,0 as Long)
if(tipoCliente=='ORGANIZATION'){
partys=newView('OrganizationProfile')
}
else if(tipoCliente=='PERSON'){
partys=newView('PersonProfile')
}
if(clienteId!=0){
def partyc=newViewCriteria(partys)
def partyr=partyc.createRow()
def partyi=partyr.ensureCriteriaItem('PartyId')
partyi.setOperator('=')
partyi.setValue(clienteId)
partyc.insertRow(partyr)
partys.appendViewCriteria(partyc)
partys.executeQuery()
while(partys.hasNext()){
def party=partys.next()
ownerIdCliente=party.OwnerPartyId
}
}

}
if(ownerIdCliente!=optyOwnerId && ownerIdCliente!=genericoMasivo && ownerIdCliente!=genericoCorporativo){
throw new oracle.jbo.ValidationException('El Cliente ' + cliente.PartyUniqueName + ' le pertenece al ejecutivo ' + cliente.O
posible
} tomar esta oportunidad')
}
def currentUsername=adf.context.getSecurityContext()?.getUserProfile()?.getUserID()
def resources=newView('Resource')
def resourcec=newViewCriteria(resources)
def resourcer=resourcec.createRow()
def resourcei=resourcer.ensureCriteriaItem('Username')
resourcei.setOperator('=')
resourcei.setValue(currentUsername)
resourcec.insertRow(resourcer)
resources.appendViewCriteria(resourcec)
resources.executeQuery()
def currentUserId
while(resources.hasNext()&&currentUserId==null){
def resource=resources.next()
currentUserId=resource.PartyId
}
if(isAttributeChanged('OwnerResourcePartyId') || getPrimaryRowState().isNew()){
def prevOwner=getOriginalAttributeValue('OwnerResourcePartyId') as Long
if(OwnerResourcePartyId!=currentUserId){
throw new oracle.jbo.ValidationException('Sólo los managers pueden asignar una oportunidad a otros usuarios')
}
def usuarioDesasignadoId=nvl(UsuarioDesasignado_Obj_c?.PartyId,0 as Long)
def tipoUsuario=adf.util.usuarioMasivoCorporativo()
if((prevOwner==genericoMasivo && tipoUsuario=='MASIVO' )||(prevOwner==genericoCorporativo && tipoUsuario=='CO
def fechaNull=new Date(01,01,50)
def fechaAsignacion=nvl(FechaDeAsignacion_c,fechaNull)
if(usuarioDesasignadoId!=currentUserId || fechaAsignacion+15<today()){
return true
}
else{
throw new oracle.jbo.ValidationException('Este usuario no puede tomar la oportunidad porque le fue desasignada en el
15}días desde la fecha de asignación')
}
else{
if(getPrimaryRowState().isNew())
return true
throw new oracle.jbo.ValidationException('No es posible tomar la oportunidad porque está siendo gestionada por otro e
}
}
else{
if(OwnerResourcePartyId!=currentUserId){
def team=OpportunityResource
def partOfTeam=false
while(team.hasNext()&&!partOfTeam){
def member=team.next()
if(member.PartyId==currentUserId && !member.getPrimaryRowState().isNew()){
partOfTeam=true
}
}
if(!partOfTeam){
if(!adf.util.usuarioAdministradorTemporalidad()){
throw new oracle.jbo.ValidationException('No puedes modificar esta oportunidad porque no eres parte del equipo de
}
}
}
}
return true
def moc=nvl(AreaComercial_c,'')
def canalId=nvl(CanalObjC_Id_c,0 as BigDecimal)
def origenId=nvl(Origen_Id_c,0 as BigDecimal)
if(moc==''){
setAttribute('AreaComercial_c','CORPORATIVO')
}
if(canalId==0 && origenId==0){
// setAttribute('CanalObjC_Id_c',300000033134896)
//setAttribute('Origen_Id_c',300000033134897)
}
getDatosCliente()
getDatosOwner()
getAssets()
importarRevenue()
def objects= []
objects.add('FormaDePago_c')

for(ob in objects){
if(!objects.contains(ob))
throw new oracle.jbo.ValidationException('Esta función está limitada a las vistas dentro de esta lista:' +objects)
adf.util.deleteView(ob as String,OptyId)
}
def objects= []
objects.add('PromocionesYServicios_c')
objects.add('PromocionDescuento_c')
objects.add('Detalle_c')
objects.add('Diferir_c')
objects.add('Descuento_c')
//objects.add('ChildRevenue')

for(ob in objects){
if(!objects.contains(ob)){
throw new oracle.jbo.ValidationException('Esta función está limitada a las vistas dentro de esta lista:' +objects)
}else{
adf.util.deleteView(ob as String,OptyId)
}

}
def revs=ChildRevenue
while (revs.hasNext()){
def rev=revs.next()
rev.remove()
}

setAttribute('Plan_c',null)
setAttribute('UltimaMilla_c',null)
setAttribute('NodoWifi_c',null)
setAttribute('IPRadioWifi_c',null)
setAttribute('AnchoDeBanda_c',null)
setAttribute('OLT_c',null)
setAttribute('Splitter_c',null)
setAttribute('GrupoDeHilo_c',null)
setAttribute('ColorDeHilo_c',null)
setAttribute('Bucket_c',null)
setAttribute('CodigoPostal_c',null)

def objects= []
objects.add('Plan_c')
objects.add('AnchoDeBanda_c')
objects.add('IPRadioWifi_c')
objects.add('NodoWifi_c')
objects.add('UltimaMillaNetplus_c')
objects.add('OLT_c')
objects.add('Splitter_c')
objects.add('GrupoDeHilo_c')
objects.add('ColorDeHilo_c')
objects.add('Bucket_c')
objects.add('CodigoPostal_c')
//objects.add('ChildRevenue')

for(ob in objects){
if(!objects.contains(ob)){
throw new oracle.jbo.ValidationException('Esta función está limitada a las vistas dentro de esta lista:' +objects)
}else{
println('eliminando:'+ ob)
adf.util.deleteView(ob,OptyId)
}
}
def revs=ChildRevenue
while (revs.hasNext()){
def rev=revs.next()
rev.remove()
}

def tipoPago=''
def mapRecords=newView('MapeoFormaTipoPago_c')
def mapRecordc=newViewCriteria(mapRecords)
def mapRecordr=mapRecordc.createRow()
def mapRecordi=mapRecordr.ensureCriteriaItem('FormaDePago_c')
mapRecordi.setOperator('=')
mapRecordi.setValue(formaPago)
mapRecordc.insertRow(mapRecordr)
mapRecords.appendViewCriteria(mapRecordc)
mapRecords.executeQuery()
println('Ingresando a vista')
while(mapRecords.hasNext()){
println('Ingresé, pero no ejecuté el next()')
def mapRecord=mapRecords.next()
println('Registro encontrado: ' + mapRecord?.TipoFormaDePago_c +','+ mapRecord?.getSelectedListDisplayValue('TipoFor
return mapRecord?.TipoFormaDePago_c
}
println('No encontré nada')
return ''
/*
def tipoPago=''
if(formaPago=='1'){
tipoPago= '1'
}
else if(formaPago=='2'){
tipoPago= '4'
}
else if(formaPago=='3'){
tipoPago= '4'
}
else if(formaPago=='4'){
tipoPago= '2'
}
else if(formaPago=='6'){
tipoPago= '4'
}
else if(formaPago=='8'){
tipoPago= '1'
}
else if(formaPago=='10'){
tipoPago= '1'
}
else if(formaPago=='12'){
tipoPago= '2'
}
else if(formaPago=='13'){
tipoPago= '2'
}
else if(formaPago=='15'){
tipoPago= '1'
}
else if(formaPago=='20'){
tipoPago= '1'
}
else if(formaPago=='21'){
tipoPago= '2'
}
else if(formaPago=='27'){
tipoPago= '4'
}
else if(formaPago=='31'){
tipoPago= '2'
}
else if(formaPago=='32'){
tipoPago= '1'
}
else if(formaPago=='51'){
tipoPago= '2'
}
else if(formaPago=='53'){
tipoPago= '0'
}
else if(formaPago=='58'){
tipoPago= '0'
}
else if(formaPago=='59'){
tipoPago= '0'
}
else if(formaPago=='66'){
tipoPago= '1'
}
else if(formaPago=='67'){
tipoPago= '2'
}
else if(formaPago=='69'){
tipoPago= '1'
}
else if(formaPago=='72'){
tipoPago= '1'
}
else if(formaPago=='74'){
tipoPago= '1'
}
else if(formaPago=='76'){
tipoPago= '4'
}
else if(formaPago=='78'){
tipoPago= '3'
}
else if(formaPago=='79'){
tipoPago= '0'
}
else if(formaPago=='82'){
tipoPago= '0'
}
else if(formaPago=='86'){
tipoPago= '0'
}
else if(formaPago=='90'){
tipoPago= '4'
}
else if(formaPago=='95'){
tipoPago= '0'
}
else if(formaPago=='96'){
tipoPago= '3'
}
else if(formaPago=='97'){
tipoPago= '3'
}
else if(formaPago=='98'){
tipoPago= '3'
}
else if(formaPago=='99'){
tipoPago= '3'
}
else if(formaPago=='100'){
tipoPago= '3'
}
else if(formaPago=='101'){
tipoPago= '2'
}
else if(formaPago=='102'){
tipoPago= '0'
}
else if(formaPago=='103'){
tipoPago= '0'
}
else if(formaPago=='106'){
tipoPago= '0'
}
else if(formaPago=='111'){
tipoPago= '3'
}
else if(formaPago=='113'){
tipoPago= '0'
}
else if(formaPago=='114'){
tipoPago= '0'
}
else if(formaPago=='115'){
tipoPago= '0'
}
else if(formaPago=='116'){
tipoPago= '0'
}
else if(formaPago=='117'){
tipoPago= '4'
}

else if(formaPago=='119'){
tipoPago= '3'
}

else if(formaPago=='120'){
tipoPago= '1'
}

else if(formaPago=='121'){
tipoPago= '1'
}
else if(formaPago=='122'){
tipoPago= '3'
}
else if(formaPago=='123'){
tipoPago= '3'
}
else if(formaPago=='124'){
tipoPago= '3'
}
else if(formaPago=='125'){
tipoPago= '3'
}
else if(formaPago=='126'){
tipoPago= '3'
}

else if(formaPago=='127'){
tipoPago= '1'
}

else if(formaPago=='128'){
tipoPago= '1'
}

else if(formaPago=='129'){
tipoPago= '3'
}

else if(formaPago=='130'){
tipoPago= '3'
}
else if(formaPago=='131'){
tipoPago= '3'
}
else if(formaPago=='132'){
tipoPago= '3'
}
else if(formaPago=='133'){
tipoPago= '3'
}

else if(formaPago=='134'){
tipoPago= '3'
}
else if(formaPago=='135'){
tipoPago= '3'
}
else if(formaPago=='136'){
tipoPago= '2'
}
else if(formaPago=='137'){
tipoPago= '2'
}
else if(formaPago=='138'){
tipoPago= '2'
}
else if(formaPago=='139'){
tipoPago= '2'
}
else if(formaPago=='142'){
tipoPago= '0'
}
else if(formaPago=='143'){
tipoPago= '0'
}
return tipoPago
*/
nsultaScore(nu def historicos= newView('HistoricoConsultaScore_c')
o,tipoDocument def historico= historicos.createRow()
def contadorConsultaScore=nvl(ContadorConsultaScore_c,0 as BigDecimal)
def tipoConsulta = ''
if(contadorConsultaScore==0){
tipoConsulta='1'
}else{
tipoConsulta='N'
}
def contactoId
if(Organization!=null){
contactoId=KeyContactId
}
else{
contactoId=TargetPartyId
}
historico.setAttribute('Segmentacion_c',Segmentacion_c)
historico.setAttribute('ClienteCastigado_c',ClienteCastigado_c)
historico.setAttribute('ResultadoDelModelo_c',ResultadoDelModelo_c)
historico.setAttribute('RegistraTCActiva_c',RegistraTCActiva_c)
historico.setAttribute('ClienteConDeuda_c',ClienteConDeuda_c)
historico.setAttribute('CapacidadDePago_c',CapacidadPagoNum_c)
historico.setAttribute('Oportunidad_Id_c',OptyId)
historico.setAttribute('Contacto_Id_c',contactoId)
historico.setAttribute('TipoConsulta_c',tipoConsulta)
historico.setAttribute('ConsultarScore_c','N')
historico.setAttribute('RecordName',numeroDocumento)
historico.setAttribute('TipoDeIdentificacion_c',tipoDocumento)
historico.setAttribute('OraZcxOwner_Id_c',OpportunityOwnerResource.ResourceProfileId)
setAttribute('ContadorConsultaScore_c',contadorConsultaScore+1)
println('insertando score en oportunidad '+historico.Oportunidad_Id_c)
setAttribute('SubEstado_c','CONTRATO_DEVUELTO_CLIENTE')

def plan=Plan_Obj_c
def ab=AnchoDeBanda_Obj_c
if(plan!=null && ab != null){
def itemId=nvl(plan?.InventoryItemId_c,0 as BigDecimal) as Long
def monto=nvl(ab?.PrecioBruto_c, 0 as BigDecimal) as Double
upsertRevenueLine(itemId, monto)
}
def bloqueaConversion=false
def opAbierta= StatusCode=='OPEN'
def enProcesoVentaMasivo= AreaComercial_c=='MASIVO'&& (SalesStageId== GetSalesStageId('MMVE1') || SalesStageId=
GetSalesStageId('MMVE2') || SalesStageId==
def enProcesoVentaCorporativo= GetSalesStageId('MMVE3'))
AreaComercial_c=='CORPORATIVO'
def conUsuarioGenerico= OwnerResourcePartyId== adf.util.usuarioGenericoMasivo() || OwnerResourcePartyId==
adf.util.usuarioGenericoCorporativo()
bloqueaConversion= !conUsuarioGenerico && enProcesoVentaMasivo && opAbierta
return bloqueaConversion
if(TargetPartyId!=null){
def partyId=TargetPartyId
def party
def tipoCliente
def nombreCampo
def ruc=''
def cedula=''
def pasaporte=''
def rucEx=''
def codigoNetplus=''
if(Person!=null){
party=Person
tipoCliente='PERSON'
nombreCampo='Contacto_Id_c'
codigoNetplus=nvl(Person.CodigoNetPlus_c,'').trim()
ruc=nvl(Person.JgzzFiscalCode,'')
cedula=nvl(Person.NumeroDeCedula_c,'')
pasaporte=nvl(Person.NumeroDePasaporte_c,'')

}
else{
party=Organization
tipoCliente='ORGANIZATION'
nombreCampo='Cuenta_Id_c'
codigoNetplus=nvl(Organization.CodigoNetPlus_c,'').trim()
ruc=nvl(Organization.JgzzFiscalCode,'')
pasaporte=nvl(Organization.Pasaporte_c,'')
rucEx=nvl(Organization.RUCExterno_c,'')
}
def customerName=party.PartyUniqueName
def documentosListados=0
def documentosListadosList=[]
def nroDocList=[]
if(ruc!=''){
documentosListados+=1
nroDocList.add(ruc)
documentosListadosList.add('R')
}
if(pasaporte!=''){
documentosListados+=1
nroDocList.add(pasaporte)
documentosListadosList.add('P')
}
if(cedula!=''){
documentosListados+=1
nroDocList.add(cedula)
documentosListadosList.add('C')
}
if(rucEx!=''){
documentosListados+=1
nroDocList.add(rucEx)
documentosListadosList.add('RE')
}
def cliNets =newView('ClienteNetplus_c');
def cliNetc=newViewCriteria(cliNets)
def cliNetr=cliNetc.createRow()
def cliNeti=cliNetr.ensureCriteriaItem(nombreCampo)
cliNeti.setOperator('=')
cliNeti.setValue(TargetPartyId)
cliNetc.insertRow(cliNetr)
cliNets.appendViewCriteria(cliNetc)
cliNets.executeQuery()
def numDocList=[]
def tipoDocList=[]
def codigoNetplusList=[]
def matchList=[]
def index=0
def count=0
def idMatchNetplus=-1
def countMatch=0
def matchIndexList=[]
while(cliNets.hasNext()){
def cliNet=cliNets.next()
def curCodNetplus=nvl(cliNet.RecordName,'')
def nroDoc=nvl(cliNet.NumeroDeDocumento_c,'')
def tipoDoc=nvl(cliNet.TipoDeDocumento_c,'')
codigoNetplusList.add(curCodNetplus)
tipoDocList.add(tipoDoc)
numDocList.add(nroDoc)
def matchDoc=false
switch(tipoDoc){
case 'R':
if(ruc==nroDoc){
matchDoc=true
documentosListadosList.remove(tipoDoc)
numDocList.remove(nroDoc)
}
break;
case 'C':
if(cedula==nroDoc){
matchDoc=true
documentosListadosList.remove(tipoDoc)
numDocList.remove(nroDoc)
}
break;
case 'P':
if(pasaporte==nroDoc){
matchDoc=true
documentosListadosList.remove(tipoDoc)
numDocList.remove(nroDoc)
}
break;
case 'RE':
if(rucEx==nroDoc){
matchDoc=true
documentosListadosList.remove(tipoDoc)
numDocList.remove(nroDoc)
}
break;
default:
break;
}
if(matchDoc){
countMatch+=1
matchIndexList.add(index)
}
if(codigoNetplus==curCodNetplus){
idMatchNetplus=index
}
matchList.add(matchDoc)
index+=1
count+=1
}
def errorMsg =''
def createRowClienteNetplus=false
if(index>0){
if(countMatch!= count){
errorMsg='El cliente ' + customerName + 'presenta inconsistencias en su código de Netplus. Favor de ponerse en conta
del
} sistema'
else if(idMatchNetplus==-1){
if(documentosListados==countMatch+1){
createRowClienteNetplus=true
}
else{
errorMsg='El cliente ' + customerName + 'presenta inconsistencias en su código de Netplus. Favor de ponerse en co
administrador
} del sistema'
}
}
else{
if(documentosListados==1 && codigoNetplus!=''){
createRowClienteNetplus=true
}
}
if(createRowClienteNetplus ){
def cliNet=cliNets.createRow()
cliNet.setAttribute('TipoDeDocumento_c',documentosListadosList[0])
cliNet.setAttribute('NumeroDeDocumento_c',nroDocList[0])
cliNet.setAttribute('RecordName',party.CodigoNetPlus_c)
cliNet.setAttribute(nombreCampo,TargetPartyId)
cliNets.insertRow(cliNet)
}
}

def opLeads=newView('OpportunityLeadVO')
def opLeadc=newViewCriteria(opLeads)
def opLeadr=opLeadc.createRow()
def opLeadi=opLeadr.ensureCriteriaItem('OptyId')
opLeadi.setOperator('=')
opLeadi.setValue(OptyId)
opLeadc.insertRow(opLeadr)
opLeads.appendViewCriteria(opLeadc)
opLeads.executeQuery()
while(opLeads.hasNext()){
def opLead=opLeads.next()
def leads=newView('Lead')
def leadc=newViewCriteria(leads)
def leadr=leadc.createRow()
def leadi=leadr.ensureCriteriaItem('LeadNumber')
leadi.setOperator('=')
leadi.setValue(opLead.LeadNumber)
leadc.insertRow(leadr)
leads.appendViewCriteria(leadc)
leads.executeQuery()
println('LeadNumber:'+opLead.LeadNumber)
while(leads.hasNext()){
def lead=leads.next()
def contactoId
def cuentaId
def clienteId
def tipoCliente=lead.TipoCliente_c
if(tipoCliente=='PERSON'&&lead.CrearContacto_c=='Y'){
return true
}
if(tipoCliente=='ORGANIZATION'&&lead.CrearCliente_c=='Y'){
return true
}
}
}
return false
def assets=newView('AssetVO')
def assetc=newViewCriteria(assets)
def assetr=assetc.createRow()
def asseti=assetr.ensureCriteriaItem('IdentificadorDeOportunidad_Id_c')
asseti.setOperator('=')
asseti.setValue(OptyId)
assetc.insertRow(assetr)
assets.appendViewCriteria(assetc)
assets.executeQuery()
def totales=0
def instalados=0
def otros=0
//ValorDeInstalacion_c
def serviciosActivos=true
def count=0

def noSale=false
def revMap=[:]
def nullDate=new Date(1,1,1)
def minCloseDate=nullDate
while(assets.hasNext()){
def asset=assets.next()
def itemId=asset.InventoryItemId
def revDetails=[:]
if(!revMap.containsKey(itemId)){
revDetails.put('ImporteNeto',0)
revDetails.put('ImporteBruto',0)
revDetails.put('InstalacionNeta',0)
revDetails.put('InstalacionBruta',0)
revDetails.put('EnlacesNoConcretados',0)
revDetails.put('EnlacesTotales',0)
revDetails.put('EnlacesActivos',0)
revDetails.put('EnlacesNoConcretadosTemporales',0)
revDetails.put('EnlacesDesactivados',0)
revDetails.put('EnlacesIngresados',0)
revDetails.put('PrecioMensual',0)
}
else{
revDetails=revMap[itemId] as Map
}
def importeNeto=revDetails['ImporteNeto'] as BigDecimal
def importeBruto=revDetails['ImporteBruto'] as BigDecimal
def instalacionNeta=revDetails['InstalacionNeta'] as BigDecimal
def instalacionBruta=revDetails['InstalacionBruta'] as BigDecimal
def enlacesTotales=revDetails['EnlacesTotales'] as BigDecimal
def enlacesActivos=revDetails['EnlacesActivos'] as BigDecimal
def noConcretados=revDetails['EnlacesNoConcretados'] as BigDecimal
def precioMensual=revDetails['PrecioMensual'] as BigDecimal
def noConcretadosTemporales=revDetails['EnlacesNoConcretadosTemporales'] as BigDecimal
def desactivados=revDetails['EnlacesDesactivados'] as BigDecimal
def ingresados=revDetails['EnlacesIngresados'] as BigDecimal

def statusServicio=nvl(asset.EstatusServicio_c,'')
def importe=nvl(asset.AssetAmount,0 as BigDecimal)
def instalacion=nvl(asset.ValorDeInstalacion_c,0 as BigDecimal)
def assMap=[:]
assMap.put('statusServicio',statusServicio)
assMap.put('importe',importe)
assMap.put('instalados',instalados)
asset.getDatosOportunidad()
importeBruto+=importe
instalacionBruta+=instalacion
enlacesTotales+=1
if(statusServicio=='ACTIVO'){
enlacesActivos+=1
importeNeto+=importe
instalacionNeta+=instalacion
}
else if(statusServicio=='NO_CONCRETADA'){
noSale=true
noConcretados+=1
}
else if(statusServicio=='NO_CONCRETADA_TEMPORAL'){
noConcretadosTemporales+=1
}
else if(statusServicio=='INGRESADO'){
ingresados+=1
}
else if(statusServicio=='DESACTIVADO'||statusServicio=='DESACTIVADO_TEMPORAL'){
desactivados+=1
}
precioMensual=importeBruto
revDetails.put('ImporteNeto',importeNeto)
revDetails.put('ImporteBruto',importeBruto)
revDetails.put('InstalacionNeta',instalacionNeta)
revDetails.put('InstalacionBruta',instalacionBruta)
revDetails.put('EnlacesTotales',enlacesTotales)
revDetails.put('EnlacesActivos',enlacesActivos)
revDetails.put('EnlacesNoConcretados',noConcretados)
revDetails.put('PrecioMensual',precioMensual)
revDetails.put('EnlacesNoConcretadosTemporales',noConcretadosTemporales)
revDetails.put('EnlacesDesactivados',desactivados)
revDetails.put('EnlacesIngresados',ingresados)
revMap.put(itemId,revDetails)
}
def revs=ChildRevenue
def revMapTemp=revMap

def importeNetoTotal=0
def importeBrutoTotal=0
def instalacionNetaTotal=0
def instalacionBrutaTotal=0
def enlacesActivosTotales=0
def enlacesTotalesTotales=0
def noConcretadosTotales=0
while(revs.hasNext()){
def rev = revs.next()
def itemId=nvl(rev.InventoryItemId,0 as Long)
if(itemId!=0){
if(!revMap.containsKey(itemId) && revMap !=[:]){
rev.remove()
}
else if(revMap!=[:]){
def revDetails=revMap[itemId]
def importeNeto=revDetails['ImporteNeto'] as BigDecimal
def importeBruto=revDetails['ImporteBruto'] as BigDecimal
def instalacionNeta=revDetails['InstalacionNeta'] as BigDecimal
def instalacionBruta=revDetails['InstalacionBruta'] as BigDecimal
def enlacesTotales=revDetails['EnlacesTotales'] as BigDecimal
def enlacesActivos=revDetails['EnlacesActivos'] as BigDecimal
def noConcretados=revDetails['EnlacesNoConcretados'] as BigDecimal
def precioMensual=revDetails['PrecioMensual'] as BigDecimal
def noConcretadosTemporales=revDetails['EnlacesNoConcretadosTemporales'] as BigDecimal
def desactivados=revDetails['EnlacesDesactivados'] as BigDecimal
def ingresados=revDetails['EnlacesIngresados'] as BigDecimal
rev.setAttribute('ProductType','Item')
rev.setAttribute('InventoryItemId',itemId)
rev.setAttribute('NumeroDeEnlaces_c',enlacesTotales)
rev.setAttribute('EnlacesActivos_c',enlacesActivos)
rev.setAttribute('EnlacesNoConcretados_c',noConcretados)
rev.setAttribute('ImporteNeto_c',importeNeto)
rev.setAttribute('ImporteBruto_c',importeNeto)
rev.setAttribute('ValorDeInstalacion_c',instalacionBruta)
rev.setAttribute('InstalacionBruta_c',instalacionNeta)
rev.setAttribute('UnitPrice',importeBruto)
rev.setAttribute('RevnAmount',importeBruto)
rev.setAttribute('PrecioMensual_c',precioMensual)
rev.setAttribute('EnlacesNoConcretadosTemporales_c',noConcretadosTemporales)
rev.setAttribute('EnlacesDesactivados_c',desactivados)
rev.setAttribute('EnlacesIngresados_c',ingresados)
rev.setAttribute('ProductoDefinitvo_c','Y')
importeNetoTotal+=importeNeto
importeBrutoTotal+=importeBruto
instalacionNetaTotal+=instalacionNeta
instalacionBrutaTotal+=instalacionBruta
enlacesActivosTotales+=enlacesActivos
enlacesTotalesTotales+=enlacesTotales
noConcretadosTotales+=noConcretados
/*if(enlacesActivos>0){
def closeDate=nvl(rev.EffectiveDate,nullDate)
if(rev.StatusCode!='WON'){
rev.setAttribute('StatusCode','WON')
if(closeDate==nullDate){
rev.setAttribute('EffectiveDate',today())
closeDate=today()
}
}
if(minCloseDate.time> closeDate.time && minCloseDate!=nullDate){
minCloseDate=closeDate
}
}*/
revMap.remove(itemId)
}
}
}
def mapKeys=revMap.keySet()
for(itemId in mapKeys){
def revDetails=revMap[itemId]
def importeNeto=revDetails['ImporteNeto'] as BigDecimal
def importeBruto=revDetails['ImporteBruto'] as BigDecimal
def instalacionNeta=revDetails['InstalacionNeta'] as BigDecimal
def instalacionBruta=revDetails['InstalacionBruta'] as BigDecimal
def enlacesTotales=revDetails['EnlacesTotales'] as BigDecimal
def enlacesActivos=revDetails['EnlacesActivos'] as BigDecimal
def noConcretados=revDetails['EnlacesNoConcretados'] as BigDecimal
def precioMensual=revDetails['PrecioMensual'] as BigDecimal
def noConcretadosTemporales=revDetails['EnlacesNoConcretadosTemporales'] as BigDecimal
def desactivados=revDetails['EnlacesDesactivados'] as BigDecimal
def ingresados=revDetails['EnlacesIngresados'] as BigDecimal
def rev=revs.createRow()
rev.setAttribute('ProductType','Item')
rev.setAttribute('ResourcePartyId',OwnerResourcePartyId)
rev.setAttribute('InventoryItemId',itemId)
rev.setAttribute('InventoryOrgId',300000001746628)
rev.setAttribute('Quantity',1)
rev.setAttribute('StatusCode',StatusCode)
rev.setAttribute('NumeroDeEnlaces_c',enlacesTotales)
rev.setAttribute('EnlacesActivos_c',enlacesActivos)
rev.setAttribute('EnlacesNoConcretados_c',noConcretados)
rev.setAttribute('ImporteNeto_c',importeNeto)
rev.setAttribute('ImporteBruto_c',importeNeto)
rev.setAttribute('ValorDeInstalacion_c',instalacionBruta)
rev.setAttribute('InstalacionBruta_c',instalacionNeta)
rev.setAttribute('UnitPrice',importeBruto)
rev.setAttribute('RevnAmount',importeBruto)
rev.setAttribute('PrecioMensual_c',precioMensual)
rev.setAttribute('EnlacesNoConcretadosTemporales_c',noConcretadosTemporales)
rev.setAttribute('EnlacesDesactivados_c',desactivados)
rev.setAttribute('EnlacesIngresados_c',ingresados)
rev.setAttribute('ProductoDefinitvo_c','Y')

importeNetoTotal+=importeNeto
importeBrutoTotal+=importeBruto
instalacionNetaTotal+=instalacionNeta
instalacionBrutaTotal+=instalacionBruta
enlacesActivosTotales+=enlacesActivos
enlacesTotalesTotales+=enlacesTotales
noConcretadosTotales+=noConcretados

/*if(enlacesActivos>0){
def closeDate=nvl(rev.EffectiveDate,nullDate)
if(rev.StatusCode!='WON'){
rev.setAttribute('StatusCode','WON')
if(closeDate==nullDate){
rev.setAttribute('EffectiveDate',today())
closeDate=today()
}
}
if(minCloseDate.time> closeDate.time && minCloseDate!=nullDate){
minCloseDate=closeDate
}
}*/
revs.insertRow(rev)
}

if(enlacesTotalesTotales>0){
setAttribute('ImporteNeto_c',importeNetoTotal)
setAttribute('InstalacionNeta_c',instalacionNetaTotal)
if(enlacesActivosTotales+noConcretadosTotales==enlacesTotalesTotales){
if(enlacesActivosTotales>0){
setAttribute('StatusCode','WON')
if(nvl(EffectiveDate,nullDate)==nullDate){
setAttribute('EffectiveDate',today())
}
def motivo=''
def codigoEtapa=''
setAttribute('MotivoDeGananciaperdida_c','ADJUDICADA')
setAttribute('FechaVentaNeta_c',new java.sql.Date(minCloseDate.time))
setAttribute('SalesStageId',GetSalesStageId('CMVE6'))
def cliente
if(Person!=null){
cliente=Person
}
else{
cliente=Organization
}
if(cliente!=null){
cliente.setAttribute('SalesProfileType','ZCA_CUSTOMER')
}
}
else {
def fechaVentaBruta=nvl(FechaVentaBruta_c,nullDate)
def ventaBrutaTime=fechaVentaBruta.time
def instalacionNoConcretadaTime=(fechaVentaBruta+60).time
def todayTime=now().time
if(instalacionNoConcretadaTime<todayTime){
setAttribute('StatusCode','NO_SALE')
setAttribute('MotivoDeGananciaperdida_c','INSTALACION_NO_CONCRETA')
}
}
}
}
setAttribute('ImporteNeto_c',importeNetoTotal)
setAttribute('InstalacionBruta_c',instalacionBrutaTotal)
setAttribute('InstalacionNeta_c',instalacionNetaTotal)
println('getAssetsCorporativo:'+revMapTemp)

def pysRows = newView('PromocionesYServicios_c')


def PydRows = newView('PromocionDescuento_c')
def DetalleRows=newView('Detalle_c')
def DiferirRows=newView('Diferir_c')
def DescuentoRows=newView('Descuento_c')
def promocion;
def pysId;

def bitacora=[:]
def payload=[:]
bitacora.put('Oportunidad_Id_c',OptyId)
bitacora.put('Integracion_c','4')
bitacora.put('IdPrincipal_c',0)
def response = '';
def mensajeRespuesta = '';
def tipoCliente = CustPartyType;
println(OptyId)

try{

def accion='3'
// def sucursal= getSelectedListDisplayValue('SucursalDeVenta_c');

def salto = Character.toString(10 as char);


def sucursalVenta = nvl(getSelectedListDisplayValue('SucursalDeVenta_c'),'')
sucursalVenta = sucursalVenta.trim();
def sucursalFac = nvl(getSelectedListDisplayValue('SucursalDeFacturacion_c'),'');
sucursalFac = sucursalFac.trim();
def sucursal = 'sucursalFacturacion:'+sucursalFac+salto+'sucursalVenta:'+sucursalVenta;

def servicio= nvl(TipoDeServicio_c,'');


servicio = servicio.trim();
def segmentacion= nvl(Segmentacion_c,'');
segmentacion = segmentacion.trim();
def formaPago= nvl(FormaDePagoDin_c,'');
formaPago = formaPago.trim();
def plan= nvl(Plan_c,'');
plan = plan.trim();
def anchoBanda= nvl(AnchoDeBanda_c,'');
anchoBanda = anchoBanda.trim();
def aplicaAdultoMayor= '';
def aplicaDiscapacidad='';
def owner = nvl(EmailAddress,'')
owner = owner.trim();
def discapacitado = '';
def terceraEdad ='';
def codSplitter = nvl(Splitter_Obj_c?.RecordName, '').trim(); //REVIEW: SR_Splitter 16/02/23
if(nvl(sucursal,null)==null){ throw new oracle.jbo.ValidationException('Campo requerido: Sucursal')}
if(nvl(servicio,null)==null){ throw new oracle.jbo.ValidationException('Campo requerido: Tipo de servicio')}
if(nvl(segmentacion,null)==null){ throw new oracle.jbo.ValidationException('Campo requerido: Segmentacion')}
if(nvl(formaPago,null)==null){ throw new oracle.jbo.ValidationException('Campo requerido: Forma de Pago')}
if(nvl(plan,null)==null){ throw new oracle.jbo.ValidationException('Campo requerido: Plan')}
if(nvl(anchoBanda,null)==null){ throw new oracle.jbo.ValidationException('Campo requerido: Ancho Banda')}
if(nvl(anchoBanda,null)==null){ throw new oracle.jbo.ValidationException('Campo requerido: Ancho Banda')}

def primaryId = Person?.PartyId;


def partyId = '';
if (tipoCliente == 'PERSON'){

def admin_view = newView('PersonProfile');


def criteria = newViewCriteria(admin_view);
def row = criteria.createRow();
def vrc = row.ensureCriteriaItem('PartyId');
vrc.setOperator('=');
vrc.setValue(primaryId);
criteria.insertRow(row);
admin_view.appendViewCriteria(criteria);
admin_view.executeQuery();
while (admin_view.hasNext()) {
def curRow = admin_view.next()
partyId = curRow.PartyId;
terceraEdad = nvl(curRow.TerceraEdad_c,'');
discapacitado = nvl(curRow.Discapacitado_c,'');
println('discapacitado'+discapacitado+' terceraEdad'+terceraEdad)
if (discapacitado == '' || discapacitado == 'N'){discapacitado = 'N'}else{discapacitado = 'Y'}
if (terceraEdad == '' || terceraEdad == 'N'){terceraEdad = 'N'}else{terceraEdad = 'Y'}
}
if (discapacitado == 'Y'){
aplicaDiscapacidad = '1';
}else{
aplicaDiscapacidad = '0';
}
if(terceraEdad == 'Y'){
aplicaAdultoMayor = '1';
}else{
aplicaAdultoMayor = '0';
}
}else{
aplicaDiscapacidad = '0';
aplicaAdultoMayor = '0';

}
//def codPromocion = '96726';
def provincia=''
def canton = '';
def dirs = DireccionInstalacion_Tgt_OpportunityToDireccionInstalacion_c_Tgt;
while (dirs.hasNext()){
def dir = dirs.next();
def esInstalacion = dir.SeleccionarDireccionDeInstalacion_c=='Y';
def datosDireccion=dir.Address_Src_AddressToDireccionInstalacion_c_Src
provincia = nvl(datosDireccion?.State,'');
provincia = provincia.toUpperCase().trim();
canton = nvl(datosDireccion?.AddrElementAttribute1,'');
canton = canton.toUpperCase().trim();

}
payload.put('accion',accion)
payload.put('sucursal',sucursal)
payload.put('servicio',servicio)
payload.put('segmentacion',segmentacion)
payload.put('formaPago',formaPago)
payload.put('plan',plan)
payload.put('anchoBanda',anchoBanda)
payload.put('aplicaAdultoMayor',aplicaAdultoMayor)
payload.put('aplicaDiscapacidad',aplicaDiscapacidad)
payload.put('owner',owner)
payload.put('codPromocion',codigoPromocion)
payload.put('provinciaEnlace',provincia)
payload.put('cantonEnlace',canton)
payload.put('codSplitter',codSplitter) //REVIEW: SR_Splitter 16/02/23
bitacora.put('Payload_c',encodeToBase64(''+payload))
println('PAYLOAD SPLITTER: '+payload)

try{
response = adf.webServices.reservarLiberarSplitter.POST(payload)
println('RESPUESTA: '+response)
mensajeRespuesta = response.mensaje;
if (response.codigoRespuesta == '1'){
def pyss = response.promociones;
for(pys in pyss){
def tipo =pys['tipo']
def subtipo =pys['subtipo']
if(subtipo == 'Descuento'){

def descuentos = newView('PromocionDescuento_c')


def descuentoc = newViewCriteria(descuentos)
def descuentor = descuentoc.createRow()
def descuentoi = descuentor.ensureCriteriaItem('Oportunidad_Id_c')
descuentoi.setOperator('=')
descuentoi.setValue(OptyId)
descuentoc.insertRow(descuentor)
descuentos.appendViewCriteria(descuentoc)
def descuentoj=descuentor.ensureCriteriaItem('RecordName')
descuentoj.setOperator('=')
descuentoj.setValue(codigoPromocion)
descuentoc.insertRow(descuentor)
descuentos.appendViewCriteria(descuentoc)
descuentos.executeQuery();
while (descuentos.hasNext()){
promocion = descuentos.next()
pysId=promocion.Id;
println('pysId descuento:'+pysId)

}
}else{
def promociones = newView('PromocionesYServicios_c')
def promocionc = newViewCriteria(promociones)
def promocionr = promocionc.createRow()
def promocioni = promocionr.ensureCriteriaItem('Oportunidad_Id_c')
promocioni.setOperator('=')
promocioni.setValue(OptyId)
promocionc.insertRow(promocionr)
promociones.appendViewCriteria(promocionc)
def promocionj=promocionr.ensureCriteriaItem('RecordName')
promocionj.setOperator('=')
promocionj.setValue(codigoPromocion)
promocionc.insertRow(promocionr)
promociones.appendViewCriteria(promocionc)
promociones.executeQuery();
while (promociones.hasNext()){
promocion = promociones.next()
pysId=promocion.Id;

}
}
def Detalles = pys['detalle']
def count=0
for(Detalle in Detalles){
def DetalleRow=DetalleRows.createRow()
def detalleId = DetalleRow.Id;
def detalleDescripcion = nvl(Detalle['Descripcion'],'')
if(detalleDescripcion == ''){detalleDescripcion = 'Sin Detalle'}
DetalleRow.setAttribute('Descripcion_c',detalleDescripcion)
//pysRow.setAttribute('Detalle_c',detalleDescripcion)
if(subtipo == 'Descuento' && pysId!= null){
DetalleRow.setAttribute('PromocionDescuento_Id_c',pysId)
}
else{
if(pysId!= null){
DetalleRow.setAttribute('PromocionOServicio_Id_c',pysId)
}
}
DetalleRow.setAttribute('Oportunidad_Id_c',OptyId)
DetalleRow.setAttribute('Activo_c','Y')
def coddetalle = nvl(Detalle['Codigo'],'');
if (coddetalle == '' ){coddetalle = 0}
DetalleRow.setAttribute('RecordName',coddetalle)
def detalleDefault = nvl(Detalle['Default'],'');
if(detalleDefault ==1 ){promocion.setAttribute('Detalle_Id_c',detalleId)}
def detalleHasta= nvl(Detalle['Hasta'],'')
def detalleCada = nvl(Detalle['Cada'],'')
def valorDetalle = nvl(Detalle['Valor'],'')
DetalleRow.setAttribute('Hasta_c',detalleHasta)
DetalleRow.setAttribute('Cada_c',detalleCada)
DetalleRow.setAttribute('Valor_c',valorDetalle)
DetalleRows.insertRow(DetalleRow)
def Diferires = Detalle['diferir']
for(Diferir in Diferires){
def DiferirRow=DiferirRows.createRow()
def DiferirId = DiferirRow.Id;
def diferirDescripcion = nvl(Diferir['Descripcion'],'')
if(diferirDescripcion == ''){diferirDescripcion = 'Sin Diferir'}
DiferirRow.setAttribute('Descripcion_c',diferirDescripcion)
//pysRow.setAttribute('Diferir_c',Diferir['Descripcion'])
if(subtipo == 'Descuento'){
DiferirRow.setAttribute('PromocionDescuento_Id_c',pysId)
}
else{
DiferirRow.setAttribute('PromocionOServicio_Id_c',pysId)
}
DiferirRow.setAttribute('Oportunidad_Id_c',OptyId)
DiferirRow.setAttribute('Activo_c','Y')
def coddiferir = nvl(Diferir['Codigo'],'');
if (coddiferir == ''){coddiferir = 0}
DiferirRow.setAttribute('RecordName',coddiferir)
def diferirDefault = nvl(Diferir['Default'],'');
if(diferirDefault == 1){
DetalleRow.setAttribute('DiferirDefault_Id_c',DiferirId)
if(detalleDefault ==1 ){
promocion.setAttribute('Diferir_Id_c',DiferirId)
}
def revs = ChildRevenue;
while (revs.hasNext()){
def rev = revs.next();
rev.setAttribute('DescripcionDiferir_c',diferirDescripcion)
}
}

DiferirRow.setAttribute('Detalle_Id_c',detalleId)
def Descuentos = Diferir['descuento']
for(Descuento in Descuentos){
def DescuentoRow=DescuentoRows.createRow()
def descuentoId = DescuentoRow.Id;
def descuentoDescripcion = nvl(Descuento['Descripcion'],'')
if (descuentoDescripcion == '' ){descuentoDescripcion = 'Sin Descuento'}
DescuentoRow.setAttribute('Descripcion_c',descuentoDescripcion)
//pysRow.setAttribute('Descuento_c',Descuento['Descripcion'])
if(subtipo == 'Descuento'){
DescuentoRow.setAttribute('PromocionDescuento_Id_c',pysId)
}
else{
DescuentoRow.setAttribute('PromocionOservicio_Id_c',pysId)
}
DescuentoRow.setAttribute('Oportunidad_Id_c',OptyId)
DescuentoRow.setAttribute('Activo_c','Y')
def coddescuento = nvl(Descuento['Codigo'],'');
if (coddescuento == ''){coddescuento = 0}
DescuentoRow.setAttribute('RecordName',coddescuento)
def descuentoHasta = nvl(Descuento['Hasta'],'')
def descuentoCada = nvl(Descuento['Cada'],'')
def porcentajeDescuento = nvl(Descuento['Porcentaje'],'')
DescuentoRow.setAttribute('Hasta_c',descuentoHasta)
DescuentoRow.setAttribute('Cada_c',descuentoCada)
DescuentoRow.setAttribute('Porcentaje_c',porcentajeDescuento)
DescuentoRow.setAttribute('Diferir_Id_c',DiferirId)
DescuentoRows.insertRow(DescuentoRow)
def descuentoDefault = nvl(Descuento['Default'],'');
if(descuentoDefault == 1){
DiferirRow.setAttribute('DescuentoDefault_Id_c', descuentoId)
if(diferirDefault == 1 && detalleDefault ==1){
promocion.setAttribute('Descuento_Id_c',descuentoId)
}}

}
}

}
}
//println('RESPUESTA: '+response)
bitacora.put('MensajeIntegracion_c',encodeToBase64('Consulta detalle de promoción Exitosa'))
bitacora.put('Payload_c',encodeToBase64(''+ payload))
bitacora.put('Response_c',encodeToBase64(''+response))

adf.webServices.LogBitacora.POST(bitacora)
}else{
throw new oracle.jbo.ValidationException(''+ mensajeRespuesta)
}
}
catch(Exception e){

def msg=e.message
throw new oracle.jbo.ValidationException(''+msg)
bitacora.put('MensajeIntegracion_c',encodeToBase64(''+msg))
bitacora.put('Payload_c',encodeToBase64(''+ payload))
bitacora.put('Response_c',encodeToBase64(''+response))
adf.webServices.LogBitacora.POST(bitacora)

}
catch(Exception e){
def msg=e.message
bitacora.put('MensajeIntegracion_c',encodeToBase64(''+msg))
bitacora.put('Payload_c',encodeToBase64(''+ payload))
bitacora.put('Response_c',encodeToBase64(''+response))
adf.webServices.LogBitacora.POST(bitacora)
throw new oracle.jbo.ValidationException(''+msg)

if(adf.util.usuarioAdministrador() || AreaComercial_c=='CORPORATIVO'){
return true
}
def revs=ChildRevenue
while(revs.hasNext()){
def rev=revs.next()
if(rev.DescuentoMasivoDin_Id_c==null){
return true
}
if(nvl(rev.Detalle_Id_c,0 as BigDecimal)==0){
throw new oracle.jbo.ValidationException('(Puntonet) Para continuar es necesario seleccionar el detalle del descuento')
}
}
return true
setAttribute('Segmentacion_c','')
setAttribute('CapacidadPagoNum_c','')
setAttribute('RegistraTCActiva_c','')
setAttribute('ResultadoDelModelo_c','')
setAttribute('ClienteCastigado_c','')
setAttribute('ClienteConDeuda_c','')

if( PrimaryContactPerson?.SalesProfileType == 'ZCA_PROSPECT' || Organization?.SalesProfileType == 'ZCA_PROSPECT' ){


PrimaryContactPerson?.setAttribute('Segmentacion_c',Segmentacion_c)
PrimaryContactPerson?.setAttribute('CapacidadDePago_c',CapacidadPagoNum_c)
PrimaryContactPerson?.setAttribute('RegistraTCActiva_c',RegistraTCActiva_c)
PrimaryContactPerson?.setAttribute('ResultadoDelModelo_c',ResultadoDelModelo_c)
PrimaryContactPerson?.setAttribute('ClienteCastigado_c',ClienteCastigado_c)
PrimaryContactPerson?.setAttribute('ClienteConDeuda_c',ClienteConDeuda_c)
}

Disabled Actions Expression


Yes Field Update if(!
Name : Prueba SR oracle.apps.crmCommon.extensibility.con
return false;
Execution Schedule : 0 : Days: After: else
Fields return true;
Name : Opportunity:Comments:String
Value : Prueba SR

er valor que Yes if(!


unidad en el Groovy Function oracle.apps.crmCommon.extensibility.con
return false;
Name :Historial_Oportunidad else
Description : return true;
Execution Schedule : 0:Days:After:
Function Display Name : InsertarHistorial

No if(!
Groovy Function oracle.apps.crmCommon.extensibility.con
return false;
Name :reg opty
Description : isAttributeChanged('RegularizarOportunid
Execution Schedule : 0:Days:After:
Function Display Name :
regularizarOportunidad

No if(!
Groovy Function oracle.apps.crmCommon.extensibility.con
return false;
No

Name :ImportarDireccion
Description : AreaComercial_c=='MASIVO'
Execution Schedule : 0:Days:After:
Function Display Name :
hererdarInformacionLead

Yes if(!
Groovy Function oracle.apps.crmCommon.extensibility.con
return false;
Name :reasignacionCascada else
Description : return true;
Execution Schedule : 0:Days:After:
Function Display Name : reasignacionCascada

No Email Notification if(!


Name : Contrato caducado email oracle.apps.crmCommon.extensibility.con
return false;
Execution Schedule: 0:Days:After:
Template Name : Contrato Caducado por falta isAttributeChanged('SubEstado_c')&&Sub
de firma ADO'

No Email Notification if(!


Name : Servicio antencion oracle.apps.crmCommon.extensibility.con
return false;
Execution Schedule: 0:Days:After:
Template Name : Servicio Activo if (isAttributeChanged('SubEstado_c') &&
SubEstado_c=='CONTRATO_VALIDADO')
return true;

ruto y el Yes Email Notification if(!


on diferentes se Name : EnviaNotificacionImporteDiferente oracle.apps.crmCommon.extensibility.con
return false;
flow. Execution Schedule: 0:Days:After: else
Template Name : EnviaCierreManual return true;

No Email Notification if(!


Name : Notificacion contrato devuelto oracle.apps.crmCommon.extensibility.con
return false;
Execution Schedule: 0:Days:After:
Template Name : Contrato devuelto por cliente if (isAttributeChanged('SubEstado_c') &&
SubEstado_c=='CONTRATO_DEVUELTO_C
return true;
}

Yes if(!
Groovy Function oracle.apps.crmCommon.extensibility.con
return false;
Name :Oportunidad else
Description : return true;
Execution Schedule : 0:Days:After:
Function Display Name :
InsertarHistoricoEtapa

No Email Notification if(!


oracle.apps.crmCommon.extensibility.con
No
Name : Contrato devuelto por validacion return false;
Execution Schedule: 0:Days:After:
Template Name : Contrato devuelto por if (isAttributeChanged('SubEstado_c') &&
validación SubEstado_c=='CONTRATO_DEVUELTO_V
return true;

ón si el Yes Email Notification if(!


gual o mayor al Name : EnviaNotificacion oracle.apps.crmCommon.extensibility.con
return false;
nto o el Execution Schedule: 0:Days:After: else
scuento es Template Name : Envia notificaion de return true;
a 600USD. descuento

No Email Notification if(!


Name : OportunidadPreventa oracle.apps.crmCommon.extensibility.con
return false;
Execution Schedule: 0:Days:After:
Template Name : La oportunidad es de tipo if(isAttributeChanged('EjecutivoPreventa_
preventa ='' &&true
SalesStageId==GetSalesStageId('C
return
}

No Email Notification if(!


Name : NotificacionGanada oracle.apps.crmCommon.extensibility.con
return false;
Execution Schedule: 0:Days:After:
Template Name : Oportunidad cerrada ganada if(isAttributeChanged('StatusCode')&&Sta
return true
}
return false
/*if(StatusCode=='WON'){
return true
}*/

Yes Field Update if(!


Name : Prueba oracle.apps.crmCommon.extensibility.con
return false;
Execution Schedule : 0 : Days: After: else
Fields return true;
Name : Opportunity:Comments:String
Value : Contrato devuelto worflow funciona

No Email Notification if(!


Name : Contrato firmado por el cliente oracle.apps.crmCommon.extensibility.con
return false;
Execution Schedule: 0:Days:After:
Template Name : Contrato firmado por cliente if (isAttributeChanged('SubEstado_c') &&
SubEstado_c=='CONTRATO_FIRMADO_C
return true;

Yes if(!
Groovy Function oracle.apps.crmCommon.extensibility.con
return false;
Yes

Name :getAssets else


Description : return true;
Execution Schedule : 0:Days:After:
Function Display Name : getAssets

No Email Notification if(!


Name : Oportunidad cerrada oracle.apps.crmCommon.extensibility.con
return false;
Execution Schedule: 0:Days:After:
Template Name : Oportunidad cerrada if(isAttributeChanged('StatusCode')&&Sta
return true
}
return false

Record Type Advanced Expression

StatusCode!='OPEN'

B_CUSTOM_PRE_VEN

B_CUSTOM_PRE_VEN

false
SalesStage == '05 - Cierre'
SalesStage == '04 - Instalación'
SalesStage == '03 - Contrato'
SalesStage == '02 - Oferta'
Precision MaxLength Expression
1500 1500
0 0
18 18
18 18
10 10
18 18
1500 1500
1500 1500
1500 1500
1500 1500
80 80
80 80
10 10
1500 1500
1500 1500
1500 1500
10 10
10 10
10 10
0 0
10 10
18 18
80 80
20 20
10 10
1500 1500
18 18
18 18
1500 1500
80 80
1500 1500
80 80
80 80
0 0
1500 1500
0 0 return Origen_c
10 10
80 80
80 80
10 10
10 10
0 0
80 80
80 80
10 10
18 18
1500 1500
10 10
1500 1500
10 10
1500 1500
10 10
18 18
1500 1500
0 0 StageStatusCd
10 10
1500 1500
200 200
1500 1500
18 18
10 10
18 18
1500 1500
18 18
1500 1500
0 0 getSelectedListDisplayValue('
80 80
80 80
1500 1500
1500 1500
1500 1500
80 80
10 10
1500 1500
200 200
1500 1500
18 18
1500 1500
400 400
1500 1500
80 80
80 80
0 0
1500 1500
0 0 def fechanull=null
if(OptyCreationDate!=fechanull
today() - OptyCreationDate
}
10 10
0 0
200 200
0 0 return EjecutivoPreventa_c
10 10
10 10
80 80
0 0 Name
1500 1500
1500 1500
10 10
80 80
1500 1500
10 10
1500 1500
80 80
0 0 def estado=''
def oportunidadNueva=nvl(Nu
def contratoFisico=nvl(Contrato
0 0

def requiereFirma=nvl(Requier
def contratoEnviado= SubE
def contratoFirmado= SubE
if(contratoFisico){
estado='El próximo envío de
}
else if(oportunidadNueva || re
estado='El próximo envío de c
}
else{
estado='El próximo envío de
}
estado
10 10
80 80
0 0 def NombreCuenta ='';
def cuenta=Organization

if(cuenta!=null) {
NombreCuenta=cuenta.Organ
}
return NombreCuenta
1500 1500
1500 1500
10 10
1500 1500
0 0 def RucCuenta ='';
def cuenta=Organization

if(cuenta!=null) {
RucCuenta=cuenta.JgzzFisc
}
return RucCuenta
18 18
18 18
10 10
80 80
10 10
10 10
1500 1500
1500 1500
18 18
10 10
32714 32714
1500 1500
0 0 def nullDate= new Date(1900,0
def fechaAsig=nvl(FechaDeAsi
if(fechaAsig==nullDate){
return 0
}
else{
return today()-fechaAsig
}
80 80
10 10
0 0
1500 1500
10 10
1500 1500
18 18
80 80
0 0 Asset?.Estado_c
80 80
80 80
80 80
0 0 return Revenue
80 80
18 18
0 0 if(TargetPartyId!=null){
def personaJ=Organization;
def personaN=Person;
if(personaJ==null && perso
def vo=newView('PersonProfi
def vc=newViewCriteria(vo);
def vcr=vc.createRow();
def vci=vcr.ensureCriteriaIte
vci.setOperator('=');
vci.setValue(TargetPartyId);
vc.insertRow(vcr);
vo.appendViewCriteria(vc);
vo.executeQuery();
while(vo.hasNext()){
def c=vo.next();
if(c.PartyId==TargetPartyId
if(c.CodigoNetPlus_c!=nul
return c.CodigoNetPlus_
}
}
}
}
if(personaJ!=null && person
if(personaJ.CodigoNetPlus_c
return personaJ.CodigoNe
}
}
}
0 0
32714 32714
1500 1500
1500 1500
0 0
1500 1500
10 10
1500 1500
0 0
10 10
0 0 return CanalObjC_c
18 18
1500 1500
18 18
18 18
0 0 return EffectiveDate
1500 1500
10 10
1500 1500
20 20
1500 1500
1500 1500
1500 1500
1500 1500
10 10
10 10
80 80
10 10
0 0 return ActividadEconomica_c
10 10
1500 1500
10 10
10 10
80 80
1500 1500
18 18
c'))
d)
pecificar el canal y origen')

ormal ')
no permite cambiar de etapa de 2 a 3, sin haber elegido el Ejecutivo

no ha sido completada.')
tividades para pasar de etapa.')

oluciones ' +nameact + ' no ha sido completada.')

ompleta de tipo preventa - Elaboración de diseño para poder avanzar

n al menos una actividad aprobada y completa de tipo soluciones

menos una actividad completa de tipo preventa - Elaboración de

ambiar de Etapa.')

a cambiar de Etapa.')
a cambiar de Etapa.')

da son Obligatorios para cambiar de Etapa.')

el cliente a Netplus. Favor de realizar el envío.')

')
no permite cambiar de etapa de 1 a 3.')

)
ontacto')

Pozos_c,'')=='' && nvl(PisoDeInstalacion_c,'')=='' &&

, requiere escalera, ductos, pozos, pisos de instalación, pisos de

')

ebe enviar el contrato digital.')

subestado de la oportunidad debe inidcar que el contrato se

t de contrato')

etapas.')
cionDePlanes_c=='Y'
rPromocionesYServicios_c=='Y' && AreaComercial_c=='MASIVO'
ged('ActualizarCliente_c')&& ActualizarCliente_c=='Y'
Y'

igital_c=='Y'
Oportunidad || actualizarContrato){

do')
ore.')

+1)

ue no se cuenta con un Ticket de Contrato de Netplus')

+1)
plus_c,'')!=''&&moc=='MASIVO'
moc=='CORPORATIVO'

po)){

GenericoCorporativo || finalizarTemporalidad || inactivarTemporalidad){


){

iente)&&cliente!=null){

rporativo){
_c=='MASIVO'){

mal) as Long)
c != null){

as BigDecimal)!=0

tención para la elaboración del documento HLD.'


al_c=='MASIVO'){

mal) as Long)

as BigDecimal)!=0
tención para la elaboración del documento HLD.'

pecificar el canal y origen')


MPETENCIA' && nvl(PartyUniqueName1,'')==''){

portunidad como perdida.')


TO_CLIENTE' || SubEstado_c=='CONTRATO_CADUCADO'){

gDecimal)+1);

as BigDecimal)+1);

)
adf.util.usuarioMasivoCorporativo()!='MASIVO'){
ce al ejecutivo ' + cliente.OwnerPartyName +'. No es posible tomar

a otros usuarios')
ivo && tipoUsuario=='CORPORATIVO' )){

e le fue desasignada en el pasado, hasta que pasen 15 días desde la

ndo gestionada por otro ejecutivo')

eres parte del equipo de trabajo')


ress,'')!=''){
n_c_Tgt

yId)
lus == ' '){accion ='Creación'}
viado a Netplus'

ntará el Plan. Para seleccionar el Número de Documento hay que

rato. '
r o actualizar una oportunidad')
erido:Cliente ')}

mpo requerido: Tipo de documento')}


Campo requerido: Número de documento')}

erido: Contacto principal')}


po requerido: Tipo de documento')}
Campo requerido: Número de documento')}

gDecimal.ROUND_HALF_UP))
n))
oolean))

lean))
as Boolean))
] as Boolean))
Nodo Wifi')}
Radio Wiffi')}

Grupo de Hilo')}
Color de Hilo')}
tter')}

LT')}
ido: Grupo de Hilo')}
do: Color de Hilo')}
Splitter')}

requerido: Segmentacion')}
ido: Servicio')}
Plan')}

ES DE SERVICIOS CONEXAS.')
')

URAL.')

EXPLOTACIÓN DE MINAS Y CANTERAS.')


XOS.')

PRODUCTOS DE MADERA Y CORCHO, EXCEPTO MUEBLES;

APEL.')

S.')

LA REFINACIÓN DEL PETRÓLEO.')

QUÍMICOS.')

S, SUSTANCIAS QUÍMICAS MEDICINALES Y PRODUCTOS


ÁSTICO.')

ES NO METÁLICOS.')

METAL, EXCEPTO MAQUINARIA Y EQUIPO.')

A, ELECTRÓNICA Y ÓPTICA.')

')

REMOLQUES Y SEMIRREMOLQUES.')

TRANSPORTE.')
Y EQUIPO.')

AIRE ACONDICIONADO.')

AGUA.')

DE DESECHOS, RECUPERACIÓN DE MATERIALES.')

S SERVICIOS DE GESTIÓN DE DESECHOS.')


CCIÓN.')

OMOTORES Y MOTOCICLETAS.')

HÍCULOS AUTOMOTORES Y MOTOCICLETAS.')

HÍCULOS AUTOMOTORES Y MOTOCICLETAS.')

ÍAS.')

AL TRANSPORTE.')
NEMATOGRÁFICAS, VÍDEOS Y PROGRAMAS DE TELEVISIÓN,

ÓN.')

DE INFORMÁTICA Y ACTIVIDADES CONEXAS.')


PTO LAS DE SEGUROS Y FONDOS DE PENSIONES.')

NES, EXCEPTO LOS PLANES DE SEGURIDAD SOCIAL DE

DE SERVICIOS FINANCIEROS.')

IDADES DE CONSULTORÍA DE GESTIÓN.')

; ENSAYOS Y ANÁLISIS TÉCNICOS.')


CAS Y TÉCNICAS.')

.')

ORES TURÍSTICOS, SERVICIOS DE RESERVAS Y ACTIVIDADES

.')

AJISMO.')

DE OFICINA Y OTRAS ACTIVIDADES DE APOYO A LAS

DE SEGURIDAD SOCIAL DE AFILIACIÓN OBLIGATORIA.')


ANA.')

.')

AMIENTO.')

RETENIMIENTO.')

EOS Y OTRAS ACTIVIDADES CULTURALES.')

')

Y RECREATIVAS.')
S PERSONALES Y ENSERES DOMÉSTICOS.')

S.')

DORES DE PERSONAL DOMÉSTICO.')

ARES COMO PRODUCTORES DE BIENES Y SERVICIOS PARA USO

S EXTRATERRITORIALES.')
nta;

uerido: Servicio')}
requerido: Segmentacion')}
erido: Forma de Pago')}
ido: Sucursal')}
do: Coordenada Latitud')}
rido: Coordenada Longitud')}
: Latitud')}
lación')
ProfileType == 'ZCA_PROSPECT' ){
a;

02/23
do: Sucursal')}
do: Tipo de servicio')}
equerido: Segmentacion')}
uerido: Forma de Pago')}
Plan')}
querido: Ancho Banda')}
querido: Ancho Banda')}
o = 'Y'}
stalación')

able'] as Boolean))
taEditable'] as Boolean))
olean))
as Boolean))
e'] as Boolean))

rio'] as Boolean))

ble'] as Boolean))
Editable'] as Boolean))

n))

Boolean))
ficadorClienteOSC+salto+'nombreOportunidad:'+nombreOport

ntrato>0)
salVenta.trim();
s siguientes datos en el perfil del Contacto: Operadora de

guientes datos en el perfil del Contacto: Número de teléfono

*100
= 'Y'}

erido: Contacto principal')}


siguientes datos en el perfil del Contacto: Operadora de

iguientes datos en el perfil del Contacto: Número de teléfono

');
= 'Y'}
ttribute1,'');

1,'');
ss2,'');
');

AddrElementAttribute2,'');
.AddrElementAttribute3,'');
tAttribute4,'').trim()
GANIZATION'){
cia,seleccione otro contacto.')

rencia)
guales que en el contacto principal: ';
al))
mal))
'+ MsgE + '".';
ad: "'+ MsgE + '".';

no esta registrado en Netplus')


cion)
r Cédula o Pasaporte')
ar Cédula o Pasaporte')

gDecimal.ROUND_HALF_UP))
ación seleccionado. Favor de seleccionar otro')
s Double,Tipo_c=='PROYECTO'))

P))

Double,Tipo_c=='PROYECTO'))
c,0 as BigDecimal) + 1)
rtyId){

QUE FINALIZARON EL DIA DE HOY


9]*)/ || latitud==''
)\'([0-5]0.[0-9]|[0-5][0-9].[0-9]*)/ || longitud==''
ong ) -1

cimal)==0){
orativo){

liente!=genericoCorporativo){
' le pertenece al ejecutivo ' + cliente.OwnerPartyName +'. No es
portunidad a otros usuarios')

icoCorporativo && tipoUsuario=='CORPORATIVO' )){

idad porque le fue desasignada en el pasado, hasta que pasen

ue está siendo gestionada por otro ejecutivo')

porque no eres parte del equipo de trabajo')


o de esta lista:' +objects)

tro de esta lista:' +objects)


tro de esta lista:' +objects)
.getSelectedListDisplayValue('TipoFormaDePago_c'))
Id)

esStageId('MMVE1') || SalesStageId==

| OwnerResourcePartyId==
e Netplus. Favor de ponerse en contacto con un administrador

o de Netplus. Favor de ponerse en contacto con un


gDecimal
){
BigDecimal
gDecimal
a;

02/23
do: Sucursal')}
do: Tipo de servicio')}
equerido: Segmentacion')}
uerido: Forma de Pago')}
Plan')}
querido: Ancho Banda')}
querido: Ancho Banda')}
o = 'Y'}
ión Exitosa'))

leccionar el detalle del descuento')


ProfileType == 'ZCA_PROSPECT' ){

ression

le.apps.crmCommon.extensibility.content.adf.data.util.ExtensibilityGro
urn false;

urn true;

le.apps.crmCommon.extensibility.content.adf.data.util.ExtensibilityGro
urn false;

urn true;

le.apps.crmCommon.extensibility.content.adf.data.util.ExtensibilityGro
urn false;

ributeChanged('RegularizarOportunidad_c')

le.apps.crmCommon.extensibility.content.adf.data.util.ExtensibilityGro
urn false;
Comercial_c=='MASIVO'

le.apps.crmCommon.extensibility.content.adf.data.util.ExtensibilityGro
urn false;

urn true;

le.apps.crmCommon.extensibility.content.adf.data.util.ExtensibilityGro
urn false;

ributeChanged('SubEstado_c')&&SubEstado_c=='CONTRATO_CADUC
O'

le.apps.crmCommon.extensibility.content.adf.data.util.ExtensibilityGro
urn false;

AttributeChanged('SubEstado_c') &&
Estado_c=='CONTRATO_VALIDADO')
return true;

le.apps.crmCommon.extensibility.content.adf.data.util.ExtensibilityGro
urn false;

urn true;

le.apps.crmCommon.extensibility.content.adf.data.util.ExtensibilityGro
urn false;

AttributeChanged('SubEstado_c') &&
Estado_c=='CONTRATO_DEVUELTO_CLIENTE'){
return true;

le.apps.crmCommon.extensibility.content.adf.data.util.ExtensibilityGro
urn false;

urn true;

le.apps.crmCommon.extensibility.content.adf.data.util.ExtensibilityGro
urn false;

AttributeChanged('SubEstado_c') &&
Estado_c=='CONTRATO_DEVUELTO_VALIDADOR')
return true;

le.apps.crmCommon.extensibility.content.adf.data.util.ExtensibilityGro
urn false;

urn true;

le.apps.crmCommon.extensibility.content.adf.data.util.ExtensibilityGro
urn false;

AttributeChanged('EjecutivoPreventa_c')&& nvl(EjecutivoPreventa_c,'')!
&& SalesStageId==GetSalesStageId('CMVE2')){
rn true

le.apps.crmCommon.extensibility.content.adf.data.util.ExtensibilityGro
urn false;

AttributeChanged('StatusCode')&&StatusCode=='WON'){
rn true

rn false
StatusCode=='WON'){
rn true

le.apps.crmCommon.extensibility.content.adf.data.util.ExtensibilityGro
urn false;

urn true;

le.apps.crmCommon.extensibility.content.adf.data.util.ExtensibilityGro
urn false;

AttributeChanged('SubEstado_c') &&
Estado_c=='CONTRATO_FIRMADO_CLIENTE')
return true;

le.apps.crmCommon.extensibility.content.adf.data.util.ExtensibilityGro
urn false;
urn true;

le.apps.crmCommon.extensibility.content.adf.data.util.ExtensibilityGro
urn false;

AttributeChanged('StatusCode')&&StatusCode=='LOST'){
rn true

rn false
Object Name : OpportunityContact
Object Name
Object Display Name Plural
Object Type
Application Name
Table Name
Child Object
Parent Object Name
Total number of custom fields
Total number of modified Standard fields
Total number of Triggers
Total number of Object Functions
Total number of Object Workflows
Total number of Validations
Total number of Dynamic Layouts

Custom Fields
Name Display Name Type Column Name
Parentesco_c Parentesco Text EXTN_ATTRIBUTE_CHAR003
OpportunityContact
Contactos de oportunidad
OOTB
CRM
MOO_OPTY_CON
Yes
Opportunity
1
0
0
0
0
0
0

Column Name Default Value Required Updatable Searchable


EXTN_ATTRIBUTE_CHAR003 No Yes No
REST Enabl Precision MaxLength Expression
Yes 80 80
Object Name : OpportunityResource
Object Name OpportunityResource
Object Display Name Plural Recursos de oportunidad
Object Type OOTB
Application Name CRM
Table Name MOO_OPTY_RESOURCES
Child Object Yes
Parent Object Name Opportunity
Total number of custom fields
Total number of modified Standard fields
Total number of Triggers
Total number of Object Functions
Total number of Object Workflows
Total number of Validations
Total number of Dynamic Layouts

Standard Fields
Name Display Name Help Text
RoleName Puesto
ortunityResource
ursos de oportunidad
B
M
O_OPTY_RESOURCES

ortunity
0
0
0
0
0
0
0

Searchable
No
Object Name : Organization
Object Name Organization
Object Display Name Plural Clientes
Object Type OOTB
Application Name CRM
Table Name HZ_ORGANIZATION_PROFILE
Total number of custom fields
Total number of modified Standard fields
Total number of Triggers
Total number of Object Functions
Total number of Object Workflows
Total number of Validations
Total number of Dynamic Layouts

Standard Fields
Name Display Name Help Text
OrganizationName Nombre comercial del
JgzzFiscalCode establecimiento
RUC
PartyNumber Número de Parte Registry ID
PreferredContactName Contacto Principal Contacto principal
PartyUniqueName Nombre comercial del
SalesProfileStatus establecimiento
Estado Sales Profile Status
SalesProfileType Tipo

Custom Fields
Name Display Name Type Column Name
TotalDeContratosNoConcretados_cTotal de Contratos no concretadosNumber EXTN_ATTRIBUTE_NUMBER014
ActualizarInformacionCIIU_c Actualizar Información CIIU Checkbox EXTN_ATTRIBUTE_CHAR025
NumeroDeLeads_c Numero de Leads Number EXTN_ATTRIBUTE_NUMBER007
NombreCatalogoCIIUDin_c Nombre en Catálogo CIIU DCL

EstadoTemporalidad_c Estado Temporalidad Text Formula

NombreCDEstablecimiento_c Nombre Comercial del EstablecimiText EXTN_ATTRIBUTE_CHAR015


TipoDePersona_c Tipo de persona FCL EXTN_ATTRIBUTE_CHAR013
NombreEnCatalogoCIIU_c Nombre en Catálogo CIIU Text EXTN_ATTRIBUTE_CHAR020
TipoDeDocumento_c Tipo de documento FCL EXTN_ATTRIBUTE_CHAR012
DesEstatusdeIntegracion_c Estatusde integración Text EXTN_ATTRIBUTE_CHAR007
RazonSocial_c Razón Social Text EXTN_ATTRIBUTE_CHAR009
CodigoNetPlus_c Código NetPlus Text EXTN_ATTRIBUTE_CHAR003
ConsultaEmbebidos_c Consulta embebidos FCL EXTN_ATTRIBUTE_CHAR032
IdLeadProgenitor_c IdLeadProgenitor Number EXTN_ATTRIBUTE_NUMBER006
OportunidadesCuentas_c Oportunidades cuentas Number Formula
OportunidadesCuentas_c Oportunidades cuentas Number Formula

LeadsAbiertos_c Leads Abiertos Number EXTN_ATTRIBUTE_NUMBER008


ActividadEconomica_Id_c Actividad Económica DCLForeignKey EXTN_ATTRIBUTE_NUMBER002
AreaComercial_c Área Comercial FCL EXTN_ATTRIBUTE_CHAR018
NumeroDeDocumento_c Número de documento Text EXTN_ATTRIBUTE_CHAR001
SectoresComerciales_c Sectores comerciales FCL EXTN_ATTRIBUTE_CHAR011
FechaDeAsignacion_c Fecha de Asignación Date EXTN_ATTRIBUTE_TIMESTAMP002
CantidadEmpleados_c Cantidad Empleados Text EXTN_ATTRIBUTE_CHAR024
ExisteEnCatalogoCIIU_c Existe en catálogo CIIU Checkbox EXTN_ATTRIBUTE_CHAR019
GrupoComercial_c Grupo comercial FCL EXTN_ATTRIBUTE_CHAR008
ConsiderarComoCliente_c Considerar como cliente Checkbox EXTN_ATTRIBUTE_CHAR036
EstatusValid_c Estatus de validación FCL EXTN_ATTRIBUTE_CHAR005
PrimeraVentaCerrada_c Primera venta cerrada Checkbox EXTN_ATTRIBUTE_CHAR033
AntiguedadTemporalidadForm_c Antigüedad Temporalidad Number Formula

NombreCatalogoCIIUDin_Id_c Nombre en Catálogo CIIU DCLForeignKey EXTN_ATTRIBUTE_NUMBER015


OverrideReassignment_c Override Reassignment Checkbox EXTN_ATTRIBUTE_CHAR031
UsuarioDesasignado_c UsuarioDesasignado DCL

ComentariosDeTemporalidad_c Comentarios de temporalidad Clob EXTN_ATTRIBUTE_CLOB001


OportunidadesAbiertas_c Oportunidades abiertas Number EXTN_ATTRIBUTE_NUMBER005
Pasaporte_c Pasaporte Text EXTN_ATTRIBUTE_CHAR016
PublicaOPrivada_c Pública o Privada FCL EXTN_ATTRIBUTE_CHAR029
DisponibleHasta_c Disponible hasta: Date EXTN_ATTRIBUTE_TIMESTAMP001
TotalDeContratosActivos_c Total de contratos Activos Number EXTN_ATTRIBUTE_NUMBER010
OportunidadAbierta_c Oportunidad abierta FCL EXTN_ATTRIBUTE_CHAR014
ActualizarClienteEnNetplus_c Actualizar Cliente en Netplus Checkbox EXTN_ATTRIBUTE_CHAR035
TotalDeContratosNoConcretadosT Total de Contratos no concretado Number EXTN_ATTRIBUTE_NUMBER017
UsuarioDesasignado_Id_c UsuarioDesasignado DCLForeignKey EXTN_ATTRIBUTE_NUMBER001
RUCExterno_c RUC Externo Text EXTN_ATTRIBUTE_CHAR017
EstatusInt_c Estatus integración FCL EXTN_ATTRIBUTE_CHAR006
GrupoComercialDin_Id_c Grupo Comercial DCLForeignKey EXTN_ATTRIBUTE_NUMBER003
EstadoDeTemporalidad_c Estado de Temporalidad FCL EXTN_ATTRIBUTE_CHAR004
TimestampTotalContratos_c Timestamp Total Contratos Number EXTN_ATTRIBUTE_NUMBER018
Tamano_c Tamaño Text EXTN_ATTRIBUTE_CHAR022
TotalDeContratosIngresados_c Total de Contratos Ingresados Number EXTN_ATTRIBUTE_NUMBER011
ActividadEconomica_c Actividad Económica DCL

GrupoComercialDin_c Grupo Comercial DCL

SectorCIIU_c Sector CIIU FCL EXTN_ATTRIBUTE_CHAR030


AntiguedadTemporalidad_c Antigüedad Temporalidad - obsoleNumber EXTN_ATTRIBUTE_NUMBER004
TotalDeContratosDesactivadosTemTotal de Contratos Desactivados Number EXTN_ATTRIBUTE_NUMBER013
TotalDeContratosDesactivados_c Total de Contratos Desactivados Number EXTN_ATTRIBUTE_NUMBER012
Sector_c Sector FCL EXTN_ATTRIBUTE_CHAR010
LeadProgenitor_Id_c Lead Progenitor DCLForeignKey EXTN_ATTRIBUTE_NUMBER016
LeadProgenitor_c Lead Progenitor DCL

CuentaRegularizada_c Cuenta Regularizada Checkbox EXTN_ATTRIBUTE_CHAR034


Sectorb_c Sector Text EXTN_ATTRIBUTE_CHAR023
Ciudad_c Ciudad Text EXTN_ATTRIBUTE_CHAR021
RegularizarCuenta_c Regularizar Cuenta Number EXTN_ATTRIBUTE_NUMBER009

Triggers
Name Type Trigger PointDescription Error Message Expression
setOrganizationName Field Trigger Modify if(AreaComercial_c=
Field Name : setAttribute('Organ
RazonSocial_c }
Activar_Temp Object Trigger Create setAttribute('EstadoD
Init_Account Object Trigger Create setAttribute('AreaCo
Temporalidad_INS Object Trigger BeforeInsert if(AreaComercial_c=
setAttribute('Fecha
setAttribute('Estado
return true
}
if(OwnerPartyId!=nu
setAttribute('Fecha
}
else{
setAttribute('Fecha
}
def fecha=date(2001
if(nvl(FechaDeAsigna
def dias=adf.util.dia
setAttribute('Dispon
}
else
{
setAttribute('Dispo
}
setAttribute('EstadoD
setAttribute('Oportu
getDireccionLead()
InsertHistorialCuenta Object Trigger BeforeInsert if(SalesProfileType =
def historico = new
def crear = historic
crear.setAttribute('I
crear.setAttribute('R
crear.setAttribute('V
historico.insertRow
}
LlenadoYDuplicadoDo Object Trigger BeforeInsert LlenadoDocumentos
cumentosC ValidarDuplicadosC(
busquedaCIIU()
HistoricoCuenta Object Trigger BeforeUpdate println('pruebas logs
def re= getOriginalA
if(nvl(re,'')==''){
re='–'
}
if(isAttributeChange
def historico = new
def crear = historic
crear.setAttribute('I
crear.setAttribute('R
crear.setAttribute('V
historico.insertRow

}
orquestacionTemporal Object Trigger BeforeUpdate if(OportunidadesAb
idad setAttribute('Oport
}
if(LeadsAbiertos_c==
setAttribute('Leads
}

if(AreaComercial_c=
setAttribute('Fecha
setAttribute('Estado
return true
}
def cambioContrato
def previousOwnerId
def cambioOwner=i
def cambioLeadsAbi
def cambioOportuni
def cambioTotalCon
def cambioTotalCon
def cambioTotalCon
def cambioTotalCon
def totalContratosAc
def totalContratosIn
def totalContratosD
def totalContratosN

def contratosPlanesT
def cambioTotalCon
def sinContratosActi
nvl(TotalDeContrato
def cambiarFechaIni
def cambioConsider
if(cambioOwner||cam
def currentOwnerId
def usuarioGeneric
if(nvl(AreaComercia
usuarioGenericoId
}
else if(nvl(AreaCom
usuarioGenericoId
}
def leadsAbiertos=
def oportunidadesA
def statusTempora
def fechaAsignacio
def disponibleHast
if(cambioOwner || c
fechaAsignacion=
//setAttribute('Ov
if(OverrideReassig
def mapCliente=
def tipoCliente=
mapCliente.put('
mapCliente.put('
mapCliente.put('
adf.util.reasignar
}
}
if(sinContratosActiv
println('Sin contra
}
else{
println('Con contr
}
if(currentOwnerId=
statusTemporalida
if(cambioOwner){
setAttribute('Usu
def team=Team
while(team.hasN
def member=te
if(member.Party
member.remov
}
if(ConsiderarCom
setAttribute('Co
}
fechaAsignacion
}
}
else if((leadsAbierto
println('Status tem
statusTemporalida
}
else{
statusTemporalida
disponibleHasta=
if(cambioOwner ||
fechaAsignacion
}
def fecha=date(2
def cuentaOClie
if(nvl(ConsiderarC
cuentaOCliente =
}else{
cuentaOCliente =
}
def dias=adf.util
println('DIAS:' +
disponibleHasta=

}
setAttribute('Estado
setAttribute('Dispo
setAttribute('Fecha
}
if(OverrideReassignm
setAttribute('Overr
}

controlGeneralUpdate Object Trigger BeforeUpdate LlenadoDocumentos


if(isAttributeChange
isAttributeChanged(
ValidarDuplicadosC
}
if(isAttributeChange
setAttribute('Actua
//funcionCreaClien
}
if(isAttributeChange
}
if(isAttributeChange
setAttribute('Actua
busquedaCIIU()
}
CambiosIdentificacion Object Trigger BeforeUpdate def oldRuc= getOrig
es def oldPas= getOrig
def oldRucE= getOr
def ruc =isAttributeC
def pasaporte = isAt
def RucE = isAttribu

if(pasaporte){
if(nvl(oldPas,'') != '' &
//println('Pasap
if(nvl(Pasaporte
//println( 'pa
throw new o
}
}

if( nvl(Pasaporte_c,'')
EliminarRegistroClie
}else{
println('NumeroDeP
crearActualizarRegis
}
}
if(ruc){
if(nvl(oldRuc,'') !=
//println('RUC v
if(nvl(JgzzFiscal
//println( 'RU
throw new o
}
}

if( nvl(JgzzFiscalCod
EliminarRegistroClie
}else{
println('JgzzFiscalCo
crearActualizarRegis
}
}

if(RucE){
if(nvl(oldRuc,'') !=
println('RUC va
if(nvl(JgzzFiscal
println( 'RUC
throw new o
}
}

if( nvl(RUCExterno_c
EliminarRegistroClie
}else{
println('NumeroDeR
crearActualizarRegis
}
}
CambiosParaActualiza Object Trigger BeforeUpdate if(AreaComercial_c =
cion //caracteresEspeciale
def cambioFirstNam
def cambioLastNam
def cambioCorreoEle
if(cambioFirstName|

def codigoNP = nv
if(CodigoNetPlus_c
def nroDoc;
def tipoDoc;
def cliNets = newV
def cliNetc=newVie
def cliNetr=cliNetc
def cliNeti=cliNetr.
cliNeti.setOperator
cliNeti.setValue(Par
def cliNetj=cliNetr.
cliNetj.setOperator
cliNetj.setValue(cod
cliNetc.insertRow(c
cliNets.appendView
cliNets.executeQue
def existe=false
while(cliNets.hasNe
def cliNet=cliNets
existe=true
nroDoc=nvl(cliNe
tipoDoc=nvl(cliNet.T
}
if(existe){
funcionCreaClient
println('Actualizac

}
}
}

Validations
Name Type Error Message Expression
validaPropietario Object Validation Tu usuario no tiene permisos para hacer if(getPrimaryRowSta
cambios a eta cuenta return true
if(adf.util.usuarioAdm
return true
}
def currentUsernam
def moc=adf.util.usu
def usuarioMasivo=
def usuarioCorporat

def resources=newV
def resourcec=newV
def resourcer=resou
def resourcei=resou
resourcei.setOperato
resourcei.setValue(c
resourcec.insertRow
resources.appendVie
resources.executeQu
def currentUserId
while(resources.hasN
def resource=resou
currentUserId=reso
}
def genericoMasivo=
def genericoCorpora

if( isAttributeChange
if(OwnerPartyId!=c
throw new oracle.
}
def prevOwner=ge
def usuarioDesasig
def tipoUsuario=a
if((prevOwner==ge
def fechaNull=new
def fechaAsignaci
if(usuarioDesasign
return true
}
else{
throw new oracle
de}asignación')
}
else{
throw new oracle.
}
}
else{
if(OwnerPartyId!=c
def team=Team
def partOfTeam=f
while(team.hasNe
def member=tea
if(member.PartyI
partOfTeam=tr
}
}
if(!partOfTeam){
if(!adf.util.usuario
throw new orac
}
}
}
}
return true
FND_ACFF_LVR_Attribu Field Validation return oracle.apps.fn
teCategory__AttributeC Field Name : AttributeCategory "ContextCode", "Bin
ategory
Rule1 Field Validation adf.source.isLookup
Field Name :
UsuarioDesasignado_Id_c
Rule1 Field Validation adf.source.isLookup
Field Name : ActividadEconomica_Id_c
Rule1 Field Validation adf.source.isLookup
Field Name : GrupoComercialDin_Id_c
Rule1 Field Validation adf.source.isLookup
Field Name :
NombreCatalogoCIIUDin_Id_c
Rule1 Field Validation adf.source.isLookup
Field Name : LeadProgenitor_Id_c

Object Functions
Name Parameters Return Type Privileged Visibility Description
CrearPerson void No Default
aJuridicaNet
plus
ActualizarPe void No Default
rsonaJuridic
aNetplus
setFechaVen void No Default
taBruta

fafafa void No Default


fafafa void No Default

ValidarDupli void No Default


cadosC
busquedaCII void No Default
U

getDireccion void No Default


Lead
filaValida Boolean No Default

LlenadoDoc void No Default


umentosC
funcionCrea tipodocumento- void No Default
Cliente String,nroDocume
nto-String
regularizarC void No Callable by
uenta External
Systems
aplicarRegla List No Default
sTemporalid
ad

reasignacion void No Callable by


Cascada External
Systems

EliminarRegi TipoDocumento- void No Default


stroClienteN String
etplus
crearActualiz TipoDocumento- void No Default
arRegistroCli String,NroDocume
enteNetplus nto-String

caracteresEs void No Default


pecialesDire
ccion
contabilizarC void No Default
ontratosTota
les
estadoTemp String No Default
oralidad

Object Workflows
Name Definition Name Event Point Description
reasignacionCascada reasignacionCascada Update

Regularizar_Cuenta Regularizar_Cuenta Update

Dynamic Layouts
Layout Name Active Role
Detalles Administrador Yes ADMIN_GENERAL_PNT;
Detalle Masivo Yes USUARIO_MASIVO;
Detalle Corporativo Yes
Edición Corporativo No
Diseño Busqueda y Seleccionar Yes
Creación Administrador Yes ADMIN_GENERAL_PNT;
Creación Masivo Yes USUARIO_MASIVO;
Creación Corporativo Yes
Landing Masivo Yes USUARIO_MASIVO;
Landing Corporativo Yes
anization
ntes
B
M
ORGANIZATION_PROFILES
61
7
11
18
2
7
10

Searchable
Yes
Yes
Yes
No
Yes
No
Yes

Name Default Value Required Updatable Searchable REST Enabl


RIBUTE_NUMBER014 No Yes No Yes
RIBUTE_CHAR025 N Yes Yes No Yes
RIBUTE_NUMBER007 No Yes No Yes
No Yes No Yes
No No No Yes
RIBUTE_CHAR015 No Yes No Yes
RIBUTE_CHAR013 PJ Yes Yes Yes Yes
RIBUTE_CHAR020 No Yes No Yes
RIBUTE_CHAR012 No Yes Yes Yes
RIBUTE_CHAR007 No Yes No Yes
RIBUTE_CHAR009 Yes Yes Yes Yes
RIBUTE_CHAR003 No Yes Yes Yes
RIBUTE_CHAR032 No Yes No Yes
RIBUTE_NUMBER006 No Yes No Yes
No No No Yes
No No No Yes

RIBUTE_NUMBER008 No Yes No Yes


RIBUTE_NUMBER002 No Yes No Yes
RIBUTE_CHAR018 Yes Yes Yes Yes
RIBUTE_CHAR001 No Yes Yes Yes
RIBUTE_CHAR011 No Yes Yes Yes
RIBUTE_TIMESTAMP002 No Yes No Yes
RIBUTE_CHAR024 No Yes No Yes
RIBUTE_CHAR019 N Yes Yes No Yes
RIBUTE_CHAR008 No Yes No Yes
RIBUTE_CHAR036 N Yes Yes No Yes
RIBUTE_CHAR005 No Yes No Yes
RIBUTE_CHAR033 N Yes Yes No Yes
No No No Yes

RIBUTE_NUMBER015 No Yes No Yes


RIBUTE_CHAR031 N Yes Yes No Yes
No Yes No Yes
RIBUTE_CLOB001 No Yes No Yes
RIBUTE_NUMBER005 No Yes No Yes
RIBUTE_CHAR016 No Yes No Yes
RIBUTE_CHAR029 No Yes No Yes
RIBUTE_TIMESTAMP001 No Yes No Yes
RIBUTE_NUMBER010 No Yes No Yes
RIBUTE_CHAR014 No Yes No Yes
RIBUTE_CHAR035 N Yes Yes No Yes
RIBUTE_NUMBER017 No Yes No Yes
RIBUTE_NUMBER001 No Yes No Yes
RIBUTE_CHAR017 No Yes No Yes
RIBUTE_CHAR006 No Yes No Yes
RIBUTE_NUMBER003 No Yes Yes Yes
RIBUTE_CHAR004 No Yes Yes Yes
RIBUTE_NUMBER018 No Yes Yes Yes
RIBUTE_CHAR022 No Yes No Yes
RIBUTE_NUMBER011 No Yes No Yes
No Yes No Yes
No Yes No Yes
RIBUTE_CHAR030 No Yes No Yes
RIBUTE_NUMBER004 No Yes No Yes
RIBUTE_NUMBER013 No Yes No Yes
RIBUTE_NUMBER012 No Yes No Yes
RIBUTE_CHAR010 No Yes No Yes
RIBUTE_NUMBER016 No Yes No Yes
No Yes No Yes
RIBUTE_CHAR034 N Yes Yes No Yes
RIBUTE_CHAR023 No Yes No Yes
RIBUTE_CHAR021 No Yes No Yes
RIBUTE_NUMBER009 No Yes Yes Yes

Expression
if(AreaComercial_c=='MASIVO' && nvl(RazonSocial_c,'')!=''){
setAttribute('OrganizationName',RazonSocial_c)
}
setAttribute('EstadoDeTemporalidad_c','ACTIVA')
setAttribute('AreaComercial_c',adf.util.usuarioMasivoCorporativo())
if(AreaComercial_c=='MASIVO'){
setAttribute('FechaDeAsignacion_c',null)
setAttribute('EstadoDeTemporalidad_c','INACTIVA')
return true
}
if(OwnerPartyId!=null){
setAttribute('FechaDeAsignacion_c',today())
}
else{
setAttribute('FechaDeAsignacion_c',null)
}
def fecha=date(2001,01,01)
if(nvl(FechaDeAsignacion_c,fecha)!=fecha){
def dias=adf.util.diasTemporalidad(nvl(AreaComercial_c,''),'CUENTA','')
setAttribute('DisponibleHasta_c',nvl(FechaDeAsignacion_c,today())+dias.toInteger())
}
else
{
setAttribute('DisponibleHasta_c',null)
}
setAttribute('EstadoDeTemporalidad_c','ACTIVA')
setAttribute('OportunidadesAbiertas_c',0)
getDireccionLead()
if(SalesProfileType == 'ZCA_CUSTOMER' || SalesProfileType == 'ZCA_PROSPECT'){
def historico = newView('HistoricoDeTemporalidad_c')
def crear = historico.createRow();
crear.setAttribute('IdCuenta_c', PartyNumber);
crear.setAttribute('RecordName', '--');
crear.setAttribute('ValorActual_c',DisponibleHasta_c);
historico.insertRow(crear)
}
LlenadoDocumentosC()
ValidarDuplicadosC()
busquedaCIIU()
println('pruebas logs')
def re= getOriginalAttributeValue('DisponibleHasta_c')
if(nvl(re,'')==''){
re='–'
}
if(isAttributeChanged('DisponibleHasta_c')&& re!=DisponibleHasta_c){
def historico = newView('HistoricoDeTemporalidad_c')
def crear = historico.createRow()
crear.setAttribute('IdCuenta_c',PartyNumber)
crear.setAttribute('RecordName', re)
crear.setAttribute('ValorActual_c',DisponibleHasta_c)
historico.insertRow(crear)

}
if(OportunidadesAbiertas_c==-1){
setAttribute('OportunidadesAbiertas_c',0)
}
if(LeadsAbiertos_c==-1){
setAttribute('LeadsAbiertos_c',0)
}

if(AreaComercial_c=='MASIVO' || nvl(AreaComercial_c,'')==''){
setAttribute('FechaDeAsignacion_c',null)
setAttribute('EstadoDeTemporalidad_c','INACTIVA')
return true
}
def cambioContratosActivos = isAttributeChanged('TotalDeContratosActivos_c')
def previousOwnerId=getOriginalAttributeValue('OwnerPartyId') as Long
def cambioOwner=isAttributeChanged('OwnerPartyId') && OwnerPartyId!=previousOwnerId
def cambioLeadsAbiertos=isAttributeChanged('LeadsAbiertos_c')
def cambioOportunidadesAbiertas=isAttributeChanged('OportunidadesAbiertas_c')
def cambioTotalContratosActivos= isAttributeChanged('TotalDeContratosActivos_c')
def cambioTotalContratosIngresados= isAttributeChanged('TotalDeContratosIngresados_c')
def cambioTotalContratosNCT= isAttributeChanged('TotalDeContratosNoConcretadosTemporales_c')
def cambioTotalContratosDT= isAttributeChanged('TotalDeContratosDesactivadosTemporales_c')
def totalContratosActivos=nvl(TotalDeContratosActivos_c, 0 as BigDecimal)
def totalContratosIngresados=nvl(TotalDeContratosDesactivadosTemporales_c, 0 as BigDecimal)
def totalContratosDT=nvl(TotalDeContratosDesactivadosTemporales_c, 0 as BigDecimal)
def totalContratosNCT=nvl(TotalDeContratosNoConcretadosTemporales_c, 0 as BigDecimal)

def contratosPlanesTotales=0
def cambioTotalContratos= cambioTotalContratosActivos || cambioTotalContratosIngresados || cambioTotalContratosNCT || cambioTo
def sinContratosActivos= totalContratosActivos == 0 && nvl(TotalDeContratosIngresados_c, 0 as BigDecimal) == 0 &&
nvl(TotalDeContratosNoConcretadosTemporales_c, 0 as BigDecimal) == 0 && nvl(TotalDeContratosDesactivadosTemporales_c,
def cambiarFechaInicioTemporalidad = isAttributeChanged('CodigoNetPlus_c') 0 as Big
&& nvl(CodigoNetPlus_c,'') !='' || cambioTotalContratos
def cambioConsiderarCliente=isAttributeChanged('ConsiderarComoCliente_c')
if(cambioOwner||cambioLeadsAbiertos||cambioOportunidadesAbiertas || cambioTotalContratos || cambioConsiderarCliente ){
def currentOwnerId=nvl(OwnerPartyId,0 as Long)
def usuarioGenericoId=0
if(nvl(AreaComercial_c,'')=='CORPORATIVO'){
usuarioGenericoId=adf.util.usuarioGenericoCorporativo()
}
else if(nvl(AreaComercial_c,'')=='MASIVO'){
usuarioGenericoId=adf.util.usuarioGenericoMasivo()
}
def leadsAbiertos=nvl(LeadsAbiertos_c,0 as BigDecimal)as Long
def oportunidadesAbiertas=nvl(OportunidadesAbiertas_c,0 as BigDecimal) as Long
def statusTemporalidad=EstadoDeTemporalidad_c
def fechaAsignacion=nvl(FechaDeAsignacion_c,today())
def disponibleHasta=null
if(cambioOwner || cambiarFechaInicioTemporalidad){
fechaAsignacion=today()
//setAttribute('OverrideReassignment_c','Y')
if(OverrideReassignment_c!='Y' && AreaComercial_c=='CORPORATIVO' && !cambiarFechaInicioTemporalidad){
def mapCliente=[:]
def tipoCliente=''
mapCliente.put('customerId',PartyId)
mapCliente.put('ownerId',OwnerPartyId)
mapCliente.put('tipoCliente','ORGANIZATION')
adf.util.reasignarListaClientes([mapCliente])
}
}
if(sinContratosActivos){
println('Sin contratos activos')
}
else{
println('Con contratos activos')
}
if(currentOwnerId==usuarioGenericoId){
statusTemporalidad='DESASIGNADO'
if(cambioOwner){
setAttribute('UsuarioDesasignado_Id_c',adf.util.getResourceProfileId(previousOwnerId))
def team=Team
while(team.hasNext()){
def member=team.next()
if(member.PartyId==previousOwnerId)
member.remove()
}
if(ConsiderarComoCliente_c=='Y'){
setAttribute('ConsiderarComoCliente_c','N')
}
fechaAsignacion=today()
}
}
else if((leadsAbiertos>0 || oportunidadesAbiertas>0 )&& nvl(ConsiderarComoCliente_c,'N') =='N' || !sinContratosActivos ){
println('Status temporalidad: INACTIVA')
statusTemporalidad='INACTIVA'
}
else{
statusTemporalidad='ACTIVA'
disponibleHasta=DisponibleHasta_c
if(cambioOwner || cambiarFechaInicioTemporalidad){
fechaAsignacion=today()
}
def fecha=date(2001,01,01)
def cuentaOCliente = ''
if(nvl(ConsiderarComoCliente_c, 'N') == 'N'){
cuentaOCliente = 'CUENTA'
}else{
cuentaOCliente = 'CLIENTE'
}
def dias=adf.util.diasTemporalidad(nvl(AreaComercial_c,''),cuentaOCliente,'')
println('DIAS:' + 'DIAS')
disponibleHasta=fechaAsignacion+dias.toInteger()

}
setAttribute('EstadoDeTemporalidad_c',statusTemporalidad)
setAttribute('DisponibleHasta_c',disponibleHasta)
setAttribute('FechaDeAsignacion_c',fechaAsignacion)
}
if(OverrideReassignment_c=='Y'){
setAttribute('OverrideReassignment_c','N')
}

LlenadoDocumentosC()
if(isAttributeChanged('JgzzFiscalCode') || isAttributeChanged('RUCExterno_c') || isAttributeChanged('Pasaporte_c' ) ||isAttributeChanged
isAttributeChanged('NumeroDeDocumento_c'
ValidarDuplicadosC() ) /*|| nvl(JgzzFiscalCode,'')=='' || nvl(RUCExterno_c,'')=='' || nvl(Pasaporte_c,'')==''*/){
}
if(isAttributeChanged('ActualizarClienteEnNetplus_c')&&ActualizarClienteEnNetplus_c=='Y'){
setAttribute('ActualizarClienteEnNetplus_c','N')
//funcionCreaCliente(java.lang.String,java.lang.String)
}
if(isAttributeChanged('TipoDeDocumento_c' )){
}
if(isAttributeChanged('JgzzFiscalCode')|| isAttributeChanged('ActualizarInformacionCIIU_c')&&ActualizarInformacionCIIU_c=='Y'){
setAttribute('ActualizarInformacionCIIU_c','N')
busquedaCIIU()
}
def oldRuc= getOriginalAttributeValue('JgzzFiscalCode')
def oldPas= getOriginalAttributeValue('Pasaporte_c')
def oldRucE= getOriginalAttributeValue('RUCExterno_c')
def ruc =isAttributeChanged('JgzzFiscalCode')
def pasaporte = isAttributeChanged('Pasaporte_c')
def RucE = isAttributeChanged('RUCExterno_c')

if(pasaporte){
if(nvl(oldPas,'') != '' && !adf.util.usuarioAdministrador()){
//println('Pasaporte valor origininal: '+oldPas)
if(nvl(Pasaporte_c,'') != nvl(oldPas,'') && (SalesProfileType=='ZCA_PROSPECT' || SalesProfileType=='ZCA_CUSTOMER')){
//println( 'pasaporte valor actual: ' + Pasaporte_c)
throw new oracle.jbo.ValidationException('(BDS) No se puede Modificar este Campo Pasaporte')
}
}

if( nvl(Pasaporte_c,'')==''){
EliminarRegistroClienteNetplus('P')
}else{
println('NumeroDePasaporte:'+Pasaporte_c)
crearActualizarRegistroClienteNetplus('P',Pasaporte_c)
}
}
if(ruc){
if(nvl(oldRuc,'') != '' && !adf.util.usuarioAdministrador()){
//println('RUC valor origininal: '+oldRuc)
if(nvl(JgzzFiscalCode,'') != nvl(oldRuc,'') && (SalesProfileType=='ZCA_PROSPECT' || SalesProfileType=='ZCA_CUSTOMER')){
//println( 'RUC valor actual: ' + JgzzFiscalCode)
throw new oracle.jbo.ValidationException('(BDS) No se puede Modificar este Campo RUC')
}
}

if( nvl(JgzzFiscalCode,'')==''){
EliminarRegistroClienteNetplus('R')
}else{
println('JgzzFiscalCode:'+JgzzFiscalCode)
crearActualizarRegistroClienteNetplus('R',JgzzFiscalCode)
}
}

if(RucE){
if(nvl(oldRuc,'') != '' && !adf.util.usuarioAdministrador()){
println('RUC valor origininal: '+oldRuc)
if(nvl(JgzzFiscalCode,'') != nvl(oldRuc,'') && (SalesProfileType=='ZCA_PROSPECT' || SalesProfileType=='ZCA_CUSTOMER')){
println( 'RUC valor actual: ' + JgzzFiscalCode)
throw new oracle.jbo.ValidationException('(BDS) No se puede Modificar este Campo RUC')
}
}

if( nvl(RUCExterno_c,'')==''){
EliminarRegistroClienteNetplus('RE')
}else{
println('NumeroDeRucEx:'+RUCExterno_c)
crearActualizarRegistroClienteNetplus('RE',RUCExterno_c)
}
}
if(AreaComercial_c =='MASIVO'){
//caracteresEspecialesDireccion()
def cambioFirstName= isAttributeChanged('RazonSocial_c')
def cambioLastName= isAttributeChanged('OrganizationName')
def cambioCorreoElectronico_c= isAttributeChanged('PreferredContactEmailAddress')
if(cambioFirstName||cambioLastName||cambioCorreoElectronico_c){

def codigoNP = nvl(CodigoNetPlus_c,'')


if(CodigoNetPlus_c!=''){
def nroDoc;
def tipoDoc;
def cliNets = newView('ClienteNetplus_c');
def cliNetc=newViewCriteria(cliNets)
def cliNetr=cliNetc.createRow()
def cliNeti=cliNetr.ensureCriteriaItem('Cuenta_Id_c')
cliNeti.setOperator('=')
cliNeti.setValue(PartyId)
def cliNetj=cliNetr.ensureCriteriaItem('RecordName')
cliNetj.setOperator('=')
cliNetj.setValue(codigoNP)
cliNetc.insertRow(cliNetr)
cliNets.appendViewCriteria(cliNetc)
cliNets.executeQuery()
def existe=false
while(cliNets.hasNext()&&!existe){
def cliNet=cliNets.next()
existe=true
nroDoc=nvl(cliNet.NumeroDeDocumento_c,'')
tipoDoc=nvl(cliNet.TipoDeDocumento_c,'')
}
if(existe){
funcionCreaCliente(tipoDoc,nroDoc)
println('Actualización enviada a netplus, actualizado por: ' )

}
}
}

Expression
if(getPrimaryRowState().isNew())
return true
if(adf.util.usuarioAdministrador() || adf.util.usuarioAdministradorTemporalidad()){
return true
}
def currentUsername=adf.context.getSecurityContext()?.getUserProfile()?.getUserID()
def moc=adf.util.usuarioMasivoCorporativo()
def usuarioMasivo=moc=='MASIVO'
def usuarioCorporativo= moc=='CORPORATIVO'

def resources=newView('Resource')
def resourcec=newViewCriteria(resources)
def resourcer=resourcec.createRow()
def resourcei=resourcer.ensureCriteriaItem('Username')
resourcei.setOperator('=')
resourcei.setValue(currentUsername)
resourcec.insertRow(resourcer)
resources.appendViewCriteria(resourcec)
resources.executeQuery()
def currentUserId
while(resources.hasNext()&&currentUserId==null){
def resource=resources.next()
currentUserId=resource.PartyId
}
def genericoMasivo=adf.util.usuarioGenericoMasivo()
def genericoCorporativo=adf.util.usuarioGenericoCorporativo()

if( isAttributeChanged('OwnerPartyId')){
if(OwnerPartyId!=currentUserId){
throw new oracle.jbo.ValidationException('Sólo los managers pueden asignar una cuenta a otros usuarios')
}
def prevOwner=getOriginalAttributeValue('OwnerPartyId') as Long
def usuarioDesasignadoId=nvl(UsuarioDesasignado_Obj_c?.PartyId,0 as Long)
def tipoUsuario=adf.util.usuarioMasivoCorporativo()
if((prevOwner==genericoMasivo && usuarioMasivo )||(prevOwner==genericoCorporativo && usuarioCorporativo )){
def fechaNull=new Date(01,01,50)
def fechaAsignacion=nvl(FechaDeAsignacion_c,fechaNull)
if(usuarioDesasignadoId!=currentUserId || fechaAsignacion+15<today()){
return true
}
else{
throw new oracle.jbo.ValidationException('Este usuario no puede tomar el contacto porque le fue desasignado en el pasado, hasta
de}asignación')
}
else{
throw new oracle.jbo.ValidationException('No es posible tomar el contacto porque está siendo gestionado por otro ejecutivo')
}
}
else{
if(OwnerPartyId!=currentUserId){
def team=Team
def partOfTeam=false
while(team.hasNext()&&!partOfTeam){
def member=team.next()
if(member.PartyId==currentUserId && !member.getPrimaryRowState().isNew()){
partOfTeam=true
}
}
if(!partOfTeam){
if(!adf.util.usuarioAdministradorTemporalidad() && !usuarioMasivo){
throw new oracle.jbo.ValidationException('No puedes modificar este contacto porque no eres parte del equipo de trabajo')
}
}
}
}
return true
return oracle.apps.fnd.applcore.oaext.model.OAEntityImpl.validateFlexfieldValue(newValue, adf.source, "FND_ACFF_VA_AttributeCatego
"ContextCode", "Bind_ContextCode")
adf.source.isLookupIdValid('UsuarioDesasignado_Id_c',newValue)

adf.source.isLookupIdValid('ActividadEconomica_Id_c',newValue)

adf.source.isLookupIdValid('GrupoComercialDin_Id_c',newValue)

adf.source.isLookupIdValid('NombreCatalogoCIIUDin_Id_c',newValue)

adf.source.isLookupIdValid('LeadProgenitor_Id_c',newValue)

Expression
def CodigoNetPlus = CodigoNetPlus_c;

println('CodigoNetPlus: ' +CodigoNetPlus_c)


def identificadorOSC_c =PartyId;
def NumIntegracion = '';
def Bitacora =[:]
Bitacora.put('Cuenta_Id_c',identificadorOSC_c)

def cTelefonicoPais_c = '';


def codigoArea_c = '';
def numero_c = '';
def extension_c= '';

def ctTelefonicoPais_c= '';


def codigoAreaT_c = '';
def numeroT_c = '';
def phonetype ='';
def genero_c = '';
def fechaNacimiento_c = '';
def apellidos_c = '';
def referido_c = '';
def cargo_c= '';
def afinidad_c='';
def rolComprador_c = '';
def contactPointId = '';
def idContacto_c

def telefonos = Phone;


while (telefonos.hasNext()){
def telefono = telefonos.next();

phonetype = telefono.PhoneType;
println('tipo de telefono: ' + phonetype)
if (phonetype == 'WORK'){

cTelefonicoPais_c = nvl(telefono.PhoneCountryCode,'');
codigoArea_c = nvl(telefono.PhoneAreaCode,'');
numero_c = nvl(telefono.PhoneNumber,'');
extension_c = nvl(telefono.PhoneExtension,'');
contactPointId = telefono.contactPointId;
}else{
ctTelefonicoPais_c = nvl(telefono.PhoneCountryCode,'');
codigoAreaT_c = nvl(telefono.PhoneAreaCode,'');
numeroT_c = nvl(telefono.PhoneNumber,'');
extension_c = nvl(telefono.PhoneExtension,'');
contactPointId = telefono.ContactPointId;
}
}

def admin_view = newView('PersonProfile');


def criteria = newViewCriteria(admin_view);
def row = criteria.createRow();
def vrc = row.ensureCriteriaItem('PartyId');
vrc.setOperator('=');
vrc.setValue(PreferredContactPersonId);
criteria.insertRow(row);
admin_view.appendViewCriteria(criteria);
admin_view.executeQuery();
while (admin_view.hasNext()) {
def curRow = admin_view.next()
genero_c = curRow.Gender;
fechaNacimiento_c = curRow.DateOfBirth;
apellidos_c = curRow.PersonLastName;
referido_c = curRow.Referidoc_c;
cargo_c= curRow.JobTitle;
afinidad_c= curRow.SalesAffinityCode;
rolComprador_c = curRow.SalesBuyingRoleCode;
idContacto_c =curRow.PartyId;
}
idContacto_c =PreferredContactPersonId;
def tipo_c =''+nvl(TipoDePersona_c,'');
def nombres_c =''+nvl(OrganizationName,'');
def razonSocial_c =''+nvl(RazonSocial_c,'');
def numeroDocumento_c =''+nvl(NumeroDeDocumento_c,'');
def grupoComercial_c =''+nvl(GrupoComercial_c,'');
def sector_c =''+nvl(Sectorb_c,'');
def paginaWeb_c = ''+nvl(PrimaryURL,'');
def sectoresComerciales_c =''+nvl(SectoresComerciales_c,'');
def contactoPrincipal_c =''+nvl(PreferredContactName,'');

def identificadorPartyOSC_c = '' + nvl(PartyNumber,'');


def idEjecutivoCorporativo_c =''+nvl(OwnerPartyId,'');
def correoContacto_c = ''+nvl(PreferredContactEmailAddress,'');
def tipoDocumento_c =''+nvl(TipoDeDocumento_c,'');
def tipoCliente_c = ''+nvl(SalesProfileType,'');
def ejecutivoCorporativo_c =''+nvl(OwnerPartyName,'');
def telefonoContacto_c = ''+nvl(PreferredContactPhone,'');
def correoElectronico = '';

//def areaComercial_c = ''+ nvl(AreaComercial_c,'');


//def tipoCon_c = ''+ nvl(TipoCon_c,'');
//def tipoCon_c = '';
def pais_c ='';
def callePrincipal_c ='';
def calleSecundaria_c ='';
def canton_c ='';
def provincia_c ='';
def addressNumber = '';
def direcciones = PartySite;
while (direcciones.hasNext()){
def direccion = direcciones.next();
pais_c = nvl(direccion.Country,'');
callePrincipal_c = nvl(direccion.Address1,'');
calleSecundaria_c = nvl(direccion.Address2,'');
def provincia = nvl(direccion.State,'');
provincia_c = provincia.toUpperCase();
def canton = nvl(direccion.AddrElementAttribute1,'');
canton_c = canton.toUpperCase();
addressNumber =nvl(direccion.PartySiteNumber,'');

}
def payload = [:]
payload.put('tipo',tipo_c)
payload.put('extension',extension_c)
payload.put('numero',numero_c)
payload.put('fechaNacimiento',fechaNacimiento_c)
payload.put('provincia',provincia_c)
payload.put('nombres',nombres_c)
payload.put('razonSocial',razonSocial_c)
payload.put('cTelefonicoPais',cTelefonicoPais_c)
payload.put('genero',genero_c)
payload.put('referido',referido_c)
payload.put('numeroDocumento',numeroDocumento_c)
payload.put('grupoComercial',grupoComercial_c)
payload.put('cargo',cargo_c)
payload.put('rolComprador',rolComprador_c)
payload.put('sector',sector_c)
payload.put('apellidos',apellidos_c)
payload.put('paginaWeb',paginaWeb_c)
payload.put('sectoresComerciales',sectoresComerciales_c)
payload.put('contactoPrincipal',contactoPrincipal_c)
payload.put('callePrincipal',callePrincipal_c)
payload.put('idContacto',idContacto_c)
payload.put('identificadorPartyOSC',identificadorPartyOSC_c)
payload.put('idEjecutivoCorporativo',idEjecutivoCorporativo_c)
payload.put('identificadorOSC',identificadorOSC_c)
payload.put('ctTelefonicoPais',ctTelefonicoPais_c)
payload.put('pais',pais_c)
payload.put('correoContacto',correoContacto_c)
payload.put('tipoDocumento',tipoDocumento_c)
payload.put('afinidad',afinidad_c)

payload.put('tipoCliente',tipoCliente_c)

payload.put('codigoArea',codigoArea_c)
payload.put('canton',canton_c)
payload.put('ejecutivoCorporativo',ejecutivoCorporativo_c)
payload.put('codigoAreaT',codigoAreaT_c)
payload.put('telefonoContacto',telefonoContacto_c)
payload.put('numeroT',numeroT_c)
payload.put('correoElectronico',correoContacto_c)
payload.put('calleSecundaria',calleSecundaria_c)
payload.put('contactPointId',contactPointId)
payload.put('addressNumber',addressNumber)
println('PAYLOAD PJ: '+ payload)

def MensajeIntegracion = '';


def creaCliente = '';
def codigoCliente=' ';
def ActualizaCliente = '';
def EstatusInt = '';
def response = '';
def data_c='';

try{
if (CodigoNetPlus == null ||CodigoNetPlus == ''||CodigoNetPlus == '0'||CodigoNetPlus == ' '){
creaCliente= adf.webServices.CrearClienteNaturalJuridico.POST(payload)
NumIntegracion = '11';
response = creaCliente;
data_c = creaCliente?.data;
MensajeIntegracion = creaCliente?.message;
}else{
ActualizaCliente= adf.webServices.ActualizarClienteNaturalJuridico.POST(payload)
NumIntegracion = '11';
response = ActualizaCliente;
data_c = ActualizaCliente?.data;
MensajeIntegracion = ActualizaCliente?.message;
}

if(response.code == '1' ){
println('entrando a codigo 1')
codigoCliente = '' + data_c.codCliente;
EstatusInt = ''+ data_c.estatusIntegracion;
setAttribute('EstatusInt_c',EstatusInt );
setAttribute('CodigoNetPlus_c',codigoCliente );
setAttribute('DesEstatusdeIntegracion_c',MensajeIntegracion);
setAttribute('SalesProfileType','ZCA_CUSTOMER')

def Cnetplus = newView('ClienteNetplus_c');


def cn = Cnetplus.createRow();
cn.setAttribute('TipoDeDocumento_c',tipoDocumento_c)
cn.setAttribute('NumeroDeDocumento_c',numeroDocumento_c)
cn.setAttribute('RecordName',CodigoNetPlus_c)

Bitacora.put('Integracion_c',NumIntegracion )
Bitacora.put('MensajeIntegracion_c',encodeToBase64(''+MensajeIntegracion))
Bitacora.put('Payload_c',encodeToBase64(''+payload))
Bitacora.put('Response_c',encodeToBase64(''+response))
Bitacora.put('IdPrincipal_c',codigoCliente)

adf.webServices.LogBitacora.POST(Bitacora)
}

else{
println('entrando a codigo igual a 0')

setAttribute('EstatusInt_c',EstatusInt );
//setAttribute('CodigoNetPlus_c',codigoCliente );
setAttribute('DesEstatusdeIntegracion_c',MensajeIntegracion);
throw new oracle.jbo.ValidationException(''+ MensajeIntegracion)

Bitacora.put('Integracion_c',NumIntegracion)
Bitacora.put('MensajeIntegracion_c',encodeToBase64(''+MensajeIntegracion))
Bitacora.put('Payload_c',encodeToBase64(''+ payload))
Bitacora.put('Response_c',encodeToBase64(''+response))
Bitacora.put('IdPrincipal_c',codigoCliente)

adf.webServices.LogBitacora.POST(Bitacora)

}
catch(Exception e){
if (codigoCliente == null ||codigoCliente == '' ){
codigoCliente=0;
}
println('sin respuesta')
def msg=e.message

Bitacora.put('Integracion_c',NumIntegracion)
Bitacora.put('MensajeIntegracion_c',encodeToBase64(msg))
Bitacora.put('Payload_c',encodeToBase64(''+ payload))
Bitacora.put('Response_c',encodeToBase64(''+ response))
Bitacora.put('IdPrincipal_c',codigoCliente)
println('payload bitacora'+Bitacora )
adf.webServices.LogBitacora.POST(Bitacora)
throw new oracle.jbo.ValidationException(''+ msg)

}
//def codCiudadSucursal = '';
def identificadorPartyOSC_c = '' + nvl(PartyNumber,'');
def identificadorOSC_c =''+ nvl(PartyId,'');
def tipoDocumento_c =''+nvl(TipoDeDocumento_c,'');
def numeroDocumento_c =''+nvl(NumeroDeDocumento_c,'');
def tipo_c =''+nvl(TipoDePersona_c,'');
def sector_c =''+nvl(Sectorb_c,'');
def nombres_c =''+nvl(OrganizationName,'');
def sectoresComerciales_c =''+nvl(SectoresComerciales_c,'');
def idEjecutivoCorporativo_c =''+nvl(OwnerPartyId,'');
def ejecutivoCorporativo_c =''+nvl(OwnerPartyName,'');
def razonSocial_c =''+nvl(RazonSocial_c,'');
def grupoComercial_c =''+nvl(GrupoComercial_c,'');
def paginaWeb_c = ''+nvl(PrimaryURL,'');
def idContacto_c = ''+nvl(PreferredContactPersonId,'');
def contactoPrincipal_c =''+nvl(PreferredContactName,'');
def telefonoContacto_c = ''+nvl(PreferredContactPhone,'');
def correoContacto_c = ''+nvl(PreferredContactEmailAddress,'');
def genero_c = '';
def fechaNacimiento_c = '';
def apellidos_c = '';
def referido_c = '';
def cargo_c= '';
def afinidad_c='';
def rolComprador_c = '';
def curRow ='';

def admin_view = newView('PersonProfile');


def criteria = newViewCriteria(admin_view);
def row = criteria.createRow();
def vrc = row.ensureCriteriaItem('PartyId');
vrc.setOperator('=');
vrc.setValue(PreferredContactPersonId);
criteria.insertRow(row);
admin_view.appendViewCriteria(criteria);
admin_view.executeQuery();
while (admin_view.hasNext()) {
curRow = admin_view.next()
genero_c = curRow.Gender;
fechaNacimiento_c = curRow.DateOfBirth;
apellidos_c = curRow.PersonLastName;
referido_c = curRow.Referidoc_c;
cargo_c= curRow.JobTitle;
afinidad_c= curRow.SalesAffinityCode;
rolComprador_c = curRow.SalesBuyingRoleCode;
}
//---------------------------------------
def cTelefonicoPais_c = '';
def codigoArea_c = '';
def numero_c = '';
def extension_c= '';

def ctTelefonicoPais_c= '';


def codigoAreaT_c = '';
def numeroT_c = '';
def contactId = '';

def telefonos = Phone;


while (telefonos.hasNext()){
def telefono = telefonos.next();
cTelefonicoPais_c = telefono.PhoneCountryCode;
codigoArea_c = telefono.PhoneAreaCode;
numero_c = telefono.PhoneNumber;
extension_c = telefono.PhoneExtension;
contactId = telefono.ContactPointId;

}
//---------------------------
def pais_c ='';
def callePrincipal_c ='';
def calleSecundaria_c ='';
def canton_c ='';
def provincia_c ='';
def addressId = '';
def direcciones = PartySite;
while (direcciones.hasNext()){
def direccion = direcciones.next();
pais_c = direccion.Country;
callePrincipal_c = direccion.Address1;
calleSecundaria_c = direccion.Address2;
provincia_c = upperCase(direccion.State);
canton_c = upperCase(direccion.AddrElementAttribute1);
addressId = direccion.PartySiteNumber;

def payload = [:]


//payload.put('codCiudadSucursal',codCiudadSucursal)
payload.put('identificadorOSC',identificadorOSC_c)
payload.put('identificadorPartyOSC',identificadorPartyOSC_c)
payload.put('tipoDocumento',tipoDocumento_c)
payload.put('numeroDocumento',numeroDocumento_c)
payload.put('tipo',tipo_c)
payload.put('sector',sector_c)
payload.put('nombres',nombres_c)
payload.put('sectoresComerciales',sectoresComerciales_c)
payload.put('idEjecutivoCorporativo',idEjecutivoCorporativo_c)
payload.put('ejecutivoCorporativo',ejecutivoCorporativo_c)
payload.put('razonSocial',razonSocial_c)
payload.put('grupoComercial',grupoComercial_c)
payload.put('paginaWeb',paginaWeb_c)
payload.put('idContacto',idContacto_c)
payload.put('contactoPrincipal',contactoPrincipal_c)
payload.put('telefonoContacto',telefonoContacto_c)
payload.put('correoContacto',correoContacto_c)
payload.put('genero',genero_c)
payload.put('fechaNacimiento ',fechaNacimiento_c)
payload.put('apellidos',apellidos_c)
payload.put('referido',referido_c)
payload.put('cargo',cargo_c)
payload.put('afinidad',afinidad_c)
payload.put('rolComprador ',rolComprador_c)
payload.put('cTelefonicoPais',cTelefonicoPais_c)
payload.put('codigoArea',codigoArea_c)
payload.put('numero',numero_c)

payload.put('ctTelefonicoPais',ctTelefonicoPais_c)
payload.put('codigoAreaT',codigoAreaT_c)
payload.put('numeroT ',numeroT_c)
payload.put('extension',extension_c)
payload.put('correoElectronico',correoContacto_c)
payload.put('pais',pais_c)
payload.put('provincia',provincia_c)
payload.put('canton',canton_c)
payload.put('callePrincipal',callePrincipal_c)
payload.put('calleSecundaria',calleSecundaria_c)
payload.put('contactPointId',contactId)
payload.put('addressNumber',addressId)

println('PAYLOAD ACT juridico : ' +payload)

def MensajeIntegracion = '';


def ActualizaCliente = '';
def respuesta='';
def codigoCliente = '';

try{
//LOGICA DE INTEGRACIÓN
ActualizaCliente= adf.webServices.ActualizarClienteNaturalJuridico.POST(payload)
println(ActualizaCliente)
if(ActualizaCliente?.data.estatusIntegracion =='0' || ActualizaCliente?.data.estatusIntegracion =='2'){

MensajeIntegracion = ''+ActualizaCliente?.message;
codigoCliente = ''+ActualizaCliente?.data.codCliente;
if (ActualizaCliente?.data.codCliente == null ||ActualizaCliente?.data.codCliente=='') {
codigoCliente= ' ';
}else{
codigoCliente = '' + ActualizaCliente?.data.codCliente;
}
setAttribute('EstatusInt_c',ActualizaCliente?.data.estatusIntegracion);
setAttribute('CodigoNetPlus_c',codigoCliente);
setAttribute('DesEstatusdeIntegracion_c',MensajeIntegracion);
//MensajeIntegracion = ''+ActualizaCliente?.message;
throw new oracle.jbo.ValidationException(''+ MensajeIntegracion)
def POST_param=[:]
POST_param.put('Cuenta_Id_c',identificadorOSC_c)
POST_param.put('Integracion_c',11)
POST_param.put('MensajeIntegracion_c',encodeToBase64(MensajeIntegracion))
POST_param.put('Payload_c',encodeToBase64(''+ payload))
POST_param.put('Response_c',encodeToBase64(''+ActualizaCliente))
POST_param.put('IdPrincipal_c',codigoCliente)

adf.webServices.LogBitacora.POST(POST_param)
}

else{
throw new oracle.jbo.ValidationException(''+MensajeIntegracion)
setAttribute('EstatusInt_c',ActualizaCliente?.data.estatusIntegracion);
setAttribute('CodigoNetPlus_c',ActualizaCliente?.data.codCliente);
setAttribute('DesEstatusdeIntegracion_c',ActualizaCliente?.message);

MensajeIntegracion = ''+ActualizaCliente?.message;
def POST_param=[:]
POST_param.put('Cuenta_Id_c',identificadorOSC_c)
POST_param.put('Integracion_c',11)
POST_param.put('MensajeIntegracion_c',encodeToBase64(MensajeIntegracion))
POST_param.put('Payload_c',encodeToBase64(''+ payload))
POST_param.put('Response_c',encodeToBase64(''+ActualizaCliente))
POST_param.put('IdPrincipal_c',codigoCliente)

adf.webServices.LogBitacora.POST(POST_param)
throw new oracle.jbo.ValidationException(''+MensajeIntegracion)
}

}
catch(Exception e){
println('sin respuesta del servicio')
def msg=e.message
def POST_param=[:]
POST_param.put('Cuenta_Id_c',identificadorOSC_c)
POST_param.put('Integracion_c',11)
POST_param.put('MensajeIntegracion_c',encodeToBase64(msg))
POST_param.put('Payload_c',encodeToBase64(''+ payload))
POST_param.put('Response_c',encodeToBase64(''+ActualizaCliente))
POST_param.put('IdPrincipal_c',codigoCliente)

//adf.webServices.LogBitacora.POST(POST_param)
throw new oracle.jbo.ValidationException('Error: ' + e)

def fechaList=[]
def today=today()
def yearNum=year(today)
def monthNum= 0
monthNum=month(today) as Long
def i=0
def rangoFechas=15
while(i < rangoFechas){
def anioActual=yearNum-(-monthNum+i+1)/12 as Long
def mesActual=(monthNum-i-1+1200)%12+1
def monthStr= ''
if(mesActual==0)
mesActual=12
if(mesActual>= 10){
monthStr=''+mesActual
}
else{
monthStr= '0'+mesActual
}
def yearStr=''+anioActual
def fechaStr=yearStr+"-"+monthStr+"-"+"01"
println(fechaStr)
fechaList.add(java.sql.Date.valueOf(fechaStr))
i+=1
}
def optys=newView('OpportunityVO')
optys.setMaxFetchSize(5000)
optys.executeQuery()
def count=0
while(optys.hasNext()){
def opty=optys.next()
opty.setAttribute('FechaVentaBruta_c',fechaList[count%rangoFechas])
}
def map=[:]
map.put('1',1)
map.put('2',2)
map.put('3',3)
def keys=map.keySet()
throw new oracle.jbo.ValidationException('keys:'+keys)
def Espacios = 0;
if(true){
def ruc =nvl(JgzzFiscalCode,'').trim()
def rucEx=nvl(RUCExterno_c,'').trim()
def pas=nvl(Pasaporte_c,'').trim()
if((ruc!='' || rucEx!='' || pas!='')){
def nomEjecutivo=''+nvl(OwnerPartyName,'');
def errorMsg=''
def organizations = newView('OrganizationProfile');
def organizationc = newViewCriteria(organizations);
def organizationr = organizationc.createRow();
def useOr=false
//def organizationa=organizationr.ensureCriteriaItem('Status')
//organizationa.setOperator('=')
//organizationa.setValue('A')
if(ruc!=''){
def organizationi=organizationr.ensureCriteriaItem('JgzzFiscalCode')
organizationi.setOperator('=')
organizationi.setValue(ruc)
useOr=true
}
if(rucEx!=''){
def organizationj=organizationr.ensureCriteriaItem('RUCExterno_c')
organizationj.setOperator('=')
organizationj.setValue(rucEx)
if(useOr){
organizationj.setConjunction(0)
}
useOr=true
}
if(pas!=''){
def organizationk=organizationr.ensureCriteriaItem('Pasaporte_c')
organizationk.setOperator('=')
organizationk.setValue(pas)
if(useOr){
organizationk.setConjunction(0)
}
useOr=true
}
organizationc.insertRow(organizationr);
organizations.appendViewCriteria(organizationc);
organizations.executeQuery();
while (organizations.hasNext()) {
def curRow = organizations.next()
if(''+PartyId!=''+curRow.PartyId &&curRow.Status=='A' && !adf.util.usuarioAdministrador()){
if(ruc!=''&&curRow.JgzzFiscalCode==ruc){
println('PartyId1:'+PartyId+', PartyId2:'+curRow.PartyId)
println('PartyNumber1:'+PartyNumber+', PartyNumber2:'+curRow.PartyNumber)
println('Status1:'+Status+', Status2:'+curRow.Status)
errorMsg+='El numero de RUC '+ ruc + ' ya existe en la cuenta '+curRow.OrganizationName+' en la bandeja del usuar
'+curRow.OwnerPartyName+'.
} '
if(rucEx!=''&&curRow.RUCExterno_c==rucEx){
errorMsg+='El numero de RUC Externo '+ rucEx + ' ya existe en la cuenta '+curRow.OrganizationName+' en la bandej
'+curRow.OwnerPartyName+'.
} '
if(pas!=''&&curRow.Pasaporte_c==pas){
errorMsg+='El numero de Pasaporte '+ pas + ' ya existe en la cuenta '+curRow.OrganizationName+' en la bandeja del
'+curRow.OwnerPartyName+'.
} '
}
}
if(errorMsg!=''){
println('mensaje de error:' + errorMsg)
throw new oracle.jbo.ValidationException(errorMsg)
}
if(ruc!=''&&isAttributeChanged('JgzzFiscalCode')){
for (int i = 0; i < JgzzFiscalCode.length(); i++) {
if (JgzzFiscalCode.charAt(i) == ' ') {Espacios++;}
}
if (Espacios >0){
throw new oracle.jbo.ValidationException('El número de RUC no puede contener espacios.')
}

setAttribute('EstatusValid_c',adf.util.validaClienteNetplus('R',ruc))
}
if(pas!=''&& isAttributeChanged('Pasaporte_c') ){
for (int i = 0; i < Pasaporte_c.length(); i++) {
if (Pasaporte_c.charAt(i) == ' ') {Espacios++;}
}
if (Espacios >0){
throw new oracle.jbo.ValidationException('El número de Pasaporte no puede contener espacios.')
}
adf.util.validarFormatoDoc('P',pas)
setAttribute('EstatusValid_c',adf.util.validaClienteNetplus('P',nvl(Pasaporte_c,'')))
}

if(rucEx !=''){
for (int i = 0; i < RUCExterno_c.length(); i++) {
if (RUCExterno_c.charAt(i) == ' ') {Espacios++;}
}
if (Espacios >0){
throw new oracle.jbo.ValidationException('El número de RUC Externo no puede contener espacios.')
}
}
}
}
def ruc=nvl(JgzzFiscalCode,'')
if(ruc!=''){
def ciius=newView('CatalogoCIIU_c')
def ciiuc=newViewCriteria(ciius)
def ciiur=ciiuc.createRow()
def ciiui=ciiur.ensureCriteriaItem('RecordNumber')
ciiui.setOperator('=')
ciiui.setValue(ruc)
ciiuc.insertRow(ciiur)
ciius.appendViewCriteria(ciiuc)
ciius.executeQuery()
def existe=false
while(ciius.hasNext()&&!existe){
def ciiu = ciius.next()
setAttribute('NombreCatalogoCIIUDin_Id_c',ciiu.Id)
setAttribute('ActividadEconomica_Id_c',ciiu.ActividadEconomicaDin_Id_c)
setAttribute('Ciudad_c',nvl(ciiu.Ciudad_c,''))
setAttribute('Tamano_c',nvl(ciiu.Tamano_c,''))
setAttribute('SectorCIIU_c',nvl(ciiu.SectorCIIU_c,''))
setAttribute('CantidadEmpleados_c',nvl(ciiu.CantidadEmpleados_c,''))

}
}
def leadId =nvl(IdLeadProgenitor_c,0 as BigDecimal)
println('Ejecutando getDireccionLead')
if(leadId!=0){
println('lead diferente de null')
def leads=newView('Lead')
def leadc=newViewCriteria(leads)
def leadr=leadc.createRow()
def leadi=leadr.ensureCriteriaItem('LeadId')
leadi.setOperator('=')
leadi.setValue(leadId)
leadc.insertRow(leadr)
leads.appendViewCriteria(leadc)
leads.executeQuery()
while(leads.hasNext()){
println('Encontr¿e un Lead!')
def lead=leads.next()
println('lead enable create account=='+lead.EnableCreateAccount+'y tipoCliente=='+lead.TipoCliente_c)

if(lead.TipoCliente_c=='ORGANIZATION'&&nvl(lead.PrimaryContactState,'')!=''){
def locations = newView('Location')
def location = locations.createRow()

location.setAttribute('Address1',lead.PrimaryContactAddress1)
location.setAttribute('Address2',lead.PrimaryContactAddress2)
location.setAttribute('State',lead.PrimaryContactState)
location.setAttribute('Country',lead.PrimaryContactCountry)
location.setAttribute('City',lead.PrimaryContactCity)
location.setAttribute('AddrElementAttribute1',lead.AddrElementAttribute1)
location.setAttribute('CreatedByModule','ZCM')
locations.insertRow(location)
println('location:'+location)
def locationId = location.getAttribute('LocationId')
def partySites = PartySite
def partySite = partySites.createRow()
partySite.setAttribute('CreatedByModule','ZCM')
partySite.setAttribute('LocationId',locationId)
partySites.insertRow(partySite)
println('partySite:'+partySite)
}
}

}
def organizationName=nvl(OrganizationName,'')
def razonSocial=nvl(RazonSocial_c,'')
def moc=nvl(AreaComercial_c,'')
return organizationName!=''&&razonSocial!='' &&moc!=''
def isNew=getPrimaryRowState().isNew()
def cambioTipoDocumento=isAttributeChanged('TipoDeDocumento_c')
def cambioNumeroDocumento=isAttributeChanged('NumeroDeDocumento_c')
def tipoDocumento=nvl(TipoDeDocumento_c,'')
def numeroDocumento=nvl(NumeroDeDocumento_c,'')
def R= nvl(JgzzFiscalCode,'')
def RE= nvl(RUCExterno_c,'')
def P= nvl(Pasaporte_c,'')
if(cambioTipoDocumento||cambioNumeroDocumento||isNew||(R==''&&RE==''&&P=='')){
if(tipoDocumento!=''&&numeroDocumento!=''){
if(tipoDocumento=='R'){
setAttribute('JgzzFiscalCode',numeroDocumento)
}
else if(tipoDocumento=='RE'){
setAttribute('RUCExterno_c',numeroDocumento)
}
else if(tipoDocumento=='P'){
setAttribute('Pasaporte_c',numeroDocumento)
}
}
}

def cambioRuc=isAttributeChanged('JgzzFiscalCode')
def cambioRucExterno=isAttributeChanged('RUCExterno_c')
def cambioPasaporte=isAttributeChanged('Pasaporte_c')
R= nvl(JgzzFiscalCode,'')
RE= nvl(RUCExterno_c,'')
P= nvl(Pasaporte_c,'')
if(cambioRuc||cambioRucExterno||cambioPasaporte||isNew||numeroDocumento==''){
if( R!=''){
setAttribute('TipoDeDocumento_c','R')
setAttribute('NumeroDeDocumento_c',R)
}
else if(RE!=''){
setAttribute('TipoDeDocumento_c','RE')
setAttribute('NumeroDeDocumento_c',RE)
}
else if(P!=''){
setAttribute('TipoDeDocumento_c','P')
setAttribute('NumeroDeDocumento_c',P)
}
}
def CodigoNetPlus = CodigoNetPlus_c;

println('CodigoNetPlus: ' +CodigoNetPlus_c)


def identificadorOSC_c =PartyId;
def NumIntegracion = '';
def Bitacora =[:]
Bitacora.put('Cuenta_Id_c',identificadorOSC_c)

def cTelefonicoPais_c = '';


def codigoArea_c = '';
def numero_c = '';
def extension_c= '';

def ctTelefonicoPais_c= '';


def codigoAreaT_c = '';
def numeroT_c = '';
def phonetype ='';
def genero_c = '';
def fechaNacimiento_c = '';
def apellidos_c = '';
def referido_c = '';
def cargo_c= '';
def afinidad_c='';
def rolComprador_c = '';
def contactPointId = '';
def idContacto_c='';

def telefonos = Phone;


while (telefonos.hasNext()){
def telefono = telefonos.next();

phonetype = telefono.PhoneType;
println('tipo de telefono: ' + phonetype)
if (phonetype == 'WORK'){

cTelefonicoPais_c = nvl(telefono.PhoneCountryCode,'');
cTelefonicoPais_c = cTelefonicoPais_c.trim();
codigoArea_c = nvl(telefono.PhoneAreaCode,'');
codigoArea_c = codigoArea_c.trim();
numero_c = nvl(telefono.PhoneNumber,'');
numero_c = numero_c.trim();
extension_c = nvl(telefono.PhoneExtension,'');
extension_c = extension_c.trim();
contactPointId = telefono.contactPointId;
}else{
ctTelefonicoPais_c = nvl(telefono.PhoneCountryCode,'');
ctTelefonicoPais_c = ctTelefonicoPais_c.trim();
codigoAreaT_c = nvl(telefono.PhoneAreaCode,'');
codigoAreaT_c = codigoAreaT_c.trim();
numeroT_c = nvl(telefono.PhoneNumber,'');
numeroT_c = numeroT_c.trim();
extension_c = nvl(telefono.PhoneExtension,'');
extension_c = extension_c.trim()
contactPointId = telefono.ContactPointId;
}
}
def tipo_c =''+nvl(TipoDePersona_c,'');
tipo_c = tipo_c.trim();
def nombres_c =''+nvl(OrganizationName,'');
nombres_c = nombres_c.trim();
def razonSocial_c =''+nvl(RazonSocial_c,'');
razonSocial_c=razonSocial_c.trim();
def numeroDocumento_c =''+nvl(NumeroDeDocumento_c,'');
numeroDocumento_c = numeroDocumento_c.trim();
def grupoComercial_c =''+nvl(GrupoComercial_c,'');
grupoComercial_c = grupoComercial_c.trim();
def sector_c =''+nvl(Sectorb_c,'');
sector_c= sector_c.trim();
def paginaWeb_c = ''+nvl(PrimaryURL,'');
paginaWeb_c = paginaWeb_c.trim();
def sectoresComerciales_c =''+nvl(SectoresComerciales_c,'');
sectoresComerciales_c = sectoresComerciales_c.trim();
def identificadorPartyOSC_c = '' + nvl(PartyNumber,'');
def idEjecutivoCorporativo_c =''+nvl(OwnerPartyId,'');
def correoContacto_c = ''+nvl(PreferredContactEmailAddress,'');
correoContacto_c = correoContacto_c.trim();
def tipoDocumento_c =''+nvl(TipoDeDocumento_c,'');
def tipoCliente_c = ''+nvl(SalesProfileType,'');
def ejecutivoCorporativo_c =''+nvl(OwnerPartyName,'');
def telefonoContacto_c = ''+nvl(PreferredContactPhone,'');
telefonoContacto_c = telefonoContacto_c.trim();
def correoElectronico = '';

//def areaComercial_c = ''+ nvl(AreaComercial_c,'');


//def tipoCon_c = ''+ nvl(TipoCon_c,'');
//def tipoCon_c = '';
def pais_c ='';
def callePrincipal_c ='';
def calleSecundaria_c ='';
def canton_c ='';
def provincia_c ='';
def addressNumber = '';
def direcciones = PartySite;
def numeracion=''
def barrioSector=''
def conjuntoUrbanizacionEdificio=''
def referencia=''
while (direcciones.hasNext()){
def direccion = direcciones.next();
pais_c = nvl(direccion.Country,'');
pais_c = pais_c.trim();
callePrincipal_c = nvl(direccion.Address1,'');
callePrincipal_c = callePrincipal_c.trim();
calleSecundaria_c = nvl(direccion.Address2,'');
calleSecundaria_c = calleSecundaria_c.trim()
def provincia = nvl(direccion.State,'');
provincia_c = provincia.toUpperCase().trim();
def canton = nvl(direccion.AddrElementAttribute1,'');
canton_c = canton.toUpperCase().trim();
addressNumber =nvl(direccion.PartySiteNumber,'');
numeracion=nvl(direccion.Address3,'').trim()
barrioSector=nvl(direccion.AddrElementAttribute2,'').trim();
conjuntoUrbanizacionEdificio=nvl(direccion.AddrElementAttribute3,'').trim()
referencia=nvl(direccion.AddrElementAttribute4,'').trim()
}
if(numeracion=='' || barrioSector=='' || referencia=='' || conjuntoUrbanizacionEdificio==''){
def errorMsg=''
def errorList=[]
def errorCount=0
if(numeracion==''){
errorList.add('Numeración')
}
if(barrioSector==''){
errorList.add('Barrio / Sector')
}
if(conjuntoUrbanizacionEdificio==''){
errorList.add('Conjunto / Urbanización / Edificio')
}
if(referencia==''){
errorList.add('Referencia')
}
for(error in errorList){
if(errorCount>0){
errorMsg+=', '
}
errorMsg+=error
errorCount+=1
}
if(errorCount>0 && AreaComercial_c == 'MASIVO'){
if(errorCount==1){
errorMsg='El campo de dirección del cliente ' + errorMsg + ' es obligatorio.'
}
else{
errorMsg='Fallo en el envio del cliente a Netplus: Los campos de Dirección del cliente' + errorMsg + ' son obligatorios.'

}
throw new oracle.jbo.ValidationException(errorMsg)
}
}
def contactoPrincipal_c =nvl(PreferredContactName,'');
contactoPrincipal_c = contactoPrincipal_c.trim();
println('contactoPrincipal_c: '+ contactoPrincipal_c)
def tipoOpp = nvl(AreaComercial_c,'');
println('tipoOpp:' +tipoOpp)
if (tipoOpp=='MASIVO'){
if(contactoPrincipal_c != ''){
def admin_view = newView('PersonProfile');
def criteria = newViewCriteria(admin_view);
def row = criteria.createRow();
def vrc = row.ensureCriteriaItem('PartyId');
vrc.setOperator('=');
vrc.setValue(PreferredContactPersonId);
criteria.insertRow(row);
admin_view.appendViewCriteria(criteria);
admin_view.executeQuery();
while (admin_view.hasNext()) {
def curRow = admin_view.next()
nombres_c = nvl(curRow.PersonFirstName,'')
nombres_c = nombres_c.trim();
genero_c = nvl(curRow.Gender,'')
genero_c = genero_c.trim();
fechaNacimiento_c = nvl(curRow.DateOfBirth,'')
apellidos_c = nvl(curRow.PersonLastName,'')
apellidos_c = apellidos_c.trim();
referido_c = nvl(curRow.Referidoc_c,'')
referido_c = referido_c.trim();
cargo_c= nvl(curRow.JobTitle,'')
cargo_c = cargo_c.trim();
afinidad_c= nvl(curRow.SalesAffinityCode,'')
afinidad_c = afinidad_c.trim();
rolComprador_c = nvl(curRow.SalesBuyingRoleCode,'')
rolComprador_c = rolComprador_c.trim()
idContacto_c =nvl(curRow.PartyId,'')
}

}else{
if (contactoPrincipal_c != ''){
contactoPrincipal_c = '';
nombres_c='';
correoContacto_c ='';
nombres_c = '';
genero_c = '';
fechaNacimiento_c = '';
apellidos_c ='';
referido_c = '';
cargo_c= '';
afinidad_c= '';
rolComprador_c = '';
idContacto_c =''
}
else{
throw new oracle.jbo.ValidationException('Falló en el envío del cliente: Debe añadir el Contacto Principal a la oportunidad
}
}

def payload = [:]


payload.put('tipo',tipo_c)
payload.put('extension',extension_c)
payload.put('numero',numero_c)
payload.put('fechaNacimiento',fechaNacimiento_c)
payload.put('provincia',provincia_c)
payload.put('nombres',nombres_c)
payload.put('razonSocial',razonSocial_c)
payload.put('cTelefonicoPais',cTelefonicoPais_c)
payload.put('genero',genero_c)
payload.put('referido',referido_c)
payload.put('numeroDocumento',nroDocumento)
payload.put('grupoComercial',grupoComercial_c)
payload.put('cargo',cargo_c)
payload.put('rolComprador',rolComprador_c)
payload.put('sector',sector_c)
payload.put('apellidos',apellidos_c)
payload.put('paginaWeb',paginaWeb_c)
payload.put('sectoresComerciales',sectoresComerciales_c)
payload.put('contactoPrincipal',contactoPrincipal_c)
payload.put('callePrincipal',callePrincipal_c)
payload.put('idContacto',idContacto_c)
payload.put('identificadorPartyOSC',identificadorPartyOSC_c)
payload.put('idEjecutivoCorporativo',idEjecutivoCorporativo_c)
payload.put('identificadorOSC',identificadorOSC_c)
payload.put('ctTelefonicoPais',ctTelefonicoPais_c)
payload.put('pais',pais_c)
payload.put('correoContacto',correoContacto_c)
payload.put('tipoDocumento',tipodocumento)
payload.put('afinidad',afinidad_c)
payload.put('tipoCliente',tipoCliente_c)
payload.put('codigoArea',codigoArea_c)
payload.put('canton',canton_c)
payload.put('ejecutivoCorporativo',ejecutivoCorporativo_c)
payload.put('codigoAreaT',codigoAreaT_c)
payload.put('telefonoContacto',telefonoContacto_c)
payload.put('numeroT',numeroT_c)
payload.put('correoElectronico',correoContacto_c)
payload.put('contactPointId',contactPointId)
payload.put('addressNumber',addressNumber)
payload.put('calleSecundaria',calleSecundaria_c)

payload.put('barrioSector',barrioSector)
payload.put('numeracion',numeracion)
payload.put('conjuntoUrbanizacionEdificio',conjuntoUrbanizacionEdificio)
payload.put('referencia',referencia)
println('PAYLOAD PJ: '+ payload)

if(AreaComercial_c == 'MASIVO'){
def userName = adf.context.getSecurityContext()?.getUserName();
payload.put('nombreUsuario',userName)}

def MensajeIntegracion = '';


def creaCliente = '';
def codigoCliente=' ';
def ActualizaCliente = '';
def EstatusInt = '';
def response = '';
def data_c='';

try{
def existe=false
def cliNets;
cliNets = newView('ClienteNetplus_c');
def cliNetc=newViewCriteria(cliNets)
def cliNetr=cliNetc.createRow()
def cliNeti=cliNetr.ensureCriteriaItem('Cuenta_Id_c')
cliNeti.setOperator('=')
cliNeti.setValue(PartyId)
def cliNetj=cliNetr.ensureCriteriaItem('NumeroDeDocumento_c')
cliNetj.setOperator('=')
cliNetj.setValue(nroDocumento)
cliNetc.insertRow(cliNetr)
cliNets.appendViewCriteria(cliNetc)
cliNets.executeQuery()
while(cliNets.hasNext()&&!existe){
def cliNet=cliNets.next()
existe=true
}

println('existe cliente: '+existe)


if (!existe){
NumIntegracion = '10';
creaCliente= adf.webServices.CrearClienteNaturalJuridico.POST(payload)

response = creaCliente;
data_c = creaCliente?.data;
MensajeIntegracion = creaCliente?.message;
println('se envio a crear el cliente')
}else{

NumIntegracion = '11';
ActualizaCliente= adf.webServices.ActualizarClienteNaturalJuridico.POST(payload)

response = ActualizaCliente;
data_c = ActualizaCliente?.data;
MensajeIntegracion = ActualizaCliente?.message;
println('se envio a actualizar el cliente')
}
println('numero de integración: '+NumIntegracion)

if(response.code == '1' ){
println('entrando a codigo 1')
codigoCliente = '' + data_c.codCliente;
EstatusInt = ''+ data_c.estatusIntegracion;
setAttribute('EstatusInt_c',EstatusInt );
setAttribute('CodigoNetPlus_c',codigoCliente );
setAttribute('DesEstatusdeIntegracion_c',MensajeIntegracion);
setAttribute('SalesProfileType','ZCA_CUSTOMER')

if(!existe){
def cliNet=cliNets.createRow()
cliNet.setAttribute('TipoDeDocumento_c',tipodocumento)
cliNet.setAttribute('NumeroDeDocumento_c',nroDocumento)
cliNet.setAttribute('RecordName',CodigoNetPlus_c)
cliNet.setAttribute('Cuenta_Id_c',PartyId)
cliNets.insertRow(cliNet)
}
Bitacora.put('Integracion_c',NumIntegracion )
Bitacora.put('MensajeIntegracion_c',encodeToBase64(''+MensajeIntegracion))
Bitacora.put('Payload_c',encodeToBase64(''+payload))
Bitacora.put('Response_c',encodeToBase64(''+response))
Bitacora.put('IdPrincipal_c',codigoCliente)

adf.webServices.LogBitacora.POST(Bitacora)
}

else{
println('entrando a codigo igual a 0')

setAttribute('EstatusInt_c',EstatusInt );
//setAttribute('CodigoNetPlus_c',codigoCliente );
setAttribute('DesEstatusdeIntegracion_c',MensajeIntegracion);
throw new oracle.jbo.ValidationException(''+ MensajeIntegracion)

Bitacora.put('Integracion_c',NumIntegracion)
Bitacora.put('MensajeIntegracion_c',encodeToBase64(''+MensajeIntegracion))
Bitacora.put('Payload_c',encodeToBase64(''+ payload))
Bitacora.put('Response_c',encodeToBase64(''+response))
Bitacora.put('IdPrincipal_c',codigoCliente)

adf.webServices.LogBitacora.POST(Bitacora)

}
catch(Exception e){
if (codigoCliente == null ||codigoCliente == '' ){
codigoCliente=0;
}
println('sin respuesta')
def msg=e.message

Bitacora.put('Integracion_c',NumIntegracion)
Bitacora.put('MensajeIntegracion_c',encodeToBase64(msg))
Bitacora.put('Payload_c',encodeToBase64(''+ payload))
Bitacora.put('Response_c',encodeToBase64(''+ response))
Bitacora.put('IdPrincipal_c',codigoCliente)
println('payload bitacora'+Bitacora )
adf.webServices.LogBitacora.POST(Bitacora)
throw new oracle.jbo.ValidationException(''+ msg)

}
def usages=PartyUsageAssignment
def salesProspect=false
while(usages.hasNext()&&salesProspect==false){
def usage=usages.next()
if(usage.PartyUsageCode=='SALES_PROSPECT' || usage.PartyUsageCode=='SALES_ACCOUNT' ){
salesProspect=true
}
}
def printMap=[:]
printMap.put('uniqueName',PartyUniqueName)
printMap.put('salesProspect',salesProspect)
if(salesProspect){
if(nvl(AreaComercial_c,'')==''){
setAttribute('AreaComercial_c','CORPORATIVO')
}
def codigoClienteNetplus=nvl(CodigoNetPlus_c,'')
def tipoDoc=nvl(TipoDeDocumento_c,'')
def nroDoc=nvl(NumeroDeDocumento_c,'')
if(codigoClienteNetplus!='' && tipoDoc!='' &&nroDoc!=''){
def cliNets = newView('ClienteNetplus_c');
def cliNetc=newViewCriteria(cliNets)
def cliNetr=cliNetc.createRow()
def cliNeti=cliNetr.ensureCriteriaItem('Cuenta_Id_c')
cliNeti.setOperator('=')
cliNeti.setValue(PartyId)
def cliNetj=cliNetr.ensureCriteriaItem('NumeroDeDocumento_c')
cliNetj.setOperator('=')
cliNetj.setValue(nroDoc)
cliNetc.insertRow(cliNetr)
cliNets.appendViewCriteria(cliNetc)
cliNets.executeQuery()
def existe=false
while(cliNets.hasNext()&&!existe){
def cliNet=cliNets.next()
existe=true
}
if(!existe){
def cliNet=cliNets.createRow()
cliNet.setAttribute('TipoDeDocumento_c',tipoDoc)
cliNet.setAttribute('NumeroDeDocumento_c',nroDoc)
cliNet.setAttribute('RecordName',codigoClienteNetplus)
cliNet.setAttribute('Cuenta_Id_c',PartyId)
cliNets.insertRow(cliNet)
}
}
LlenadoDocumentosC()
}
println(printMap)
def usuarioGenericoId
def currentOwnerId=OwnerPartyId
def moc=nvl(AreaComercial_c,'')
if(moc=='MASIVO'){
usuarioGenericoId=adf.util.usuarioGenericoMasivo()
}
else if(moc=='CORPORATIVO'){
usuarioGenericoId=adf.util.usuarioGenericoCorporativo()
}
if(nvl(OportunidadesAbiertas_c,0 as BigDecimal) == 0 && nvl(LeadsAbiertos_c,0 as BigDecimal)==0 || ConsiderarComoCli

setAttribute('OwnerPartyId',usuarioGenericoId)
setAttribute('OverrideReassignment_c','Y')
def map=[:]
map.put('customerId',PartyId)
map.put('ownerId',currentOwnerId)
map.put('tipoCliente','ORGANIZATION')
map.put('PartyUniqueName',PartyUniqueName)
return [map]
}
return []
if(OverrideReassignment_c!='Y' && AreaComercial_c!='MASIVO'){
adf.util.reasignarCliente('ORGANIZATION',PartyId,OwnerPartyId,PartyId)
}
else{
setAttribute('OverrideReassignment_c','N')
}
def cliNets = newView('ClienteNetplus_c');
def cliNetc=newViewCriteria(cliNets)
def cliNetr=cliNetc.createRow()
def cliNeti=cliNetr.ensureCriteriaItem('Cuenta_Id_c')
cliNeti.setOperator('=')
cliNeti.setValue(PartyId)
def cliNetj=cliNetr.ensureCriteriaItem('TipoDeDocumento_c')
cliNetj.setOperator('=')
cliNetj.setValue(TipoDocumento)
cliNetc.insertRow(cliNetr)
cliNets.appendViewCriteria(cliNetc)
cliNets.executeQuery()
while(cliNets.hasNext()){
def v=cliNets.next()
v.remove()
println('eliminando cuenta:'+PartyId+' tipo de documento:' +TipoDocumento)
}
println('TipoDocumento:'+TipoDocumento +' NroDocumento:'+NroDocumento)
def cliNets = newView('ClienteNetplus_c');
def cliNetc=newViewCriteria(cliNets)
def cliNetr=cliNetc.createRow()
def cliNeti=cliNetr.ensureCriteriaItem('Cuenta_Id_c')
cliNeti.setOperator('=')
cliNeti.setValue(PartyId)
def cliNetj=cliNetr.ensureCriteriaItem('TipoDeDocumento_c')
cliNetj.setOperator('=')
cliNetj.setValue(TipoDocumento)
cliNetc.insertRow(cliNetr)
cliNets.appendViewCriteria(cliNetc)
cliNets.executeQuery()
def existe=false
while(cliNets.hasNext()&&!existe){
def cliNet=cliNets.next()
existe=true
cliNet.setAttribute('NumeroDeDocumento_c',NroDocumento)
println('actualizando registro')
}
/*
if(!existe && nvl(CodigoNetPlus_c,'') !='' ){
def cliNet=cliNets.createRow()
cliNet.setAttribute('TipoDeDocumento_c',TipoDocumento)
cliNet.setAttribute('NumeroDeDocumento_c',NroDocumento)
cliNet.setAttribute('RecordName',CodigoNetPlus_c)
cliNet.setAttribute('Cuenta_Id_c',PartyId)
cliNets.insertRow(cliNet)
println('creando registro')
}*/
def callePrincipal_c ='';
def calleSecundaria_c ='';
def addressNumber = '';
def direcciones = PartySite;
def numeracion=''
def barrioSector=''
def conjuntoUrbanizacionEdificio=''
def referencia=''
def Expresion = /^[A-Za-zÁÉÍÓÚáéíóúñÑ0-9\s.]+$/
def Expresion2 = /^[0-9]*$/
def errorList=[]
def errorCount=0
while (direcciones.hasNext()){
def direccion = direcciones.next();
callePrincipal_c = nvl(direccion.Address1,'');
calleSecundaria_c = nvl(direccion.Address2,'');
numeracion=nvl(direccion.Address3,'').trim()
barrioSector=nvl(direccion.AddrElementAttribute2,'');
conjuntoUrbanizacionEdificio=nvl(direccion.AddrElementAttribute3,'').trim()
referencia=nvl(direccion.AddrElementAttribute4,'').trim()

if(callePrincipal_c != '' && !callePrincipal_c.matches(Expresion)){


errorList.add('Calle principal')
errorCount+=1
}
if(barrioSector != '' && !barrioSector.matches(Expresion)){
errorList.add('Barrio/Sector')
errorCount+=1
}
if(numeracion != '' && !numeracion.matches(Expresion)){
errorList.add('Numeración')
errorCount+=1
}
if(calleSecundaria_c != '' && !calleSecundaria_c.matches(Expresion)){
errorList.add('Calle secundaria')
errorCount+=1
}
if(conjuntoUrbanizacionEdificio != '' && !conjuntoUrbanizacionEdificio.matches(Expresion)){
errorList.add('Conjunto/Urbanización/Edificio')
errorCount+=1
}
if(referencia != '' && !referencia.matches(Expresion)){
errorList.add('Referencia')
errorCount+=1
}
}

def errorMessage= ''


if(errorCount>0){
errorMessage= '(BDS):'
if(errorCount==1){
errorMessage+= ' El campo: '
for(error in errorList){
errorMessage+=error
}
errorMessage+= ' no puede contener caracteres especiales.'
}
else{
errorMessage+= ' Los campos: '
for(error in errorList){
errorMessage+=error
errorMessage+=','
}
errorMessage+= ' no pueden contener caracteres especiales.'
}
throw new oracle.jbo.ValidationException(''+errorMessage)
}

def cuentaId = PartyId

def activos = newView('AssetVO')


def activosC = newViewCriteria(activos)
def activosCR = activosC.createRow()
def activosCI = activosCR.ensureCriteriaItem('CustomerId')
activosCI.setOperator('=')
activosCI.setValue(cuentaId)
def activosCJ = activosCR.ensureCriteriaItem('AreaComercial_c')
activosCJ.setOperator('=')
activosCJ.setValue('CORPORATIVO')

activosC.insertRow(activosCR)
activos.appendViewCriteria(activosC)
activos.setMaxFetchSize(2000)
activos.executeQuery()

def totalIngresado = 0
def totalActivo = 0
def totalDesactivado = 0
def totalDesactivadoTemp = 0
def totalNoConcretado = 0
def totalNoConcretadoTemp = 0
def totalDeActivos = 0

while(activos.hasNext()){
def activo = activos.next()
def estado = activo.EstatusServicio_c

if(estado != 'INGRESADO' && TotalDeContratosIngresados_c==null){


setAttribute('TotalDeContratosIngresados_c',0)
}
if(estado != 'ACTIVO' && TotalDeContratosActivos_c==null){
setAttribute('TotalDeContratosActivos_c',0)

}
if(estado != 'DESACTIVADO' && TotalDeContratosDesactivados_c==null){
setAttribute('TotalDeContratosDesactivados_c',0)

}
if(estado != 'DESACTIVADO_TEMPORAL' && TotalDeContratosDesactivadosTemporales_c==null){
setAttribute('TotalDeContratosDesactivadosTemporales_c',0)

}
if(estado != 'NO_CONCRETADA' && TotalDeContratosNoConcretados_c==null){
setAttribute('TotalDeContratosNoConcretados_c',0)

}
if(estado != 'NO_CONCRETADA_TEMPORAL' && TotalDeContratosNoConcretadosTemporales_c==null){
setAttribute('TotalDeContratosNoConcretadosTemporales_c',0)
}

if(estado == 'INGRESADO'){
totalIngresado = totalIngresado+1
setAttribute('TotalDeContratosIngresados_c',totalIngresado)

}else if(estado == 'ACTIVO'){


totalActivo = totalActivo+1
setAttribute('TotalDeContratosActivos_c',totalActivo)

}else if(estado == 'DESACTIVADO'){


totalDesactivado = totalDesactivado+1
setAttribute('TotalDeContratosDesactivados_c',totalDesactivado)

}else if(estado == 'DESACTIVADO_TEMPORAL'){


totalDesactivadoTemp = totalDesactivadoTemp+1
setAttribute('TotalDeContratosDesactivadosTemporales_c',totalDesactivadoTemp)

}else if(estado == 'NO_CONCRETADA'){


totalNoConcretado = totalNoConcretado+1
setAttribute('TotalDeContratosNoConcretados_c',totalNoConcretado)
}else if(estado == 'NO_CONCRETADA_TEMPORAL'){
totalNoConcretadoTemp = totalNoConcretadoTemp+1
setAttribute('TotalDeContratosNoConcretadosTemporales_c',totalNoConcretadoTemp)
}
totalDeActivos = totalDeActivos+1
}
setAttribute('TimestampTotalContratos_c',now().time)
if(totalDeActivos == 0){
setAttribute('TotalDeContratosIngresados_c',0)
setAttribute('TotalDeContratosActivos_c',0)
setAttribute('TotalDeContratosDesactivados_c',0)
setAttribute('TotalDeContratosDesactivadosTemporales_c',0)
setAttribute('TotalDeContratosNoConcretados_c',0)
setAttribute('TotalDeContratosNoConcretadosTemporales_c',0)
}
def estadoTemporalidad=nvl(EstadoDeTemporalidad_c,'')
def disponibleHasta=DisponibleHasta_c
def txt=''
def optysAbiertas=nvl(OportunidadesAbiertas_c,0 as BigDecimal) as Integer
def leadsAbiertos=nvl(LeadsAbiertos_c,0 as BigDecimal) as Integer
if(estadoTemporalidad=='FINALIZADA'){
txt='La temporalidad ya no aplica para esta cuenta.'
}
else if(estadoTemporalidad=='ACTIVA'){
txt='Esta cuenta se encuentra disponible hasta el día ' + disponibleHasta+'.'
}
else if(estadoTemporalidad=='DESASIGNADO'){
txt='Esta cuenta ya fue desasignada por la temporalidad.'
}
else if(ConsiderarComoCliente_c=='Y'){
txt='La temporalidad no aplica para esta cuenta tiene al menos un contrato plan que no está no concretado ni desactivad
}
else if(optysAbiertas>0){
txt='La temporalidad no aplica para esta cuenta porque tiene una oportunidad abierta.'
}
else if(leadsAbiertos>0){
txt='La temporalidad no aplica para esta cuenta porque tiene un lead abierto.'
}
else{
txt='La temporalidad no aplica para esta cuenta.'
}
return txt
Disabled Actions Expression
Yes if(!
Groovy Function oracle.apps.crmCommon.extensibility.con
return false;
Name :ReasignacionCascada else
Description : return true;
Execution Schedule : 0:Days:After:
Function Display Name : reasignacionCascada

No if(!
Groovy Function oracle.apps.crmCommon.extensibility.con
return false;
Name :regularizarCuenta
Description : isAttributeChanged('RegularizarCuenta_c
Execution Schedule : 0:Days:After:
Function Display Name : regularizarCuenta

Record Type Advanced Expression


Precision MaxLength Expression
10 10
10 10
10 10
1500 1500
0 0 estadoTemporalidad()
80 80
1500 1500
80 80
1500 1500
1500 1500
150 150
80 80
1500 1500
18 18
0 0 return 0
def vo = newView('Opportunity
0 0

def vc = newViewCriteria(vo)
def vcr = vc.createRow()
def vcri = vcr.ensureCriteriaIte
vcri.setOperator('=')
vcri.setValue(PartyId) //Id de
def vci2 = vcr.ensureCriteriaIt
vci2.setOperator('=')
vci2.setValue('OPEN')
vc.insertRow(vcr)
vo.appendViewCriteria(vc)
vo.executeQuery()
//setAttribute('NumeroOportun
return vo.getEstimatedRowCou
10 10
18 18
1500 1500
20 20
1500 1500
0 0
80 80
10 10
1500 1500
10 10
1500 1500
10 10
0 0 def nullDate= new Date(1900,0
def fechaAsig=nvl(FechaDeAsi
if(fechaAsig==nullDate){
return 0
}
else{
return today()-fechaAsig
}
18 18
10 10
1500 1500
32714 32714
10 10
80 80
1500 1500
0 0
10 10
1500 1500
10 10
10 10
18 18
80 80
1500 1500
18 18
1500 1500
16 16
80 80
10 10
1500 1500
1500 1500
1500 1500
10 10
10 10
10 10
1500 1500
18 18
1500 1500
10 10
80 80
80 80
20 20
s_c')

mbioTotalContratosNCT || cambioTotalContratosDT
BigDecimal) == 0 &&
osDesactivadosTemporales_c, 0 as BigDecimal)
tPlus_c,'') !='' || cambioTotalContratos == 0
&& sinContratosActivos

cambioConsiderarCliente ){

oTemporalidad){
' || !sinContratosActivos ){
d('Pasaporte_c' ) ||isAttributeChanged('TipoDeDocumento_c' )||
')=='' || nvl(Pasaporte_c,'')==''*/){

ualizarInformacionCIIU_c=='Y'){

ype=='ZCA_CUSTOMER')){

orte')
leType=='ZCA_CUSTOMER')){

leType=='ZCA_CUSTOMER')){
s usuarios')

suarioCorporativo )){

fue desasignado en el pasado, hasta que pasen 15 días desde la fecha

gestionado por otro ejecutivo')


s parte del equipo de trabajo')

urce, "FND_ACFF_VA_AttributeCategory__AttributeCategory",
us == ' '){
gracion =='2'){

{
istrador()){

ationName+' en la bandeja del usuario

ow.OrganizationName+' en la bandeja del usuario

rganizationName+' en la bandeja del usuario

espacios.')

tener espacios.')
ontener espacios.')
='+lead.TipoCliente_c)

='')){
=''){

nte' + errorMsg + ' son obligatorios.'


el Contacto Principal a la oportunidad.')
ACCOUNT' ){
gDecimal)==0 || ConsiderarComoCliente_c=='Y'){
esion)){
es_c==null){

mporales_c==null){
)

no está no concretado ni desactivado.'

a.'
ression

le.apps.crmCommon.extensibility.content.adf.data.util.ExtensibilityGro
urn false;

urn true;

le.apps.crmCommon.extensibility.content.adf.data.util.ExtensibilityGro
urn false;

ributeChanged('RegularizarCuenta_c')
Object Name : Origen_c
Object Name Origen_c
Object Display Name Plural Origenes
Object Type Custom
Application Name CRM
Table Name MOT_REF_ENTITIES
Total number of custom fields
Total number of modified Standard fields
Total number of Triggers
Total number of Object Functions
Total number of Object Workflows
Total number of Validations
Total number of Dynamic Layouts

Custom Fields
Name Display Name Type Column Name
RecordName Código OOTB RECORD_NAME
CreationDate Fecha de Creación OOTB CREATION_DATE
Corporativo_c Corporativo Checkbox EXTN_ATTRIBUTE_CHAR009
Canal_Id_c Canal DCLForeignKey EXTN_ATTRIBUTE_NUMBER001
CurrencyCode Currency Code FCL CURRENCY_CODE
Masivo_c Masivo Checkbox EXTN_ATTRIBUTE_CHAR010
LastUpdatedBy Actualizado por OOTB LAST_UPDATED_BY
CreatedBy Creado por OOTB CREATED_BY
OraZcxOwner_c Owner DCL

Origen_c Origen Text EXTN_ATTRIBUTE_CHAR007


Activo_c Activo Checkbox EXTN_ATTRIBUTE_CHAR008
OraZcxOwner_Id_c Owner DCLForeignKey OWNER_RESOURCE_ID
TodosLosOrigenes_c Todos los Origenes Checkbox EXTN_ATTRIBUTE_CHAR011
Id Identificador de Registro OOTB ID
Canal_c Canal DCL

RecordNumber Record Number OOTB RECORD_NUMBER


Id_c Id Number Formula

LastUpdateDate Fecha de Última Actualización OOTB LAST_UPDATE_DATE

Validations
Name Type Error Message
Rule1 Field Validation
Field Name : OraZcxOwner_Id_c
Rule1 Field Validation
Field Name : Canal_Id_c
Object Workflows
Name Definition Name Event Point Description
Origen_c_Standard_Create Create

Origen_c_Standard_Delete Delete

Origen_c_Standard_Update Update

Dynamic Layouts
Layout Name Active Role
Punto Net Origen Yes
Punto Net Origen Yes
Origen_c
Origenes
Custom
CRM
MOT_REF_ENTITIES
18
0
0
0
3
2
2

umn Name Default Value Required Updatable Searchable REST Enabl


ORD_NAME Yes Yes Yes Yes
ATION_DATE Yes No Yes Yes
N_ATTRIBUTE_CHAR009 N Yes Yes No Yes
N_ATTRIBUTE_NUMBER001 No Yes Yes Yes
RENCY_CODE No Yes Yes Yes
N_ATTRIBUTE_CHAR010 N Yes Yes No Yes
T_UPDATED_BY Yes Yes Yes Yes
ATED_BY Yes No Yes Yes
Yes Yes No Yes
N_ATTRIBUTE_CHAR007 Yes Yes Yes Yes
N_ATTRIBUTE_CHAR008 Y Yes Yes Yes Yes
NER_RESOURCE_ID Yes Yes Yes Yes
N_ATTRIBUTE_CHAR011 N Yes Yes Yes Yes
Yes No Yes Yes
No Yes No Yes
ORD_NUMBER Yes No Yes Yes
No No No Yes
T_UPDATE_DATE Yes Yes Yes Yes

Expression
adf.source.isLookupIdValid('OraZcxOwner_Id_c',newValue)

adf.source.isLookupIdValid('Canal_Id_c',newValue)
ption Disabled Actions Expression
No return
(oracle.apps.fnd.applcore.Profile.ge
No return
(oracle.apps.fnd.applcore.Profile.ge
No return
(oracle.apps.fnd.applcore.Profile.ge

Record Type Advanced Expression


Precision MaxLength Expression
80 80
0 0
10 10
18 18
15 15
10 10
64 64
64 64
1500 1500
80 80
10 10
18 18
10 10
32 32
1500 1500
64 64
0 0 Id
0 0
ression
rn
cle.apps.fnd.applcore.Profile.get('ZCX_CUSTOM_OBJECT_EVENTS') ==
rn
cle.apps.fnd.applcore.Profile.get('ZCX_CUSTOM_OBJECT_EVENTS') ==
rn
cle.apps.fnd.applcore.Profile.get('ZCX_CUSTOM_OBJECT_EVENTS') ==
Object Name : PartidaAsignacionLeads_c
Object Name PartidaAsignacionLeads_c
Object Display Name Plural Partidas de Asignación de Lea
Object Type Custom
Application Name CRM
Table Name ZCA_REF_ENTITIES
Record Name Sequence {0000000000}
Total number of custom fields
Total number of modified Standard fields
Total number of Triggers
Total number of Object Functions
Total number of Object Workflows
Total number of Validations
Total number of Dynamic Layouts

Custom Fields
Name Display Name Type Column Name
RecordName Número de registro OOTB RECORD_NAME
CreationDate Fecha de Creación OOTB CREATION_DATE
CurrencyCode Currency Code FCL CURRENCY_CODE
LeadsAsignados_c Leads Asignados Number EXTN_ATTRIBUTE_NUMBER006
LastUpdatedBy Actualizado por OOTB LAST_UPDATED_BY
CreatedBy Creado por OOTB CREATED_BY
OraZcxOwner_c Owner DCL

OraZcxOwner_Id_c Owner DCLForeignKey OWNER_RESOURCE_ID


Id Identificador de Registro OOTB ID
RecordNumber Record Number OOTB RECORD_NUMBER
LastUpdateDate Fecha de Última Actualización OOTB LAST_UPDATE_DATE

Validations
Name Type Error Message
Rule1 Field Validation
Field Name : OraZcxOwner_Id_c

Object Workflows
Name Definition Name Event Point Description
PartidaAsignacionLeads_c_S Update
tandard_Update
PartidaAsignacionLeads_c_S Delete
tandard_Delete
PartidaAsignacionLeads_c_S Create
tandard_Create
PartidaAsignacionLeads_c
Partidas de Asignación de Leads
Custom
CRM
ZCA_REF_ENTITIES
{0000000000}
11
0
0
0
3
1
0

umn Name Default Value Required Updatable Searchable REST Enabl


ORD_NAME Yes Yes Yes Yes
ATION_DATE Yes No Yes Yes
RENCY_CODE No Yes Yes Yes
N_ATTRIBUTE_NUMBER006 No Yes No Yes
T_UPDATED_BY Yes Yes Yes Yes
ATED_BY Yes No Yes Yes
Yes Yes No Yes
NER_RESOURCE_ID Yes Yes Yes Yes
Yes No Yes Yes
ORD_NUMBER Yes No Yes Yes
T_UPDATE_DATE Yes Yes Yes Yes

Expression
adf.source.isLookupIdValid('OraZcxOwner_Id_c',newValue)

ption Disabled Actions Expression


No return
(oracle.apps.fnd.applcore.Profile.ge
No return
(oracle.apps.fnd.applcore.Profile.ge
No return
(oracle.apps.fnd.applcore.Profile.ge
Precision MaxLength Expression
80 80
0 0
15 15
10 10
64 64
64 64
1500 1500
18 18
32 32
64 64
0 0

ression
rn
cle.apps.fnd.applcore.Profile.get('ZCX_CUSTOM_OBJECT_EVENTS') ==
rn
cle.apps.fnd.applcore.Profile.get('ZCX_CUSTOM_OBJECT_EVENTS') ==
rn
cle.apps.fnd.applcore.Profile.get('ZCX_CUSTOM_OBJECT_EVENTS') ==
Object Name : PartnerProfile
Object Name
Object Display Name Plural
Object Type
Application Name
Table Name
Total number of custom fields
Total number of modified Standard fields
Total number of Triggers
Total number of Object Functions
Total number of Object Workflows
Total number of Validations
Total number of Dynamic Layouts

Dynamic Layouts
Layout Name Active Role
Punto Net Yes
Default custom layout Yes
PartnerProfile
Socios
OOTB
CRM
ZPM_PARTNER_PROFILES
0
0
0
0
0
0
2

Record Type
Advanced Expression
Object Name : Person
Object Name Person
Object Display Name Plural Contactos
Object Type OOTB
Application Name CRM
Table Name HZ_PERSON_PROFILES
Total number of custom fields
Total number of modified Standard fields
Total number of Triggers
Total number of Object Functions
Total number of Object Workflows
Total number of Validations
Total number of Dynamic Layouts

Standard Fields
Name Display Name Help Text
PersonPreNameAdjunct Prefijo Prefix
PersonFirstName Nombre(s)
PersonLastName Apellidos
DateOfBirth Fecha de nacimiento
Gender Género Gender
SalesAffinityCode Afinidad
SalesBuyingRoleCode Rol del comprador
SalesProfileType Tipo
JgzzFiscalCode Número de RUC
MaritalStatus Estado Civil
PersonName Nombres Name
JobTitle Cargo Job Title
SalesProfileStatus Estado Sales Profile Status
PartyUniqueName Nombre

Custom Fields
Name Display Name Type Column Name
Referidoc_c Referido Checkbox EXTN_ATTRIBUTE_CHAR014
TipoCon_c Tipo FCL EXTN_ATTRIBUTE_CHAR007
EstadoTemporalidad_c Estado Temporalidad Text Formula
TipoDePersona_c Tipo de persona FCL EXTN_ATTRIBUTE_CHAR012
ContactoRegularizado_c Contacto Regularizado Checkbox EXTN_ATTRIBUTE_CHAR038
TelefonoEloqua_c Telefono Eloqua Text Formula

CodigoNetPlus_c Código NetPlus Text EXTN_ATTRIBUTE_CHAR001


ConsultaEmbebidos_c Consulta embebidos FCL EXTN_ATTRIBUTE_CHAR035
RegularizarContact_c Regularizar Contacto Number EXTN_ATTRIBUTE_NUMBER009
OperadoraDeTelefonoPrincipal_c Operadora de teléfono principal FCL EXTN_ATTRIBUTE_CHAR017
IdLeadProgenitor_c Id Lead Progenitor Number EXTN_ATTRIBUTE_NUMBER007
ClienteConDeuda_c Cliente con deuda Text EXTN_ATTRIBUTE_CHAR025
LeadsAbiertos_c Leads abiertos Number EXTN_ATTRIBUTE_NUMBER008
RegistraTCActiva_c Registra TC Activa Text EXTN_ATTRIBUTE_CHAR022
AreaComercial_c Área Comercial FCL EXTN_ATTRIBUTE_CHAR029
Referido_c Referido por Text EXTN_ATTRIBUTE_CHAR008
AntiguedadDeTemporalidadForm_cAntigüedad de Temporalidad Number Formula

NumeroDeDocumento_c Número de documento Text EXTN_ATTRIBUTE_CHAR002


FormaDePago_c Forma de pago Text EXTN_ATTRIBUTE_CHAR021
FechaDeAsignacion_c Fecha de Asignación Date EXTN_ATTRIBUTE_TIMESTAMP002
OrigenDeVenta_c Origen de Venta DCL

CapacidadDePago_c Capacidad de pago Number EXTN_ATTRIBUTE_NUMBER004


NumeroDePasaporte_c Número de Pasaporte Text EXTN_ATTRIBUTE_CHAR016
TerceraEdad_c Tercera edad Checkbox EXTN_ATTRIBUTE_CHAR019
ResultadoDelModelo_c Resultado del Modelo Text EXTN_ATTRIBUTE_CHAR023
ConsiderarComoCliente_c Considerar como cliente Checkbox EXTN_ATTRIBUTE_CHAR045
EstatusValid_c Estatus de validación FCL EXTN_ATTRIBUTE_CHAR006
PrimeraVentaCerrada_c Primera venta cerrada Checkbox EXTN_ATTRIBUTE_CHAR037
ClienteCastigado_c Cliente castigado Text EXTN_ATTRIBUTE_CHAR024
TipoTelefono_c Tipo teléfono FCL EXTN_ATTRIBUTE_CHAR031
OverrideReassignment_c Override Reassignment Checkbox EXTN_ATTRIBUTE_CHAR034
UsuarioDesasignado_c Usuario Desasignado DCL

ComentariosDeTemporalidad_c Comentarios de temporalidad Clob EXTN_ATTRIBUTE_CLOB001


OportunidadesAbiertas_c Oportunidades Abiertas Number EXTN_ATTRIBUTE_NUMBER006
CanalDeVenta_Id_c Canal de Venta DCLForeignKey EXTN_ATTRIBUTE_NUMBER002
OrigenDeVentaText_c Origen de Venta Text Formula

CorreoElectronico_c Correo Electrónico Text EXTN_ATTRIBUTE_CHAR003


DisponibleHasta_c Disponible hasta: Date EXTN_ATTRIBUTE_TIMESTAMP001
OrigenDeVenta_Id_c Origen de Venta DCLForeignKey EXTN_ATTRIBUTE_NUMBER015
OportunidadAbierta_c Oportunidad abierta FCL EXTN_ATTRIBUTE_CHAR013
CondicionesResponsys_c Condiciones Responsys Checkbox EXTN_ATTRIBUTE_CHAR039
Timer_c Timer Number EXTN_ATTRIBUTE_NUMBER012
Discapacitado_c Discapacitado Checkbox EXTN_ATTRIBUTE_CHAR018
SectorComercial_c Sectores Comerciales FCL EXTN_ATTRIBUTE_CHAR010
UsuarioDesasignado_Id_c Usuario Desasignado DCLForeignKey EXTN_ATTRIBUTE_NUMBER001
TipoDocumento_c Tipo de documento FCL EXTN_ATTRIBUTE_CHAR011
EstatusInt_c Estatus de integración FCL EXTN_ATTRIBUTE_CHAR005
CorreoElectronico2_c Correo Electrónico 2 Text EXTN_ATTRIBUTE_CHAR032
EstadoDeTemporalidad_c Estado de Temporalidad FCL EXTN_ATTRIBUTE_CHAR004
CanalDeVenta_c Canal de Venta DCL

DocumentoPrincipal_c Documento Principal Text EXTN_ATTRIBUTE_CHAR030


Segmentacion_c Segmentación Text EXTN_ATTRIBUTE_CHAR020
PorcentajeDeDiscapacidad_c Porcentaje de Discapacidad Percentage EXTN_ATTRIBUTE_NUMBER011
PasaporteCuenta_c Pasaporte Cuenta Text EXTN_ATTRIBUTE_CHAR033
NumeroDeCedula_c Número de Cédula Text EXTN_ATTRIBUTE_CHAR015
AntiguedadTemporalidad_c Antigüedad Temporalidad - ObsoleNumber EXTN_ATTRIBUTE_NUMBER005
Referencia_c Referencia Checkbox EXTN_ATTRIBUTE_CHAR036
Sector_c Sector FCL EXTN_ATTRIBUTE_CHAR009
LeadProgenitor_Id_c Lead Progenitor DCLForeignKey EXTN_ATTRIBUTE_NUMBER003
LeadProgenitor_c Lead Progenitor DCL

Edad_c Edad Number EXTN_ATTRIBUTE_NUMBER010

Triggers
Name Type Trigger PointDescription Error Message Expression
Edad Field Trigger Modify def dia_nac = day(
Field Name : def dia_actual = day
DateOfBirth def mes_nac = mo
def mes_actual = mo
def year_nac = yea
def year_actual= yea
def edad = year_
def edad2 = edad

if(mes_nac == mes_
if(dia_nac < dia_act
setAttribute('Edad

} else {
setAttribute('Edad

}
} else if(mes_nac > m
setAttribute('Edad_

} else {
setAttribute('Edad_

setPorcentajeCero Field Trigger Modify if(nvl(Discapacitado_


Field Name : setAttribute('Porce
Discapacitado_c
setPorcentajeCero Modify

}
Init_Contact Object Trigger Create setAttribute('AreaCo
if(adf.util.usuarioMa
setAttribute('SalesP
}

validarFormatosTel()
CambiaTipoMasivo Object Trigger Create def MoC=adf.util.usu

if(MoC=='MASIVO')
setAttribute('SalesP
setAttribute('Time
}
Temporalidad_INS Object Trigger BeforeInsert if(AreaComercial_c=
setAttribute('Fech
setAttribute('Estado
return true
}
if(adf.util.usuarioMa
if(OwnerPartyId!=nu
setAttribute('Fecha
}
else{
setAttribute('Fecha
}
def fecha=date(2001
if(nvl(FechaDeAsigna
def dias=adf.util.di
println('dias:'+dias)
setAttribute('Dispo
setAttribute('Estado
setAttribute('Oport
}
else
{
setAttribute('Dispo
}
}
getDirecccionLead()
SeteaCorreo Object Trigger BeforeInsert def correo=nvl(Corr
if((SalesProfileType =
def mails=Email
def exists=false
while(mails.hasNext(
def mail=mails.nex
mail.setAttribute('E
exists = true
}
if(!exists){
def mail=mails.crea
mail.setAttribute('E
mail.setAttribute('C
mails.insertRow(ma
}
}
ActualizaTipo Object Trigger BeforeInsert if(TipoCon_c=='PRO
setAttribute('SalesP
}
if(nvl(TipoCon_c,'')!=
setAttribute('TipoC
}
InsertarHistoricoConta Object Trigger BeforeInsert if((SalesProfileType =
cto adf.util.usuarioAdmi
def historico = new
def crear = historic
crear.setAttribute('I
crear.setAttribute('R
crear.setAttribute('V
historico.insertRow
}
LlenadoYDuplicadoDo Object Trigger BeforeInsert validarDocumentoD
cumentosP LlenadoDocumentos
HistoricoContacto Object Trigger BeforeUpdate def re= getOriginalA
if(nvl(re,'')==''){
re='–'
}
if(isAttributeChange
def historico = new
def crear = historic
crear.setAttribute('I
crear.setAttribute('R
crear.setAttribute('V
historico.insertRow(c

}
fafafa Object Trigger BeforeUpdate if(isAttributeChange
def optys=newView
def optyc=newView
def optyr=optyc.cr
def optyi=optyr.en
optyi.setOperator('
optyi.setValue(3000
optyc.insertRow(op
optys.appendViewC
optys.executeQuer
def resultMap=[:]
def optyList=[]
while(optys.hasNex
def opty=optys.ne
def rowMap=[:]
rowMap.put('opty
rowMap.put('opty
optyList.add(rowM
}
def contacts=newV
def contactc=newV
def contactr=conta
def contacti=conta
contacti.setOperato
contacti.setValue(3
contactc.insertRow
contacts.appendVie
contacts.executeQu
def contactList=[]
while(contacts.hasN
def contact=conta
def rowMap=[:]
rowMap.put('cont
rowMap.put('cont
contactList.add(ro
}
def accounts=new
def accountc=newV
def accountr=acco
def accounti=accou
accounti.setOperat
accounti.setValue(3
accountc.insertRow
accounts.appendVi
accounts.executeQ
def accountList=[]
while(accounts.has
def account=acco
def rowMap=[:]
rowMap.put('acco
rowMap.put('acco
accountList.add(ro
}
resultMap.put('con
resultMap.put('acco
resultMap.put('opt
throw new oracle.jb
return true
def fpagos=newVie
fpagos.setMaxFetc
fpagos.executeQue
while(fpagos.hasNe
def fpago=fpagos
fpago.remove()
}

return true
def vars=newView('V
def var=vars.createR
var.setAttribute('Rec
var.setAttribute('Ora
var.setAttribute('Valo
var.setAttribute('Des
vars.insertRow(var)
var=vars.createRow(
var.setAttribute('Rec
var.setAttribute('Ora
var.setAttribute('Valo
var.setAttribute('Des
vars.insertRow(var)
var=vars.createRow(
var.setAttribute('Rec
var.setAttribute('Ora
var.setAttribute('Valo
var.setAttribute('Des
vars.insertRow(var)
var=vars.createRow(
var.setAttribute('Rec
var.setAttribute('Ora
var.setAttribute('Valo
var.setAttribute('Des
vars.insertRow(var)
var=vars.createRow(
var.setAttribute('Rec
var.setAttribute('Ora
var.setAttribute('Valo
var.setAttribute('Des
vars.insertRow(var)
var=vars.createRow(
var.setAttribute('Rec
var.setAttribute('Ora
var.setAttribute('Valo
var.setAttribute('Des
vars.insertRow(var)
var=vars.createRow(
var.setAttribute('Rec
var.setAttribute('Ora
var.setAttribute('Valo
var.setAttribute('Des
vars.insertRow(var)
var=vars.createRow(
var.setAttribute('Rec
var.setAttribute('Ora
var.setAttribute('Valo
var.setAttribute('Des
vars.insertRow(var)
var=vars.createRow(
var.setAttribute('Rec
var.setAttribute('Ora
var.setAttribute('Valo
var.setAttribute('Des
vars.insertRow(var)
var=vars.createRow(
var.setAttribute('Rec
var.setAttribute('Ora
var.setAttribute('Valo
var.setAttribute('Des
vars.insertRow(var)
var=vars.createRow(
var.setAttribute('Rec
var.setAttribute('Ora
var.setAttribute('Valo
var.setAttribute('Des
vars.insertRow(var)
var=vars.createRow(
var.setAttribute('Rec
var.setAttribute('Ora
var.setAttribute('Valo
var.setAttribute('Des
vars.insertRow(var)
var=vars.createRow(
var.setAttribute('Rec
var.setAttribute('Ora
var.setAttribute('Valo
var.setAttribute('Des
vars.insertRow(var)
}

controlUpdateGeneral Object Trigger BeforeUpdate if(isAttributeChange


ValidarCliente()
setAttribute('TipoC
}
LlenadoDocumento

if(isAttributeChange
isAttributeChanged(
if(isAttributeChang
RucVsCedula()
}
validarDocumentoD
}

def correo= nvl(Corr


if((SalesProfileType =
def mails=Email
def exists=false
while(mails.hasNex
def mail=mails.ne
mail.setAttribute('
exists = true
}
if(!exists && correo
def mail=mails.cre
mail.setAttribute('
mail.setAttribute('
println('correo:-'+
mails.insertRow(m
}
}

validarFormatosTel()
ValidacionEdad Object Trigger BeforeUpdate if(isAttributeChange
throw new oracle.jb
}

orquestacionTemporal Object Trigger BeforeUpdate if(AreaComercial_c=


idad
orquestacionTemporal Object Trigger BeforeUpdate
idad setAttribute('Fecha
setAttribute('Estado
return true
}

def previousOwnerId
def cambioOwner=i
def cambioLeadsAbi
def cambioOportuni

if(cambioOwner||cam
def currentOwnerId
def usuarioGeneric
def leadsAbiertos=
def oportunidadesA
def statusTempora
def fechaAsignacio
def disponibleHast
if(cambioOwner){
fechaAsignacion=
if(OverrideReassig
def mapCliente=
def tipoCliente=
mapCliente.put('
mapCliente.put('
mapCliente.put('
adf.util.reasignar
}
}
if(currentOwnerId=
statusTemporalida
if(cambioOwner){
setAttribute('Usu
def team=Team
while(team.hasN
def member=te
if(member.Party
member.remov
}
fechaAsignacion
}
}
else if(leadsAbierto
statusTemporalida
}
else{
statusTemporalida
disponibleHasta=
if(cambioLeadsAb
fechaAsignacion
def fecha=date(2
def dias=adf.util
disponibleHasta=
}
}
setAttribute('Estado
setAttribute('Dispo
setAttribute('Fecha
}
if(OverrideReassignm
setAttribute('Overr
}
CambiosIdentificacion Object Trigger BeforeUpdate def oldCed = getOri
es def oldRuc= getOrig
def oldPas= getOrig
def ruc =isAttributeC
def pasaporte = isAt
def cedula = isAttrib

if(pasaporte){
if(nvl(oldPas,'') !=
println('Pasapo
if(nvl(NumeroD
println( 'pasa
throw new o
}
}

if( nvl(NumeroDePas
EliminarRegistroClie
}else{
println('NumeroDeP
crearActualizarRegis
}
}

if(ruc){
if(nvl(oldRuc,'') !=
println('RUC va
if(nvl(JgzzFiscal
println( 'RUC
throw new o
}
}

if( nvl(JgzzFiscalCod
EliminarRegistroClie
}else{
println('JgzzFiscalCo
crearActualizarRegis
}
}

if(cedula){
if(nvl(oldCed,'') !=
println('cedula
if(nvl(NumeroD
println( 'cedu
throw new o
}
}

if( nvl(NumeroDeCed
EliminarRegistroClie
}else{
println('NumeroDeC
crearActualizarRegis
}
}
CambiosParaActualiza Object Trigger BeforeUpdate if(AreaComercial_c=
cion //caracteresEspeciale
CrearActualizarCont
def cambioFirstNam
def cambioLastNam
def cambioCorreoEle
if(cambioFirstName|

def codigoNP = nv
if(codigoNP!=''){
def nroDoc;
def tipoDoc;
def cliNets = newV
def cliNetc=newVie
def cliNetr=cliNetc
def cliNeti=cliNetr.
cliNeti.setOperator
cliNeti.setValue(Par
def cliNetj=cliNetr.
cliNetj.setOperator
cliNetj.setValue(cod
cliNetc.insertRow(c
cliNets.appendView
cliNets.executeQue
def existe=false
while(cliNets.hasNe
def cliNet=cliNets
existe=true
nroDoc=nvl(cliNe
tipoDoc=nvl(cliNet.T
}
if(existe){
funcionCreaClient
println('Actualizac

}}
CrearActualizarContac Object Trigger AfterTransacti def horaCambios =
toResponsys onPosted if(horaCambios != '')
println('horaCambi
def diferencia = now
println('diferencia (m

if(diferencia <= 1000


//throw new oracle
try{
def token = adf.w
println('token: '+
def httpHeaders
def service = adf
service.requestH
try{
def serviceRespon
println('Response
//throw new oracl
}catch(Exception e)
println('Error en ll
//throw new oracl
}

}catch(Exception e){
println('Error en lla
}
}
}

Validations
Name Type Error Message Expression
ValidaPuntosDeContac Object Validation (BDS) Es necesario contar con un correo def moc=adf.util.usu
to electronico o un número de telefono, def usuarioSales=(m
para crear un Contacto. def usuarioMasivo=
if((SalesProfileType =
adf.util.usuarioAdmi
validacionTelefono
def ok=true
def email=nvl(Corr
if(email != '')
{
def regex=/(?i)^(
if(!email.matches(
{
throw new oracle
}
def valCorreo=su
if(! contains(valC
ok= true
}
else if(substringA
ok= true
}
else{
ok= false
}
}
if(!ok){
throw new oracle
}
def hasEmail= ema
def telColeccion =
telColeccion?.reset
def sinTel = true;
def cont=0;
def mobile=false
def work=false
def home= false
def phoneList=[]

while (telColeccion
{
def ps = telColecc
def phoneMap=[:
def type=nvl(ps.P
def phoneNumbe
def areaCode=nvl
def okFormat= ar

def okPhoneType

if(!okPhoneType){
throw new oracle.
correcto')
}

if((type=='MOBILE
if(type=='MOBIL
mobile=phone
}
if(type=='WORK
work=phoneNu
}
if(type=='HOME
home=phoneN
}
if(usuarioMasivo
{
if((type=='MOB
int lengtharea
int lengthnum
/* if(lengtharea

presione
} el botón ca
if(lengthnum>
presione
} el botón ca
*/
}

if((type=='WOR
int lengtharea
int lengthnum
/* if(lengtharea

nuevamente
} al conta
if(lengthnum>

ingresa} nuevamente
*/

}
}
}
phoneMap.put('C
phoneMap.put('P
phoneMap.put('C
phoneMap.put('P
phoneMap.put('P
phoneList.add(ph
}

return hasEmail||mo
}
return true

validarDocumentos Object Validation (BDS) Se requiere ingresar al menos uno def R= nvl(JgzzFisca
de los siguientes campos para poder def C= nvl(NumeroD
avanzar: Número de RUC, Número de def P= nvl(NumeroD
Cédula o Número de Pasaporte
def moc=adf.util.usu
def usuarioSales=(m
if(SalesProfileType!=
if(isAttributeChang
if(R=='' && C==''
throw new oracle.
Cédula
} o Número de
}
}
return true
validaPropietario Object Validation Tu usuario no tiene permisos de if(getPrimaryRowSta
modificar este registro return true
def moc=adf.util.usu
def usuarioMasivo=
def usuarioCorporat
def usuarioSales=(us

if(adf.util.usuarioAdm
return true
}
def currentUsernam

def resources=newV
def resourcec=newV
def resourcer=resou
def resourcei=resou
resourcei.setOperato
resourcei.setValue(c
resourcec.insertRow
resources.appendVie
resources.executeQu
def currentUserId
while(resources.hasN
def resource=resou
currentUserId=reso
}
def genericoMasivo=
def genericoCorpora
if( isAttributeChange
if(OwnerPartyId!=c
throw new oracle.
}
def prevOwner=ge
def usuarioDesasig
def tipoUsuario=ad
if((prevOwner==ge
def fechaNull=new
def fechaAsignaci
if(usuarioDesasign
return true
}
else{
throw new oracle
de asignación')
}
}
else{
throw new oracle.
}
}
else{
if(OwnerPartyId!=c
def team=Team
def partOfTeam=f
while(team.hasNe
def member=tea
if(member.PartyI
partOfTeam=tr
}
}
if(!partOfTeam){
if(!adf.util.usuario
throw new orac
}
}
}
}
return true

CodigoNetplius Object Validation Se necesita un código de netplus para ser return true/*if(SalesP
cliente if(nvl(CodigoNetPl
return false
}else{
return true
}
}*/
FND_ACFF_LVR_Attribu Field Validation return oracle.apps.fn
teCategory__AttributeC Field Name : AttributeCategory "ContextCode", "Bin
ategory
FND_ACFF_LVR_Attribu Field Validation return oracle.apps.fn
teCategory__GSG_EC_S Field Name : Attribute15 "FND_ACFF_VA_Attr
RI_INFO_ADICIONAL_A Field Validation
Rule1 adf.source.isLookup
Field Name :
UsuarioDesasignado_Id_c
Rule1 Field Validation adf.source.isLookup
Field Name : CanalDeVenta_Id_c
Rule1 Field Validation adf.source.isLookup
Field Name : LeadProgenitor_Id_c
Rule1 Field Validation adf.source.isLookup
Rule1 adf.source.isLookup
Field Name : OrigenDeVenta_Id_c

Object Functions
Name Parameters Return Type Privileged Visibility Description
CrearPerson void No Default
aNaturalNet
plus
ActualizarPe void No Default
rsonaNatural
Netplus
llenadoDeD void No Default
ocumento
validarDocu void No Default
mentoDuplic
ado
ValidarClient void No Default
e

usuarioPartn Boolean No Default


er

getDirecccio void No Default


nLead
ValidacionC String No Default
ontacto

LlenadoDoc void No Default


umentosC
LlenadoDoc void No Default
umentosC

regularizarC void No Callable by


ontacto External
Systems
regularizarC void No Callable by
ontacto External
Systems

testScript void No Callable by


External
Systems
testScript void No Callable by
External
Systems
filaValida Boolean No Default

aplicarRegla List No Default


sTemporalid
ad
reasignacion void No Callable by
Cascada External
Systems

EliminarRegi TipoDocumento- void No Default


stroClienteN String
etplus

crearActualiz TipoDocumento- void No Default


arRegistroCli String,NroDocume
enteNetplus nto-String
CrearActuali Boolean No Default
zarContacto
Responsys
caracteresEs void No Default
pecialesDire
ccion
caracteresEs void No Default
pecialesDire
ccion
funcionCrea tipodocumento- void No Default
Cliente String,nroDocume
nto-String
RucVsCedul void No Default
a

validarForm void No Default


atosTel
validacionTel void No Default
efono
Object Workflows
Name Definition Name Event Point Description
Regularizar_Contacto Regularizar_Contacto Update

reasignacionCascada reasignacionCascada Update

Dynamic Layouts
Layout Name Active Role
Layout Masivo Tarjeta No
Layout Masivo Yes USUARIO_MASIVO;
Layout Corporativo Yes
Punto Net Yes
Partner Contact Yes
Página Administrador Yes ADMIN_GENERAL_PNT;
Prospecto o Cliente Masivo Yes USUARIO_MASIVO;

Prospecto o Cliente Corporativo Yes

Contacto Masivo No USUARIO_MASIVO;


Contacto Corporativo No
Página Administrador Yes ADMIN_GENERAL_PNT;
Masivo Prospecto o Cliente Yes USUARIO_MASIVO;

Corporativo Prospecto o Cliente Yes

Contacto Masivo No USUARIO_MASIVO;


Temporalidad Corporativo No GESTION_TEMPORALIDAD;

Contacto Corporativo No
on
tactos
B
M
PERSON_PROFILES
61
14
17
22
2
10
16

Searchable
No
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
Yes

Name Default Value Required Updatable Searchable REST Enabl


RIBUTE_CHAR014 N Yes Yes No Yes
RIBUTE_CHAR007 No Yes No Yes
No No No Yes
RIBUTE_CHAR012 PN No Yes Yes Yes
RIBUTE_CHAR038 N Yes Yes No Yes
No No No Yes

RIBUTE_CHAR001 No Yes No Yes


RIBUTE_CHAR035 No Yes No Yes
RIBUTE_NUMBER009 No Yes No Yes
RIBUTE_CHAR017 No Yes No Yes
RIBUTE_NUMBER007 No Yes No Yes
RIBUTE_CHAR025 No Yes No Yes
RIBUTE_NUMBER008 No Yes No Yes
RIBUTE_CHAR022 No Yes No Yes
RIBUTE_CHAR029 Yes Yes Yes Yes
RIBUTE_CHAR008 No Yes No Yes
No No No Yes

RIBUTE_CHAR002 No Yes Yes Yes


RIBUTE_CHAR021 No Yes No Yes
RIBUTE_TIMESTAMP002 No Yes No Yes
No Yes No Yes
RIBUTE_NUMBER004 No Yes No Yes
RIBUTE_CHAR016 No Yes Yes Yes
RIBUTE_CHAR019 N Yes Yes No Yes
RIBUTE_CHAR023 No Yes No Yes
RIBUTE_CHAR045 N Yes Yes No Yes
RIBUTE_CHAR006 No Yes No Yes
RIBUTE_CHAR037 N Yes Yes No Yes
RIBUTE_CHAR024 No Yes No Yes
RIBUTE_CHAR031 No Yes No Yes
RIBUTE_CHAR034 N Yes Yes No Yes
No Yes No Yes
RIBUTE_CLOB001 No Yes No Yes
RIBUTE_NUMBER006 No Yes No Yes
RIBUTE_NUMBER002 No Yes No Yes
No No No Yes

RIBUTE_CHAR003 No Yes No Yes


RIBUTE_TIMESTAMP001 No Yes No Yes
RIBUTE_NUMBER015 No Yes No Yes
RIBUTE_CHAR013 No Yes No Yes
RIBUTE_CHAR039 N Yes Yes No Yes
RIBUTE_NUMBER012 No Yes No Yes
RIBUTE_CHAR018 N Yes Yes No Yes
RIBUTE_CHAR010 No Yes No Yes
RIBUTE_NUMBER001 No Yes No Yes
RIBUTE_CHAR011 No Yes Yes Yes
RIBUTE_CHAR005 No Yes No Yes
RIBUTE_CHAR032 No Yes No Yes
RIBUTE_CHAR004 No Yes Yes Yes
No Yes No Yes
RIBUTE_CHAR030 No Yes No Yes
RIBUTE_CHAR020 No Yes No Yes
RIBUTE_NUMBER011 Yes Yes No Yes
RIBUTE_CHAR033 No Yes No Yes
RIBUTE_CHAR015 No Yes Yes Yes
RIBUTE_NUMBER005 No Yes No Yes
RIBUTE_CHAR036 N Yes Yes Yes Yes
RIBUTE_CHAR009 No Yes No Yes
RIBUTE_NUMBER003 No Yes No Yes
No Yes No Yes
RIBUTE_NUMBER010 No Yes No Yes

Expression
def dia_nac = day(DateOfBirth)
def dia_actual = day(today())
def mes_nac = month(DateOfBirth)
def mes_actual = month(today())
def year_nac = year(DateOfBirth)
def year_actual= year(today())
def edad = year_actual - year_nac
def edad2 = edad -1

if(mes_nac == mes_actual){
if(dia_nac < dia_actual){
setAttribute('Edad_c', edad)

} else {
setAttribute('Edad_c', edad2)

}
} else if(mes_nac > mes_actual){
setAttribute('Edad_c', edad2)

} else {
setAttribute('Edad_c', edad)

if(nvl(Discapacitado_c,'N')=='N'){
setAttribute('PorcentajeDeDiscapacidad_c',0 as BigDecimal)
}
setAttribute('AreaComercial_c',adf.util.usuarioMasivoCorporativo())
if(adf.util.usuarioMasivoCorporativo()!=''){
setAttribute('SalesProfileType','ZCA_PROSPECT')
}

validarFormatosTel();
def MoC=adf.util.usuarioMasivoCorporativo()

if(MoC=='MASIVO'){
setAttribute('SalesProfileType','ZCA_PROSPECT')
setAttribute('Timer_c',now().time)
}
if(AreaComercial_c=='CORPORATIVO'||SalesProfileType=='ZCA_CONTACT'){
setAttribute('FechaDeAsignacion_c',null)
setAttribute('EstadoDeTemporalidad_c','INACTIVA')
return true
}
if(adf.util.usuarioMasivoCorporativo()!='' || adf.util.usuarioAdministrador()){
if(OwnerPartyId!=null){
setAttribute('FechaDeAsignacion_c',today())
}
else{
setAttribute('FechaDeAsignacion_c',null)
}
def fecha=date(2001,01,01)
if(nvl(FechaDeAsignacion_c,fecha)!=fecha){
def dias=adf.util.diasTemporalidad(nvl(AreaComercial_c,''),'CONTACTO','')
println('dias:'+dias)
setAttribute('DisponibleHasta_c',nvl(FechaDeAsignacion_c,today())+dias.toInteger())
setAttribute('EstadoDeTemporalidad_c','ACTIVA')
setAttribute('OportunidadAbierta_c','NO_ABIERTA')
}
else
{
setAttribute('DisponibleHasta_c',null)
}
}
getDirecccionLead()
def correo=nvl(CorreoElectronico_c,'')
if((SalesProfileType == 'ZCA_CONTACT' || SalesProfileType == 'ZCA_CUSTOMER' || SalesProfileType == 'ZCA_PROSPECT' )&&correo!=''
def mails=Email
def exists=false
while(mails.hasNext()){
def mail=mails.next()
mail.setAttribute('EmailAddress',correo)
exists = true
}
if(!exists){
def mail=mails.createRow()
mail.setAttribute('EmailAddress',correo)
mail.setAttribute('CreatedByModule','FUSE')
mails.insertRow(mail)
}
}
if(TipoCon_c=='PROSPECTO'){
setAttribute('SalesProfileType','ZCA_PROSPECT');
}
if(nvl(TipoCon_c,'')!=''){
setAttribute('TipoCon_c',TipoCon_c);
}
if((SalesProfileType == 'ZCA_CONTACT' || SalesProfileType == 'ZCA_CUSTOMER' || SalesProfileType == 'ZCA_PROSPECT')&&(adf.util.us
adf.util.usuarioAdministrador())){
def historico = newView('HistoricoDeTemporalidad_c')
def crear = historico.createRow();
crear.setAttribute('IdContacto_c', PartyNumber);
crear.setAttribute('RecordName', '--');
crear.setAttribute('ValorActual_c',DisponibleHasta_c);
historico.insertRow(crear)
}
validarDocumentoDuplicado()
LlenadoDocumentosC()
def re= getOriginalAttributeValue('DisponibleHasta_c')
if(nvl(re,'')==''){
re='–'
}
if(isAttributeChanged('DisponibleHasta_c')&& re!=DisponibleHasta_c){
def historico = newView('HistoricoDeTemporalidad_c')
def crear = historico.createRow();
crear.setAttribute('IdContacto_c',PartyNumber)
crear.setAttribute('RecordName', re);
crear.setAttribute('ValorActual_c',DisponibleHasta_c);
historico.insertRow(crear)

}
if(isAttributeChanged('PersonFirstName')&&PersonFirstName=='fafafa'){
def optys=newView('OpportunityVO')
def optyc=newViewCriteria(optys)
def optyr=optyc.createRow()
def optyi=optyr.ensureCriteriaItem('OwnerResourcePartyId')
optyi.setOperator('=')
optyi.setValue(300000035218469)
optyc.insertRow(optyr)
optys.appendViewCriteria(optyc)
optys.executeQuery()
def resultMap=[:]
def optyList=[]
while(optys.hasNext()){
def opty=optys.next()
def rowMap=[:]
rowMap.put('optyName',opty.Name)
rowMap.put('optyKey',opty.OptyNumber)
optyList.add(rowMap)
}
def contacts=newView('PersonProfile')
def contactc=newViewCriteria(contacts)
def contactr=contactc.createRow()
def contacti=contactr.ensureCriteriaItem('OwnerPartyId')
contacti.setOperator('=')
contacti.setValue(300000035218469)
contactc.insertRow(contactr)
contacts.appendViewCriteria(contactc)
contacts.executeQuery()
def contactList=[]
while(contacts.hasNext()){
def contact=contacts.next()
def rowMap=[:]
rowMap.put('contactName',contact.PartyUniqueName)
rowMap.put('contactKey',contact.PartyNumber)
contactList.add(rowMap)
}
def accounts=newView('OrganizationProfile')
def accountc=newViewCriteria(accounts)
def accountr=accountc.createRow()
def accounti=accountr.ensureCriteriaItem('OwnerPartyId')
accounti.setOperator('=')
accounti.setValue(300000035218469)
accountc.insertRow(accountr)
accounts.appendViewCriteria(accountc)
accounts.executeQuery()
def accountList=[]
while(accounts.hasNext()){
def account=accounts.next()
def rowMap=[:]
rowMap.put('accountName',account.PartyUniqueName)
rowMap.put('accountKey',account.PartyNumber)
accountList.add(rowMap)
}
resultMap.put('contacts',contactList)
resultMap.put('accounts',accountList)
resultMap.put('optys',optyList)
throw new oracle.jbo.ValidationException('usuarioIncorrecto:'+resultMap)
return true
def fpagos=newView('FormaDePago_c')
fpagos.setMaxFetchSize(2000)
fpagos.executeQuery()
while(fpagos.hasNext()){
def fpago=fpagos.next()
fpago.remove()
}

return true
def vars=newView('VariablesDeSistema_c')
def var=vars.createRow()
var.setAttribute('RecordName','CMV')
var.setAttribute('OraZcxOwner_Id_c',300000028591565)
var.setAttribute('Valor_c','300000000210277')
var.setAttribute('DescripcionDeVariable_c','Método de ventas corporativo')
vars.insertRow(var)
var=vars.createRow()
var.setAttribute('RecordName','MMV')
var.setAttribute('OraZcxOwner_Id_c',300000028591565)
var.setAttribute('Valor_c','300000028764220')
var.setAttribute('DescripcionDeVariable_c','Método de ventas masivo')
vars.insertRow(var)
var=vars.createRow()
var.setAttribute('RecordName','CMVE1')
var.setAttribute('OraZcxOwner_Id_c',300000028591565)
var.setAttribute('Valor_c','300000000210283')
var.setAttribute('DescripcionDeVariable_c','C 01 - Contacto efectivo')
vars.insertRow(var)
var=vars.createRow()
var.setAttribute('RecordName','CMVE2')
var.setAttribute('OraZcxOwner_Id_c',300000028591565)
var.setAttribute('Valor_c','300000000210280')
var.setAttribute('DescripcionDeVariable_c','C 02 - Preventa')
vars.insertRow(var)
var=vars.createRow()
var.setAttribute('RecordName','CMVE3')
var.setAttribute('OraZcxOwner_Id_c',300000028591565)
var.setAttribute('Valor_c','300000000210282')
var.setAttribute('DescripcionDeVariable_c','C 03 - Oferta')
vars.insertRow(var)
var=vars.createRow()
var.setAttribute('RecordName','CMVE4')
var.setAttribute('OraZcxOwner_Id_c',300000028591565)
var.setAttribute('Valor_c','300000000210284')
var.setAttribute('DescripcionDeVariable_c','C 04 - Contrato')
vars.insertRow(var)
var=vars.createRow()
var.setAttribute('RecordName','CMVE5')
var.setAttribute('OraZcxOwner_Id_c',300000028591565)
var.setAttribute('Valor_c','300000000210278')
var.setAttribute('DescripcionDeVariable_c','C 05 - Instalación')
vars.insertRow(var)
var=vars.createRow()
var.setAttribute('RecordName','CMVE6')
var.setAttribute('OraZcxOwner_Id_c',300000028591565)
var.setAttribute('Valor_c','300000000210279')
var.setAttribute('DescripcionDeVariable_c','C 06 - Cierre')
vars.insertRow(var)
var=vars.createRow()
var.setAttribute('RecordName','MMVE1')
var.setAttribute('OraZcxOwner_Id_c',300000028591565)
var.setAttribute('Valor_c','300000028764221')
var.setAttribute('DescripcionDeVariable_c','M 01 - Evaluación')
vars.insertRow(var)
var=vars.createRow()
var.setAttribute('RecordName','MMVE2')
var.setAttribute('OraZcxOwner_Id_c',300000028591565)
var.setAttribute('Valor_c','300000028764222')
var.setAttribute('DescripcionDeVariable_c','M 02 - Oportunidad')
vars.insertRow(var)
var=vars.createRow()
var.setAttribute('RecordName','MMVE3')
var.setAttribute('OraZcxOwner_Id_c',300000028591565)
var.setAttribute('Valor_c','300000028764223')
var.setAttribute('DescripcionDeVariable_c','M 03 - Firma y Validación (Bruto)')
vars.insertRow(var)
var=vars.createRow()
var.setAttribute('RecordName','MMVE4')
var.setAttribute('OraZcxOwner_Id_c',300000028591565)
var.setAttribute('Valor_c','300000028764363')
var.setAttribute('DescripcionDeVariable_c','M 04 - Instalación (Neto)')
vars.insertRow(var)
var=vars.createRow()
var.setAttribute('RecordName','MMVE5')
var.setAttribute('OraZcxOwner_Id_c',300000028591565)
var.setAttribute('Valor_c','300000028764364')
var.setAttribute('DescripcionDeVariable_c','M 05 - Cierre')
vars.insertRow(var)
}

if(isAttributeChanged('SalesProfileType')&& SalesProfileType=='ZCA_CUSTOMER'){
ValidarCliente()
setAttribute('TipoCon_c','CLIENTE')
}
LlenadoDocumentosC()

if(isAttributeChanged('JgzzFiscalCode')||isAttributeChanged('NumeroDePasaporte_c')||isAttributeChanged('NumeroDeCedula_c')||
isAttributeChanged('NumeroDeDocumento_c') ){
if(isAttributeChanged('JgzzFiscalCode') && nvl(JgzzFiscalCode,'') !=''){
RucVsCedula()
}
validarDocumentoDuplicado()
}

def correo= nvl(CorreoElectronico_c,'')


if((SalesProfileType == 'ZCA_CONTACT' || SalesProfileType == 'ZCA_CUSTOMER' || SalesProfileType == 'ZCA_PROSPECT') && correo!='
def mails=Email
def exists=false
while(mails.hasNext()){
def mail=mails.next()
mail.setAttribute('EmailAddress',correo)
exists = true
}
if(!exists && correo!=''){
def mail=mails.createRow()
mail.setAttribute('EmailAddress',correo)
mail.setAttribute('CreatedByModule','FUSE')
println('correo:-'+correo+'-')
mails.insertRow(mail)
}
}

validarFormatosTel();
if(isAttributeChanged('Edad_c') && Edad_c>=100){
throw new oracle.jbo.ValidationException('La fecha de nacimiento no es valida')
}

if(AreaComercial_c=='CORPORATIVO' || SalesProfileType=='ZCA_CUSTOMER' || nvl(AreaComercial_c,'')==''){


setAttribute('FechaDeAsignacion_c',null)
setAttribute('EstadoDeTemporalidad_c','INACTIVA')
return true
}

def previousOwnerId=getOriginalAttributeValue('OwnerPartyId') as Long


def cambioOwner=isAttributeChanged('OwnerPartyId') && previousOwnerId!=OwnerPartyId
def cambioLeadsAbiertos=isAttributeChanged('LeadsAbiertos_c')
def cambioOportunidadesAbiertas=isAttributeChanged('OportunidadesAbiertas_c')

if(cambioOwner||cambioLeadsAbiertos||cambioOportunidadesAbiertas){
def currentOwnerId=nvl(OwnerPartyId,0 as Long)
def usuarioGenericoId=adf.util.usuarioGenericoMasivo()
def leadsAbiertos=nvl(LeadsAbiertos_c,0 as BigDecimal)as Long
def oportunidadesAbiertas=nvl(OportunidadesAbiertas_c,0 as BigDecimal) as Long
def statusTemporalidad=EstadoDeTemporalidad_c
def fechaAsignacion=nvl(FechaDeAsignacion_c,today())
def disponibleHasta=null
if(cambioOwner){
fechaAsignacion=today()
if(OverrideReassignment_c!='Y' && AreaComercial_c=='CORPORATIVO'){
def mapCliente=[:]
def tipoCliente=''
mapCliente.put('customerId',PartyId)
mapCliente.put('ownerId',OwnerPartyId)
mapCliente.put('tipoCliente','PERSON')
adf.util.reasignarListaClientes([mapCliente])
}
}
if(currentOwnerId==usuarioGenericoId){
statusTemporalidad='DESASIGNADO'
if(cambioOwner){
setAttribute('UsuarioDesasignado_Id_c',adf.util.getResourceProfileId(previousOwnerId))
def team=Team
while(team.hasNext()){
def member=team.next()
if(member.PartyId==previousOwnerId)
member.remove()
}
fechaAsignacion=today()
}
}
else if(leadsAbiertos>0 || oportunidadesAbiertas>0){
statusTemporalidad='INACTIVA'
}
else{
statusTemporalidad='ACTIVA'
disponibleHasta=DisponibleHasta_c
if(cambioLeadsAbiertos || cambioOportunidadesAbiertas || cambioOwner){
fechaAsignacion=today()
def fecha=date(2001,01,01)
def dias=adf.util.diasTemporalidad(nvl(AreaComercial_c,''),'CONTACTO','')
disponibleHasta=fechaAsignacion+dias.toInteger()
}
}
setAttribute('EstadoDeTemporalidad_c',statusTemporalidad)
setAttribute('DisponibleHasta_c',disponibleHasta)
setAttribute('FechaDeAsignacion_c',fechaAsignacion)
}
if(OverrideReassignment_c=='Y'){
setAttribute('OverrideReassignment_c','N')
}
def oldCed = getOriginalAttributeValue('NumeroDeCedula_c')
def oldRuc= getOriginalAttributeValue('JgzzFiscalCode')
def oldPas= getOriginalAttributeValue('NumeroDePasaporte_c')
def ruc =isAttributeChanged('JgzzFiscalCode')
def pasaporte = isAttributeChanged('NumeroDePasaporte_c')
def cedula = isAttributeChanged('NumeroDeCedula_c')

if(pasaporte){
if(nvl(oldPas,'') != '' && !adf.util.usuarioAdministrador()){
println('Pasaporte valor origininal: '+oldPas)
if(nvl(NumeroDePasaporte_c,'') != nvl(oldPas,'') && (SalesProfileType=='ZCA_PROSPECT' || SalesProfileType=='ZCA_CUSTOMER')){
println( 'pasaporte valor actual: ' + NumeroDePasaporte_c)
throw new oracle.jbo.ValidationException('(BDS) No se puede Modificar este Campo Pasaporte')
}
}

if( nvl(NumeroDePasaporte_c,'')==''){
EliminarRegistroClienteNetplus('P')
}else{
println('NumeroDePasaporte:'+NumeroDePasaporte_c)
crearActualizarRegistroClienteNetplus('P',NumeroDePasaporte_c)
}
}

if(ruc){
if(nvl(oldRuc,'') != '' && !adf.util.usuarioAdministrador()){
println('RUC valor origininal: '+oldRuc)
if(nvl(JgzzFiscalCode,'') != nvl(oldRuc,'') && (SalesProfileType=='ZCA_PROSPECT' || SalesProfileType=='ZCA_CUSTOMER')){
println( 'RUC valor actual: ' + JgzzFiscalCode)
throw new oracle.jbo.ValidationException('(BDS) No se puede Modificar este Campo RUC')
}
}

if( nvl(JgzzFiscalCode,'')==''){
EliminarRegistroClienteNetplus('R')
}else{
println('JgzzFiscalCode:'+JgzzFiscalCode)
crearActualizarRegistroClienteNetplus('R',JgzzFiscalCode)
}
}

if(cedula){
if(nvl(oldCed,'') != '' && !adf.util.usuarioAdministrador()){
println('cedula valor origininal: '+oldCed)
if(nvl(NumeroDeCedula_c,'') != nvl(oldCed,'') && (SalesProfileType=='ZCA_PROSPECT' || SalesProfileType=='ZCA_CUSTOMER')){
println( 'cedula valor actual: ' + NumeroDeCedula_c)
throw new oracle.jbo.ValidationException('(BDS) No se puede Modificar este Campo Cedula')
}
}

if( nvl(NumeroDeCedula_c,'')==''){
EliminarRegistroClienteNetplus('C')
}else{
println('NumeroDeCedula:'+NumeroDeCedula_c)
crearActualizarRegistroClienteNetplus('C',NumeroDeCedula_c)
}
}
if(AreaComercial_c=='MASIVO'){
//caracteresEspecialesDireccion()
CrearActualizarContactoResponsys()
def cambioFirstName= isAttributeChanged('PersonFirstName')
def cambioLastName= isAttributeChanged('PersonLastName')
def cambioCorreoElectronico_c= isAttributeChanged('CorreoElectronico_c')
if(cambioFirstName||cambioLastName||cambioCorreoElectronico_c){

def codigoNP = nvl(CodigoNetPlus_c,'')


if(codigoNP!=''){
def nroDoc;
def tipoDoc;
def cliNets = newView('ClienteNetplus_c');
def cliNetc=newViewCriteria(cliNets)
def cliNetr=cliNetc.createRow()
def cliNeti=cliNetr.ensureCriteriaItem('Contacto_Id_c')
cliNeti.setOperator('=')
cliNeti.setValue(PartyId)
def cliNetj=cliNetr.ensureCriteriaItem('RecordName')
cliNetj.setOperator('=')
cliNetj.setValue(codigoNP)
cliNetc.insertRow(cliNetr)
cliNets.appendViewCriteria(cliNetc)
cliNets.executeQuery()
def existe=false
while(cliNets.hasNext()&&!existe){
def cliNet=cliNets.next()
existe=true
nroDoc=nvl(cliNet.NumeroDeDocumento_c,'')
tipoDoc=nvl(cliNet.TipoDeDocumento_c,'')
}
if(existe){
funcionCreaCliente(tipoDoc,nroDoc)
println('Actualización enviada a netplus, actualizado por: ' )

}}
def horaCambios = nvl(Timer_c,0 as BigDecimal)
if(horaCambios != ''){
println('horaCambios (ms):'+horaCambios)
def diferencia = now().time - horaCambios;
println('diferencia (ms):'+diferencia)

if(diferencia <= 10000){


//throw new oracle.jbo.ValidationException('diferencia (ms):'+diferencia)
try{
def token = adf.webServices.ObtenerToken.GET()
println('token: '+token)
def httpHeaders = ['token':token];
def service = adf.webServices.CreateUpdateContactResponsys
service.requestHTTPHeaders = httpHeaders;
try{
def serviceResponse = service.POST(PartyNumber)
println('Response: '+serviceResponse)
//throw new oracle.jbo.ValidationException(''+ serviceResponse)
}catch(Exception e){
println('Error en llamada al servicio "CrearActualizarContactoResponsys: '+e.message)
//throw new oracle.jbo.ValidationException(''+ e.message)
}

}catch(Exception e){
println('Error en llamada al servicio "ObtenerToken: '+e.message)
}
}
}

Expression
def moc=adf.util.usuarioMasivoCorporativo()
def usuarioSales=(moc=='MASIVO'||moc=='CORPORATIVO')
def usuarioMasivo=(moc=='MASIVO')
if((SalesProfileType == 'ZCA_CONTACT' || SalesProfileType == 'ZCA_CUSTOMER' || SalesProfileType == 'ZCA_PROSPECT')&&usuarioSal
adf.util.usuarioAdministrador()
validacionTelefono() ||adf.util.usuarioAdministrador() ){
def ok=true
def email=nvl(CorreoElectronico_c,'')
if(email != '')
{
def regex=/(?i)^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/
if(!email.matches(regex))
{
throw new oracle.jbo.ValidationException('El correo debe tener un formato valido. Ejemplo: [email protected]')
}
def valCorreo=substringAfter(substringAfter(email,'@'),'.')
if(! contains(valCorreo,'.')){
ok= true
}
else if(substringAfter(valCorreo,'.')!=''){
ok= true
}
else{
ok= false
}
}
if(!ok){
throw new oracle.jbo.ValidationException('Correo electrónico no válido')
}
def hasEmail= email!=''
def telColeccion = Phone;
telColeccion?.reset();
def sinTel = true;
def cont=0;
def mobile=false
def work=false
def home= false
def phoneList=[]

while (telColeccion.hasNext())
{
def ps = telColeccion?.next();
def phoneMap=[:]
def type=nvl(ps.PhoneType,'')
def phoneNumber = nvl(ps?.PhoneNumber, '0').replaceAll("[^\\d]", "")
def areaCode=nvl(ps?.PhoneAreaCode,'0')
def okFormat= areaCode.isInteger()

def okPhoneType=ps.getPrimaryRowState().isNew() || !ps.isAttributeChanged('PhoneType')

if(!okPhoneType){
throw new oracle.jbo.ValidationException('No es posible modificar el tipo de teléfono de un teléfono ya creado. Favor de dar de alta
correcto')
}

if((type=='MOBILE'||type=='WORK' || type=='HOME')&&ps.Status=='A'){
if(type=='MOBILE'){
mobile=phoneNumber!='0'
}
if(type=='WORK'){
work=phoneNumber!='0'
}
if(type=='HOME'){
home=phoneNumber!='0'
}
if(usuarioMasivo)
{
if((type=='MOBILE')&&(phoneNumber != '' && phoneNumber != '0'&& phoneNumber != 'NULL')){
int lengtharea = String.valueOf(areaCode).length();
int lengthnum = String.valueOf(phoneNumber).length();
/* if(lengtharea>2 || (lengtharea==1 && areaCode != 0)){
throw new oracle.jbo.ValidationException('(BDS) Se requieren 2 dígitos en el código de área de teléfono móvil '+ lengtharea +
presione} el botón cancelar, ingrese nuevamente al contacto y coloque la información correcta.')
if(lengthnum>8 || lengthnum<=7 ){
throw new oracle.jbo.ValidationException('(BDS) Se requieren 8 dígitos en el número de teléfono móvil, para ingresar correctam
presione
} el botón cancelar e ingrese nuevamente al contacto.')
*/
}

if((type=='WORK' || type=='HOME')&&(phoneNumber != '' && phoneNumber != '0')){


int lengtharea = String.valueOf(areaCode).length();
int lengthnum = String.valueOf(phoneNumber).length();
/* if(lengtharea>2 || (lengtharea==1 && areaCode != 0)){
throw new oracle.jbo.ValidationException('(BDS) Se requieren 2 dígitos en el código de área de teléfono, por favor presione el b
nuevamente
} al contacto y coloque la información correcta.')
if(lengthnum>8 || lengthnum<=6 ){
throw new oracle.jbo.ValidationException('(BDS) Se requieren 7 o mas dígitos en el número, para una nueva edición de teléfon
ingresa} nuevamente al contacto')
*/

}
}
}
phoneMap.put('ContactPointId',ps.ContactPointId)
phoneMap.put('PhoneType',type)
phoneMap.put('CountryCode',ps.PhoneCountryCode)
phoneMap.put('PhoneAreaCode',areaCode)
phoneMap.put('PhoneNumber',phoneNumber)
phoneList.add(phoneMap)
}

return hasEmail||mobile||work
}
return true

def R= nvl(JgzzFiscalCode,'')
def C= nvl(NumeroDeCedula_c,'')
def P= nvl(NumeroDePasaporte_c,'')
def moc=adf.util.usuarioMasivoCorporativo()
def usuarioSales=(moc=='MASIVO'||moc=='CORPORATIVO')
if(SalesProfileType!='ZCA_CONTACT'){
if(isAttributeChanged('JgzzFiscalCode') || isAttributeChanged('NumeroDeCedula_c') || isAttributeChanged('NumeroDePasaporte_c') || g
if(R=='' && C=='' && P=='' &&moc!=''&&!usuarioPartner()&&!adf.util.usuarioAdministrador() && usuarioSales){
throw new oracle.jbo.ValidationException('(BDS) Se requiere ingresar al menos uno de los siguientes campos para poder avanzar: Nú
Cédula
} o Número de Pasaporte')
}
}
return true
if(getPrimaryRowState().isNew())
return true
def moc=adf.util.usuarioMasivoCorporativo()
def usuarioMasivo=moc=='MASIVO'
def usuarioCorporativo= moc=='CORPORATIVO'
def usuarioSales=(usuarioMasivo||usuarioCorporativo)

if(adf.util.usuarioAdministrador() || adf.util.usuarioAdministradorTemporalidad() || !usuarioSales){


return true
}
def currentUsername=adf.context.getSecurityContext()?.getUserProfile()?.getUserID()

def resources=newView('Resource')
def resourcec=newViewCriteria(resources)
def resourcer=resourcec.createRow()
def resourcei=resourcer.ensureCriteriaItem('Username')
resourcei.setOperator('=')
resourcei.setValue(currentUsername)
resourcec.insertRow(resourcer)
resources.appendViewCriteria(resourcec)
resources.executeQuery()
def currentUserId
while(resources.hasNext()&&currentUserId==null){
def resource=resources.next()
currentUserId=resource.PartyId
}
def genericoMasivo=adf.util.usuarioGenericoMasivo()
def genericoCorporativo=adf.util.usuarioGenericoCorporativo()
if( isAttributeChanged('OwnerPartyId')){
if(OwnerPartyId!=currentUserId){
throw new oracle.jbo.ValidationException('Sólo los managers pueden asignar un contacto a otros usuarios')
}
def prevOwner=getOriginalAttributeValue('OwnerPartyId')
def usuarioDesasignadoId=nvl(UsuarioDesasignado_Obj_c?.PartyId,0 as Long)
def tipoUsuario=adf.util.usuarioMasivoCorporativo()
if((prevOwner==genericoMasivo && usuarioMasivo )||(prevOwner==genericoCorporativo && usuarioCorporativo)){
def fechaNull=new Date(01,01,50)
def fechaAsignacion=nvl(FechaDeAsignacion_c,fechaNull)
if(usuarioDesasignadoId!=currentUserId || fechaAsignacion+15<today()){
return true
}
else{
throw new oracle.jbo.ValidationException('Este usuario no puede tomar el contacto porque le fue desasignado en el pasado, hasta
de asignación')
}
}
else{
throw new oracle.jbo.ValidationException('No es posible tomar el contacto porque está siendo gestionado por otro ejecutivo')
}
}
else{
if(OwnerPartyId!=currentUserId){
def team=Team
def partOfTeam=false
while(team.hasNext()&&!partOfTeam){
def member=team.next()
if(member.PartyId==currentUserId && !member.getPrimaryRowState().isNew()){
partOfTeam=true
}
}
if(!partOfTeam){
if(!adf.util.usuarioAdministradorTemporalidad() && !usuarioMasivo){
throw new oracle.jbo.ValidationException('No puedes modificar este contacto porque no eres parte del equipo de trabajo')
}
}
}
}
return true

return true/*if(SalesProfileType=='ZCA_CUSTOMER'){
if(nvl(CodigoNetPlus_c,'')==''){
return false
}else{
return true
}
}*/
return oracle.apps.fnd.applcore.oaext.model.OAEntityImpl.validateFlexfieldValue(newValue, adf.source, "FND_ACFF_VA_AttributeCatego
"ContextCode", "Bind_ContextCode")
return oracle.apps.fnd.applcore.oaext.model.OAEntityImpl.validateFlexfieldValue(newValue, adf.source,
"FND_ACFF_VA_AttributeCategory__GSG_EC_SRI_INFO_ADICIONAL_Attribute15", "Value", "Bind_Value")
adf.source.isLookupIdValid('UsuarioDesasignado_Id_c',newValue)

adf.source.isLookupIdValid('CanalDeVenta_Id_c',newValue)

adf.source.isLookupIdValid('LeadProgenitor_Id_c',newValue)

adf.source.isLookupIdValid('OrigenDeVenta_Id_c',newValue)
adf.source.isLookupIdValid('OrigenDeVenta_Id_c',newValue)

Expression
/*
def fechadeNacimiento_c =''+nvl(DateOfBirth,'');
throw new oracle.jbo.ValidationException(''+fechadeNacimiento_c )
println('fechadeNacimiento_c'+fechadeNacimiento_c)
*/
//ValidacionContacto()
def CodigoNetPlus = CodigoNetPlus_c;

//def CodigoNetPlus ='183148';


println('CodigoNetPlus: ' +CodigoNetPlus_c)
def identificadorOSC_c =PartyId;
def NumIntegracion = '';
def Bitacora = [:]
Bitacora.put('Contacto_Id_c',identificadorOSC_c)

def cTelefonicoPais_c = '';


def codigoArea_c = '';
def numero_c = '';
def extension_c= '';
def contactPointId = '';

def ctTelefonicoPais_c= '';


def codigoAreaT_c = '';
def numeroT_c = '';
def telefonos = Phone;
while (telefonos.hasNext()){
def telefono = telefonos.next();
TipoTelefono_c = telefono.PhoneType;
if (TipoTelefono_c == 'WORK'){
ctTelefonicoPais_c= nvl(telefono.PhoneCountryCode,'');
codigoAreaT_c = nvl(telefono.PhoneAreaCode,'');
numeroT_c = nvl(telefono.PhoneNumber,'');
extension_c = nvl(telefono.PhoneExtension,'');
contactPointId = telefono.ContactPointId;
}else{

cTelefonicoPais_c=nvl(telefono.PhoneCountryCode,'');
codigoArea_c = nvl(telefono.PhoneAreaCode,'');
numero_c = nvl(telefono.PhoneNumber,'');
contactPointId = telefono.ContactPointId;
}
}
def tipo_c =''+nvl(TipoDePersona_c,'');
def fechadeNacimiento_c =''+nvl(DateOfBirth,'');
def nombres_c =''+nvl(PersonFirstName,'');
//def razonSocial_c =''+nvl(RazonSocial_c,'');
def genero_c =''+nvl(Gender,'');
def referido_c = ''+nvl(Referidoc_c,'');
def numeroDocumento_c =''+nvl(NumeroDeDocumento_c,'');
//def grupoComercial_c =''+nvl(GrupoComercial_c,'');
def cargo_c= ''+nvl(JobTitle,'');
def rolComprador_c = ''+nvl(SalesBuyingRoleCode,'');
def sector_c = ''+nvl(Sector_c,'');
def apellido_c =''+nvl(PersonLastName,'');
def paginaWeb_c = ''+nvl(PrimaryURL,'');
def sectoresComerciales_c =''+nvl(SectorComercial_c,'');
def contactoPrincipal_c =''+nvl(PreferredContactName,'');
def idContacto_c = ''+nvl(PreferredContactPersonId,0 as long);
def identificadorPartyOSC_c = '' + nvl(PartyNumber,'');
def idEjecutivoCorporativo_c =''+nvl(OwnerPartyId,0 as long);
//def identificadorOSC_c =''+ nvl(PartyId,'');
def correoContacto_c = ''+nvl(PrimaryEmailAddress,'');
def tipoDocumento_c =''+nvl(TipoDocumento_c,'');
def tipoCliente_c = ''+nvl(SalesProfileType,'');
def afinidad_c=''+nvl(SalesAffinityCode,'')
def ejecutivoCorporativo_c =''+nvl(OwnerPartyName,'');
def telefonoContacto_c = ''+nvl(PreferredContactPhone,'');
def correoElectronico_c =''+nvl(CorreoElectronico_c,'');

def areaComercial_c = ''+ nvl(AreaComercial_c,'');


// def cargo_c =''+nvl(JobTitle,'');
//def TipoTelefono_c =''+nvl(TipoTelefono_c,'');
def OperadoraDeTelefonoPrincipal_c =''+nvl(OperadoraDeTelefonoPrincipal_c,'');
def correoElectronico2_c =''+nvl(CorreoElectronico2_c,'');

def TipoDireccion_c ='';

def pais_c ='';


def callePrincipal_c ='';
def calleSecundaria_c ='';
def canton_c ='';
def provincia_c ='';
def addressNumber = '';
def direcciones = PartySite;
while (direcciones.hasNext()){
def direccion = direcciones.next();
TipoDireccion_c = nvl(direccion.CurcyConvRateType,'');
pais_c = nvl(direccion.Country,'');
callePrincipal_c = nvl(direccion.Address1,'');
calleSecundaria_c = nvl(direccion.Address2,'');
def provincia = nvl(direccion.State,'');
provincia_c = provincia.toUpperCase();
def canton = nvl(direccion.AddrElementAttribute1,'');
canton_c = canton.toUpperCase();
addressNumber = nvl(direccion.PartySiteNumber,'');
}

def terceraEdad = TerceraEdad_c;


def discapacitado = Discapacitado_c;
println('terceraEdad:'+ terceraEdad +' discapacitado:'+discapacitado)
def payload = [:]
payload.put('tipo',tipo_c)
payload.put('extension',extension_c)
payload.put('numero',numero_c)
//payload.put('codCiudadSucursal',)
payload.put('fechaNacimiento',fechadeNacimiento_c)
payload.put('provincia',provincia_c)
payload.put('nombres',nombres_c)
//payload.put('razonSocial',razonSocial_c)
payload.put('cTelefonicoPais',cTelefonicoPais_c)
payload.put('genero',genero_c)
payload.put('referido',referido_c)
payload.put('numeroDocumento',numeroDocumento_c)
//payload.put('grupoComercial',grupoComercial_c)
payload.put('cargo',cargo_c)
payload.put('rolComprador',rolComprador_c)
payload.put('sector',sector_c)
payload.put('apellidos',apellido_c)
payload.put('paginaWeb',paginaWeb_c)
payload.put('sectoresComerciales',sectoresComerciales_c)
payload.put('contactoPrincipal',contactoPrincipal_c)
payload.put('callePrincipal',callePrincipal_c)
payload.put('idContacto',idContacto_c)
payload.put('identificadorPartyOSC',identificadorPartyOSC_c)
payload.put('idEjecutivoCorporativo',idEjecutivoCorporativo_c)
payload.put('identificadorOSC',identificadorOSC_c)
payload.put('ctTelefonicoPais',ctTelefonicoPais_c)
payload.put('identificadorOSC',identificadorOSC_c)
payload.put('pais',pais_c)
payload.put('correoContacto',correoContacto_c)
payload.put('tipoDocumento',tipoDocumento_c)
payload.put('tipoCliente',tipoCliente_c)
payload.put('afinidad',afinidad_c)
payload.put('codigoArea',codigoArea_c)
payload.put('canton',canton_c)
payload.put('ejecutivoCorporativo',ejecutivoCorporativo_c)
payload.put('codigoAreaT',codigoAreaT_c)
payload.put('telefonoContacto',telefonoContacto_c)
payload.put('numeroT',numeroT_c)
payload.put('correoElectronico',correoElectronico_c)
payload.put('calleSecundaria',calleSecundaria_c)
payload.put('addressNumber',addressNumber)
payload.put('contactPointId',contactPointId)

//println('PAYLOAD: '+payload)
println('TipoTelefono_c: '+TipoTelefono_c)
println('PAYLOAD PN: '+payload)

def MensajeIntegracion = '';


def creaClienteNatural = '';
def codigoCliente=' ';
def ActualizaCliente = '';
def EstatusInt = '';
def response = '';
def data_c='';

try{
if (CodigoNetPlus == null ||CodigoNetPlus == ''|| CodigoNetPlus == '0' || CodigoNetPlus == ' ' ){
creaClienteNatural = adf.webServices.CrearClienteNaturalJuridico.POST(payload)
NumIntegracion = '13';
response = creaClienteNatural;
data_c = creaClienteNatural?.data;
MensajeIntegracion = creaClienteNatural?.message;
}else{
ActualizaCliente= adf.webServices.ActualizarClienteNaturalJuridico.POST(payload)
NumIntegracion = '14';
response = ActualizaCliente;
data_c = ActualizaCliente?.data;
MensajeIntegracion = ActualizaCliente?.message;
}

if(response.code == '1'){
EstatusInt = data_c.estatusIntegracion;
codigoCliente = data_c.codCliente;
setAttribute('EstatusInt_c',EstatusInt );
setAttribute('CodigoNetPlus_c',codigoCliente);

if(CodigoNetPlus_c!='' && tipoDocumento_c!='' && numeroDocumento_c!=''){


def cliNets = newView('ClienteNetplus_c');
def cliNetc=newViewCriteria(cliNets)
def cliNetr=cliNetc.createRow()
def cliNeti=cliNetr.ensureCriteriaItem('Contacto_Id_c')
cliNeti.setOperator('=')
cliNeti.setValue(PartyId)
def cliNetj=cliNetr.ensureCriteriaItem('NumeroDeDocumento_c')
cliNetj.setOperator('=')
cliNetj.setValue(numeroDocumento_c)
cliNetc.insertRow(cliNetr)
cliNets.appendViewCriteria(cliNetc)
cliNets.executeQuery()
def existe=false
while(cliNets.hasNext()&&!existe){
def cliNet=cliNets.next()
existe=true
}
if(!existe){
def cliNet=cliNets.createRow()
cliNet.setAttribute('TipoDeDocumento_c',tipoDocumento_c)
cliNet.setAttribute('NumeroDeDocumento_c',NumeroDeDocumento_c)
cliNet.setAttribute('RecordName',CodigoNetPlus_c)
cliNet.setAttribute('Contacto_Id_c',PartyId)
cliNets.insertRow(cliNet)
println('numdoc:'+NumeroDeDocumento_c+' tipo:'+tipoDocumento_c)
}else{
def cliNet=cliNets.createRow()
cliNet.setAttribute('TipoDeDocumento_c',tipoDocumento_c)
cliNet.setAttribute('NumeroDeDocumento_c',NumeroDeDocumento_c)
cliNet.setAttribute('RecordName',CodigoNetPlus_c)
cliNet.setAttribute('Contacto_Id_c',PartyId)
cliNets.insertRow(cliNet)
println('numdoc:'+NumeroDeDocumento_c+' tipo:'+tipoDocumento_c)
}
}
println('codigo: '+CodigoNetPlus_c)
Bitacora.put('Integracion_c',NumIntegracion)
Bitacora.put('MensajeIntegracion_c',encodeToBase64(''+MensajeIntegracion))
Bitacora.put('Payload_c',encodeToBase64(''+ payload))
Bitacora.put('Response_c',encodeToBase64(''+response))
Bitacora.put('IdPrincipal_c',codigoCliente)

adf.webServices.LogBitacora.POST(Bitacora)

else{
println('entrando a codigo igual a 0')

//setAttribute('EstatusInt_c',EstatusInt );
//setAttribute('CodigoNetPlus_c',codigoCliente);
//setAttribute('DesEstatusdeIntegracion_c',creaCliente?.message);
throw new oracle.jbo.ValidationException(''+ MensajeIntegracion)

}
}

catch(e){

if(codigoCliente == null || codigoCliente == ''){


codigoCliente = 0;
}
def msg=e.message

Bitacora.put('Integracion_c',NumIntegracion)
Bitacora.put('MensajeIntegracion_c',encodeToBase64(''+MensajeIntegracion))
Bitacora.put('Payload_c',encodeToBase64(''+ payload))
Bitacora.put('Response_c',encodeToBase64(''+response))
Bitacora.put('IdPrincipal_c',codigoCliente)

println('Payload bitacora: ' +Bitacora )


adf.webServices.LogBitacora.POST(Bitacora)
throw new oracle.jbo.ValidationException(''+ msg)
}

ValidacionContacto()

def tipo=''
def numero=''
def isNew=getPrimaryRowState().isNew()
def cambioRuc=isAttributeChanged('JgzzFiscalCode')
def cambioCedula=isAttributeChanged('NumeroDeCedula_c')
def cambioPasaporte=isAttributeChanged('NumeroDePasaporte_c')
def cambioTipoDocumento=isAttributeChanged('TipoDocumento_c')
def cambioNumeroDocumento=isAttributeChanged('NumeroDeDocumento_c')
def tipoDocumento=nvl(TipoDocumento_c,'')
def numeroDocumento=nvl(NumeroDeDocumento_c,'')
if(cambioTipoDocumento||cambioNumeroDocumento||isNew){
if(tipoDocumento!=''&&numeroDocumento!=''){
if(tipoDocumento=='R'){
setAttribute('JgzzFiscalCode',numeroDocumento)
}
else if(tipoDocumento=='C'){
setAttribute('NumeroDeCedula_c',numeroDocumento)
}
else if(tipoDocumento=='P'){
setAttribute('NumeroDePasaporte_c',numeroDocumento)
}
}
}
def R= nvl(JgzzFiscalCode,'')
def C= nvl(NumeroDeCedula_c,'')
def P= nvl(NumeroDePasaporte_c,'')
if(cambioRuc||cambioCedula||cambioPasaporte||isNew||numeroDocumento==''){
if( R!=''){
tipo= setAttribute('TipoDocumento_c','R')
numero =setAttribute('NumeroDeDocumento_c',R)
}
else if(C!=''){
tipo= setAttribute('TipoDocumento_c','C')
numero= setAttribute('NumeroDeDocumento_c',C)
}
else if(P!=''){
tipo= setAttribute('TipoDocumento_c','P')
numero= setAttribute('NumeroDeDocumento_c',P)
}
}
def Espacios = 0;
def ruc =nvl(JgzzFiscalCode,'').trim()
def ced=nvl(NumeroDeCedula_c,'').trim()
def pas=nvl(NumeroDePasaporte_c,'').trim()
if((ruc!='' || ced!='' || pas!='')){
def nomEjecutivo=''+nvl(OwnerPartyName,'');
def errorMsg=''
def persons = newView('PersonProfile');
def personc = newViewCriteria(persons);
def personr = personc.createRow();
def useOr=false
if(ruc!=''){
def personi=personr.ensureCriteriaItem('JgzzFiscalCode')
personi.setOperator('=')
personi.setValue(ruc)
useOr=true
}
if(ced!=''){
def personj=personr.ensureCriteriaItem('NumeroDeCedula_c')
personj.setOperator('=')
personj.setValue(ced)
if(useOr){
personj.setConjunction(0)
}
useOr=true
}
if(pas!=''){
def personk=personr.ensureCriteriaItem('NumeroDePasaporte_c')
personk.setOperator('=')
personk.setValue(pas)
if(useOr){
personk.setConjunction(0)
}
useOr=true
}
personc.insertRow(personr);
persons.appendViewCriteria(personc);
persons.executeQuery();
while (persons.hasNext()) {
def curRow = persons.next()
if(''+PartyId!=''+curRow.PartyId){
if(ruc!=''&&curRow.JgzzFiscalCode==ruc){
errorMsg+='El numero de RUC '+ ruc + ' ya existe en el contacto '+curRow.PersonName+' del usuario '+curRow.Owne
}
if(ced!=''&&curRow.NumeroDeCedula_c==ced){
errorMsg+='El numero de Cédula '+ ced + ' ya existe en el contacto '+curRow.PersonName+' del usuario '+curRow.Ow
}
if(pas!=''&&curRow.NumeroDePasaporte_c==pas){
errorMsg+='El numero de Pasaporte '+ pas + ' ya existe en el contacto '+curRow.PersonName+' del usuario '+curRow
}
}
}
if(errorMsg!='')
throw new oracle.jbo.ValidationException(errorMsg)
if(ruc!='' && (isAttributeChanged('JgzzFiscalCode'))){
for (int i = 0; i < JgzzFiscalCode.length(); i++) {
if (JgzzFiscalCode.charAt(i) == ' ') {Espacios++;}
}
if (Espacios >0){
throw new oracle.jbo.ValidationException('El número de RUC no puede contener espacios.')
}
setAttribute('EstatusValid_c',adf.util.validaClienteNetplus('1',ruc))
}
if(ced!='' && (isAttributeChanged('NumeroDeCedula_c') )){
for (int i = 0; i < NumeroDeCedula_c.length(); i++) {
if (NumeroDeCedula_c.charAt(i) == ' ') {Espacios++;}
}
if (Espacios >0){
throw new oracle.jbo.ValidationException('El número de Cédula no puede contener espacios.')
}
setAttribute('EstatusValid_c',adf.util.validaClienteNetplus('0',ced))
}
if(pas!='' && (isAttributeChanged('NumeroDePasaporte_c'))){
for (int i = 0; i < NumeroDePasaporte_c.length(); i++) {
if (NumeroDePasaporte_c.charAt(i) == ' ') {Espacios++;}
}
if (Espacios >0){
throw new oracle.jbo.ValidationException('El número de Pasaporte no puede contener espacios.')
}
adf.util.validarFormatoDoc('P',pas)
setAttribute('EstatusValid_c',adf.util.validaClienteNetplus('P',nvl(NumeroDePasaporte_c,'')))
}
}
if(CodigoNetPlus_c==''){
throw new oracle.jbo.ValidationException('No se puede modificar el tipo a cliente ya que no se cuenta con un codigo de ne
}
def usages=PartyUsageAssignment
while(usages.hasNext()){
def usage=usages.next()
def code=usage.PartyUsageCode
if(code=='PARTNER_CONTACT')
return true
}
return false
def leadId =nvl(IdLeadProgenitor_c,0 as BigDecimal)
println('Ejecutando getDireccionLead')
if(leadId!=0){
println('lead diferente de null')
def leads=newView('Lead')
def leadc=newViewCriteria(leads)
def leadr=leadc.createRow()
def leadi=leadr.ensureCriteriaItem('LeadId')
leadi.setOperator('=')
leadi.setValue(leadId)
leadc.insertRow(leadr)
leads.appendViewCriteria(leadc)
leads.executeQuery()
while(leads.hasNext()){
println('Encontr¿e un Lead!')
def lead=leads.next()
if(lead.TipoCliente_c=='PERSON'&&nvl(lead.PrimaryContactState,'')!=''){
def locations = newView('Location')
def location = locations.createRow()

location.setAttribute('Address1',lead.PrimaryContactAddress1)
location.setAttribute('Address2',lead.PrimaryContactAddress2)
location.setAttribute('State',lead.PrimaryContactState)
location.setAttribute('Country',lead.PrimaryContactCountry)
location.setAttribute('City',lead.PrimaryContactCity)
location.setAttribute('Address3',lead.PrimaryContactAddress3)
location.setAttribute('AddrElementAttribute1',lead.AddrElementAttribute1)
location.setAttribute('AddrElementAttribute2',lead.AddrElementAttribute2)
location.setAttribute('AddrElementAttribute3',lead.AddrElementAttribute3)
location.setAttribute('AddrElementAttribute4',lead.AddrElementAttribute4)
location.setAttribute('CreatedByModule','ZCM')
locations.insertRow(location)
println('location:'+location)
def locationId = location.getAttribute('LocationId')
def partySites = PartySite
def partySite = partySites.createRow()
partySite.setAttribute('CreatedByModule','ZCM')
partySite.setAttribute('LocationId',locationId)
partySites.insertRow(partySite)
println('partySite:'+partySite)
}
}

}
def errorList=[]
def errorCount=0
def genero = nvl(Gender,'')
def fechaDeNacimiento = nvl(DateOfBirth,null)
def EstadoCivil = nvl(MaritalStatus,'')

if(genero == null || genero ==''){


errorList.add('Genero.')
errorCount+=1
}

if(fechaDeNacimiento == null ){
errorList.add('Fecha de nacimiento.')
errorCount+=1
}
if(EstadoCivil == null || EstadoCivil ==''){
errorList.add('Estado civil.')
errorCount+=1
}
def errorMessage='';
if(errorCount=='0'){
return errorMessage
}else{
errorMessage= 'Es necesario seleccionar:'
}

for(error in errorList){
errorMessage+=error
}

return errorMessage

def tipo=''
def numero=''
def isNew=getPrimaryRowState().isNew()
def cambioTipoDocumento=isAttributeChanged('TipoDocumento_c')
def cambioNumeroDocumento=isAttributeChanged('NumeroDeDocumento_c')
def tipoDocumento=nvl(TipoDocumento_c,'')
def numeroDocumento=nvl(NumeroDeDocumento_c,'')
def R= nvl(JgzzFiscalCode,'')
def C= nvl(NumeroDeCedula_c,'')
def P= nvl(NumeroDePasaporte_c,'')
if(cambioTipoDocumento||cambioNumeroDocumento||isNew||(R==''&&C==''&&P=='')){
if(tipoDocumento!=''&&numeroDocumento!='' ){
if(tipoDocumento=='R' &&nvl(JgzzFiscalCode,'')==''){
setAttribute('JgzzFiscalCode',numeroDocumento)
}
else if(tipoDocumento=='C' &&nvl(NumeroDeCedula_c,'')==''){
setAttribute('NumeroDeCedula_c',numeroDocumento)
}
else if(tipoDocumento=='P' &&nvl(NumeroDePasaporte_c,'')==''){
setAttribute('NumeroDePasaporte_c',numeroDocumento)
}
}
}
def cambioRuc=isAttributeChanged('JgzzFiscalCode')
def cambioCedula=isAttributeChanged('NumeroDeCedula_c')
def cambioPasaporte=isAttributeChanged('NumeroDePasaporte_c')
R= nvl(JgzzFiscalCode,'')
C= nvl(NumeroDeCedula_c,'')
P= nvl(NumeroDePasaporte_c,'')
if(cambioRuc||cambioCedula||cambioPasaporte||isNew||numeroDocumento==''){
if( R!=''){
tipo= setAttribute('TipoDocumento_c','R')
numero =setAttribute('NumeroDeDocumento_c',R)
}
else if(C!=''){
tipo= setAttribute('TipoDocumento_c','C')
numero= setAttribute('NumeroDeDocumento_c',C)
}
else if(P!=''){
tipo= setAttribute('TipoDocumento_c','P')
numero= setAttribute('NumeroDeDocumento_c',P)
}
}
if(nvl(AreaComercial_c,'')=='')
setAttribute('AreaComercial_c','CORPORATIVO')
def codigoClienteNetplus=nvl(CodigoNetPlus_c,'')
def tipoDoc=nvl(TipoDocumento_c,'')
def nroDoc=nvl(NumeroDeDocumento_c,'')
def usages=PartyUsageAssignment
def salesProspect=false
while(usages.hasNext()&&salesProspect==false){
def usage=usages.next()
if(usage.PartyUsageCode=='SALES_PROSPECT'|| usage.PartyUsageCode=='SALES_ACCOUNT'){
salesProspect=true
}
}
if(salesProspect){
if(codigoClienteNetplus!='' && tipoDoc!='' &&nroDoc!=''){
def cliNets = newView('ClienteNetplus_c');
def cliNetc=newViewCriteria(cliNets)
def cliNetr=cliNetc.createRow()
def cliNeti=cliNetr.ensureCriteriaItem('Contacto_Id_c')
cliNeti.setOperator('=')
cliNeti.setValue(PartyId)
def cliNetj=cliNetr.ensureCriteriaItem('NumeroDeDocumento_c')
cliNetj.setOperator('=')
cliNetj.setValue(nroDoc)
cliNetc.insertRow(cliNetr)

cliNets.appendViewCriteria(cliNetc)
cliNets.executeQuery()
def existe=false
while(cliNets.hasNext()&&!existe){
def cliNet=cliNets.next()
existe=true
}
if(!existe){
def cliNet=cliNets.createRow()
cliNet.setAttribute('TipoDeDocumento_c',tipoDoc)
cliNet.setAttribute('NumeroDeDocumento_c',nroDoc)
cliNet.setAttribute('RecordName',codigoClienteNetplus)
cliNet.setAttribute('Contacto_Id_c',PartyId)
cliNets.insertRow(cliNet)
}
}
LlenadoDocumentosC()
}
if(true){
def timestamp=now().time
def optys=newView('OpportunityVO')
def optyc=newViewCriteria(optys)
def optyr=optyc.createRow()
def optyi=optyr.ensureCriteriaItem('SalesStageId')
optyi.setOperator('=')
optyi.setValue(300000000210282)
def optyj=optyr.ensureCriteriaItem('Tipo_c')
optyj.setOperator('ISBLANK')
optyc.insertRow(optyr)
optys.appendViewCriteria(optyc)
optys.setMaxFetchSize(10000)
optys.executeQuery()
def recordCount=0
def updatedCount=0
def cumpleCondicionCount=0
def maxUpdatedCount=500
def maxTime=40000
def elapsedTime=now().time-timestamp
def optysAbiertasList=[]
def optysNoAbiertasList=[]
def countAbiertas=0
def countNoAbiertas=0
while(optys.hasNext()&& updatedCount<maxUpdatedCount &&elapsedTime <40000){
def opty=optys.next()
def optyMap=[:]
optyMap.put('OptyNumber',opty.OptyNumber)
optyMap.put('Name',opty.Name)
optyMap.put('CreationDate',opty.CreationDate)
if(opty.StatusCode=='OPEN'){
optysAbiertasList.add(optyMap)
countAbiertas+=1
}
else{
optysNoAbiertasList.add(optyMap)
countNoAbiertas+=1
}
recordCount+=1
elapsedTime=now().time-timestamp
}
def map=[:]
map.put('recordcount',recordCount)
map.put('updatedCount',updatedCount)
map.put('elapsedTime',elapsedTime)
map.put('countAbiertas',countAbiertas)
map.put('countNoAbiertas',countNoAbiertas)
map.put('optysAbiertas',optysAbiertasList)
map.put('optysNoAbiertas',optysNoAbiertasList)
println('MAP'+map)
}

/*def assets=newView('AssetVO')
def assetc=newViewCriteria(assets)
def assetr=assetc.createRow()
def asseti=assetr.ensureCriteriaItem('IdentificadorDeOportunidad_Id_c')
asseti.setOperator('ISNOTBLANK')
assetc.insertRow(assetr)
assets.appendViewCriteria(assetc)
assets.setMaxFetchSize(2000)
assets.executeQuery()
def outputMap=[:]
def sinOportunidad=0
def assetCount=0
def tieneCanal=0
def tieneOrigen=0
def sinCanal=0
def sinOrigen=0
def optyList=[]
while(assets.hasNext()){
def asset=assets.next()
def opty=asset.IdentificadorDeOportunidad_Obj_c
if(opty!=null){
def canalId=nvl(opty.CanalObjC_Id_c,0 as BigDecimal)
def origenId=nvl(opty.Origen_Id_c,0 as BigDecimal)
if(canalId!=0){
// asset.setAttribute('Canal_Id_c',opty.CanalObjC_Id_c)
tieneCanal+=1
}
else{
sinCanal+=1
optyList.add(opty.Name)
}
if(origenId!=0){
// asset.setAttribute('Origen_Id_c',opty.Origen_Id_c)
tieneOrigen+=1
}
else{
sinOrigen+=1
}
}
else{
sinOportunidad+=1
}
assetCount+=1
}
outputMap.put('sinOportunidad',sinOportunidad)
outputMap.put('assetCount',assetCount)
outputMap.put('sinOrigen',sinOrigen)
outputMap.put('sinCanal',sinCanal)
outputMap.put('tieneCanal',tieneCanal)
outputMap.put('tieneOrigen',tieneOrigen)
outputMap.put('optyList',optyList)
println(''+outputMap)
}
*/
/*def startTime=now().time
def organizations=newView('OrganizationProfile')
def organizationc=newViewCriteria(organizations)
def organizationr=organizationc.createRow()
/*
def organizationi=organizationr.ensureCriteriaItem('JgzzFiscalCode')
organizationi.setOperator('ISBLANK')
def organizationj=organizationr.ensureCriteriaItem('RUCExterno_c')
organizationj.setOperator('ISBLANK')
def organizationk=organizationr.ensureCriteriaItem('Pasaporte_c')
organizationk.setOperator('ISBLANK')
*/
/*
def organizationl=organizationr.ensureCriteriaItem('RegularizarCuenta_c')
organizationl.setOperator('ISBLANK')
def organizationm=organizationr.ensureCriteriaItem('AreaComercial_c')
organizationm.setOperator('ISBLANK')
def organizationn=organizationr.ensureCriteriaItem('SalesProfileType')
organizationn.setOperator('ISNOTBLANK')
organizationc.insertRow(organizationr)
organizations.appendViewCriteria(organizationc)
organizations.setMaxFetchSize(50000)
def recordCount=0
def updatedCount=0
def cumpleCondicionCount=0
def elapsedTime=now().time-startTime
def maxRecords=250
while(organizations.hasNext()&&elapsedTime<50000){
def organization=organizations.next()
def ruc=nvl(organization.JgzzFiscalCode,'')
def re=nvl(organization.RUCExterno_c,'')
def pas=nvl(organization.Pasaporte_c,'')
def usages=organization.PartyUsageAssignment
def salesProspect=false
while(usages.hasNext()&&salesProspect==false){
def usage=usages.next()
if(usage.PartyUsageCode=='SALES_PROSPECT' || usage.PartyUsageCode=='SALES_ACCOUNT'){
salesProspect=true
}
}
if(nvl(organization.AreaComercial_c,'')=='' && salesProspect ){
cumpleCondicionCount+=1
if(updatedCount<maxRecords){
organization.setAttribute('RegularizarCuenta_c',startTime)
updatedCount+=1
}
}
elapsedTime=now().time-startTime
recordCount+=1
}
def map=[:]
map.put('recordCount',recordCount)
map.put('cumpleCondicionCount',cumpleCondicionCount)
map.put('updatedCount',updatedCount)
map.put('elapsedTime',elapsedTime)
println(''+map)

*/
/*
def persons=newView('PersonProfile')
def personc=newViewCriteria(persons)
def personr=personc.createRow()
/*
def personi=personr.ensureCriteriaItem('JgzzFiscalCode')
personi.setOperator('ISBLANK')
def personj=personr.ensureCriteriaItem('NumeroDeCedula_c')
personj.setOperator('ISBLANK')
def personk=personr.ensureCriteriaItem('NumeroDePasaporte_c')
personk.setOperator('ISBLANK')*/
/*
def personl=personr.ensureCriteriaItem('RegularizarContact_c')
personl.setOperator('ISBLANK')
def personm=personr.ensureCriteriaItem('AreaComercial_c')
personm.setOperator('ISBLANK')
def personn=personr.ensureCriteriaItem('SalesProfileType')
personn.setOperator('ISNOTBLANK')
personc.insertRow(personr)
persons.appendViewCriteria(personc)
persons.setMaxFetchSize(50000)
def recordCount=0
def updatedCount=0
def cumpleCondicionCount=0
def maxUpdatedCount=300
def timestamp=now().time
def maxTime=45000
def elapsedTime=now().time-timestamp
while(persons.hasNext() && elapsedTime< maxTime){
def person=persons.next()
def ruc=nvl(person.JgzzFiscalCode,'')
def ced=nvl(person.NumeroDeCedula_c,'')
def usages=person.PartyUsageAssignment
def salesProspect=false
while(usages.hasNext()&&salesProspect==false){
def usage=usages.next()
if(usage.PartyUsageCode=='SALES_PROSPECT' ||usage.PartyUsageCode=='SALES_ACCOUNT' ){
salesProspect=true
}
}
if(nvl(person.AreaComercial_c,'')=='' &&person.PartyId!=300000002076614 &&salesProspect){
cumpleCondicionCount+=1
if(updatedCount<maxUpdatedCount){
person.setAttribute('RegularizarContact_c',timestamp)
updatedCount+=1
}
}
recordCount+=1
elapsedTime=now().time-timestamp
}
def map=[:]
map.put('recordCount',recordCount)
map.put('cumpleCondicionCount',cumpleCondicionCount)
map.put('updatedCount',updatedCount)
map.put('elapsedTime',elapsedTime)
println(''+map)*/
/*
def timestamp=now().time
def optys=newView('OpportunityVO')
def optyc=newViewCriteria(optys)
def optyr=optyc.createRow()
def optyi=optyr.ensureCriteriaItem('AreaComercial_c')
optyi.setOperator('ISBLANK')
def optyj=optyr.ensureCriteriaItem('RegularizarOportunidad_c')
optyj.setOperator('ISBLANK')
def optyk=optyr.ensureCriteriaItem('StatusCode')
optyk.setOperator('=')
optyk.setValue('OPEN')
optyc.insertRow(optyr)
optys.appendViewCriteria(optyc)
optys.setMaxFetchSize(10000)
optys.executeQuery()
def recordCount=0
def updatedCount=0
def cumpleCondicionCount=0
def maxUpdatedCount=250
def maxTime=40000
def elapsedTime=now().time-timestamp
while(optys.hasNext()&& updatedCount<maxUpdatedCount &&elapsedTime <40000){
def opty=optys.next()
recordCount+=1
// opty.setAttribute('RegularizarOportunidad_c',timestamp)
elapsedTime=now().time-timestamp
// updatedCount+=1
}
def map=[:]
map.put('recordcount',recordCount)
map.put('updatedCount',updatedCount)
map.put('elapsedTime',elapsedTime)
println('MAP'+map)
}*/

return nvl(AreaComercial_c,'')!=''

if(filaValida()){
def usuarioGenericoId
def moc=nvl(AreaComercial_c,'')
if(moc=='MASIVO'){
usuarioGenericoId=adf.util.usuarioGenericoMasivo()
}
else if(moc=='CORPORATIVO'){
usuarioGenericoId=adf.util.usuarioGenericoCorporativo()
}
if(nvl(OportunidadesAbiertas_c,0 as BigDecimal) == 0 && nvl(LeadsAbiertos_c,0 as BigDecimal)==0){
setAttribute('OwnerPartyId',usuarioGenericoId)
setAttribute('OverrideReassignment_c','Y')
if(moc=='CORPORATIVO'){
setAttribute('OwnerPartyId',usuarioGenericoId)
def map=[:]
map.put('customerId',PartyId)
map.put('ownerId',OwnerPartyId)
map.put('tipoCliente','PERSON')
map.put('PartyUniqueName',PartyUniqueName)
return [map]
}
return []
}
}
return []
if(OverrideReassignment_c!='Y' && AreaComercial_c!='MASIVO'){
adf.util.reasignarCliente('PERSON',PartyId,OwnerPartyId,PartyId)
}
else{
setAttribute('OverrideReassignment_c','N')
}
def cliNets = newView('ClienteNetplus_c');
def cliNetc=newViewCriteria(cliNets)
def cliNetr=cliNetc.createRow()
def cliNeti=cliNetr.ensureCriteriaItem('Contacto_Id_c')
cliNeti.setOperator('=')
cliNeti.setValue(PartyId)
def cliNetj=cliNetr.ensureCriteriaItem('TipoDeDocumento_c')
cliNetj.setOperator('=')
cliNetj.setValue(TipoDocumento)
cliNetc.insertRow(cliNetr)
cliNets.appendViewCriteria(cliNetc)
cliNets.executeQuery()
while(cliNets.hasNext()){
def v=cliNets.next()
v.remove()
}
println('TipoDocumento:'+TipoDocumento +' NroDocumento:'+NroDocumento)
def cliNets = newView('ClienteNetplus_c');
def cliNetc=newViewCriteria(cliNets)
def cliNetr=cliNetc.createRow()
def cliNeti=cliNetr.ensureCriteriaItem('Contacto_Id_c')
cliNeti.setOperator('=')
cliNeti.setValue(PartyId)
def cliNetj=cliNetr.ensureCriteriaItem('TipoDeDocumento_c')
cliNetj.setOperator('=')
cliNetj.setValue(TipoDocumento)
cliNetc.insertRow(cliNetr)
cliNets.appendViewCriteria(cliNetc)
cliNets.executeQuery()
def existe=false
while(cliNets.hasNext()&&!existe){
def cliNet=cliNets.next()
existe=true
cliNet.setAttribute('NumeroDeDocumento_c',NroDocumento)
println('actualizando registro')
}
/*
if(!existe && nvl(CodigoNetPlus_c,'') !='' ){
def cliNet=cliNets.createRow()
cliNet.setAttribute('TipoDeDocumento_c',TipoDocumento)
cliNet.setAttribute('NumeroDeDocumento_c',NroDocumento)
cliNet.setAttribute('RecordName',CodigoNetPlus_c)
cliNet.setAttribute('Contacto_Id_c',PartyId)
cliNets.insertRow(cliNet)
println('creando registro')
}*/
if(AreaComercial_c=='MASIVO'&&SalesProfileType=='ZCA_CUSTOMER' ||SalesProfileType=='ZCA_PROSPECT' ){
//def timestamp=now().time

println('entrando a evaluación de cambios en contacto')


def cambioTipo =isAttributeChanged('SalesProfileType')
def cambioPartyNumber= isAttributeChanged('PartyNumber')
def cambioFirstName= isAttributeChanged('PersonFirstName')
def cambioLastName= isAttributeChanged('PersonLastName')
def cambioType= isAttributeChanged('SalesProfileType')
def cambioTaxpayerIdentificationNumber= isAttributeChanged('JgzzFiscalCode')
def cambioDateOfBirth= isAttributeChanged('DateOfBirth')
def cambioGender= isAttributeChanged('Gender')
def cambioMaritalStatus= isAttributeChanged('MaritalStatus')
def cambioSalutoryIntroduction= isAttributeChanged('PersonPreNameAdjunct')
def cambioJobTitle= isAttributeChanged('JobTitle')
def cambioSalesAffinityCode= isAttributeChanged('SalesAffinityCode')
def cambioSalesBuyingRoleCode= isAttributeChanged('SalesBuyingRoleCode')
def cambioWorkPhoneCountryCode=false
def cambioWorkPhoneAreaCode=false
def cambioWorkPhoneNumber=false
def cambioWorkPhoneExtension=false
def cambioMobileCountryCode=false
def cambioMobileAreaCode=false
def cambioMobileNumber=false
def cambioHomePhoneCountryCode=false
def cambioHomePhoneAreaCode=false
def cambioHomePhoneNumber=false
def telefonos = Phone;
while (telefonos.hasNext()){
def telefono = telefonos.next();
def tipoTelefono_c = telefono.PhoneType;
if (tipoTelefono_c == 'WORK'){
cambioWorkPhoneCountryCode= telefono.isAttributeChanged('PhoneCountryCode')
cambioWorkPhoneAreaCode = telefono.isAttributeChanged('PhoneAreaCode')
cambioWorkPhoneNumber = telefono.isAttributeChanged('PhoneNumber')
cambioWorkPhoneExtension = telefono.isAttributeChanged('PhoneExtension')

}else if(TipoTelefono_c == 'MOBILE'){


cambioMobileCountryCode= telefono.isAttributeChanged('PhoneCountryCode');
cambioMobileAreaCode = telefono.isAttributeChanged('PhoneAreaCode')
cambioMobileNumber = telefono.isAttributeChanged('PhoneNumber')
}else{
cambioHomePhoneCountryCode=telefono.isAttributeChanged('PhoneCountryCode');
cambioHomePhoneAreaCode = telefono.isAttributeChanged('PhoneAreaCode')
cambioHomePhoneNumber = telefono.isAttributeChanged('PhoneNumber')
}

def cambioCorreoElectronico_c= isAttributeChanged('CorreoElectronico_c')


def cambioCodigoNetPlus_c= isAttributeChanged('CodigoNetPlus_c')
def cambioReferidoc_c= isAttributeChanged('Referidoc_c')
def cambioReferencia_c= isAttributeChanged('Referencia_c')
def cambioOperadoraDeTelefonoPrincipal_c= isAttributeChanged('OperadoraDeTelefonoPrincipal_c')
def cambioDiscapacitado_c= isAttributeChanged('Discapacitado_c')
def cambioPorcentajeDeDiscapacidad_c= isAttributeChanged('PorcentajeDeDiscapacidad_c')
def cambioTerceraEdad_c= isAttributeChanged('TerceraEdad_c')
def cambioAreaComercial_c= isAttributeChanged('AreaComercial_c')
def cambioNumeroDeCedula_c= isAttributeChanged('NumeroDeCedula_c')
def cambioNumeroDePasaporte_c=isAttributeChanged('NumeroDePasaporte_c')

if (cambioFirstName||cambioLastName|| cambioCorreoElectronico_c ||cambioTipo || cambioPartyNumber||cambioType||


cambioTaxpayerIdentificationNumber||cambioNumeroDeCedula_c||cambioNumeroDePasaporte_c||cambioDateOfBirth||cam
setAttribute('Timer_c',now().time)
}
}

def callePrincipal_c ='';


def calleSecundaria_c ='';
def addressNumber = '';
def direcciones = PartySite;
def numeracion=''
def barrioSector=''
def conjuntoUrbanizacionEdificio=''
def referencia=''
def Expresion = /^[A-Za-zÁÉÍÓÚáéíóúñÑ0-9\s.]+$/
def Expresion2 = /^[0-9]*$/
def errorList=[]
def errorCount=0
while (direcciones.hasNext()){
def direccion = direcciones.next();
callePrincipal_c = nvl(direccion.Address1,'');
calleSecundaria_c = nvl(direccion.Address2,'');
numeracion=nvl(direccion.Address3,'').trim()
barrioSector=nvl(direccion.AddrElementAttribute2,'');
conjuntoUrbanizacionEdificio=nvl(direccion.AddrElementAttribute3,'').trim()
referencia=nvl(direccion.AddrElementAttribute4,'').trim()

if(callePrincipal_c != '' && !callePrincipal_c.matches(Expresion)){


errorList.add('Calle principal')
errorCount+=1
}
if(barrioSector != '' && !barrioSector.matches(Expresion)){
errorList.add('Barrio/Sector')
errorCount+=1
}
if(numeracion != '' && !numeracion.matches(Expresion)){
errorList.add('Numeración')
errorCount+=1
}
if(calleSecundaria_c != '' && !calleSecundaria_c.matches(Expresion)){
errorList.add('Calle secundaria')
errorCount+=1
}
if(conjuntoUrbanizacionEdificio != '' && !conjuntoUrbanizacionEdificio.matches(Expresion)){
errorList.add('Conjunto/Urbanización/Edificio')
errorCount+=1
}
if(referencia != '' && !referencia.matches(Expresion)){
errorList.add('Referencia')
errorCount+=1
}
}

def errorMessage= ''


if(errorCount>0){
errorMessage= '(BDS):'
if(errorCount==1){
errorMessage+= ' El campo: '
for(error in errorList){
errorMessage+=error
}
errorMessage+= ' no puede contener caracteres especiales.'
}
else{
errorMessage+= ' Los campos: '
for(error in errorList){
errorMessage+=error
errorMessage+=','
}
errorMessage+= ' no pueden contener caracteres especiales.'
}
throw new oracle.jbo.ValidationException(''+errorMessage)
}

//ValidacionContacto()
def CodigoNetPlus = CodigoNetPlus_c;

//def CodigoNetPlus ='183148';


println('CodigoNetPlus: ' +CodigoNetPlus_c)
def identificadorOSC_c =PartyId;
def NumIntegracion = '';
def Bitacora = [:]
Bitacora.put('Contacto_Id_c',identificadorOSC_c)

def cTelefonicoPais_c = '';


def codigoArea_c = '';
def numero_c = '';
def extension_c= '';
def contactPointId = '';

def ctTelefonicoPais_c= '';


def codigoAreaT_c = '';
def numeroT_c = '';
def telefonos = Phone;
while (telefonos.hasNext()){
def telefono = telefonos.next();
TipoTelefono_c = telefono.PhoneType;
if (TipoTelefono_c == 'WORK'){
ctTelefonicoPais_c= nvl(telefono.PhoneCountryCode,'');
ctTelefonicoPais_c = ctTelefonicoPais_c.trim();
codigoAreaT_c = nvl(telefono.PhoneAreaCode,'');
codigoAreaT_c = codigoAreaT_c.trim();
numeroT_c = nvl(telefono.PhoneNumber,'');
numeroT_c = numeroT_c.trim();
extension_c = nvl(telefono.PhoneExtension,'');
extension_c = extension_c.trim();
contactPointId = telefono.ContactPointId;
}else{

cTelefonicoPais_c=nvl(telefono.PhoneCountryCode,'');
cTelefonicoPais_c =cTelefonicoPais_c.trim();
codigoArea_c = nvl(telefono.PhoneAreaCode,'');
codigoArea_c = codigoArea_c.trim();
numero_c = nvl(telefono.PhoneNumber,'');
numero_c = numero_c.trim();
contactPointId = telefono.ContactPointId;
}

}
def tipo_c =''+nvl(TipoDePersona_c,'');
tipo_c = tipo_c.trim();
def fechadeNacimiento_c =''+nvl(DateOfBirth,'');
def nombres_c =''+nvl(PersonFirstName,'');
nombres_c = nombres_c.trim();
//def razonSocial_c =''+nvl(RazonSocial_c,'');
def genero_c =''+nvl(Gender,'');
genero_c = genero_c.trim();
def referido_c = ''+nvl(Referidoc_c,'');
referido_c = referido_c.trim();
def numeroDocumento_c =''+nvl(NumeroDeDocumento_c,'');
//def grupoComercial_c =''+nvl(GrupoComercial_c,'');
def cargo_c= ''+nvl(JobTitle,'');
cargo_c = cargo_c.trim();
def rolComprador_c = ''+nvl(SalesBuyingRoleCode,'');
rolComprador_c = rolComprador_c.trim();
def sector_c = ''+nvl(Sector_c,'');
sector_c=sector_c.trim();
def apellido_c =''+nvl(PersonLastName,'');
apellido_c = apellido_c.trim();
def paginaWeb_c = ''+nvl(PrimaryURL,'');
paginaWeb_c = paginaWeb_c.trim();
def sectoresComerciales_c =''+nvl(SectorComercial_c,'');
sectoresComerciales_c = sectoresComerciales_c.trim();
def contactoPrincipal_c =''+nvl(PreferredContactName,'');
contactoPrincipal_c = contactoPrincipal_c.trim();
def idContacto_c = ''+nvl(PreferredContactPersonId,0 as long);
def identificadorPartyOSC_c = '' + nvl(PartyNumber,'');
def idEjecutivoCorporativo_c =''+nvl(OwnerPartyId,0 as long);
//def identificadorOSC_c =''+ nvl(PartyId,'');

def correoContacto_c = ''+nvl(CorreoElectronico_c,'');


correoContacto_c = correoContacto_c.trim();
def tipoDocumento_c =''+nvl(TipoDocumento_c,'');
def tipoCliente_c = ''+nvl(SalesProfileType,'');
tipoCliente_c = tipoCliente_c.trim();
def afinidad_c=''+nvl(SalesAffinityCode,'')
afinidad_c = afinidad_c.trim();
def ejecutivoCorporativo_c =''+nvl(OwnerPartyName,'');
ejecutivoCorporativo_c = ejecutivoCorporativo_c.trim();
def telefonoContacto_c = ''+nvl(PreferredContactPhone,'');
telefonoContacto_c = telefonoContacto_c.trim();
def correoElectronico_c =''+nvl(CorreoElectronico_c,'');
correoElectronico_c = correoElectronico_c.trim();

def areaComercial_c = ''+ nvl(AreaComercial_c,'');


areaComercial_c = areaComercial_c.trim();
// def cargo_c =''+nvl(JobTitle,'');
//def TipoTelefono_c =''+nvl(TipoTelefono_c,'');
def OperadoraDeTelefonoPrincipal_c =''+nvl(OperadoraDeTelefonoPrincipal_c,'');
OperadoraDeTelefonoPrincipal_c = OperadoraDeTelefonoPrincipal_c.trim();
def correoElectronico2_c =''+nvl(CorreoElectronico2_c,'');
correoElectronico2_c = correoElectronico2_c.trim();

def TipoDireccion_c ='';

def pais_c ='';


def callePrincipal_c ='';
def calleSecundaria_c ='';
def canton_c ='';
def provincia_c ='';
def addressNumber = '';
def direcciones = PartySite;
def numeracion=''
def barrioSector=''
def conjuntoUrbanizacionEdificio=''
def referencia=''
while (direcciones.hasNext()){
def direccion = direcciones.next();
TipoDireccion_c = nvl(direccion.CurcyConvRateType,'');
TipoDireccion_c = TipoDireccion_c.trim();
pais_c = nvl(direccion.Country,'');
pais_c = pais_c.trim();
callePrincipal_c = nvl(direccion.Address1,'');
callePrincipal_c = callePrincipal_c.trim();
calleSecundaria_c = nvl(direccion.Address2,'');
calleSecundaria_c = calleSecundaria_c.trim();
def provincia = nvl(direccion.State,'');
provincia_c = provincia.toUpperCase().trim();
def canton = nvl(direccion.AddrElementAttribute1,'');
canton_c = canton.toUpperCase().trim();
addressNumber = nvl(direccion.PartySiteNumber,'');
numeracion=nvl(direccion.Address3,'').trim()
barrioSector=nvl(direccion.AddrElementAttribute2,'').trim();
conjuntoUrbanizacionEdificio=nvl(direccion.AddrElementAttribute3,'').trim()
referencia=nvl(direccion.AddrElementAttribute4,'').trim()
}
if(numeracion=='' || barrioSector=='' || referencia=='' || calleSecundaria_c ==''){
def errorMsg=''
def errorList=[]
def errorCount=0
if(numeracion==''){
errorList.add('Numeración')
}
if(barrioSector==''){
errorList.add('Barrio / Sector')
}
if(calleSecundaria_c==''){
errorList.add('Calle Secundaria')
//errorList.add('Conjunto / Urbanización / Edificio')
}
if(referencia==''){
errorList.add('Referencia')
}
for(error in errorList){
if(errorCount>0){
errorMsg+=', '
}
errorMsg+=error
errorCount+=1
}
if(errorCount>0 && areaComercial_c == 'MASIVO' ){
if(errorCount==1){
errorMsg='(BDS) Fallo en el envio del cliente a Netplus: El campo de Dirección del cliente ' + errorMsg + ' es obligatorio
}
else{
errorMsg='(BDS) Fallo en el envio del cliente a Netplus: Los campos de Dirección del cliente ' + errorMsg + ' son obliga
}
throw new oracle.jbo.ValidationException(errorMsg)
}
}
def payload = [:]
payload.put('tipo',tipo_c)
payload.put('extension',extension_c)
payload.put('numero',numero_c)
//payload.put('codCiudadSucursal',)
payload.put('fechaNacimiento',fechadeNacimiento_c)
payload.put('provincia',provincia_c)
payload.put('nombres',nombres_c)
//payload.put('razonSocial',razonSocial_c)
payload.put('cTelefonicoPais',cTelefonicoPais_c)
payload.put('genero',genero_c)
payload.put('referido',referido_c)
payload.put('numeroDocumento',nroDocumento)
//payload.put('grupoComercial',grupoComercial_c)
payload.put('cargo',cargo_c)
payload.put('rolComprador',rolComprador_c)
payload.put('sector',sector_c)
payload.put('apellidos',apellido_c)
payload.put('paginaWeb',paginaWeb_c)
payload.put('sectoresComerciales',sectoresComerciales_c)
payload.put('contactoPrincipal',contactoPrincipal_c)
payload.put('callePrincipal',callePrincipal_c)
payload.put('idContacto',idContacto_c)
payload.put('identificadorPartyOSC',identificadorPartyOSC_c)
payload.put('idEjecutivoCorporativo',idEjecutivoCorporativo_c)
payload.put('identificadorOSC',identificadorOSC_c)
payload.put('ctTelefonicoPais',ctTelefonicoPais_c)
payload.put('identificadorOSC',identificadorOSC_c)
payload.put('pais',pais_c)
payload.put('correoContacto',correoContacto_c)
payload.put('tipoDocumento',tipodocumento)
payload.put('tipoCliente',tipoCliente_c)
payload.put('afinidad',afinidad_c)
payload.put('codigoArea',codigoArea_c)
payload.put('canton',canton_c)
payload.put('ejecutivoCorporativo',ejecutivoCorporativo_c)
payload.put('codigoAreaT',codigoAreaT_c)
payload.put('telefonoContacto',telefonoContacto_c)
payload.put('numeroT',numeroT_c)
payload.put('correoElectronico',correoElectronico2_c)
payload.put('addressNumber',addressNumber)
payload.put('contactPointId',contactPointId)
payload.put('calleSecundaria',calleSecundaria_c)
payload.put('barrioSector',barrioSector)
payload.put('numeracion',numeracion)
payload.put('conjuntoUrbanizacionEdificio',conjuntoUrbanizacionEdificio)
payload.put('referencia',referencia)

if(AreaComercial_c == 'MASIVO'){
def userName = adf.context.getSecurityContext()?.getUserName();
payload.put('nombreUsuario',userName)}

println('TipoTelefono_c: '+TipoTelefono_c)
println('PAYLOAD PN: '+payload)

def MensajeIntegracion = '';


def creaClienteNatural = '';
def codigoCliente=' ';
def ActualizaCliente = '';
def EstatusInt = '';
def response = '';
def data_c='';

try{
def existe=false
def cliNets;
cliNets = newView('ClienteNetplus_c');
def cliNetc=newViewCriteria(cliNets)
def cliNetr=cliNetc.createRow()
def cliNeti=cliNetr.ensureCriteriaItem('Contacto_Id_c')
cliNeti.setOperator('=')
cliNeti.setValue(PartyId)
def cliNetj=cliNetr.ensureCriteriaItem('NumeroDeDocumento_c')
cliNetj.setOperator('=')
cliNetj.setValue(nroDocumento)
cliNetc.insertRow(cliNetr)
cliNets.appendViewCriteria(cliNetc)
cliNets.executeQuery()
while(cliNets.hasNext()&&!existe){
def cliNet=cliNets.next()
existe=true
}

println('existe cliente: '+ existe)

if (!existe){
NumIntegracion ='13';
creaClienteNatural = adf.webServices.CrearClienteNaturalJuridico.POST(payload)

response = creaClienteNatural;
data_c = creaClienteNatural?.data;
MensajeIntegracion = creaClienteNatural?.message;
}else{

NumIntegracion ='14'
ActualizaCliente= adf.webServices.ActualizarClienteNaturalJuridico.POST(payload)
response = ActualizaCliente;
data_c = ActualizaCliente?.data;
MensajeIntegracion = ActualizaCliente?.message;
}

if(response.code == '1'){
EstatusInt = data_c.estatusIntegracion;
codigoCliente = data_c.codCliente;
setAttribute('EstatusInt_c',EstatusInt );
setAttribute('CodigoNetPlus_c',codigoCliente);

if(!existe){
def cliNet=cliNets.createRow()
cliNet.setAttribute('TipoDeDocumento_c',tipodocumento)
cliNet.setAttribute('NumeroDeDocumento_c',nroDocumento)
cliNet.setAttribute('RecordName',CodigoNetPlus_c)
cliNet.setAttribute('Contacto_Id_c',PartyId)
cliNets.insertRow(cliNet)
println('numdoc:'+nroDocumento+' tipo:'+tipodocumento)
println('!existe':existe)
}
println('codigo: '+CodigoNetPlus_c)
Bitacora.put('Integracion_c',NumIntegracion)
Bitacora.put('MensajeIntegracion_c',encodeToBase64(''+MensajeIntegracion))
Bitacora.put('Payload_c',encodeToBase64(''+ payload))
Bitacora.put('Response_c',encodeToBase64(''+response))
Bitacora.put('IdPrincipal_c',codigoCliente)

adf.webServices.LogBitacora.POST(Bitacora)

else{
println('entrando a codigo igual a 0')

//setAttribute('EstatusInt_c',EstatusInt );
//setAttribute('CodigoNetPlus_c',codigoCliente);
//setAttribute('DesEstatusdeIntegracion_c',creaCliente?.message);
throw new oracle.jbo.ValidationException(''+ MensajeIntegracion)

}
}

catch(e){

if(codigoCliente == null || codigoCliente == ''){


codigoCliente = 0;
}
def msg=e.message

Bitacora.put('Integracion_c',NumIntegracion)
Bitacora.put('MensajeIntegracion_c',encodeToBase64(''+MensajeIntegracion))
Bitacora.put('Payload_c',encodeToBase64(''+ payload))
Bitacora.put('Response_c',encodeToBase64(''+response))
Bitacora.put('IdPrincipal_c',codigoCliente)

println('Payload bitacora: ' +Bitacora )


adf.webServices.LogBitacora.POST(Bitacora)

throw new oracle.jbo.ValidationException(''+ msg)


}

def cedula = nvl(NumeroDeCedula_c,'').trim()


def Ruc = nvl(JgzzFiscalCode,'').trim()

if(Ruc.substring(0,10) != cedula){
throw new oracle.jbo.ValidationException('(BDS) Comuniquese con su Supervisor o Gerente' )
}

/*
def phones=Phone
def expresion = /^[0-9]+$/
def count = 0;

def phoneRows=phones.getAllRowsInRange()
for (phone in phoneRows){

def phoneNumber=nvl(phone.PhoneNumber,null)
def areaCode=nvl(phone.PhoneAreaCode,null)
def extension= nvl(phone.PhoneExtension,null)
if(extension != null && !extension.matches(expresion)){count+=1}
if(phoneNumber != null && !phoneNumber.matches(expresion)){count+=1}
if(areaCode != null && !areaCode.matches(expresion)){count+=1}

if(count > 0){


throw new oracle.jbo.ValidationException('El código de área y el número de teléfono sólo pueden tener caracteres numé
edición
} de teléfonos por favor presiona cancelar e ingresa nuevamente al contacto')

*/

def expresion = /^[0-9]+$/


def telColeccion = Phone;
def count = 0;
while (telColeccion.hasNext())
{
def ps = telColeccion?.next();
def phoneNumber=nvl(ps.PhoneNumber,null)
//def areaCode=nvl(ps.PhoneAreaCode,null)
def extension= nvl(ps.PhoneExtension,null)
if(extension != null && !extension.matches(expresion)){count+=1}
if(phoneNumber != null && !phoneNumber.matches(expresion)){count+=1}
//if(areaCode != null && !areaCode.matches(expresion)){count+=1}

if(count > 0){


throw new oracle.jbo.ValidationException('El código de área y el número de teléfono sólo pueden tener caracteres numé
edición
} de teléfonos por favor presiona cancelar e ingresa nuevamente al contacto función en disparador')

def telColeccion = Phone;


telColeccion?.reset();
def sinTel = true;

def cont = 0;
def mobile = false
def work = false
def home = false
def phoneList = []

while (telColeccion.hasNext()) {
def ps = telColeccion?.next();
def type = nvl(ps.PhoneType, '')
def phoneNumber = nvl(ps?.PhoneNumber, '0').replaceAll("[^\\d]", "")
def phoneExtension = nvl(ps?.PhoneExtension, '0')
def phoneNumberValue = nvl(ps?.PhoneNumber, '0')
def areaCode = nvl(ps?.PhoneAreaCode, '0')
def okFormat = areaCode.isInteger()

println(phoneNumber.length())
println(phoneNumber)

if (!phoneExtension.isInteger()) {
println("Valor no numérico encontrado: $phoneExtension")
throw new oracle.jbo.ValidationException('La extensión debe contener solo caracteres numéricos. Para una nueva edic
presiona
} cancelar e ingresa nuevamente al contacto')

if (!phoneNumberValue.isInteger()) {
println("Valor no numérico encontrado: $phoneNumberValue")
throw new oracle.jbo.ValidationException('El número de teléfono debe contener solo caracteres numéricos maximo 10
edición
} de teléfonos, por favor, presiona cancelar e ingresa nuevamente al contacto')
if (!okFormat) {
throw new oracle.jbo.ValidationException('El código de área sólo pueden tener caracteres numéricos. Para una nueva e
favor
} presiona cancelar e ingresa nuevamente al contacto')

if (type == 'MOBILE') {
mobile = true
} else if (type == 'WORK') {
work = true
} else if (type == 'HOME') {
home = true
}

phoneList.add(phoneNumber) // Agregar el número a la lista para validar al final


}
// Validar después de recorrer todos los números
if ((mobile || work || home) && !phoneList.every { phoneNumber ->
(String.valueOf(phoneNumber).length() <= 10)
}) {
throw new oracle.jbo.ValidationException('El número de teléfono debe tener maximo 10 dígitos. Para una nueva edición
presiona
} cancelar e ingresa nuevamente al contacto')

Disabled Actions Expression


No if(!
Groovy Function oracle.apps.crmCommon.extensibility.con
return false;
Name :regContact
Description : isAttributeChanged('RegularizarContact_c
Execution Schedule : 0:Days:After:
Function Display Name : regularizarContacto

Yes if(!
Groovy Function oracle.apps.crmCommon.extensibility.con
return false;
Name :reasignacionCascada else
Description : return true;
Execution Schedule : 0:Days:After:
Function Display Name : reasignacionCascada

Record Type Advanced Expression


//if(SalesProfileType=='ZCA_PROSPECT' ||
SalesProfileType=='ZCA_CUSTOMER'
return true || TipoCon_c=='PROSPECTO')
//if(SalesProfileType=='ZCA_PROSPECT' ||
SalesProfileType=='ZCA_CUSTOMER'
return true || TipoCon_c=='PROSPECTO')

//if(SalesProfileType == 'ZCA_PROSPECT' || SalesProfileType ==


'ZCA_CUSTOMER')
return true
//if(SalesProfileType == 'ZCA_PROSPECT' || SalesProfileType ==
'ZCA_CUSTOMER')
return true

if(SalesProfileType == 'ZCA_PROSPECT' || SalesProfileType ==


'ZCA_CUSTOMER')
return true
Precision MaxLength Expression
10 10
1500 1500
0 0 def estadoTemporalidad=nvl(E
def disponibleHasta=Disponib
def txt=''
def optysAbiertas=nvl(Oportun
def leadsAbiertos=nvl(LeadsAb
if(estadoTemporalidad=='FINA
txt='La temporalidad ya no ap
}
else if(estadoTemporalidad=='
txt='Este contacto se encuent
}
else if(estadoTemporalidad=
txt='Este contacto ya fue des
}
else if(optysAbiertas>0){
txt='La temporalidad no aplica
}
else if(leadsAbiertos>0){
txt='La temporalidad no aplic
}
else{
txt='La temporalidad no aplic
}
return txt
1500 1500
10 10
0 0 def phones=Phone
def telefonoEloqua=''
def phoneRows=phones.getAl
for (phone in phoneRows){
if(phone.PhoneType=='MOBIL
telefonoEloqua=''+nvl(ph
break;
}
}/* def phone=phones.next()
if(phone.PhoneType=='MOBIL
telefonoEloqua=''+nvl(ph
}*/
/*while(phones.hasNext()){
def phone=phone.next()
if(phone.PhoneType=='MOBIL
telefonoEloqua=''+nvl(pho
}
}*/
return telefonoEloqua
80 80
1500 1500
18 18
1500 1500
20 20
1500 1500
10 10
1500 1500
1500 1500
80 80
0 0 def nullDate= new Date(1900,0
def fechaAsig=nvl(FechaDeAsi
if(fechaAsig==nullDate){
return 0
}
else{
return today()-fechaAsig
}
20 20
1500 1500
0 0
1500 1500
12 12
80 80
10 10
1500 1500
10 10
1500 1500
10 10
1500 1500
1500 1500
10 10
1500 1500
32714 32714
10 10
18 18
0 0 if(nvl(OrigenDeVenta_Id_c, 0
return OrigenDeVenta_c
} else{
return ''
}
80 80
0 0
18 18
1500 1500
10 10
16 16
10 10
1500 1500
18 18
1500 1500
1500 1500
80 80
1500 1500
1500 1500
80 80
1200 1200
10 10
80 80
80 80
10 10
10 10
1500 1500
18 18
1500 1500
10 10
e == 'ZCA_PROSPECT' )&&correo!=''){
e == 'ZCA_PROSPECT')&&(adf.util.usuarioMasivoCorporativo()!=''||
hanged('NumeroDeCedula_c')||

e == 'ZCA_PROSPECT') && correo!='' ){

_c,'')==''){
lesProfileType=='ZCA_CUSTOMER')){

orte')
leType=='ZCA_CUSTOMER')){

sProfileType=='ZCA_CUSTOMER')){

a')
e == 'ZCA_PROSPECT')&&usuarioSales &&!

[email protected]')
éfono ya creado. Favor de dar de alta un nuevo teléfono del tipo

NULL')){

ea de teléfono móvil '+ lengtharea + ' ' + areaCode +', por favor
eléfono móvil, para ingresar correctamente la información, por favor

ea de teléfono, por favor presione el botón cancelar, ingrese

o, para una nueva edición de teléfonos por favor presiona cancelar e

Changed('NumeroDePasaporte_c') || getPrimaryRowState().isNew()){
&& usuarioSales){
entes campos para poder avanzar: Número de RUC, Número de
os usuarios')

suarioCorporativo)){

fue desasignado en el pasado, hasta que pasen 15 días desde la fecha


gestionado por otro ejecutivo')

s parte del equipo de trabajo')

urce, "FND_ACFF_VA_AttributeCategory__AttributeCategory",

urce,
alue")
Plus == ' ' ){
nName+' del usuario '+curRow.OwnerPartyName+'. '

rsonName+' del usuario '+curRow.OwnerPartyName+'. '

.PersonName+' del usuario '+curRow.OwnerPartyName+'. '

cios.')

pacios.')

espacios.')

e_c,'')))
que no se cuenta con un codigo de netplus')
')){
CCOUNT'){
0){
ACCOUNT'){
CCOUNT' ){

Prospect){
){

gDecimal)==0){
ype=='ZCA_PROSPECT' ){
e')

de');

fonoPrincipal_c')

idad_c')

ambioPartyNumber||cambioType||
Pasaporte_c||cambioDateOfBirth||cambioGender||
esion)){
cliente ' + errorMsg + ' es obligatorio.'

el cliente ' + errorMsg + ' son obligatorios.'


rente' )

o sólo pueden tener caracteres numéricos. Para una nueva


o sólo pueden tener caracteres numéricos. Para una nueva
nción en disparador')

teres numéricos. Para una nueva edición de teléfonos, por favor,

solo caracteres numéricos maximo 10 digitos. Para una nueva


aracteres numéricos. Para una nueva edición de teléfonos por

o 10 dígitos. Para una nueva edición de teléfonos, por favor,

ression

le.apps.crmCommon.extensibility.content.adf.data.util.ExtensibilityGro
urn false;

ributeChanged('RegularizarContact_c')

le.apps.crmCommon.extensibility.content.adf.data.util.ExtensibilityGro
urn false;

urn true;
||
TipoCon_c=='PROSPECTO')
||
TipoCon_c=='PROSPECTO')

' || SalesProfileType ==

' || SalesProfileType ==

|| SalesProfileType ==
Object Name : Plan_c
Object Name Plan_c
Object Display Name Plural Planes
Object Type Custom
Application Name CRM
Table Name MKT_REF_ENTITIES
Total number of custom fields
Total number of modified Standard fields
Total number of Triggers
Total number of Object Functions
Total number of Object Workflows
Total number of Validations
Total number of Dynamic Layouts

Custom Fields
Name Display Name Type Column Name
RecordName Código OOTB RECORD_NAME
CreationDate Fecha de Creación OOTB CREATION_DATE
InventoryItemId_c InventoryItemId Number EXTN_ATTRIBUTE_NUMBER006
CurrencyCode Currency Code FCL CURRENCY_CODE
LastUpdatedBy Actualizado por OOTB LAST_UPDATED_BY
CreatedBy Creado por OOTB CREATED_BY
OraZcxOwner_c Owner DCL

Oportunidad_Id_c Oportunidad DCLForeignKey EXTN_ATTRIBUTE_NUMBER001


Descripcion_c Descripción Text EXTN_ATTRIBUTE_CHAR008
Oportunidad_c Oportunidad DCL

Activo_c Activo Checkbox EXTN_ATTRIBUTE_CHAR007


OraZcxOwner_Id_c Owner DCLForeignKey OWNER_RESOURCE_ID
Id Identificador de Registro OOTB ID
RecordNumber Record Number OOTB RECORD_NUMBER
LastUpdateDate Fecha de Última Actualización OOTB LAST_UPDATE_DATE

Validations
Name Type Error Message
Rule1 Field Validation
Field Name : OraZcxOwner_Id_c
Rule1 Field Validation
Field Name : Oportunidad_Id_c

Object Workflows
Name Definition Name Event Point Description
Plan_c_Standard_Create Create
Plan_c_Standard_Create Create

Plan_c_Standard_Update Update

Plan_c_Standard_Delete Delete
Plan_c
Planes
Custom
CRM
MKT_REF_ENTITIES
15
0
0
0
3
2
0

umn Name Default Value Required Updatable Searchable REST Enabl


ORD_NAME Yes Yes Yes Yes
ATION_DATE Yes No Yes Yes
N_ATTRIBUTE_NUMBER006 No Yes No Yes
RENCY_CODE No Yes Yes Yes
T_UPDATED_BY Yes Yes Yes Yes
ATED_BY Yes No Yes Yes
Yes Yes No Yes
N_ATTRIBUTE_NUMBER001 No Yes Yes Yes
N_ATTRIBUTE_CHAR008 Yes Yes Yes Yes
No Yes No Yes
N_ATTRIBUTE_CHAR007 N Yes Yes Yes Yes
NER_RESOURCE_ID Yes Yes Yes Yes
Yes No Yes Yes
ORD_NUMBER Yes No Yes Yes
T_UPDATE_DATE Yes Yes Yes Yes

Expression
adf.source.isLookupIdValid('OraZcxOwner_Id_c',newValue)

adf.source.isLookupIdValid('Oportunidad_Id_c',newValue)

ption Disabled Actions Expression


No return
(oracle.apps.fnd.applcore.Profile.ge
No

No return
(oracle.apps.fnd.applcore.Profile.ge
No return
(oracle.apps.fnd.applcore.Profile.ge
Precision MaxLength Expression
80 80
0 0
20 20
15 15
64 64
64 64
1500 1500
18 18
200 200
1500 1500
10 10
18 18
32 32
64 64
0 0

ression
rn
cle.apps.fnd.applcore.Profile.get('ZCX_CUSTOM_OBJECT_EVENTS') ==
rn
cle.apps.fnd.applcore.Profile.get('ZCX_CUSTOM_OBJECT_EVENTS') ==
rn
cle.apps.fnd.applcore.Profile.get('ZCX_CUSTOM_OBJECT_EVENTS') ==
Object Name : Product
Object Name
Object Display Name Plural
Object Type
Application Name
Table Name
Total number of custom fields
Total number of modified Standard fields
Total number of Triggers
Total number of Object Functions
Total number of Object Workflows
Total number of Validations
Total number of Dynamic Layouts

Custom Fields
Name Display Name Type Column Name
ProductGroupInfo_c ProductGroupInfo Text Formula
Product
Producto
OOTB
CRM
QSC_PRODUCTS_VL
1
0
0
0
0
0
0

Column Name Default Value Required Updatable Searchable


No No No
REST Enabl Precision MaxLength Expression
Yes 0 0 if(ItemNumber != null){
def viewProductHir = newView('ProductGroupProductHier')
def productHirVC = newViewCriteria(viewProductHir)
def cr = productHirVC.createRow()
def ec = cr.ensureCriteriaItem('ItemNumber')
ec.setOperator('=')
ec.setValue(ItemNumber)
productHirVC.insertRow(cr)
viewProductHir.appendViewCriteria(productHirVC)
def rowCount = viewProductHir.getEstimatedRowCount()
if(rowCount>0) {
def pglevel = viewProductHir.first()?.Pglevel14totop
def viewProductHir1 = newView('ProductGroupHier')
def ProductHirVC1 = newViewCriteria(viewProductHir1)
def cr1 = ProductHirVC1.createRow()
def ec1 = cr1.ensureCriteriaItem('ProdGroupId1')
ec1.setOperator('=')
ec1.setValue(pglevel)
ProductHirVC1.insertRow(cr1)
viewProductHir1.appendViewCriteria(ProductHirVC1)
viewProductHir1.executeQuery()
def returnMap=[:]
def firstRecord=viewProductHir1.first()
returnMap.put('ProductGroupName',firstRecord?.ProdGroupName)
returnMap.put('ProdGroupId',firstRecord?.ProdGroupId)
return ''+returnMap
}
}
ProdGroupName)
Object Name : ProductGroupDetail
Object Name
Object Display Name Plural
Object Type
Application Name
Table Name
Total number of custom fields
Total number of modified Standard fields
Total number of Triggers
Total number of Object Functions
Total number of Object Workflows
Total number of Validations
Total number of Dynamic Layouts

Custom Fields
Name Display Name Type Column Name
TipoDeServicio_c Tipo de servicio FCL EXTN_ATTRIBUTE_CHAR005
Corporativo_c Corporativo Checkbox EXTN_ATTRIBUTE_CHAR003
Masivo_c Masivo Checkbox EXTN_ATTRIBUTE_CHAR004
TipoDeServicioWF_c Tipo de Servicio FCL EXTN_ATTRIBUTE_CHAR006

Dynamic Layouts
Layout Name Active Role
Diseño personalizado por defecto Yes
ProductGroupDetail
Grupo de productos
OOTB
CRM
QSC_PROD_GRP_DETAILS
4
0
0
0
0
0
1

Column Name Default Value Required Updatable Searchable


EXTN_ATTRIBUTE_CHAR005 wifi No Yes Yes
EXTN_ATTRIBUTE_CHAR003 N Yes Yes Yes
EXTN_ATTRIBUTE_CHAR004 N Yes Yes Yes
EXTN_ATTRIBUTE_CHAR006 No Yes No

Record Type Advanced Expression


REST Enabl Precision MaxLength Expression
Yes 1500 1500
Yes 10 10
Yes 10 10
Yes 1500 1500
Object Name : PromocionDescuento_c
Object Name PromocionDescuento_c
Object Display Name Plural PromocionDescuento
Object Type Custom
Application Name CRM
Table Name MOT_REF_ENTITIES
Total number of custom fields
Total number of modified Standard fields
Total number of Triggers
Total number of Object Functions
Total number of Object Workflows
Total number of Validations
Total number of Dynamic Layouts

Custom Fields
Name Display Name Type Column Name
RecordName Código OOTB RECORD_NAME
CreationDate Fecha de Creación OOTB CREATION_DATE
IntervaloCadaEditableX_c IntervaloCadaEditable Checkbox EXTN_ATTRIBUTE_CHAR012
Obligatorio_c Obligatorio Checkbox EXTN_ATTRIBUTE_CHAR014
Diferir_c Diferir Default DCL

CurrencyCode Currency Code FCL CURRENCY_CODE


DetalleEditable_c Detalle Editable Checkbox EXTN_ATTRIBUTE_CHAR008
LastUpdatedBy Actualizado por OOTB LAST_UPDATED_BY
DiferirEditable_c Diferir Editable Checkbox EXTN_ATTRIBUTE_CHAR009
IdDiferirDefault_c IdDiferirDefault Number EXTN_ATTRIBUTE_NUMBER021
CreatedBy Creado por OOTB CREATED_BY
OraZcxOwner_c Owner DCL

DescuentoEditable_c Descuento Editable Checkbox EXTN_ATTRIBUTE_CHAR010


Descripcion_c Descripción Text EXTN_ATTRIBUTE_CHAR007
IdDetalleDefault_c IdDetalleDefault Number EXTN_ATTRIBUTE_NUMBER020
Oportunidad_c Oportunidad DCL

Detalle_Id_c Detalle Default DCLForeignKey EXTN_ATTRIBUTE_NUMBER003


Activo_c Activo Checkbox EXTN_ATTRIBUTE_CHAR011
OraZcxOwner_Id_c Owner DCLForeignKey OWNER_RESOURCE_ID
Descuento_Id_c Descuento Default DCLForeignKey EXTN_ATTRIBUTE_NUMBER004
IntervaloHastaEditable_c IntervaloHastaEditable Number EXTN_ATTRIBUTE_NUMBER015
IntervaloCadaEditable_c IntervaloCadaEditable Number EXTN_ATTRIBUTE_NUMBER014
Id Identificador de Registro OOTB ID
RecordNumber Record Number OOTB RECORD_NUMBER
IntervaloHastaEditableX_c Intervalo Hasta Editable Checkbox EXTN_ATTRIBUTE_CHAR013
DetalleConsultado_c Detalle Consulltado Checkbox EXTN_ATTRIBUTE_CHAR021
IntervaloMinimoHasta_c IntervaloMinimoHasta Number EXTN_ATTRIBUTE_NUMBER019
PorcentajeDescuento_c Porcentaje Descuento Number EXTN_ATTRIBUTE_NUMBER006
Descuento_c Descuento Default DCL

IntervaloMinimoCada_c IntervaloMinimoCada Number EXTN_ATTRIBUTE_NUMBER017


IdDescuentoDefault_c IdDescuentoDefault Number EXTN_ATTRIBUTE_NUMBER022
IntervaloMaximoCada_c IntervaloMaximoCada Number EXTN_ATTRIBUTE_NUMBER016
Oportunidad_Id_c Oportunidad DCLForeignKey EXTN_ATTRIBUTE_NUMBER001
DescripcionDiferir_c Descripcion Diferir Text EXTN_ATTRIBUTE_CHAR020
IntervaloMaximoHasta_c IntervaloMaximoHasta Number EXTN_ATTRIBUTE_NUMBER018
Detalle_c Detalle Default DCL

IntervaloCadaNum_c Intervalo Cada Number EXTN_ATTRIBUTE_NUMBER007


Diferir_Id_c Diferir Default DCLForeignKey EXTN_ATTRIBUTE_NUMBER002
IntervaloHastaNum_c IntervaloHastaNum Number EXTN_ATTRIBUTE_NUMBER008
LastUpdateDate Fecha de Última Actualización OOTB LAST_UPDATE_DATE

Validations
Name Type Error Message
Rule1 Field Validation
Field Name : OraZcxOwner_Id_c
Rule1 Field Validation
Field Name : Oportunidad_Id_c
Rule1 Field Validation
Field Name : Diferir_Id_c
Rule1 Field Validation
Field Name : Detalle_Id_c
Rule1 Field Validation
Field Name : Descuento_Id_c

Object Workflows
Name Definition Name Event Point Description
PromocionDescuento_c_Sta Create
ndard_Create
PromocionDescuento_c_Sta Delete
ndard_Delete
PromocionDescuento_c_Sta Update
ndard_Update
PromocionDescuento_c
PromocionDescuento
Custom
CRM
MOT_REF_ENTITIES
40
0
0
0
3
5
0

umn Name Default Value Required Updatable Searchable REST Enabl


ORD_NAME Yes Yes Yes Yes
ATION_DATE Yes No Yes Yes
N_ATTRIBUTE_CHAR012 N Yes Yes No Yes
N_ATTRIBUTE_CHAR014 N Yes Yes No Yes
No Yes No Yes
RENCY_CODE No Yes Yes Yes
N_ATTRIBUTE_CHAR008 N Yes Yes No Yes
T_UPDATED_BY Yes Yes Yes Yes
N_ATTRIBUTE_CHAR009 N Yes Yes No Yes
N_ATTRIBUTE_NUMBER021 No Yes No Yes
ATED_BY Yes No Yes Yes
Yes Yes No Yes
N_ATTRIBUTE_CHAR010 N Yes Yes No Yes
N_ATTRIBUTE_CHAR007 Yes Yes Yes Yes
N_ATTRIBUTE_NUMBER020 No Yes No Yes
Yes Yes No Yes
N_ATTRIBUTE_NUMBER003 No Yes No Yes
N_ATTRIBUTE_CHAR011 N Yes Yes Yes Yes
NER_RESOURCE_ID Yes Yes Yes Yes
N_ATTRIBUTE_NUMBER004 No Yes No Yes
N_ATTRIBUTE_NUMBER015 No Yes No Yes
N_ATTRIBUTE_NUMBER014 No Yes No Yes
Yes No Yes Yes
ORD_NUMBER Yes No Yes Yes
N_ATTRIBUTE_CHAR013 N Yes Yes No Yes
N_ATTRIBUTE_CHAR021 N Yes Yes No Yes
N_ATTRIBUTE_NUMBER019 No Yes No Yes
N_ATTRIBUTE_NUMBER006 No Yes No Yes
No Yes No Yes
N_ATTRIBUTE_NUMBER017 No Yes No Yes
N_ATTRIBUTE_NUMBER022 No Yes No Yes
N_ATTRIBUTE_NUMBER016 No Yes No Yes
N_ATTRIBUTE_NUMBER001 Yes Yes Yes Yes
N_ATTRIBUTE_CHAR020 No Yes No Yes
N_ATTRIBUTE_NUMBER018 No Yes No Yes
No Yes No Yes
N_ATTRIBUTE_NUMBER007 No Yes No Yes
N_ATTRIBUTE_NUMBER002 No Yes No Yes
N_ATTRIBUTE_NUMBER008 No Yes No Yes
T_UPDATE_DATE Yes Yes Yes Yes

Expression
adf.source.isLookupIdValid('OraZcxOwner_Id_c',newValue)

adf.source.isLookupIdValid('Oportunidad_Id_c',newValue)

adf.source.isLookupIdValid('Diferir_Id_c',newValue)

adf.source.isLookupIdValid('Detalle_Id_c',newValue)

adf.source.isLookupIdValid('Descuento_Id_c',newValue)

ption Disabled Actions Expression


No return
(oracle.apps.fnd.applcore.Profile.ge
No return
(oracle.apps.fnd.applcore.Profile.ge
No return
(oracle.apps.fnd.applcore.Profile.ge
Precision MaxLength Expression
80 80
0 0
10 10
10 10
1500 1500
15 15
10 10
64 64
10 10
20 20
64 64
1500 1500
10 10
80 80
20 20
1500 1500
18 18
10 10
18 18
18 18
10 10
10 10
32 32
64 64
10 10
10 10
10 10
8 8
1500 1500
10 10
20 20
10 10
18 18
80 80
10 10
1500 1500
10 10
18 18
10 10
0 0

ression
rn
cle.apps.fnd.applcore.Profile.get('ZCX_CUSTOM_OBJECT_EVENTS') ==
rn
cle.apps.fnd.applcore.Profile.get('ZCX_CUSTOM_OBJECT_EVENTS') ==
rn
cle.apps.fnd.applcore.Profile.get('ZCX_CUSTOM_OBJECT_EVENTS') ==
Object Name : PromocionesYServicios_c
Object Name PromocionesYServicios_c
Object Display Name Plural Promociones y servicios
Object Type Custom
Application Name CRM
Table Name MOT_REF_ENTITIES
Total number of custom fields
Total number of modified Standard fields
Total number of Triggers
Total number of Object Functions
Total number of Object Workflows
Total number of Validations
Total number of Dynamic Layouts

Custom Fields
Name Display Name Type Column Name
RecordName Código OOTB RECORD_NAME
CreationDate Fecha de Creación OOTB CREATION_DATE
CurrencyCode Currency Code FCL CURRENCY_CODE
Subtipo_c Subtipo FCL EXTN_ATTRIBUTE_CHAR025
DescuentoDefault_c Descuento Default DCL

DetalleEditable_c Detalle Editable Checkbox EXTN_ATTRIBUTE_CHAR012


PorcentajeDeDescuento_c Porcentaje de Descuento Number EXTN_ATTRIBUTE_NUMBER024
LastUpdatedBy Actualizado por OOTB LAST_UPDATED_BY
DiferirEditable_c Diferir Editable Checkbox EXTN_ATTRIBUTE_CHAR013
IdDiferirDefault_c Id Diferir Default Number EXTN_ATTRIBUTE_NUMBER031
CreatedBy Creado por OOTB CREATED_BY
ConsultarDetalleDeLaPromocion_cConsultar detalle de la promoción Checkbox EXTN_ATTRIBUTE_CHAR029
CantidadMinima_c Cantidad Mínima Number EXTN_ATTRIBUTE_NUMBER015
ValorTotal_c Valor Total Currency EXTN_ATTRIBUTE_NUMBER022
Default_c Default Checkbox EXTN_ATTRIBUTE_CHAR026
IdDetalleDefault_c Id Detalle Default Number EXTN_ATTRIBUTE_NUMBER030
Detalle_Id_c Detalle DCLForeignKey EXTN_ATTRIBUTE_NUMBER003
Descuento_Id_c Descuento DCLForeignKey EXTN_ATTRIBUTE_NUMBER005
IntervaloHastaEditable_c Intervalo Hasta Editable Checkbox EXTN_ATTRIBUTE_CHAR021
IntervaloCadaEditable_c Intervalo cada editable Checkbox EXTN_ATTRIBUTE_CHAR020
Id Identificador de Registro OOTB ID
RecordNumber Record Number OOTB RECORD_NUMBER
RenovacionFlag_c Renovación Checkbox EXTN_ATTRIBUTE_CHAR024
DetalleDefault_Id_c Detalle Default DCLForeignKey EXTN_ATTRIBUTE_NUMBER012
RenovacionEditable_c Renovacion Editable Checkbox EXTN_ATTRIBUTE_CHAR011
ValorUnitarioEditable_c Valor unitario editable Checkbox EXTN_ATTRIBUTE_CHAR023
Cantidad_Id_c Cantidad DCLForeignKey EXTN_ATTRIBUTE_NUMBER001
CantidadNum_c Cantidad Number EXTN_ATTRIBUTE_NUMBER008
Renovacion_c Renovación DCL

Renovacion_Id_c Renovación DCLForeignKey EXTN_ATTRIBUTE_NUMBER002


Tipo_c Tipo FCL EXTN_ATTRIBUTE_CHAR009
DescripcionDiferir_c Descripcion Diferir Text EXTN_ATTRIBUTE_CHAR028
MontoDeDescuento_c Monto de descuento Currency EXTN_ATTRIBUTE_NUMBER026
Detalle_c Detalle DCL

DiferirDefault_c Diferir Default DCL

IntervaloCadaNum_c Intervalo Cada Number EXTN_ATTRIBUTE_NUMBER017


LastUpdateDate Fecha de Última Actualización OOTB LAST_UPDATE_DATE
Estado_c Estado Text EXTN_ATTRIBUTE_CHAR022
DetalleDefault_c Detalle Default DCL

Obligatorio_c Obligatorio Checkbox EXTN_ATTRIBUTE_CHAR027


Diferir_c Diferir DCL

IntervaloHasta_Id_c Intervalo hasta DCLForeignKey EXTN_ATTRIBUTE_NUMBER010


IntervaloHasta_c Intervalo hasta DCL

IntervaloCada_Id_c Intervalo Cada DCLForeignKey EXTN_ATTRIBUTE_NUMBER009


OraZcxOwner_c Owner DCL

DescuentoEditable_c Descuento Editable Checkbox EXTN_ATTRIBUTE_CHAR014


CantidadMaxima_c Cantidad Máxima Number EXTN_ATTRIBUTE_NUMBER014
MontoBase_c Monto base Currency EXTN_ATTRIBUTE_NUMBER028
DescuentoDefault_Id_c Descuento Default DCLForeignKey EXTN_ATTRIBUTE_NUMBER196
Descripcion_c Descripción Text EXTN_ATTRIBUTE_CHAR007
Cantidad_c Cantidad DCL

Oportunidad_c Oportunidad DCL

OraZcxOwner_Id_c Owner DCLForeignKey OWNER_RESOURCE_ID


IntervaloMinimoHasta_c Intervalo Mínimo Hasta Number EXTN_ATTRIBUTE_NUMBER020
Descuento_c Descuento DCL

Seleccionar_c Servicio Contratado Checkbox EXTN_ATTRIBUTE_CHAR008


IntervaloMinimoCada_c Intervalo Mínimo Cada Number EXTN_ATTRIBUTE_NUMBER018
IdDescuentoDefault_c Id Descuento Default Number EXTN_ATTRIBUTE_NUMBER032
ValorUnitario_c Valor unitario Number EXTN_ATTRIBUTE_NUMBER006
IntervaloMaximoCada_c Intervalo Máximo Cada Number EXTN_ATTRIBUTE_NUMBER019
CantidadEditable_c Cantidad Editable Checkbox EXTN_ATTRIBUTE_CHAR010
IntervaloCada_c Intervalo Cada DCL

Oportunidad_Id_c Oportunidad DCLForeignKey EXTN_ATTRIBUTE_NUMBER011


ValorMensual_c Valor Mensual Number EXTN_ATTRIBUTE_NUMBER007
NombreDeDescuento_c Nombre de Descuento Number EXTN_ATTRIBUTE_NUMBER025
IntervaloMaximoHasta_c Intervalo Máximo Hasta Number EXTN_ATTRIBUTE_NUMBER021
DiferirDefault_Id_c Diferir Default DCLForeignKey EXTN_ATTRIBUTE_NUMBER013
Diferir_Id_c Diferir DCLForeignKey EXTN_ATTRIBUTE_NUMBER004
IntervaloHastaNum_c Intervalo Hasta Number EXTN_ATTRIBUTE_NUMBER016

Triggers
Name Type Trigger PointDescription Error Message
SetIntervalosDefault Field Trigger Modify
Field Name :
Diferir_Id_c

calcularPromocionIns Object Trigger BeforeInsert


calcularPromocion Object Trigger BeforeUpdate

detalle_promociones Object Trigger BeforeUpdate


Validations
Name Type Error Message
Validacion Object Validation Valor fuera del rango

Rule1 Field Validation


Field Name : OraZcxOwner_Id_c
Rule1 Field Validation
Field Name : Cantidad_Id_c
Rule1 Field Validation
Field Name : Renovacion_Id_c
Rule1 Field Validation
Field Name : Detalle_Id_c
Rule1 Field Validation
Field Name : Diferir_Id_c
Rule1 Field Validation
Field Name : Descuento_Id_c
Rule1 Field Validation
Field Name : IntervaloCada_Id_c
Rule1 Field Validation
Field Name : IntervaloHasta_Id_c
Rule1 Field Validation
Field Name : Oportunidad_Id_c
Rule1 Field Validation
Field Name : DetalleDefault_Id_c
Rule1 Field Validation
Field Name : DiferirDefault_Id_c
Rule1 Field Validation
Field Name : DescuentoDefault_Id_c

Object Functions
Name Parameters Return Type Privileged Visibility Description
validarProm String No Default
ocion
calcularProm Double No Default
ocion

accionCalcul void No Default


arPromocion

eliminarDeta void No Default


lle
Object Workflows
Name Definition Name Event Point Description
PromocionesYServicios_c_St Create
andard_Create
PromocionesYServicios_c_St Delete
andard_Delete
PromocionesYServicios_c_St Update
andard_Update

Dynamic Layouts
Layout Name Active Role
Admin Yes ADMIN_GENERAL_PNT;
PromocionesYServicios_c
Promociones y servicios
Custom
CRM
MOT_REF_ENTITIES
69
0
4
4
3
13
1

umn Name Default Value Required Updatable Searchable REST Enabl


ORD_NAME Yes Yes Yes Yes
ATION_DATE Yes No Yes Yes
RENCY_CODE No Yes Yes Yes
N_ATTRIBUTE_CHAR025 No Yes No Yes
No Yes No Yes
N_ATTRIBUTE_CHAR012 N Yes Yes Yes Yes
N_ATTRIBUTE_NUMBER024 No Yes No Yes
T_UPDATED_BY Yes Yes Yes Yes
N_ATTRIBUTE_CHAR013 N Yes Yes Yes Yes
N_ATTRIBUTE_NUMBER031 No Yes No Yes
ATED_BY Yes No Yes Yes
N_ATTRIBUTE_CHAR029 N Yes Yes No Yes
N_ATTRIBUTE_NUMBER015 No Yes No Yes
N_ATTRIBUTE_NUMBER022 No Yes No Yes
N_ATTRIBUTE_CHAR026 N Yes Yes No Yes
N_ATTRIBUTE_NUMBER030 No Yes No Yes
N_ATTRIBUTE_NUMBER003 No Yes Yes Yes
N_ATTRIBUTE_NUMBER005 No Yes Yes Yes
N_ATTRIBUTE_CHAR021 N Yes Yes Yes Yes
N_ATTRIBUTE_CHAR020 N Yes Yes Yes Yes
Yes No Yes Yes
ORD_NUMBER Yes No Yes Yes
N_ATTRIBUTE_CHAR024 N Yes Yes No Yes
N_ATTRIBUTE_NUMBER012 No Yes Yes Yes
N_ATTRIBUTE_CHAR011 N Yes Yes Yes Yes
N_ATTRIBUTE_CHAR023 N Yes Yes Yes Yes
N_ATTRIBUTE_NUMBER001 No Yes Yes Yes
N_ATTRIBUTE_NUMBER008 No Yes No Yes
No Yes No Yes
N_ATTRIBUTE_NUMBER002 No Yes Yes Yes
N_ATTRIBUTE_CHAR009 Yes Yes Yes Yes
N_ATTRIBUTE_CHAR028 No Yes No Yes
N_ATTRIBUTE_NUMBER026 No Yes No Yes
No Yes No Yes
No Yes No Yes
N_ATTRIBUTE_NUMBER017 No Yes No Yes
T_UPDATE_DATE Yes Yes Yes Yes
N_ATTRIBUTE_CHAR022 No Yes Yes Yes
No Yes No Yes
N_ATTRIBUTE_CHAR027 N Yes Yes No Yes
No Yes No Yes
N_ATTRIBUTE_NUMBER010 No Yes Yes Yes
No Yes No Yes
N_ATTRIBUTE_NUMBER009 No Yes Yes Yes
Yes Yes No Yes
N_ATTRIBUTE_CHAR014 N Yes Yes Yes Yes
N_ATTRIBUTE_NUMBER014 No Yes No Yes
N_ATTRIBUTE_NUMBER028 No Yes No Yes
N_ATTRIBUTE_NUMBER196 No Yes Yes Yes
N_ATTRIBUTE_CHAR007 Yes Yes Yes Yes
No Yes No Yes
No Yes No Yes
NER_RESOURCE_ID Yes Yes Yes Yes
N_ATTRIBUTE_NUMBER020 No Yes Yes Yes
No Yes No Yes
N_ATTRIBUTE_CHAR008 N Yes Yes Yes Yes
N_ATTRIBUTE_NUMBER018 No Yes Yes Yes
N_ATTRIBUTE_NUMBER032 No Yes No Yes
N_ATTRIBUTE_NUMBER006 Yes Yes No Yes
N_ATTRIBUTE_NUMBER019 No Yes Yes Yes
N_ATTRIBUTE_CHAR010 N Yes Yes Yes Yes
No Yes No Yes
N_ATTRIBUTE_NUMBER011 No Yes Yes Yes
N_ATTRIBUTE_NUMBER007 No Yes No Yes
N_ATTRIBUTE_NUMBER025 No Yes No Yes
N_ATTRIBUTE_NUMBER021 No Yes Yes Yes
N_ATTRIBUTE_NUMBER013 No Yes Yes Yes
N_ATTRIBUTE_NUMBER004 No Yes Yes Yes
N_ATTRIBUTE_NUMBER016 No Yes No Yes
Expression
if(!getPrimaryRowState().isNew()){
def diferir=Diferir_Obj_c
if(diferir!=null){
setAttribute('DescripcionDiferir_c',diferir?.Descripcion_c)
}
else{
setAttribute('DescripcionDiferir_c','1')
}
}
calcularPromocion()
validarPromocion()
def cambioCantidad=isAttributeChanged('CantidadNum_c')
def cambioSeleccion=isAttributeChanged('Seleccionar_c')
def cambioDetalle=isAttributeChanged('Detalle_Id_c')
def cambioDiferir=isAttributeChanged('Diferir_Id_c')
def cambioDescuento=isAttributeChanged('Descuento_Id_c')

if(cambioSeleccion||cambioCantidad||cambioDetalle||cambioDiferir||cambioDescuento){
calcularPromocion()
return true
def opty=Oportunidad_Obj_c
if(opty!=null){
def revs=opty.ChildRevenue
while(revs.hasNext()){
def rev=revs.next()
rev.getServiciosAdicionales()
}
}
}
def consultarDetallePromocion=isAttributeChanged('ConsultarDetalleDeLaPromocion_c')&& ConsultarDetalleDeLaPromocion_c
def OportunidadId = Oportunidad_Id_c;
def codigoPromocion=RecordName;
if(consultarDetallePromocion)
{
eliminarDetalle()
setAttribute('ConsultarDetalleDeLaPromocion_c','N')
def oprtunidades = newView('OpportunityVO')
def oprtunidadesc = newViewCriteria(oprtunidades)
def oprtunidadesr = oprtunidadesc.createRow()
def oprtunidadesi = oprtunidadesr.ensureCriteriaItem('OptyId')
oprtunidadesi.setOperator('=')
oprtunidadesi.setValue(OportunidadId)
oprtunidadesc.insertRow(oprtunidadesr)
oprtunidades.appendViewCriteria(oprtunidadesc)
oprtunidades.executeQuery();
while (oprtunidades.hasNext()){
def oprtunidad = oprtunidades.next()
println('entrando a consultar detalle')
oprtunidad.ConsultarDetallePromocion(codigoPromocion);
}
}

Expression
if(getPrimaryRowState().isNew()){
return true
}
def cantidadMin=nvl(CantidadMinima_c,0 as BigDecimal)
def cantidadMax=nvl(CantidadMaxima_c,0 as BigDecimal)
def cantidad=nvl(CantidadNum_c,0 as BigDecimal)
def errorMsg=''
if(cantidad<cantidadMin || cantidad > cantidadMax){
errorMsg+='La cantidad debe estar comprendida entre '+cantidadMin +' y ' + cantidadMax + '. '
}

def intervaloCadaMin=nvl(IntervaloMinimoCada_c,0 as BigDecimal)


def intervaloCadaMax=nvl(IntervaloMaximoCada_c,0 as BigDecimal)
def intervaloCada=nvl(IntervaloCadaNum_c,0 as BigDecimal)
if(intervaloCada<intervaloCadaMin || intervaloCada > intervaloCadaMax){
errorMsg+='El intervalo cada debe estar comprendido entre '+intervaloCadaMin +' y ' + intervaloCadaMax + '. '
}
def intervaloHastaMin=nvl(IntervaloMinimoHasta_c,0 as BigDecimal)
def intervaloHastaMax=nvl(IntervaloMaximoHasta_c,0 as BigDecimal)
def intervaloHasta=nvl(IntervaloHastaNum_c,0 as BigDecimal)
if(intervaloHasta<intervaloHastaMin || intervaloHasta > intervaloHastaMax){
errorMsg+='El intervalo hasta debe estar comprendido entre '+intervaloHastaMin +' y ' + intervaloHastaMax + '. '
}
if(errorMsg!=''){
throw new oracle.jbo.ValidationException(errorMsg)
}
return true
adf.source.isLookupIdValid('OraZcxOwner_Id_c',newValue)

adf.source.isLookupIdValid('Cantidad_Id_c',newValue)

adf.source.isLookupIdValid('Renovacion_Id_c',newValue)

adf.source.isLookupIdValid('Detalle_Id_c',newValue)
adf.source.isLookupIdValid('Diferir_Id_c',newValue)

adf.source.isLookupIdValid('Descuento_Id_c',newValue)

adf.source.isLookupIdValid('IntervaloCada_Id_c',newValue)

adf.source.isLookupIdValid('IntervaloHasta_Id_c',newValue)

adf.source.isLookupIdValid('Oportunidad_Id_c',newValue)

adf.source.isLookupIdValid('DetalleDefault_Id_c',newValue)

adf.source.isLookupIdValid('DiferirDefault_Id_c',newValue)

adf.source.isLookupIdValid('DescuentoDefault_Id_c',newValue)

tion Expression
if(getPrimaryRowState().isNew() || nvl(Seleccionar_c,'N')=='N' ){
return true
}
def cantidadMin=nvl(CantidadMinima_c,0 as BigDecimal)
def cantidadMax=nvl(CantidadMaxima_c,0 as BigDecimal)
def cantidad=nvl(CantidadNum_c,0 as BigDecimal)
def errorMsg=''
if(cantidad<cantidadMin || cantidad > cantidadMax){
errorMsg+='La cantidad debe estar comprendida entre '+cantidadMin +' y ' + cantidadMax + '. '
}

def intervaloCadaMin=nvl(IntervaloMinimoCada_c,0 as BigDecimal)


def intervaloCadaMax=nvl(IntervaloMaximoCada_c,0 as BigDecimal)
def intervaloCada=nvl(IntervaloCadaNum_c,0 as BigDecimal)
def errorList=[]
def errorCount=0
if(intervaloCada<intervaloCadaMin || intervaloCada > intervaloCadaMax){
errorList.add('El intervalo cada debe estar comprendido entre '+intervaloCadaMin +' y ' + intervaloCadaMax + '. ')
errorCount+=1
}
def intervaloHastaMin=nvl(IntervaloMinimoHasta_c,0 as BigDecimal)
def intervaloHastaMax=nvl(IntervaloMaximoHasta_c,0 as BigDecimal)
def intervaloHasta=nvl(IntervaloHastaNum_c,0 as BigDecimal)
if(intervaloHasta<intervaloHastaMin || intervaloHasta > intervaloHastaMax){
errorList.add('El intervalo hasta debe estar comprendido entre '+intervaloHastaMin +' y ' + intervaloHastaMax + '. ')
errorCount+=1
}

def errorList1=[]
def errorCount1=0
def seleccionado = nvl(Seleccionar_c,'')
def detalle = nvl(Detalle_c,'')
def direfir = nvl(Diferir_c,'')
def descuento = nvl(Descuento_c,'')
def RecordName_c = nvl(RecordName,'')
if (seleccionado == 'Y'){
println('RecordName:'+RecordName)
if (detalle == ''){
errorList1.add('Detalle. ')
errorCount1+=1
}
if (direfir == ''){
errorList1.add('Direfir. ')
errorCount1+=1
}
if (descuento == ''){
errorList1.add('Descuento. ')
errorCount1+=1
}
def errorMessage1= ''
if(errorCount1!=0){
for(error in errorList1){
errorMessage1+=error
}
throw new oracle.jbo.ValidationException('(BDS) Promociones y Servicios Adicionales: Debe seleccionar ' +errorMess
Descripcion_c)
}

def errorMessage=''

if(errorCount=='0'){
return errorMessage
}
else{
if(Tipo_c=='PROMOCION'){
errorMessage='Error en la Promoción ' + Descripcion_c+': '
}
else{
errorMessage='Error en el Servicio ' + Descripcion_c+': '
}
}
for(error in errorList){
errorMessage+=error
}

return errorMessage +'Id'

def total=0 as Double


def cantidad=nvl(CantidadNum_c,0 as BigDecimal) as Double
def precioUnitario=nvl(ValorUnitario_c, 0 as BigDecimal) as Double
def precioDetalle=nvl(Detalle_Obj_c?.Valor_c,0 as BigDecimal) as Double
def descuento=(nvl(Descuento_Obj_c?.Porcentaje_c,0 as BigDecimal)/ 100) as Double
if(precioDetalle!=0)
precioUnitario=precioDetalle
total=((precioUnitario*cantidad*(1-descuento))as BigDecimal).setScale(2,BigDecimal.ROUND_HALF_UP)
def mesesDiferir=nvl(DescripcionDiferir_c,'')
def numMesesDiferir=1
if(mesesDiferir.isInteger()){
numMesesDiferir=mesesDiferir.toInteger()
if(numMesesDiferir==0){
numMesesDiferir=1
}
}
def valorMensual=((total as BigDecimal)/ numMesesDiferir).setScale(2,BigDecimal.ROUND_HALF_UP)
setAttribute('MontoBase_c',(precioUnitario as BigDecimal).setScale(2,BigDecimal.ROUND_HALF_UP))
setAttribute('ValorMensual_c',valorMensual.setScale(2,BigDecimal.ROUND_HALF_UP) as BigDecimal)
setAttribute('ValorTotal_c',total.setScale(2,BigDecimal.ROUND_HALF_UP) as BigDecimal)
return total as Double
return 0 as Double
calcularPromocion()

def OportunidadId = Oportunidad_Id_c;


def codigoPromocion=RecordName;
def OptyId;
def Id = Id;
def IdPromocion = 'PromocionOServicio_Id_c'
def objects= []
objects.add('Detalle_c')
objects.add('Diferir_c')
objects.add('Descuento_c')
println('objects:'+objects)

for(ob in objects){
if(!objects.contains(ob)){
throw new oracle.jbo.ValidationException('Esta función está limitada a las vistas dentro de esta lista:' +objects)
}else{
println('eliminando vista:'+ob)
def promociones = newView(ob)
def promocionc = newViewCriteria(promociones)
def promocionr = promocionc.createRow()
def promocioni = promocionr.ensureCriteriaItem('Oportunidad_Id_c')
promocioni.setOperator('=')
promocioni.setValue(OportunidadId)
if(ob == 'Descuento_c'){
IdPromocion = 'PromocionOservicio_Id_c'
}
def promocionj=promocionr.ensureCriteriaItem(IdPromocion)
promocionj.setOperator('=')
promocionj.setValue(Id)
promocionc.insertRow(promocionr)
promociones.appendViewCriteria(promocionc)
promociones.executeQuery();
while (promociones.hasNext()){
def v = promociones.next()

println('eliminando vista:'+v.Descripcion_c)
v.remove()
}
}
}
setAttribute('Detalle_c',null)
setAttribute('Diferir_c',null)
setAttribute('Descuento_c',null)

ption Disabled Actions Expression


No return
(oracle.apps.fnd.applcore.Profile.ge
No return
(oracle.apps.fnd.applcore.Profile.ge
No return
(oracle.apps.fnd.applcore.Profile.ge

Record Type Advanced Expression


Precision MaxLength Expression
80 80
0 0
15 15
1500 1500
1500 1500
10 10
10 10
64 64
10 10
20 20
64 64
10 10
10 10
12 12
10 10
20 20
18 18
18 18
10 10
10 10
32 32
64 64
10 10
18 18
10 10
10 10
18 18
10 10
1500 1500
18 18
1500 1500
80 80
12 12
1500 1500
1500 1500
10 10
0 0
80 80
1500 1500
10 10
1500 1500
18 18
1500 1500
18 18
1500 1500
10 10
10 10
12 12
18 18
200 200
1500 1500
1500 1500
18 18
10 10
1500 1500
10 10
10 10
20 20
12 12
10 10
10 10
1500 1500
18 18
14 14
10 10
10 10
18 18
18 18
10 10
sultarDetalleDeLaPromocion_c=='Y'
oCadaMax + '. '

aloHastaMax + '. '


adMax + '. '

y ' + intervaloCadaMax + '. ')

' y ' + intervaloHastaMax + '. ')


Debe seleccionar ' +errorMessage1+ 'Descuento en '+
ROUND_HALF_UP)

UND_HALF_UP)
ND_HALF_UP))
as BigDecimal)
al)
tro de esta lista:' +objects)

ression
rn
cle.apps.fnd.applcore.Profile.get('ZCX_CUSTOM_OBJECT_EVENTS') ==
rn
cle.apps.fnd.applcore.Profile.get('ZCX_CUSTOM_OBJECT_EVENTS') ==
rn
cle.apps.fnd.applcore.Profile.get('ZCX_CUSTOM_OBJECT_EVENTS') ==
Object Name : RecursoAsignacionLead_c
Object Name
Object Display Name Plural
Object Description
Object Type
Application Name
Table Name
Record Name Sequence
Total number of custom fields
Total number of modified Standard fields
Total number of Triggers
Total number of Object Functions
Total number of Object Workflows
Total number of Validations
Total number of Dynamic Layouts

Custom Fields
Name Display Name Type Column Name
RecordName RecursoAsignacionLeadRecordN OOTB RECORD_NAME
CreationDate Fecha de Creación OOTB CREATION_DATE
SuspenderAsignacion_c Suspender Asignación Checkbox EXTN_ATTRIBUTE_CHAR006
Ranking_c Ranking Number EXTN_ATTRIBUTE_NUMBER007
CurrencyCode Currency Code FCL CURRENCY_CODE
LeadsAsignados_c Leads asignados Number EXTN_ATTRIBUTE_NUMBER008
Offset_c Offset Number EXTN_ATTRIBUTE_NUMBER010
LastUpdatedBy Actualizado por OOTB LAST_UPDATED_BY
CreatedBy Creado por OOTB CREATED_BY
Score_c Score Number EXTN_ATTRIBUTE_NUMBER006
Id Identificador de Registro OOTB ID
RecordNumber Record Number OOTB RECORD_NUMBER
ObjetivoDeAsignacion_c Objetivo de Asignación Number EXTN_ATTRIBUTE_NUMBER009
LastUpdateDate Fecha de Última Actualización OOTB LAST_UPDATE_DATE

Object Functions
Name Parameters Return Type Privileged Visibility Description
calcularObje numeroVendedor void No Default
tivoAsignaci es-
on Long,minimoLead
s-
RecursoAsignacionLead_c
RecursoAsignacionLeads
Intersection Entity generated by M:M
Relationship
Custom
CRM
ZCA_REF_ENTITIES_XMM
{0000000}-{YY}{MM}{DD}
14
0
0
1
0
0
0

Column Name Default Value Required Updatable Searchable


RECORD_NAME Yes Yes Yes
CREATION_DATE Yes No Yes
EXTN_ATTRIBUTE_CHAR006 N Yes Yes No
EXTN_ATTRIBUTE_NUMBER007 No Yes No
CURRENCY_CODE No Yes Yes
EXTN_ATTRIBUTE_NUMBER008 No Yes No
EXTN_ATTRIBUTE_NUMBER010 No Yes No
LAST_UPDATED_BY Yes Yes Yes
CREATED_BY Yes No Yes
EXTN_ATTRIBUTE_NUMBER006 No Yes No
ID Yes No Yes
RECORD_NUMBER Yes No Yes
EXTN_ATTRIBUTE_NUMBER009 No Yes No
LAST_UPDATE_DATE Yes Yes Yes

Description Expression
def objetivoAsignacion=((numeroVendedores-nvl(Ranking_c,0 as BigDecimal)+1)as BigDecimal)*deltaAsign
objetivoAsignacion=(objetivoAsignacion as BigDecimal).setScale(0,BigDecimal.ROUND_HALF_UP) as Long
setAttribute('ObjetivoDeAsignacion_c',objetivoAsignacion)
REST Enabl Precision MaxLength Expression
Yes 80 80
Yes 0 0
Yes 10 10
Yes 10 10
Yes 15 15
Yes 10 10
Yes 10 10
Yes 64 64
Yes 64 64
Yes 10 10
Yes 32 32
Yes 64 64
Yes 10 10
Yes 0 0

cimal)+1)as BigDecimal)*deltaAsignacion + (minimoLeads as BigDecimal)


ecimal.ROUND_HALF_UP) as Long
Object Name : Renovacion_c
Object Name Renovacion_c
Object Display Name Plural Renovaciones
Object Type Custom
Application Name CRM
Table Name SVC_REF_ENTITIES
Total number of custom fields
Total number of modified Standard fields
Total number of Triggers
Total number of Object Functions
Total number of Object Workflows
Total number of Validations
Total number of Dynamic Layouts

Custom Fields
Name Display Name Type Column Name
RecordName Código OOTB RECORD_NAME
CreationDate Fecha de Creación OOTB CREATION_DATE
CurrencyCode Currency Code FCL CURRENCY_CODE
PromocionOServicio_Id_c Promoción o servicio DCLForeignKey EXTN_ATTRIBUTE_NUMBER001
LastUpdatedBy Actualizado por OOTB LAST_UPDATED_BY
CreatedBy Creado por OOTB CREATED_BY
PromocionOServicio_c Promoción o servicio DCL

OraZcxOwner_c Owner DCL

Descripcion_c Descripción Text EXTN_ATTRIBUTE_CHAR008


Activo_c Activo Checkbox EXTN_ATTRIBUTE_CHAR007
OraZcxOwner_Id_c Owner DCLForeignKey OWNER_RESOURCE_ID
Id Identificador de Registro OOTB ID
RecordNumber Record Number OOTB RECORD_NUMBER
LastUpdateDate Fecha de Última Actualización OOTB LAST_UPDATE_DATE

Validations
Name Type Error Message
Rule1 Field Validation
Field Name : OraZcxOwner_Id_c
Rule1 Field Validation
Field Name : PromocionOServicio_Id_c

Object Workflows
Name Definition Name Event Point Description
Renovacion_c_Standard_Del Delete
ete
Renovacion_c_Standard_Cre Create
ate
Renovacion_c_Standard_Up Update
date
Renovacion_c
Renovaciones
Custom
CRM
SVC_REF_ENTITIES
14
0
0
0
3
2
0

umn Name Default Value Required Updatable Searchable REST Enabl


ORD_NAME Yes Yes Yes Yes
ATION_DATE Yes No Yes Yes
RENCY_CODE No Yes Yes Yes
N_ATTRIBUTE_NUMBER001 Yes Yes Yes Yes
T_UPDATED_BY Yes Yes Yes Yes
ATED_BY Yes No Yes Yes
Yes Yes No Yes
Yes Yes No Yes
N_ATTRIBUTE_CHAR008 Yes Yes Yes Yes
N_ATTRIBUTE_CHAR007 N Yes Yes Yes Yes
NER_RESOURCE_ID Yes Yes Yes Yes
Yes No Yes Yes
ORD_NUMBER Yes No Yes Yes
T_UPDATE_DATE Yes Yes Yes Yes

Expression
adf.source.isLookupIdValid('OraZcxOwner_Id_c',newValue)

adf.source.isLookupIdValid('PromocionOServicio_Id_c',newValue)

ption Disabled Actions Expression


No return
(oracle.apps.fnd.applcore.Profile.ge
No return
(oracle.apps.fnd.applcore.Profile.ge
No return
(oracle.apps.fnd.applcore.Profile.ge
Precision MaxLength Expression
80 80
0 0
15 15
18 18
64 64
64 64
1500 1500
1500 1500
200 200
10 10
18 18
32 32
64 64
0 0

ression
rn
cle.apps.fnd.applcore.Profile.get('ZCX_CUSTOM_OBJECT_EVENTS') ==
rn
cle.apps.fnd.applcore.Profile.get('ZCX_CUSTOM_OBJECT_EVENTS') ==
rn
cle.apps.fnd.applcore.Profile.get('ZCX_CUSTOM_OBJECT_EVENTS') ==
Object Name : Resource
Object Name
Object Display Name Plural
Object Type
Application Name
Table Name
Total number of custom fields
Total number of modified Standard fields
Total number of Triggers
Total number of Object Functions
Total number of Object Workflows
Total number of Validations
Total number of Dynamic Layouts

Custom Fields
Name Display Name Type Column Name
AnoYMes_c Año y mes ultimo score Number EXTN_ATTRIBUTE_NUMBER005
Score_c Score Number EXTN_ATTRIBUTE_NUMBER004
UsuarioRegestion_c Usuario regestión Checkbox EXTN_ATTRIBUTE_CHAR003
SucursalesDeFacturacion_c Sucursales de Facturación FCL EXTN_ATTRIBUTE_CHAR004
PartyId_c PartyId Text Formula

Object Functions
Name Parameters Return Type Privileged Visibility Description
esRegestion Boolean No Default

calcularScor void No Default


e

testRoles listaRoles-List Boolean No Default

CrearActuali void No Default


zarCuentaR
N
CrearActuali void No Default
zarCuentaR
N

esTeleventas Boolean No Default


Digital

Dynamic Layouts
Layout Name Active Role
PTN Yes
PTN Yes
Resource
Recursos
OOTB
CRM
JTF_RS_RESOURCE_PROFILES
5
0
0
5
0
0
2

Column Name Default Value Required Updatable Searchable


EXTN_ATTRIBUTE_NUMBER005 No Yes No
EXTN_ATTRIBUTE_NUMBER004 No Yes No
EXTN_ATTRIBUTE_CHAR003 N Yes Yes Yes
EXTN_ATTRIBUTE_CHAR004 No Yes No
No No No

Description Expression
def list=['TELEVENTAS']
return testRoles(list)

def optys=newView('OpportunityVO')

def rras=ResourceRoleAssign
def nullDate=new Date(01,01,2099)
while(rras.hasNext()){
def rra=rras.next()
def endDate=nvl(rra.EndDateActive,nullDate)
def roleCode=rra.RoleCode
if(endDate>=today()&&listaRoles.contains(roleCode)){
return true
}
}
return false
def payload=[:]
def status = [:]
status.put('id','1')
def CodigoCuenta = PartyNumber;
def nombre = nvl(PersonFirstName ,'')
def apellido = nvl(PersonLastName,'')
def rol = Roles;
payload.put('codigo_cuenta_sales',CodigoCuenta)
payload.put('estatus',status)
payload.put('nombre_sales',nombre+' '+ apellido)
payload.put('perfil_sales',rol)
def response ='';
try{
response = adf.webServices.CrearCuentaRN.POST(payload)
println(response)

}
catch(Exception e){
println('sin respuesta')
def msg=e.message
throw new oracle.jbo.ValidationException('Error: '+ msg)
}

def list=['TELEVENTAS_DIGITAL']
testRoles(list)

Record Type Advanced Expression


REST Enabl Precision MaxLength Expression
Yes 10 10
Yes 10 10
Yes 10 10
Yes 1500 1500
Yes 0 0 PartyId
Object Name : Revenue
Object Name Revenue
Object Display Name Plural Ítems de ingreso
Object Type OOTB
Application Name CRM
Table Name MOO_REVN
Child Object Yes
Parent Object Name Opportunity
Total number of custom fields
Total number of modified Standard fields
Total number of Triggers
Total number of Object Functions
Total number of Object Workflows
Total number of Validations
Total number of Dynamic Layouts

Standard Fields
Name Display Name Help Text
Discount Discount caja

Custom Fields
Name Display Name Type Column Name
TotalServiciosAdicionales_c Total Servicios adicionales Currency EXTN_ATTRIBUTE_NUMBER023
DetalleEditable_c Detalle Editable Checkbox EXTN_ATTRIBUTE_CHAR007
DiferirEditable_c DiferirEditable Checkbox EXTN_ATTRIBUTE_CHAR008
EquiposMensual_c Equipos Mensual Currency EXTN_ATTRIBUTE_NUMBER038
Producto_c Producto Text Formula

Detalle_Id_c Detalle Descuento DCLForeignKey EXTN_ATTRIBUTE_NUMBER189


ConsultarDetallesDescuento_c Consultar detalles de descuento Checkbox EXTN_ATTRIBUTE_CHAR013
EnlacesActivos_c Enlaces Activos Number EXTN_ATTRIBUTE_NUMBER044
PorcentajeDescuentoPromocion_c Porcentaje Descuento Promocion Number EXTN_ATTRIBUTE_NUMBER014
DescuentoMasivoDin_c Promoción de Descuento DCL

InstalacionBruta_c Instalacion Neta Number EXTN_ATTRIBUTE_NUMBER050


TotalDelPlan_c Plan Total Currency EXTN_ATTRIBUTE_NUMBER030
IntervaloCadaNum_c Aplicar descuento Cada x Meses Number EXTN_ATTRIBUTE_NUMBER017
EnlacesNoConcretados_c Enlaces no Concretados Number EXTN_ATTRIBUTE_NUMBER047
CodigoPostal_c Codigo postal DCL

Diferir_c Diferir primera factura DCL

DescuentoDin_c Selección de Descuento DCL

EnlacesNoConcretadosTemporalesEnlaces no Concretados TemporalNumber EXTN_ATTRIBUTE_NUMBER048


NumeroDeEnlaces_c Enlaces Totales Number EXTN_ATTRIBUTE_NUMBER009
AreaComercial_c Area Comercial Revenue FCL EXTN_ATTRIBUTE_CHAR003
TotalPrimeraFactura_c Total Primera Factura Currency EXTN_ATTRIBUTE_NUMBER012
EnlacesIngresados_c Enlaces Ingresados Number EXTN_ATTRIBUTE_NUMBER046
ValorTotalDeContrato_c Valor total de Contrato Currency EXTN_ATTRIBUTE_NUMBER042
ConsultaPromociones_c consulta Promociones Checkbox EXTN_ATTRIBUTE_CHAR010
DescuentoDin_Id_c Selección de Descuento DCLForeignKey EXTN_ATTRIBUTE_NUMBER188
CodigoPostal_Id_c Codigo postal DCLForeignKey EXTN_ATTRIBUTE_NUMBER002
ServiciosAdicionalesMensual_c Servicios Adicionales Mensual Currency EXTN_ATTRIBUTE_NUMBER040
Descuento_c Monto de Descuento Number EXTN_ATTRIBUTE_NUMBER004
Porcentaje_c Porcentaje Number EXTN_ATTRIBUTE_NUMBER005
ImporteBruto_c Importe Neto Number EXTN_ATTRIBUTE_NUMBER049
PromocionesMensual_c Promociones Mensual Currency EXTN_ATTRIBUTE_NUMBER036
PlanMensual_c Plan Mensual Currency EXTN_ATTRIBUTE_NUMBER034
InteravaloHastaMáximo_c Interavalo Hasta Máximo Number EXTN_ATTRIBUTE_NUMBER020
Diferir_Id_c Diferir primera factura DCLForeignKey EXTN_ATTRIBUTE_NUMBER190
TotalPromociones_c Total Promociones Currency EXTN_ATTRIBUTE_NUMBER025
ValorDeInstalacion_c Instalación Bruta Currency EXTN_ATTRIBUTE_NUMBER007
IntervaloCadaMaximo_c Intervalo cada maximo Number EXTN_ATTRIBUTE_NUMBER016
Bucket_c Bucket DCL

UltimaPromocionConsultada_c Ultima promocion consultada Text EXTN_ATTRIBUTE_CHAR014


ImporteNeto_c Importe Neto Number EXTN_ATTRIBUTE_NUMBER006
DescuentoMasivoDin_Id_c Promoción de Descuento DCLForeignKey EXTN_ATTRIBUTE_NUMBER003
Bucket_Id_c Bucket DCLForeignKey EXTN_ATTRIBUTE_NUMBER001
IntervaloHastaEditable_c Intervalo Hasta Editable Checkbox EXTN_ATTRIBUTE_CHAR005
IntervaloCadaEditable_c Intervalo cada editable Checkbox EXTN_ATTRIBUTE_CHAR004
IntervaloCadaMinimo_c Intervalo cada minimo Number EXTN_ATTRIBUTE_NUMBER015
CostoDelPlan_c Precio de catálogo del Plan Currency EXTN_ATTRIBUTE_NUMBER027
InstalacionMensual_c Instalación Mensual Currency EXTN_ATTRIBUTE_NUMBER032
EnlacesDesactivados_c Enlaces Desactivados Number EXTN_ATTRIBUTE_NUMBER045
DescripcionDiferir_c Descripcion Diferir Text EXTN_ATTRIBUTE_CHAR011
Detalle_c Detalle Descuento DCL

Estado_c Estado Activo Text Formula

ProductoDefinitvo_c Producto Definitivo Checkbox EXTN_ATTRIBUTE_CHAR012


PromocionEditable_c Promocion Editable Checkbox EXTN_ATTRIBUTE_CHAR006
DescuentoEditable_c Descuento Editable Checkbox EXTN_ATTRIBUTE_CHAR009
PrecioMensual_c Importe Bruto Currency EXTN_ATTRIBUTE_NUMBER010
IntervaloHastaMaximo_c Intervalo hasta maximo Number EXTN_ATTRIBUTE_NUMBER029
TotalDeEquipos_c Total de Equipos Currency EXTN_ATTRIBUTE_NUMBER021
IntervaloHastaMinimo_c Intervalo Hasta Mínimo Number EXTN_ATTRIBUTE_NUMBER019
IntervaloHastaNum_c Durante X Periodos Number EXTN_ATTRIBUTE_NUMBER018

Triggers
Name Type Trigger PointDescription Error Message Expression
Diferir Field Trigger Modify if(!getPrimaryRowSta
Field Name : def diferir=Diferir_O
Diferir_Id_c if(diferir!=null){
Diferir Modify

setAttribute('Desc
}
else{
setAttribute('Des
}
}
setAttribute('Descue
EliminarDiferirDescue Field Trigger Modify setAttribute('Diferir_
nto Field Name : setAttribute('Descue
SetIntervalos Detalle_Id_c
Field Trigger Modify def descuentoObj=D
Field Name : if(descuentoObj){
DescuentoMasivoDi setAttribute('Interv
setAttribute('Interv
}
else{
setAttribute('Interv
setAttribute('Interv
}
import Object Trigger Create def opty=Opportun
def optyId=nvl(Opty
if(optyId!=0){
if(nvl(opty?.OptyId,
def optys=newVie
def optyc=newVie
def optyr=optyc.c
def optyi=optyr.e
optyi.setOperator
optyi.setValue(Op
optyc.insertRow(o
optys.appendView
optys.executeQue
while(optys.hasNe
opty=optys.next
}
}
}
if(opty==null)
return true
if(opty?.getPrimaryR
return true
setAttribute('StatusC
setAttribute('AreaCo
initDescuento()
return true
Validar_Borrado Object Trigger Remove if(ProductoDefinitvo
Validar_Borrado Object Trigger Remove
throw new oracle.jb
}
controlInsert Object Trigger BeforeInsert controlRevenue(true

def op=Opportunity
def MetodoVentaCM

if(op==null){
return true
}

if(op!=null){
if(op.SalesMethodId
if(!op.getPrimaryRow
def atts=op.Attachm
def count=0
while(atts.hasNext())
def att=atts.next()
count+=1
}
if(count==0){
throw new oracle.jbo
}
if(count > 0){
def cmvetap
def cmvetap
if((op.SalesStageId =
throw new oracle.jbo
}
}
}
}
}
controlGeneralUpdate Object Trigger BeforeUpdate if(OptyId){
def consultarPromo
if(consultarPromoc
setAttribute('Cons
def promocionId=
if(promocionId!=0
def opty=Oppor
if(!opty){
def optys=new
def optyc=new
def optyr=opty
def optyi=opty
optyi.setOperat
optyi.setValue(O
optyc.insertRow
optys.appendV
optys.executeQ
while(optys.has
opty=optys.ne
}
}
def promocionD
def codigoProm
opty.ConsultarD
setAttribute('Ulti
promocionDescu
}
}
}
controlRevenue(false
OsnIntegrationTrigger Object Trigger AfterCommit secondaryEOSendTo

Validations
Name Type Error Message Expression
validarIntervalos Object Validation def descuentoObj=D
if(descuentoObj){
def minCada=nvl(d
def minHasta=nvl(d
def maxCada=nvl(d
def maxHasta=nvl(
def msg=''
def cada=nvl(Interv
def hasta=nvl(Inter

def cadaOk=minCa
def hastaOk= minH
if(cadaOk&& hasta
return true
}
else{
if(!cadaOk){
msg='El valor de
}
if(!hastaOk){
msg+='El valor d
}
throw new oracle.
}
}
else{
return true
}

return true
Rule1 Field Validation adf.source.isLookup
Field Name : Bucket_Id_c
Rule1 Field Validation adf.source.isLookup
Field Name : CodigoPostal_Id_c
Rule1 Field Validation adf.source.isLookup
Field Name :
DescuentoMasivoDin_Id_c
Rule1 Field Validation adf.source.isLookup
Field Name : DescuentoDin_Id_c
Rule1 Field Validation adf.source.isLookup
Field Name : Detalle_Id_c
Rule1 Field Validation adf.source.isLookup
Field Name : Diferir_Id_c

Object Functions
Name Parameters Return Type Privileged Visibility Description
revenueEdit Boolean No Default
able

initDescuent void No Default


o
getServicios void No Default
Adicionales
calcularPlan Double No Default

controlReve getPromociones- void No Default


nue Boolean
detalleCons Boolean No Default
ultado
enue
s de ingreso
B
M
O_REVN

ortunity
59
1
8
6
0
7
0

Searchable
No

Name Default Value Required Updatable Searchable REST Enabl


RIBUTE_NUMBER023 No Yes No Yes
RIBUTE_CHAR007 N Yes Yes No Yes
RIBUTE_CHAR008 N Yes Yes No Yes
RIBUTE_NUMBER038 No Yes No Yes
No No No Yes
RIBUTE_NUMBER189 No Yes No Yes
RIBUTE_CHAR013 N Yes Yes No Yes
RIBUTE_NUMBER044 No Yes No Yes
RIBUTE_NUMBER014 No Yes No Yes
No Yes No Yes
RIBUTE_NUMBER050 No Yes No Yes
RIBUTE_NUMBER030 No Yes No Yes
RIBUTE_NUMBER017 No Yes No Yes
RIBUTE_NUMBER047 No Yes No Yes
No Yes No Yes
Yes Yes No Yes
Yes Yes No Yes
RIBUTE_NUMBER048 No Yes No Yes
RIBUTE_NUMBER009 No Yes No Yes
RIBUTE_CHAR003 No Yes No Yes
RIBUTE_NUMBER012 No Yes No Yes
RIBUTE_NUMBER046 No Yes No Yes
RIBUTE_NUMBER042 No Yes No Yes
RIBUTE_CHAR010 N Yes Yes No Yes
RIBUTE_NUMBER188 Yes Yes No Yes
RIBUTE_NUMBER002 No Yes Yes Yes
RIBUTE_NUMBER040 No Yes No Yes
RIBUTE_NUMBER004 No Yes Yes Yes
RIBUTE_NUMBER005 No Yes No Yes
RIBUTE_NUMBER049 No Yes No Yes
RIBUTE_NUMBER036 No Yes No Yes
RIBUTE_NUMBER034 No Yes No Yes
RIBUTE_NUMBER020 No Yes No Yes
RIBUTE_NUMBER190 Yes Yes No Yes
RIBUTE_NUMBER025 No Yes No Yes
RIBUTE_NUMBER007 No Yes No Yes
RIBUTE_NUMBER016 No Yes No Yes
No Yes No Yes
RIBUTE_CHAR014 No Yes No Yes
RIBUTE_NUMBER006 No Yes Yes Yes
RIBUTE_NUMBER003 No Yes No Yes
RIBUTE_NUMBER001 No Yes Yes Yes
RIBUTE_CHAR005 N Yes Yes No Yes
RIBUTE_CHAR004 N Yes Yes No Yes
RIBUTE_NUMBER015 No Yes No Yes
RIBUTE_NUMBER027 No Yes No Yes
RIBUTE_NUMBER032 No Yes No Yes
RIBUTE_NUMBER045 No Yes No Yes
RIBUTE_CHAR011 No Yes No Yes
No Yes No Yes
No No No Yes
RIBUTE_CHAR012 N Yes Yes No Yes
RIBUTE_CHAR006 N Yes Yes No Yes
RIBUTE_CHAR009 N Yes Yes No Yes
RIBUTE_NUMBER010 No Yes No Yes
RIBUTE_NUMBER029 No Yes No Yes
RIBUTE_NUMBER021 No Yes No Yes
RIBUTE_NUMBER019 No Yes No Yes
RIBUTE_NUMBER018 No Yes No Yes

Expression
if(!getPrimaryRowState().isNew()){
def diferir=Diferir_Obj_c
if(diferir!=null){
setAttribute('DescripcionDiferir_c',diferir?.Descripcion_c)
}
else{
setAttribute('DescripcionDiferir_c','1')
}
}
setAttribute('DescuentoDin_c',null)
setAttribute('Diferir_c',null)
setAttribute('DescuentoDin_c',null)
def descuentoObj=DescuentoMasivoDin_Obj_c
if(descuentoObj){
setAttribute('IntervaloCadaNum_c',nvl(descuentoObj.IntervaloMinimoCada_c,0 as BigDecimal))
setAttribute('IntervaloHastaNum_c',nvl(descuentoObj.IntervaloMinimoHasta_c,0 as BigDecimal))
}
else{
setAttribute('IntervaloCadaNum_c',null)
setAttribute('IntervaloHastaNum_c',null)
}
def opty=Opportunity
def optyId=nvl(OptyId, 0 as Long)
if(optyId!=0){
if(nvl(opty?.OptyId, 0 as Long)==0){
def optys=newView('OpportunityVO')
def optyc=newViewCriteria(optys)
def optyr=optyc.createRow()
def optyi=optyr.ensureCriteriaItem('OptyId')
optyi.setOperator('=')
optyi.setValue(OptyId)
optyc.insertRow(optyr)
optys.appendViewCriteria(optyc)
optys.executeQuery()
while(optys.hasNext()){
opty=optys.next()
}
}
}
if(opty==null)
return true
if(opty?.getPrimaryRowState().isNew())
return true
setAttribute('StatusCode',opty.StatusCode)
setAttribute('AreaComercial_c',opty.AreaComercial_c)
initDescuento()
return true
if(ProductoDefinitvo_c=='Y' && !adf.util.usuarioAdministrador()){
throw new oracle.jbo.ValidationException('No es posible eliminar este producto ya que fue creado directamente por la integración.')
}
controlRevenue(true)

def op=Opportunity
def MetodoVentaCMV=300000000210277

if(op==null){
return true
}

if(op!=null){
if(op.SalesMethodId==MetodoVentaCMV){
if(!op.getPrimaryRowState().isNew()){
def atts=op.Attachment
def count=0
while(atts.hasNext()){
def att=atts.next()
count+=1
}
if(count==0){
throw new oracle.jbo.ValidationException('Para cambiar de Etapa 1 a 3, es necesario cargar una cotización.')
}
if(count > 0){
def cmvetapa1= op.GetSalesStageId('CMVE1')
def cmvetapa2= op.GetSalesStageId('CMVE2')
if((op.SalesStageId == cmvetapa1 || op.SalesStageId == cmvetapa2) && op.AreaComercial_c == 'CORPORATIVO'){
throw new oracle.jbo.ValidationException('No puedes agregar un producto en Etapa 1 o 2.')
}
}
}
}
}
if(OptyId){
def consultarPromocion=isAttributeChanged('ConsultarDetallesDescuento_c')&&ConsultarDetallesDescuento_c=='Y'
if(consultarPromocion){
setAttribute('ConsultarDetallesDescuento_c','N')
def promocionId=nvl(DescuentoMasivoDin_Id_c,0 as BigDecimal)
if(promocionId!=0){
def opty=Opportunity
if(!opty){
def optys=newView('OpportunityVO')
def optyc=newViewCriteria(optys)
def optyr=optyc.createRow()
def optyi=optyr.ensureCriteriaItem('OptyId')
optyi.setOperator('=')
optyi.setValue(OptyId)
optyc.insertRow(optyr)
optys.appendViewCriteria(optyc)
optys.executeQuery()
while(optys.hasNext()){
opty=optys.next()
}
}
def promocionDescuento=DescuentoMasivoDin_Obj_c
def codigoPromocion=promocionDescuento.RecordName
opty.ConsultarDetallePromocion(codigoPromocion)
setAttribute('UltimaPromocionConsultada_c',codigoPromocion)
promocionDescuento.setAttribute('DetalleConsultado_c','Y')
}
}
}
controlRevenue(false)
secondaryEOSendToOSN(source)

Expression
def descuentoObj=DescuentoMasivoDin_Obj_c
if(descuentoObj){
def minCada=nvl(descuentoObj.IntervaloMinimoCada_c,0 as BigDecimal)
def minHasta=nvl(descuentoObj.IntervaloMinimoHasta_c,0 as BigDecimal)
def maxCada=nvl(descuentoObj.IntervaloMaximoCada_c,0 as BigDecimal)
def maxHasta=nvl(descuentoObj.IntervaloMaximoHasta_c,0 as BigDecimal)
def msg=''
def cada=nvl(IntervaloCadaNum_c,0 as BigDecimal)
def hasta=nvl(IntervaloHastaNum_c,0 as BigDecimal)

def cadaOk=minCada<=cada && cada <= maxCada


def hastaOk= minHasta<=hasta && hasta <= maxHasta
if(cadaOk&& hastaOk){
return true
}
else{
if(!cadaOk){
msg='El valor del campo Aplicar decuento cada X Meses debe estar comprendido entre ' + minCada + ' y ' + maxCada+'. '
}
if(!hastaOk){
msg+='El valor del campo Durante x Periodos debe estar comprendido entre ' + minHasta + ' y ' + maxHasta+'. '
}
throw new oracle.jbo.ValidationException(msg)
}
}
else{
return true
}

return true
adf.source.isLookupIdValid('Bucket_Id_c',newValue)

adf.source.isLookupIdValid('CodigoPostal_Id_c',newValue)

adf.source.isLookupIdValid('DescuentoMasivoDin_Id_c',newValue)

adf.source.isLookupIdValid('DescuentoDin_Id_c',newValue)

adf.source.isLookupIdValid('Detalle_Id_c',newValue)

adf.source.isLookupIdValid('Diferir_Id_c',newValue)

Expression
StatusCode=='OPEN'

def a
/*if(OptyId!=null){
def promDescs=newView('PromocionDescuento_c')
def promDescc=newViewCriteria(promDescs)
def promDescr=promDescc.createRow()
def promDesci=promDescr.ensureCriteriaItem('Oportunidad_Id_c')
promDesci.setOperator('=')
promDesci.setValue(OptyId)
promDescc.insertRow(promDescr)
promDescs.appendViewCriteria(promDescc)
promDescs.executeQuery()
def promEditable='N'
def detEditable='N'
def difEditable='N'
def descEditable='N'
def promDescId
def detId
def difId
def descId
def promDescCount=0
def curPromDesc
while(promDescs.hasNext()&&promDescCount <=1){
def promDesc=promDescs.next()
if(promDescId==null){
promDescId=promDesc.Id
curPromDesc=promDesc
detEditable=nvl(promDesc.DetalleEditable_c,'N')
difEditable=nvl(promDesc.DiferirEditable_c,'N')
descEditable=nvl(promDesc.DescuentoEditable_c,'N')
detId=promDesc.Detalle_Id_c
difId=promDesc.Diferir_Id_c
descId=promDesc.Descuento_Id_c
}
promDescCount+=1
}
if(promDescCount>1){
promEditable='Y'
}
setAttribute('DescuentoMasivoDin_Id_c',promDescId)
setAttribute('PromocionEditable_c',promEditable)
setAttribute('Detalle_Id_c',detId)
setAttribute('Diferir_Id_c',difId)
setAttribute('DescuentoDin_Id_c',descId)
setAttribute('DetalleEditable_c',detEditable)
setAttribute('DiferirEditable_c',difEditable)
setAttribute('DescuentoEditable_c',descEditable)
}*/
def totalEquipos=0
def totalPromociones=0
def totalInstalacion=0
def totalServicios=0
def mensualEquipos=0
def mensualPromociones=0
def mensualInstalacion=0
def mensualServicios=0
def promServs=newView('PromocionesYServicios_c')
def promServc=newViewCriteria(promServs)
def promServr=promServc.createRow()
def promServi=promServr.ensureCriteriaItem('Oportunidad_Id_c')
promServi.setOperator('=')
promServi.setValue(OptyId)
def promServj=promServr.ensureCriteriaItem('Seleccionar_c')
promServj.setOperator('=')
promServj.setValue('Y')
promServc.insertRow(promServr)
promServs.appendViewCriteria(promServc)
promServs.executeQuery()
def map=[:]
def promList=[]
while(promServs.hasNext()){
def promServ=promServs.next()
def promMap=[:]
def subtipo=promServ.Subtipo_c
// promServ.calcularPromocion()
def montoTotal=promServ.ValorTotal_c
def montoMensual=promServ.ValorMensual_c
if(subtipo=='Instalacion'){
totalInstalacion+=montoTotal
mensualInstalacion+=montoMensual
}
else if(subtipo=='Equipo'){
totalEquipos+=montoTotal
mensualEquipos+=montoMensual
}
else if(subtipo=='Servicio Adicional'){
totalServicios+=montoTotal
mensualServicios+=montoMensual
}
else if(subtipo=='Promocion'){
totalPromociones+=montoTotal
mensualPromociones+=montoMensual
}
promMap.put('subtipo',subtipo)
promMap.put('montoMensual',montoMensual)
promMap.put('montoTotal',montoTotal)
promMap.put('Desc',promServ.Descripcion_c)
promList.add(promMap)
}
//throw new oracle.jbo.ValidationException('promList:'+ promList)
totalEquipos=(totalEquipos as BigDecimal).setScale(2,BigDecimal.ROUND_HALF_UP)
totalPromociones=(totalPromociones as BigDecimal).setScale(2,BigDecimal.ROUND_HALF_UP)
totalInstalacion=(totalInstalacion as BigDecimal).setScale(2,BigDecimal.ROUND_HALF_UP)
totalServicios=(totalServicios as BigDecimal).setScale(2,BigDecimal.ROUND_HALF_UP)
setAttribute('TotalDeEquipos_c',totalEquipos)
setAttribute('TotalPromociones_c',totalPromociones)
setAttribute('TotalServiciosAdicionales_c',totalServicios)
setAttribute('ValorDeInstalacion_c',totalInstalacion)

setAttribute('EquiposMensual_c',mensualEquipos)
setAttribute('PromocionesMensual_c',mensualPromociones)
setAttribute('ServiciosAdicionalesMensual_c',mensualServicios)
setAttribute('InstalacionMensual_c',mensualInstalacion)

def costoPlan= nvl(CostoDelPlan_c, 0 as BigDecimal)


def descuento=nvl(PorcentajeDescuentoPromocion_c, 0 as BigDecimal)
def montoDescuento=(costoPlan*descuento/100.0).setScale(2,BigDecimal.ROUND_HALF_UP)
def planConDescuento=(costoPlan-montoDescuento).setScale(2,BigDecimal.ROUND_HALF_UP)
def mesesDiferir=nvl(DescripcionDiferir_c,'')
def numMesesDiferir=1
if(mesesDiferir.isInteger()){
numMesesDiferir=mesesDiferir.toInteger()
if(numMesesDiferir==0){
numMesesDiferir=1
}
}

def montoMensual=((planConDescuento as BigDecimal)/ (numMesesDiferir)).setScale(2,BigDecimal.ROUND_HALF_UP)


setAttribute('PlanMensual_c',montoMensual)
setAttribute('Descuento_c',montoDescuento)
setAttribute('TotalDelPlan_c',planConDescuento)
return planConDescuento as Double
def opty=Opportunity
def optyId=nvl(OptyId, 0 as Long)
if(optyId!=0){
if(nvl(opty?.OptyId, 0 as Long)==0){
def optys=newView('OpportunityVO')
def optyc=newViewCriteria(optys)
def optyr=optyc.createRow()
def optyi=optyr.ensureCriteriaItem('OptyId')
optyi.setOperator('=')
optyi.setValue(OptyId)
optyc.insertRow(optyr)
optys.appendViewCriteria(optyc)
optys.executeQuery()
while(optys.hasNext()){
opty=optys.next()
}
}
}

if(opty!=null && !opty?.getPrimaryRowState().isNew()){


setAttribute('StatusCode',opty.StatusCode)
setAttribute('AreaComercial_c',opty.AreaComercial_c)
def moc=nvl(AreaComercial_c,'')
def cambioCantidad=isAttributeChanged('Quantity')
def cambioPrecioEstimado=isAttributeChanged('UnitPrice')
def cambioPrecioMensual=isAttributeChanged('PrecioMensual_c')
def newRow=getPrimaryRowState().isNew()
def cantidad=nvl(Quantity,0 as BigDecimal)
def precioEstimado=nvl(UnitPrice,0 as BigDecimal)
def precioMensual=nvl(PrecioMensual_c,0 as BigDecimal)
def cambioProducto=(isAttributeChanged('InventoryItemId'))
def com=nvl(AreaComercial_c,'')
if(com=='CORPORATIVO'){
if(getPrimaryRowState().isNew() || isAttributeChanged('ProductType')){
if(ProductType!='Group'){
// throw new oracle.jbo.ValidationException('Es necesario seleccionar una categoría de productos');
}
}
if((newRow||cambioCantidad||cambioPrecioEstimado||isAttributeChanged('Descuento_c')||isAttributeChanged('ValorDeIns
isAttributeChanged('UnitPrice') || cambioPrecioMensual)&&
def numeroDeEnlaces=nvl(NumeroDeEnlaces_c,0 ProductoDefinitvo_c!='Y' ){
as BigDecimal)
def descuento=nvl(Descuento_c,0 as BigDecimal)
def valorInstalacion=nvl(ValorDeInstalacion_c, 0 as BigDecimal)
def total=(precioMensual).setScale(2,BigDecimal.ROUND_HALF_UP)
setAttribute('Quantity', 1)
setAttribute('UnitPrice',total)
setAttribute('RevnAmount',total)
}
}
if(com=='MASIVO'){
def cambioPromo=isAttributeChanged('DescuentoMasivoDin_Id_c')
def cambioDetalle=isAttributeChanged('Detalle_Id_c')
def cambioDiferir=isAttributeChanged('Diferir_Id_c')
def cambioDescuento=isAttributeChanged('DescuentoDin_Id_c')
def promoId=nvl(DescuentoMasivoDin_Id_c,0 as BigDecimal)
def detalleId=nvl(Detalle_Id_c,0 as BigDecimal)
def diferirId=nvl(Diferir_Id_c,0 as BigDecimal)
def descuentoId=nvl(DescuentoDin_Id_c,0 as BigDecimal)
def promo=DescuentoMasivoDin_Obj_c
def detalle=Detalle_Obj_c
def diferir=Diferir_Obj_c
def descuento=DescuentoDin_Obj_c
if(newRow||cambioPromo|| cambioDetalle|| cambioDiferir || cambioDescuento || getPromociones){
if(cambioPromo){
if(promoId==0){
setAttribute('Detalle_Id_c',null)
setAttribute('Diferir_Id_c',null)
setAttribute('DescuentoDin_Id_c',null)
setAttribute('IntervaloCadaMinimo_c',0)
setAttribute('IntervaloCadaMaximo_c',0)
setAttribute('IntervaloHastaMinimo_c',0)
setAttribute('IntervaloHastaMaximo_c',0)
setAttribute('IntervaloHastaNum_c',0)
setAttribute('IntervaloCadaNum_c',0)
setAttribute('IntervaloHastaEditable_c','N')
setAttribute('IntervaloCadaEditable_c','N')
cambioDetalle=true
cambioDiferir=true
cambioDescuento=true
}
else{
if(detalle!=null){
if(nvl(detalle?.PromocionDescuento_Id_c,0 as BigDecimal)!=promoId){
//setAttribute('Detalle_Id_c',promo.Detalle_Id_c)
cambioDetalle=true
}
}
def detalleEditable=nvl(promo.DetalleEditable_c,'N')
def diferirEditable=nvl(promo.DiferirEditable_c,'N')
def descuentoEditable=nvl(promo.DescuentoEditable_c,'N')
setAttribute('DetalleEditable_c',detalleEditable)
setAttribute('DiferirEditable_c',diferirEditable)
setAttribute('DescuentoEditable_c',descuentoEditable)
setAttribute('IntervaloCadaMinimo_c',nvl(promo.IntervaloMinimoCada_c,0 as BigDecimal))
setAttribute('IntervaloCadaMaximo_c',nvl(promo.IntervaloMaximoCada_c,0 as BigDecimal))
setAttribute('IntervaloHastaMinimo_c',nvl(promo.IntervaloMinimoHasta_c,0 as BigDecimal))
setAttribute('IntervaloHastaMaximo_c',nvl(promo.IntervaloMaximoHasta_c,0 as BigDecimal))
setAttribute('IntervaloHastaNum_c',nvl(promo.IntervaloHastaNum_c,0 as BigDecimal))
setAttribute('IntervaloCadaNum_c',nvl(promo.IntervaloCadaNum_c,0 as BigDecimal))
setAttribute('IntervaloHastaEditable_c',nvl(promo.IntervaloHastaEditableX_c,'N'))
setAttribute('IntervaloCadaEditable_c',nvl(promo.IntervaloCadaEditableX_c,'N'))
}
}
if(cambioDetalle){
if(detalleId==0){
setAttribute('Diferir_Id_c',null)
setAttribute('DescuentoDin_Id_c',null)
cambioDiferir=true
cambioDescuento=true
}
else{
if(nvl(diferir?.Detalle_Id_c,0 as BigDecimal)!=detalleId){
//setAttribute('Diferir_Id_c',promo.Diferir_Id_c)
cambioDiferir=true
}
}
}
if(cambioDiferir){
if(diferirId==0){
setAttribute('DescuentoDin_Id_c',null)
cambioDescuento=true
}
else{
if(nvl(descuento?.Diferir_Id_c,0 as BigDecimal)!=diferirId){
// setAttribute('DescuentoDin_Id_c',promo.Descuento_Id_c)
cambioDescuento=true
}
}
}
if(cambioDescuento){
if(DescuentoDin_Id_c!=null){
setAttribute('PorcentajeDescuentoPromocion_c',nvl(DescuentoDin_Obj_c?.Porcentaje_c, 0 as BigDecimal))
}
else{
setAttribute('PorcentajeDescuentoPromocion_c',0)
}
}
getServiciosAdicionales()
def totalPlan=calcularPlan()
totalPlan=CostoDelPlan_c
def planMensual= nvl(PlanMensual_c,0 as BigDecimal)
def totalServicios=nvl(TotalServiciosAdicionales_c,0 as BigDecimal)
def totalInstalacion=nvl(ValorDeInstalacion_c,0 as BigDecimal)
def totalPromociones=nvl(TotalPromociones_c,0 as BigDecimal)
def totalEquipos=nvl(TotalDeEquipos_c,0 as BigDecimal)
def mensualServicios=nvl(ServiciosAdicionalesMensual_c,0 as BigDecimal)
def mensualInstalacion=nvl(InstalacionMensual_c,0 as BigDecimal)
def mensualPromociones=nvl(PromocionesMensual_c,0 as BigDecimal)
def mensualEquipos=nvl(EquiposMensual_c,0 as BigDecimal)
def totalTotal=((totalPlan+totalServicios+totalInstalacion+totalPromociones+totalEquipos) as
BigDecimal).setScale(2,BigDecimal.ROUND_HALF_UP)
def totalPrimeraFactura=((planMensual+mensualServicios+mensualInstalacion+mensualPromociones+mensualEquipos
BigDecimal).setScale(2,BigDecimal.ROUND_HALF_UP)
setAttribute('TotalPrimeraFactura_c',totalPrimeraFactura)
setAttribute('Quantity',1)
setAttribute('UnitPrice',totalPlan)
setAttribute('RevnAmount',totalPlan)
setAttribute('ValorTotalDeContrato_c',totalTotal)
}
}
opty.importarRevenue()
}
if(DescuentoMasivoDin_Obj_c){
def descuento=DescuentoMasivoDin_Obj_c
def codigo=descuento.RecordName
return codigo==UltimaPromocionConsultada_c || descuento.DetalleConsultado_c=='Y'
}
return false
Precision MaxLength Expression
12 12
10 10
10 10
10 10
0 0 nvl(Description,'')
18 18
10 10
10 10
8 8
1500 1500
16 16
12 12
10 10
10 10
1500 1500
1500 1500
1500 1500
10 10
10 10
1500 1500
10 10
10 10
12 12
10 10
18 18
18 18
12 12
12 12
10 10
16 16
12 12
12 12
10 10
18 18
12 12
10 10
10 10
1500 1500
200 200
16 16
18 18
18 18
10 10
10 10
10 10
12 12
10 10
10 10
80 80
1500 1500
0 0 Opportunity?.Asset?.Estado_c
10 10
10 10
10 10
15 15
10 10
12 12
10 10
10 10
o directamente por la integración.')

otización.')

CORPORATIVO'){

esDescuento_c=='Y'
nCada + ' y ' + maxCada+'. '

y ' + maxHasta+'. '


ALF_UP)
_UP)
LF_UP)
HALF_UP)

2,BigDecimal.ROUND_HALF_UP)
a de productos');

o_c')||isAttributeChanged('ValorDeInstalacion_c')||
{

Promociones){
gDecimal))
gDecimal))
gDecimal))
BigDecimal))
imal))
mal))
ntaje_c, 0 as BigDecimal))

Equipos) as
ensualPromociones+mensualEquipos) as
Y'
Object Name : ServicioNetplus_c
Object Name ServicioNetplus_c
Object Display Name Plural Servicios Netplus
Object Type Custom
Application Name CRM
Table Name MKT_REF_ENTITIES
Total number of custom fields
Total number of modified Standard fields
Total number of Triggers
Total number of Object Functions
Total number of Object Workflows
Total number of Validations
Total number of Dynamic Layouts

Custom Fields
Name Display Name Type Column Name
RecordName Código de Servicio OOTB RECORD_NAME
CreationDate Fecha de Creación OOTB CREATION_DATE
CurrencyCode Currency Code FCL CURRENCY_CODE
LastUpdatedBy Actualizado por OOTB LAST_UPDATED_BY
CreatedBy Creado por OOTB CREATED_BY
OraZcxOwner_c Owner DCL

Oportunidad_Id_c Oportunidad DCLForeignKey EXTN_ATTRIBUTE_NUMBER001


Descripcion_c Descripción Text EXTN_ATTRIBUTE_CHAR007
Oportunidad_c Oportunidad DCL

OraZcxOwner_Id_c Owner DCLForeignKey OWNER_RESOURCE_ID


TodosLosServicios_c Todos los Servicios Checkbox EXTN_ATTRIBUTE_CHAR008
Id Identificador de Registro OOTB ID
RecordNumber Record Number OOTB RECORD_NUMBER
LastUpdateDate Fecha de Última Actualización OOTB LAST_UPDATE_DATE

Validations
Name Type Error Message
Rule1 Field Validation
Field Name : OraZcxOwner_Id_c
Rule1 Field Validation
Field Name : Oportunidad_Id_c

Object Workflows
Name Definition Name Event Point Description
ServicioNetplus_c_Standard Update
_Update
ServicioNetplus_c_Standard Create
_Create
ServicioNetplus_c_Standard Delete
_Delete
ServicioNetplus_c
Servicios Netplus
Custom
CRM
MKT_REF_ENTITIES
14
0
0
0
3
2
0

umn Name Default Value Required Updatable Searchable REST Enabl


ORD_NAME Yes Yes Yes Yes
ATION_DATE Yes No Yes Yes
RENCY_CODE No Yes Yes Yes
T_UPDATED_BY Yes Yes Yes Yes
ATED_BY Yes No Yes Yes
Yes Yes No Yes
N_ATTRIBUTE_NUMBER001 Yes Yes Yes Yes
N_ATTRIBUTE_CHAR007 Yes Yes Yes Yes
Yes Yes No Yes
NER_RESOURCE_ID Yes Yes Yes Yes
N_ATTRIBUTE_CHAR008 N Yes Yes Yes Yes
Yes No Yes Yes
ORD_NUMBER Yes No Yes Yes
T_UPDATE_DATE Yes Yes Yes Yes

Expression
adf.source.isLookupIdValid('OraZcxOwner_Id_c',newValue)

adf.source.isLookupIdValid('Oportunidad_Id_c',newValue)

ption Disabled Actions Expression


No return
(oracle.apps.fnd.applcore.Profile.ge
No return
(oracle.apps.fnd.applcore.Profile.ge
No return
(oracle.apps.fnd.applcore.Profile.ge
Precision MaxLength Expression
80 80
0 0
15 15
64 64
64 64
1500 1500
18 18
160 160
1500 1500
18 18
10 10
32 32
64 64
0 0

ression
rn
cle.apps.fnd.applcore.Profile.get('ZCX_CUSTOM_OBJECT_EVENTS') ==
rn
cle.apps.fnd.applcore.Profile.get('ZCX_CUSTOM_OBJECT_EVENTS') ==
rn
cle.apps.fnd.applcore.Profile.get('ZCX_CUSTOM_OBJECT_EVENTS') ==
Object Name : ServiciosAdquiridos_c
Object Name ServiciosAdquiridos_c
Object Display Name Plural Servicios Adquiridos
Object Type Custom
Application Name CRM
Table Name SVC_REF_ENTITIES
Total number of custom fields
Total number of modified Standard fields
Total number of Triggers
Total number of Object Functions
Total number of Object Workflows
Total number of Validations
Total number of Dynamic Layouts

Custom Fields
Name Display Name Type Column Name
RecordName Servicios Name OOTB RECORD_NAME
CreationDate Fecha de Creación OOTB CREATION_DATE
CodigoDeServicioPromocion_c Código de Servicio Adicional o Pr Text EXTN_ATTRIBUTE_CHAR007
DetallePromocion_c Detalle (Promoción) Text EXTN_ATTRIBUTE_CHAR014
IdDetalleAsset_c Id Detalle Asset DCL

CurrencyCode Currency Code FCL CURRENCY_CODE


CantidadEnMesesServicio_c Cantidad en meses (Servicio) Text EXTN_ATTRIBUTE_CHAR012
LastUpdatedBy Actualizado por OOTB LAST_UPDATED_BY
CreatedBy Creado por OOTB CREATED_BY
Desgrupo_c Desgrupo Text EXTN_ATTRIBUTE_CHAR008
OraZcxOwner_c Owner DCL

ValorTotal_c Valor Total Number EXTN_ATTRIBUTE_NUMBER007


Descripcion_c Descripción Text EXTN_ATTRIBUTE_CHAR009
OraZcxOwner_Id_c Owner DCLForeignKey OWNER_RESOURCE_ID
Id Identificador de Registro OOTB ID
RecordNumber Record Number OOTB RECORD_NUMBER
DescripcionDescuento_c Descripción % descuento Text EXTN_ATTRIBUTE_CHAR010
ServicioPromocion_c Servicio o Promoción FCL EXTN_ATTRIBUTE_CHAR020
ValorUnitario_c Valor Unitario Number EXTN_ATTRIBUTE_NUMBER006
FinPromocion_c Fin promoción (hasta) (Promoción)Date EXTN_ATTRIBUTE_TIMESTAMP002
CantidadServicio_c Cantidad (Servicio) Text EXTN_ATTRIBUTE_CHAR011
InicioPromocion_c Inicio promoción (desde) (PromociDate EXTN_ATTRIBUTE_TIMESTAMP001
LastUpdateDate Fecha de Última Actualización OOTB LAST_UPDATE_DATE
Estado_c Estado Text EXTN_ATTRIBUTE_CHAR013
IdDetalleAsset_Id_c Id Detalle Asset DCLForeignKey EXTN_ATTRIBUTE_NUMBER001
Validations
Name Type Error Message
Rule1 Field Validation
Field Name : OraZcxOwner_Id_c
Rule1 Field Validation
Field Name : IdDetalleAsset_Id_c

Object Workflows
Name Definition Name Event Point Description
ServiciosAdquiridos_c_Stan Update
dard_Update
ServiciosAdquiridos_c_Stan Create
dard_Create
ServiciosAdquiridos_c_Stan Delete
dard_Delete

Dynamic Layouts
Layout Name Active Role
Layout Yes
ServiciosAdquiridos_c
Servicios Adquiridos
Custom
CRM
SVC_REF_ENTITIES
25
0
0
0
3
2
1

umn Name Default Value Required Updatable Searchable REST Enabl


ORD_NAME Yes Yes Yes Yes
ATION_DATE Yes No Yes Yes
N_ATTRIBUTE_CHAR007 No Yes No Yes
N_ATTRIBUTE_CHAR014 No Yes No Yes
No Yes No Yes
RENCY_CODE No Yes Yes Yes
N_ATTRIBUTE_CHAR012 No Yes No Yes
T_UPDATED_BY Yes Yes Yes Yes
ATED_BY Yes No Yes Yes
N_ATTRIBUTE_CHAR008 No Yes No Yes
Yes Yes No Yes
N_ATTRIBUTE_NUMBER007 No Yes No Yes
N_ATTRIBUTE_CHAR009 No Yes No Yes
NER_RESOURCE_ID Yes Yes Yes Yes
Yes No Yes Yes
ORD_NUMBER Yes No Yes Yes
N_ATTRIBUTE_CHAR010 No Yes No Yes
N_ATTRIBUTE_CHAR020 No Yes No Yes
N_ATTRIBUTE_NUMBER006 No Yes No Yes
N_ATTRIBUTE_TIMESTAMP002 No Yes No Yes
N_ATTRIBUTE_CHAR011 No Yes No Yes
N_ATTRIBUTE_TIMESTAMP001 No Yes No Yes
T_UPDATE_DATE Yes Yes Yes Yes
N_ATTRIBUTE_CHAR013 No Yes No Yes
N_ATTRIBUTE_NUMBER001 No Yes Yes Yes
Expression
adf.source.isLookupIdValid('OraZcxOwner_Id_c',newValue)

adf.source.isLookupIdValid('IdDetalleAsset_Id_c',newValue)

ption Disabled Actions Expression


No return
(oracle.apps.fnd.applcore.Profile.ge
No return
(oracle.apps.fnd.applcore.Profile.ge
No return
(oracle.apps.fnd.applcore.Profile.ge

Record Type Advanced Expression


Precision MaxLength Expression
80 80
0 0
80 80
80 80
1500 1500
15 15
80 80
64 64
64 64
80 80
1500 1500
10 10
80 80
18 18
32 32
64 64
80 80
1500 1500
10 10
0 0
80 80
0 0
0 0
80 80
18 18
ression
rn
cle.apps.fnd.applcore.Profile.get('ZCX_CUSTOM_OBJECT_EVENTS') ==
rn
cle.apps.fnd.applcore.Profile.get('ZCX_CUSTOM_OBJECT_EVENTS') ==
rn
cle.apps.fnd.applcore.Profile.get('ZCX_CUSTOM_OBJECT_EVENTS') ==
Object Name : Splitter_c
Object Name Splitter_c
Object Display Name Plural Splitters
Object Type Custom
Application Name CRM
Table Name SVC_REF_ENTITIES
Total number of custom fields
Total number of modified Standard fields
Total number of Triggers
Total number of Object Functions
Total number of Object Workflows
Total number of Validations
Total number of Dynamic Layouts

Custom Fields
Name Display Name Type Column Name
RecordName Código OOTB RECORD_NAME
CreationDate Fecha de Creación OOTB CREATION_DATE
OLT_c OLT DCL

OLT_Id_c OLT DCLForeignKey EXTN_ATTRIBUTE_NUMBER002


CurrencyCode Currency Code FCL CURRENCY_CODE
LastUpdatedBy Actualizado por OOTB LAST_UPDATED_BY
CreatedBy Creado por OOTB CREATED_BY
OraZcxOwner_c Owner DCL

Oportunidad_Id_c Oportunidad DCLForeignKey EXTN_ATTRIBUTE_NUMBER001


Descripcion_c Descripción Text EXTN_ATTRIBUTE_CHAR007
Oportunidad_c Oportunidad DCL

Activo_c Activo Checkbox EXTN_ATTRIBUTE_CHAR008


OraZcxOwner_Id_c Owner DCLForeignKey OWNER_RESOURCE_ID
Id Identificador de Registro OOTB ID
RecordNumber Record Number OOTB RECORD_NUMBER
LastUpdateDate Fecha de Última Actualización OOTB LAST_UPDATE_DATE

Validations
Name Type Error Message
Rule1 Field Validation
Field Name : OraZcxOwner_Id_c
Rule1 Field Validation
Field Name : Oportunidad_Id_c
Rule1 Field Validation
Field Name : OLT_Id_c
Object Workflows
Name Definition Name Event Point Description
Splitter_c_Standard_Create Create

Splitter_c_Standard_Delete Delete

Splitter_c_Standard_Update Update
Splitter_c
Splitters
Custom
CRM
SVC_REF_ENTITIES
16
0
0
0
3
3
0

umn Name Default Value Required Updatable Searchable REST Enabl


ORD_NAME Yes Yes Yes Yes
ATION_DATE Yes No Yes Yes
Yes Yes No Yes
N_ATTRIBUTE_NUMBER002 Yes Yes Yes Yes
RENCY_CODE No Yes Yes Yes
T_UPDATED_BY Yes Yes Yes Yes
ATED_BY Yes No Yes Yes
Yes Yes No Yes
N_ATTRIBUTE_NUMBER001 Yes Yes Yes Yes
N_ATTRIBUTE_CHAR007 Yes Yes Yes Yes
Yes Yes No Yes
N_ATTRIBUTE_CHAR008 N Yes Yes Yes Yes
NER_RESOURCE_ID Yes Yes Yes Yes
Yes No Yes Yes
ORD_NUMBER Yes No Yes Yes
T_UPDATE_DATE Yes Yes Yes Yes

Expression
adf.source.isLookupIdValid('OraZcxOwner_Id_c',newValue)

adf.source.isLookupIdValid('Oportunidad_Id_c',newValue)

adf.source.isLookupIdValid('OLT_Id_c',newValue)
ption Disabled Actions Expression
No return
(oracle.apps.fnd.applcore.Profile.ge
No return
(oracle.apps.fnd.applcore.Profile.ge
No return
(oracle.apps.fnd.applcore.Profile.ge
Precision MaxLength Expression
80 80
0 0
1500 1500
18 18
15 15
64 64
64 64
1500 1500
18 18
200 200
1500 1500
10 10
18 18
32 32
64 64
0 0
ression
rn
cle.apps.fnd.applcore.Profile.get('ZCX_CUSTOM_OBJECT_EVENTS') ==
rn
cle.apps.fnd.applcore.Profile.get('ZCX_CUSTOM_OBJECT_EVENTS') ==
rn
cle.apps.fnd.applcore.Profile.get('ZCX_CUSTOM_OBJECT_EVENTS') ==
Object Name : Subestado_c
Object Name Subestado_c
Object Display Name Plural Eventos y Campañas
Object Type Custom
Application Name CRM
Table Name MOT_REF_ENTITIES
Total number of custom fields
Total number of modified Standard fields
Total number of Triggers
Total number of Object Functions
Total number of Object Workflows
Total number of Validations
Total number of Dynamic Layouts

Custom Fields
Name Display Name Type Column Name
RecordName Nombre OOTB RECORD_NAME
CreationDate Fecha de Creación OOTB CREATION_DATE
Corporativo_c Corporativo Checkbox EXTN_ATTRIBUTE_CHAR008
CurrencyCode Currency Code FCL CURRENCY_CODE
Masivo_c Masivo Checkbox EXTN_ATTRIBUTE_CHAR007
LastUpdatedBy Actualizado por OOTB LAST_UPDATED_BY
CreatedBy Creado por OOTB CREATED_BY
OraZcxOwner_c Owner DCL

IdFormula_c Id para Plantilla de Carga Text Formula

Activo_c Activo Checkbox EXTN_ATTRIBUTE_CHAR009


OraZcxOwner_Id_c Owner DCLForeignKey OWNER_RESOURCE_ID
Id Identificador de Registro OOTB ID
RecordNumber Record Number OOTB RECORD_NUMBER
LastUpdateDate Fecha de Última Actualización OOTB LAST_UPDATE_DATE

Validations
Name Type Error Message
Rule1 Field Validation
Field Name : OraZcxOwner_Id_c

Object Workflows
Name Definition Name Event Point Description
Subestado_c_Standard_Crea Create
te
Subestado_c_Standard_Upd Update
ate
Subestado_c_Standard_Dele Delete
te

Dynamic Layouts
Layout Name Active Role
Administrador Yes ADMIN_GENERAL_PNT;
Subestado_c
Eventos y Campañas
Custom
CRM
MOT_REF_ENTITIES
14
0
0
0
3
1
1

umn Name Default Value Required Updatable Searchable REST Enabl


ORD_NAME Yes Yes Yes Yes
ATION_DATE Yes No Yes Yes
N_ATTRIBUTE_CHAR008 N Yes Yes Yes Yes
RENCY_CODE No Yes Yes Yes
N_ATTRIBUTE_CHAR007 N Yes Yes Yes Yes
T_UPDATED_BY Yes Yes Yes Yes
ATED_BY Yes No Yes Yes
Yes Yes No Yes
No No No Yes
N_ATTRIBUTE_CHAR009 Y Yes Yes Yes Yes
NER_RESOURCE_ID Yes Yes Yes Yes
Yes No Yes Yes
ORD_NUMBER Yes No Yes Yes
T_UPDATE_DATE Yes Yes Yes Yes

Expression
adf.source.isLookupIdValid('OraZcxOwner_Id_c',newValue)

ption Disabled Actions Expression


No return
(oracle.apps.fnd.applcore.Profile.ge
No return
(oracle.apps.fnd.applcore.Profile.ge
No return
(oracle.apps.fnd.applcore.Profile.ge

Record Type Advanced Expression


Precision MaxLength Expression
80 80
0 0
10 10
15 15
10 10
64 64
64 64
1500 1500
0 0 ''+Id
10 10
18 18
32 32
64 64
0 0

ression
rn
cle.apps.fnd.applcore.Profile.get('ZCX_CUSTOM_OBJECT_EVENTS') ==
rn
cle.apps.fnd.applcore.Profile.get('ZCX_CUSTOM_OBJECT_EVENTS') ==
rn
cle.apps.fnd.applcore.Profile.get('ZCX_CUSTOM_OBJECT_EVENTS') ==
Object Name : Temporalidad_c
Object Name Temporalidad_c
Object Display Name Plural Temporalidad
Object Description carriedStartTime, carriedRecor
Object Type Custom
Application Name CRM
Table Name MKT_REF_ENTITIES
Total number of custom fields
Total number of modified Standard fields
Total number of Triggers
Total number of Object Functions
Total number of Object Workflows
Total number of Validations
Total number of Dynamic Layouts

Custom Fields
Name Display Name Type Column Name
RecordName Temporalidad OOTB RECORD_NAME
CreationDate Fecha de Creación OOTB CREATION_DATE
MontoPremium_c Monto Premium Currency EXTN_ATTRIBUTE_NUMBER018
DiasLead_c Días Lead Number EXTN_ATTRIBUTE_NUMBER015
CurrencyCode Currency Code FCL CURRENCY_CODE
LastUpdatedBy Actualizado por OOTB LAST_UPDATED_BY
DiasOportunidadMontoCero_c Días Oportunidad Monto Cero Number EXTN_ATTRIBUTE_NUMBER016
CreatedBy Creado por OOTB CREATED_BY
OraZcxOwner_c Owner DCL

AreaComercial_c Área Comercial FCL EXTN_ATTRIBUTE_CHAR008


DiasContacto_c Días Contacto Number EXTN_ATTRIBUTE_NUMBER008
OraZcxOwner_Id_c Owner DCLForeignKey OWNER_RESOURCE_ID
DiasOportunidadPremiumProyecto Días oportunidad Premium ProyecNumber EXTN_ATTRIBUTE_NUMBER024
DiasMontoCeroProyecto_c Días Monto Cero Proyecto Number EXTN_ATTRIBUTE_NUMBER022
DiasCuenta_c Días Cuenta Number EXTN_ATTRIBUTE_NUMBER014
Id Identificador de Registro OOTB ID
UltimaFechaCorregida_c Ultima Fecha Corregida Contacto Datetime EXTN_ATTRIBUTE_TIMESTAMP001
DiasClienteSinContratos_c Días cliente sin contratos Number EXTN_ATTRIBUTE_NUMBER025
RecordNumber Record Number OOTB RECORD_NUMBER
CorrerTemporalidad_c Correr Temporalidad Number EXTN_ATTRIBUTE_NUMBER006
DiasOportunidadPremium_c Días Oportunidad Premium Text EXTN_ATTRIBUTE_CHAR007
Dias_c Dias Number EXTN_ATTRIBUTE_NUMBER007
ContabilizarOperacionesAbiertas_cContabilizar operaciones abiertas FCL EXTN_ATTRIBUTE_CHAR011
DiasOportunidadEstandar_c Días Oportunidad Estándar Number EXTN_ATTRIBUTE_NUMBER017
EjecutarTemporalidadPara_c Ejecutar Temporalidad Para FCL EXTN_ATTRIBUTE_CHAR010
UltimaFechaCorregidaCuenta_c Ultima Fecha Corregida Cuenta Datetime EXTN_ATTRIBUTE_TIMESTAMP002
MaxRecords_c Registros Máximos Number EXTN_ATTRIBUTE_NUMBER020
DiasOportunidadEstandarProyecto Días Oportunidad Estándar ProyecNumber EXTN_ATTRIBUTE_NUMBER023
MaxTime_c Tiempo Máximo (ms) Number EXTN_ATTRIBUTE_NUMBER021
CorrerTemporalidadList_c Correr Temporalidad FCL EXTN_ATTRIBUTE_CHAR009
LastUpdateDate Fecha de Última Actualización OOTB LAST_UPDATE_DATE

Triggers
Name Type Trigger PointDescription Error Message
correrTemporalidad Object Trigger BeforeUpdate
Validations
Name Type Error Message
Rule1 Field Validation
Field Name : OraZcxOwner_Id_c

Object Functions
Name Parameters Return Type Privileged Visibility Description
Temporalida carriedStartTime- Map No Callable by
dOportunida Long,carriedRecor External
d ds-Long Systems
Temporalida carriedStartTime- Map No Default carriedStartTime,
dLead Long,carriedRecor carriedRecords
ds-Long
Temporalida carriedStartTime- Map No Callable by
dCuenta Long,carriedRecor External
ds-Long Systems
Temporalida carriedStartTime- Map No Callable by
dContacto Long,carriedRecor External
ds-Long Systems
correrTempo void No Callable by
ralidad External
Systems

contabilizar void No Default


Operaciones
AbiertasCon
tacto
contabilizar void No Default
Operaciones
AbiertasCue
nta
contabilizar void No Default
Operaciones
AbiertasCue
nta
contarOpera mapClientes-Map void No Default
cionesAbiert
as
correrTempo void No Callable by
ralidadComp External
leta Systems
essOperacio void No Callable by
nesContacto External
Systems

essOperacio void No Callable by


nesCuenta External
Systems

deshacerTe void No Default


mporalidad
Masivo
instalacionN void No Default
oConcretada
essInstalacio void No Default
nNoConcret
ada
essInstalacio void No Default
nNoConcret
ada

procesoProg void No Callable by


ramadoCont External
abilizarContr Systems
atos

Object Workflows
Name Definition Name Event Point Description
Temporalidad_c_Standard_ Update
Update
Temporalidad_c_Standard_ Delete
Delete
Temporalidad_c_Standard_ Delete
Delete
Temporalidad_c_Standard_C Create
reate
Temporalidad_c
Temporalidad
carriedStartTime, carriedRecords
Custom
CRM
MKT_REF_ENTITIES
31
0
1
15
3
1
0

umn Name Default Value Required Updatable Searchable REST Enabl


ORD_NAME Yes Yes Yes Yes
ATION_DATE Yes Yes Yes Yes
N_ATTRIBUTE_NUMBER018 No Yes No Yes
N_ATTRIBUTE_NUMBER015 No Yes No Yes
RENCY_CODE No Yes Yes Yes
T_UPDATED_BY Yes Yes Yes Yes
N_ATTRIBUTE_NUMBER016 No Yes No Yes
ATED_BY Yes Yes Yes Yes
Yes Yes No Yes
N_ATTRIBUTE_CHAR008 Yes Yes No Yes
N_ATTRIBUTE_NUMBER008 No Yes No Yes
NER_RESOURCE_ID Yes Yes Yes Yes
N_ATTRIBUTE_NUMBER024 No Yes No Yes
N_ATTRIBUTE_NUMBER022 No Yes No Yes
N_ATTRIBUTE_NUMBER014 No Yes No Yes
Yes No Yes Yes
N_ATTRIBUTE_TIMESTAMP001 No Yes No Yes
N_ATTRIBUTE_NUMBER025 No Yes No Yes
ORD_NUMBER Yes No Yes Yes
N_ATTRIBUTE_NUMBER006 No Yes No Yes
N_ATTRIBUTE_CHAR007 No Yes No Yes
N_ATTRIBUTE_NUMBER007 No Yes No Yes
N_ATTRIBUTE_CHAR011 No Yes No Yes
N_ATTRIBUTE_NUMBER017 No Yes No Yes
N_ATTRIBUTE_CHAR010 Yes Yes No Yes
N_ATTRIBUTE_TIMESTAMP002 No Yes No Yes
N_ATTRIBUTE_NUMBER020 No Yes No Yes
N_ATTRIBUTE_NUMBER023 No Yes No Yes
N_ATTRIBUTE_NUMBER021 No Yes No Yes
N_ATTRIBUTE_CHAR009 No Yes No Yes
T_UPDATE_DATE Yes Yes Yes Yes

Expression
def tipoTemporalidad=nvl(CorrerTemporalidadList_c,'')
def ejecutarTemporalidad=tipoTemporalidad!=''&&isAttributeChanged('CorrerTemporalidadList_c')
def startTime=now().time
def maxTime=45000 as Long
def nullDate= new java.sql.Date(1)

if(ejecutarTemporalidad){
setAttribute('CorrerTemporalidadList_c',null)
def outputMap=[:]
if(tipoTemporalidad=='CONTACTO'){
outputMap=TemporalidadContacto(startTime,0 as Long)
adf.util.reasignarListaClientes(outputMap['listaClientes'] as List)
}
else if(tipoTemporalidad=='CUENTA'){
outputMap=TemporalidadCuenta(startTime,0 as Long)
adf.util.reasignarListaClientes(outputMap['listaClientes'] as List)
}else if(tipoTemporalidad=='LEAD'){
outputMap=TemporalidadLead(startTime,0 as Long)
adf.util.reasignarListaClientes(outputMap['listaClientes'] as List)
}else if(tipoTemporalidad=='OPORTUNIDAD'){
outputMap=TemporalidadOportunidad(startTime,0 as Long)
adf.util.reasignarListaClientes(outputMap['listaClientes'] as List)
}
else if(tipoTemporalidad=='TODAS'){
correrTemporalidad()
}
}
else{
if(isAttributeChanged('ContabilizarOperacionesAbiertas_c')&&nvl(ContabilizarOperacionesAbiertas_c,'')!=''){
def tipo=nvl(ContabilizarOperacionesAbiertas_c,'')
// if(nvl(ContabilizarOperacionesAbiertas_c,'')!=''){
setAttribute('ContabilizarOperacionesAbiertas_c',null)
/* if(tipo=='PERSON'){
contabilizarOperacionesAbiertasContacto()
}
else if(tipo=='ORGANIZATION'){
contabilizarOperacionesAbiertasCuenta()
}
}*/
// deshacerTemporalidadMasivo()
}

Expression
adf.source.isLookupIdValid('OraZcxOwner_Id_c',newValue)

tion Expression
adf.util.loadResourceProfileIdMap()
//Temporalidad Oportunidad
def startTime=now().time
if(nvl(carriedStartTime,0 as Long)!=0){
startTime=carriedStartTime
}

def elapsedTime=now().time-startTime
def maxTime=nvl(MaxTime_c,0 as BigDecimal)
def maxRecords=nvl(MaxRecords_c,0 as BigDecimal)
def processedCount=carriedRecords
def outputMap=[:]
def listaClientes=[]
if(elapsedTime<maxTime){
def optys=newView('OpportunityVO')
def optyc=newViewCriteria(optys)
def optyr=optyc.createRow()
def optyi=optyr.ensureCriteriaItem('DisponibleHasta_c')
optyi.setOperator('<')
optyi.setValue(today())
def optyj=optyr.ensureCriteriaItem('EstadoDeTemporalidad_c')
optyj.setOperator('=')
optyj.setValue('ACTIVA')
def optym= optyr.ensureCriteriaItem('AreaComercial_c')
optym.setOperator('=')
optym.setValue('CORPORATIVO')

def optyk= optyr.ensureCriteriaItem('StatusCode')


optyk.setOperator('=')
optyk.setValue('OPEN')
optyc.insertRow(optyr)
optys.appendViewCriteria(optyc)
optys.setMaxFetchSize(5000)
optys.executeQuery()
def totalCount=0
elapsedTime=now().time-startTime
def listaRegistros=[]
def listaTotal=[]
while(optys.hasNext()&&elapsedTime<(maxTime as Long)&&processedCount<maxRecords){
def recordMap=[:]
totalCount+=1
elapsedTime=now().time-startTime
def opty=optys.next()
def statusCode=opty.StatusCode
def registroIntegrado=nvl(opty.IDTicketContratoNetplus_c,'')!='' || nvl(opty.IDNetplus_c,'')!='' || nvl(opty.CodigoNetp

recordMap.put('Name',opty.Name)
recordMap.put('filaValida',opty.filaValida())
recordMap.put('statusCode',statusCode)
recordMap.put('registroIntegrado',registroIntegrado)
listaRegistros.add(recordMap)
if(opty.filaValida() && statusCode=='OPEN' && !registroIntegrado){
elapsedTime=now().time-startTime
def lista=opty.aplicarReglasTemporalidad()
elapsedTime=now().time-startTime
listaClientes+=lista
processedCount+=1

}
else{
elapsedTime=now().time-startTime
}
elapsedTime=now().time-startTime
}
println('listaClientes'+listaClientes)
def map=[:]
map.put('processedCount',processedCount)
map.put('totalCount',totalCount)
map.put('listaOportunidades', listaRegistros)
println('temporalidad oportunidad:'+map)
}
outputMap.put('elapsedTime',elapsedTime)
outputMap.put('processedCount',processedCount)
outputMap.put('listaClientes',listaClientes)
println(outputMap)
return outputMap
artTime, adf.util.loadResourceProfileIdMap()
cords def startTime=now().time
if(nvl(carriedStartTime,0 as Long)!=0){
startTime=carriedStartTime
}
def elapsedTime=now().time-startTime
def maxTime=nvl(MaxTime_c,0 as BigDecimal)
def maxRecords=nvl(MaxRecords_c,0 as BigDecimal)
def processedCount=carriedRecords
def listaClientes=[]
def outputMap=[:]
if(elapsedTime<maxTime){
def leads=newView('Lead')
def leadc=newViewCriteria(leads)
def leadcr=leadc.createRow()
def leadci=leadcr.ensureCriteriaItem('DisponibleHasta_c')
leadci.setOperator('<')
leadci.setValue(today())
def leadcj=leadcr.ensureCriteriaItem('EstadoDeTemporalidad_c')
leadcj.setOperator('=')
leadcj.setValue('ACTIVA')

def leadm=leadcr.ensureCriteriaItem('TipoCM_c')
leadm.setOperator('=')
leadm.setValue('CORPORATIVO')
leadc.insertRow(leadcr)
leads.appendViewCriteria(leadc)
leads.setMaxFetchSize(5000)
leads.executeQuery()
def ids='['
def totalCount=0
elapsedTime=now().time-startTime
def listaLeads=[]
while(leads.hasNext()&&elapsedTime<maxTime&&processedCount<maxRecords){
def lead=leads.next()
def areaComercial=nvl(lead.TipoCM_c,'')
def status=lead.StatusCode
if(lead.leadValido()&&(status=='QUALIFIED'||status=='UNQUALIFIED')){
def lista=lead.aplicarReglasTemporalidad()
//la expresión dentro del if es equivalente a lista.size()>0
def leadMap=[:]
leadMap.put('Name',lead.Name)
leadMap.put('Contact',lead.PrimaryContactName)
leadMap.put('Cuenta',lead.Cuenta_c)
listaLeads.add(leadMap)
elapsedTime=now().time-startTime
listaClientes+=lista
processedCount+=1
}

elapsedTime=now().time-startTime
totalCount+=1
}
def map=[:]
map.put('listaLeads',listaLeads)
map.put('processedCount',processedCount)
map.put('totalCount',totalCount)
println('temporalidad lead:'+map)

outputMap.put('elapsedTime',elapsedTime)
outputMap.put('processedCount',processedCount)
outputMap.put('listaClientes',listaClientes)
println(outputMap)
return outputMap
adf.util.loadResourceProfileIdMap()
def startTime=now().time
if(nvl(carriedStartTime,0 as Long)!=0){
startTime=carriedStartTime
}
def elapsedTime=now().time-startTime

def processedCount=carriedRecords
def maxTime=nvl(MaxTime_c,0 as BigDecimal)
def maxRecords=nvl(MaxRecords_c,0 as BigDecimal)
def outputMap=[:]
def listaClientes=[]

if(elapsedTime<maxTime){
def orgs=newView('OrganizationProfile')
def orgc=newViewCriteria(orgs)
def orgcr=orgc.createRow()
def orgci=orgcr.ensureCriteriaItem('DisponibleHasta_c')
orgci.setOperator('<')
orgci.setValue(today())
def orgcj=orgcr.ensureCriteriaItem('EstadoDeTemporalidad_c')
orgcj.setOperator('=')
orgcj.setValue('ACTIVA')
def orgm=orgcr.ensureCriteriaItem('AreaComercial_c')
orgm.setOperator('=')
orgm.setValue('CORPORATIVO')
orgc.insertRow(orgcr)
orgs.appendViewCriteria(orgc)
orgs.setMaxFetchSize(5000)
orgs.executeQuery()
def ids='['
def totalCount=0
elapsedTime=now().time-startTime
println('elapsedTime: ' + elapsedTime + ',maxTime: ' + maxTime + ',processedCount: ' + processedCount +',maxRec
while(orgs.hasNext()&&elapsedTime<maxTime&&processedCount<maxRecords){
def org=orgs.next()
def areaComercial=nvl(org.AreaComercial_c,'')
if(areaComercial ==''){
org.setAttribute('AreaComercial_c','CORPORATIVO')
}
if(org.OrganizationName!='NO UTILIZAR'){
def lista=org.aplicarReglasTemporalidad()
//la expresión dentro del if es equivalente a lista.size()>0
listaClientes+=lista
processedCount+=1
}
elapsedTime=now().time-startTime
totalCount+=1
}
def map=[:]
map.put('processedCount',processedCount)
map.put('totalCount',totalCount)
map.put('elapsedTime',elapsedTime)
println('temporalidad cuenta:'+map)
}

outputMap.put('elapsedTime',elapsedTime)
outputMap.put('processedCount',processedCount)
outputMap.put('listaClientes',listaClientes)
return outputMap
adf.util.loadResourceProfileIdMap()
def startTime=now().time
if(nvl(carriedStartTime,0 as Long)!=0){
startTime=carriedStartTime
}
def elapsedTime=now().time-startTime
def maxTime=nvl(MaxTime_c,0 as BigDecimal)
def maxRecords=nvl(MaxRecords_c,0 as BigDecimal)

def processedCount=carriedRecords
def listaClientes=[]
def outputMap=[:]
if(elapsedTime<maxTime){
def persons=newView('PersonProfile')
def personc=newViewCriteria(persons)
def personcr=personc.createRow()
def personci=personcr.ensureCriteriaItem('DisponibleHasta_c')
personci.setOperator('<')
personci.setValue(today())
def personcj=personcr.ensureCriteriaItem('EstadoDeTemporalidad_c')
personcj.setOperator('=')
personcj.setValue('ACTIVA')
def personck=personcr.ensureCriteriaItem('SalesProfileType')
personck.setOperator('=')
personck.setValue('ZCA_PROSPECT')
def personcl=personcr.ensureCriteriaItem('CodigoNetPlus_c')
personcl.setOperator('ISBLANK')
def personm=personcr.ensureCriteriaItem('AreaComercial_c')
personm.setOperator('=')
personm.setValue('CORPORATIVO')
personc.insertRow(personcr)
persons.appendViewCriteria(personc)
persons.setMaxFetchSize(5000)
persons.executeQuery()
def ids='['
def totalCount=0
elapsedTime=now().time-startTime
while(persons.hasNext()&&elapsedTime<maxTime&&processedCount<maxRecords){
def person=persons.next()
def areaComercial=nvl(person.AreaComercial_c,'')
if(areaComercial ==''){
person.setAttribute('AreaComercial_c','CORPORATIVO')
}
if(person.filaValida()&&areaComercial!='CORPORATIVO'&&person.PersonFirstName!='NO UTILIZAR'){
def lista=person.aplicarReglasTemporalidad()
//la expresión dentro del if es equivalente a lista.size()>0
if(lista){
listaClientes+=lista
processedCount+=1
}
}
elapsedTime=now().time-startTime
totalCount+=1
}
def map=[:]
map.put('processedCount',processedCount)
map.put('totalCount',totalCount)
println('temporalidad contacto:'+map)

outputMap.put('elapsedTime',elapsedTime)
outputMap.put('processedCount',processedCount)
outputMap.put('listaClientes',listaClientes)
println(outputMap)
return outputMap
println('outputMap:'+outputMap)
return outputMap
def startTime=now().time as Long
def maxTime=45000 as Long
def listaClientes=[]
def outputMap=TemporalidadOportunidad(startTime,0 as Long)
listaClientes+=outputMap['listaClientes']
def records=outputMap['processedCount'] as Long
outputMap=TemporalidadLead(startTime,records)
listaClientes+=outputMap['listaClientes']
records=outputMap['processedCount'] as Long
outputMap=TemporalidadCuenta(startTime,records)
listaClientes+=outputMap['listaClientes']
records=outputMap['processedCount'] as Long
outputMap=TemporalidadContacto(startTime,records)
listaClientes+=outputMap['listaClientes']
adf.util.reasignarListaClientes(outputMap['listaClientes'] as List)
def startTime=now().time
def nullDate=new java.sql.Date(date(1950,01,01).time)//year, month, day
def fechaInicial=nvl(UltimaFechaCorregida_c,nullDate)-1
def fechaPivote=new java.sql.Date(date(2021,02,01).time)
def fechaFinal
if(fechaInicial+30<fechaPivote){
fechaFinal=fechaPivote
}
else{
fechaFinal=today()+1
}

def contacts=newView('PersonProfile')
def contactc=newViewCriteria(contacts)
def contactr=contactc.createRow()
def contacti=contactr.ensureCriteriaItem('SalesProfileType')
contacti.setOperator('=')
contacti.setValue('ZCA_PROSPECT')
def contactj=contactr.ensureCriteriaItem('AreaComercial_c')
contactj.setOperator('=')
contactj.setValue(RecordName)

def contactk=contactr.ensureCriteriaItem('CreationDate')
contactk.setOperator('ONORBEFORE')
contactk.setValue(fechaFinal)
def contactl=contactr.ensureCriteriaItem('CreationDate')
contactl.setOperator('ONORAFTER')
contactl.setValue(fechaInicial)
println('fechaInicial: '+fechaInicial)
contactc.insertRow(contactr)
contacts.appendViewCriteria(contactc)
contacts.setMaxFetchSize(100000)
contacts.setSortBy('CreationDate asc')
contacts.executeQuery()
def maxRecords=nvl(MaxRecords_c,0 as BigDecimal) as Long
def maxTime=nvl(MaxTime_c,0 as BigDecimal) as Long
def elapsedTime=now().time-startTime
def currentRecords=0
def clientesMap=[:]
def lastCreationDate
while(contacts.hasNext() && elapsedTime<maxTime/2 && currentRecords<maxRecords){
def contact=contacts.next()
def partyId=contact.PartyId as String
def datosCliente=[:]
datosCliente.put('Row',contact)
datosCliente.put('LeadsAbiertos',0)
datosCliente.put('OportunidadesAbiertas',0)
datosCliente.put('TipoCliente','PERSON')
datosCliente.put('CreationDate',contact.CreationDate)
clientesMap.put(partyId,datosCliente)
elapsedTime=now().time-startTime
currentRecords+=1
lastCreationDate=contact.CreationDate
}
println('countRecords:' + currentRecords)
println('clientesMap:'+clientesMap)
contarOperacionesAbiertas(clientesMap)
setAttribute('UltimaFechaCorregida_c',lastCreationDate)
def startTime=now().time
def nullDate=new java.sql.Date(date(1950,01,01).time)//year, month, day
def fechaInicial=nvl(UltimaFechaCorregidaCuenta_c,nullDate)-1
def fechaFinal=fechaInicial+30
def orgs=newView('OrganizationProfile')
def orgc=newViewCriteria(orgs)
def orgr=orgc.createRow()
def orgi=orgr.ensureCriteriaItem('SalesProfileType')
orgi.setOperator('=')
orgi.setValue('ZCA_PROSPECT')
def orgj=orgr.ensureCriteriaItem('AreaComercial_c')
orgj.setOperator('=')
orgj.setValue(RecordName)

def orgk=orgr.ensureCriteriaItem('CreationDate')
orgk.setOperator('ONORBEFORE')
orgk.setValue(fechaFinal)
def orgl=orgr.ensureCriteriaItem('CreationDate')
orgl.setOperator('ONORAFTER')
orgl.setValue(fechaInicial)

orgc.insertRow(orgr)
orgs.appendViewCriteria(orgc)
orgs.setMaxFetchSize(100000)
orgs.executeQuery()
def maxRecords=nvl(MaxRecords_c,0 as BigDecimal) as Long
def maxTime=nvl(MaxTime_c,0 as BigDecimal) as Long
def elapsedTime=now().time-startTime
def currentRecords=0
def clientesMap=[:]
def lastCreationDate=fechaInicial
def countInside=0
def countOutside=0
def earliestCreationDate=fechaFinal
while(orgs.hasNext()){
def org=orgs.next()
if(org.CreationDate < fechaFinal){
def partyId=org.PartyId as String
def datosCliente=[:]
datosCliente.put('Row',org)
datosCliente.put('LeadsAbiertos',0)
datosCliente.put('OportunidadesAbiertas',0)
datosCliente.put('TipoCliente','ORGANIZATION')
datosCliente.put('CreationDate',org.CreationDate)
clientesMap.put(partyId,datosCliente)
elapsedTime=now().time-startTime
currentRecords+=1
if(org.CreationDate>lastCreationDate){
lastCreationDate=org.CreationDate
}
countInside+=1
}
countOutside+=1
if(earliestCreationDate>org.CreationDate){
earliestCreationDate=org.CreationDate
}
}
if(lastCreationDate==fechaInicial){
lastCreationDate=fechaFinal
}
contarOperacionesAbiertas(clientesMap)
setAttribute('UltimaFechaCorregidaCuenta_c',lastCreationDate)
println('CountInside, CountOutside: ' + countInside+ ', ' + countOutside+ 'fechaInicial;' + fechaInicial +'FechaFinal;' +
earliestCreationDate:' + earliestCreationDate)
def startTime=now().time
def printMap=[:]
def leads=newView('Lead')
def leadc=newViewCriteria(leads)

def optys=newView('OpportunityVO')
def optyc=newViewCriteria(optys)

def countClientes=0

def listaClientes=mapClientes.keySet()
for(customerId in listaClientes){
if(countClientes==0){
println('listaClientes:'+listaClientes)
}
def datosCliente=mapClientes[customerId]
def tipoCliente=nvl(datosCliente['TipoCliente'] as String,'')
def leadField=''
if(tipoCliente=='PERSON'){
leadField='PrimaryContactId'
}
if(tipoCliente=='ORGANIZATION'){
leadField='Cuenta_Id_c'
}
if(customerId!=0){
def leadr=leadc.createRow()
def leadi=leadr.ensureCriteriaItem(leadField)
leadi.setOperator('=')
leadi.setValue(customerId)
leadi.setConjunction(0)
leadc.insertRow(leadr)

def optyr=optyc.createRow()
def optyi=optyr.ensureCriteriaItem('TargetPartyId')
optyi.setOperator('=')
optyi.setValue(customerId)
optyc.insertRow(optyr)
countClientes+=1
}
}
println('pAsé el primer bucle')
def optyList=[]
def leadList=[]
def idGenericoMasivo=adf.util.usuarioGenericoMasivo()
def idGenericoCorporativo=adf.util.usuarioGenericoCorporativo()
if(countClientes>0){
//contarLeadsAbiertos
leads.appendViewCriteria(leadc)
leads.executeQuery()
println('previo a contar leads')
while(leads.hasNext()){
def map=[:]
def lead=leads.next()
def clienteId=0
def tipoCliente=lead.TipoCliente_c
def statusCode=lead.StatusCode
def statusActivo=statusCode=='QUALIFIED' || statusCode=='UNQUALIFIED'
if(statusActivo){
if(tipoCliente=='PERSON'){
clienteId=lead.PrimaryContactId as String
}
else if(tipoCliente=='ORGANIZATION'){
clienteId=lead.Cuenta_Id_c as String
}
def datosCliente=mapClientes[clienteId] as Map
if(datosCliente!=null && lead.OwnerPartyId!= idGenericoMasivo && lead.OwnerPartyId!= idGenericoCorporativ
//println('Lead: '+ lead.LeadNumber +',clienteId: '+ clienteId + ',datosCliente: '+ datosCliente)
def leadsAbiertos=nvl(datosCliente['LeadsAbiertos'] as Long,0 as Long)
leadsAbiertos+=1
datosCliente.put('LeadsAbiertos',leadsAbiertos)
}
}
}

optys.appendViewCriteria(optyc)
optys.executeQuery()
println('previo a contar optys')
while(optys.hasNext()){
def opty=optys.next()
if(opty.StatusCode=='OPEN' && opty.OwnerResourcePartyId!= idGenericoMasivo && opty.OwnerResourcePartyI
def clienteId=opty.TargetPartyId as String
def datosCliente=mapClientes[clienteId] as Map
def optysAbiertas=nvl(datosCliente['OportunidadesAbiertas'] as Long,0 as Long)
optysAbiertas+=1
datosCliente.put('OportunidadesAbiertas',optysAbiertas)
}
}
for(customerId in listaClientes){
def datosCliente=mapClientes[customerId] as Map
def row=datosCliente['Row']
def leadsAbiertos=nvl(datosCliente['LeadsAbiertos'] as Long,0 as Long)
def optysAbiertas=nvl(datosCliente['OportunidadesAbiertas'] as Long,0 as Long)
def nullDate= new java.sql.Date(1)
if(nvl(row.DisponibleHasta_c,nullDate)==nullDate && leadsAbiertos==0 && optysAbiertas==0){
row.setAttribute('DisponibleHasta_c', today()-2)
}
row.setAttribute('LeadsAbiertos_c',leadsAbiertos)
row.setAttribute('OportunidadesAbiertas_c',optysAbiertas)
}
printMap.put('leads',leadList)
printMap.put('optys',optyList)
printMap.put('mapClientesOwners',mapClientes)
def elapsedTime=now().time - startTime
printMap.put('elapsedTime',elapsedTime)
println(''+printMap)
}
def temps=newView('Temporalidad_c')
temps.executeQuery()
def exit=false
while(temps.hasNext()&& !exit){
def temp=temps.next()
if(nvl(temp.RecordName,'')=='CORPORATIVO'){
temp.correrTemporalidad()
exit=true
}
}
def temps=newView('Temporalidad_c')
def tempc=newViewCriteria(temps)
def tempr=tempc.createRow()
def tempi=tempr.ensureCriteriaItem('RecordName')
tempi.setOperator('=')
tempi.setValue('CORPORATIVO')
tempc.insertRow(tempr)
temps.appendViewCriteria(tempc)
temps.executeQuery()
while(temps.hasNext()){
def temp=temps.next()
if(temp.RecordName=='CORPORATIVO'){
temp.contabilizarOperacionesAbiertasContacto()
}
}
def temps=newView('Temporalidad_c')
def tempc=newViewCriteria(temps)
def tempr=tempc.createRow()
def tempi=tempr.ensureCriteriaItem('RecordName')
tempi.setOperator('=')
tempi.setValue('CORPORATIVO')
tempc.insertRow(tempr)
temps.appendViewCriteria(tempc)
temps.executeQuery()
while(temps.hasNext()){
def temp=temps.next()
if(temp.RecordName=='CORPORATIVO'){
temp.contabilizarOperacionesAbiertasCuenta()
}
}
def leads=newView('Lead')
def leadc=newViewCriteria(leads)
def leadr=leadc.createRow()
def leadi=leadr.ensureCriteriaItem('TipoCM_c')
leadi.setOperator('=')
leadi.setValue('MASIVO')
def leadj=leadr.ensureCriteriaItem('OwnerId')
leadj.setOperator('=')
leadj.setValue(adf.util.usuarioGenericoMasivo())
def leadk=leadr.ensureCriteriaItem('UsuarioDesasignado_Id_c')
leadk.setOperator('ISNOTBLANK')
def leadm=leadr.ensureCriteriaItem('PrimaryContactId')
leadm.setOperator('ISBLANK')
def leadn=leadr.ensureCriteriaItem('Cuenta_Id_c')
leadn.setOperator('ISBLANK')
leadc.insertRow(leadr)
leads.appendViewCriteria(leadc)
leads.setMaxFetchSize(5000)
leads.executeQuery()
def outputList=[]
while(leads.hasNext()){
def lead=leads.next()
if(lead.UsuarioDesasignado_Obj_c!=null){
lead.setAttribute('OwnerId',lead.UsuarioDesasignado_Obj_c?.PartyId)
lead.setAttribute('UsuarioDesasignado_Id_c',null)
def leadMap=[:]
leadMap.put('leadNumber',lead.LeadNumber)
leadMap.put('LeadName',lead.Name)
leadMap.put('OwnerId',lead.OwnerId)
leadMap.put('OwnerPartyName',lead.OwnerPartyName)
leadMap.put('TipoCM_c',lead.TipoCM_c)
leadMap.put('PrimaryContactId',lead.PrimaryContactId)
leadMap.put('Cuenta_Id_c',lead.Cuenta_Id_c)
outputList.add(leadMap)
}
}
println('OutputMap:'+outputList)
adf.util.loadResourceProfileIdMap()
//Temporalidad Oportunidad
def curDate=now()
def curDateTz=adf.util.nowSqlTZ()
println('curDate: '+ curDate+', curDateTz: ' + curDateTz)
def startTime=now().time

def elapsedTime=now().time-startTime
def maxTime=nvl(MaxTime_c,0 as BigDecimal)
def maxRecords=nvl(MaxRecords_c,0 as BigDecimal)
def processedCount=0
def outputMap=[:]
def listaClientes=[]
if(elapsedTime<maxTime){
def optys=newView('OpportunityVO')
def optyc=newViewCriteria(optys)
def optyr=optyc.createRow()
def optyi=optyr.ensureCriteriaItem('FechaVentaBruta_c')
optyi.setOperator('ONORBEFORE')
optyi.setValue(adf.util.nowSqlTZ()-60)
def optym= optyr.ensureCriteriaItem('AreaComercial_c')
optym.setOperator('=')
optym.setValue('CORPORATIVO')
def optyn= optyr.ensureCriteriaItem('StatusCode')
optyn.setOperator('=')
optyn.setValue('OPEN')

optyc.insertRow(optyr)
optys.appendViewCriteria(optyc)
optys.setMaxFetchSize(5000)
optys.executeQuery()
def totalCount=0
elapsedTime=now().time-startTime
def listaRegistros=[]
while(optys.hasNext()&&processedCount<48){
def recordMap=[:]
totalCount+=1
elapsedTime=now().time-startTime
def opty=optys.next()
def statusCode=opty.StatusCode
if(opty.filaValida()){
opty.getAssets()
elapsedTime=now().time-startTime
processedCount+=1
recordMap.put('Name',opty.Name)
listaRegistros.add(recordMap)
}
else{
elapsedTime=now().time-startTime
}
elapsedTime=now().time-startTime
}

println('listaClientes'+listaClientes)
def map=[:]
map.put('processedCount',processedCount)
map.put('totalCount',totalCount)
map.put('listaOportunidades', listaRegistros)
println('temporalidad oportunidad:'+map)
}
outputMap.put('elapsedTime',elapsedTime)
outputMap.put('processedCount',processedCount)
outputMap.put('listaClientes',listaClientes)
println(outputMap)
def temps=newView('Temporalidad_c')
def tempc=newViewCriteria(temps)
def tempr=tempc.createRow()
def tempi=tempr.ensureCriteriaItem('RecordName')
tempi.setOperator('=')
tempi.setValue('CORPORATIVO')
tempc.insertRow(tempr)
temps.appendViewCriteria(tempc)
temps.executeQuery()
while(temps.hasNext()){
def temp=temps.next()
if(temp.RecordName=='CORPORATIVO'){
temp.instalacionNoConcretada()
}
}
def cuentas=newView('OrganizationProfile')
def cuentac=newViewCriteria(cuentas)
def cuentar=cuentac.createRow()
def cuentai=cuentar.ensureCriteriaItem('TimestampTotalContratos_c')
cuentai.setOperator('=')
cuentai.setValue(0)
def cuentaPS = cuentar.ensureCriteriaItem('PartyStatus')
cuentaPS.setOperator('=')
cuentaPS.setValue('A')
cuentac.insertRow(cuentar)
cuentas.appendViewCriteria(cuentac)

cuentas.setMaxFetchSize(47)
cuentas.executeQuery()
java.util.Map clientesMap=[:]
while(cuentas.hasNext()){
def cuenta=cuentas.next()
java.util.Map currentMap=[:]
currentMap.put('row',cuenta)
currentMap.put('ConsiderarComoCliente_c','N')
currentMap.put('optysAbiertas',0)
currentMap.put('leadsAbiertos',0)
clientesMap.put(cuenta.PartyId,currentMap)
}
adf.util.regularizarClienteMap(clientesMap)

ption Disabled Actions Expression


No return
(oracle.apps.fnd.applcore.Profile.ge
No return
(oracle.apps.fnd.applcore.Profile.ge
No

No return
(oracle.apps.fnd.applcore.Profile.ge
Precision MaxLength Expression
80 80
0 0
10 10
10 10
15 15
64 64
10 10
64 64
1500 1500
1500 1500
10 10
18 18
10 10
10 10
10 10
32 32
0 0
10 10
64 64
10 10
80 80
10 10
1500 1500
10 10
1500 1500
0 0
10 10
10 10
10 10
1500 1500
0 0

c')

as_c,'')!=''){
cords){

_c,'')!='' || nvl(opty.CodigoNetplusDelCliente_c,'')!=''
' + processedCount +',maxRecords: ' + maxRecords)
='NO UTILIZAR'){
ds){
;' + fechaInicial +'FechaFinal;' + fechaFinal + ',
artyId!= idGenericoCorporativo){
atosCliente)
&& opty.OwnerResourcePartyId!= idGenericoCorporativo){

biertas==0){
ression
rn
cle.apps.fnd.applcore.Profile.get('ZCX_CUSTOM_OBJECT_EVENTS') ==
rn
cle.apps.fnd.applcore.Profile.get('ZCX_CUSTOM_OBJECT_EVENTS') ==
rn
cle.apps.fnd.applcore.Profile.get('ZCX_CUSTOM_OBJECT_EVENTS') ==
Object Name : UltimaMillaNetplus_c
Object Name UltimaMillaNetplus_c
Object Display Name Plural Últimas Millas Netplus
Object Type Custom
Application Name CRM
Table Name ZCA_REF_ENTITIES
Total number of custom fields
Total number of modified Standard fields
Total number of Triggers
Total number of Object Functions
Total number of Object Workflows
Total number of Validations
Total number of Dynamic Layouts

Custom Fields
Name Display Name Type Column Name
RecordName Código de Última Milla OOTB RECORD_NAME
CreationDate Fecha de Creación OOTB CREATION_DATE
Plan_c Plan DCL

CurrencyCode Currency Code FCL CURRENCY_CODE


LastUpdatedBy Actualizado por OOTB LAST_UPDATED_BY
CreatedBy Creado por OOTB CREATED_BY
OraZcxOwner_c Owner DCL

Plan_Id_c Plan DCLForeignKey EXTN_ATTRIBUTE_NUMBER002


Oportunidad_Id_c Oportunidad DCLForeignKey EXTN_ATTRIBUTE_NUMBER001
Descripcion_c Descripción Text EXTN_ATTRIBUTE_CHAR008
Oportunidad_c Oportunidad DCL

Activo_c Activo Checkbox EXTN_ATTRIBUTE_CHAR007


OraZcxOwner_Id_c Owner DCLForeignKey OWNER_RESOURCE_ID
Id Identificador de Registro OOTB ID
RecordNumber Record Number OOTB RECORD_NUMBER
LastUpdateDate Fecha de Última Actualización OOTB LAST_UPDATE_DATE

Validations
Name Type Error Message
Rule1 Field Validation
Field Name : OraZcxOwner_Id_c
Rule1 Field Validation
Field Name : Oportunidad_Id_c
Rule1 Field Validation
Field Name : Plan_Id_c
Object Workflows
Name Definition Name Event Point Description
UltimaMillaNetplus_c_Stand Update
ard_Update
UltimaMillaNetplus_c_Stand Delete
ard_Delete
UltimaMillaNetplus_c_Stand Create
ard_Create
UltimaMillaNetplus_c
Últimas Millas Netplus
Custom
CRM
ZCA_REF_ENTITIES
16
0
0
0
3
3
0

umn Name Default Value Required Updatable Searchable REST Enabl


ORD_NAME Yes Yes Yes Yes
ATION_DATE Yes No Yes Yes
Yes Yes No Yes
RENCY_CODE No Yes Yes Yes
T_UPDATED_BY Yes Yes Yes Yes
ATED_BY Yes No Yes Yes
Yes Yes No Yes
N_ATTRIBUTE_NUMBER002 Yes Yes Yes Yes
N_ATTRIBUTE_NUMBER001 Yes Yes Yes Yes
N_ATTRIBUTE_CHAR008 Yes Yes Yes Yes
Yes Yes No Yes
N_ATTRIBUTE_CHAR007 N Yes Yes Yes Yes
NER_RESOURCE_ID Yes Yes Yes Yes
Yes No Yes Yes
ORD_NUMBER Yes No Yes Yes
T_UPDATE_DATE Yes Yes Yes Yes

Expression
adf.source.isLookupIdValid('OraZcxOwner_Id_c',newValue)

adf.source.isLookupIdValid('Oportunidad_Id_c',newValue)

adf.source.isLookupIdValid('Plan_Id_c',newValue)
ption Disabled Actions Expression
No return
(oracle.apps.fnd.applcore.Profile.ge
No return
(oracle.apps.fnd.applcore.Profile.ge
No return
(oracle.apps.fnd.applcore.Profile.ge
Precision MaxLength Expression
80 80
0 0
1500 1500
15 15
64 64
64 64
1500 1500
18 18
18 18
80 80
1500 1500
10 10
18 18
32 32
64 64
0 0
ression
rn
cle.apps.fnd.applcore.Profile.get('ZCX_CUSTOM_OBJECT_EVENTS') ==
rn
cle.apps.fnd.applcore.Profile.get('ZCX_CUSTOM_OBJECT_EVENTS') ==
rn
cle.apps.fnd.applcore.Profile.get('ZCX_CUSTOM_OBJECT_EVENTS') ==
Object Name : VariablesDeSistema_c
Object Name VariablesDeSistema_c
Object Display Name Plural Variables de sistema
Object Type Custom
Application Name CRM
Table Name MOO_REF_ENTITIES
Total number of custom fields
Total number of modified Standard fields
Total number of Triggers
Total number of Object Functions
Total number of Object Workflows
Total number of Validations
Total number of Dynamic Layouts

Custom Fields
Name Display Name Type Column Name
RecordName Código de variable OOTB RECORD_NAME
CreationDate Fecha de Creación OOTB CREATION_DATE
ValorEntero_c Valor Numérico Number EXTN_ATTRIBUTE_NUMBER006
Valor_c Valor Text EXTN_ATTRIBUTE_CHAR007
CurrencyCode Currency Code FCL CURRENCY_CODE
DescripcionDeVariable_c Descripción de variable Text EXTN_ATTRIBUTE_CHAR008
LastUpdatedBy Actualizado por OOTB LAST_UPDATED_BY
CreatedBy Creado por OOTB CREATED_BY
OraZcxOwner_c Owner DCL

OraZcxOwner_Id_c Owner DCLForeignKey OWNER_RESOURCE_ID


Id Identificador de Registro OOTB ID
RecordNumber Record Number OOTB RECORD_NUMBER
LastUpdateDate Fecha de Última Actualización OOTB LAST_UPDATE_DATE

Validations
Name Type Error Message
Rule1 Field Validation
Field Name : OraZcxOwner_Id_c

Object Functions
Name Parameters Return Type Privileged Visibility Description
regularizarC void No Callable by
ontactos External
Systems
ontactos External
Systems
Object Workflows
Name Definition Name Event Point Description
VariablesDeSistema_c_Stan Update
dard_Update
VariablesDeSistema_c_Stan Create
dard_Create
VariablesDeSistema_c_Stan Delete
dard_Delete
VariablesDeSistema_c
Variables de sistema
Custom
CRM
MOO_REF_ENTITIES
13
0
0
1
3
1
0

umn Name Default Value Required Updatable Searchable REST Enabl


ORD_NAME Yes Yes Yes Yes
ATION_DATE Yes No Yes Yes
N_ATTRIBUTE_NUMBER006 No Yes No Yes
N_ATTRIBUTE_CHAR007 Yes Yes No Yes
RENCY_CODE No Yes Yes Yes
N_ATTRIBUTE_CHAR008 No Yes No Yes
T_UPDATED_BY Yes Yes Yes Yes
ATED_BY Yes No Yes Yes
Yes Yes No Yes
NER_RESOURCE_ID Yes Yes Yes Yes
Yes No Yes Yes
ORD_NUMBER Yes No Yes Yes
T_UPDATE_DATE Yes Yes Yes Yes

Expression
adf.source.isLookupIdValid('OraZcxOwner_Id_c',newValue)

tion Expression
def persons=newView('PersonProfile')
def personc=newViewCriteria(persons)
def personr=personc.createRow()
/*
def personi=personr.ensureCriteriaItem('JgzzFiscalCode')
personi.setOperator('ISBLANK')
def personj=personr.ensureCriteriaItem('NumeroDeCedula_c')
personj.setOperator('ISBLANK')
def personk=personr.ensureCriteriaItem('NumeroDePasaporte_c')
personk.setOperator('ISBLANK')*/

def personl=personr.ensureCriteriaItem('RegularizarContact_c')
personl.setOperator('ISBLANK')
def personm=personr.ensureCriteriaItem('AreaComercial_c')
personm.setOperator('ISBLANK')
def personn=personr.ensureCriteriaItem('SalesProfileType')
personn.setOperator('ISNOTBLANK')
personc.insertRow(personr)
persons.appendViewCriteria(personc)
persons.setMaxFetchSize(50000)
def recordCount=0
def updatedCount=0
def cumpleCondicionCount=0
def maxUpdatedCount=300
def timestamp=now().time
def maxTime=45000
def elapsedTime=now().time-timestamp
while(persons.hasNext() && elapsedTime< maxTime){
def person=persons.next()
def ruc=nvl(person.JgzzFiscalCode,'')
def ced=nvl(person.NumeroDeCedula_c,'')
def usages=person.PartyUsageAssignment
def salesProspect=false
while(usages.hasNext()&&salesProspect==false){
def usage=usages.next()
if(usage.PartyUsageCode=='SALES_PROSPECT' ||usage.PartyUsageCode=='SALES_ACCOUNT' ){
salesProspect=true
}
}
if(nvl(person.AreaComercial_c,'')=='' &&person.PartyId!=300000002076614 &&salesProspect){
cumpleCondicionCount+=1
if(updatedCount<maxUpdatedCount){
person.setAttribute('RegularizarContact_c',timestamp)
updatedCount+=1
}
}
recordCount+=1
elapsedTime=now().time-timestamp
}
def map=[:]
map.put('recordCount',recordCount)
map.put('cumpleCondicionCount',cumpleCondicionCount)
map.put('updatedCount',updatedCount)
map.put('elapsedTime',elapsedTime)
println(''+map)

ption Disabled Actions Expression


No return
(oracle.apps.fnd.applcore.Profile.ge
No return
(oracle.apps.fnd.applcore.Profile.ge
No return
(oracle.apps.fnd.applcore.Profile.ge
Precision MaxLength Expression
80 80
0 0
30 30
80 80
15 15
400 400
64 64
64 64
1500 1500
18 18
32 32
64 64
0 0
CCOUNT' ){

Prospect){
ression
rn
cle.apps.fnd.applcore.Profile.get('ZCX_CUSTOM_OBJECT_EVENTS') ==
rn
cle.apps.fnd.applcore.Profile.get('ZCX_CUSTOM_OBJECT_EVENTS') ==
rn
cle.apps.fnd.applcore.Profile.get('ZCX_CUSTOM_OBJECT_EVENTS') ==
Object Name : VarReglasAsignacionLeads_c
Object Name VarReglasAsignacionLeads_c
Object Display Name Plural Consolas de Asignación de Le
Object Type Custom
Application Name CRM
Table Name MKT_REF_ENTITIES
Record Name Sequence {000000}
Total number of custom fields
Total number of modified Standard fields
Total number of Triggers
Total number of Object Functions
Total number of Object Workflows
Total number of Validations
Total number of Dynamic Layouts

Custom Fields
Name Display Name Type Column Name
RecordName Consola OOTB RECORD_NAME
CreationDate Fecha de Creación OOTB CREATION_DATE
Status_c Status FCL EXTN_ATTRIBUTE_CHAR009
MinimoDeLead_c Mínimo de Leads Number EXTN_ATTRIBUTE_NUMBER006
CantidadLeadsAsignados_c Cantidad de leads asignados Number EXTN_ATTRIBUTE_NUMBER014
CurrencyCode Currency Code FCL CURRENCY_CODE
LastUpdatedBy Actualizado por OOTB LAST_UPDATED_BY
CreatedBy Creado por OOTB CREATED_BY
OraZcxOwner_c Owner DCL

BolsaDeLeadsARepartir_c Bolsa de Leads a repartir Number EXTN_ATTRIBUTE_NUMBER007


NumeroDeVendedores_c Número de vendedores Text Formula

OraZcxOwner_Id_c Owner DCLForeignKey OWNER_RESOURCE_ID


EjecutarAsignacion_c Ejecutar Asignación Checkbox EXTN_ATTRIBUTE_CHAR008
NumeroDeMeses_c Número de Meses Text EXTN_ATTRIBUTE_CHAR007
TamanoDeLotes_c Tamaño de lotes Number EXTN_ATTRIBUTE_NUMBER008
FechaHoraUltimaEjecucion_c Fecha y hora de última ejecución Datetime EXTN_ATTRIBUTE_TIMESTAMP001
Id Identificador de Registro OOTB ID
RecordNumber Record Number OOTB RECORD_NUMBER
LastUpdateDate Fecha de Última Actualización OOTB LAST_UPDATE_DATE

Triggers
Name Type Trigger PointDescription Error Message
ejecutarAsignacion Object Trigger BeforeUpdate
ejecutarAsignacion Object Trigger BeforeUpdate

Validations
Name Type Error Message
Rule1 Field Validation
Field Name : OraZcxOwner_Id_c

Object Functions
Name Parameters Return Type Privileged Visibility Description
asignacionM void No Callable by
asiva External
Systems

solicitarAsig void No Callable by


nacion External
Systems
Object Workflows
Name Definition Name Event Point Description
VarReglasAsignacionLeads_ Update
c_Standard_Update
VarReglasAsignacionLeads_ Create
c_Standard_Create
VarReglasAsignacionLeads_ Create
c_Standard_Create
VarReglasAsignacionLeads_ Delete
c_Standard_Delete

Dynamic Layouts
Layout Name Active Role
Jefatura Televentas Yes PTN_PTN_ZPM_PARTNER_SALES_MANAGER_JOB_Co
Jefatura Televentas Yes nsAsigLeads_CUSTOM;
PTN_PTN_ZPM_PARTNER_SALES_MANAGER_JOB_Co
nsAsigLeads_CUSTOM;
VarReglasAsignacionLeads_c
Consolas de Asignación de Leads
Custom
CRM
MKT_REF_ENTITIES
{000000}
19
0
1
2
3
1
2

umn Name Default Value Required Updatable Searchable REST Enabl


ORD_NAME Yes Yes Yes Yes
ATION_DATE Yes No Yes Yes
N_ATTRIBUTE_CHAR009 No Yes No Yes
N_ATTRIBUTE_NUMBER006 Yes Yes No Yes
N_ATTRIBUTE_NUMBER014 No Yes No Yes
RENCY_CODE No Yes Yes Yes
T_UPDATED_BY Yes Yes Yes Yes
ATED_BY Yes No Yes Yes
Yes Yes No Yes
N_ATTRIBUTE_NUMBER007 Yes Yes No Yes
No No No Yes

NER_RESOURCE_ID Yes Yes Yes Yes


N_ATTRIBUTE_CHAR008 N Yes Yes No Yes
N_ATTRIBUTE_CHAR007 Yes Yes No Yes
N_ATTRIBUTE_NUMBER008 Yes Yes No Yes
N_ATTRIBUTE_TIMESTAMP001 No Yes No Yes
Yes No Yes Yes
ORD_NUMBER Yes No Yes Yes
T_UPDATE_DATE Yes Yes Yes Yes

Expression
if(isAttributeChanged('EjecutarAsignacion_c')&&EjecutarAsignacion_c=='Y'){
solicitarAsignacion()
}

Expression
adf.source.isLookupIdValid('OraZcxOwner_Id_c',newValue)

tion Expression
def consolas=newView('VarReglasAsignacionLeads_c')
consolas.executeQuery()
while(consolas.hasNext()){
def consola=consolas.next()
consola.solicitarAsignacion()
}
def today=today()
def anio=year(today)
def mes=month(today)
def amls=newView('AsignacionMensualLeads_c')
def amlc=newViewCriteria(amls)
def amlr=amlc.createRow()
def amli=amlr.ensureCriteriaItem('Mes_c')
amli.setOperator('=')
amli.setValue(mes)
def amlj=amlr.ensureCriteriaItem('Anio_c')
amlj.setOperator('=')
amlj.setValue(anio)
def amlk=amlr.ensureCriteriaItem('VariablesOrigen_Id_c')
amlk.setOperator('=')
amlk.setValue(Id)
def amlm=amlr.ensureCriteriaItem('AsignacionActiva_c')
amlm.setOperator('=')
amlm.setValue('Y')
amlc.insertRow(amlr)
amls.appendViewCriteria(amlc)
amls.executeQuery()

def existeAsignacionMensual=false
def aml
while(amls.hasNext()&&!existeAsignacionMensual){
aml=amls.next()
existeAsignacionMensual=true
}
if(!existeAsignacionMensual){
aml=amls.createRow()
aml.setAttribute('BolsaDeLeadsARepartir_c',BolsaDeLeadsARepartir_c as Long)
aml.setAttribute('MinimoDeLead_c',MinimoDeLead_c as Long)
aml.setAttribute('NumeroDeMeses_c',NumeroDeMeses_c as Long)
aml.setAttribute('TamanoDeLotes_c',TamanoDeLotes_c as Long)
aml.setAttribute('AsignacionActiva_c','Y')
aml.setAttribute('VariablesOrigen_Id_c',Id)
}
def now=now()
aml.setAttribute('EjecutarAsignacion_c',now)
setAttribute('FechaHoraUltimaEjecucion_c',now)
setAttribute('EjecutarAsignacion_c','N')
def correrPaso2=false
def correrPaso3=false
def correrPaso4=false
if(!existeAsignacionMensual){
amls.insertRow(aml)
setAttribute('Status_c','1')
correrPaso2=false
}
else{
correrPaso2=true
}

if(correrPaso2){
correrPaso3=aml.calcularScore()
setAttribute('Status_c','2')
}
def insercionRanking=false
if(correrPaso3){
correrPaso4= ! aml.setRanking()
println(''+correrPaso4)
setAttribute('Status_c','3')
}
if(correrPaso4){
setAttribute('Status_c','4')
aml.asignarLeadsCanal('LEADBOX')
// aml.asignarLeadsCanal('CELTY')
}

ption Disabled Actions Expression


No return
(oracle.apps.fnd.applcore.Profile.ge
No return
(oracle.apps.fnd.applcore.Profile.ge
No

No return
(oracle.apps.fnd.applcore.Profile.ge

Record Type Advanced Expression


_SALES_MANAGER_JOB_Co
_SALES_MANAGER_JOB_Co
Precision MaxLength Expression
80 80
0 0
1500 1500
10 10
10 10
15 15
64 64
64 64
1500 1500
10 10
0 0 def rs=newView('Resource')
return 0
18 18
10 10
80 80
10 10
0 0
32 32
64 64
0 0
ression
rn
cle.apps.fnd.applcore.Profile.get('ZCX_CUSTOM_OBJECT_EVENTS') ==
rn
cle.apps.fnd.applcore.Profile.get('ZCX_CUSTOM_OBJECT_EVENTS') ==
rn
cle.apps.fnd.applcore.Profile.get('ZCX_CUSTOM_OBJECT_EVENTS') ==

You might also like