Files
Asegasa.NET/guia/informes/CarteraPerdida.vb
2026-04-28 11:52:16 +02:00

133 lines
12 KiB
VB.net

Public Class CarteraPerdida
Public Shared Function GeneraExcelCarteraPerdidaEF(fi As Date, ff As Date) As Byte()
Try
Dim bd = bdGestionAsegasa.gestionasegasaEntities.NuevoContextoCN
Dim fai = fi.AddYears(-1)
Dim faf = ff.AddYears(-1)
' Dim idTippcia = bd.enumeraciones.First(Function(x) x.Codigo = "TIPP.CIA").idEnumeracion
Dim idLiquidacion = bd.enumeraciones.First(Function(x) x.Codigo = "TIPLIQ.LIQUIDACION").idEnumeracion
Dim idLiquidacioncia = bd.enumeraciones.First(Function(x) x.Codigo = "TIPLIQ.PGDO.CIA").idEnumeracion
Dim iddevuelto = bd.enumeraciones.First(Function(x) x.Codigo = "TIPLIQ.DEVUELTO").idEnumeracion
Dim idDescobro = bd.enumeraciones.First(Function(x) x.Codigo = "TIPLIQ.DESCOBRO").idEnumeracion
Dim idCabaPGO = bd.enumeraciones.First(Function(x) x.Codigo = "CABA.PGO").idEnumeracion
Dim idCabaFP = bd.enumeraciones.First(Function(x) x.Codigo = "CABA.FP").idEnumeracion
Dim idTrex = bd.enumeraciones.First(Function(x) x.Codigo = "TRC.EX").idEnumeracion
Dim idTrcx = bd.enumeraciones.First(Function(x) x.Codigo = "TRC.CX").idEnumeracion
Dim idDuru = bd.enumeraciones.First(Function(x) x.Codigo = "DUR.U").idEnumeracion
' Dim idDura = bd.enumeraciones.First(Function(x) x.Codigo = "DUR.A").idEnumeracion
' Dim cabas = bd.enumeraciones.Where(Function(x) x.Codigo = "CABA.AGEN" Or x.Codigo = "CABA.CIA" Or x.Codigo = "CABA.SIN" Or x.Codigo = "CABA.ASEG" Or x.Codigo = "CABA.VTA" Or x.Codigo = "CABA.BJA" Or x.Codigo = "CABA.ASFP" Or x.Codigo = "CABA.RPZO" Or x.Codigo = "CABA.SUPL").Select(Function(x) x.idEnumeracion).ToArray
Dim lr As New List(Of ReciboCarteraPerdida)
Dim ps = bd.polizassg.Select(Function(x) New With {.idpoliza = x.idPoliza, .idDuracion = x.idDuracion, .idCausaBaja = x.idCausaBaja, .FechaBaja = x.FechaBaja, .NumeroPoliza = x.NumeroPoliza, .idCompania = x.idCompania, .NumeroSuplemento = x.NumeroSuplemento, .FechaVencimiento = x.FechaVencimiento}).ToList
' Dim POLS = (From p In ps Where p.NumeroPoliza IsNot Nothing Group By PolizaCia = New With {Key p.NumeroPoliza, Key p.idCompania} Into Gr = Group).Select(Function(x) x.Gr.OrderByDescending(Function(Y) Y.NumeroSuplemento).FirstOrDefault).Where(Function(X) X.FechaBaja.HasValue = False OrElse (X.idDuracion <> idDura And X.idCausaBaja.HasValue AndAlso X.idCausaBaja = idCabaFP) OrElse (X.idCausaBaja.HasValue AndAlso cabas.Contains(X.idCausaBaja) = False)).ToList
Dim POLS = (From p In ps Where p.NumeroPoliza IsNot Nothing Group By PolizaCia = New With {Key p.NumeroPoliza, Key p.idCompania} Into Gr = Group).Select(Function(x) x.Gr.OrderByDescending(Function(Y) Y.NumeroSuplemento).FirstOrDefault).Where(Function(X) X.FechaBaja.HasValue = False OrElse (X.idCausaBaja.HasValue AndAlso X.idCausaBaja = idCabaFP)).ToList
Dim recsex = bd.vf_recibosextendidos.Where(Function(x) x.FechaEfecto >= fai And x.FechaEfecto <= faf And x.idTipo <> idTrex And x.idTipo <> idTrcx And x.idDuracion <> idDuru).Select(Function(x) New With {.idRecibo = x.idRecibo, .Tomador = x.Tomador}).ToList
Dim recsant = bd.recibos.Where(Function(x) x.FechaEfecto >= fai And x.FechaEfecto <= faf And x.idTipo <> idTrex And x.idTipo <> idTrcx And x.polizassg.idDuracion <> idDuru _
And (x.liquidacionescompaniasrecibos.Any(Function(y) y.liquidacionescompanias.idTipoLiquidacion = idLiquidacion Or y.liquidacionescompanias.idTipoLiquidacion = idLiquidacioncia) _
Or (x.liquidacionescompaniasrecibos.Any(Function(y) y.liquidacionescompanias.idTipoLiquidacion = iddevuelto And x.idCausaBaja = idCabaPGO)))) _
.Select(Function(x) New ReciboCarteraPerdida With {.NumeroPoliza = x.polizassg.NumeroPoliza,
.idRecibo = x.idRecibo,
.idCompañia = x.polizassg.idCompania,
.Compañía = x.polizassg.companias.Nombre,
.Ramo = x.polizassg.ramos.Descripcion,
.FechaEfecto = x.FechaEfecto,
.Observaciones = x.polizassg.Observaciones}).ToList
Dim recs = bd.recibos.Where(Function(x) x.FechaEfecto >= fi And x.FechaEfecto <= ff And x.TotalRecibo > 0 And x.polizassg.idDuracion <> idDuru).Select(Function(x) New ReciboCarteraPerdida With {.NumeroPoliza = x.polizassg.NumeroPoliza,
.idRecibo = x.idRecibo,
.idCompañia = x.polizassg.idCompania,
.Compañía = x.polizassg.companias.Nombre,
.Ramo = x.polizassg.ramos.Descripcion,
.FechaEfecto = x.FechaEfecto,
.Observaciones = x.polizassg.Observaciones}).ToList
Dim flim = Today.AddYears(-1)
For Each r In recsant
If lr.Any(Function(X) X.NumeroPoliza = r.NumeroPoliza And X.idCompañia = r.idCompañia) = False AndAlso recs.Any(Function(x) x.NumeroPoliza = r.NumeroPoliza And x.idCompañia = r.idCompañia) = False AndAlso POLS.Any(Function(x) x.NumeroPoliza = r.NumeroPoliza And x.idCompania = r.idCompañia And Not (x.idDuracion = idDuru And x.FechaVencimiento < flim)) Then
r.Tomador = recsex.First(Function(x) x.idRecibo = r.idRecibo).Tomador
lr.Add(r)
End If
Next
If lr.Count > 0 Then
Dim lrd = lr.OrderBy(Function(x) x.Compañía).ThenBy(Function(x) x.Ramo).Select(Function(x) New With {x.NumeroPoliza, x.Compañía, x.Ramo, x.Tomador, .FechaEfectoUltimoRecibo = x.FechaEfecto, .Observaciones = x.Observaciones}).ToList
Dim b = tsWPF.Utilidades.Varias.IEnumerableAExcel(lrd)
Return b
Else
Return Nothing
End If
Catch ex As Exception
Throw New Exception(ex.Message, ex)
End Try
End Function
Public Shared Function GeneraExcelCarteraPerdida(fi As Date) As Byte()
Try
Dim bd = bdGestionAsegasa.gestionasegasaEntities.NuevoContextoCN
Dim idLiquidacion = bd.enumeraciones.First(Function(x) x.Codigo = "TIPLIQ.LIQUIDACION").idEnumeracion
Dim idLiquidacioncia = bd.enumeraciones.First(Function(x) x.Codigo = "TIPLIQ.PGDO.CIA").idEnumeracion
Dim iddevuelto = bd.enumeraciones.First(Function(x) x.Codigo = "TIPLIQ.DEVUELTO").idEnumeracion
Dim idDescobro = bd.enumeraciones.First(Function(x) x.Codigo = "TIPLIQ.DESCOBRO").idEnumeracion
Dim idTrex = bd.enumeraciones.First(Function(x) x.Codigo = "TRC.EX").idEnumeracion
Dim idTrcx = bd.enumeraciones.First(Function(x) x.Codigo = "TRC.CX").idEnumeracion
Dim idDuru = bd.enumeraciones.First(Function(x) x.Codigo = "DUR.U").idEnumeracion
Dim lr As New List(Of ReciboCarteraPerdida)
Dim ps = bd.polizassg.Select(Function(x) New With {.idpoliza = x.idPoliza, .idDuracion = x.idDuracion, .idCausaBaja = x.idCausaBaja, .FechaBaja = x.FechaBaja, .NumeroPoliza = x.NumeroPoliza, .idCompania = x.idCompania, .NumeroSuplemento = x.NumeroSuplemento, .FechaVencimiento = x.FechaVencimiento}).ToList
Dim POLS = (From p In ps Where p.NumeroPoliza IsNot Nothing Group By PolizaCia = New With {Key p.NumeroPoliza, Key p.idCompania} Into Gr = Group).Select(Function(x) x.Gr.OrderByDescending(Function(Y) Y.NumeroSuplemento).FirstOrDefault).Where(Function(X) X.FechaBaja.HasValue = False).ToList
Dim recsex = bd.vf_recibosextendidos.Where(Function(x) x.FechaEfecto >= fi And x.idTipo <> idTrex And x.idTipo <> idTrcx And x.idDuracion <> idDuru).Select(Function(x) New With {.idRecibo = x.idRecibo, .Tomador = x.Tomador, .NumeroPoliza = x.NumeroPoliza, .idCompania = x.idCompania, .FechaVencimiento = x.FechaVencimiento}).ToList
Dim recsant = bd.recibos.Where(Function(x) x.FechaEfecto >= fi And x.FechaVencimiento <= Today And x.idTipo <> idTrex And x.idTipo <> idTrcx And x.polizassg.idDuracion <> idDuru) _
.Select(Function(x) New ReciboCarteraPerdida With {.NumeroPoliza = x.polizassg.NumeroPoliza,
.idRecibo = x.idRecibo,
.idCompañia = x.polizassg.idCompania,
.Compañía = x.polizassg.companias.Nombre,
.Ramo = x.polizassg.ramos.Descripcion,
.FechaEfecto = x.FechaEfecto,
.FechaVencimiento = x.FechaVencimiento,
.Observaciones = x.polizassg.Observaciones}).ToList
Dim DentroUnMes As Date = fi.AddMonths(13)
Dim recs = bd.recibos.Where(Function(x) x.FechaVencimiento >= DentroUnMes And x.TotalRecibo > 0 And x.polizassg.idDuracion <> idDuru).Select(Function(x) New ReciboCarteraPerdida With {.NumeroPoliza = x.polizassg.NumeroPoliza,
.idRecibo = x.idRecibo,
.idCompañia = x.polizassg.idCompania,
.Compañía = x.polizassg.companias.Nombre,
.Ramo = x.polizassg.ramos.Descripcion,
.FechaEfecto = x.FechaEfecto,
.Observaciones = x.polizassg.Observaciones}).ToList
Dim flimduru = fi.AddYears(-1)
For Each r In recsant
If lr.Any(Function(X) X.NumeroPoliza = r.NumeroPoliza And X.idCompañia = r.idCompañia) = False AndAlso recs.Any(Function(x) x.NumeroPoliza = r.NumeroPoliza And x.idCompañia = r.idCompañia) = False AndAlso POLS.Any(Function(x) x.NumeroPoliza = r.NumeroPoliza And x.idCompania = r.idCompañia And Not (x.idDuracion = idDuru And x.FechaVencimiento < flimduru)) Then
If recsex.Any(Function(x) x.NumeroPoliza = r.NumeroPoliza AndAlso x.idCompania = r.idCompañia AndAlso x.idRecibo <> r.idRecibo AndAlso x.FechaVencimiento > r.fechaVencimiento) = False Then
r.Tomador = recsex.First(Function(x) x.idRecibo = r.idRecibo).Tomador
lr.Add(r)
End If
End If
Next
If lr.Count > 0 Then
Dim lrd = lr.OrderBy(Function(x) x.Compañía).ThenBy(Function(x) x.Ramo).Select(Function(x) New With {x.NumeroPoliza, x.Compañía, x.Ramo, x.Tomador, .FechaEfectoUltimoRecibo = x.FechaEfecto, .Observaciones = x.Observaciones}).ToList
Dim b = tsWPF.Utilidades.Varias.IEnumerableAExcel(lrd)
Return b
Else
Return Nothing
End If
Catch ex As Exception
Throw New Exception(ex.Message, ex)
End Try
End Function
Private Class ReciboCarteraPerdida
Public Property idRecibo As String
Public Property NumeroPoliza As String
Public Property idCompañia As Integer
Public Property Compañía As String
Public Property Ramo As String
Public Property Tomador As String
Public Property FechaEfecto As Date
Public Property FechaVencimiento As Date
Public Property Observaciones As String
End Class
End Class