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