|
RSS Feed - WebSphere MQ Support
|
RSS Feed - Message Broker Support
|
 |
|
Big project part 2 |
« View previous topic :: View next topic » |
Author |
Message
|
cahc25099025 |
Posted: Fri Jan 27, 2017 12:05 pm Post subject: Big project part 2 |
|
|
Newbie
Joined: 26 Jan 2017 Posts: 2
|
Hello all!
I'm a begginer with IIB. The fact is that i have developed an application that implements embedded cache with integration bus 9.0.0.2 This is the context:
There is some data in a db (Oracle) and must be processed by an esb to consume web services and this services responds data (business rules) and by the esb lead it to some tables in the same db.
The approach to handle this was it:
1. A message flow that leads the message to a "Database component (iib application)". Inside this component, it reset all in cache for security and makes a query for consult the quantity of rows must be processed. As the db may contain approximately 30.000 thousands records, we implemented a paged query and it divides the records in a determinated amount.
2. The group of records go to a node that divides the records individually and each record is mapped to a message model xml structure. After this mapped structure is send to consume a web service
3. After the web service answer, the response is mapped to a message model xml structure
4. This mapped structure is send to the "Database component" that makes the insert of the record in db
The problem is that the quantity of records inserted in 4th issue not match with the original in the 1st issue. Given that there is a component that takes the records that some reason are not valids or maybe an error is present. I'm gonna list by (previous) point the esql code given that these are not all the project:
1.
Code: |
CREATE COMPUTE MODULE SMF_LiquidacionComisionesBD_SelectReporte
CREATE FUNCTION Main() RETURNS BOOLEAN
BEGIN
--Asignacion de cabeceras
CALL CopyEntireMessage();
SET OutputRoot.Properties = InputRoot.Properties;
SET OutputRoot.MQMD = InputRoot.MQMD;
SET OutputRoot.XMLNSC = InputRoot.XMLNSC;
SET OutputRoot.XMLNSC.msgd:responseMessageIn.header = InputRoot.XMLNSC.msgd:requestMessageIn.header;
SET OutputRoot.XMLNSC.msgd:responseMessageIn.header.responseStatus.statusCode = STATUS_CODE_SUCCESS;
DELETE FIELD OutputRoot.XMLNSC.msgd:requestMessageIn;
-- Preparacion consulta
DECLARE totalRegistros CHARACTER '';
DECLARE paginaConsultada CHARACTER '';
DECLARE numPaginaConsultada INTEGER 0;
SET totalRegistros = getCache(TOTAL_REGISTROS);
SET paginaConsultada = getCache(PAGINA_CONSULTADA);
SET numPaginaConsultada = CAST(paginaConsultada AS INTEGER);
IF CAST(totalRegistros AS INTEGER) = 0 THEN
PROPAGATE TO TERMINAL 1;
ELSE
SET numPaginaConsultada = numPaginaConsultada + 1;
SET paginaConsultada = CAST(numPaginaConsultada AS CHARACTER);
CALL setUpdateCacheValue(PAGINA_CONSULTADA, paginaConsultada);
END IF;
--Configurar datos del cache y posterior consulta a base de datos
DECLARE contact admin CHARACTER '';
DECLARE contact admin CHARACTER '';
DECLARE registrosXpagina CHARACTER '';
DECLARE intTotalRegistros INTEGER 0;
DECLARE contact admin INTEGER 0;
DECLARE contact admin INTEGER 0;
DECLARE intRegistroXpagina INTEGER 0;
--Variables que almacenan los limites
DECLARE limiteInicial INTEGER 0;
DECLARE limiteFinal INTEGER 0;
DECLARE auxiliar INTEGER 0;
WHILE contact admin <= contact admin DO
CREATE FIELD OutputRoot.XMLNSC.msgd:responseMessageIn.body.response.adapLR:LiquidacionReporteOpResponse.LiquidacionReporteResponse;
DECLARE refOutLiquidacionReporte REFERENCE TO OutputRoot.XMLNSC.msgd:responseMessageIn.body.response.adapLR:LiquidacionReporteOpResponse.LiquidacionReporteResponse;
SET intTotalRegistros = CAST(getCache(TOTAL_REGISTROS) AS INTEGER);
SET contact admin = CAST(getCache(PAGINA_CONSULTADA) AS INTEGER);
SET contact admin = CAST(getCache(contact admin) AS INTEGER);
SET intRegistroXpagina = CAST(getCache(REGISTROS_X_PAGINA) AS INTEGER);
--Determinar limites de consulta
IF contact admin < 1 THEN
SET contact admin = 1;
ELSEIF contact admin > contact admin THEN
SET contact admin = contact admin;
END IF;
SET auxiliar = contact admin - 1;
SET limiteInicial = auxiliar * intRegistroXpagina;
SET limiteFinal = limiteInicial + intRegistroXpagina;
--Consulta a base de datos de la tabla REPORTE LIQUIDACION---
DECLARE contenidoTabla ROW;
SET contenidoTabla.fila[] = PASSTHRU('SELECT * FROM (SELECT rownum rnum, A.* FROM(SELECT LIQ.* FROM SMARTVENTAS.LIC_T_REPORTE_LIQUIDACION LIQ WHERE LIQ.ISBESTADOPROCESO = ?) A WHERE rownum <= ?) WHERE rnum > ? ORDER BY rnum' TO Database.OracleCoomevaTestODBC VALUES('0', limiteFinal, limiteInicial));
DECLARE iFilas INTEGER 0;
SET iFilas = CARDINALITY(contenidoTabla.fila[]);
IF iFilas > 0 THEN
DECLARE arreglo REFERENCE TO contenidoTabla.fila[1];
WHILE LASTMOVE (arreglo) = TRUE DO
CREATE FIRSTCHILD OF refOutLiquidacionReporte NAME 'liquidacionReporte';
SET refOutLiquidacionReporte.liquidacionReporte.ISBNUMEROPRODUCTO =arreglo.ISBNUMEROPRODUCTO;
SET refOutLiquidacionReporte.liquidacionReporte.INUTIPOPRODUCTO =arreglo.INUTIPOPRODUCTO;
SET refOutLiquidacionReporte.liquidacionReporte.ISBTIPOPRODUCTO =arreglo.ISBTIPOPRODUCTO;
SET refOutLiquidacionReporte.liquidacionReporte.INUCODIGOSISTEMA =arreglo.INUCODIGOSISTEMA;
SET refOutLiquidacionReporte.liquidacionReporte.ISBESTADO =arreglo.ISBESTADO;
SET refOutLiquidacionReporte.liquidacionReporte.INUFECHAAPERTURA =arreglo.INUFECHAAPERTURA;
SET refOutLiquidacionReporte.liquidacionReporte.ISBCODUSUARIOAPERTURA =arreglo.ISBCODUSUARIOAPERTURA;
SET refOutLiquidacionReporte.liquidacionReporte.ISBNOMUSUARIOAPERTURA =arreglo.ISBNOMUSUARIOAPERTURA;
SET refOutLiquidacionReporte.liquidacionReporte.ISBOFICINAPRODUCTO =arreglo.ISBOFICINAPRODUCTO;
SET refOutLiquidacionReporte.liquidacionReporte.ISBREGIONALPRODUCTO =arreglo.ISBREGIONALPRODUCTO;
SET refOutLiquidacionReporte.liquidacionReporte.ISBOFICINACLIENTE =arreglo.ISBOFICINACLIENTE;
SET refOutLiquidacionReporte.liquidacionReporte.ISBREGIONALCLIENTE =arreglo.ISBREGIONALCLIENTE;
SET refOutLiquidacionReporte.liquidacionReporte.INUMONTOVALOR =arreglo.INUMONTOVALOR;
SET refOutLiquidacionReporte.liquidacionReporte.ISBCANAL =arreglo.ISBCANAL;
SET refOutLiquidacionReporte.liquidacionReporte.ISBTIPOPERSONA =arreglo.ISBTIPOPERSONA;
SET refOutLiquidacionReporte.liquidacionReporte.INUNUMDOCUMENTOCLIENTE =arreglo.INUNUMDOCUMENTOCLIENTE;
SET refOutLiquidacionReporte.liquidacionReporte.ISBREGISTROSMARTVENTAS =arreglo.ISBREGISTROSMARTVENTAS;
SET refOutLiquidacionReporte.liquidacionReporte.ISBNOMBRETITULAR =arreglo.ISBNOMBRETITULAR;
SET refOutLiquidacionReporte.liquidacionReporte.ISBDESCRIPCIONLINEA =arreglo.ISBDESCRIPCIONLINEA;
SET refOutLiquidacionReporte.liquidacionReporte.ISBDAADNUMEROPRODUCTO =arreglo.ISBDAADNUMEROPRODUCTO;
SET refOutLiquidacionReporte.liquidacionReporte.ISBDAADTIPOPRODUCTO =arreglo.ISBDAADTIPOPRODUCTO;
SET refOutLiquidacionReporte.liquidacionReporte.ISBDAADDESCRIPCION =arreglo.ISBDAADDESCRIPCION;
SET refOutLiquidacionReporte.liquidacionReporte.ISBDAADVALOR =arreglo.ISBDAADVALOR;
SET refOutLiquidacionReporte.liquidacionReporte.FLAGCHEQUEDEVUELTOCANCELADO =arreglo.FLAGCHEQUEDEVUELTOCANCELADO;
SET refOutLiquidacionReporte.liquidacionReporte.FLAGEXTERNO =arreglo.FLAGEXTERNO;
SET refOutLiquidacionReporte.liquidacionReporte.FLAGTRANSFERENCIA =arreglo.FLAGTRANSFERENCIA;
SET refOutLiquidacionReporte.liquidacionReporte.VALORTRANSFERENCIA =arreglo.VALORTRANSFERENCIA;
SET refOutLiquidacionReporte.liquidacionReporte.FLAGREINVERSION =arreglo.FLAGREINVERSION;
SET refOutLiquidacionReporte.liquidacionReporte.VALORREINVERSION =arreglo.VALORREINVERSION;
SET refOutLiquidacionReporte.liquidacionReporte.FLAGPRODUCTOREDBANCOOMEVA =arreglo.FLAGPRODUCTOREDBANCOOMEVA;
SET refOutLiquidacionReporte.liquidacionReporte.SALDOPROMEDIO =arreglo.SALDOPROMEDIO;
SET refOutLiquidacionReporte.liquidacionReporte.TIPOCARTERA =arreglo.TIPOCARTERA;
SET refOutLiquidacionReporte.liquidacionReporte.FLAGPAGOANTICIPADO =arreglo.FLAGPAGOANTICIPADO;
SET refOutLiquidacionReporte.liquidacionReporte.FLAGUSOMISMOMES =arreglo.FLAGUSOMISMOMES;
SET refOutLiquidacionReporte.liquidacionReporte.DIFERENCIASALDOPROMEDIO =arreglo.DIFERENCIASALDOPROMEDIO;
SET refOutLiquidacionReporte.liquidacionReporte.INUNUMEROPAGOS =arreglo.INUNUMEROPAGOS;
SET refOutLiquidacionReporte.liquidacionReporte.FLAGCANCELMESANT =arreglo.FLAGCANCELMESANT;
SET refOutLiquidacionReporte.liquidacionReporte.FLAGAUMENCAPITAL =arreglo.FLAGAUMENCAPITAL;
SET refOutLiquidacionReporte.liquidacionReporte.FLAGAMPARADA =arreglo.FLAGAMPARADA;
SET refOutLiquidacionReporte.liquidacionReporte.ISBFRANQUICIA =arreglo.ISBFRANQUICIA;
SET refOutLiquidacionReporte.liquidacionReporte.INUINTERES =arreglo.INUINTERES;
SET refOutLiquidacionReporte.liquidacionReporte.INURETEFUENTE =arreglo.INURETEFUENTE;
SET refOutLiquidacionReporte.liquidacionReporte.FLAGCANCELMISMOMES =arreglo.FLAGCANCELMISMOMES;
SET refOutLiquidacionReporte.liquidacionReporte.ISBNOMPERFIL= arreglo.ISBNOMPERFIL;
SET refOutLiquidacionReporte.liquidacionReporte.ISBCARGO = arreglo.ISBCARGO;
SET refOutLiquidacionReporte.liquidacionReporte.ISBESTADOPROCESO = arreglo.ISBESTADOPROCESO;
SET refOutLiquidacionReporte.liquidacionReporte.IDTFECHAPROCESADO = arreglo.IDTFECHAPROCESADO;
MOVE arreglo NEXTSIBLING;
END WHILE;
PROPAGATE DELETE NONE;
DELETE FIELD OutputRoot.XMLNSC.msgd:responseMessageIn.body.response.adapLR:LiquidacionReporteOpResponse.LiquidacionReporteResponse;
SET contact admin = contact admin + 1;
CALL setUpdateCacheValue(PAGINA_CONSULTADA, CAST(contact admin AS CHARACTER));
END IF;
END WHILE;
RETURN FALSE;
END;
CREATE PROCEDURE setUpdateCacheValue(IN llave CHARACTER, IN valor CHARACTER)
LANGUAGE JAVA
EXTERNAL NAME [quote]"co.bancoomeva.cache.CacheUtil.setUpdateCacheValue"[/quote];
CREATE PROCEDURE getCache(IN llave CHARACTER)
RETURNS CHARACTER
LANGUAGE JAVA
EXTERNAL NAME [quote]"co.bancoomeva.cache.CacheUtil.getCacheValue"[/quote];
CREATE PROCEDURE CopyMessageHeaders() BEGIN
DECLARE I INTEGER 1;
DECLARE J INTEGER;
SET J = CARDINALITY(InputRoot.*[]);
WHILE I < J DO
SET OutputRoot.*[I] = InputRoot.*[I];
SET I = I + 1;
END WHILE;
END;
CREATE PROCEDURE CopyEntireMessage() BEGIN
SET OutputRoot = InputRoot;
END;
END MODULE;
[b]2. [/b]
DECLARE registrosInvalidos SHARED ROW;
CREATE COMPUTE MODULE SMF_LiquidacionComisionesOrqLiqProd_B_PropagateInBucle
CREATE FUNCTION Main() RETURNS BOOLEAN
BEGIN
SET OutputRoot.Properties = InputRoot.Properties;
SET OutputRoot.MQMD = InputRoot.MQMD;
CREATE FIELD OutputRoot.MQRFH2.Variables.LiquidacionReporte;
SET OutputRoot.XMLNSC = InputRoot.XMLNSC;
--CALL deleteCacheValue(TOTAL_REGISTROS);
CALL deleteCacheValue(REGISTROS_VALIDOS);
CALL deleteCacheValue(REGISTROS_INVALIDOS);
DECLARE I INTEGER 1;
DECLARE J INTEGER 0;
DECLARE error INTEGER;
SET error = CARDINALITY(InputRoot.XMLNSC.msgd:responseMessageIn.body.exceptionList.*[]);
IF error > 0 THEN
DECLARE refException REFERENCE TO InputRoot.XMLNSC.msgd:responseMessageIn.body.exceptionList;
DECLARE theDestine CHARACTER 'Error';
SET OutputLocalEnvironment.Destination.RouterList.DestinationData[1].labelName = theDestine;
RETURN TRUE;
ELSE
DECLARE refIn REFERENCE TO InputRoot.XMLNSC.msgd:responseMessageIn;
DECLARE refInLiquidacionReporteOpResponse REFERENCE TO refIn.body.response.adapLR:LiquidacionReporteOpResponse.LiquidacionReporteResponse;
SET J = CARDINALITY(refInLiquidacionReporteOpResponse.liquidacionReporte[]);
CALL setUpdateCacheValue(REGISTROS_TOTALES, CAST(J AS CHARACTER) );
DECLARE iCont INTEGER 0;
WHILE I <= J DO
SET OutputRoot.MQRFH2.Variables.LiquidacionReporte.holder = convertXMLNSCToXmlString(refInLiquidacionReporteOpResponse.liquidacionReporte[I]);
CREATE FIELD OutputRoot.XMLNSC.msgd:responseMessageIn;
DECLARE refOut REFERENCE TO OutputRoot.XMLNSC.msgd:responseMessageIn;
CREATE FIELD refOut.header;
SET refOut.header = refIn.header;
CALL Util_removeCallBackResponse(OutputRoot);
CREATE FIELD refOut.body.response.adapLR:LiquidacionReporteOpResponse.LiquidacionReporteResponse;
DECLARE refOutLiqProd REFERENCE TO refOut.body.response.adapLR:LiquidacionReporteOpResponse.LiquidacionReporteResponse;
DECLARE theDestine CHARACTER 'Error';
SET Environment.Variables.LiquidacionReporte = refInLiquidacionReporteOpResponse.liquidacionReporte[I];
SET refOutLiqProd.liquidacionReporte[1].ISBNUMEROPRODUCTO = refInLiquidacionReporteOpResponse.liquidacionReporte[I].ISBNUMEROPRODUCTO;
SET refOutLiqProd.liquidacionReporte[1].INUTIPOPRODUCTO = refInLiquidacionReporteOpResponse.liquidacionReporte[I].INUTIPOPRODUCTO;
SET refOutLiqProd.liquidacionReporte[1].ISBTIPOPRODUCTO = refInLiquidacionReporteOpResponse.liquidacionReporte[I].ISBTIPOPRODUCTO;
SET refOutLiqProd.liquidacionReporte[1].INUCODIGOSISTEMA = refInLiquidacionReporteOpResponse.liquidacionReporte[I].INUCODIGOSISTEMA;
SET refOutLiqProd.liquidacionReporte[1].ISBESTADO = refInLiquidacionReporteOpResponse.liquidacionReporte[I].ISBESTADO;
SET refOutLiqProd.liquidacionReporte[1].INUFECHAAPERTURA = refInLiquidacionReporteOpResponse.liquidacionReporte[I].INUFECHAAPERTURA;
SET refOutLiqProd.liquidacionReporte[1].ISBCODUSUARIOAPERTURA = refInLiquidacionReporteOpResponse.liquidacionReporte[I].ISBCODUSUARIOAPERTURA;
SET refOutLiqProd.liquidacionReporte[1].ISBNOMUSUARIOAPERTURA = refInLiquidacionReporteOpResponse.liquidacionReporte[I].ISBNOMUSUARIOAPERTURA;
SET refOutLiqProd.liquidacionReporte[1].ISBOFICINAPRODUCTO = refInLiquidacionReporteOpResponse.liquidacionReporte[I].ISBOFICINAPRODUCTO;
SET refOutLiqProd.liquidacionReporte[1].ISBREGIONALPRODUCTO = refInLiquidacionReporteOpResponse.liquidacionReporte[I].ISBREGIONALPRODUCTO;
SET refOutLiqProd.liquidacionReporte[1].ISBOFICINACLIENTE = refInLiquidacionReporteOpResponse.liquidacionReporte[I].ISBOFICINACLIENTE;
SET refOutLiqProd.liquidacionReporte[1].ISBREGIONALCLIENTE = refInLiquidacionReporteOpResponse.liquidacionReporte[I].ISBREGIONALCLIENTE;
SET refOutLiqProd.liquidacionReporte[1].INUMONTOVALOR = refInLiquidacionReporteOpResponse.liquidacionReporte[I].INUMONTOVALOR;
SET refOutLiqProd.liquidacionReporte[1].ISBCANAL = refInLiquidacionReporteOpResponse.liquidacionReporte[I].ISBCANAL;
SET refOutLiqProd.liquidacionReporte[1].ISBTIPOPERSONA = refOutLiqProd.InLiquidacionReporteOpResponse.liquidacionReporte[I].ISBTIPOPERSONA;
SET refOutLiqProd.liquidacionReporte[1].INUNUMDOCUMENTOCLIENTE = refInLiquidacionReporteOpResponse.liquidacionReporte[I].INUNUMDOCUMENTOCLIENTE;
SET refOutLiqProd.liquidacionReporte[1].ISBREGISTROSMARTVENTAS = refInLiquidacionReporteOpResponse.liquidacionReporte[I].ISBREGISTROSMARTVENTAS;
SET refOutLiqProd.liquidacionReporte[1].ISBNOMBRETITULAR = refInLiquidacionReporteOpResponse.liquidacionReporte[I].ISBNOMBRETITULAR;
SET refOutLiqProd.liquidacionReporte[1].ISBDESCRIPCIONLINEA = refInLiquidacionReporteOpResponse.liquidacionReporte[I].ISBDESCRIPCIONLINEA;
SET refOutLiqProd.liquidacionReporte[1].ISBDAADNUMEROPRODUCTO = refInLiquidacionReporteOpResponse.liquidacionReporte[I].ISBDAADNUMEROPRODUCTO;
SET refOutLiqProd.liquidacionReporte[1].ISBDAADTIPOPRODUCTO = refInLiquidacionReporteOpResponse.liquidacionReporte[I].ISBDAADTIPOPRODUCTO;
SET refOutLiqProd.liquidacionReporte[1].ISBDAADDESCRIPCION = refInLiquidacionReporteOpResponse.liquidacionReporte[I].ISBDAADDESCRIPCION;
SET refOutLiqProd.liquidacionReporte[1].ISBDAADVALOR = refInLiquidacionReporteOpResponse.liquidacionReporte[I].ISBDAADVALOR;
SET refOutLiqProd.liquidacionReporte[1].FLAGCHEQUEDEVUELTOCANCELADO = refInLiquidacionReporteOpResponse.liquidacionReporte[I].FLAGCHEQUEDEVUELTOCANCELADO;
SET refOutLiqProd.liquidacionReporte[1].FLAGEXTERNO = refInLiquidacionReporteOpResponse.liquidacionReporte[I].FLAGEXTERNO;
SET refOutLiqProd.liquidacionReporte[1].FLAGTRANSFERENCIA = refInLiquidacionReporteOpResponse.liquidacionReporte[I].FLAGTRANSFERENCIA;
SET refOutLiqProd.liquidacionReporte[1].VALORTRANSFERENCIA = refInLiquidacionReporteOpResponse.liquidacionReporte[I].VALORTRANSFERENCIA;
SET refOutLiqProd.liquidacionReporte[1].FLAGREINVERSION = refInLiquidacionReporteOpResponse.liquidacionReporte[I].FLAGREINVERSION;
SET refOutLiqProd.liquidacionReporte[1].VALORREINVERSION = refInLiquidacionReporteOpResponse.liquidacionReporte[I].VALORREINVERSION;
SET refOutLiqProd.liquidacionReporte[1].FLAGPRODUCTOREDBANCOOMEVA = refInLiquidacionReporteOpResponse.liquidacionReporte[I].FLAGPRODUCTOREDBANCOOMEVA;
SET refOutLiqProd.liquidacionReporte[1].SALDOPROMEDIO = refInLiquidacionReporteOpResponse.liquidacionReporte[I].SALDOPROMEDIO;
SET refOutLiqProd.liquidacionReporte[1].TIPOCARTERA = refInLiquidacionReporteOpResponse.liquidacionReporte[I].TIPOCARTERA;
SET refOutLiqProd.liquidacionReporte[1].FLAGPAGOANTICIPADO = refInLiquidacionReporteOpResponse.liquidacionReporte[I].FLAGPAGOANTICIPADO;
SET refOutLiqProd.liquidacionReporte[1].FLAGUSOMISMOMES = refInLiquidacionReporteOpResponse.liquidacionReporte[I].FLAGUSOMISMOMES;
SET refOutLiqProd.liquidacionReporte[1].DIFERENCIASALDOPROMEDIO = refInLiquidacionReporteOpResponse.liquidacionReporte[I].DIFERENCIASALDOPROMEDIO;
SET refOutLiqProd.liquidacionReporte[1].INUNUMEROPAGOS = refInLiquidacionReporteOpResponse.liquidacionReporte[I].INUNUMEROPAGOS;
SET refOutLiqProd.liquidacionReporte[1].FLAGCANCELMESANT = refInLiquidacionReporteOpResponse.liquidacionReporte[I].FLAGCANCELMESANT;
SET refOutLiqProd.liquidacionReporte[1].FLAGAUMENCAPITAL = refInLiquidacionReporteOpResponse.liquidacionReporte[I].FLAGAUMENCAPITAL;
SET refOutLiqProd.liquidacionReporte[1].FLAGAMPARADA = refInLiquidacionReporteOpResponse.liquidacionReporte[I].FLAGAMPARADA;
SET refOutLiqProd.liquidacionReporte[1].ISBFRANQUICIA = refInLiquidacionReporteOpResponse.liquidacionReporte[I].ISBFRANQUICIA;
SET refOutLiqProd.liquidacionReporte[1].INUINTERES = refInLiquidacionReporteOpResponse.liquidacionReporte[I].INUINTERES;
SET refOutLiqProd.liquidacionReporte[1].INURETEFUENTE = refInLiquidacionReporteOpResponse.liquidacionReporte[I].INURETEFUENTE;
SET refOutLiqProd.liquidacionReporte[1].FLAGCANCELMISMOMES = refInLiquidacionReporteOpResponse.liquidacionReporte[I].FLAGCANCELMISMOMES;
SET refOutLiqProd.liquidacionReporte[1].ISBNOMPERFIL = refInLiquidacionReporteOpResponse.liquidacionReporte[I].ISBNOMPERFIL;
SET refOutLiqProd.liquidacionReporte[1].ISBCARGO = refInLiquidacionReporteOpResponse.liquidacionReporte[I].ISBCARGO;
SET refOutLiqProd.liquidacionReporte[1].ISBESTADOPROCESO = refInLiquidacionReporteOpResponse.liquidacionReporte[I].ISBESTADOPROCESO;
SET refOutLiqProd.liquidacionReporte[1].IDTFECHAPROCESADO = refInLiquidacionReporteOpResponse.liquidacionReporte[I].IDTFECHAPROCESADO;
DECLARE refArrLiqProd REFERENCE TO refOutLiqProd.liquidacionReporte[1];--OutputRoot.XMLNSC.msgd:responseMessageIn.body.response.adapLR:LiquidacionReporteOpResponse.LiquidacionReporteResponse.liquidacionReporte[I];
DECLARE tamanoRegistrosInvalidos INTEGER;
SET tamanoRegistrosInvalidos = J;
IF tamanoRegistrosInvalidos > 0 THEN
IF refArrLiqProd.ISBTIPOPRODUCTO = 'AFC' THEN
IF refArrLiqProd.ISBCARGO IS NOT NULL AND
refArrLiqProd.FLAGCHEQUEDEVUELTOCANCELADO IS NOT NULL AND
refArrLiqProd.ISBCODUSUARIOAPERTURA IS NOT NULL AND
refArrLiqProd.ISBREGISTROSMARTVENTAS IS NOT NULL AND
refArrLiqProd.INUMONTOVALOR IS NOT NULL AND
(refArrLiqProd.ISBCARGO = 'ASESOR VENTAS BCO' OR refArrLiqProd.ISBCARGO = 'EJECUTIVO COMERCIAL BCO')
THEN
SET theDestine = 'LiqProdAFC';
ELSE
SET theDestine = 'Registro_Invalido';
SET iCont = iCont + 1;
SET registrosInvalidos.fila[iCont] = refInLiquidacionReporteOpResponse.liquidacionReporte[I];
END IF;
ELSEIF refArrLiqProd.ISBTIPOPRODUCTO = 'AHO' THEN
IF refArrLiqProd.ISBREGISTROSMARTVENTAS IS NOT NULL AND
refArrLiqProd.FLAGCHEQUEDEVUELTOCANCELADO IS NOT NULL AND
refArrLiqProd.ISBCARGO IS NOT NULL AND
refArrLiqProd.ISBCODUSUARIOAPERTURA IS NOT NULL AND
refArrLiqProd.SALDOPROMEDIO IS NOT NULL AND
(refArrLiqProd.ISBCARGO = 'EJECUTIVO COMERCIAL BCO' OR refArrLiqProd.ISBCARGO = 'ASESOR VENTAS BCO')
THEN
SET theDestine = 'LiqProdCA';
ELSE
SET theDestine = 'Registro_Invalido';
SET iCont = iCont + 1;
SET registrosInvalidos.fila[iCont] = refInLiquidacionReporteOpResponse.liquidacionReporte[I];
END IF;
ELSEIF refArrLiqProd.ISBTIPOPRODUCTO = 'CAP' OR refArrLiqProd.ISBTIPOPRODUCTO = 'COL' THEN
IF refArrLiqProd.ISBCODUSUARIOAPERTURA IS NOT NULL AND
refArrLiqProd.ISBNOMPERFIL IS NOT NULL AND
refArrLiqProd.ISBCARGO IS NOT NULL AND
refArrLiqProd.DIFERENCIASALDOPROMEDIO IS NOT NULL AND
(refArrLiqProd.ISBCARGO = 'ASESOR VENTAS BCO' OR refArrLiqProd.ISBCARGO = 'EJECUTIVO COMERCIAL BCO')
THEN
SET theDestine = 'LiqProdCart';
ELSE
SET theDestine = 'Registro_Invalido';
SET iCont = iCont + 1;
SET registrosInvalidos.fila[iCont] = refInLiquidacionReporteOpResponse.liquidacionReporte[I];
END IF;
ELSEIF refArrLiqProd.ISBTIPOPRODUCTO = 'CDT' THEN
IF refArrLiqProd.ISBNUMEROPRODUCTO IS NOT NULL AND
refArrLiqProd.INUNUMDOCUMENTOCLIENTE IS NOT NULL AND
refArrLiqProd.ISBTIPOPERSONA IS NOT NULL AND
refArrLiqProd.ISBCODUSUARIOAPERTURA IS NOT NULL AND
refArrLiqProd.ISBNOMPERFIL IS NOT NULL AND
refArrLiqProd.ISBCARGO IS NOT NULL AND
refArrLiqProd.INUMONTOVALOR IS NOT NULL AND
refArrLiqProd.INUINTERES IS NOT NULL AND
refArrLiqProd.INURETEFUENTE IS NOT NULL AND
refArrLiqProd.ISBREGISTROSMARTVENTAS IS NOT NULL AND
refArrLiqProd.FLAGCANCELMESANT IS NOT NULL AND
refArrLiqProd.FLAGCANCELMISMOMES IS NOT NULL AND
refArrLiqProd.FLAGTRANSFERENCIA IS NOT NULL AND
refArrLiqProd.FLAGAUMENCAPITAL IS NOT NULL AND
refArrLiqProd.VALORREINVERSION IS NOT NULL AND
refArrLiqProd.FLAGCHEQUEDEVUELTOCANCELADO IS NOT NULL AND
refArrLiqProd.FLAGEXTERNO IS NOT NULL AND refArrLiqProd.ISBCARGO = 'ASESOR VENTAS BCO'
THEN
SET theDestine = 'LiqProdCDT';
ELSE
SET theDestine = 'Registro_Invalido';
SET iCont = iCont + 1;
SET registrosInvalidos.fila[iCont] = refInLiquidacionReporteOpResponse.liquidacionReporte[I];
END IF;
ELSEIF refArrLiqProd.ISBTIPOPRODUCTO = 'CTE' THEN
IF refArrLiqProd.ISBCARGO IS NOT NULL AND
refArrLiqProd.FLAGCHEQUEDEVUELTOCANCELADO IS NOT NULL AND
refArrLiqProd.ISBCODUSUARIOAPERTURA IS NOT NULL AND
refArrLiqProd.ISBREGISTROSMARTVENTAS IS NOT NULL AND
refArrLiqProd.SALDOPROMEDIO IS NOT NULL AND
(refArrLiqProd.ISBCARGO = 'ASESOR VENTAS BCO' OR refArrLiqProd.ISBCARGO = 'EJECUTIVO COMERCIAL BCO')
THEN
SET theDestine = 'LiqProdCC';
ELSE
SET theDestine = 'Registro_Invalido';
SET iCont = iCont + 1;
SET registrosInvalidos.fila[iCont] = refInLiquidacionReporteOpResponse.liquidacionReporte[I];
END IF;
ELSEIF refArrLiqProd.ISBTIPOPRODUCTO = 'CUA' THEN
IF refArrLiqProd.ISBNUMEROPRODUCTO IS NOT NULL AND
refArrLiqProd.INUNUMDOCUMENTOCLIENTE IS NOT NULL AND
refArrLiqProd.ISBTIPOPERSONA IS NOT NULL AND
refArrLiqProd.ISBDAADTIPOPRODUCTO IS NOT NULL AND
refArrLiqProd.ISBCODUSUARIOAPERTURA IS NOT NULL AND
refArrLiqProd.ISBNOMPERFIL IS NOT NULL AND
refArrLiqProd.ISBCARGO IS NOT NULL AND
refArrLiqProd.INUMONTOVALOR IS NOT NULL AND
refArrLiqProd.ISBREGISTROSMARTVENTAS IS NOT NULL AND
refArrLiqProd.FLAGAUMENCAPITAL IS NOT NULL AND
refArrLiqProd.FLAGEXTERNO IS NOT NULL AND
refArrLiqProd.FLAGUSOMISMOMES IS NOT NULL AND
(refArrLiqProd.ISBCARGO = 'ASESOR VENTAS BCO' OR refArrLiqProd.ISBCARGO = 'EJECUTIVO COMERCIAL BCO' OR refArrLiqProd.ISBCARGO = 'ASESOR SERVICIOS BCO')
THEN
SET theDestine = 'LiqProdCupoActivo';
ELSE
SET theDestine = 'Registro_Invalido';
SET iCont = iCont + 1;
SET registrosInvalidos.fila[iCont] = refInLiquidacionReporteOpResponse.liquidacionReporte[I];
END IF;
ELSEIF refArrLiqProd.ISBTIPOPRODUCTO = 'PAP' THEN
IF refArrLiqProd.ISBCARGO IS NOT NULL AND
refArrLiqProd.INUNUMEROPAGOS IS NOT NULL AND
refArrLiqProd.INUMONTOVALOR IS NOT NULL AND
refArrLiqProd.FLAGPRODUCTOREDBANCOOMEVA IS NOT NULL AND
refArrLiqProd.FLAGCHEQUEDEVUELTOCANCELADO IS NOT NULL AND
refArrLiqProd.ISBREGISTROSMARTVENTAS IS NOT NULL AND
refArrLiqProd.ISBCODUSUARIOAPERTURA IS NOT NULL AND
(refArrLiqProd.ISBCARGO = 'ASESOR VENTAS BCO' OR refArrLiqProd.ISBCARGO = 'EJECUTIVO COMERCIAL BCO' OR refArrLiqProd.ISBCARGO = 'ASESOR SERVICIOS BCO')
THEN
SET theDestine = 'LiqProdPAP';
ELSE
SET theDestine = 'Registro_Invalido';
SET iCont = iCont + 1;
SET registrosInvalidos.fila[iCont] = refInLiquidacionReporteOpResponse.liquidacionReporte[I];
END IF;
ELSEIF refArrLiqProd.ISBTIPOPRODUCTO = 'TAJ' THEN
IF refArrLiqProd.ISBCODUSUARIOAPERTURA IS NOT NULL AND
refArrLiqProd.FLAGAMPARADA IS NOT NULL AND
refArrLiqProd.ISBTIPOPERSONA IS NOT NULL AND
refArrLiqProd.ISBREGISTROSMARTVENTAS IS NOT NULL AND
refArrLiqProd.ISBOFICINAPRODUCTO IS NOT NULL AND
refArrLiqProd.ISBFRANQUICIA IS NOT NULL AND
refArrLiqProd.ISBCARGO IS NOT NULL AND
(refArrLiqProd.ISBCARGO = 'ASESOR VENTAS BCO' OR refArrLiqProd.ISBCARGO = 'EJECUTIVO COMERCIAL BCO') AND
(refArrLiqProd.ISBTIPOPERSONA = 'Persona Natural' OR refArrLiqProd.ISBTIPOPERSONA = 'PERSONA NATURAL')
THEN
SET theDestine = 'LiqProdTC';
ELSE
SET theDestine = 'Registro_Invalido';
SET iCont = iCont + 1;
SET registrosInvalidos.fila[iCont] = refInLiquidacionReporteOpResponse.liquidacionReporte[I];
END IF;
ELSEIF refArrLiqProd.ISBTIPOPRODUCTO = 'DES' THEN
IF refArrLiqProd.ISBCODUSUARIOAPERTURA IS NOT NULL AND
refArrLiqProd.INUMONTOVALOR IS NOT NULL AND
refArrLiqProd.ISBREGISTROSMARTVENTAS IS NOT NULL AND
refArrLiqProd.ISBCARGO IS NOT NULL AND
refArrLiqProd.FLAGEXTERNO IS NOT NULL AND
refArrLiqProd.ISBTIPOPERSONA IS NOT NULL AND
refArrLiqProd.ISBCARGO = 'EJECUTIVO COMERCIAL BCO' THEN
SET theDestine = 'LiqProdDES';
ELSE
SET theDestine = 'Registro_Invalido';
SET iCont = iCont + 1;
SET registrosInvalidos.fila[iCont] = refInLiquidacionReporteOpResponse.liquidacionReporte[I];
END IF;
END IF;
--Enruta al siguiente label asignado
SET OutputLocalEnvironment.Destination.RouterList.DestinationData[1].labelName = theDestine;
PROPAGATE DELETE NONE;
--Incrementa contador para control del ciclo
SET I = I + 1;
DELETE FIELD refOut.body.response.adapLR:LiquidacionReporteOpResponse.LiquidacionReporteResponse;
END IF;
END WHILE;
RETURN FALSE;
END IF;
END;
--CREATE PROCEDURE setUpdateCacheValue(IN llave CHARACTER, IN valor CHARACTER)
--LANGUAGE JAVA
--EXTERNAL NAME [quote]"co.bancoomeva.cache.CacheUtil.setUpdateCacheValue"[/quote];
CREATE PROCEDURE CopyMessageHeaders() BEGIN
DECLARE I INTEGER 1;
DECLARE J INTEGER;
SET J = CARDINALITY(InputRoot.*[]);
WHILE I < J DO
SET OutputRoot.*[I] = InputRoot.*[I];
SET I = I + 1;
END WHILE;
END;
CREATE PROCEDURE CopyEntireMessage() BEGIN
SET OutputRoot = InputRoot;
END;
END MODULE;
[b]3. [/b]
CREATE COMPUTE MODULE SMF_LiquidacionComisionesOrqLiqProd_C_Route
CREATE FUNCTION Main() RETURNS BOOLEAN
BEGIN
DECLARE theDestine CHARACTER 'Error';
DECLARE refRespuestaRegla INTEGER;
DECLARE error INTEGER;
SET refRespuestaRegla = CARDINALITY(InputRoot.XMLNSC.msgd:responseMessageIn.body.*[]);
SET error = CARDINALITY(InputRoot.XMLNSC.msgd:responseMessageIn.body.exceptionList.*[]);
IF error > 0 THEN
DECLARE refException REFERENCE TO InputRoot.XMLNSC.msgd:responseMessageIn.body.exceptionList;
SET OutputLocalEnvironment.Destination.RouterList.DestinationData[1].labelName = theDestine;
ELSE
IF refRespuestaRegla > 0 THEN
CALL CopyEntireMessage();
CREATE FIELD Environment.Variables.LiquidacionReporte;
DECLARE refInLiquidacionReporte REFERENCE TO Environment.Variables.LiquidacionReporte;
DECLARE xmlString CHARACTER;
SET xmlString = InputRoot.MQRFH2.Variables.LiquidacionReporte;
CALL convertXmlStringToXMLNSC(xmlString, refInLiquidacionReporte);
DECLARE refISBTIPOPRODUCTO REFERENCE TO refInLiquidacionReporte.XMLNSC.liquidacionReporte.ISBTIPOPRODUCTO;
IF refISBTIPOPRODUCTO = 'AFC' THEN
SET theDestine = 'LiqProdAFC';
END IF;
IF refISBTIPOPRODUCTO = 'AHO' THEN
SET theDestine = 'LiqProdCA';
END IF;
IF refISBTIPOPRODUCTO = 'CAP' OR refISBTIPOPRODUCTO = 'COL' THEN
SET theDestine = 'LiqProdCart';
END IF;
IF refISBTIPOPRODUCTO = 'CDT' THEN
SET theDestine = 'LiqProdCDT';
END IF;
IF refISBTIPOPRODUCTO = 'CTE' THEN
SET theDestine = 'LiqProdCC';
END IF;
IF refISBTIPOPRODUCTO = 'CUA' THEN
SET theDestine = 'LiqProdCupoActivo';
END IF;
IF refISBTIPOPRODUCTO = 'PAP' THEN
SET theDestine = 'LiqProdPAP';
END IF;
IF refISBTIPOPRODUCTO = 'TAJ' THEN
SET theDestine = 'LiqProdTC';
END IF;
IF refISBTIPOPRODUCTO = 'DES' THEN
SET theDestine = 'LiqProdDES';
END IF;
ELSE
CALL CopyEntireMessage();
CREATE FIELD Environment.Variables.LiquidacionReporte;
DECLARE refInLiquidacionReporte REFERENCE TO Environment.Variables.LiquidacionReporte;
SET theDestine = 'ExcepcionRegla';
END IF;
SET OutputLocalEnvironment.Destination.RouterList.DestinationData[1].labelName = theDestine;
END IF;
RETURN TRUE;
END;
CREATE PROCEDURE CopyMessageHeaders() BEGIN
DECLARE I INTEGER 1;
DECLARE J INTEGER;
SET J = CARDINALITY(InputRoot.*[]);
WHILE I < J DO
SET OutputRoot.*[I] = InputRoot.*[I];
SET I = I + 1;
END WHILE;
END;
CREATE PROCEDURE CopyEntireMessage() BEGIN
SET OutputRoot = InputRoot;
END;
END MODULE;
[b]4. [/b]
CREATE COMPUTE MODULE SMF_LiquidacionComisionesBD_InsertProductividad
CREATE FUNCTION Main() RETURNS BOOLEAN
BEGIN
SET Environment.Variables.Properties = InputRoot.Properties;
SET Environment.Variables.MQMD = InputRoot.MQMD;
SET Environment.Variables.XMLNSC = InputRoot.XMLNSC;
SET Environment.Variables.LiquidacionReporte = Environment.Variables.LiquidacionReporte;
CALL CopyEntireMessage();
SET OutputRoot.XMLNSC.msgd:responseMessageIn.header = OutputRoot.XMLNSC.msgd:requestMessageIn.header;
SET OutputRoot.XMLNSC.msgd:responseMessageIn.header.responseStatus.statusCode = STATUS_CODE_SUCCESS;
DELETE FIELD OutputRoot.XMLNSC.msgd:requestMessageIn;
DECLARE refIn REFERENCE TO InputRoot.XMLNSC.msgd:requestMessageIn.Body.request.adapLP:LiquidacionProductividadOpRequest;
DECLARE refInLiqProd REFERENCE TO refIn.LiquidacionProductividadRequest.liquidacionProductividad;
DECLARE pras_mes_liquidado_des CHARACTER;
DECLARE pras_fecha_liquidacion_date TIMESTAMP;
DECLARE pras_regional_cliente_desc CHARACTER;
DECLARE pras_oficina_cliente_desc CHARACTER;
DECLARE pras_regional_radicacion_desc CHARACTER;
DECLARE pras_oficina_radicacin_desc CHARACTER;
DECLARE pras_numero_producto_desc CHARACTER;
DECLARE pras_tipo_producto_desc CHARACTER;
DECLARE pras_documento_cliente_desc CHARACTER;
DECLARE pras_tipo_persona_desc CHARACTER;
DECLARE pras_codigo_usuario_desc CHARACTER;
DECLARE pras_perfil_usuario_desc CHARACTER;
DECLARE pras_cargo_usuario_desc CHARACTER;
DECLARE pras_flag_smarventas_desc CHARACTER;
DECLARE pras_flag_ref_externa_desc CHARACTER;
DECLARE pras_monto_pagado_vlr DECIMAL;
DECLARE pras_intereses_vlr DECIMAL;
DECLARE pras_retefuente_vlr DECIMAL;
DECLARE pras_flag_cancelaciones_desc CHARACTER;
DECLARE pras_flag_debito_cuenta_desc CHARACTER;
DECLARE pras_flag_aum_cap_desc CHARACTER;
DECLARE pras_valor_invertido_vlr DECIMAL;
DECLARE pras_flag_apli_com_desc CHARACTER;
DECLARE pras_porc_liq_comision_num DECIMAL;
DECLARE pras_motivo_rechazo_desc CHARACTER;
DECLARE pras_flag_aumento_cupo_desc CHARACTER;
DECLARE pras_flag_uso_mismo_mes_desc CHARACTER;
DECLARE pras_cantidad_cupo_num DECIMAL;
DECLARE pras_cant_cupo_aumento_num DECIMAL;
DECLARE pras_cant_refe_externa_num DECIMAL;
DECLARE pras_cant_uso_mismo_mes_num DECIMAL;
DECLARE pras_cantidad_a_liquidar_num DECIMAL;
DECLARE pras_saldo_promedio_vlr DECIMAL;
DECLARE pras_pagos_realizados_num DECIMAL;
DECLARE pras_plan_ahorro_vlr DECIMAL;
DECLARE pras_flag_misma_fuerza_desc CHARACTER;
DECLARE pras_monto_afc_vlr DECIMAL;
DECLARE pras_flag_tar_amparada_desc CHARACTER;
DECLARE pras_saldo_promedio_aho_vlr DECIMAL;
DECLARE pras_saldo_promedio_cte_vlr DECIMAL;
DECLARE pras_flag_valido CHARACTER;
DECLARE pattern CHARACTER 'yyyyMMdd';
SET pras_mes_liquidado_des = refInLiqProd.PRAS_MES_LIQUIDADO_DESC;
SET pras_fecha_liquidacion_date = CAST(refInLiqProd.PRAS_FECHA_LIQUIDACION_DATE AS DATE FORMAT pattern);
SET pras_regional_cliente_desc =refInLiqProd.PRAS_REGIONAL_CLIENTE_DESC;
SET pras_oficina_cliente_desc =refInLiqProd.PRAS_OFICINA_CLIENTE_DESC;
SET pras_regional_radicacion_desc =refInLiqProd.PRAS_REGIONAL_RADICACION_DESC;
SET pras_oficina_radicacin_desc =refInLiqProd.PRAS_OFICINA_RADICACION_DESC;
SET pras_numero_producto_desc =refInLiqProd.PRAS_NUMERO_PRODUCTO_DESC;
SET pras_tipo_producto_desc =refInLiqProd.PRAS_TIPO_PRODUCTO_DESC;
SET pras_documento_cliente_desc =refInLiqProd.PRAS_DOCUMENTO_CLIENTE_DESC;
SET pras_tipo_persona_desc =refInLiqProd.PRAS_TIPO_PERSONA_DESC;
SET pras_codigo_usuario_desc =refInLiqProd.PRAS_CODIGO_USUARIO_DESC;
SET pras_perfil_usuario_desc =refInLiqProd.PRAS_PERFIL_USUARIO_DESC;
SET pras_cargo_usuario_desc =refInLiqProd.PRAS_CARGO_USUARIO_DESC;
SET pras_flag_smarventas_desc =refInLiqProd.PRAS_FLAG_SMARVENTAS_DESC;
SET pras_flag_ref_externa_desc =refInLiqProd.PRAS_FLAG_REF_EXTERNA_DESC;
SET pras_monto_pagado_vlr =refInLiqProd.PRAS_MONTO_PAGADO_VLR;
SET pras_intereses_vlr =refInLiqProd.PRAS_INTERESES_VLR;
SET pras_retefuente_vlr =refInLiqProd.PRAS_RETEFUENTE_VLR;
SET pras_flag_cancelaciones_desc =refInLiqProd.PRAS_FLAG_CANCELACIONES_DESC;
SET pras_flag_debito_cuenta_desc =refInLiqProd.PRAS_FLAG_DEBITO_CUENTA_DESC;
SET pras_flag_aum_cap_desc =refInLiqProd.PRAS_FLAG_AUM_CAP_DESC;
SET pras_valor_invertido_vlr =refInLiqProd.PRAS_VALOR_INVERTIDO_VLR;
SET pras_flag_apli_com_desc =refInLiqProd.PRAS_FLAG_APLI_COM_DESC;
SET pras_porc_liq_comision_num =refInLiqProd.PRAS_PORC_LIQ_COMISION_NUM;
SET pras_motivo_rechazo_desc =refInLiqProd.PRAS_MOTIVO_RECHAZO_DESC;
SET pras_flag_aumento_cupo_desc =refInLiqProd.PRAS_FLAG_AUMENTO_CUPO_DESC;
SET pras_flag_uso_mismo_mes_desc =refInLiqProd.PRAS_FLAG_USO_MISMO_MES_DESC;
SET pras_cantidad_cupo_num =refInLiqProd.PRAS_CANTIDAD_CUPO_NUM;
SET pras_cant_cupo_aumento_num =refInLiqProd.PRAS_CANT_CUPO_AUMENTO_NUM;
SET pras_cant_refe_externa_num =refInLiqProd.PRAS_CANT_REFE_EXTERNA_NUM;
SET pras_cant_uso_mismo_mes_num =refInLiqProd.PRAS_CANT_USO_MISMO_MES_NUM;
SET pras_cantidad_a_liquidar_num =refInLiqProd.PRAS_CANTIDAD_A_LIQUIDAR_NUM;
SET pras_saldo_promedio_vlr =refInLiqProd.PRAS_SALDO_PROMEDIO_VLR;
SET pras_pagos_realizados_num =refInLiqProd.PRAS_PAGOS_REALIZADOS_NUM;
SET pras_plan_ahorro_vlr =refInLiqProd.PRAS_PLAN_AHORRO_VLR;
SET pras_flag_misma_fuerza_desc =refInLiqProd.PRAS_FLAG_MISMA_FUERZA_DESC;
SET pras_monto_afc_vlr =refInLiqProd.PRAS_MONTO_AFC_VLR;
SET pras_flag_tar_amparada_desc =refInLiqProd.PRAS_FLAG_TAR_AMPARADA_DESC;
SET pras_saldo_promedio_aho_vlr =refInLiqProd.PRAS_SALDO_PROMEDIO_AHO_VLR;
SET pras_saldo_promedio_cte_vlr =refInLiqProd.PRAS_SALDO_PROMEDIO_CTE_VLR;
SET pras_flag_valido =refInLiqProd.PRAS_FLAG_VALIDO_CHAR;
INSERT INTO Database.OracleCoomevaTestODBC.SMARTVENTAS.LIC_T_PRODUCTIVIDAD_ASESOR
(PRAS_MES_LIQUIDADO_DESC,
PRAS_FECHA_LIQUIDACION_DATE,
PRAS_REGIONAL_CLIENTE_DESC,
PRAS_OFICINA_CLIENTE_DESC,
PRAS_REGIONAL_RADICACION_DESC,
PRAS_OFICINA_RADICACION_DESC,
PRAS_NUMERO_PRODUCTO_DESC,
PRAS_TIPO_PRODUCTO_DESC,
PRAS_DOCUMENTO_CLIENTE_DESC,
PRAS_TIPO_PERSONA_DESC,
PRAS_CODIGO_USUARIO_DESC,
PRAS_PERFIL_USUARIO_DESC,
PRAS_CARGO_USUARIO_DESC,
PRAS_FLAG_SMARVENTAS_DESC,
PRAS_FLAG_REF_EXTERNA_DESC,
PRAS_MONTO_PAGADO_VLR,
PRAS_INTERESES_VLR,
PRAS_RETEFUENTE_VLR,
PRAS_FLAG_CANCELACIONES_DESC,
PRAS_FLAG_DEBITO_CUENTA_DESC,
PRAS_FLAG_AUM_CAP_DESC,
PRAS_VALOR_INVERTIDO_VLR,
PRAS_FLAG_APLI_COM_DESC,
PRAS_PORC_LIQ_COMISION_NUM,
PRAS_MOTIVO_RECHAZO_DESC,
PRAS_FLAG_AUMENTO_CUPO_DESC,
PRAS_FLAG_USO_MISMO_MES_DESC,
PRAS_CANTIDAD_CUPO_NUM,
PRAS_CANT_CUPO_AUMENTO_NUM,
PRAS_CANT_REFE_EXTERNA_NUM,
PRAS_CANT_USO_MISMO_MES_NUM,
PRAS_CANTIDAD_A_LIQUIDAR_NUM,
PRAS_SALDO_PROMEDIO_VLR,
PRAS_PAGOS_REALIZADOS_NUM,
PRAS_PLAN_AHORRO_VLR,
PRAS_FLAG_MISMA_FUERZA_DESC,
PRAS_MONTO_AFC_VLR,
PRAS_FLAG_TAR_AMPARADA_DESC,
PRAS_SALDO_PROMEDIO_AHO_VLR,
PRAS_SALDO_PROMEDIO_CTE_VLR,
PRAS_FLAG_VALIDO_CHAR)
VALUES
(pras_mes_liquidado_des,
pras_fecha_liquidacion_date,
pras_regional_cliente_desc,
pras_oficina_cliente_desc,
pras_regional_radicacion_desc,
pras_oficina_radicacin_desc,
pras_numero_producto_desc,
pras_tipo_producto_desc,
pras_documento_cliente_desc,
pras_tipo_persona_desc,
pras_codigo_usuario_desc,
pras_perfil_usuario_desc,
pras_cargo_usuario_desc,
pras_flag_smarventas_desc,
pras_flag_ref_externa_desc,
pras_monto_pagado_vlr,
pras_intereses_vlr,
pras_retefuente_vlr,
pras_flag_cancelaciones_desc,
pras_flag_debito_cuenta_desc,
pras_flag_aum_cap_desc,
pras_valor_invertido_vlr,
pras_flag_apli_com_desc,
pras_porc_liq_comision_num,
pras_motivo_rechazo_desc,
pras_flag_aumento_cupo_desc,
pras_flag_uso_mismo_mes_desc,
pras_cantidad_cupo_num,
pras_cant_cupo_aumento_num,
pras_cant_refe_externa_num,
pras_cant_uso_mismo_mes_num,
pras_cantidad_a_liquidar_num,
pras_saldo_promedio_vlr,
pras_pagos_realizados_num,
pras_plan_ahorro_vlr,
pras_flag_misma_fuerza_desc,
pras_monto_afc_vlr,
pras_flag_tar_amparada_desc,
pras_saldo_promedio_aho_vlr,
pras_saldo_promedio_cte_vlr,
pras_flag_valido);
COMMIT;
--incremenmto el valor de los registros validos
DECLARE puntero INTEGER 0;
SET puntero = CAST(getCacheValue('validos') AS INTEGER);
SET puntero = puntero + 1;
CALL setUpdateCacheValue('validos', CAST(puntero AS CHARACTER));
--Validar si el proceso ya termino
DECLARE total_registros INTEGER 0;
DECLARE inv_registros INTEGER 0;
DECLARE val_registros INTEGER 0;
SET total_registros = CAST (getCacheValue(TOTAL_REGISTROS) AS INTEGER);
SET inv_registros = CAST (getCacheValue(REGISTROS_INVALIDOS) AS INTEGER);
SET val_registros = CAST (getCacheValue(REGISTROS_VALIDOS) AS INTEGER);
IF total_registros = (inv_registros + val_registros) THEN
-------------- DECLARACIONES PARA LLAMADO PL ---------------
CALL LIC_PR_ObtenerProdAsesor(total_registros);
CALL deleteCacheValue(TOTAL_REGISTROS);
CALL deleteCacheValue(REGISTROS_VALIDOS);
CALL deleteCacheValue(REGISTROS_INVALIDOS);
END IF;
END;
---- ESQL routines to retrieve data from cache
CREATE PROCEDURE LIC_PR_ObtenerProdAsesor(OUT otbProdAsesor INTEGER)
LANGUAGE DATABASE
EXTERNAL NAME "SMARTVENTAS.LIC_PKG_BO_BROKERPRODUCTIVIDAD.LIC_PR_OBTENERPRODASESOR";
CREATE PROCEDURE setUpdateCacheValue(IN llave CHARACTER, IN valor CHARACTER)
LANGUAGE JAVA
EXTERNAL NAME "co.bancoomeva.cache.CacheUtil.setUpdateCacheValue";
CREATE PROCEDURE getCacheValue(IN llave CHARACTER)
RETURNS CHARACTER
LANGUAGE JAVA
EXTERNAL NAME [quote]"co.bancoomeva.cache.CacheUtil.getCacheValue"[/quote];
CREATE PROCEDURE deleteCacheValue(IN llave CHARACTER)
LANGUAGE JAVA
EXTERNAL NAME [quote]"co.bancoomeva.cache.CacheUtil.deleteCacheValue"[/quote];
CREATE PROCEDURE CopyMessageHeaders() BEGIN
DECLARE I INTEGER 1;
DECLARE J INTEGER;
SET J = CARDINALITY(InputRoot.*[]);
WHILE I < J DO
SET OutputRoot.*[I] = InputRoot.*[I];
SET I = I + 1;
END WHILE;
END;
CREATE PROCEDURE CopyEntireMessage() BEGIN
SET OutputRoot = InputRoot;
END;
END MODULE; |
Last edited by cahc25099025 on Tue Jan 31, 2017 11:15 am; edited 1 time in total |
|
Back to top |
|
 |
Vitor |
Posted: Fri Jan 27, 2017 12:52 pm Post subject: |
|
|
 Grand High Poobah
Joined: 11 Nov 2005 Posts: 26093 Location: Texas, USA
|
For anybody wondering, part 1 of this epic is here _________________ Honesty is the best policy.
Insanity is the best defence. |
|
Back to top |
|
 |
Vitor |
Posted: Fri Jan 27, 2017 1:00 pm Post subject: |
|
|
 Grand High Poobah
Joined: 11 Nov 2005 Posts: 26093 Location: Texas, USA
|
1. Thank you for using code tags to make the code readable
2. Even if I could read Spanish, I'm disinclined to look through your code looking for the bug.
3. There's nothing in your post about what you have done to resolve this problem. What does the user trace say? _________________ Honesty is the best policy.
Insanity is the best defence. |
|
Back to top |
|
 |
mqjeff |
Posted: Fri Jan 27, 2017 1:03 pm Post subject: |
|
|
Grand Master
Joined: 25 Jun 2008 Posts: 17447
|
Typically when doing this kind of scenario - n requests getting back n responses - you would use Aggregation.
With aggregation, you can send requests to the webservice asynchronously and then process each response until you know that the aggregation is done.
If you are seeing that you send n requests and get back n - c responses, then you need to look at why c requests are failing.
If you are seeing that you are sending n requests and getting back n + c responses, then you need to figure either - if the other side is sending back additional responses
- OR where you are sending more than one request
- OR if you are duplicating responses after you get them
_________________ chmod -R ugo-wx / |
|
Back to top |
|
 |
timber |
Posted: Fri Jan 27, 2017 2:13 pm Post subject: |
|
|
 Grand Master
Joined: 25 Aug 2015 Posts: 1292
|
Quote: |
The problem is that the quantity of records inserted in 4th issue not match with the original in the 1st issue |
I recommend that you add some error handling and/or logging to your message flows. Expecting us to read that quantity of source code is simply not reasonable. |
|
Back to top |
|
 |
zpat |
Posted: Fri Jan 27, 2017 11:49 pm Post subject: |
|
|
 Jedi Council
Joined: 19 May 2001 Posts: 5866 Location: UK
|
Also you are not taking advantage of the mapping node.
Try to avoid coding in IIB, it's meant for graphical development. _________________ Well, I don't think there is any question about it. It can only be attributable to human error. This sort of thing has cropped up before, and it has always been due to human error. |
|
Back to top |
|
 |
|
|
 |
|
Page 1 of 1 |
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|
|
|