agregado procesos y bd clases
This commit is contained in:
276
guia/procesos/ProcesosSiniestros.vb
Normal file
276
guia/procesos/ProcesosSiniestros.vb
Normal file
@@ -0,0 +1,276 @@
|
||||
Imports bdGestionAsegasa
|
||||
Imports bdGestionAsegasa.polizassg
|
||||
Imports tsl5
|
||||
Imports tsl5.Extensiones
|
||||
Imports bdGestionAsegasa.Utilidades
|
||||
Imports DevExpress.Spreadsheet
|
||||
Imports tsl5.Enumeraciones
|
||||
Imports System.Security
|
||||
Imports bdGestionAsegasa.siniestros_eiac
|
||||
|
||||
Public Class ProcesosSiniestros
|
||||
Public Shared Sub IncorporaSiniestrosEIACV6()
|
||||
Try
|
||||
Dim bd = bdGestionAsegasa.gestionasegasaEntities.NuevoContextoCN()
|
||||
Dim ltpa = bd.enumeraciones.Where(Function(x) x.gruposenumeraciones.Grupo = "TIPP").ToList
|
||||
Dim tipo As Integer = bdGestionAsegasa.ficheroscompanias.TipoFicheroCompania.SINIESTROS_EIAC
|
||||
Dim ficspen = bd.ficheroscompanias.Where(Function(x) x.FechaProcesado Is Nothing AndAlso x.FechaError Is Nothing AndAlso x.Tipo = bdGestionAsegasa.ficheroscompanias.TipoFicheroCompania.SINIESTROS_EIAC AndAlso x.Version = "6.0").OrderBy(Function(x) x.idFichero).ToList
|
||||
|
||||
For Each f In ficspen
|
||||
Try
|
||||
Dim DatosEIAC As ProcesosEIAC_V6.ProcesosEIAC = tsl5.Utilidades.Deserializa(f.Fichero, GetType(ProcesosEIAC_V6.ProcesosEIAC), True)
|
||||
If DatosEIAC.Objetos IsNot Nothing AndAlso DatosEIAC.Objetos.Items IsNot Nothing Then
|
||||
Dim lSins = DatosEIAC.Objetos.Items.Where(Function(x) x.GetType Is GetType(ProcesosEIAC_V6.tipo_siniestro)).Cast(Of ProcesosEIAC_V6.tipo_siniestro)
|
||||
For Each s In lSins
|
||||
Dim sins As List(Of siniestros) = Nothing
|
||||
Dim seiac = bd.siniestros_eiac.FirstOrDefault(Function(x) x.idSiniestroEntidad = s.DatosSiniestro.IdSiniestroEntidad)
|
||||
If seiac Is Nothing Then
|
||||
seiac = New siniestros_eiac
|
||||
seiac.idSiniestroEntidad = s.DatosSiniestro.IdSiniestroEntidad
|
||||
seiac.idFicheroCompania = f.idFichero
|
||||
seiac.idCompania = f.idCompania
|
||||
|
||||
bd.siniestros_eiac.AddObject(seiac)
|
||||
End If
|
||||
With seiac
|
||||
.NumeroPoliza = s.DatosPoliza.IdPoliza
|
||||
Dim pol = bd.polizassg.Where(Function(x) x.NumeroPoliza = .NumeroPoliza AndAlso x.idCompania = .idCompania).OrderByDescending(Function(x) x.NumeroSuplemento).FirstOrDefault
|
||||
If pol IsNot Nothing Then .idPoliza = pol.idPoliza
|
||||
.NumeroSuplemento = s.DatosPoliza.NumeroSuplemento
|
||||
.FechaDeclaracion = s.DatosSiniestro.FechaDeclaracion
|
||||
.FechaOcurrencia = s.DatosSiniestro.FechaOcurrencia
|
||||
.PosicionSiniestro = bdGestionAsegasa.siniestros_eiac.ObtienePosicionSiniestroV6(s.DatosSiniestro.PosicionSiniestro)
|
||||
.DescripcionSiniestro = s.DatosSiniestro.DescripcionSiniestro.Acortar(2048)
|
||||
.TipologiaSiniestro = s.DatosSiniestro.TipologiaSiniestro
|
||||
.ImporteIndemnizacion = s.DatosSiniestro.ImporteIndemnizacion
|
||||
.ImporteReserva = s.DatosSiniestro.ImporteReserva
|
||||
If s.DatosSiniestro.LugarSiniestro IsNot Nothing Then
|
||||
If seiac.direcciones Is Nothing Then
|
||||
seiac.direcciones = New direcciones
|
||||
End If
|
||||
seiac.direcciones.Direccion = s.DatosSiniestro.LugarSiniestro.ClaseVia & " " & s.DatosSiniestro.LugarSiniestro.NombreVia & " " & s.DatosSiniestro.LugarSiniestro.OtrosDatosVia
|
||||
seiac.direcciones.CodigoPostal = s.DatosSiniestro.LugarSiniestro.CodigoPostal
|
||||
Dim codmun = bd.ObtieneCodigoMunicipioMasCoincidente(seiac.direcciones.CodigoPostal, s.DatosSiniestro.LugarSiniestro.Poblacion, True)
|
||||
If codmun = "" Then
|
||||
seiac.direcciones.Direccion &= " " & s.DatosSiniestro.LugarSiniestro.Poblacion
|
||||
Else
|
||||
seiac.direcciones.CodigoMunicipio = codmun
|
||||
End If
|
||||
seiac.direcciones.Direccion = seiac.direcciones.Direccion.Acortar(200)
|
||||
End If
|
||||
If s.DatosSiniestro.SituacionesSiniestro IsNot Nothing Then
|
||||
Dim yaincorporados As New List(Of Integer)
|
||||
For Each sit In s.DatosSiniestro.SituacionesSiniestro
|
||||
Dim NumeroOrden As Integer = sit.NumeroOrden
|
||||
If NumeroOrden = 0 Then NumeroOrden = sit.GetHashCode
|
||||
If yaincorporados.Contains(NumeroOrden) = False Then
|
||||
Dim est = seiac.estadossiniestros_eiac.FirstOrDefault(Function(x) x.NumeroOrden = NumeroOrden)
|
||||
If est Is Nothing Then
|
||||
est = New estadossiniestros_eiac
|
||||
est.NumeroOrden = NumeroOrden
|
||||
seiac.estadossiniestros_eiac.Add(est)
|
||||
End If
|
||||
est.SituacionSiniestro = bdGestionAsegasa.estadossiniestros_eiac.ObtieneSituacionSiniestroV6(sit.SituacionSiniestro)
|
||||
est.DescripcionSituacion = sit.DescripcionSituacion.Acortar(45)
|
||||
yaincorporados.Add(NumeroOrden)
|
||||
End If
|
||||
Next
|
||||
End If
|
||||
If s.DatosSiniestro.PagosSiniestro IsNot Nothing Then
|
||||
Dim yaincorporados As New List(Of Integer)
|
||||
For Each pag In s.DatosSiniestro.PagosSiniestro
|
||||
Dim NumeroOrden As Integer = pag.NumeroOrden
|
||||
If NumeroOrden = 0 Then NumeroOrden = pag.GetHashCode
|
||||
If yaincorporados.Contains(NumeroOrden) = False Then
|
||||
Dim ps = seiac.pagossiniestros_eiac.FirstOrDefault(Function(x) x.NumeroOrden = NumeroOrden)
|
||||
If ps Is Nothing Then
|
||||
ps = New pagossiniestros_eiac
|
||||
ps.NumeroOrden = NumeroOrden
|
||||
seiac.pagossiniestros_eiac.Add(ps)
|
||||
End If
|
||||
ps.FechaPago = pag.FechaPago
|
||||
ps.FechaLiquidacion = pag.FechaLiquidacion
|
||||
ps.ImportePago = ps.ImportePago
|
||||
ps.DescripcionPago = ps.DescripcionPago.Acortar(255)
|
||||
ps.idTipoPago = bdGestionAsegasa.siniestros_eiac.ObtenerTipoPagoV6(pag.FormaPago, ltpa)
|
||||
If pag.FormaPago IsNot Nothing AndAlso pag.FormaPago.DatosCuentaCorriente IsNot Nothing Then
|
||||
ps.IBAN = pag.FormaPago.DatosCuentaCorriente.IBAN
|
||||
End If
|
||||
yaincorporados.Add(NumeroOrden)
|
||||
End If
|
||||
Next
|
||||
End If
|
||||
If s.DatosSiniestro.AccionesSiniestro IsNot Nothing Then
|
||||
Dim yaincorporados As New List(Of Integer)
|
||||
For Each accs In s.DatosSiniestro.AccionesSiniestro
|
||||
Dim NumeroOrden As Integer = accs.NumeroOrden
|
||||
If NumeroOrden = 0 Then NumeroOrden = accs.GetHashCode
|
||||
If yaincorporados.Contains(NumeroOrden) = False Then
|
||||
Dim acs = seiac.accionessiniestros_eiac.FirstOrDefault(Function(x) x.NumeroOrden = NumeroOrden)
|
||||
If acs Is Nothing Then
|
||||
acs = New accionessiniestros_eiac
|
||||
acs.NumeroOrden = NumeroOrden
|
||||
seiac.accionessiniestros_eiac.Add(acs)
|
||||
End If
|
||||
acs.AccionSiniestro = bdGestionAsegasa.accionessiniestros_eiac.ObtieneAccionSiniestroV6(accs.AccionSiniestro)
|
||||
acs.FechaAccion = accs.FechaAccion
|
||||
acs.DescripcionAccion = accs.DescripcionAccion
|
||||
acs.SituacionAccion = bdGestionAsegasa.accionessiniestros_eiac.ObtieneSituacionAccionV6(accs.SituacionAccion)
|
||||
yaincorporados.Add(NumeroOrden)
|
||||
End If
|
||||
Next
|
||||
|
||||
End If
|
||||
If s.DatosSiniestro.Expedientes IsNot Nothing Then
|
||||
Dim yaincorporados As New List(Of String)
|
||||
For Each exp In s.DatosSiniestro.Expedientes
|
||||
Dim NumeroExpediente As String = exp.NumeroExpediente
|
||||
If NumeroExpediente.NothingAVacio = "" Then NumeroExpediente = exp.GetHashCode.ToString
|
||||
If yaincorporados.Contains(NumeroExpediente) = False Then
|
||||
Dim ep = seiac.expedientessiniestros_eiac.FirstOrDefault(Function(x) x.NumeroExpediente = NumeroExpediente)
|
||||
If ep Is Nothing Then
|
||||
ep = New expedientessiniestros_eiac
|
||||
ep.NumeroExpediente = NumeroExpediente
|
||||
seiac.expedientessiniestros_eiac.Add(ep)
|
||||
End If
|
||||
ep.EstadoExpediente = bdGestionAsegasa.expedientessiniestros_eiac.ObtieneEstadoExpedienteV6(exp.EstadoExpediente)
|
||||
ep.ImporteReserva = exp.ImporteReserva
|
||||
ep.TotalPagos = exp.TotalPagos
|
||||
ep.TotalRecobros = exp.TotalRecobros
|
||||
ep.FechaInicio = exp.FechaInicio
|
||||
ep.FechaFin = exp.FechaFin
|
||||
ep.NumeroOrden = exp.NumeroOrden
|
||||
yaincorporados.Add(NumeroExpediente)
|
||||
End If
|
||||
Next
|
||||
End If
|
||||
If .siniestros Is Nothing Then
|
||||
Dim fi = .FechaOcurrencia.AddDays(-5)
|
||||
Dim ff = .FechaOcurrencia.AddDays(5)
|
||||
sins = bd.siniestros.Where(Function(x) x.polizassg.NumeroPoliza = .NumeroPoliza AndAlso x.FechaAccidente.HasValue AndAlso x.FechaAccidente.Value >= fi AndAlso x.FechaAccidente.Value <= ff).ToList
|
||||
If sins.Count = 1 Then
|
||||
.siniestros = sins(0)
|
||||
End If
|
||||
End If
|
||||
|
||||
End With
|
||||
Dim bModificados As Boolean = False
|
||||
If bd.ObjectStateManager.GetObjectStateEntries(EntityState.Added).Count > 0 Then
|
||||
bModificados = True
|
||||
seiac.SituacionAsegasa = SituacionAsegasaENUM.NUEVO
|
||||
seiac.FechaSituacion = Now
|
||||
Else
|
||||
Dim prmods = bd.ObjectStateManager.GetObjectStateEntries(EntityState.Modified)
|
||||
If prmods.Count > 0 Then
|
||||
For Each pr In prmods
|
||||
Dim original = pr.OriginalValues
|
||||
Dim nuevosvalores = pr.CurrentValues
|
||||
For i = 0 To original.FieldCount - 1
|
||||
If original.GetValue(i).GetHashCode <> nuevosvalores.GetValue(i).GetHashCode Then
|
||||
bModificados = True
|
||||
Exit For
|
||||
End If
|
||||
|
||||
Next
|
||||
If bModificados Then Exit For
|
||||
Next
|
||||
End If
|
||||
End If
|
||||
If bModificados Then
|
||||
If seiac.SituacionAsegasa.HasValue = False AndAlso seiac.SituacionAsegasa.Value <> seiac.SituacionAsegasa = SituacionAsegasaENUM.DESCARTADO Then
|
||||
seiac.SituacionAsegasa = SituacionAsegasaENUM.MODIFICADO
|
||||
seiac.FechaSituacion = Now
|
||||
End If
|
||||
Dim nact As New actualizacionessiniestros_eiac
|
||||
With nact
|
||||
.siniestros_eiac = seiac
|
||||
.Fecha = Now
|
||||
.idFicheroCompania = f.idFichero
|
||||
End With
|
||||
bd.actualizacionessiniestros_eiac.AddObject(nact)
|
||||
If seiac.SituacionAsegasa.Value <> seiac.SituacionAsegasa = SituacionAsegasaENUM.DESCARTADO Then
|
||||
If seiac.idPoliza.HasValue = False Then
|
||||
seiac.SituacionAsegasa = SituacionAsegasaENUM.POLIZA_NO_ENCONTRADA
|
||||
Else
|
||||
If sins.Count = 0 Then
|
||||
seiac.SituacionAsegasa = SituacionAsegasaENUM.SINIESTRO_NO_ENCONTRADO
|
||||
ElseIf sins.Count > 1 Then
|
||||
seiac.SituacionAsegasa = SituacionAsegasaENUM.VARIOS_SINIESTROS_POSIBLES
|
||||
End If
|
||||
End If
|
||||
End If
|
||||
bd.SaveChanges()
|
||||
End If
|
||||
Next
|
||||
End If
|
||||
f.FechaProcesado = Now
|
||||
bd.SaveChanges()
|
||||
Catch ex As Exception
|
||||
f.FechaError = Now
|
||||
bd.SaveChanges()
|
||||
Call AñadeLog(tsl5.Enumeraciones.TipoLog.Fallo, "En IncorporaSiniestrosEIACV6.", "Rutina: IncorporaSiniestrosEIACV6. Fichero:" & f.NombreFichero & " " & gestionasegasaEntities.bdga.Servidor & " " & ex.Message, ex)
|
||||
End Try
|
||||
Next
|
||||
Catch ex As Exception
|
||||
Call AñadeLog(tsl5.Enumeraciones.TipoLog.Fallo, "En IncorporaSiniestrosEIACV6.", "Rutina: IncorporaSiniestrosEIACV6. " & gestionasegasaEntities.bdga.Servidor & " " & ex.Message, ex)
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
|
||||
Public Shared Sub IncorporaExpSiniestrosEIACV6()
|
||||
Try
|
||||
Dim bd = bdGestionAsegasa.gestionasegasaEntities.NuevoContextoCN()
|
||||
Dim ltpa = bd.enumeraciones.Where(Function(x) x.gruposenumeraciones.Grupo = "TIPP").ToList
|
||||
Dim tipo As Integer = bdGestionAsegasa.ficheroscompanias.TipoFicheroCompania.SINIESTROS_EIAC
|
||||
Dim ficspen = bd.ficheroscompanias.Where(Function(x) x.Tipo = bdGestionAsegasa.ficheroscompanias.TipoFicheroCompania.SINIESTROS_EIAC AndAlso x.Version = "6.0").OrderBy(Function(x) x.idFichero).ToList
|
||||
|
||||
For Each f In ficspen
|
||||
Try
|
||||
Dim DatosEIAC As ProcesosEIAC_V6.ProcesosEIAC = tsl5.Utilidades.Deserializa(f.Fichero, GetType(ProcesosEIAC_V6.ProcesosEIAC), True)
|
||||
If DatosEIAC.Objetos IsNot Nothing AndAlso DatosEIAC.Objetos.Items IsNot Nothing Then
|
||||
Dim lSins = DatosEIAC.Objetos.Items.Where(Function(x) x.GetType Is GetType(ProcesosEIAC_V6.tipo_siniestro)).Cast(Of ProcesosEIAC_V6.tipo_siniestro)
|
||||
For Each s In lSins
|
||||
Dim sins As List(Of siniestros) = Nothing
|
||||
Dim seiac = bd.siniestros_eiac.FirstOrDefault(Function(x) x.idSiniestroEntidad = s.DatosSiniestro.IdSiniestroEntidad)
|
||||
If seiac IsNot Nothing Then
|
||||
If s.DatosSiniestro.Expedientes IsNot Nothing Then
|
||||
Dim yaincorporados As New List(Of String)
|
||||
For Each exp In s.DatosSiniestro.Expedientes
|
||||
Dim NumeroExpediente As String = exp.NumeroExpediente
|
||||
If NumeroExpediente.NothingAVacio = "" Then NumeroExpediente = exp.GetHashCode.ToString
|
||||
If yaincorporados.Contains(NumeroExpediente) = False Then
|
||||
Dim ep = seiac.expedientessiniestros_eiac.FirstOrDefault(Function(x) x.NumeroExpediente = NumeroExpediente)
|
||||
If ep Is Nothing Then
|
||||
ep = New expedientessiniestros_eiac
|
||||
ep.NumeroExpediente = NumeroExpediente
|
||||
seiac.expedientessiniestros_eiac.Add(ep)
|
||||
End If
|
||||
ep.EstadoExpediente = bdGestionAsegasa.expedientessiniestros_eiac.ObtieneEstadoExpedienteV6(exp.EstadoExpediente)
|
||||
ep.ImporteReserva = exp.ImporteReserva
|
||||
ep.TotalPagos = exp.TotalPagos
|
||||
ep.TotalRecobros = exp.TotalRecobros
|
||||
ep.FechaInicio = exp.FechaInicio
|
||||
ep.FechaFin = exp.FechaFin
|
||||
ep.NumeroOrden = exp.NumeroOrden
|
||||
yaincorporados.Add(NumeroExpediente)
|
||||
End If
|
||||
Next
|
||||
bd.SaveChanges()
|
||||
End If
|
||||
|
||||
End If
|
||||
Next
|
||||
End If
|
||||
' f.FechaProcesado = Now
|
||||
bd.SaveChanges()
|
||||
Catch ex As Exception
|
||||
f.FechaError = Now
|
||||
bd.SaveChanges()
|
||||
Call AñadeLog(tsl5.Enumeraciones.TipoLog.Fallo, "En IncorporaSiniestrosEIACV6.", "Rutina: IncorporaSiniestrosEIACV6. Fichero:" & f.NombreFichero & " " & gestionasegasaEntities.bdga.Servidor & " " & ex.Message, ex)
|
||||
End Try
|
||||
Next
|
||||
Catch ex As Exception
|
||||
Call AñadeLog(tsl5.Enumeraciones.TipoLog.Fallo, "En IncorporaSiniestrosEIACV6.", "Rutina: IncorporaSiniestrosEIACV6. " & gestionasegasaEntities.bdga.Servidor & " " & ex.Message, ex)
|
||||
End Try
|
||||
End Sub
|
||||
End Class
|
||||
782
guia/procesos/ProcesosTractoresAxa.vb
Normal file
782
guia/procesos/ProcesosTractoresAxa.vb
Normal file
@@ -0,0 +1,782 @@
|
||||
Imports tsl5.Extensiones.StringExtensions
|
||||
Imports bdGestionAsegasa.Utilidades
|
||||
Public Class ProcesosTractoresAxa
|
||||
''' <summary>
|
||||
''' Revisa qué pólizas de la última semana están pendientes de generación de CSV. Se genera el CSV y se crea en la base de datos toda la informacion relacionada y necesaria.
|
||||
''' </summary>
|
||||
''' <param name="bd"></param>
|
||||
''' <remarks>Este método no crea el correo que se envía a AXA diariamente. Para eso se usa otro método distinto.</remarks>
|
||||
Public Shared Function GenerarYGuardarEnBdCsvTractoresAxa(ByVal bd As bdGestionAsegasa.gestionasegasaEntities)
|
||||
Dim resultadoGuardarCambios As Integer = 0
|
||||
Try
|
||||
Dim listaAltas As New List(Of bdGestionAsegasa.polizassg)
|
||||
Dim listaAltasFiltradasPorFecha As New List(Of bdGestionAsegasa.polizassg)
|
||||
Dim idRamoTractores = bd.ramos.First(Function(x) x.Codigo = "1-1").idRamo
|
||||
Dim idRamoRemolques = bd.ramos.First(Function(x) x.Codigo = "1-1-1").idRamo
|
||||
Dim idCiaAXA = bd.companias.First(Function(x) x.Codigo = "0027").idCompania
|
||||
Dim idTipoGestionPoliza = bd.enumeraciones.First(Function(x) x.Codigo = "TGP.CSVAXA").idEnumeracion
|
||||
Dim idTipoFicheroCSV = bd.enumeraciones.First(Function(x) x.Codigo = "TIPFIC.CSVAXA").idEnumeracion
|
||||
Dim lineaFichero As bdGestionAsegasa.ficheros
|
||||
Dim lineaGestionesVarias As bdGestionAsegasa.gestionesvarias
|
||||
|
||||
' Datos para comprobar que toca hacerlo
|
||||
Dim dHoy As Date = Date.Today
|
||||
Dim dAyer As Date = Date.Today.AddDays(-1)
|
||||
' Dim dSemana As Date = Date.Today.AddDays(-7)
|
||||
|
||||
' Las pólizas que necesitan CSV son las que cumplan estas condiciones:
|
||||
' - Sean de ramo 1-1 o 1-1-1.
|
||||
' - La compañía sea AXA.
|
||||
' - No tengan archivo CSV. Dicho de otro modo, que no tengan líneas en la tabla `gestionespolizassg` con la gestión "Creación de CSV y envío a AXA".
|
||||
' - Que en la columna idOrigenPresupuesto el valor sea TiposPresupuestos.TRACTORES (2).
|
||||
' - Que la fecha de creación sea anterior a hoy (ya que esto se ejecutará a las 00:00 y debe procesar las del día anterior).
|
||||
' - Que la fecha de creación no sea mayor a 7 días.
|
||||
' - Oculto = false
|
||||
|
||||
' Nota: En algún momento me interesaría poner que algunos estos filtros de búsqueda sean parametros que se le pasen a este método.
|
||||
|
||||
' Por ahora lo estoy haciendo así como dos consultas porque LINQtoSQL no permite filtrar por Date en los Where.
|
||||
' Quizás lo mejor sería crear una vista para optimizar el rendimiento. Pero esto se ejecuta una sola vez al día, no sé si merece la pena hacerlo.
|
||||
|
||||
Try
|
||||
listaAltas = (From x In bd.polizassg Where (x.ramos.idRamo = idRamoTractores OrElse x.ramos.idRamo = idRamoRemolques) _
|
||||
AndAlso x.idCompania = idCiaAXA _
|
||||
AndAlso x.FechaAceptacionPresupuesto.HasValue _
|
||||
AndAlso x.FechaBaja.HasValue = False _
|
||||
AndAlso Not x.gestionespolizassg.Any(Function(y) y.idTipo = idTipoGestionPoliza) _
|
||||
AndAlso x.idOrigenPresupuesto = bdGestionAsegasa.polizassg.TiposPresupuestos.TRACTORES
|
||||
).ToList()
|
||||
'listaAltasFiltradasPorFecha = listaAltas.Where(Function(x) (x.FechaAlta.HasValue AndAlso x.FechaAlta.Value.Date < dHoy) _
|
||||
' AndAlso (x.FechaAlta.HasValue AndAlso x.FechaAlta.Value.Date >= dSemana)
|
||||
' ).ToList()
|
||||
listaAltasFiltradasPorFecha = listaAltas.Where(Function(x) (x.FechaAlta.HasValue AndAlso x.FechaAlta.Value.Date < dHoy)).ToList
|
||||
|
||||
Debug.WriteLine("listaAltas: {0}", listaAltas.Count())
|
||||
Debug.WriteLine("listaAltasFiltradasPorFecha: {0}", listaAltasFiltradasPorFecha.Count())
|
||||
For Each item In listaAltasFiltradasPorFecha
|
||||
Debug.WriteLine("({0},{1},{2})", item.idPoliza, item.NumeroPoliza, item.Matricula)
|
||||
Next
|
||||
Catch ex As Exception
|
||||
System.Diagnostics.Debug.Write(ex.ToString)
|
||||
Call AñadeLog(tsl5.Enumeraciones.TipoLog.Fallo, "En «" & System.Reflection.MethodBase.GetCurrentMethod.ToString & "`",
|
||||
"En método `" & System.Reflection.MethodBase.GetCurrentMethod.ToString & "`. " _
|
||||
& Environment.MachineName & " " & ex.ToString, ex)
|
||||
End Try
|
||||
|
||||
If listaAltasFiltradasPorFecha.Count > 0 Then 'Si entra, significa que toca hacerlo.
|
||||
|
||||
lineaFichero = New bdGestionAsegasa.ficheros With {
|
||||
.Descripcion = String.Format("{0} {1}",
|
||||
bd.enumeraciones.First(Function(x) x.Codigo = "AXATRACTORES.DescripcionFicheroCSV").ValorAlfabeticoLargo,
|
||||
dAyer.ToString("yyyy-MM-dd")),
|
||||
.Fecha = Now,
|
||||
.idTipo = idTipoFicheroCSV,
|
||||
.NombreFichero = String.Format("{0}{1}.csv",
|
||||
bd.enumeraciones.First(Function(x) x.Codigo = "AXATRACTORES.NombreFicheroCSV").ValorAlfabeticoLargo,
|
||||
dAyer.ToString("yyyy-MM-dd"))
|
||||
}
|
||||
|
||||
bd.ficheros.AddObject(lineaFichero)
|
||||
'bd.GuardarCambios()
|
||||
|
||||
lineaGestionesVarias = New bdGestionAsegasa.gestionesvarias With {
|
||||
.Descripción = lineaFichero.NombreFichero,
|
||||
.idTipo = idTipoGestionPoliza,
|
||||
.ficheros = lineaFichero,
|
||||
.FechaCreacion = Now
|
||||
}
|
||||
|
||||
bd.gestionesvarias.AddObject(lineaGestionesVarias)
|
||||
|
||||
' /////////////////////////////////////////////////////////
|
||||
' // Generar CSV conteniendo todas las altas pendientes //
|
||||
' ///////////////////////////////////////////////////////
|
||||
|
||||
Dim archivoCSV As Byte() = GenerarCsvTractoresAxa(bd, listaAltasFiltradasPorFecha, lineaGestionesVarias)
|
||||
|
||||
' /////////////////////////////////////////////////////////////
|
||||
' // FIN Generar CSV conteniendo todas las altas pendientes //
|
||||
' ///////////////////////////////////////////////////////////
|
||||
|
||||
' Crear líneas en la base de datos para fichero y gestiones varias
|
||||
lineaFichero.Fichero = archivoCSV
|
||||
resultadoGuardarCambios = bd.GuardarCambios()
|
||||
|
||||
' Notificación Slack
|
||||
If resultadoGuardarCambios > 0 Then
|
||||
Try
|
||||
Dim mensaje As New Text.StringBuilder
|
||||
mensaje.AppendFormat("Se ha generado un archivo CSV con altas de tractores y/o remolques para AXA.```idFichero: {1}{0}NombreFichero: {2}{0}idGestion: {3}{0}Servidor: {4}```", vbCrLf,
|
||||
lineaFichero.idFichero, lineaFichero.NombreFichero, lineaGestionesVarias.idGestion, Environment.MachineName)
|
||||
tsl5.Utilidades.EnviarNotificacionSlack(mensaje.ToString, destinatario:="#asegasa", descripcionRemitente:=Reflection.MethodBase.GetCurrentMethod.ToString)
|
||||
Catch ex As Exception
|
||||
' Si esta notificación da error no debe pararse el servicio, así que no hago nada.
|
||||
End Try
|
||||
End If
|
||||
End If
|
||||
Catch ex As Exception
|
||||
System.Diagnostics.Debug.WriteLine("No hay líneas o se produjo excepción.")
|
||||
System.Diagnostics.Debug.WriteLine(ex.ToString)
|
||||
Call AñadeLog(tsl5.Enumeraciones.TipoLog.Fallo, "En «" & System.Reflection.MethodBase.GetCurrentMethod.ToString & "`",
|
||||
"En método `" & System.Reflection.MethodBase.GetCurrentMethod.ToString & "`. " _
|
||||
& Environment.MachineName & " " & ex.ToString, ex)
|
||||
End Try
|
||||
Debug.WriteLine(System.Reflection.MethodBase.GetCurrentMethod.ToString)
|
||||
Return resultadoGuardarCambios
|
||||
End Function
|
||||
''' <summary>
|
||||
''' Este es el método que se encarga de crear el CSV propiamente dicho. Opcionalmente (aunque, por lo general, sí) este método
|
||||
''' va creando en la tabla `gestionnespolizassg` las líneas indicando que se ha creado el CSV para cada póliza.
|
||||
''' </summary>
|
||||
''' <param name="bd"></param>
|
||||
''' <param name="listaPolizas">La lista de pólizas de tractores que se van a incluir en el CSV.</param>
|
||||
''' <param name="lineaGestionesVarias">Si este parámetro se recibe, se crean en la tabla `gestionnespolizassg` las líneas que indican que se ha creado el CSV para cada póliza.</param>
|
||||
''' <returns>Un array de bytes conteniendo el fichero CSV.</returns>
|
||||
''' <remarks>Si no se recibe el parámtro "lineaGestionesVarias" no se crearán en la base de datos las líneas que indican que se ha creado el CSV para cada póliza.
|
||||
''' La ventaja de esto es que así se puede usar este método para generar CSV de manera puntual o para depuración.</remarks>
|
||||
Public Shared Function GenerarCsvTractoresAxa(ByVal bd As bdGestionAsegasa.gestionasegasaEntities, ByVal listaPolizas As List(Of bdGestionAsegasa.polizassg), Optional ByRef lineaGestionesVarias As bdGestionAsegasa.gestionesvarias = Nothing)
|
||||
Dim archivoCSV As Byte() = Nothing
|
||||
Dim idTipoGestionPoliza As String = bd.enumeraciones.First(Function(x) x.Codigo = "TGP.CSVAXA").idEnumeracion
|
||||
Dim sDescripcionGestion As String = bd.enumeraciones.First(Function(x) x.Codigo = "AXATRACTORES.DescripcionGestion").ValorAlfabeticoLargo
|
||||
Dim nombreArchivoTemporal As String = System.IO.Path.GetTempFileName
|
||||
Using sw As New IO.StreamWriter(IO.File.Open(nombreArchivoTemporal, IO.FileMode.Create), System.Text.Encoding.GetEncoding("iso-8859-1"))
|
||||
|
||||
' Esta línea que escribo a continuación en el archivo era demasiado larga para guardarla en la tabla enumeraciones de la base de datos.
|
||||
sw.WriteLine("Código Marca;Código Modelo;Código Versión;Medofi;Fecha de Efecto;Hora de Fecha Efecto;CAMPAÑA;Producto;Nº Póliza Reservado;Fecha entrada en Delegación;Duración;Plan de cobro;Canal de cobro;Fecha Vto.;NIF, CIF, OTROS;Nº de NIF ó CIF;Primer apellido si es Empresa, no cumplimentar;Segundo apellido si es Empresa, no cumplimentar;Nombre;Fecha Nacimiento;Estado Civil;SEXO;C.P.;Población;Tipo Vía;Nombre Vía;Numero vía;Resto Vía;Propietario;Nombre propietario;Apellido 1 propietario;Apellido 2 propietario;Nif/Cif propietario;Conductor Titular;Nombre Conductor;1º Apellido Conductor;2º Apellido Conductor;Fecha nacimiento conductor DDMMAAAA;Nif, Cif, Otros;NIF Conductor;SEXO;Fecha carnét DDMMAAAA;Conductor Autorizado 1;Nombre Conductor;1º Apellido Conductor;2º Apellido Conductor;Fecha nto. Conductor DDMMAAAA;NIF Conductor;SEXO;Fecha carnet DDMMAAAA;Conductor Autorizado 2;Nombre Conductor;1º Apellido Conductor;2º Apellido Conductor;Fecha nto. Conductor DDMMAAAA;NIF Conductor;SEXO;Fecha carnet DDMMAAAA;Permiso retirado (fijo);Uso Vehículo (según tabla);Accesorios;Tipo de Accesorios;Descripción (Detallar los accesorios separados por comas);Valor Accesorios (valor total);Peso en Toneladas;Literal de Marca;Literal de Modelo;Literal de Versión;Valor (fijo);Valor LUNAS;Matrícula;Fecha 1ª Matriculación DDMMAAAA;C.P. circulación (poner el CP del conductor);Alarma (fijo);Garaje (fijo);KM recorridos (fijo);Combinación de Garantías;Combinación de Accidentes;Kit RC Explotación Agrícola;PRIMA TOTAL;Nº PîLIZA EMITIDA;PNETA EMITIDA;PTOTAL EMITIDA")
|
||||
For Each linea In listaPolizas
|
||||
|
||||
' Comprobar si el archivo XML es el tractores.xml de tipo "TIPFIC.PRESUPUESTO
|
||||
Dim idTipoFicheroPresupuesto As Integer = bd.enumeraciones.First(Function(x) x.Codigo = "TIPFIC.PRESUPUESTO").idEnumeracion
|
||||
If linea.ficheros.idTipo = idTipoFicheroPresupuesto _
|
||||
AndAlso linea.ficheros.NombreFichero.Trim.ToUpper = "tractores.xml".ToUpper _
|
||||
AndAlso linea.NumeroPoliza IsNot Nothing AndAlso Not String.IsNullOrWhiteSpace(linea.NumeroPoliza) Then
|
||||
' Componer la poliza del archivo CSV
|
||||
Dim lineaCSV As String = ""
|
||||
Dim lineaCsvCorrecta As Boolean = False
|
||||
Try
|
||||
lineaCSV = ComponerLineaCsv(linea, bd)
|
||||
lineaCsvCorrecta = True
|
||||
Catch ex As Exception
|
||||
Dim asunto As String = "No se ha podido generar una línea del CSV de TractoresAXA; idPoliza = " & linea.idPoliza & "; Máquina = " & Environment.MachineName
|
||||
Dim cuerpo As String = "No se ha podido generar una línea del CSV de TractoresAXA; idPoliza = " & linea.idPoliza & vbCrLf &
|
||||
"Esto podría significar que falta algún dato en esta póliza. " & vbCrLf &
|
||||
"En método `" & System.Reflection.MethodBase.GetCurrentMethod.ToString & "`. " _
|
||||
& vbCrLf & Environment.MachineName & " " & ex.ToString
|
||||
Call AñadeLog(tsl5.Enumeraciones.TipoLog.Fallo, asunto, cuerpo, ex)
|
||||
tsl5.Utilidades.EnviarNotificacionSlack(asunto, destinatario:="#asegasa", descripcionRemitente:=Reflection.MethodBase.GetCurrentMethod.ToString)
|
||||
End Try
|
||||
|
||||
If lineaCsvCorrecta Then
|
||||
sw.WriteLine(lineaCSV)
|
||||
' Si he sido capaz de componer la línea del archivo CSV, tengo que guardarlo en la tabla gestionespolizassg
|
||||
If lineaGestionesVarias IsNot Nothing AndAlso Not String.IsNullOrWhiteSpace(lineaGestionesVarias.Descripción) Then
|
||||
linea.gestionespolizassg.Add(New bdGestionAsegasa.gestionespolizassg With {
|
||||
.idPoliza = linea.idPoliza,
|
||||
.idTipo = idTipoGestionPoliza,
|
||||
.Fecha = Date.Now,
|
||||
.GestionesRealizadas = sDescripcionGestion,
|
||||
.gestionesvarias = lineaGestionesVarias
|
||||
})
|
||||
End If
|
||||
End If
|
||||
Else
|
||||
Dim cadenaError As String = String.Format("Advertencia: el fichero no es de tipo ""TIPFIC.PRESUPUESTO"" o no se llama ""tractores.xml"", o no hay número de póliza; idPoliza = {0}", linea.idPoliza)
|
||||
Console.WriteLine(cadenaError)
|
||||
Call AñadeLog(tsl5.Enumeraciones.TipoLog.Fallo, "En «" & System.Reflection.MethodBase.GetCurrentMethod.ToString & "`",
|
||||
"En método `" & System.Reflection.MethodBase.GetCurrentMethod.ToString & "`. " _
|
||||
& Environment.MachineName & " " & cadenaError)
|
||||
End If
|
||||
Next
|
||||
sw.Close()
|
||||
sw.Dispose()
|
||||
End Using
|
||||
|
||||
' Solo tenemos que enviarlo si el archivo tiene más de 1 línea.
|
||||
' Si solo tiene 1, significa que solo va la línea de la cabecera, es decir,
|
||||
' que no hay datos de ninguna póliza en ese archivo CSV.
|
||||
' En ese caso, lanzamos una excepción para que se interruma el proceso.
|
||||
If NumeroDeLineasEnElArchivoCSV(nombreArchivoTemporal) <= 1 Then
|
||||
Throw New Exception("El archivo CSV que se ha generado solamente tiene la línea de la cabecera, es decir, no lleva información de ninguna póliza, por lo cual no tiene sentido mandarlo.")
|
||||
End If
|
||||
|
||||
' Pasar el archivo CSV a array de bytes
|
||||
archivoCSV = IO.File.ReadAllBytes(nombreArchivoTemporal)
|
||||
Try
|
||||
IO.File.Delete(nombreArchivoTemporal)
|
||||
Catch ex As Exception
|
||||
' Nada, a propósito.
|
||||
' Si el archivo sobrevive tampoco es un gran problema.
|
||||
End Try
|
||||
Return archivoCSV
|
||||
End Function
|
||||
''' <summary>
|
||||
''' Este método solamente crea un CSV; nada se guarda en la base de datos. Principalmente se usará con propósitos de pruebas y/o depuración.
|
||||
''' </summary>
|
||||
''' <param name="bd"></param>
|
||||
''' <param name="cadenaListaPolizas">Una cadena de texto que incluya listas o rangos de pólizas en este formato: "64816901, 64816906-64816911, 64816915".
|
||||
''' Esto significa "la póliza 64816901, el rango de las pólizas comprendidas entre la 64816906 y la 64816911, y la póliza 64816915". El separador "-" indica rango;
|
||||
''' el separador "," separa elementos de la lista.</param>
|
||||
''' <returns>Un array de bytes conteniendo el fichero CSV.</returns>
|
||||
''' <remarks>Este método solamente crea un CSV; nada se guarda en la base de datos. Principalmente se usará con propósitos de pruebas y/o depuración.
|
||||
''' Solo funcionará si todas las pólizas especificadas son de tractores de AXA generadas desde WEbAsegasa2018 (agentes.asegasa.com).</remarks>
|
||||
Public Shared Function GenerarCsvTractoresAxa(ByVal bd As bdGestionAsegasa.gestionasegasaEntities, Optional ByVal cadenaListaPolizas As String = Nothing)
|
||||
Dim archivoCSV As Byte() = Nothing
|
||||
Dim listaPolizas As New List(Of bdGestionAsegasa.polizassg)
|
||||
Dim idRamoTractores As String = (From x In bd.ramos Where x.Codigo = "1-1" Select x.idRamo).FirstOrDefault
|
||||
Dim idRamoRemolques As String = (From x In bd.ramos Where x.Codigo = "1-1-1" Select x.idRamo).FirstOrDefault
|
||||
Dim idCiaAXA As String = (From x In bd.companias Where x.Codigo = "0027" Select x.idCompania).FirstOrDefault
|
||||
|
||||
Dim listaCadenasSeparadasPorComas As List(Of String) = cadenaListaPolizas.Split(",").ToList
|
||||
For Each x In listaCadenasSeparadasPorComas
|
||||
If x.Contains("-") Then
|
||||
Dim subListaRangos As List(Of String) = x.Split("-").ToList
|
||||
If subListaRangos.Count = 2 Then
|
||||
Dim iRangoDesde As UInteger = UInteger.Parse(subListaRangos.First.Trim())
|
||||
Dim iRangoHasta As UInteger = UInteger.Parse(subListaRangos.Last.Trim())
|
||||
listaPolizas.AddRange(bd.polizassg.Where(Function(y) (y.ramos.idRamo = idRamoTractores OrElse y.ramos.idRamo = idRamoRemolques) _
|
||||
AndAlso y.idCompania = idCiaAXA _
|
||||
AndAlso y.idOrigenPresupuesto = bdGestionAsegasa.polizassg.TiposPresupuestos.TRACTORES _
|
||||
AndAlso (y.NumeroPoliza >= iRangoDesde AndAlso y.NumeroPoliza <= iRangoHasta)
|
||||
).OrderBy(Function(y) y.NumeroPoliza).ToList())
|
||||
Else
|
||||
Throw New FormatException("Error con el formato de los rangos de números de pólizas especificados: " & cadenaListaPolizas)
|
||||
End If
|
||||
Else
|
||||
Dim sNumeroPoliza As String = x.Trim()
|
||||
Dim temp = bd.polizassg.Where(Function(y) y.NumeroPoliza = sNumeroPoliza).First
|
||||
listaPolizas.Add(temp)
|
||||
End If
|
||||
Next
|
||||
For Each poliza In listaPolizas
|
||||
Debug.WriteLine(String.Format("[{0},{1},{2}]", poliza.idPoliza, poliza.NumeroPoliza, poliza.Matricula))
|
||||
Next
|
||||
archivoCSV = GenerarCsvTractoresAxa(bd, listaPolizas)
|
||||
Return archivoCSV
|
||||
End Function
|
||||
''' <summary>
|
||||
''' Este método solamente crea un CSV; nada se guarda en la base de datos. Principalmente se usará con propósitos de pruebas y/o depuración.
|
||||
''' </summary>
|
||||
''' <param name="bd"></param>
|
||||
''' <param name="fechaDesde">Desde esta fecha se incluirán todas las pólizas de tractores de AXA en el rango que será procesado.</param>
|
||||
''' <param name="fechaHasta">Hasta esta fecha se incluirán todas las pólizas de tractores de AXA en el rango que será procesado.</param>
|
||||
''' <returns>Este método solamente crea un CSV; nada se guarda en la base de datos. Principalmente se usará con propósitos de pruebas y/o depuración.</returns>
|
||||
''' <remarks>Ambas fechas especificadas están incluídas en el rango que será procesado.</remarks>
|
||||
Public Shared Function GenerarCsvTractoresAxa(ByVal bd As bdGestionAsegasa.gestionasegasaEntities, ByVal fechaDesde As Date, ByVal fechaHasta As Date)
|
||||
Dim archivoCSV As Byte() = Nothing
|
||||
Dim idRamoTractores As String = (From x In bd.ramos Where x.Codigo = "1-1" Select x.idRamo).FirstOrDefault
|
||||
Dim idRamoRemolques As String = (From x In bd.ramos Where x.Codigo = "1-1-1" Select x.idRamo).FirstOrDefault
|
||||
Dim idCiaAXA As String = (From x In bd.companias Where x.Codigo = "0027" Select x.idCompania).FirstOrDefault
|
||||
Dim listaAltas As List(Of bdGestionAsegasa.polizassg) = (From x In bd.polizassg Where (x.ramos.idRamo = idRamoTractores OrElse x.ramos.idRamo = idRamoRemolques) _
|
||||
AndAlso x.idCompania = idCiaAXA _
|
||||
AndAlso x.idOrigenPresupuesto = bdGestionAsegasa.polizassg.TiposPresupuestos.TRACTORES
|
||||
).ToList()
|
||||
Dim listaAltasFiltradasPorFecha As List(Of bdGestionAsegasa.polizassg) = listaAltas.Where(Function(x) (x.FechaAlta.HasValue AndAlso x.FechaAlta.Value.Date <= fechaHasta) _
|
||||
AndAlso (x.FechaAlta.HasValue AndAlso x.FechaAlta.Value.Date >= fechaDesde)
|
||||
).ToList()
|
||||
archivoCSV = GenerarCsvTractoresAxa(bd, listaAltasFiltradasPorFecha)
|
||||
Return archivoCSV
|
||||
End Function
|
||||
Private Shared Function ComponerLineaCsv(poliza As bdGestionAsegasa.polizassg, bd As bdGestionAsegasa.gestionasegasaEntities) As String
|
||||
' Importante: tengo que hacer trim a todos los campos, por si acaso. Los apellidos se han guardando con espacios por delante.
|
||||
Dim sb As New Text.StringBuilder
|
||||
Try
|
||||
' Primero verifico que todos los campos tengan datos. Si alguno no tiene, lanzo excepción.
|
||||
Dim listaDatosFaltantes As New List(Of String)
|
||||
|
||||
If String.IsNullOrWhiteSpace(poliza.Tractores.TipoVehiculo.Trim()) Then listaDatosFaltantes.Add("poliza.Tractores.TipoVehiculo")
|
||||
If String.IsNullOrWhiteSpace(poliza.FechaEfecto.ToString("ddMMyyyy")) Then listaDatosFaltantes.Add("poliza.FechaEfecto")
|
||||
If String.IsNullOrWhiteSpace(poliza.Tomador.CIF.Trim()) Then listaDatosFaltantes.Add("poliza.Tomador.CIF")
|
||||
If ObtenerTipoDocumentoTractoresAxa(poliza.Tomador.CIF) <> bd.enumeraciones.First(Function(x) x.Codigo = "AXATRACTORES.tipoDoc.PersJuridicaCIF").ValorAlfabeticoLargo Then ' Si no es CIF
|
||||
If String.IsNullOrWhiteSpace(poliza.Tractores.TomadorApellido1.Trim()) Then listaDatosFaltantes.Add("poliza.Tractores.TomadorApellido1")
|
||||
'If String.IsNullOrWhiteSpace(poliza.Tractores.TomadorApellido2.Trim()) Then listaDatosFaltantes.Add("poliza.Tractores.TomadorApellido2")
|
||||
End If
|
||||
If String.IsNullOrWhiteSpace(poliza.Tractores.TomadorNombre.Trim()) Then listaDatosFaltantes.Add("poliza.Tractores.TomadorNombre")
|
||||
If String.IsNullOrWhiteSpace(poliza.Tractores.TomadorFechaNacimiento.ToString("ddMMyyyy")) Then listaDatosFaltantes.Add("poliza.Tractores.TomadorFechaNacimiento")
|
||||
If String.IsNullOrWhiteSpace(poliza.Tractores.EstadoCivil.Trim()) Then listaDatosFaltantes.Add("poliza.Tractores.EstadoCivil")
|
||||
If ObtenerTipoDocumentoTractoresAxa(poliza.Tomador.CIF) <> bd.enumeraciones.First(Function(x) x.Codigo = "AXATRACTORES.tipoDoc.PersJuridicaCIF").ValorAlfabeticoLargo Then ' Si no es CIF
|
||||
If String.IsNullOrWhiteSpace(poliza.Tractores.TomadorSexo.ToString) Then listaDatosFaltantes.Add("poliza.Tractores.TomadorSexo")
|
||||
End If
|
||||
If String.IsNullOrWhiteSpace(poliza.Tractores.TomadorCodigoPostal.Trim()) Then listaDatosFaltantes.Add("poliza.Tractores.TomadorCodigoPostal")
|
||||
If String.IsNullOrWhiteSpace(poliza.Tractores.TomadorPoblacion.Trim()) Then listaDatosFaltantes.Add("poliza.Tractores.TomadorPoblacion")
|
||||
If String.IsNullOrWhiteSpace(poliza.Tractores.TomadorVia.Trim()) Then listaDatosFaltantes.Add("poliza.Tractores.TomadorVia")
|
||||
If String.IsNullOrWhiteSpace(poliza.Tractores.TomadorNombreVia.Trim()) Then listaDatosFaltantes.Add("poliza.Tractores.TomadorNombreVia")
|
||||
If String.IsNullOrWhiteSpace(poliza.Tractores.TomadorNumeroVia.Trim()) Then listaDatosFaltantes.Add("poliza.Tractores.TomadorNumeroVia")
|
||||
If ObtenerTipoDocumentoTractoresAxa(poliza.Propietario.CIF) <> bd.enumeraciones.First(Function(x) x.Codigo = "AXATRACTORES.tipoDoc.PersJuridicaCIF").ValorAlfabeticoLargo Then ' Si no es CIF
|
||||
If String.IsNullOrWhiteSpace(poliza.Tractores.PropietarioSexo.ToString) Then listaDatosFaltantes.Add("poliza.Tractores.PropietarioSexo")
|
||||
If String.IsNullOrWhiteSpace(poliza.Tractores.PropietarioApellido1.Trim()) Then listaDatosFaltantes.Add("poliza.Tractores.PropietarioApellido1")
|
||||
'If String.IsNullOrWhiteSpace(poliza.Tractores.PropietarioApellido2.Trim()) Then listaDatosFaltantes.Add("poliza.Tractores.PropietarioApellido2")
|
||||
End If
|
||||
If poliza.Propietario IsNot Nothing AndAlso poliza.Propietario.idEntidad <> poliza.Tomador.idEntidad Then
|
||||
If String.IsNullOrWhiteSpace(poliza.Propietario.Nombre.Trim) And (ObtenerTipoDocumentoTractoresAxa(poliza.Propietario.CIF) <> bd.enumeraciones.First(Function(x) x.Codigo = "AXATRACTORES.tipoDoc.PersJuridicaCIF").ValorAlfabeticoLargo) Then
|
||||
listaDatosFaltantes.Add("poliza.propietario.nombre")
|
||||
End If
|
||||
If String.IsNullOrWhiteSpace(poliza.Propietario.CIF.Trim()) Then listaDatosFaltantes.Add("poliza.Propietario.CIF")
|
||||
End If
|
||||
If poliza.Conductor Is Nothing OrElse poliza.Conductor.idEntidad = poliza.Tomador.idEntidad Then
|
||||
'If Not poliza.Conductor.FechaExpedicionCarnet.HasValue Then
|
||||
' listaDatosFaltantes.Add("poliza.Conductor.FechaExpedicionCarnet")
|
||||
'Else
|
||||
' If String.IsNullOrWhiteSpace(poliza.Conductor.FechaExpedicionCarnet.Value.ToString("ddMMyyyy")) Then listaDatosFaltantes.Add("poliza.Conductor.FechaExpedicionCarnet")
|
||||
'End If
|
||||
If Not (poliza.Tractores.FechaPermisoConduccion > Date.MinValue AndAlso poliza.Tractores.FechaPermisoConduccion < Date.MaxValue) Then
|
||||
listaDatosFaltantes.Add("poliza.Tractores.FechaPermisoConduccion")
|
||||
End If
|
||||
If String.IsNullOrWhiteSpace(poliza.Tractores.FechaPermisoConduccion.ToString("ddMMyyyy")) Then listaDatosFaltantes.Add("poliza.Tractores.FechaPermisoConduccion")
|
||||
Else
|
||||
If String.IsNullOrWhiteSpace(poliza.Tractores.ConductorNombre.Trim()) Then listaDatosFaltantes.Add("poliza.Tractores.ConductorNombre")
|
||||
If String.IsNullOrWhiteSpace(poliza.Tractores.ConductorApellido1.Trim()) Then listaDatosFaltantes.Add("poliza.Tractores.ConductorApellido1")
|
||||
'If String.IsNullOrWhiteSpace(poliza.Tractores.ConductorApellido2.Trim()) Then listaDatosFaltantes.Add("poliza.Tractores.ConductorApellido2")
|
||||
If String.IsNullOrWhiteSpace(poliza.Tractores.ConductorFechaNacimiento.ToString("ddMMyyyy")) Then listaDatosFaltantes.Add("poliza.Tractores.ConductorFechaNacimiento")
|
||||
If String.IsNullOrWhiteSpace(poliza.Conductor.CIF.Trim()) Then listaDatosFaltantes.Add("poliza.Conductor.CIF")
|
||||
If String.IsNullOrWhiteSpace(poliza.Tractores.ConductorSexo.ToString) Then listaDatosFaltantes.Add("poliza.Tractores.ConductorSexo")
|
||||
If String.IsNullOrWhiteSpace(poliza.Tractores.FechaPermisoConduccion.ToString("ddMMyyyy")) Then listaDatosFaltantes.Add("poliza.Tractores.FechaPermisoConduccion")
|
||||
End If
|
||||
If String.IsNullOrWhiteSpace(poliza.Tractores.UsoVehiculo.Trim()) Then listaDatosFaltantes.Add("poliza.Tractores.UsoVehiculo")
|
||||
If String.IsNullOrWhiteSpace(poliza.Tractores.Peso.ToString.Trim()) Then listaDatosFaltantes.Add("poliza.Tractores.Peso")
|
||||
If String.IsNullOrWhiteSpace(poliza.Tractores.Marca.Trim()) Then listaDatosFaltantes.Add("poliza.Tractores.Marca")
|
||||
If String.IsNullOrWhiteSpace(poliza.Tractores.Modelo.Trim()) Then listaDatosFaltantes.Add("poliza.Tractores.Modelo")
|
||||
If String.IsNullOrWhiteSpace(poliza.Tractores.Version.Trim()) Then listaDatosFaltantes.Add("poliza.Tractores.Version")
|
||||
If String.IsNullOrWhiteSpace(poliza.Matricula.ToUpper.Trim()) Then listaDatosFaltantes.Add("poliza.Matricula")
|
||||
If String.IsNullOrWhiteSpace(poliza.Tractores.FechaPrimeraMatriculacion.ToString("ddMMyyyy")) Then listaDatosFaltantes.Add("poliza.Tractores.FechaPrimeraMatriculacion")
|
||||
If String.IsNullOrWhiteSpace(poliza.Tractores.TomadorCodigoPostal.Trim()) Then listaDatosFaltantes.Add("poliza.Tractores.TomadorCodigoPostal")
|
||||
If String.IsNullOrWhiteSpace(poliza.Tractores.CombinacionAccidentes.Trim()) Then listaDatosFaltantes.Add("poliza.Tractores.CombinacionAccidentes")
|
||||
If String.IsNullOrWhiteSpace(poliza.Tractores.PrimaTotal.Trim()) Then listaDatosFaltantes.Add("poliza.Tractores.PrimaTotal")
|
||||
|
||||
If listaDatosFaltantes.Count > 0 Then
|
||||
Dim sbDatosFaltantes As New Text.StringBuilder
|
||||
For Each l In listaDatosFaltantes
|
||||
sbDatosFaltantes.AppendFormat("{0}, ", l) 'Sí, esto es así. No es un error.
|
||||
Next
|
||||
Throw New Exception(String.Format("No se puede componer esta línea del CSV porque faltan datos en la póliza idPoliza = {0}; Lista de datos faltantes: {1}.",
|
||||
poliza.idPoliza,
|
||||
sbDatosFaltantes.ToString.RecortarPorElFinal(2)))
|
||||
End If
|
||||
' Fin de la verificación
|
||||
|
||||
' Datos generales de la póliza
|
||||
sb.AppendFormat("{0};", poliza.Tractores.TipoVehiculo.Trim()) ' Código Marca
|
||||
sb.AppendFormat("=""{0}"";", "001") ' Código Modelo
|
||||
sb.AppendFormat("=""{0}"";", "001") ' Código Versión
|
||||
sb.AppendFormat("{0};", "674392") ' Medofi
|
||||
sb.AppendFormat("=""{0}"";", poliza.FechaEfecto.ToString("ddMMyyyy")) ' Fecha de Efecto
|
||||
sb.AppendFormat("{0};", "") ' Hora de Fecha Efecto
|
||||
sb.AppendFormat("{0};", "") ' CAMPAÑA
|
||||
sb.AppendFormat("{0};", "8184") ' Producto
|
||||
sb.AppendFormat("{0};", poliza.NumeroPoliza.Trim()) ' Nº Póliza Reservado
|
||||
sb.AppendFormat("{0};", "") ' Fecha entrada en Delegación
|
||||
sb.AppendFormat("{0};", "Anual Renovable") ' Duración
|
||||
sb.AppendFormat("{0};", "Anual") ' Plan de cobro
|
||||
sb.AppendFormat("{0};", "Mediador") ' Canal de cobro
|
||||
sb.AppendFormat("{0};", "") ' Fecha Vto.
|
||||
|
||||
' Tomador
|
||||
sb.AppendFormat("{0};", ObtenerTipoDocumentoTractoresAxa(poliza.Tomador.CIF)) ' NIF, CIF, OTROS
|
||||
sb.AppendFormat("{0};", poliza.Tomador.CIF.Trim()) ' Nº de NIF ó CIF
|
||||
sb.AppendFormat("{0};", poliza.Tractores.TomadorApellido1.Trim()) ' Primer apellido si es Empresa, no cumplimentar
|
||||
sb.AppendFormat("{0};", poliza.Tractores.TomadorApellido2.Trim()) ' Segundo apellido si es Empresa, no cumplimentar
|
||||
sb.AppendFormat("{0};", poliza.Tractores.TomadorNombre.Trim()) ' Nombre
|
||||
sb.AppendFormat("=""{0}"";", poliza.Tractores.TomadorFechaNacimiento.ToString("ddMMyyyy")) ' Fecha Nacimiento
|
||||
sb.AppendFormat("{0};", poliza.Tractores.EstadoCivil.Trim()) ' Estado Civil
|
||||
If ObtenerTipoDocumentoTractoresAxa(poliza.Tomador.CIF) = bd.enumeraciones.First(Function(x) x.Codigo = "AXATRACTORES.tipoDoc.PersJuridicaCIF").ValorAlfabeticoLargo Then ' Si es CIF
|
||||
sb.AppendFormat("{0};", bd.enumeraciones.First(Function(x) x.Codigo = "AXATRACTORES.sexo.SinInformar").ValorAlfabetico1) ' SEXO = "sin informar" para personas jurídicas
|
||||
Else ' Si no es CIF
|
||||
sb.AppendFormat("{0};", ObtenerSexoTractoresAxa(poliza.Tractores.TomadorSexo, bd)) ' SEXO
|
||||
End If
|
||||
sb.AppendFormat("{0};", poliza.Tractores.TomadorCodigoPostal.Trim()) ' C.P.
|
||||
sb.AppendFormat("{0};", poliza.Tractores.TomadorPoblacion.Trim()) ' Población
|
||||
sb.AppendFormat("{0};", poliza.Tractores.TomadorVia.Trim()) ' Tipo Vía
|
||||
sb.AppendFormat("{0};", poliza.Tractores.TomadorNombreVia.Trim()) ' Nombre Vía
|
||||
sb.AppendFormat("{0};", poliza.Tractores.TomadorNumeroVia.Trim()) ' Numero vía
|
||||
sb.AppendFormat("{0};", poliza.Tractores.TomadorRestoVia.Trim()) ' Resto Vía
|
||||
|
||||
If poliza.Propietario Is Nothing OrElse poliza.Propietario.idEntidad = poliza.Tomador.idEntidad Then
|
||||
' Propietario: el tomador
|
||||
sb.AppendFormat("{0};", "El Tomador") ' Propietario
|
||||
sb.AppendFormat("{0};", "") ' Nombre propietario
|
||||
sb.AppendFormat("{0};", "") ' Apellido 1 propietario
|
||||
sb.AppendFormat("{0};", "") ' Apellido 2 propietario
|
||||
sb.AppendFormat("{0};", "") ' Nif/Cif propietario
|
||||
Else
|
||||
If ObtenerTipoDocumentoTractoresAxa(poliza.Propietario.CIF) <> bd.enumeraciones.First(Function(x) x.Codigo = "AXATRACTORES.tipoDoc.PersJuridicaCIF").ValorAlfabeticoLargo Then ' Si no es CIF
|
||||
' Propietario: otro, persona física
|
||||
sb.AppendFormat("{0};", "Otra persona distinta del Tomador") ' Propietario
|
||||
sb.AppendFormat("{0};", poliza.Propietario.Nombre.Trim()) ' Nombre propietario
|
||||
sb.AppendFormat("{0};", poliza.Tractores.PropietarioApellido1.Trim()) ' Apellido 1 propietario
|
||||
sb.AppendFormat("{0};", poliza.Tractores.PropietarioApellido2.Trim()) ' Apellido 2 propietario
|
||||
sb.AppendFormat("{0};", poliza.Propietario.CIF.Trim()) ' Nif/Cif propietario
|
||||
Else
|
||||
' Propietario: otro, persona jurídica
|
||||
sb.AppendFormat("{0};", "Otra persona distinta del Tomador") ' Propietario
|
||||
sb.AppendFormat("{0};", poliza.Propietario.Nombre.Trim()) ' Nombre propietario
|
||||
sb.AppendFormat("{0};", "") ' Apellido 1 propietario, no tiene.
|
||||
sb.AppendFormat("{0};", "") ' Apellido 2 propietario, no tiene.
|
||||
sb.AppendFormat("{0};", poliza.Propietario.CIF.Trim()) ' Nif/Cif propietario
|
||||
End If
|
||||
End If
|
||||
|
||||
If poliza.Conductor Is Nothing OrElse poliza.Conductor.idEntidad = poliza.Tomador.idEntidad Then
|
||||
' Conductor: el tomador
|
||||
sb.AppendFormat("{0};", "El Tomador") ' Conductor Titular
|
||||
sb.AppendFormat("{0};", "") ' Nombre Conductor
|
||||
sb.AppendFormat("{0};", "") ' 1º Apellido Conductor
|
||||
sb.AppendFormat("{0};", "") ' 2º Apellido Conductor
|
||||
sb.AppendFormat("{0};", "") ' Fecha nacimiento conductor DDMMAAAA
|
||||
sb.AppendFormat("{0};", "") ' Nif, Cif, Otros
|
||||
sb.AppendFormat("{0};", "") ' NIF Conductor
|
||||
sb.AppendFormat("{0};", "") ' SEXO
|
||||
sb.AppendFormat("=""{0}"";", poliza.Tractores.FechaPermisoConduccion.ToString("ddMMyyyy")) ' Fecha carnét DDMMAAAA
|
||||
Else
|
||||
' Conductor: otro
|
||||
sb.AppendFormat("{0};", "Es otra persona") ' Conductor Titular
|
||||
sb.AppendFormat("{0};", poliza.Tractores.ConductorNombre.Trim()) ' Nombre Conductor
|
||||
sb.AppendFormat("{0};", poliza.Tractores.ConductorApellido1.Trim()) ' 1º Apellido Conductor
|
||||
sb.AppendFormat("{0};", poliza.Tractores.ConductorApellido2.Trim()) ' 2º Apellido Conductor
|
||||
sb.AppendFormat("=""{0}"";", poliza.Tractores.ConductorFechaNacimiento.ToString("ddMMyyyy")) ' Fecha nacimiento conductor DDMMAAAA
|
||||
sb.AppendFormat("{0};", ObtenerTipoDocumentoTractoresAxa(poliza.Conductor.CIF)) ' Nif, Cif, Otros
|
||||
sb.AppendFormat("{0};", poliza.Conductor.CIF.Trim()) ' NIF Conductor
|
||||
sb.AppendFormat("{0};", ObtenerSexoTractoresAxa(poliza.Tractores.ConductorSexo, bd)) ' SEXO
|
||||
sb.AppendFormat("=""{0}"";", poliza.Tractores.FechaPermisoConduccion.ToString("ddMMyyyy")) ' Fecha carnét DDMMAAAA
|
||||
End If
|
||||
|
||||
' Conductor autorizado 1 (siempre vacío)
|
||||
sb.AppendFormat("{0};", "No se declara") ' Conductor Autorizado 1
|
||||
sb.AppendFormat("{0};", "") ' Nombre Conductor
|
||||
sb.AppendFormat("{0};", "") ' 1º Apellido Conductor
|
||||
sb.AppendFormat("{0};", "") ' 2º Apellido Conductor
|
||||
sb.AppendFormat("{0};", "") ' Fecha nto. Conductor DDMMAAAA
|
||||
sb.AppendFormat("{0};", "") ' NIF Conductor
|
||||
sb.AppendFormat("{0};", "") ' SEXO
|
||||
sb.AppendFormat("{0};", "") ' Fecha carnet DDMMAAAA
|
||||
|
||||
' Conductor autorizado 2 (siempre vacío)
|
||||
sb.AppendFormat("{0};", "No se declara") ' Conductor Autorizado 2
|
||||
sb.AppendFormat("{0};", "") ' Nombre Conductor
|
||||
sb.AppendFormat("{0};", "") ' 1º Apellido Conductor
|
||||
sb.AppendFormat("{0};", "") ' 2º Apellido Conductor
|
||||
sb.AppendFormat("{0};", "") ' Fecha nto. Conductor DDMMAAAA
|
||||
sb.AppendFormat("{0};", "") ' NIF Conductor
|
||||
sb.AppendFormat("{0};", "") ' SEXO
|
||||
sb.AppendFormat("{0};", "") ' Fecha carnet DDMMAAAA
|
||||
|
||||
' Otros datos
|
||||
sb.AppendFormat("{0};", "No") ' Permiso retirado (fijo)
|
||||
sb.AppendFormat("{0};", poliza.Tractores.UsoVehiculo.Trim()) ' Uso Vehículo (según tabla)
|
||||
sb.AppendFormat("{0};", "") ' Accesorios
|
||||
sb.AppendFormat("{0};", "") ' Tipo de Accesorios
|
||||
sb.AppendFormat("{0};", "") ' Descripción (Detallar los accesorios separados por comas)
|
||||
sb.AppendFormat("{0};", "") ' Valor Accesorios (valor total)
|
||||
sb.AppendFormat("{0};", poliza.Tractores.Peso.ToString.Trim()) ' Peso en Toneladas
|
||||
sb.AppendFormat("{0};", poliza.Tractores.Marca.Trim()) ' Literal de Marca
|
||||
sb.AppendFormat("{0};", poliza.Tractores.Modelo.Trim()) ' Literal de Modelo
|
||||
sb.AppendFormat("{0};", poliza.Tractores.Version.Trim()) ' Literal de Versión
|
||||
sb.AppendFormat("{0};", "35.000") ' Valor (fijo)
|
||||
sb.AppendFormat("=""{0}"";", "0,00") ' Valor LUNAS
|
||||
sb.AppendFormat("{0};", poliza.Matricula.ToUpper.Trim()) ' Matrícula
|
||||
sb.AppendFormat("=""{0}"";", poliza.Tractores.FechaPrimeraMatriculacion.ToString("ddMMyyyy")) ' Fecha 1ª Matriculación DDMMAAAA
|
||||
sb.AppendFormat("=""{0}"";", poliza.Tractores.TomadorCodigoPostal.Trim()) ' C.P. circulación (poner el CP del conductor)
|
||||
sb.AppendFormat("{0};", "NO") ' Alarma (fijo)
|
||||
sb.AppendFormat("{0};", "NO") ' Garaje (fijo)
|
||||
sb.AppendFormat("{0};", "Sin definir") ' KM recorridos (fijo)
|
||||
sb.AppendFormat("{0};", "Terceros sin Asistencia") ' Combinación de Garantías
|
||||
sb.AppendFormat("{0};", poliza.Tractores.CombinacionAccidentes.Trim()) ' Combinación de Accidentes
|
||||
sb.AppendFormat("{0};", "Si") ' Kit RC Explotación Agrícola
|
||||
sb.AppendFormat("{0};", poliza.Tractores.PrimaTotal.Trim()) ' PRIMA TOTAL
|
||||
sb.AppendFormat("{0};", "") ' Nº PÓLIZA EMITIDA
|
||||
sb.AppendFormat("{0};", "") ' PNETA EMITIDA
|
||||
sb.AppendFormat("{0}", "") ' PTOTAL EMITIDA
|
||||
Catch ex As Exception
|
||||
Throw New Exception(ex.Message, ex)
|
||||
End Try
|
||||
Return sb.ToString
|
||||
End Function
|
||||
Public Shared Function PrepararCorreosCsvTractoresAxa(bd As bdGestionAsegasa.gestionasegasaEntities) As Integer
|
||||
Const danmundebug As Boolean = False
|
||||
Dim resultadoGuardarCambios As Integer = 0
|
||||
Try
|
||||
Dim dHoy As Date = Date.Today
|
||||
Dim dAyer As Date = Date.Today.AddDays(-1)
|
||||
' Dim dSemana As Date = Date.Today.AddDays(-7)
|
||||
Dim idTipoGestionPoliza As String = bd.enumeraciones.First(Function(x) x.Codigo = "TGP.CSVAXA").idEnumeracion
|
||||
Dim idTipoFicheroCSV As String = bd.enumeraciones.First(Function(x) x.Codigo = "TIPFIC.CSVAXA").idEnumeracion
|
||||
Dim nLineasPendientesCorreoCsv As Integer = 0
|
||||
|
||||
'// Toca hacerlo si tenemos líneas en la tabla gestionesvarias que cumplan las siguientes condiciones
|
||||
'// - idTipo = idTipoGestionPoliza
|
||||
'// - fechaProcesado = NULL
|
||||
|
||||
Dim lineasPendientesCorreoCsv As List(Of bdGestionAsegasa.gestionesvarias) =
|
||||
bd.gestionesvarias.Where(Function(x) x.idTipo = idTipoGestionPoliza _
|
||||
AndAlso Not x.FechaProcesado.HasValue).ToList()
|
||||
|
||||
nLineasPendientesCorreoCsv = lineasPendientesCorreoCsv.Count
|
||||
|
||||
'// Preparación del correo que sí lleva CSV
|
||||
For Each linea In lineasPendientesCorreoCsv
|
||||
Dim listaEnumeraciones As List(Of bdGestionAsegasa.enumeraciones) = bd.enumeraciones.Where(Function(x) x.Codigo.StartsWith("AXATRACTORES.email.")).ToList()
|
||||
Dim listaDestinatarios As List(Of String) = (From x In bd.enumeraciones Where x.Codigo.StartsWith("AXATRACTORES.email.destinatario") Select x.ValorAlfabeticoLargo.Trim()).ToList()
|
||||
Dim remitente = (From x In bd.enumeraciones Where x.Codigo = "AXATRACTORES.email.remitente" Select x.ValorAlfabeticoLargo).FirstOrDefault().Trim()
|
||||
Dim direccionRespuesta As String = (From x In bd.enumeraciones Where x.Codigo = "AXATRACTORES.email.direccionRespuesta" Select x.ValorAlfabeticoLargo).FirstOrDefault().Trim()
|
||||
Dim asunto = String.Format("{0} {1}",
|
||||
bd.enumeraciones.First(Function(x) x.Codigo = "AXATRACTORES.email.asunto").ValorAlfabeticoLargo.Trim(),
|
||||
linea.ficheros.Descripcion.Split(" ").Last)
|
||||
Dim cuerpo = String.Format("{0} {1}",
|
||||
bd.enumeraciones.First(Function(x) x.Codigo = "AXATRACTORES.email.cuerpo").ValorAlfabeticoLargo.Trim(),
|
||||
linea.ficheros.Descripcion.Split(" ").Last)
|
||||
Dim nombreArchivoCSV As String = String.Format("{0}{1}.csv",
|
||||
bd.enumeraciones.First(Function(x) x.Codigo = "AXATRACTORES.NombreFicheroCSV").ValorAlfabeticoLargo,
|
||||
linea.ficheros.Descripcion.Split(" ").Last)
|
||||
|
||||
' Enviar el correo (bueno, en realidad guardarlo en la BD para que se envíe)
|
||||
Dim cuentaCorreo As bdGestionAsegasa.cuentascorreo = bd.cuentascorreo.First(Function(x) x.Codigo = "CSVAXA")
|
||||
For Each destinatario In listaDestinatarios
|
||||
bdGestionAsegasa.correos.GeneraRegistroCorreo(bd, asunto, cuerpo, cuentaCorreo, destinatario,,, linea.idFichero)
|
||||
Next
|
||||
|
||||
' Marcar email como enviado. Si no ha dado excepción hasta aquí, significa que ya está en la tabla de salida de correos.
|
||||
linea.FechaProcesado = Now
|
||||
If Not danmundebug Then resultadoGuardarCambios += bd.GuardarCambios()
|
||||
System.Diagnostics.Debug.WriteLine("lineaCSV.enviado: " & resultadoGuardarCambios)
|
||||
|
||||
' Notificación Slack
|
||||
If resultadoGuardarCambios > 0 Then
|
||||
Try
|
||||
Dim mensaje As New Text.StringBuilder
|
||||
mensaje.AppendFormat("Se ha generado un email para AXA conteniendo el archivo CSV con altas de tractores y/o remolques para AXA.```Asunto: {1}{0}Servidor: {2}```", vbCrLf,
|
||||
asunto, Environment.MachineName)
|
||||
tsl5.Utilidades.EnviarNotificacionSlack(mensaje.ToString, destinatario:="#asegasa", descripcionRemitente:=Reflection.MethodBase.GetCurrentMethod.ToString)
|
||||
Catch ex As Exception
|
||||
' Si esta notificación da error no debe pararse el servicio, así que no hago nada.
|
||||
End Try
|
||||
End If
|
||||
Next
|
||||
|
||||
'TODO danmun: Preparación del correo que NO lleva CSV
|
||||
'// Preparación del correo que NO lleva CSV
|
||||
'// Sabremos si hay que hacer esto si no hay líneas pendientes de enviar el correo del CSV y si además
|
||||
'// hoy no se envió ningún email con CSV (esto sirve para evitar problemas cuando se lanzan estos métodos
|
||||
'// manualmente, desde los botones rojos del Depurador, por ejemplo)
|
||||
'If nLineasPendientesCorreoCsv = 0 AndAlso Not YaSeEnvióCsvParaHoy(bd) Then
|
||||
' resultadoGuardarCambios = 0
|
||||
' Dim idTipoGestionNoCSV As String = bd.enumeraciones.First(Function(x) x.Codigo = "TGP.NOCSVAXA").idEnumeracion
|
||||
' '// Hacerlo solamente si no existe una línea en `gestionesvarias` de tipo "TGP.NOCSVAXA" con fecha de procesado dAyer
|
||||
' If bd.gestionesvarias.Where(Function(x) x.idTipo = idTipoGestionNoCSV AndAlso Not (x.FechaProcesado.Value > dAyer AndAlso x.FechaProcesado.Value < dHoy)).Count = 0 Then
|
||||
' Dim listaEnumeraciones As List(Of bdGestionAsegasa.enumeraciones) = bd.enumeraciones.Where(Function(x) x.Codigo.StartsWith("AXATRACTORES.emailnocsv.")).ToList()
|
||||
' Dim listaDestinatarios As List(Of String) = listaEnumeraciones.Where(Function(x) x.Codigo.StartsWith("AXATRACTORES.emailnocsv.destinatario")).Select(Function(x) x.ValorAlfabeticoLargo.Trim()).ToList()
|
||||
' Dim remitente As String = listaEnumeraciones.First(Function(x) x.Codigo = "AXATRACTORES.emailnocsv.remitente").ValorAlfabeticoLargo.Trim()
|
||||
' Dim direccionRespuesta As String = listaEnumeraciones.Where(Function(x) x.Codigo = "AXATRACTORES.emailnocsv.direccionResp").Select(Function(x) x.ValorAlfabeticoLargo).FirstOrDefault().Trim()
|
||||
' Dim asunto As String = String.Format("{0} {1}",
|
||||
' listaEnumeraciones.First(Function(x) x.Codigo = "AXATRACTORES.emailnocsv.asunto").ValorAlfabeticoLargo.Trim(),
|
||||
' dAyer.ToString("yyyy-MM-dd"))
|
||||
' Dim cuerpo As String = String.Format("{0} {1} {2}",
|
||||
' listaEnumeraciones.First(Function(x) x.Codigo = "AXATRACTORES.emailnocsv.cuerpo1").ValorAlfabeticoLargo.Trim(),
|
||||
' dAyer.ToString("yyyy-MM-dd"),
|
||||
' listaEnumeraciones.First(Function(x) x.Codigo = "AXATRACTORES.emailnocsv.cuerpo2").ValorAlfabeticoLargo.Trim())
|
||||
' Dim sDescripcion As String = String.Format("{0} {1}",
|
||||
' bd.enumeraciones.First(Function(x) x.Codigo = "AXATRACTORES.DescripcionEmailNoTractores").ValorAlfabeticoLargo,
|
||||
' dAyer.ToString("yyyy-MM-dd"))
|
||||
' Dim nuevaGestionVaria As New bdGestionAsegasa.gestionesvarias With {
|
||||
' .FechaCreacion = Now,
|
||||
' .idTipo = idTipoGestionNoCSV,
|
||||
' .Descripción = sDescripcion
|
||||
' }
|
||||
' bd.gestionesvarias.AddObject(nuevaGestionVaria)
|
||||
|
||||
' ' Enviar el correo (bueno, en realidad guardarlo en la BD para que se envíe)
|
||||
' Dim cuentaCorreo As bdGestionAsegasa.cuentascorreo = bd.cuentascorreo.First(Function(x) x.Codigo = "CSVAXA")
|
||||
' For Each destinatario In listaDestinatarios
|
||||
' bdGestionAsegasa.correos.GeneraRegistroCorreo(bd, asunto, cuerpo, cuentaCorreo, destinatario)
|
||||
' Next
|
||||
|
||||
' ' Marcar email como enviado. Si no ha dado excepción hasta aquí, significa que ya está en la tabla de salida de correos.
|
||||
' nuevaGestionVaria.FechaProcesado = Now
|
||||
|
||||
' If Not danmundebug Then resultadoGuardarCambios += bd.GuardarCambios()
|
||||
' System.Diagnostics.Debug.WriteLine("Guardada gestión varia NO CSV: " & resultadoGuardarCambios)
|
||||
|
||||
' ' Notificación Slack
|
||||
' If resultadoGuardarCambios > 0 Then
|
||||
' Try
|
||||
' Dim mensaje As New Text.StringBuilder
|
||||
' mensaje.AppendFormat("Se ha generado un email para ASEGASA indicando que no se ha enviado archivo CSV de tractores porque no hay altas en el sistema Asegasa-AXA tractores.```Asunto: {1}{0}Servidor: {2}```", vbCrLf,
|
||||
' asunto, Environment.MachineName)
|
||||
' tsl5.Utilidades.EnviarNotificacionSlack(mensaje.ToString, destinatario:="#asegasa", descripcionRemitente:=Reflection.MethodBase.GetCurrentMethod.ToString)
|
||||
' Catch ex As Exception
|
||||
' ' Si esta notificación da error no debe pararse el servicio, así que no hago nada.
|
||||
' End Try
|
||||
' End If
|
||||
' End If
|
||||
'End If
|
||||
|
||||
Catch ex As Exception
|
||||
System.Diagnostics.Debug.WriteLine("No hay líneas o se produjo excepción.")
|
||||
Call AñadeLog(tsl5.Enumeraciones.TipoLog.Fallo, "En «" & System.Reflection.MethodBase.GetCurrentMethod.ToString & "`",
|
||||
"En método `" & System.Reflection.MethodBase.GetCurrentMethod.ToString & "`. " _
|
||||
& Environment.MachineName & " " & ex.ToString, ex)
|
||||
End Try
|
||||
Return resultadoGuardarCambios
|
||||
End Function
|
||||
Public Shared Function YaSeEnvióCsvParaAyer(ByVal bd As bdGestionAsegasa.gestionasegasaEntities) As Boolean
|
||||
Dim resultado As Boolean = False
|
||||
Dim idTipoGestionPoliza As String = bd.enumeraciones.First(Function(x) x.Codigo = "TGP.CSVAXA").idEnumeracion
|
||||
Dim idTipoFicheroCSV As String = bd.enumeraciones.First(Function(x) x.Codigo = "TIPFIC.CSVAXA").idEnumeracion
|
||||
Dim dAyer As Date = Today.AddDays(-1)
|
||||
Dim sDescripcion As String = String.Format("{0}{1}.csv",
|
||||
bd.enumeraciones.First(Function(x) x.Codigo = "AXATRACTORES.NombreFicheroCSV").ValorAlfabeticoLargo,
|
||||
dAyer.ToString("yyyy-MM-dd"))
|
||||
resultado = bd.gestionesvarias.Any(Function(x) x.idTipo = idTipoGestionPoliza AndAlso x.FechaProcesado.HasValue _
|
||||
AndAlso x.Descripción = sDescripcion)
|
||||
'resultado = (From x In bd.gestionesvarias Where x.idTipo = idTipoGestionPoliza AndAlso x.FechaProcesado.HasValue AndAlso x.Descripción = sDescripcion).Count > 0
|
||||
Return resultado
|
||||
End Function
|
||||
Public Shared Function YaSeEnvióCsvParaHoy(ByVal bd As bdGestionAsegasa.gestionasegasaEntities) As Boolean
|
||||
Dim resultado As Boolean = False
|
||||
Dim idTipoGestionPoliza As String = bd.enumeraciones.First(Function(x) x.Codigo = "TGP.CSVAXA").idEnumeracion
|
||||
Dim idTipoFicheroCSV As String = bd.enumeraciones.First(Function(x) x.Codigo = "TIPFIC.CSVAXA").idEnumeracion
|
||||
Dim sDescripcion As String = String.Format("{0}{1}.csv",
|
||||
bd.enumeraciones.First(Function(x) x.Codigo = "AXATRACTORES.NombreFicheroCSV").ValorAlfabeticoLargo,
|
||||
Today.ToString("yyyy-MM-dd"))
|
||||
resultado = bd.gestionesvarias.Any(Function(x) x.idTipo = idTipoGestionPoliza AndAlso x.FechaProcesado.HasValue _
|
||||
AndAlso x.Descripción = sDescripcion)
|
||||
Return resultado
|
||||
End Function
|
||||
Public Shared Function NumeroDeLineasEnElArchivoCSV(ByVal rutaArchivoCSV As String) As Integer
|
||||
Dim resultado = 0
|
||||
resultado = IO.File.ReadLines(rutaArchivoCSV).Count()
|
||||
Return resultado
|
||||
End Function
|
||||
''' <summary>
|
||||
''' Obtiene el siguiente nº de póliza disponible para TractoresAXA.
|
||||
''' </summary>
|
||||
''' <param name="bd"></param>
|
||||
''' <param name="n">Este parámetro se usa solo para depuración. Sirve para simular cuál es el último nº de póliza usado especificándolo en este parámetro.</param>
|
||||
''' <returns>Devuelve el siguiente nº de póliza disponible ó -1 si no hay ninguno disponible.</returns>
|
||||
''' <remarks>Para uso en producción es imprescindible evitar usar el segundo parámetro opcional.</remarks>
|
||||
'Public Shared Function ObtenerNumeroDePolizaDisponibleTractoresAXA(ByVal bd As bdGestionAsegasa.gestionasegasaEntities, Optional ByVal n As UInteger = 0) As String
|
||||
' Dim resultado As String = ""
|
||||
' Dim inicio As bdGestionAsegasa.enumeraciones
|
||||
' Dim fin As bdGestionAsegasa.enumeraciones
|
||||
' Dim actual As UInteger = 0
|
||||
' Dim bEncontrado As Boolean = False
|
||||
|
||||
' Dim enumNumeracion = (From x In bd.enumeraciones Where x.Codigo.StartsWith("AXATRACTORES.numeracion.") AndAlso x.ValorAlfabetico1.ToUpper.Trim = "DISPONIBLE"
|
||||
' Order By x.Codigo Select x).ToList()
|
||||
' Dim idRamoTractores As String = (From x In bd.ramos Where x.Codigo = "1-1" Select x.idRamo).FirstOrDefault
|
||||
' Dim idRamoRemolques As String = (From x In bd.ramos Where x.Codigo = "1-1-1" Select x.idRamo).FirstOrDefault
|
||||
|
||||
' ' De todos los posibles rangos, tengo que elegir el más bajo que esté disponible.
|
||||
' ' Como lo he ordenado por Codigo, al hacerlo así ya estoy eligiendo el más bajo disponible.
|
||||
' ' Con rango más bajo me refiero al valor que está dentro del código, no a los números del rango en sí.
|
||||
' ' Formato del código: "AXATRACTORES.numeracion.0000"
|
||||
' inicio = enumNumeracion.Where(Function(x) x.Codigo.EndsWith(".inicio")).FirstOrDefault
|
||||
' fin = enumNumeracion.Where(Function(x) x.Codigo.EndsWith(".fin")).FirstOrDefault
|
||||
|
||||
' Try
|
||||
' If n = 0 Then
|
||||
' actual = (From x In bd.polizassg Where x.NumeroPoliza >= inicio.ValorNumerico1 AndAlso x.NumeroPoliza <= fin.ValorNumerico1 AndAlso
|
||||
' (x.idRamo = idRamoTractores OrElse x.idRamo = idRamoRemolques)
|
||||
' Order By x.NumeroPoliza Descending
|
||||
' Select x.NumeroPoliza Take 10).ToList().FirstOrDefault
|
||||
' Else
|
||||
' actual = n
|
||||
' End If
|
||||
' Catch ex As Exception
|
||||
' ' Nada, significa que aún no existe el primero.
|
||||
' End Try
|
||||
' If actual = 0 Then
|
||||
' ' Si "actual" vale 0 significa que es la primera vez y tenemos que usar el primero del rango.
|
||||
' resultado = inicio.ValorNumerico1
|
||||
' bEncontrado = True
|
||||
' Else
|
||||
' If actual < inicio.ValorNumerico1 Then
|
||||
' resultado = inicio.ValorNumerico1
|
||||
' bEncontrado = True
|
||||
' ElseIf actual = fin.ValorNumerico1 Then
|
||||
' ' Caso en el que hay que pasar a usar el siguiente rango.
|
||||
' ' Hay que marcar el actual rango como completado.
|
||||
' inicio.ValorAlfabetico1 = "Usado"
|
||||
' fin.ValorAlfabetico1 = "Usado"
|
||||
' bd.GuardarCambios()
|
||||
' resultado = ObtenerNumeroDePolizaDisponibleTractoresAXA(bd)
|
||||
' ' Sí, esta es una función recursiva. Está comprobado que esta recursividad funciona adecuadamente según los datos que haya en la base de datos.
|
||||
' ElseIf actual > fin.ValorNumerico1 Then 'El número final sí lo podemos usar, por eso la comparación se hace con ">".
|
||||
' resultado = -1 'Significa que ya hemos llegado al límite de asignaciones, no podemos asignar más.
|
||||
' bEncontrado = True
|
||||
' ' TODO: Mirar si hay otro rango más?
|
||||
' Dim asunto As String = "TractoresAXA: Se han acabado los nºs de pólizas reservados para el servicio de TractoresAXA. Todas las altas que se realicen a partir de ahora fallarán hasta que se asignen nuevos rangos."
|
||||
' Dim cuerpo As String = asunto & vbCrLf & " Hay que avisar a ASEGASA para que gestionen con AXA la asignación de un nuevo rango de nºs de pólizas para este servicio." & vbCrLf &
|
||||
' "En método `" & System.Reflection.MethodBase.GetCurrentMethod.ToString & "`. " _
|
||||
' & vbCrLf & Environment.MachineName
|
||||
' Call AñadeLog(tsl5.Enumeraciones.TipoLog.Fallo, asunto, cuerpo)
|
||||
' tsl5.Utilidades.EnviarNotificacionSlack(asunto, destinatario:="#asegasa", descripcionRemitente:=Reflection.MethodBase.GetCurrentMethod.ToString)
|
||||
' Else
|
||||
' ' Caso normal, en el que hay que usar el número que sigue, porque seguimos dentro del rango.
|
||||
' '
|
||||
' ' Pero tengo que comprobar que "actual + 1" no esté usado. ¿Cómo lo hago? Bueno, sería mucha
|
||||
' ' casualidad y mucha mala suerte que dos altas coincidan en el tiempo de tal modo que ambas
|
||||
' ' pillen el mismo nº de poliza.
|
||||
' resultado = actual + 1
|
||||
' bEncontrado = True
|
||||
' End If
|
||||
' End If
|
||||
|
||||
' ' TODO: danmun: Lanzar aquí mensajes cuando falten 500, 200, 100, 50, 20, 10, avisando.
|
||||
' 'If bEncontrado Then
|
||||
' ' Dim numerosReservadosDisponibles As Integer = ComprobarCuantosNumerosReservadosQuedanDisponibles(actual, inicio, fin)
|
||||
' ' Dim listaDeLimitesParaEnviarAdvertencias As Integer() = {10, 20, 50, 100, 200, 500}
|
||||
' ' Dim bAdvertenciaEnviada As Boolean = False
|
||||
|
||||
' ' ' La idea es la siguiente: dispongo de un array donde tenemos los límites en los que hay que lanzar la advertencia
|
||||
' ' ' de que se están gastando los nºs de pólizas reservados para TractoresAXA. El array está ordenado de menor a mayor.
|
||||
' ' ' Al recorrer el array, compruebo: ¿quedan menos de 10 números disponibles? Si es así, lanzo advertencia y ya no vuelvo
|
||||
' ' ' a realizar más comprobaciones. Si no es así, compruebo con el siguiente límite, que sería 20. Por lo tanto, es posible
|
||||
' ' ' completar el recorrido del array sin enviar ninguna advertencia o bien enviando solamente 1.
|
||||
' ' For Each i In listaDeLimitesParaEnviarAdvertencias
|
||||
' ' If Not bAdvertenciaEnviada AndAlso numerosReservadosDisponibles < i Then
|
||||
' ' ' Notificación Slack
|
||||
' ' Try
|
||||
' ' Dim asunto As String = String.Format("TractoresAXA: quedan menos de {0} nºs de póliza reservados sin usar.", i)
|
||||
' ' Dim sbCuerpo As New Text.StringBuilder()
|
||||
' ' sbCuerpo.AppendFormat("*TractoresAXA*: quedan menos de {1} nºs de póliza reservados sin usar.{0}", vbCrLf, i)
|
||||
' ' sbCuerpo.AppendLine("Es recomendable avisar a ASEGASA para que gestionen con AXA la asignación de un nuevo rango de nºs de pólizas para este servicio.")
|
||||
' ' sbCuerpo.AppendFormat("```Próximo nº de póliza que va a ser usado de inmediato: {1}{0}Primer nº del rango actual:{2}{0}Último nº del rango actual: {3}{0}Servidor: {4}```{0}", vbCrLf,
|
||||
' ' resultado, inicio.ValorNumerico1, fin.ValorNumerico1, Environment.MachineName)
|
||||
' ' sbCuerpo.AppendFormat("En método `{0}` y en máquina `{1}`.", System.Reflection.MethodBase.GetCurrentMethod.ToString, Environment.MachineName)
|
||||
|
||||
' ' Call AñadeLog(tsl5.Enumeraciones.TipoLog.Advertencia, asunto, sbCuerpo.ToString)
|
||||
' ' tsl5.Utilidades.EnviarNotificacionSlack(sbCuerpo.ToString, destinatario:="#asegasa", descripcionRemitente:=Reflection.MethodBase.GetCurrentMethod.ToString)
|
||||
' ' Catch ex As Exception
|
||||
' ' ' Si esta notificación da error no debe pararse el servicio, así que no hago nada.
|
||||
' ' End Try
|
||||
' ' bAdvertenciaEnviada = True
|
||||
' ' End If
|
||||
' ' Next
|
||||
' 'End If
|
||||
|
||||
' Return resultado
|
||||
'End Function
|
||||
Private Shared Function ComprobarCuantosNumerosReservadosQuedanDisponibles(ByVal nActual As Integer, ByRef inicio As bdGestionAsegasa.enumeraciones, ByRef fin As bdGestionAsegasa.enumeraciones) As Integer
|
||||
' TODO: danmun: comprobar que esto funciona bien cuando hay rangos (creo que va a ser que no)
|
||||
Dim resultado As Integer = 0
|
||||
resultado = Integer.Parse(fin.ValorNumerico1) - nActual
|
||||
Debug.WriteLine("ComprobarCuantosNumerosReservadosQuedanDisponibles = " & resultado)
|
||||
Return resultado
|
||||
End Function
|
||||
Private Shared Function ObtenerTipoDocumentoTractoresAxa(ByVal numeroDocumento As String) As String
|
||||
Dim TipoDI = numeroDocumento.TipoDocumentoIdentidad
|
||||
If TipoDI = tsl5.ValidarDocumentoIdentidad.TiposDocumentosEnum.CIF Then
|
||||
Return "CIF"
|
||||
Else
|
||||
Return "NIF"
|
||||
End If
|
||||
End Function
|
||||
Private Shared Function ObtenerSexoTractoresAxa(ByVal cadenaSexo As String, ByVal bd As bdGestionAsegasa.gestionasegasaEntities) As String
|
||||
Dim resultado As String = bd.enumeraciones.First(Function(x) x.Codigo = "AXATRACTORES.sexo.SinInformar").ValorAlfabetico1
|
||||
Dim axaHombre As String = bd.enumeraciones.First(Function(x) x.Codigo = "AXATRACTORES.sexo.Hombre").ValorAlfabetico1
|
||||
Dim axaMujer As String = bd.enumeraciones.First(Function(x) x.Codigo = "AXATRACTORES.sexo.Mujer").ValorAlfabetico1
|
||||
Dim idEnumSexoHombre As Integer = bd.enumeraciones.First(Function(x) x.Codigo = "SEXO.HOMBRE").idEnumeracion
|
||||
Dim idEnumSexoMujer As Integer = bd.enumeraciones.First(Function(x) x.Codigo = "SEXO.MUJER").idEnumeracion
|
||||
If cadenaSexo = idEnumSexoHombre Then resultado = axaHombre
|
||||
If cadenaSexo = idEnumSexoMujer Then resultado = axaMujer
|
||||
Return resultado
|
||||
End Function
|
||||
End Class
|
||||
128
guia/procesos/ProcesosZurich.vb
Normal file
128
guia/procesos/ProcesosZurich.vb
Normal file
@@ -0,0 +1,128 @@
|
||||
'Imports bdGestionAsegasa
|
||||
'Imports GestionAsegasa.Enumeraciones
|
||||
|
||||
'Public Class ProcesosZurich
|
||||
' Public Shared Async Function ObtieneDocumentosPolizasPendientes() As Task
|
||||
' Try
|
||||
' Dim bd = bdGestionAsegasa.gestionasegasaEntities.NuevoContextoCN()
|
||||
' Dim idZurich = bd.companias.First(Function(x) x.Codigo = "0013").idCompania
|
||||
' Dim tipoFichero As Integer = bd.enumeraciones.Where(Function(x) x.Codigo = "TIPFIC.DOCPOL").First.idEnumeracion
|
||||
' Dim fi As New Date(2024, 10, 5)
|
||||
' Dim pols = bd.polizassg.Where(Function(x) x.idCompania = idZurich AndAlso x.NumeroPoliza IsNot Nothing AndAlso x.FechaAlta > fi AndAlso x.documentospolizassg.All(Function(y) y.Tipo = 0)).ToList()
|
||||
' Dim cz = bd.enumeraciones.First(Function(x) x.Codigo = "CONF.0013")
|
||||
' Dim sv = New ServicioDocumentos(cz.ValorAlfabetico1, cz.ValorAlfabetico2)
|
||||
|
||||
' For Each p In pols
|
||||
' Dim numpol = p.NumeroPoliza.PadLeft(14, "0")
|
||||
' Dim ld = Await sv.ObtenerDocumentosAsync(numpol, -1)
|
||||
|
||||
' ' Obtener la lista de documentos que no son recibos
|
||||
' Dim ldocs = ld.Document.Where(Function(x) Not String.IsNullOrEmpty(x.documentTypeDesc) AndAlso Not x.documentTypeDesc.ToLower().Contains("recibo"))
|
||||
|
||||
' For Each d In ldocs
|
||||
' Try
|
||||
' Dim dr = Await sv.DescargarDocumentoAsync("", d.documentCode, False, numpol, ld.policyVersion)
|
||||
' Dim sha1 = tsl5.crypt.SHA1(dr.documentFileContent.data)
|
||||
' Dim docpol = p.documentospolizassg.FirstOrDefault(Function(x) x.Hash = sha1)
|
||||
' If docpol Is Nothing Then
|
||||
' docpol = New documentospolizassg()
|
||||
' Dim fichero = New ficheros()
|
||||
' fichero.Descripcion = d.documentTypeDesc
|
||||
' fichero.Fecha = Date.Now
|
||||
' fichero.idTipo = tipoFichero
|
||||
' fichero.Fichero = dr.documentFileContent.data
|
||||
' fichero.NombreFichero = dr.documentFileContent.fileName
|
||||
' fichero.idAplicacion = p.idPoliza
|
||||
|
||||
' ' Crear y almacenar el documento de la póliza
|
||||
' docpol.Descripcion = d.documentTypeDesc.ToUpper
|
||||
' docpol.ficheros = fichero
|
||||
' docpol.FechaComprobacion = Date.Now
|
||||
' docpol.Fecha = Date.Now
|
||||
' docpol.Codigo = d.documentCode
|
||||
' docpol.Hash = sha1
|
||||
' docpol.Tipo = ObtieneTipoDocumento(d.typeCode)
|
||||
' p.documentospolizassg.Add(docpol)
|
||||
' Else
|
||||
' docpol.Codigo = d.documentCode
|
||||
' docpol.Tipo = ObtieneTipoDocumento(d.typeCode)
|
||||
' End If
|
||||
' bd.SaveChanges()
|
||||
' Catch ex As Exception
|
||||
' Call bdGestionAsegasa.Utilidades.AñadeLog(tsl5.Enumeraciones.TipoLog.Fallo, "En ObtieneDocumentosPolizasPendientes.", "Rutina: ObtieneDocumentosPolizasPendientes. Poliza:" & p.NumeroPoliza & " dc:" & d.documentCode & " " & bdGestionAsegasa.gestionasegasaEntities.bdga.Servidor & " " & ex.Message, ex)
|
||||
' End Try
|
||||
' Next
|
||||
' Next
|
||||
' Catch ex As Exception
|
||||
' Call bdGestionAsegasa.Utilidades.AñadeLog(tsl5.Enumeraciones.TipoLog.Fallo, "En ObtieneDocumentosPolizasPendientes.", "Rutina: ObtieneDocumentosPolizasPendientes. " & bdGestionAsegasa.gestionasegasaEntities.bdga.Servidor & " " & ex.Message, ex)
|
||||
' End Try
|
||||
|
||||
' End Function
|
||||
|
||||
' Public Shared Async Function ObtieneDocumentosRecibosPendientes() As Task
|
||||
' Try
|
||||
' Dim bd = bdGestionAsegasa.gestionasegasaEntities.NuevoContextoCN()
|
||||
' Dim idZurich = bd.companias.First(Function(x) x.Codigo = "0013").idCompania
|
||||
' Dim tipoFichero As Integer = bd.enumeraciones.Where(Function(x) x.Codigo = "TIPFIC.DOCPOL").First.idEnumeracion
|
||||
' Dim fi As New Date(2024, 9, 23)
|
||||
' Dim cz = bd.enumeraciones.First(Function(x) x.Codigo = "CONF.0013")
|
||||
' Dim svRecibos = New ServicioRecibos(cz.ValorAlfabetico1, cz.ValorAlfabetico2)
|
||||
' Dim svDocumentos = New ServicioDocumentos(cz.ValorAlfabetico1, cz.ValorAlfabetico2)
|
||||
' Dim recs = bd.recibos.Where(Function(x) x.polizassg.idCompania = idZurich AndAlso x.FechaEfecto > fi AndAlso x.documentospolizassg.Count = 0).ToList()
|
||||
' Dim dr As ObtenerRecibos.getDuplicatedReceiptResponse = Nothing
|
||||
' For Each r In recs
|
||||
' Try
|
||||
' Dim p = r.polizassg
|
||||
' dr = Await svRecibos.ObtenerReciboDuplicadoAsync(r.NumeroRecibo, cz.ValorAlfabetico1)
|
||||
' Dim numpol = p.NumeroPoliza.PadLeft(14, "0")
|
||||
' Dim bpdf = Await svDocumentos.DescargarDocumentoAsync("", dr.documentCode, False, numpol, dr.policyVersion)
|
||||
|
||||
' Dim sha1 = tsl5.crypt.SHA1(bpdf.documentFileContent.data)
|
||||
' Dim docpol = p.documentospolizassg.FirstOrDefault(Function(x) x.Hash = sha1)
|
||||
' If docpol Is Nothing Then
|
||||
' docpol = New documentospolizassg()
|
||||
' Dim fichero = New ficheros()
|
||||
' fichero.Descripcion = "RECIBO"
|
||||
' fichero.Fecha = Date.Now
|
||||
' fichero.idTipo = tipoFichero
|
||||
' fichero.Fichero = bpdf.documentFileContent.data
|
||||
' fichero.NombreFichero = dr.documentCode & ".pdf"
|
||||
' fichero.idAplicacion = p.idPoliza
|
||||
|
||||
' docpol.Descripcion = "RECIBO"
|
||||
' docpol.ficheros = fichero
|
||||
' docpol.FechaComprobacion = Date.Now
|
||||
' docpol.Fecha = Date.Now
|
||||
' docpol.Codigo = dr.documentCode
|
||||
' docpol.Hash = sha1
|
||||
' docpol.Tipo = documentospolizassg.TipoDocumentoEnum.RECIBO
|
||||
' docpol.idRecibo = r.idRecibo
|
||||
' p.documentospolizassg.Add(docpol)
|
||||
' Else
|
||||
' docpol.Codigo = dr.documentCode
|
||||
' docpol.Tipo = documentospolizassg.TipoDocumentoEnum.RECIBO
|
||||
' End If
|
||||
' bd.SaveChanges()
|
||||
' dr = Nothing
|
||||
' Catch ex As Exception
|
||||
' Call bdGestionAsegasa.Utilidades.AñadeLog(tsl5.Enumeraciones.TipoLog.Fallo, "En ObtieneDocumentosRecibosPendientes.", "Rutina: ObtieneDocumentosRecibosPendientes. Recibo:" & r.CodigoRecibo & If(dr Is Nothing, "", " dc:" & dr.documentCode) & " " & bdGestionAsegasa.gestionasegasaEntities.bdga.Servidor & " " & ex.Message, ex)
|
||||
' End Try
|
||||
' Next
|
||||
' Catch ex As Exception
|
||||
' Call bdGestionAsegasa.Utilidades.AñadeLog(tsl5.Enumeraciones.TipoLog.Fallo, "En ObtieneDocumentosRecibosPendientes.", "Rutina: ObtieneDocumentosRecibosPendientes. " & bdGestionAsegasa.gestionasegasaEntities.bdga.Servidor & " " & ex.Message, ex)
|
||||
' End Try
|
||||
|
||||
' End Function
|
||||
|
||||
' Private Shared Function ObtieneTipoDocumento(typeCode As String) As Integer
|
||||
' Select Case typeCode
|
||||
' Case "CL"
|
||||
' Return documentospolizassg.TipoDocumentoEnum.PÓLIZA
|
||||
' Case "CE"
|
||||
' Return documentospolizassg.TipoDocumentoEnum.CERTIFICADO_SEGURO
|
||||
' Case Else
|
||||
' Return documentospolizassg.TipoDocumentoEnum.OTROS
|
||||
' End Select
|
||||
' End Function
|
||||
|
||||
'End Class
|
||||
Reference in New Issue
Block a user