agregado procesos y bd clases
This commit is contained in:
197
bdAsegasa/Informes/CarteraPerdida.cs
Normal file
197
bdAsegasa/Informes/CarteraPerdida.cs
Normal file
@@ -0,0 +1,197 @@
|
||||
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; }
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user