AS400NaturalCustomerInAppSvc/AS400NaturalCustomerInAppSvc/operations/updateCustomerData/xq/AS400NaturalCustomerInAppSvc_updateCustomerData_InputToCanonical.xqy
2025-11-18 22:51:57 +01:00

173 lines
14 KiB
Plaintext

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) {
<ns22:updateCustomerData_Rs>
<ns22:MsgRsHdr>
<ns16:FinalStatusRequest>{ data($ejecutaTRXResponse1/ns6:EjecutaTRXResult/ns6:TRXSResults/ns6:Respuestas[1]/ns6:Respuesta[1]/@NUMREG) }</ns16:FinalStatusRequest>
<ns16:CountDataOut>{ data($ejecutaTRXResponse1/ns6:EjecutaTRXResult/ns6:TRXSResults/ns6:Respuestas[1]/@NOCDTOSAL) }</ns16:CountDataOut>
<ns16:TransactionCode>{ data($ejecutaTRXResponse1/ns6:EjecutaTRXResult/ns6:TRXSResults/ns6:Respuestas[1]/@CODTRN) }</ns16:TransactionCode>
<ns16:SupervisorCode>{ data($ejecutaTRXResponse1/ns6:EjecutaTRXResult/ns6:TRXSResults/ns6:Respuestas[1]/@CODSUP) }</ns16:SupervisorCode>
<ns16:OperationType>{ data($ejecutaTRXResponse1/ns6:EjecutaTRXResult/ns6:TRXSResults/ns6:Respuestas[1]/@TIPOPER) }</ns16:OperationType>
<ns16:TransactionConsecutive>{ data($ejecutaTRXResponse1/ns6:EjecutaTRXResult/ns6:TRXSResults/ns6:Respuestas[1]/@CONTRN) }</ns16:TransactionConsecutive>
<ns16:DetailReg>{ data($ejecutaTRXResponse1/ns6:EjecutaTRXResult/ns6:TRXSResults/ns6:Respuestas[1]/@DSCREG) }</ns16:DetailReg>
<ns16:RegisterNumber>{ data($ejecutaTRXResponse1/ns6:EjecutaTRXResult/ns6:TRXSResults/ns6:Respuestas[1]/ns6:Respuesta[1]/@NUMREG) }</ns16:RegisterNumber>
<ns16:TransactionType>{ data($ejecutaTRXResponse1/ns6:EjecutaTRXResult/ns6:TRXSResults/ns6:Respuestas[1]/@TIPTRN) }</ns16:TransactionType>
<ns16:RequestId>{ data($updateCustomerData_Rq1/ns22:MsgRqHdr/ns18:RequestId) }</ns16:RequestId>
<ns16:AppName>AS400</ns16:AppName>
</ns22:MsgRsHdr>
{
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(
<ns22:Status>
{xqu:get-status($ejecutaTRXResponse1, $dvm)/*}
</ns22:Status>
)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(
<ns22:Status>
<ns19:StatusCode>{"OSB-380002"}</ns19:StatusCode>
<ns19:StatusDesc>{"TIMEOUT"}</ns19:StatusDesc>
<ns19:ApplicationName>{ data($ejecutaTRXResponse1/ns6:EjecutaTRXResult/ns6:TRXSResults/ns6:Respuestas[1]/ns6:Respuesta[1]/ns6:NOMPRG) }</ns19:ApplicationName>
<ns19:LineNumber>{ xs:int($ejecutaTRXResponse1/ns6:EjecutaTRXResult/ns6:TRXSResults/ns6:Respuestas[1]/ns6:Respuesta[1]/ns6:NUMLIN) }</ns19:LineNumber>
</ns22:Status>
)else(
<ns22:Status>
{xqu:get-status($ejecutaTRXResponse1, $dvm)/*}
</ns22:Status>
)
)else if(data($ejecutaTRXResponse1/ns6:EjecutaTRXResult/ns6:TRXSResults/ns6:Respuestas[1]/ns6:Respuesta[1]/@NUMREG)="0001")then(
(: Caso Reg0001 Exito sin data :)
<ns22:Status>
<ns19:StatusCode>OK</ns19:StatusCode>
<ns19:StatusDesc>Transaccion finalizada con exito</ns19:StatusDesc>
</ns22:Status>
)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 :)
<ns22:Status>
{
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(
<data>
<ns19:StatusCode>{"0001"}</ns19:StatusCode>
<ns19:StatusDesc>{"OPERACION EXITOSA"}</ns19:StatusDesc>
</data>/*
)else(
<data>
<ns19:StatusCode>{"ERROR"}</ns19:StatusCode>
<ns19:StatusDesc>{"OPERACION FALLIDA"}</ns19:StatusDesc>
{
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(
<ns19:AdditionalStatus>
<ns19:StatusType>{concat("VB",data($Respuestas/@CODTRN))}</ns19:StatusType>
<ns19:StatusCode>{data($Respuestas/ns6:Respuesta[1]/ns6:CODERR1)}</ns19:StatusCode>
<ns19:StatusDesc>{"Transaccion Rechazada"}</ns19:StatusDesc>
</ns19:AdditionalStatus>
)else if(fn:boolean(data($Respuestas/ns6:Respuesta[1]/ns6:MSJERR)))then(
<ns19:AdditionalStatus>
<ns19:StatusType>{concat("VB",data($Respuestas/@CODTRN))}</ns19:StatusType>
<ns19:StatusCode>{data($Respuestas/ns6:Respuesta[1]/ns6:MSJERR)}</ns19:StatusCode>
<ns19:StatusDesc>{"Transaccion Rechazada"}</ns19:StatusDesc>
</ns19:AdditionalStatus>
)else(
<ns19:AdditionalStatus>
<ns19:StatusType>{concat("VB",data($Respuestas/@CODTRN))}</ns19:StatusType>
<ns19:StatusCode>{"000"}</ns19:StatusCode>
<ns19:StatusDesc>{"Transaccion finalizada con exito"}</ns19:StatusDesc>
</ns19:AdditionalStatus>
)
}
</data>/*
)
}
</ns22:Status>
)else()
}
</ns22:updateCustomerData_Rs>
};
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)