356 lines
16 KiB
VB.net
356 lines
16 KiB
VB.net
|
|
Imports System.Web
|
|||
|
|
Imports ULA.Davivienda.WCFServiciosCobisCartera.DAL
|
|||
|
|
Public Class ActualizacionOperacion
|
|||
|
|
|
|||
|
|
#Region "PROPIEDADES"
|
|||
|
|
Dim gProceso As String
|
|||
|
|
Dim gHttpServer As HttpServerUtility
|
|||
|
|
Dim arrPrefix As String() = New String() {}
|
|||
|
|
#End Region
|
|||
|
|
|
|||
|
|
|
|||
|
|
#Region "Constructor"
|
|||
|
|
Public Sub New(Proceso As String, ByRef httpServer As HttpServerUtility)
|
|||
|
|
gProceso = Proceso
|
|||
|
|
gHttpServer = httpServer
|
|||
|
|
End Sub
|
|||
|
|
#End Region
|
|||
|
|
|
|||
|
|
|
|||
|
|
#Region "RegistrarOperacionCartera"
|
|||
|
|
Public Function ActualizarOperacionCartera(ByVal Solicitud As String,
|
|||
|
|
ByVal Proceso As String,
|
|||
|
|
ByVal strXML As String,
|
|||
|
|
ByVal Usuario As String,
|
|||
|
|
ByVal EstadoEtapa As Integer) As String
|
|||
|
|
|
|||
|
|
Dim strCode As String = "0"
|
|||
|
|
Dim strType As String = "0"
|
|||
|
|
Dim strError As String = String.Empty
|
|||
|
|
Dim strSuccess As String = String.Empty
|
|||
|
|
Dim strMessage As String = String.Empty
|
|||
|
|
'-------------------------------------------------------------------
|
|||
|
|
Dim nElemento As MSXML2.IXMLDOMNode = Nothing
|
|||
|
|
Dim xmlFormado As MSXML2.DOMDocument = Nothing
|
|||
|
|
Dim rootElemento As MSXML2.IXMLDOMNode = Nothing
|
|||
|
|
Dim objPI As MSXML2.IXMLDOMProcessingInstruction = Nothing
|
|||
|
|
'-------------------------------------------------------------------
|
|||
|
|
Dim strEsOperacionLiquidada As String = String.Empty
|
|||
|
|
Dim strXMLActualizarOperacion As String = String.Empty
|
|||
|
|
|
|||
|
|
Dim arrXMLActualizarOperacion() As String = New String(7) {"", "", "", "", "", "", "", ""}
|
|||
|
|
|
|||
|
|
|
|||
|
|
Try
|
|||
|
|
|
|||
|
|
|
|||
|
|
'***********************************************************************************
|
|||
|
|
'SE INICIALIZA EL XML DE SALIDA
|
|||
|
|
'***********************************************************************************
|
|||
|
|
xmlFormado = New MSXML2.DOMDocument()
|
|||
|
|
objPI = xmlFormado.createProcessingInstruction("xml", "version='1.0' encoding='utf-8'")
|
|||
|
|
xmlFormado.appendChild(objPI)
|
|||
|
|
|
|||
|
|
rootElemento = xmlFormado.createElement("Resultado")
|
|||
|
|
xmlFormado.appendChild(rootElemento)
|
|||
|
|
|
|||
|
|
nElemento = xmlFormado.createElement("DatosActualizarOperacionCartera")
|
|||
|
|
rootElemento.appendChild(nElemento)
|
|||
|
|
|
|||
|
|
|
|||
|
|
'***********************************************************************************
|
|||
|
|
'SI ETAPA EN ESTADO ACTIVO - SIMPRE REGENERA SINO SIEMPRE CONSULTA DE LA BD LOCAL
|
|||
|
|
'***********************************************************************************
|
|||
|
|
If ((EstadoEtapa = UtilitariaBD.ULT_STATUS_TSK_ACTIVE)) Then
|
|||
|
|
|
|||
|
|
'*******************************************************************************
|
|||
|
|
'REGENERA LA INFORMACION DE LA OPERACION
|
|||
|
|
'*******************************************************************************
|
|||
|
|
ExecuteActualizarOperacion(Proceso, strXML, strXMLActualizarOperacion, Usuario)
|
|||
|
|
nElemento.text &= strXMLActualizarOperacion
|
|||
|
|
|
|||
|
|
'*******************************************************************************
|
|||
|
|
'REGISTRAR OPERACION SQL
|
|||
|
|
'*******************************************************************************
|
|||
|
|
UtilitariaBD.GuardaActualizacionOperacionSQL(Proceso, Solicitud, strXMLActualizarOperacion, Usuario)
|
|||
|
|
|
|||
|
|
'*******************************************************************************
|
|||
|
|
'LIMPIA FLAG DE DESEMBOLSOS REGISTRADOS EN COBIS
|
|||
|
|
'*******************************************************************************
|
|||
|
|
UtilitariaBD.LimpiarFlagDesembolsoRegistradoSQL(Proceso, Solicitud, Usuario)
|
|||
|
|
|
|||
|
|
Else
|
|||
|
|
|
|||
|
|
'***********************************************************************************
|
|||
|
|
'OBTIENE LA DATA DE LA OPERACION
|
|||
|
|
'***********************************************************************************
|
|||
|
|
arrXMLActualizarOperacion = UtilitariaBD.BuscaOperacionSQL(Proceso, Solicitud, Usuario)
|
|||
|
|
strXMLActualizarOperacion = arrXMLActualizarOperacion(2)
|
|||
|
|
strEsOperacionLiquidada = arrXMLActualizarOperacion(3)
|
|||
|
|
|
|||
|
|
'***********************************************************************************
|
|||
|
|
'SI YA FUE REGENERADA
|
|||
|
|
'***********************************************************************************
|
|||
|
|
If (strXMLActualizarOperacion.Trim() <> "") Then
|
|||
|
|
nElemento.text &= strXMLActualizarOperacion
|
|||
|
|
Else
|
|||
|
|
Throw New Exception("No fue posible obtener de Ultimus los datos de la información actualizada de la operación.")
|
|||
|
|
End If
|
|||
|
|
|
|||
|
|
End If
|
|||
|
|
|
|||
|
|
Catch ex As Exception
|
|||
|
|
strError = "ActualizarOperacionCartera - " & ex.Message
|
|||
|
|
Finally
|
|||
|
|
If strError <> "" Then
|
|||
|
|
nElemento = xmlFormado.createElement("ERROR")
|
|||
|
|
nElemento.text = strError
|
|||
|
|
rootElemento.appendChild(nElemento)
|
|||
|
|
End If
|
|||
|
|
End Try
|
|||
|
|
Return gHttpServer.HtmlDecode(xmlFormado.xml)
|
|||
|
|
End Function
|
|||
|
|
#End Region
|
|||
|
|
|
|||
|
|
|
|||
|
|
#Region "ExecuteActualizarOperacion"
|
|||
|
|
Private Sub ExecuteActualizarOperacion(ByVal Proceso As String,
|
|||
|
|
ByVal strXML As String,
|
|||
|
|
ByRef strXMLout As String,
|
|||
|
|
ByVal Usuario As String)
|
|||
|
|
|
|||
|
|
Dim strXMLActualizarOperacion As String = String.Empty
|
|||
|
|
Dim xmlDoc As MSXML2.DOMDocument = New MSXML2.DOMDocument()
|
|||
|
|
Dim xmlRootDoc As MSXML2.IXMLDOMNode
|
|||
|
|
Dim strError As String = String.Empty
|
|||
|
|
|
|||
|
|
Try
|
|||
|
|
xmlDoc.async = False
|
|||
|
|
xmlDoc.preserveWhiteSpace = True
|
|||
|
|
xmlDoc.validateOnParse = False
|
|||
|
|
|
|||
|
|
strXMLActualizarOperacion = ActualizarOperacion(Proceso, strXML, Usuario)
|
|||
|
|
xmlDoc.loadXML(strXMLActualizarOperacion)
|
|||
|
|
|
|||
|
|
xmlRootDoc = xmlDoc.documentElement
|
|||
|
|
If (Not IsNothing(xmlRootDoc.selectSingleNode("ERROR"))) Then
|
|||
|
|
Throw New Exception(xmlRootDoc.selectSingleNode("ERROR").text)
|
|||
|
|
End If
|
|||
|
|
|
|||
|
|
If (Not IsNothing(xmlRootDoc.selectSingleNode("DatosOperacionCartera"))) Then
|
|||
|
|
strXMLout = xmlRootDoc.selectSingleNode("DatosOperacionCartera").xml
|
|||
|
|
End If
|
|||
|
|
|
|||
|
|
|
|||
|
|
Catch ex As Exception
|
|||
|
|
strError = "ExecuteActualizarOperacion - " & ex.Message
|
|||
|
|
Throw New Exception(strError)
|
|||
|
|
End Try
|
|||
|
|
End Sub
|
|||
|
|
#End Region
|
|||
|
|
|
|||
|
|
|
|||
|
|
#Region "ActualizarOperacion"
|
|||
|
|
Private Function ActualizarOperacion(ByVal Proceso As String,
|
|||
|
|
ByVal strXML As String,
|
|||
|
|
ByVal Usuario As String) As String
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
Dim strCode As String = "0"
|
|||
|
|
Dim strType As String = "0"
|
|||
|
|
Dim aCampos(34), aSoap(34) As String
|
|||
|
|
Dim strError As String = String.Empty
|
|||
|
|
Dim strSuccess As String = String.Empty
|
|||
|
|
Dim strMessage As String = String.Empty
|
|||
|
|
'--------------------------------------------------------
|
|||
|
|
Dim node As MSXML2.IXMLDOMNode = Nothing
|
|||
|
|
Dim nElemento As MSXML2.IXMLDOMNode = Nothing
|
|||
|
|
Dim nElemento2 As MSXML2.IXMLDOMNode = Nothing
|
|||
|
|
Dim rootElemento As MSXML2.IXMLDOMNode = Nothing
|
|||
|
|
Dim xmNodeMessages As MSXML2.IXMLDOMNode = Nothing
|
|||
|
|
Dim objPI As MSXML2.IXMLDOMProcessingInstruction = Nothing
|
|||
|
|
'--------------------------------------------------------
|
|||
|
|
|
|||
|
|
Dim respXML As MSXML2.DOMDocument = Nothing
|
|||
|
|
Dim xmlFormado As MSXML2.DOMDocument = Nothing
|
|||
|
|
'--------------------------------------------------------
|
|||
|
|
|
|||
|
|
Try
|
|||
|
|
|
|||
|
|
'****************************************************
|
|||
|
|
'Instanacia los objetos de trabajo
|
|||
|
|
'****************************************************
|
|||
|
|
respXML = New MSXML2.DOMDocument()
|
|||
|
|
xmlFormado = New MSXML2.DOMDocument()
|
|||
|
|
|
|||
|
|
|
|||
|
|
'****************************************************
|
|||
|
|
'Inicializa el XML de Salida
|
|||
|
|
'****************************************************
|
|||
|
|
objPI = xmlFormado.createProcessingInstruction("xml", "version='1.0' encoding='utf-8'")
|
|||
|
|
xmlFormado.appendChild(objPI)
|
|||
|
|
|
|||
|
|
rootElemento = xmlFormado.createElement("Resultado")
|
|||
|
|
xmlFormado.appendChild(rootElemento)
|
|||
|
|
|
|||
|
|
nElemento = xmlFormado.createElement("DatosOperacionCartera")
|
|||
|
|
rootElemento.appendChild(nElemento)
|
|||
|
|
|
|||
|
|
'****************************************************
|
|||
|
|
'Invoca el WebService de Cobis
|
|||
|
|
'****************************************************
|
|||
|
|
respXML.async = False
|
|||
|
|
respXML.preserveWhiteSpace = True
|
|||
|
|
respXML.validateOnParse = False
|
|||
|
|
respXML = outSoapConector.InvocaWebServiceSoap(strXML, strError, arrPrefix, Proceso, Usuario)
|
|||
|
|
|
|||
|
|
'****************************************************
|
|||
|
|
'Valida si ocurrió un error de integración
|
|||
|
|
'****************************************************
|
|||
|
|
If (strError.Trim().Length > 0) Then
|
|||
|
|
Throw New Exception(strError)
|
|||
|
|
End If
|
|||
|
|
|
|||
|
|
'****************************************************
|
|||
|
|
'Obtiene el ROOT del XML de Salida de la Interface de Cobis
|
|||
|
|
'****************************************************
|
|||
|
|
node = respXML.childNodes(0).childNodes(0)
|
|||
|
|
|
|||
|
|
|
|||
|
|
'****************************************************
|
|||
|
|
'Valida estructura de control de errores
|
|||
|
|
'****************************************************
|
|||
|
|
If (Not IsNothing(node.selectSingleNode(arrPrefix(2) & ":success"))) Then
|
|||
|
|
strSuccess = node.selectSingleNode(arrPrefix(2) & ":success").text
|
|||
|
|
|
|||
|
|
If (strSuccess.Trim().ToLower() = "false") Then
|
|||
|
|
If (Not IsNothing(node.selectSingleNode(arrPrefix(2) & ":messages"))) Then
|
|||
|
|
xmNodeMessages = node.selectSingleNode(arrPrefix(2) & ":messages")
|
|||
|
|
strCode = xmNodeMessages.selectSingleNode("code").text
|
|||
|
|
strMessage = xmNodeMessages.selectSingleNode("message").text
|
|||
|
|
End If
|
|||
|
|
|
|||
|
|
strError = "Error: Code:" & strCode & " - Message:" & strMessage & " - Type:" & strType
|
|||
|
|
Throw New Exception(strError)
|
|||
|
|
End If
|
|||
|
|
End If
|
|||
|
|
|
|||
|
|
'****************************************************
|
|||
|
|
'Valida tags de control de Errores
|
|||
|
|
'****************************************************
|
|||
|
|
If (Not IsNothing(node.selectSingleNode(arrPrefix(16) & ":estadoProceso"))) Then
|
|||
|
|
|
|||
|
|
If (node.selectSingleNode(arrPrefix(16) & ":estadoProceso").text.Trim() = "N") Then
|
|||
|
|
strCode = node.selectSingleNode(arrPrefix(16) & ":codigoError").text
|
|||
|
|
strMessage = node.selectSingleNode(arrPrefix(16) & ":descripcionError").text
|
|||
|
|
|
|||
|
|
strError = "Error: Code:" & strCode & " - Message:" & strMessage
|
|||
|
|
Throw New Exception(strError)
|
|||
|
|
End If
|
|||
|
|
End If
|
|||
|
|
|
|||
|
|
'****************************************************
|
|||
|
|
'Numero de Operacion
|
|||
|
|
'****************************************************
|
|||
|
|
If node.selectSingleNode(arrPrefix(16) & ":banco") Is Nothing Then
|
|||
|
|
Throw New Exception("No se encontro la variable de salida: " & arrPrefix(16) & ":banco")
|
|||
|
|
End If
|
|||
|
|
|
|||
|
|
'****************************************************
|
|||
|
|
'Constuye la extructura de Salida
|
|||
|
|
'****************************************************
|
|||
|
|
aCampos(0) = "num_operacion"
|
|||
|
|
aCampos(1) = "fecha_inicio"
|
|||
|
|
aCampos(2) = "fecha_vencim"
|
|||
|
|
aCampos(3) = "num_cuotas"
|
|||
|
|
aCampos(4) = "fe_1_pago_cap"
|
|||
|
|
aCampos(5) = "fe_1_pago_int"
|
|||
|
|
aCampos(6) = "plazo_dias"
|
|||
|
|
aCampos(7) = "fe_rev_tasa"
|
|||
|
|
aCampos(8) = "nu_ope_vigentes"
|
|||
|
|
aCampos(9) = "plazo"
|
|||
|
|
aCampos(10) = "fecha_pago_men"
|
|||
|
|
aCampos(11) = "dia_pago"
|
|||
|
|
aCampos(12) = "tasa_interes"
|
|||
|
|
aCampos(13) = "comision"
|
|||
|
|
aCampos(14) = "mora1"
|
|||
|
|
aCampos(15) = "mora2"
|
|||
|
|
aCampos(16) = "nom_fiador"
|
|||
|
|
aCampos(17) = "ced_fiador"
|
|||
|
|
aCampos(18) = "cuota_mens"
|
|||
|
|
aCampos(19) = "deudor"
|
|||
|
|
aCampos(20) = "nom_ejecutivo"
|
|||
|
|
aCampos(21) = "nom_sucursal"
|
|||
|
|
aCampos(22) = "calidades"
|
|||
|
|
aCampos(23) = "dir_cliente"
|
|||
|
|
aCampos(24) = "nom_acreedor"
|
|||
|
|
aCampos(25) = "cedula_acreedor"
|
|||
|
|
aCampos(26) = "periodo_gracia"
|
|||
|
|
aCampos(27) = "forma_pago"
|
|||
|
|
aCampos(28) = "fe_prox_pago"
|
|||
|
|
aCampos(29) = "spread"
|
|||
|
|
aCampos(30) = "base_operacion"
|
|||
|
|
aCampos(31) = "base_operacion1"
|
|||
|
|
aCampos(32) = "monto_mora"
|
|||
|
|
aCampos(33) = "tipo_tasa_base"
|
|||
|
|
aCampos(34) = "monto_desembolso"
|
|||
|
|
|
|||
|
|
aSoap(0) = arrPrefix(16) & ":banco"
|
|||
|
|
aSoap(1) = arrPrefix(16) & ":fechaIni"
|
|||
|
|
aSoap(2) = arrPrefix(16) & ":fechaFin"
|
|||
|
|
aSoap(3) = arrPrefix(16) & ":numCuotas"
|
|||
|
|
aSoap(4) = arrPrefix(16) & ":pagoCap"
|
|||
|
|
aSoap(5) = arrPrefix(16) & ":pagoInt"
|
|||
|
|
aSoap(6) = arrPrefix(16) & ":plazoDias"
|
|||
|
|
aSoap(7) = arrPrefix(16) & ":fechaRev"
|
|||
|
|
aSoap(8) = arrPrefix(16) & ":numOperaciones"
|
|||
|
|
aSoap(9) = arrPrefix(16) & ":plazoMeses"
|
|||
|
|
aSoap(10) = arrPrefix(16) & ":fechaPago"
|
|||
|
|
aSoap(11) = arrPrefix(16) & ":diaPago"
|
|||
|
|
aSoap(12) = arrPrefix(16) & ":tasaInt"
|
|||
|
|
aSoap(13) = arrPrefix(16) & ":comision"
|
|||
|
|
aSoap(14) = arrPrefix(16) & ":mora1"
|
|||
|
|
aSoap(15) = arrPrefix(16) & ":mora2"
|
|||
|
|
aSoap(16) = arrPrefix(16) & ":nomFiador"
|
|||
|
|
aSoap(17) = arrPrefix(16) & ":cedFiador"
|
|||
|
|
aSoap(18) = arrPrefix(16) & ":cuotaMensual"
|
|||
|
|
aSoap(19) = arrPrefix(16) & ":deudor"
|
|||
|
|
aSoap(20) = arrPrefix(16) & ":ejecutivo"
|
|||
|
|
aSoap(21) = arrPrefix(16) & ":sucursal"
|
|||
|
|
aSoap(22) = arrPrefix(16) & ":calidades"
|
|||
|
|
aSoap(23) = arrPrefix(16) & ":direccionCliente"
|
|||
|
|
aSoap(24) = arrPrefix(16) & ":nombreBanco"
|
|||
|
|
aSoap(25) = arrPrefix(16) & ":cedulaBanco"
|
|||
|
|
aSoap(26) = arrPrefix(16) & ":diasGraciaInt"
|
|||
|
|
aSoap(27) = arrPrefix(16) & ":fpagoTdividendo"
|
|||
|
|
aSoap(28) = arrPrefix(16) & ":fproxPago"
|
|||
|
|
aSoap(29) = arrPrefix(16) & ":spread"
|
|||
|
|
aSoap(30) = arrPrefix(16) & ":baseOp"
|
|||
|
|
aSoap(31) = arrPrefix(16) & ":baseOp1"
|
|||
|
|
aSoap(32) = arrPrefix(16) & ":montoMora"
|
|||
|
|
aSoap(33) = arrPrefix(16) & ":tipoTasaBase"
|
|||
|
|
aSoap(34) = arrPrefix(16) & ":montoDesembolso"
|
|||
|
|
|
|||
|
|
For J As Integer = 0 To aCampos.Length() - 1
|
|||
|
|
outSoapConector.AgregarNodeValue(node, xmlFormado, nElemento2, nElemento, aSoap(J), aCampos(J))
|
|||
|
|
Next
|
|||
|
|
|
|||
|
|
Catch ex As Exception
|
|||
|
|
strError = "ActualizarOperacion - " & ex.Message
|
|||
|
|
Finally
|
|||
|
|
If strError <> "" Then
|
|||
|
|
nElemento = xmlFormado.createElement("ERROR")
|
|||
|
|
nElemento.text = strError
|
|||
|
|
rootElemento.appendChild(nElemento)
|
|||
|
|
End If
|
|||
|
|
|
|||
|
|
End Try
|
|||
|
|
|
|||
|
|
Return xmlFormado.xml
|
|||
|
|
|
|||
|
|
End Function
|
|||
|
|
#End Region
|
|||
|
|
|
|||
|
|
End Class
|