198 lines
13 KiB
C#
198 lines
13 KiB
C#
using bdAsegasa.dbcontext;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Linq.Dynamic.Core;
|
|
|
|
namespace bdAsegasa.Informes
|
|
{
|
|
public class CarteraPerdida
|
|
{
|
|
public static byte[] GeneraExcelCarteraPerdidaEF(DateOnly fi, DateOnly ff)
|
|
{
|
|
try
|
|
{
|
|
var bd = tscgestionasegasa.NuevoContexto();
|
|
|
|
var fai = fi.AddYears(-1);
|
|
var faf = ff.AddYears(-1);
|
|
|
|
var idLiquidacion = bd.enumeraciones.First(x => x.Codigo == "TIPLIQ.LIQUIDACION").idEnumeracion;
|
|
var idLiquidacioncia = bd.enumeraciones.First(x => x.Codigo == "TIPLIQ.PGDO.CIA").idEnumeracion;
|
|
|
|
var iddevuelto = bd.enumeraciones.First(x => x.Codigo == "TIPLIQ.DEVUELTO").idEnumeracion;
|
|
var idDescobro = bd.enumeraciones.First(x => x.Codigo == "TIPLIQ.DESCOBRO").idEnumeracion;
|
|
var idCabaPGO = bd.enumeraciones.First(x => x.Codigo == "CABA.PGO").idEnumeracion;
|
|
var idCabaFP = bd.enumeraciones.First(x => x.Codigo == "CABA.FP").idEnumeracion;
|
|
var idTrex = bd.enumeraciones.First(x => x.Codigo == "TRC.EX").idEnumeracion;
|
|
var idTrcx = bd.enumeraciones.First(x => x.Codigo == "TRC.CX").idEnumeracion;
|
|
var idDuru = bd.enumeraciones.First(x => x.Codigo == "DUR.U").idEnumeracion;
|
|
|
|
var lr = new List<ReciboCarteraPerdida>();
|
|
var ps = bd.polizassg.Select(x => new { 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();
|
|
|
|
var POLS = ps.Where(p => p.NumeroPoliza != null)
|
|
.GroupBy(p => new { p.NumeroPoliza, p.idCompania })
|
|
.Select(g => g.OrderByDescending(Y => Y.NumeroSuplemento).FirstOrDefault())
|
|
.Where(X => X.FechaBaja.HasValue == false || (X.idCausaBaja.HasValue && X.idCausaBaja == idCabaFP))
|
|
.ToList();
|
|
|
|
var recsex = bd.vf_recibosextendidos.Where(x => x.FechaEfecto >= fai && x.FechaEfecto <= faf && x.idTipo != idTrex && x.idTipo != idTrcx && x.idDuracion != idDuru)
|
|
.Select(x => new { idRecibo = x.idRecibo, Tomador = x.Tomador }).ToList();
|
|
|
|
var recsant = bd.recibos.Where(x => x.FechaEfecto >= fai && x.FechaEfecto <= faf && x.idTipo != idTrex && x.idTipo != idTrcx && x.idPolizaNavigation.idDuracion != idDuru &&
|
|
(x.liquidacionescompaniasrecibos.Any(y => y.idLiquidacionCiaNavigation.idTipoLiquidacion == idLiquidacion || y.idLiquidacionCiaNavigation.idTipoLiquidacion == idLiquidacioncia) ||
|
|
(x.liquidacionescompaniasrecibos.Any(y => y.idLiquidacionCiaNavigation.idTipoLiquidacion == iddevuelto && x.idCausaBaja == idCabaPGO))))
|
|
.Select(x => new ReciboCarteraPerdida
|
|
{
|
|
NumeroPoliza = x.idPolizaNavigation.NumeroPoliza,
|
|
idRecibo = x.idRecibo.ToString(),
|
|
idCompañia = x.idPolizaNavigation.idCompania,
|
|
Compañía = x.idPolizaNavigation.idCompaniaNavigation.Nombre,
|
|
Ramo = x.idPolizaNavigation.idRamoNavigation.Descripcion,
|
|
FechaEfecto = new DateTime(x.FechaEfecto.Year, x.FechaEfecto.Month, x.FechaEfecto.Day),
|
|
Observaciones = x.idPolizaNavigation.Observaciones
|
|
}).ToList();
|
|
|
|
var recs = bd.recibos.Where(x => x.FechaEfecto >= fi && x.FechaEfecto <= ff && x.TotalRecibo > 0 && x.idPolizaNavigation.idDuracion != idDuru)
|
|
.Select(x => new ReciboCarteraPerdida
|
|
{
|
|
NumeroPoliza = x.idPolizaNavigation.NumeroPoliza,
|
|
idRecibo = x.idRecibo.ToString(),
|
|
idCompañia = x.idPolizaNavigation.idCompania,
|
|
Compañía = x.idPolizaNavigation.idCompaniaNavigation.Nombre,
|
|
Ramo = x.idPolizaNavigation.idRamoNavigation.Descripcion,
|
|
FechaEfecto = new DateTime(x.FechaEfecto.Year, x.FechaEfecto.Month, x.FechaEfecto.Day),
|
|
Observaciones = x.idPolizaNavigation.Observaciones
|
|
}).ToList();
|
|
|
|
var flim = DateOnly.FromDateTime(DateTime.Now).AddYears(-1);
|
|
foreach (var r in recsant)
|
|
{
|
|
|
|
|
|
if (lr.Any(X => X.NumeroPoliza == r.NumeroPoliza && X.idCompañia == r.idCompañia) == false &&
|
|
recs.Any(x => x.NumeroPoliza == r.NumeroPoliza && x.idCompañia == r.idCompañia) == false &&
|
|
POLS.Any(x => x.NumeroPoliza == r.NumeroPoliza && x.idCompania == r.idCompañia && !(x.idDuracion == idDuru && x.FechaVencimiento < flim)))
|
|
{
|
|
r.Tomador = recsex.First(x => x.idRecibo.ToString() == r.idRecibo).Tomador;
|
|
lr.Add(r);
|
|
}
|
|
}
|
|
if (lr.Count > 0)
|
|
{
|
|
var lrd = lr.OrderBy(x => x.Compañía).ThenBy(x => x.Ramo).Select(x => new { x.NumeroPoliza, x.Compañía, x.Ramo, x.Tomador, FechaEfectoUltimoRecibo = x.FechaEfecto, x.Observaciones }).ToList();
|
|
byte[] b = tsUtilidades.Excel.IEnumerableAExcel(lrd);
|
|
return b;
|
|
}
|
|
else
|
|
{
|
|
return null;
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
throw new Exception(ex.Message, ex);
|
|
}
|
|
}
|
|
|
|
public static byte[] GeneraExcelCarteraPerdida(DateTime fi)
|
|
{
|
|
try
|
|
{
|
|
var bd = tscgestionasegasa.NuevoContexto();
|
|
var idLiquidacion = bd.enumeraciones.First(x => x.Codigo == "TIPLIQ.LIQUIDACION").idEnumeracion;
|
|
var idLiquidacioncia = bd.enumeraciones.First(x => x.Codigo == "TIPLIQ.PGDO.CIA").idEnumeracion;
|
|
|
|
var fiDate = DateOnly.FromDateTime(fi);
|
|
|
|
|
|
var iddevuelto = bd.enumeraciones.First(x => x.Codigo == "TIPLIQ.DEVUELTO").idEnumeracion;
|
|
var idDescobro = bd.enumeraciones.First(x => x.Codigo == "TIPLIQ.DESCOBRO").idEnumeracion;
|
|
var idTrex = bd.enumeraciones.First(x => x.Codigo == "TRC.EX").idEnumeracion;
|
|
var idTrcx = bd.enumeraciones.First(x => x.Codigo == "TRC.CX").idEnumeracion;
|
|
var idDuru = bd.enumeraciones.First(x => x.Codigo == "DUR.U").idEnumeracion;
|
|
|
|
var lr = new List<ReciboCarteraPerdida>();
|
|
var ps = bd.polizassg.Select(x => new { 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();
|
|
|
|
var POLS = ps.Where(p => p.NumeroPoliza != null)
|
|
.GroupBy(p => new { p.NumeroPoliza, p.idCompania })
|
|
.Select(g => g.OrderByDescending(Y => Y.NumeroSuplemento).FirstOrDefault())
|
|
.Where(X => X.FechaBaja.HasValue == false).ToList();
|
|
|
|
var recsex = bd.vf_recibosextendidos.Where(x => x.FechaEfecto >= fiDate && x.idTipo != idTrex && x.idTipo != idTrcx && x.idDuracion != idDuru)
|
|
.Select(x => new { idRecibo = x.idRecibo, Tomador = x.Tomador, NumeroPoliza = x.NumeroPoliza, idCompania = x.idCompania, FechaVencimiento = x.FechaVencimiento }).ToList();
|
|
|
|
var recsant = bd.recibos.Where(x => x.FechaEfecto >= fiDate && x.FechaVencimiento <= DateOnly.FromDateTime(DateTime.Today) && x.idTipo != idTrex && x.idTipo != idTrcx && x.idPolizaNavigation.idDuracion != idDuru)
|
|
.Select(x => new ReciboCarteraPerdida
|
|
{
|
|
NumeroPoliza = x.idPolizaNavigation.NumeroPoliza,
|
|
idRecibo = x.idRecibo.ToString(),
|
|
idCompañia = x.idPolizaNavigation.idCompania,
|
|
Compañía = x.idPolizaNavigation.idCompaniaNavigation.Nombre,
|
|
Ramo = x.idPolizaNavigation.idRamoNavigation.Descripcion,
|
|
FechaEfecto = new DateTime(x.FechaEfecto.Year, x.FechaEfecto.Month, x.FechaEfecto.Day),
|
|
FechaVencimiento = new DateTime(x.FechaVencimiento.Year, x.FechaVencimiento.Month, x.FechaVencimiento.Day),
|
|
Observaciones = x.idPolizaNavigation.Observaciones
|
|
}).ToList();
|
|
|
|
DateOnly DentroUnMes = DateOnly.FromDateTime( fi.AddMonths(13));
|
|
var recs = bd.recibos.Where(x => x.FechaVencimiento >= DentroUnMes && x.TotalRecibo > 0 && x.idPolizaNavigation.idDuracion != idDuru)
|
|
.Select(x => new ReciboCarteraPerdida
|
|
{
|
|
NumeroPoliza = x.idPolizaNavigation.NumeroPoliza,
|
|
idRecibo = x.idRecibo.ToString(),
|
|
idCompañia = x.idPolizaNavigation.idCompania,
|
|
Compañía = x.idPolizaNavigation.idCompaniaNavigation.Nombre,
|
|
Ramo = x.idPolizaNavigation.idRamoNavigation.Descripcion,
|
|
FechaEfecto = new DateTime(x.FechaEfecto.Year, x.FechaEfecto.Month, x.FechaEfecto.Day),
|
|
Observaciones = x.idPolizaNavigation.Observaciones
|
|
}).ToList();
|
|
|
|
var flimduru = fi.AddYears(-1);
|
|
foreach (var r in recsant)
|
|
{
|
|
if (lr.Any(X => X.NumeroPoliza == r.NumeroPoliza && X.idCompañia == r.idCompañia) == false &&
|
|
recs.Any(x => x.NumeroPoliza == r.NumeroPoliza && x.idCompañia == r.idCompañia) == false &&
|
|
POLS.Any(x => x.NumeroPoliza == r.NumeroPoliza && x.idCompania == r.idCompañia && !(x.idDuracion == idDuru && x.FechaVencimiento < DateOnly.FromDateTime(flimduru))))
|
|
{
|
|
if (recsex.Any(x => x.NumeroPoliza == r.NumeroPoliza && x.idCompania == r.idCompañia && x.idRecibo.ToString() != r.idRecibo && x.FechaVencimiento > DateOnly.FromDateTime(r.FechaVencimiento.Value)) == false)
|
|
{
|
|
r.Tomador = recsex.First(x => x.idRecibo.ToString() == r.idRecibo).Tomador;
|
|
lr.Add(r);
|
|
}
|
|
}
|
|
}
|
|
if (lr.Count > 0)
|
|
{
|
|
var lrd = lr.OrderBy(x => x.Compañía).ThenBy(x => x.Ramo).Select(x => new { x.NumeroPoliza, x.Compañía, x.Ramo, x.Tomador, FechaEfectoUltimoRecibo = x.FechaEfecto, x.Observaciones }).ToList();
|
|
byte[] b = tsUtilidades.Excel.IEnumerableAExcel(lrd);
|
|
return b;
|
|
}
|
|
else
|
|
{
|
|
return null;
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
throw new Exception(ex.Message, ex);
|
|
}
|
|
}
|
|
|
|
private class ReciboCarteraPerdida
|
|
{
|
|
public string idRecibo { get; set; }
|
|
public string NumeroPoliza { get; set; }
|
|
public int? idCompañia { get; set; }
|
|
public string Compañía { get; set; }
|
|
public string Ramo { get; set; }
|
|
public string Tomador { get; set; }
|
|
public DateTime? FechaEfecto { get; set; }
|
|
public DateTime? FechaVencimiento { get; set; }
|
|
public string Observaciones { get; set; }
|
|
}
|
|
}
|
|
}
|