xquery version "1.0" encoding "utf-8"; (:: OracleAnnotationVersion "1.0" ::) declare namespace ns6="http://Obi_Wan/EjecutaTRX"; (:: import schema at "../xsd/AS400NaturalCustomerInAppSvc_updateCustomerData.xsd" ::) declare namespace ns22="http://xmlns.banesco.com/Service/NaturalCustomerMgmtSvc"; (:: import schema at "../../../../BanescoCommonArtifacts/xsd/canonical/Services/NaturalCustomerMgmtSvc.xsd" ::) declare namespace ns42 = "http://xmlns.banesco.com/EnterpriseObjects/EmploymentData_v2.0"; declare namespace ns41 = "http://xmlns.banesco.com/EnterpriseObjects/Taxes_v2.0"; declare namespace ns40 = "http://xmlns.banesco.com/EnterpriseObjects/NaturalCustomer"; declare namespace ns46 = "http://xmlns.banesco.com/EnterpriseObjects/AffiliationSvc"; declare namespace ns45 = "http://xmlns.banesco.com/EnterpriseObjects/SelRangeDt"; declare namespace ns44 = "http://xmlns.banesco.com/EnterpriseObjects/Addr_v2.0"; declare namespace ns43 = "http://xmlns.banesco.com/EnterpriseObjects/Service"; declare namespace ns48 = "http://xmlns.banesco.com/EnterpriseObjects/EmploymentData"; declare namespace ns47 = "http://xmlns.banesco.com/EnterpriseObjects/Score"; declare namespace xf = "http://tempuri.org/AS400NaturalCustomerInAppSvc/operations/updateCustomerData/xq/AS400NaturalCustomerInAppSvc_updateCustomerData_InputToCanonical/"; declare namespace ns16 = "http://xmlns.banesco.com/EnterpriseObjects/MsgRsHdr"; declare namespace ns17 = "http://xmlns.banesco.com/EnterpriseObjects/Addr"; declare namespace ns14 = "http://xmlns.banesco.com/EnterpriseObjects/CustPref"; declare namespace ns15 = "http://xmlns.banesco.com/EnterpriseObjects/PersonInfo_v2.0"; declare namespace ns18 = "http://xmlns.banesco.com/EnterpriseObjects/MsgRqHdr"; declare namespace ns19 = "http://xmlns.banesco.com/EnterpriseObjects/Status"; declare namespace ns12 = "http://xmlns.banesco.com/EnterpriseObjects/CommonComplexType"; declare namespace ns13 = "http://xmlns.banesco.com/EnterpriseObjects/User"; declare namespace ns10 = "http://xmlns.banesco.com/EnterpriseObjects/PersonName"; declare namespace ns11 = "http://xmlns.banesco.com/EnterpriseObjects/Customer"; declare namespace ns29 = "http://xmlns.banesco.com/EnterpriseObjects/FinancialInfo"; declare namespace ns25 = "http://xmlns.banesco.com/EnterpriseObjects/Bureau"; declare namespace ns26 = "http://xmlns.banesco.com/EnterpriseObjects/RegulatoryInfo"; declare namespace ns27 = "http://xmlns.banesco.com/EnterpriseObjects/GenericValue"; declare namespace ns28 = "http://xmlns.banesco.com/EnterpriseObjects/SecurityIdentification"; declare namespace ns21 = "http://xmlns.banesco.com/EnterpriseObjects/CustCrossReference"; declare namespace ns23 = "http://xmlns.banesco.com/EnterpriseObjects/PersonInfo"; declare namespace ns24 = "http://xmlns.banesco.com/EnterpriseObjects/IntRateInfo"; declare namespace ns20 = "http://xmlns.banesco.com/EnterpriseObjects/TradeRegistry"; declare namespace ns38 = "http://xmlns.banesco.com/EnterpriseObjects/Guarantor"; declare namespace ns39 = "http://xmlns.banesco.com/EnterpriseObjects/Banking"; declare namespace ns36 = "http://xmlns.banesco.com/EnterpriseObjects/ContactInfo_v2.0"; declare namespace ns37 = "http://xmlns.banesco.com/EnterpriseObjects/Ref"; declare namespace ns9 = "http://xmlns.banesco.com/EnterpriseObjects/Product"; declare namespace ns34 = "http://xmlns.banesco.com/EnterpriseObjects/Chk"; declare namespace ns35 = "http://xmlns.banesco.com/EnterpriseObjects/Organization_v2.0"; declare namespace ns32 = "http://xmlns.banesco.com/EnterpriseObjects/Loan"; declare namespace ns33 = "http://xmlns.banesco.com/EnterpriseObjects/Ref_v2.0"; declare namespace ns5 = "http://xmlns.banesco.com/EnterpriseObjects/Contact"; declare namespace ns30 = "http://xmlns.banesco.com/EnterpriseObjects/Investment"; declare namespace ns31 = "http://xmlns.banesco.com/EnterpriseObjects/Documentation"; declare namespace ns7 = "http://xmlns.banesco.com/EnterpriseObjects/Risk"; declare namespace ns8 = "http://xmlns.banesco.com/EnterpriseObjects/Organization"; declare namespace ns2 = "http://xmlns.banesco.com/EnterpriseObjects/Fee"; declare namespace ns1 = "http://xmlns.banesco.com/EnterpriseObjects/LegalCustomer"; declare namespace ns4 = "http://xmlns.banesco.com/EnterpriseObjects/Bankinfo"; declare namespace ns3 = "http://xmlns.banesco.com/EnterpriseObjects/Account"; declare namespace ns0 = "http://xmlns.banesco.com/EnterpriseObjects/CustVerificationList"; declare namespace stat = "http://xmlns.banesco.com/EnterpriseObjects/Status"; import module namespace xqu="http://xmlns.banesco.com/xquey-functions" at "../../../../BanescoCommonArtifacts/xq/libraries/AS400Util.xqy", "../../../../BanescoCommonArtifacts/xq/libraries/dateTimeUtil.xqy"; declare function xf:AS400NaturalCustomerInAppSvc_updateCustomerData_InputToCanonical($ejecutaTRXResponse1 as element(ns6:EjecutaTRXResponse), $ejecutaTRX1 as element(ns6:EjecutaTRX), $updateCustomerData_Rq1 as element(ns22:updateCustomerData_Rq), $dvm as element(*)) as element(ns22:updateCustomerData_Rs) { { data($ejecutaTRXResponse1/ns6:EjecutaTRXResult/ns6:TRXSResults/ns6:Respuestas[1]/ns6:Respuesta[1]/@NUMREG) } { data($ejecutaTRXResponse1/ns6:EjecutaTRXResult/ns6:TRXSResults/ns6:Respuestas[1]/@NOCDTOSAL) } { data($ejecutaTRXResponse1/ns6:EjecutaTRXResult/ns6:TRXSResults/ns6:Respuestas[1]/@CODTRN) } { data($ejecutaTRXResponse1/ns6:EjecutaTRXResult/ns6:TRXSResults/ns6:Respuestas[1]/@CODSUP) } { data($ejecutaTRXResponse1/ns6:EjecutaTRXResult/ns6:TRXSResults/ns6:Respuestas[1]/@TIPOPER) } { data($ejecutaTRXResponse1/ns6:EjecutaTRXResult/ns6:TRXSResults/ns6:Respuestas[1]/@CONTRN) } { data($ejecutaTRXResponse1/ns6:EjecutaTRXResult/ns6:TRXSResults/ns6:Respuestas[1]/@DSCREG) } { data($ejecutaTRXResponse1/ns6:EjecutaTRXResult/ns6:TRXSResults/ns6:Respuestas[1]/ns6:Respuesta[1]/@NUMREG) } { data($ejecutaTRXResponse1/ns6:EjecutaTRXResult/ns6:TRXSResults/ns6:Respuestas[1]/@TIPTRN) } { data($updateCustomerData_Rq1/ns22:MsgRqHdr/ns18:RequestId) } AS400 { if((data($ejecutaTRXResponse1/ns6:EjecutaTRXResult/ns6:TRXSResults/ns6:Respuestas[1]/@CODTRN)="8910" and data($updateCustomerData_Rq1/ns22:MsgRqHdr/ns18:SourceChannelCode)!="MGS") and (fn:boolean(data($ejecutaTRXResponse1/ns6:EjecutaTRXResult/ns6:TRXSResults/ns6:Respuestas[1]/ns6:Respuesta[1]/ns6:CODERR1)) or fn:boolean(data($ejecutaTRXResponse1/ns6:EjecutaTRXResult/ns6:TRXSResults/ns6:Respuestas[1]/ns6:Respuesta[1]/ns6:CODERR2)) or fn:boolean(data($ejecutaTRXResponse1/ns6:EjecutaTRXResult/ns6:TRXSResults/ns6:Respuestas[1]/ns6:Respuesta[1]/ns6:CODERR3)) or fn:boolean(data($ejecutaTRXResponse1/ns6:EjecutaTRXResult/ns6:TRXSResults/ns6:Respuestas[1]/ns6:Respuesta[1]/ns6:CODERR4))))then( {xqu:get-status($ejecutaTRXResponse1, $dvm)/*} )else if((data($ejecutaTRXResponse1/ns6:EjecutaTRXResult/ns6:TRXSResults/ns6:Respuestas[1]/@CODTRN)="8910" and data($updateCustomerData_Rq1/ns22:MsgRqHdr/ns18:SourceChannelCode)!="MGS") and fn:boolean(data($ejecutaTRXResponse1/ns6:EjecutaTRXResult/ns6:TRXSResults/ns6:Respuestas[1]/ns6:Respuesta[1]/ns6:MSJERR)))then( (: Caso especifico para manejar el tipo de error por timeout :) if(contains(data($ejecutaTRXResponse1/ns6:EjecutaTRXResult/ns6:TRXSResults/ns6:Respuestas[1]/ns6:Respuesta[1]/ns6:MSJERR),"Fallo de llamada de servicio saliente JCA con error de conex"))then( {"OSB-380002"} {"TIMEOUT"} { data($ejecutaTRXResponse1/ns6:EjecutaTRXResult/ns6:TRXSResults/ns6:Respuestas[1]/ns6:Respuesta[1]/ns6:NOMPRG) } { xs:int($ejecutaTRXResponse1/ns6:EjecutaTRXResult/ns6:TRXSResults/ns6:Respuestas[1]/ns6:Respuesta[1]/ns6:NUMLIN) } )else( {xqu:get-status($ejecutaTRXResponse1, $dvm)/*} ) )else if(data($ejecutaTRXResponse1/ns6:EjecutaTRXResult/ns6:TRXSResults/ns6:Respuestas[1]/ns6:Respuesta[1]/@NUMREG)="0001")then( (: Caso Reg0001 Exito sin data :) OK Transaccion finalizada con exito )else if(data($ejecutaTRXResponse1/ns6:EjecutaTRXResult/ns6:TRXSResults/ns6:Respuestas[1]/@CODTRN)="8910")then( (: Caso VB8910_Reg2003 Macro Transaccion :) (: En este caso particular se valida por el codigo de transaccion ya que para el VB8910 en esta seccion se contempla el caso de exito y error por multigestion :) { let $Respuestas := count($ejecutaTRXResponse1/ns6:EjecutaTRXResult/ns6:TRXSResults/ns6:Respuestas) let $TRX := count($ejecutaTRX1/ns6:TRXS/ns6:ListaTrxs/ns6:TRX) return (: Por cada respuesta obtenida validamos si fue exito o error :) if(data($Respuestas)=data($TRX) and not(exists($ejecutaTRXResponse1/ns6:EjecutaTRXResult/ns6:TRXSResults/ns6:Respuestas/ns6:Respuesta/ns6:CODERR1)) and not(exists($ejecutaTRXResponse1/ns6:EjecutaTRXResult/ns6:TRXSResults/ns6:Respuestas/ns6:Respuesta/ns6:MSJERR)))then( {"0001"} {"OPERACION EXITOSA"} /* )else( {"ERROR"} {"OPERACION FALLIDA"} { for $Respuestas in $ejecutaTRXResponse1/ns6:EjecutaTRXResult/ns6:TRXSResults/ns6:Respuestas return (: Por cada respuesta obtenida validamos si fue exito o error :) if(fn:boolean(data($Respuestas/ns6:Respuesta[1]/ns6:CODERR1)))then( {concat("VB",data($Respuestas/@CODTRN))} {data($Respuestas/ns6:Respuesta[1]/ns6:CODERR1)} {"Transaccion Rechazada"} )else if(fn:boolean(data($Respuestas/ns6:Respuesta[1]/ns6:MSJERR)))then( {concat("VB",data($Respuestas/@CODTRN))} {data($Respuestas/ns6:Respuesta[1]/ns6:MSJERR)} {"Transaccion Rechazada"} )else( {concat("VB",data($Respuestas/@CODTRN))} {"000"} {"Transaccion finalizada con exito"} ) } /* ) } )else() } }; declare variable $ejecutaTRXResponse1 as element(ns6:EjecutaTRXResponse) external; declare variable $ejecutaTRX1 as element(ns6:EjecutaTRX) external; declare variable $updateCustomerData_Rq1 as element(ns22:updateCustomerData_Rq) external; declare variable $dvm as element(*) external; xf:AS400NaturalCustomerInAppSvc_updateCustomerData_InputToCanonical($ejecutaTRXResponse1, $ejecutaTRX1, $updateCustomerData_Rq1, $dvm)