2106 lines
124 KiB
C#
2106 lines
124 KiB
C#
using System;
|
||
using System.Collections.Generic;
|
||
using System.Linq;
|
||
using ULA.Cathay.CreditoModel.Credito;
|
||
using Ultimus.Utilitarios;
|
||
using Ultimus.Interfaces;
|
||
using System.Data.Entity;
|
||
using System.Data.Entity.Validation;
|
||
using ULA.Cathay.CreditoModel.DAL.CorporativoDatosRecientes;
|
||
using ULA.Cathay.CreditoModel.CorporativoDatosRecientes;
|
||
using ULA.Cathay.CreditoModel.Entidades;
|
||
|
||
namespace ULA.Cathay.CreditoModel.DAL.Credito
|
||
{
|
||
|
||
public class OfertaDAL
|
||
{
|
||
UltimusLogs logs = new UltimusLogs("OfertaDAL");
|
||
public decimal TipoCambio { get; set; }
|
||
public decimal TasaBasePasiva { get; set; }
|
||
public decimal TasaBasePrime { get; set; }
|
||
private decimal FactorMinimo = 25000;
|
||
|
||
/// <summary>
|
||
///
|
||
/// </summary>
|
||
/// <param name="model"></param>
|
||
/// <returns></returns>
|
||
public Oferta ObtenerOfertaSolicitud(int IdSolicitud)
|
||
{
|
||
Oferta respuesta = new Oferta();
|
||
try
|
||
{
|
||
using (CreditoContex db = new CreditoContex())
|
||
{
|
||
respuesta = db.Oferta.Where(x => x.IdSolicitud == IdSolicitud).FirstOrDefault();
|
||
}
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
logs.Error(ex);
|
||
throw ex;
|
||
}
|
||
return respuesta;
|
||
}
|
||
|
||
public Oferta ObtenerOfertaSolicitud(Oferta model)
|
||
{
|
||
Oferta respuesta = new Oferta();
|
||
HojaSeleccion CriteriosSolicitud = new HojaSeleccion();
|
||
|
||
try
|
||
{
|
||
using (CreditoContex Contexto = new CreditoContex())
|
||
{
|
||
respuesta = (from t in Contexto.Oferta
|
||
.Include(e => e.TipoSeleccion)
|
||
.Include(e => e.TipoCategoria)
|
||
.Include(e => e.Ejecutivo)
|
||
.Include(e => e.OfertaOperaciones)
|
||
.Include(e => e.Moneda)
|
||
.Include("OfertaOperaciones.FormasPagos")
|
||
.Include("OfertaOperaciones.Moneda")
|
||
.Include("OfertaOperaciones.OfertaOperacionesComisiones")
|
||
.Include("OfertaOperaciones.OfertaOperacionesGarantias")
|
||
.Where(t => t.IdSolicitud == model.IdSolicitud)
|
||
select t).FirstOrDefault();
|
||
}
|
||
|
||
if (respuesta == null)
|
||
{
|
||
respuesta = new Oferta();
|
||
respuesta.Moneda = new Moneda();
|
||
respuesta.IdSolicitud = model.IdSolicitud;
|
||
respuesta.IdTipoCategoria = model.IdTipoCategoria;
|
||
respuesta.Fecha = DateTime.Now;
|
||
}
|
||
else
|
||
{
|
||
respuesta.Moneda = respuesta.Moneda == null ? new Moneda() : respuesta.Moneda;
|
||
model.IdSolicitud = respuesta.IdSolicitud;
|
||
model.IdTipoCategoria = respuesta.IdTipoCategoria;
|
||
if (respuesta.Fecha == null)
|
||
respuesta.Fecha = DateTime.Now;
|
||
}
|
||
|
||
if (respuesta.IdEjecutivo == null)
|
||
{
|
||
var EjecutivoTramite = new ClienteDAL().ObtenerPrincipal(model.IdSolicitud);
|
||
|
||
if (EjecutivoTramite != null && EjecutivoTramite.Ejecutivo != null)
|
||
{
|
||
respuesta.IdEjecutivo = EjecutivoTramite.IdEjecutivo;
|
||
respuesta.Ejecutivo = EjecutivoTramite.Ejecutivo;
|
||
}
|
||
}
|
||
|
||
/// Se realizar la evaluaci<63>n de los criterios de selecci<63>n para determinar el tipo de oferta
|
||
respuesta.TipoSeleccion = !string.IsNullOrWhiteSpace(model.Process) ? model.Process.Trim().Equals("Credito") ? EvaluarTipoOferta(model.IdSolicitud) : respuesta.TipoSeleccion : respuesta.TipoSeleccion;
|
||
if (respuesta.TipoSeleccion != null)
|
||
{
|
||
respuesta.IdTipoSeleccion = respuesta.TipoSeleccion.IdTipoSeleccion;
|
||
CriteriosSolicitud.IdCriterioSeleccion = respuesta.TipoSeleccion.IdCriterioSeleccion.Value;
|
||
CriteriosSolicitud.IdSolicitud = respuesta.IdSolicitud;
|
||
CriteriosSolicitud = new HojaSeleccionDAL().ObtenerValorCriteriosSolicitud(CriteriosSolicitud).FirstOrDefault();
|
||
respuesta.TipoSeleccion.Porcentaje = respuesta.TipoSeleccion.Porcentaje == null ? 0 : respuesta.TipoSeleccion.Porcentaje;
|
||
|
||
if (CriteriosSolicitud != null)
|
||
{
|
||
if (CriteriosSolicitud.IdMoneda.Value == 0 && TipoCambio != 0)
|
||
respuesta.MontoMaximoLinea = Math.Round(((respuesta.TipoSeleccion.Porcentaje / 100) * decimal.Parse(CriteriosSolicitud.ValorCriterio) / TipoCambio).Value, 3, MidpointRounding.ToEven);
|
||
else if (CriteriosSolicitud.IdMoneda.Value == 1)
|
||
respuesta.MontoMaximoLinea = Math.Round(((respuesta.TipoSeleccion.Porcentaje / 100) * decimal.Parse(CriteriosSolicitud.ValorCriterio)).Value, 3, MidpointRounding.ToEven);
|
||
}
|
||
decimal? x = respuesta.MontoMaximoLinea % FactorMinimo;
|
||
if (x != 0)
|
||
respuesta.MontoMaximoLinea = FactorMinimo - x + respuesta.MontoMaximoLinea;
|
||
|
||
respuesta.MontoMaximoEspecifico = respuesta.MontoMaximoLinea;
|
||
}
|
||
///
|
||
/// Si la solicitud no tiene valres en los criterios de seleccci<63>n, los valores de los m<>ximos no estan definidos
|
||
else
|
||
{
|
||
respuesta.MontoMaximoLinea = 0;
|
||
respuesta.MontoMaximoEspecifico = respuesta.MontoMaximoLinea;
|
||
}
|
||
respuesta.Step = model.Step;
|
||
respuesta.IncidentStatus = model.IncidentStatus;
|
||
respuesta.OfertaFacilidades = ObtenerFacilidadesOfertaSolicitud(respuesta);
|
||
|
||
if (respuesta.OfertaFacilidades != null && respuesta.OfertaFacilidades.Count > 0)
|
||
{
|
||
foreach (var Facilidades in respuesta.OfertaFacilidades)
|
||
{
|
||
if (Facilidades.OfertaFacilidadesComisiones != null && Facilidades.OfertaFacilidadesComisiones.Count > 0)
|
||
{
|
||
foreach (var comision in Facilidades.OfertaFacilidadesComisiones)
|
||
{
|
||
if( comision.EsPropuesta == true)
|
||
{
|
||
comision.UsuarioCreador = null;
|
||
comision.UsuarioModificado = null;
|
||
}
|
||
|
||
}
|
||
}
|
||
if (Facilidades.OfertaFacilidadesGarantias != null && Facilidades.OfertaFacilidadesGarantias.Count > 0)
|
||
{
|
||
foreach (var garantia in Facilidades.OfertaFacilidadesGarantias)
|
||
{
|
||
if (garantia.EsPropuesta == true)
|
||
{
|
||
garantia.UsuarioCreador = null;
|
||
garantia.UsuarioModificado = null;
|
||
}
|
||
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
|
||
if (respuesta.OfertaOperaciones != null && respuesta.OfertaOperaciones.Count > 0)
|
||
{
|
||
foreach (var operacion in respuesta.OfertaOperaciones)
|
||
{
|
||
if (operacion.OfertaOperacionesComisiones != null && operacion.OfertaOperacionesComisiones.Count > 0)
|
||
{
|
||
foreach (var comision in operacion.OfertaOperacionesComisiones)
|
||
{
|
||
comision.UsuarioCreador = null;
|
||
comision.UsuarioModificado = null;
|
||
}
|
||
}
|
||
if (operacion.OfertaOperacionesGarantias != null && operacion.OfertaOperacionesGarantias.Count > 0)
|
||
{
|
||
foreach (var garantia in operacion.OfertaOperacionesGarantias)
|
||
{
|
||
garantia.UsuarioCreador = null;
|
||
garantia.UsuarioModificado = null;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
catch (DbEntityValidationException ex1)
|
||
{
|
||
logs.Error(ex1);
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
logs.Error(ex);
|
||
}
|
||
finally
|
||
{
|
||
}
|
||
return respuesta;
|
||
}
|
||
|
||
/// <summary>
|
||
///
|
||
/// </summary>
|
||
/// <param name="model"></param>
|
||
/// <returns></returns>
|
||
public List<OfertaFacilidades> ObtenerFacilidadesOfertaSolicitud(Oferta model)
|
||
{
|
||
List<OfertaFacilidades> respuesta = new List<OfertaFacilidades>();
|
||
|
||
try
|
||
{
|
||
using (CreditoContex Contexto = new CreditoContex())
|
||
{
|
||
if (model != null && string.IsNullOrEmpty(model.Process)) model.Process = "Credito";
|
||
|
||
var datos = (from d in Contexto.CategoriasPorFacilidad.Include(w => w.TipoFacilidad)
|
||
join e in Contexto.OfertaFacilidades
|
||
on new { IdTipoFacilidad = d.IdTipoFacilidad, IdSolicitud = model.IdSolicitud }
|
||
equals new { IdTipoFacilidad = e.IdTipoFacilidad, IdSolicitud = e.IdSolicitud }
|
||
into ej
|
||
from e in ej.DefaultIfEmpty()
|
||
where d.Estado == true && d.IdTipoCategoria == model.IdTipoCategoria
|
||
&& (e.IdSolicitud == model.IdSolicitud || (int?)e.IdSolicitud == null)
|
||
select new
|
||
{
|
||
IdSolicitud = e != null ? e.IdSolicitud : model.IdSolicitud,
|
||
IdTipoFacilidad = d.TipoFacilidad.IdTipoFacilidad,
|
||
Secuencia = e != null ? e.Secuencia : 0,
|
||
Eslinea = e == null ? d.LineaCredito : e.Eslinea,
|
||
EsEspecifico = e == null ? d.Especifico : e.EsEspecifico,
|
||
MontoMaximo = e != null ? e.MontoMaximo : null,
|
||
MontoActual = e != null ? e.MontoActual : null,
|
||
Detalle = e != null ? e.Detalle : null,
|
||
FechaVencimiento = e != null ? e.FechaVencimiento : null,
|
||
FechaVencimientoActual = e != null ? e.FechaVencimientoActual : null,
|
||
CodigoNaturalezaGasto = e != null ? e.CodigoNaturalezaGasto : null,
|
||
DescNaturalezaGasto = e != null ? e.DescNaturalezaGasto : null,
|
||
IdMonedaMontoPropuesto = e != null ? e.IdMonedaMontoPropuesto : 1,
|
||
MontoEquivalentePropuesto = e != null ? e.MontoEquivalentePropuesto : null,
|
||
MontoPropuesto = e != null ? e.MontoPropuesto : null,
|
||
RazonSuperandoLimites = e != null ? e.RazonSuperandoLimites : null,
|
||
SubLimiteActual = e != null ? e.SubLimiteActual : null,
|
||
SubLimitePropuesto = e != null ? e.SubLimitePropuesto : null,
|
||
PlazoMaximoActual = e != null ? e.PlazoMaximoActual : null,
|
||
PlazoMaximoPropuesto = e != null ? e.PlazoMaximoPropuesto : null,
|
||
Recursos = e != null ? e.Recursos : null,
|
||
FormaPagoActual = e != null ? e.FormaPagoActual : null,
|
||
FormaPagoPropuesto = e != null ? e.IdFormaPagoPropuesto : null,
|
||
TBPActualMonedaLocal = e != null ? e.TBPActualMonedaLocal : null,
|
||
TasaActualMonedaLocal = e != null ? e.TasaActualMonedaLocal : null,
|
||
PRActualDolares = e != null ? e.PRActualDolares : null,
|
||
TasaActualDolares = e != null ? e.TasaActualDolares : null,
|
||
TBPPropuestaMonedaLocal = e != null ? e.TBPPropuestaMonedaLocal : TasaBasePasiva,
|
||
TasaPropuestaMonedaLocal = e != null ? e.TasaPropuestaMonedaLocal : null,
|
||
TRPropuestaDolares = e != null ? e.TRPropuestaDolares : TasaBasePrime,
|
||
TotalTBPTasaPropuestaMonedaLocal = e != null ? e.TotalTBPTasaPropuestaMonedaLocal : 0,
|
||
TotalPRTasaPropuestaDolares = e != null ? e.TotalPRTasaPropuestaDolares : 0,
|
||
TasaPropuestaDolares = e != null ? e.TasaPropuestaDolares : null,
|
||
UsuarioCreador = e != null ? e.UsuarioCreador : null,
|
||
FechaCreacion = e != null ? e.FechaCreacion : null,
|
||
UsuarioModificado = e != null ? e.UsuarioModificado : null,
|
||
FechaModificacion = e != null ? e.FechaModificacion : null,
|
||
TipoFacilidad = d.TipoFacilidad,
|
||
ValorCriterio = "",
|
||
Porcentaje = e != null ? e.MontoPropuesto : null,
|
||
IdCriterioSeleccion = 0,
|
||
IdMoneda = 0,
|
||
OtrasTasas = e != null ? e.OtrasTasas : "",
|
||
PlazoMeses = e != null ? e.PlazoMeses : 0
|
||
|
||
}).ToList();
|
||
|
||
if (model.TipoSeleccion != null && model.Process.Equals("Credito"))
|
||
{
|
||
var ConfOferta = (from A in Contexto.MatrizOferta
|
||
join B in Contexto.HojaSeleccion on new { IdCriterioSeleccion = A.IdCriterioSeleccion, IdTipoSeleccion = A.IdTipoSeleccion } equals
|
||
new { IdCriterioSeleccion = B.IdCriterioSeleccion, IdTipoSeleccion = model.TipoSeleccion.IdTipoSeleccion }
|
||
into ps
|
||
from B in ps
|
||
where B.IdSolicitud == model.IdSolicitud
|
||
select new
|
||
{
|
||
IdTipoFacilidad = A.IdTipoFacilidad,
|
||
ValorCriterio = B.ValorCriterio,
|
||
Porcentaje = A.Porcentaje / 100,
|
||
IdCriterioSeleccion = B.IdCriterioSeleccion,
|
||
IdMoneda = B.IdMoneda.Value,
|
||
}).ToList();
|
||
|
||
datos = (from q in datos
|
||
join p in ConfOferta
|
||
on q.IdTipoFacilidad equals p.IdTipoFacilidad
|
||
into qp
|
||
from p2 in qp.DefaultIfEmpty()
|
||
select new
|
||
{
|
||
IdSolicitud = q.IdSolicitud,
|
||
IdTipoFacilidad = q.IdTipoFacilidad,
|
||
Secuencia = q.Secuencia,
|
||
Eslinea = q.Eslinea,
|
||
EsEspecifico = q.EsEspecifico,
|
||
MontoMaximo = q.MontoMaximo,
|
||
MontoActual = q.MontoActual,
|
||
Detalle = q.Detalle,
|
||
FechaVencimiento = q.FechaVencimiento,
|
||
FechaVencimientoActual = q.FechaVencimientoActual,
|
||
CodigoNaturalezaGasto = q.CodigoNaturalezaGasto,
|
||
DescNaturalezaGasto = q.DescNaturalezaGasto,
|
||
IdMonedaMontoPropuesto = q.IdMonedaMontoPropuesto,
|
||
MontoEquivalentePropuesto = q.MontoEquivalentePropuesto,
|
||
MontoPropuesto = q.MontoPropuesto,
|
||
RazonSuperandoLimites = q.RazonSuperandoLimites,
|
||
SubLimiteActual = q.SubLimiteActual,
|
||
SubLimitePropuesto = q.SubLimitePropuesto,
|
||
PlazoMaximoActual = q.PlazoMaximoActual,
|
||
PlazoMaximoPropuesto = q.PlazoMaximoPropuesto,
|
||
Recursos = q.Recursos,
|
||
FormaPagoActual = q.FormaPagoActual,
|
||
FormaPagoPropuesto = q.FormaPagoPropuesto,
|
||
TBPActualMonedaLocal = q.TBPActualMonedaLocal,
|
||
TasaActualMonedaLocal = q.TasaActualMonedaLocal,
|
||
PRActualDolares = q.PRActualDolares,
|
||
TasaActualDolares = q.TasaActualDolares,
|
||
TBPPropuestaMonedaLocal = q.TBPPropuestaMonedaLocal,
|
||
TasaPropuestaMonedaLocal = q.TasaPropuestaMonedaLocal,
|
||
TRPropuestaDolares = q.TRPropuestaDolares,
|
||
TotalTBPTasaPropuestaMonedaLocal = q.TotalTBPTasaPropuestaMonedaLocal,
|
||
TotalPRTasaPropuestaDolares = q.TotalPRTasaPropuestaDolares,
|
||
TasaPropuestaDolares = q.TasaPropuestaDolares,
|
||
UsuarioCreador = q.UsuarioCreador,
|
||
FechaCreacion = q.FechaCreacion,
|
||
UsuarioModificado = q.UsuarioModificado,
|
||
FechaModificacion = q.FechaModificacion,
|
||
TipoFacilidad = q.TipoFacilidad,
|
||
ValorCriterio = (p2 == null) ? "0" : p2.ValorCriterio,
|
||
Porcentaje = (p2 == null) ? 0 : p2.Porcentaje,
|
||
IdCriterioSeleccion = (p2 == null) ? 0 : p2.IdCriterioSeleccion,
|
||
IdMoneda = (p2 == null) ? 0 : p2.IdMoneda,
|
||
OtrasTasas = q.OtrasTasas,
|
||
PlazoMeses = q.PlazoMeses
|
||
}).ToList();
|
||
}
|
||
else if (!model.Process.Equals("Credito"))
|
||
datos = datos.Where(q => q.Secuencia != 0).ToList();
|
||
|
||
|
||
foreach (var dato in datos)
|
||
{
|
||
OfertaFacilidades faci = new OfertaFacilidades
|
||
{
|
||
IdSolicitud = dato.IdSolicitud,
|
||
IdTipoFacilidad = dato.IdTipoFacilidad,
|
||
Secuencia = dato.Secuencia,
|
||
Eslinea = dato.Eslinea,
|
||
EsEspecifico = dato.EsEspecifico,
|
||
MontoMaximo = null,
|
||
MontoActual = dato.MontoActual,
|
||
Detalle = dato.Detalle,
|
||
FechaVencimiento = dato.FechaVencimiento,
|
||
FechaVencimientoActual = dato.FechaVencimientoActual,
|
||
CodigoNaturalezaGasto = dato.CodigoNaturalezaGasto,
|
||
DescNaturalezaGasto = dato.DescNaturalezaGasto,
|
||
IdMonedaMontoPropuesto = dato.IdMonedaMontoPropuesto,
|
||
MontoEquivalentePropuesto = dato.MontoEquivalentePropuesto,
|
||
MontoPropuesto = dato.MontoPropuesto,
|
||
RazonSuperandoLimites = dato.RazonSuperandoLimites,
|
||
SubLimiteActual = dato.SubLimiteActual,
|
||
SubLimitePropuesto = dato.SubLimitePropuesto,
|
||
PlazoMaximoActual = dato.PlazoMaximoActual,
|
||
PlazoMaximoPropuesto = dato.PlazoMaximoPropuesto,
|
||
Recursos = dato.Recursos,
|
||
FormaPagoActual = dato.FormaPagoActual,
|
||
IdFormaPagoPropuesto = dato.FormaPagoPropuesto,
|
||
TBPActualMonedaLocal = dato.TBPActualMonedaLocal,
|
||
TasaActualMonedaLocal = dato.TasaActualMonedaLocal,
|
||
PRActualDolares = dato.PRActualDolares,
|
||
TasaActualDolares = dato.TasaActualDolares,
|
||
TBPPropuestaMonedaLocal = dato.TBPPropuestaMonedaLocal,
|
||
TasaPropuestaMonedaLocal = dato.TasaPropuestaMonedaLocal,
|
||
TRPropuestaDolares = dato.TRPropuestaDolares,
|
||
TotalTBPTasaPropuestaMonedaLocal = dato.TotalTBPTasaPropuestaMonedaLocal,
|
||
TotalPRTasaPropuestaDolares = dato.TotalPRTasaPropuestaDolares,
|
||
TasaPropuestaDolares = dato.TasaPropuestaDolares,
|
||
UsuarioCreador = dato.UsuarioCreador,
|
||
FechaCreacion = dato.FechaCreacion,
|
||
UsuarioModificado = dato.UsuarioModificado,
|
||
FechaModificacion = dato.FechaModificacion,
|
||
TipoFacilidad = dato.TipoFacilidad,
|
||
FormasPagos = Contexto.FormasPagos.Where(q => q.IdFormaPago == dato.FormaPagoPropuesto).FirstOrDefault(),
|
||
Moneda = Contexto.Moneda.Where(q => q.IdMoneda == dato.IdMonedaMontoPropuesto).FirstOrDefault(),
|
||
OtrasTasas = dato.OtrasTasas,
|
||
PlazoMeses = dato.PlazoMeses,
|
||
OfertaFacilidadesComisiones = Contexto.OfertaFacilidadesComisiones
|
||
.Where(e => e.IdSolicitud == dato.IdSolicitud
|
||
&& e.IdTipoFacilidad == dato.IdTipoFacilidad
|
||
&& e.Secuencia == dato.Secuencia).ToList(),
|
||
OfertaFacilidadesGarantias = Contexto.OfertaFacilidadesGarantias
|
||
.Where(e => e.IdSolicitud == dato.IdSolicitud
|
||
&& e.IdTipoFacilidad == dato.IdTipoFacilidad
|
||
&& e.Secuencia == dato.Secuencia).ToList(),
|
||
};
|
||
|
||
|
||
if (model.Process.Equals("Credito") && !(EvaluarCondicionEspecial(model, faci.IdTipoFacilidad)))
|
||
{
|
||
faci.MontoMaximo = 0;
|
||
}
|
||
else
|
||
{
|
||
if (dato.IdMoneda == 0 && TipoCambio != 0)
|
||
faci.MontoMaximo = string.IsNullOrEmpty(dato.ValorCriterio) ? dato.MontoMaximo : Math.Round(dato.Porcentaje.Value * decimal.Parse(dato.ValorCriterio) / TipoCambio, 3, MidpointRounding.AwayFromZero);
|
||
else if (dato.IdMoneda == 1 && TipoCambio != 0)
|
||
faci.MontoMaximo = string.IsNullOrEmpty(dato.ValorCriterio) ? dato.MontoMaximo : Math.Round(dato.Porcentaje.Value * decimal.Parse(dato.ValorCriterio), 3, MidpointRounding.AwayFromZero);
|
||
}
|
||
|
||
|
||
decimal? x = faci.MontoMaximo % FactorMinimo;
|
||
if (x != 0)
|
||
faci.MontoMaximo = FactorMinimo - x + faci.MontoMaximo;
|
||
|
||
respuesta.Add(faci);
|
||
}
|
||
}
|
||
|
||
|
||
|
||
if ((model.Step == EnumEtapas.Etapa_RE_Ela_Caratula ||
|
||
model.Step == EnumEtapas.AN_Rev_Doc_Clasificar ||
|
||
model.Step == EnumEtapas.AP_Enviar_AProbacion ||
|
||
model.Step == EnumEtapas.AP_Corre_Caratula_Adjuntar_Doc ||
|
||
model.Step == EnumEtapas.Etapa_IN_ElaSelecOferta ||
|
||
model.Step == EnumEtapas.Etapa_IN_GenPropuesta) &&
|
||
model.IncidentStatus == EnumStatusIncidentStatus.IncidenteActivo)
|
||
{
|
||
Solicitante Solicitante = new SolicitanteDAL().ObteneCliente(model.IdSolicitud);
|
||
|
||
if (TasaBasePasiva == 0 || TasaBasePrime == 0)
|
||
{
|
||
logs.Error("El servicio de SAP ha retornado la Tasa Base Pasiva del d<>a en: " + TasaBasePasiva.ToString() + " y la Tasa Base Prime del d<>a en" + TasaBasePrime.ToString() + " N<> Solicitud " + model.IdSolicitud.ToString());
|
||
}
|
||
|
||
|
||
foreach (var facilidad in respuesta)
|
||
{
|
||
|
||
if (Solicitante.Cliente.IdTipoTramite != EnumTipoTramite.CambioCondiciones)
|
||
{
|
||
if (facilidad.Secuencia != 0)
|
||
{
|
||
if (TasaBasePasiva > 0)
|
||
{
|
||
facilidad.TBPPropuestaMonedaLocal = TasaBasePasiva;
|
||
facilidad.TBPActualMonedaLocal = facilidad.TBPActualMonedaLocal != null && facilidad.TBPActualMonedaLocal != 0 ? TasaBasePasiva : 0;
|
||
}
|
||
|
||
if (TasaBasePrime > 0)
|
||
{
|
||
facilidad.TRPropuestaDolares = TasaBasePrime;
|
||
facilidad.PRActualDolares = facilidad.PRActualDolares != null && facilidad.PRActualDolares != 0 ? TasaBasePrime : 0;
|
||
}
|
||
|
||
|
||
if (facilidad.TotalTBPTasaPropuestaMonedaLocal != null && facilidad.TotalTBPTasaPropuestaMonedaLocal != 0)
|
||
facilidad.TasaPropuestaMonedaLocal = facilidad.TotalTBPTasaPropuestaMonedaLocal - facilidad.TBPPropuestaMonedaLocal;
|
||
|
||
if (facilidad.TotalPRTasaPropuestaDolares != null && facilidad.TotalPRTasaPropuestaDolares != 0)
|
||
facilidad.TasaPropuestaDolares = facilidad.TotalPRTasaPropuestaDolares - facilidad.TRPropuestaDolares;
|
||
|
||
facilidad.UsuarioModificado = string.Empty;
|
||
InsertarActualizarOfertaFacilidades(facilidad, false);
|
||
}
|
||
|
||
}
|
||
else if (Solicitante.Cliente.IdTipoTramite == EnumTipoTramite.CambioCondiciones)
|
||
{
|
||
|
||
if (facilidad.Secuencia != 0)
|
||
{
|
||
#region si el total Cambio
|
||
|
||
if ((facilidad.TBPPropuestaMonedaLocal + facilidad.TasaPropuestaMonedaLocal) != (facilidad.TasaActualMonedaLocal + facilidad.TBPActualMonedaLocal))
|
||
{
|
||
if (TasaBasePasiva > 0)
|
||
{
|
||
facilidad.TBPPropuestaMonedaLocal = TasaBasePasiva;
|
||
facilidad.TBPActualMonedaLocal = facilidad.TBPActualMonedaLocal != null && facilidad.TBPActualMonedaLocal != 0 ? TasaBasePasiva : 0;
|
||
}
|
||
|
||
if (facilidad.TotalTBPTasaPropuestaMonedaLocal != null && facilidad.TotalTBPTasaPropuestaMonedaLocal != 0)
|
||
facilidad.TasaPropuestaMonedaLocal = facilidad.TotalTBPTasaPropuestaMonedaLocal - facilidad.TBPPropuestaMonedaLocal;
|
||
facilidad.UsuarioModificado = string.Empty;
|
||
InsertarActualizarOfertaFacilidades(facilidad, false);
|
||
}
|
||
|
||
if ((facilidad.TRPropuestaDolares + facilidad.TasaPropuestaDolares) != (facilidad.PRActualDolares + facilidad.TasaActualDolares))
|
||
{
|
||
if (TasaBasePrime > 0)
|
||
{
|
||
facilidad.TRPropuestaDolares = TasaBasePrime;
|
||
facilidad.PRActualDolares = facilidad.PRActualDolares != null && facilidad.PRActualDolares != 0 ? TasaBasePrime : 0;
|
||
|
||
}
|
||
|
||
if (facilidad.TotalPRTasaPropuestaDolares != null && facilidad.TotalPRTasaPropuestaDolares != 0)
|
||
facilidad.TasaPropuestaDolares = facilidad.TotalPRTasaPropuestaDolares - facilidad.TRPropuestaDolares;
|
||
|
||
facilidad.UsuarioModificado = string.Empty;
|
||
InsertarActualizarOfertaFacilidades(facilidad, false);
|
||
}
|
||
#endregion
|
||
|
||
#region si el total es igual
|
||
if ((facilidad.TBPPropuestaMonedaLocal + facilidad.TasaPropuestaMonedaLocal) == (facilidad.TasaActualMonedaLocal + facilidad.TBPActualMonedaLocal))
|
||
{
|
||
if (TasaBasePasiva > 0)
|
||
{
|
||
facilidad.TBPPropuestaMonedaLocal = TasaBasePasiva;
|
||
facilidad.TBPActualMonedaLocal = facilidad.TBPActualMonedaLocal != null && facilidad.TBPActualMonedaLocal != 0 ? TasaBasePasiva : 0;
|
||
|
||
}
|
||
|
||
if (facilidad.TotalTBPTasaPropuestaMonedaLocal != null && facilidad.TotalTBPTasaPropuestaMonedaLocal != 0)
|
||
facilidad.TotalTBPTasaPropuestaMonedaLocal = facilidad.TasaPropuestaMonedaLocal + facilidad.TBPPropuestaMonedaLocal;
|
||
|
||
facilidad.UsuarioModificado = string.Empty;
|
||
InsertarActualizarOfertaFacilidades(facilidad, false);
|
||
}
|
||
|
||
if ((facilidad.TRPropuestaDolares + facilidad.TasaPropuestaDolares) == (facilidad.PRActualDolares + facilidad.TasaActualDolares))
|
||
{
|
||
if (TasaBasePrime > 0)
|
||
{
|
||
facilidad.TRPropuestaDolares = TasaBasePrime;
|
||
facilidad.PRActualDolares = facilidad.PRActualDolares != null && facilidad.PRActualDolares != 0 ? TasaBasePrime : 0;
|
||
}
|
||
|
||
if (facilidad.TotalPRTasaPropuestaDolares != null && facilidad.TotalPRTasaPropuestaDolares != 0)
|
||
facilidad.TotalPRTasaPropuestaDolares = facilidad.TasaPropuestaDolares + facilidad.TRPropuestaDolares;
|
||
|
||
facilidad.UsuarioModificado = string.Empty;
|
||
InsertarActualizarOfertaFacilidades(facilidad, false);
|
||
}
|
||
|
||
#endregion
|
||
|
||
}
|
||
|
||
}
|
||
}
|
||
}
|
||
|
||
if (model.Step == EnumEtapas.AP_Analizar_Caso && model.IncidentStatus == EnumStatusIncidentStatus.IncidenteActivo)
|
||
{
|
||
Solicitante Solicitante = new SolicitanteDAL().ObteneCliente(model.IdSolicitud);
|
||
|
||
int EstadoCaratula = new CaratulaCreditoDAL().ObtenerEstadoCaratula(model.IdSolicitud);
|
||
|
||
if (EstadoCaratula == 0)
|
||
{
|
||
foreach (var facilidad in respuesta)
|
||
{
|
||
|
||
if (Solicitante.Cliente.IdTipoTramite != EnumTipoTramite.CambioCondiciones)
|
||
{
|
||
if (facilidad.Secuencia != 0)
|
||
{
|
||
|
||
if (TasaBasePasiva > 0)
|
||
{
|
||
facilidad.TBPPropuestaMonedaLocal = TasaBasePasiva;
|
||
facilidad.TBPActualMonedaLocal = facilidad.TBPActualMonedaLocal != null && facilidad.TBPActualMonedaLocal != 0 ? TasaBasePasiva : 0;
|
||
}
|
||
|
||
if (TasaBasePasiva > 0)
|
||
{
|
||
facilidad.TRPropuestaDolares = TasaBasePrime;
|
||
facilidad.PRActualDolares = facilidad.PRActualDolares != null && facilidad.PRActualDolares != 0 ? TasaBasePrime : 0;
|
||
}
|
||
|
||
|
||
|
||
if (facilidad.TotalTBPTasaPropuestaMonedaLocal != null && facilidad.TotalTBPTasaPropuestaMonedaLocal != 0)
|
||
facilidad.TasaPropuestaMonedaLocal = facilidad.TotalTBPTasaPropuestaMonedaLocal - facilidad.TBPPropuestaMonedaLocal;
|
||
|
||
if (facilidad.TotalPRTasaPropuestaDolares != null && facilidad.TotalPRTasaPropuestaDolares != 0)
|
||
facilidad.TasaPropuestaDolares = facilidad.TotalPRTasaPropuestaDolares - facilidad.TRPropuestaDolares;
|
||
|
||
facilidad.UsuarioModificado = string.Empty;
|
||
InsertarActualizarOfertaFacilidades(facilidad, false);
|
||
}
|
||
|
||
}
|
||
else if (Solicitante.Cliente.IdTipoTramite == EnumTipoTramite.CambioCondiciones)
|
||
{
|
||
|
||
if (facilidad.Secuencia != 0)
|
||
{
|
||
#region si el total Cambio
|
||
|
||
if ((facilidad.TBPPropuestaMonedaLocal + facilidad.TasaPropuestaMonedaLocal) != (facilidad.TasaActualMonedaLocal + facilidad.TBPActualMonedaLocal))
|
||
{
|
||
if (TasaBasePasiva > 0)
|
||
{
|
||
facilidad.TBPPropuestaMonedaLocal = TasaBasePasiva;
|
||
facilidad.TBPActualMonedaLocal = facilidad.TBPActualMonedaLocal != null && facilidad.TBPActualMonedaLocal != 0 ? TasaBasePasiva : 0;
|
||
}
|
||
|
||
if (facilidad.TotalTBPTasaPropuestaMonedaLocal != null && facilidad.TotalTBPTasaPropuestaMonedaLocal != 0)
|
||
facilidad.TasaPropuestaMonedaLocal = facilidad.TotalTBPTasaPropuestaMonedaLocal - facilidad.TBPPropuestaMonedaLocal;
|
||
|
||
facilidad.UsuarioModificado = string.Empty;
|
||
InsertarActualizarOfertaFacilidades(facilidad, false);
|
||
}
|
||
|
||
if ((facilidad.TRPropuestaDolares + facilidad.TasaPropuestaDolares) != (facilidad.PRActualDolares + facilidad.TasaActualDolares))
|
||
{
|
||
if (TasaBasePrime > 0)
|
||
{
|
||
facilidad.TRPropuestaDolares = TasaBasePrime;
|
||
facilidad.PRActualDolares = facilidad.PRActualDolares != null && facilidad.PRActualDolares != 0 ? TasaBasePrime : 0;
|
||
}
|
||
|
||
if (facilidad.TotalPRTasaPropuestaDolares != null && facilidad.TotalPRTasaPropuestaDolares != 0)
|
||
facilidad.TasaPropuestaDolares = facilidad.TotalPRTasaPropuestaDolares - facilidad.TRPropuestaDolares;
|
||
|
||
facilidad.UsuarioModificado = string.Empty;
|
||
InsertarActualizarOfertaFacilidades(facilidad, false);
|
||
}
|
||
#endregion
|
||
|
||
#region si el total es igual
|
||
if ((facilidad.TBPPropuestaMonedaLocal + facilidad.TasaPropuestaMonedaLocal) == (facilidad.TasaActualMonedaLocal + facilidad.TBPActualMonedaLocal))
|
||
{
|
||
if (TasaBasePasiva > 0)
|
||
{
|
||
facilidad.TBPPropuestaMonedaLocal = TasaBasePasiva;
|
||
facilidad.TBPActualMonedaLocal = facilidad.TBPActualMonedaLocal != null && facilidad.TBPActualMonedaLocal != 0 ? TasaBasePasiva : 0;
|
||
}
|
||
|
||
if (facilidad.TotalTBPTasaPropuestaMonedaLocal != null && facilidad.TotalTBPTasaPropuestaMonedaLocal != 0)
|
||
facilidad.TotalTBPTasaPropuestaMonedaLocal = facilidad.TasaPropuestaMonedaLocal + facilidad.TBPPropuestaMonedaLocal;
|
||
|
||
facilidad.UsuarioModificado = string.Empty;
|
||
InsertarActualizarOfertaFacilidades(facilidad, false);
|
||
}
|
||
|
||
if ((facilidad.TRPropuestaDolares + facilidad.TasaPropuestaDolares) == (facilidad.PRActualDolares + facilidad.TasaActualDolares))
|
||
{
|
||
if (TasaBasePrime > 0)
|
||
{
|
||
facilidad.TRPropuestaDolares = TasaBasePrime;
|
||
facilidad.PRActualDolares = facilidad.PRActualDolares != null && facilidad.PRActualDolares != 0 ? TasaBasePrime : 0;
|
||
}
|
||
|
||
if (facilidad.TotalPRTasaPropuestaDolares != null && facilidad.TotalPRTasaPropuestaDolares != 0)
|
||
facilidad.TotalPRTasaPropuestaDolares = facilidad.TasaPropuestaDolares + facilidad.TRPropuestaDolares;
|
||
|
||
facilidad.UsuarioModificado = string.Empty;
|
||
InsertarActualizarOfertaFacilidades(facilidad, false);
|
||
}
|
||
|
||
#endregion
|
||
|
||
}
|
||
|
||
}
|
||
}
|
||
}
|
||
|
||
}
|
||
|
||
|
||
|
||
}
|
||
catch (DbEntityValidationException ex1)
|
||
{
|
||
logs.Error(ex1);
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
logs.Error(ex);
|
||
}
|
||
finally
|
||
{
|
||
}
|
||
return respuesta;
|
||
}
|
||
|
||
public List<OfertaFacilidades> ObtenerFacilidadesOfertaSolicitud(int IdTipoFacilidad, string CodCaratula)
|
||
{
|
||
List<OfertaFacilidades> Respuesta = new List<OfertaFacilidades>();
|
||
try
|
||
{
|
||
int IdSolicitudAsociado = new CaratulaCreditoDAL().ObtenerIdSolicitudConCodCaratula(CodCaratula);
|
||
using (CreditoContex Conn = new CreditoContex())
|
||
{
|
||
if (IdSolicitudAsociado != 0)
|
||
Respuesta = Conn.OfertaFacilidades.Where(x => x.IdTipoFacilidad == IdTipoFacilidad && x.Eslinea == true && x.IdSolicitud == IdSolicitudAsociado).Include(x => x.OfertaFacilidadesGarantias).ToList();
|
||
}
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
logs.Error(ex);
|
||
}
|
||
return Respuesta;
|
||
}
|
||
|
||
private bool EvaluarCondicionEspecial(Oferta model, int IdTipoFacilidad)
|
||
{
|
||
bool resp = true;
|
||
try
|
||
{
|
||
|
||
if (IdTipoFacilidad.In(EnumTipoFacilidad.Descuento_Facturas_Privado, EnumTipoFacilidad.Descuento_Facturas_Publico))
|
||
{
|
||
if (model.TipoSeleccion != null && model.Process.Equals("Credito"))
|
||
{
|
||
using (CreditoContex Contexto = new CreditoContex())
|
||
{
|
||
|
||
var ConfOferta = (from B in Contexto.HojaSeleccion
|
||
join A in Contexto.MatrizOferta
|
||
on new
|
||
{
|
||
IdCriterioSeleccion = (B == null || B.IdCriterioSeleccion == null) ? 0 : B.IdCriterioSeleccion,
|
||
IdTipoSeleccion = model.TipoSeleccion.IdTipoSeleccion
|
||
}
|
||
equals new
|
||
{
|
||
IdCriterioSeleccion = (A == null || A.IdCriterioSeleccion == null ? 0 : A.IdCriterioSeleccion),
|
||
IdTipoSeleccion = (A == null || A.IdTipoSeleccion == null ? 0 : A.IdTipoSeleccion)
|
||
}
|
||
into ps
|
||
from A in ps.DefaultIfEmpty()
|
||
where B.IdSolicitud == model.IdSolicitud
|
||
select new
|
||
{
|
||
IdTipoFacilidad = A == null || A.IdTipoFacilidad == null ? 0 : A.IdTipoFacilidad,
|
||
ValorCriterio = B.ValorCriterio,
|
||
Porcentaje = A == null || A.Porcentaje == null ? 0 : A.Porcentaje / 100,
|
||
IdCriterioSeleccion = B == null || B.IdCriterioSeleccion == null ? 0 : B.IdCriterioSeleccion,
|
||
IdMoneda = (B == null || !(B.IdMoneda.HasValue)) ? 0 : B.IdMoneda.Value,
|
||
}).ToList();
|
||
|
||
|
||
|
||
|
||
|
||
if (ConfOferta != null && ConfOferta.Count() > 0)
|
||
{
|
||
var CriterioCuotaObreroPatronal = ConfOferta.Where(x => x.IdCriterioSeleccion == 21).FirstOrDefault();
|
||
|
||
if (CriterioCuotaObreroPatronal != null && !string.IsNullOrEmpty(CriterioCuotaObreroPatronal.ValorCriterio) && CriterioCuotaObreroPatronal.ValorCriterio.Trim() != "Al d<>a")
|
||
resp = false;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
logs.Error(ex);
|
||
}
|
||
|
||
return resp;
|
||
|
||
}
|
||
|
||
/// <summary>
|
||
///
|
||
/// </summary>
|
||
/// <param name="model"></param>
|
||
/// <returns></returns>
|
||
public BaseJson InsertaActualizarOfertaSolicitud(Oferta model)
|
||
{
|
||
BaseJson ValorRetorno = new BaseJson();
|
||
|
||
ClienteFacilidadesDal Conn = new ClienteFacilidadesDal();
|
||
List<ClienteFacilidades> FacilidadesCliente = new List<ClienteFacilidades>();
|
||
ClienteFacilidades FacilidadCliente = new ClienteFacilidades();
|
||
|
||
List<OfertaFacilidades> ListaOfertaFacilidades = new List<OfertaFacilidades>();
|
||
List<OfertaOperaciones> ListaOfertaOperaciones = new List<OfertaOperaciones>();
|
||
|
||
try
|
||
{
|
||
ValorRetorno.CodigoRespuesta = TipoCodigoRespuesta.EXITOSO.ToString();
|
||
|
||
model = InsertarActualizarOferta(model);
|
||
|
||
#region OfertaFacilidades
|
||
foreach (OfertaFacilidades Facilidad in model.OfertaFacilidades)
|
||
{
|
||
Facilidad.IdSolicitud = model.IdSolicitud;
|
||
Facilidad.Detalle = Facilidad.Eslinea == true ? model.DetalleLinea : Facilidad.Detalle;
|
||
ListaOfertaFacilidades.Add(InsertarActualizarOfertaFacilidades(Facilidad, true));
|
||
}
|
||
model.OfertaFacilidades = ListaOfertaFacilidades;
|
||
#endregion
|
||
|
||
#region OfertaOperaciones
|
||
foreach (OfertaOperaciones Operacion in model.OfertaOperaciones)
|
||
{
|
||
Operacion.IdSolicitud = model.IdSolicitud;
|
||
ListaOfertaOperaciones.Add(InsertarActualizarOfertaOperaciones(Operacion));
|
||
}
|
||
model.OfertaOperaciones = ListaOfertaOperaciones;
|
||
#endregion
|
||
|
||
if (ValorRetorno.CodigoRespuesta == TipoCodigoRespuesta.EXITOSO.ToString())
|
||
{
|
||
foreach (OfertaFacilidades Facilidad in model.OfertaFacilidades)
|
||
{
|
||
FacilidadCliente = new ClienteFacilidades();
|
||
FacilidadCliente.CopyValueProperties(Facilidad);
|
||
FacilidadCliente.DecFormaPagoPropuesto = Facilidad.FormasPagos != null ? Facilidad.FormasPagos.Descripcion : "";
|
||
FacilidadesCliente.Add(FacilidadCliente);
|
||
}
|
||
|
||
Conn.InsertarActualizar(FacilidadesCliente, model.IdSolicitud);
|
||
}
|
||
|
||
}
|
||
catch (DbEntityValidationException ex1)
|
||
{
|
||
logs.Error(ex1);
|
||
ValorRetorno.CodigoRespuesta = TipoCodigoRespuesta.ERROR.ToString();
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
logs.Error(ex);
|
||
ValorRetorno.CodigoRespuesta = TipoCodigoRespuesta.ERROR.ToString();
|
||
}
|
||
finally
|
||
{
|
||
|
||
}
|
||
return ValorRetorno;
|
||
}
|
||
|
||
private Oferta InsertarActualizarOferta(Oferta model)
|
||
{
|
||
|
||
Moneda modelMoneda = null;
|
||
Ejecutivo modelEjecutivo = null;
|
||
TipoSeleccion modelTipoSeleccion = null;
|
||
TipoCategoria modelTipoCategoria = null;
|
||
ICollection<OfertaFacilidades> ListaOfertaFacilidades = null;
|
||
ICollection<OfertaOperaciones> ListaOfertaOperaciones = null;
|
||
Solicitud ModelSolicitud = null;
|
||
|
||
Oferta ModeloActual = null;
|
||
|
||
try
|
||
{
|
||
using (CreditoContex Contexto = new CreditoContex())
|
||
{
|
||
|
||
ModeloActual = (from t in Contexto.Oferta
|
||
.Include(e => e.TipoSeleccion)
|
||
.Include(e => e.TipoCategoria)
|
||
.Include(e => e.Ejecutivo)
|
||
.Include(e => e.OfertaFacilidades)
|
||
.Where(t => t.IdSolicitud == model.IdSolicitud)
|
||
select t).FirstOrDefault();
|
||
|
||
modelMoneda = model.Moneda;
|
||
modelEjecutivo = model.Ejecutivo;
|
||
modelTipoSeleccion = model.TipoSeleccion;
|
||
modelTipoCategoria = model.TipoCategoria;
|
||
ListaOfertaFacilidades = model.OfertaFacilidades;
|
||
ListaOfertaOperaciones = model.OfertaOperaciones;
|
||
ModelSolicitud = model.Solicitud;
|
||
|
||
model.Moneda = null;
|
||
model.Ejecutivo = null;
|
||
model.TipoSeleccion = null;
|
||
model.TipoCategoria = null;
|
||
model.OfertaFacilidades = null;
|
||
model.OfertaOperaciones = null;
|
||
model.Solicitud = null;
|
||
|
||
if (ModeloActual == null)
|
||
{
|
||
#region Oferta
|
||
model.FechaCreacion = DateTime.Now;
|
||
Contexto.Oferta.Add(model);
|
||
Contexto.SaveChanges();
|
||
|
||
#endregion
|
||
}
|
||
else
|
||
{
|
||
|
||
#region Oferta
|
||
model.FechaModificacion = DateTime.Now;
|
||
model.UsuarioModificado = model.UsuarioCreador;
|
||
model.FechaCreacion = ModeloActual.FechaCreacion;
|
||
model.UsuarioCreador = ModeloActual.UsuarioCreador;
|
||
|
||
Contexto.Entry(ModeloActual).State = System.Data.Entity.EntityState.Detached;
|
||
Contexto.Oferta.Attach(model);
|
||
Contexto.Entry(model).State = System.Data.Entity.EntityState.Modified;
|
||
#endregion
|
||
}
|
||
Contexto.SaveChanges();
|
||
}
|
||
}
|
||
catch (DbEntityValidationException ex1)
|
||
{
|
||
logs.Error(ex1);
|
||
throw ex1;
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
logs.Error(ex);
|
||
throw ex;
|
||
}
|
||
finally
|
||
{
|
||
model.Moneda = modelMoneda;
|
||
model.Ejecutivo = modelEjecutivo;
|
||
model.TipoSeleccion = modelTipoSeleccion;
|
||
model.TipoCategoria = modelTipoCategoria;
|
||
model.OfertaFacilidades = ListaOfertaFacilidades;
|
||
model.OfertaOperaciones = ListaOfertaOperaciones;
|
||
model.Solicitud = ModelSolicitud;
|
||
}
|
||
return model;
|
||
}
|
||
|
||
public OfertaFacilidades InsertarActualizarOfertaFacilidades(OfertaFacilidades model, bool ComisionesGarantias)
|
||
{
|
||
Moneda ItemMoneda = null;
|
||
FormasPagos ItemFormasPagos = null;
|
||
TipoFacilidad ItemTipoFacilidad = null;
|
||
OfertaFacilidades FacilidadActual = null;
|
||
VerificacionFacturasContratosOrdenes ItemVerificacionFacturasContratosOrdenes = null;
|
||
|
||
ICollection<OfertaFacilidadesGarantias> ListaOfertaFacilidadesGarantias = null;
|
||
ICollection<OfertaFacilidadesComisiones> ListaOfertaFacilidadesComisiones = null;
|
||
ICollection<FormalizacionTipoFacilidades> ListaFormalizacionTipoFacilidades = null;
|
||
|
||
OfertaFacilidadesGarantias GarantiaActual = new OfertaFacilidadesGarantias();
|
||
OfertaFacilidadesComisiones ComisionActual = new OfertaFacilidadesComisiones();
|
||
|
||
try
|
||
{
|
||
ItemMoneda = model.Moneda;
|
||
ItemFormasPagos = model.FormasPagos;
|
||
ItemTipoFacilidad = model.TipoFacilidad;
|
||
ItemVerificacionFacturasContratosOrdenes = model.VerificacionFacturasContratosOrdenes;
|
||
|
||
ListaOfertaFacilidadesGarantias = model.OfertaFacilidadesGarantias;
|
||
ListaOfertaFacilidadesComisiones = model.OfertaFacilidadesComisiones;
|
||
ListaFormalizacionTipoFacilidades = model.FormalizacionTipoFacilidades;
|
||
|
||
|
||
|
||
model.Oferta = null;
|
||
model.Moneda = null;
|
||
model.FormasPagos = null;
|
||
model.TipoFacilidad = null;
|
||
model.OfertaFacilidadesGarantias = null;
|
||
model.OfertaFacilidadesComisiones = null;
|
||
model.FormalizacionTipoFacilidades = null;
|
||
model.VerificacionFacturasContratosOrdenes = null;
|
||
|
||
#region OfertaFacilidades
|
||
using (CreditoContex Contexto = new CreditoContex())
|
||
{
|
||
FacilidadActual = Contexto.OfertaFacilidades.Where(e => e.IdSolicitud == model.IdSolicitud && e.IdTipoFacilidad == model.IdTipoFacilidad && e.Secuencia == model.Secuencia).FirstOrDefault();
|
||
|
||
if (null != FacilidadActual)
|
||
{
|
||
model.FechaModificacion = DateTime.Now;
|
||
model.UsuarioModificado = model.UsuarioCreador;
|
||
model.FechaCreacion = FacilidadActual.FechaCreacion;
|
||
model.UsuarioCreador = FacilidadActual.UsuarioCreador;
|
||
|
||
Contexto.Entry(FacilidadActual).State = System.Data.Entity.EntityState.Detached;
|
||
Contexto.OfertaFacilidades.Attach(model);
|
||
Contexto.Entry(model).State = System.Data.Entity.EntityState.Modified;
|
||
}
|
||
else
|
||
{
|
||
model.FechaCreacion = DateTime.Now;
|
||
Contexto.OfertaFacilidades.Add(model);
|
||
}
|
||
|
||
Contexto.SaveChanges();
|
||
}
|
||
#endregion
|
||
|
||
#region Comisiones y Garantias
|
||
|
||
model.OfertaFacilidadesGarantias = ListaOfertaFacilidadesGarantias;
|
||
model.OfertaFacilidadesComisiones = ListaOfertaFacilidadesComisiones;
|
||
|
||
if (ComisionesGarantias == true)
|
||
{
|
||
|
||
using (CreditoContex Contexto = new CreditoContex())
|
||
{
|
||
using (var dbContextTransaction = Contexto.Database.BeginTransaction())
|
||
{
|
||
try
|
||
{
|
||
int? Next_idComision = 0;
|
||
///Recorrer cada comis<69>n por facilidad para guardar o actualizar
|
||
///
|
||
#region comis<EFBFBD>n por facilidad
|
||
OfertaFacilidades DescripcionFacilidad = new OfertaFacilidadesDAL().ObtenerFacilidad(model);
|
||
if (model.OfertaFacilidadesComisiones != null && model.OfertaFacilidadesComisiones.Count > 0)
|
||
{
|
||
|
||
List<OfertaFacilidadesComisiones> listacomisiones = Contexto.OfertaFacilidadesComisiones.Where(x => x.IdSolicitud == model.IdSolicitud && x.IdTipoFacilidad == model.IdTipoFacilidad && x.Secuencia == model.Secuencia).ToList();
|
||
|
||
#region BitacoraComisiones
|
||
foreach (OfertaFacilidadesComisiones comision in listacomisiones)
|
||
{
|
||
BitacoraComisiones BitacoraComisioneseliminar = new BitacoraComisiones();
|
||
BitacoraComisioneseliminar.IdSolicitud = model.IdSolicitud;
|
||
|
||
BitacoraComisioneseliminar.Detalle = string.Format("Contexto.OfertaFacilidadesComisiones.Remove: IdSolicitud: {0} IdTipoFacilidad: {1} Secuencia: {2} IdComision: {3} EsPropuesta: {4} DetalleComision: {5} UsuarioCreador: {6} FechaCreacion: {7} UsuarioModificado: {8} FechaModificacion: {9} Process: {10} Step: {11} Incident: {12}",
|
||
comision.IdSolicitud.ToString(), comision.IdTipoFacilidad.ToString(), comision.Secuencia.ToString(), comision.IdComision.ToString(), comision.EsPropuesta != null ? comision.EsPropuesta.ToString() : " ", comision.DetalleComision, comision.UsuarioCreador, comision.FechaCreacion != null ? comision.FechaCreacion.ToString() : " ",
|
||
comision.UsuarioModificado, comision.FechaModificacion != null ? comision.FechaModificacion.ToString() : " ", comision.Process, comision.Step, comision.FechaModificacion != null ? comision.Incident.ToString() : " ");
|
||
|
||
BitacoraComisioneseliminar.Usuario = !string.IsNullOrEmpty(model.UsuarioModificado) ? model.UsuarioModificado : model.UsuarioCreador;
|
||
BitacoraComisioneseliminar.Fecha = DateTime.Now;
|
||
Contexto.BitacoraComisiones.Add(BitacoraComisioneseliminar);
|
||
}
|
||
#endregion
|
||
|
||
Contexto.OfertaFacilidadesComisiones.RemoveRange(listacomisiones);
|
||
Contexto.SaveChanges();
|
||
|
||
foreach (OfertaFacilidadesComisiones Comision in model.OfertaFacilidadesComisiones)
|
||
{
|
||
Comision.OfertaFacilidades = null;
|
||
|
||
if (Comision.EsPropuesta != null)
|
||
{
|
||
if (Next_idComision == null || Next_idComision == 0)
|
||
Next_idComision = Contexto.OfertaFacilidadesComisiones.Where(x => x.IdSolicitud == model.IdSolicitud && x.IdTipoFacilidad == model.IdTipoFacilidad && x.Secuencia == model.Secuencia).Max(t => (int?)t.IdComision);
|
||
|
||
Next_idComision = (Next_idComision == null) ? 1 : Next_idComision.Value + 1;
|
||
Comision.IdComision = Next_idComision.Value;
|
||
Comision.Secuencia = model.Secuencia;
|
||
Comision.FechaCreacion = DateTime.Now;
|
||
Contexto.OfertaFacilidadesComisiones.Add(Comision);
|
||
|
||
#region BitacoraComisionesinsertar
|
||
BitacoraComisiones BitacoraComisionesinsertar = new BitacoraComisiones();
|
||
BitacoraComisionesinsertar.IdSolicitud = model.IdSolicitud;
|
||
BitacoraComisionesinsertar.Detalle = string.Format("Contexto.OfertaFacilidadesComisiones.Add: IdSolicitud: {0} IdTipoFacilidad: {1} Secuencia: {2} IdComision: {3} EsPropuesta: {4} DetalleComision: {5} UsuarioCreador: {6} FechaCreacion: {7} UsuarioModificado: {8} FechaModificacion: {9} Process: {10} Step: {11} Incident: {12}",
|
||
Comision.IdSolicitud.ToString(), Comision.IdTipoFacilidad.ToString(), Comision.Secuencia.ToString(), Comision.IdComision.ToString(), Comision.EsPropuesta != null ? Comision.EsPropuesta.ToString() : " ", Comision.DetalleComision, Comision.UsuarioCreador, Comision.FechaCreacion != null ? Comision.FechaCreacion.ToString() : " ",
|
||
Comision.UsuarioModificado, Comision.FechaModificacion != null ? Comision.FechaModificacion.ToString() : " ", Comision.Process, Comision.Step, Comision.FechaModificacion != null ? Comision.Incident.ToString() : " ");
|
||
|
||
BitacoraComisionesinsertar.Usuario = !string.IsNullOrEmpty(model.UsuarioModificado) ? model.UsuarioModificado : model.UsuarioCreador;
|
||
BitacoraComisionesinsertar.Fecha = DateTime.Now;
|
||
Contexto.BitacoraComisiones.Add(BitacoraComisionesinsertar);
|
||
#endregion
|
||
}
|
||
else
|
||
{
|
||
if (model.Step == "AP_Enviar_Aprobacion" || model.Step == "AN_Rev_Doc_Clasificar" || model.Step == "AP_Corre_Caratula_Adjuntar_Doc" || model.Step == "AN_Preanalisis" || model.Step == "AP_Vali_CondicionesConCliente")
|
||
{
|
||
|
||
new HistoricoCaratulaDAL().InsertarActualizar(new HistoricoCaratula()
|
||
{
|
||
|
||
Descripcion = string.Format("Oferta Facilidades Comisiones Registro Eliminado TipoFacilidad: {0} Comisi<73>n: {1}: ", DescripcionFacilidad.TipoFacilidad.Descripcion, Comision.DetalleComision),
|
||
Etapa = Comision.Step,
|
||
Fecha = DateTime.Now,
|
||
IdSolicitud = model.IdSolicitud,
|
||
NombreTabla = "[Corporativo].[OfertaFacilidadesComisiones]",
|
||
Usuario = Comision.UsuarioModificado,
|
||
Name = Comision.UsuarioCreador
|
||
|
||
});
|
||
}
|
||
}
|
||
|
||
}
|
||
|
||
}
|
||
#endregion
|
||
|
||
///Recorrer cada Garantias por facilidad para guardar o actualizar
|
||
#region Garantias por facilidad
|
||
int? Next_idGarantia = 0;
|
||
|
||
if (model.OfertaFacilidadesGarantias != null && model.OfertaFacilidadesGarantias.Count > 0)
|
||
{
|
||
List<OfertaFacilidadesGarantias> listagarantias = Contexto.OfertaFacilidadesGarantias.Where(x => x.IdSolicitud == model.IdSolicitud && x.IdTipoFacilidad == model.IdTipoFacilidad && x.Secuencia == model.Secuencia).ToList();
|
||
|
||
#region BitacoraGarantias
|
||
foreach (OfertaFacilidadesGarantias garantias in listagarantias)
|
||
{
|
||
BitacoraGarantias BitacoraGarantiasEliminar = new BitacoraGarantias();
|
||
BitacoraGarantiasEliminar.IdSolicitud = model.IdSolicitud;
|
||
BitacoraGarantiasEliminar.Detalle = string.Format("Contexto.OfertaFacilidadesGarantias.Remove IdSolicitud: {0} IdTipoFacilidad: {1} Secuencia: {2} IdGarantia: {3} EsPropuesta: {4} TipoGarantia: {5} DescTipoGarantia: {6} DetalleGarantia: {7} NumeroGarantiaSAP: {8} UsuarioCreador: {9} FechaCreacion: {10} UsuarioModificado: {11} FechaModificacion: {12} Process: {13} Step: {14} Incident: {15}",
|
||
garantias.IdSolicitud.ToString(), garantias.IdTipoFacilidad.ToString(), garantias.IdTipoFacilidad.ToString(), garantias.IdGarantia.ToString(), garantias.EsPropuesta != null ? garantias.EsPropuesta.ToString() : " ", garantias.TipoGarantia != null ? garantias.TipoGarantia.ToString() : "", garantias.DescTipoGarantia, garantias.DetalleGarantia, garantias.NumeroGarantiaSAP,
|
||
garantias.UsuarioCreador, garantias.FechaCreacion != null ? garantias.FechaCreacion.ToString() : " ", garantias.UsuarioModificado, garantias.FechaModificacion != null ? garantias.FechaModificacion.ToString() : " ", garantias.Process, garantias.Step, garantias.Incident != null ? garantias.Incident.ToString() : " ");
|
||
|
||
BitacoraGarantiasEliminar.Usuario = !string.IsNullOrEmpty(model.UsuarioModificado) ? model.UsuarioModificado : model.UsuarioCreador;
|
||
BitacoraGarantiasEliminar.Fecha = DateTime.Now;
|
||
Contexto.BitacoraGarantias.Add(BitacoraGarantiasEliminar);
|
||
|
||
}
|
||
#endregion
|
||
|
||
Contexto.OfertaFacilidadesGarantias.RemoveRange(listagarantias);
|
||
Contexto.SaveChanges();
|
||
|
||
foreach (OfertaFacilidadesGarantias garantia in model.OfertaFacilidadesGarantias)
|
||
{
|
||
garantia.OfertaFacilidades = null;
|
||
|
||
if (garantia.EsPropuesta != null)
|
||
{
|
||
if (Next_idGarantia == null || Next_idGarantia == 0)
|
||
Next_idGarantia = Contexto.OfertaFacilidadesGarantias.Where(x => x.IdSolicitud == model.IdSolicitud && x.IdTipoFacilidad == model.IdTipoFacilidad && x.Secuencia == model.Secuencia).Max(t => (int?)t.IdGarantia);
|
||
|
||
Next_idGarantia = (Next_idGarantia == null) ? 1 : Next_idGarantia.Value + 1;
|
||
garantia.IdGarantia = Next_idGarantia.Value;
|
||
garantia.Secuencia = model.Secuencia;
|
||
garantia.FechaCreacion = DateTime.Now;
|
||
Contexto.OfertaFacilidadesGarantias.Add(garantia);
|
||
|
||
BitacoraGarantias BitacoraGarantiasGuardar = new BitacoraGarantias();
|
||
BitacoraGarantiasGuardar.IdSolicitud = model.IdSolicitud;
|
||
BitacoraGarantiasGuardar.Detalle = string.Format("Contexto.OfertaFacilidadesGarantias.add IdSolicitud: {0} IdTipoFacilidad: {1} Secuencia: {2} IdGarantia: {3} EsPropuesta: {4} TipoGarantia: {5} DescTipoGarantia: {6} DetalleGarantia: {7} NumeroGarantiaSAP: {8} UsuarioCreador: {9} FechaCreacion: {10} UsuarioModificado: {11} FechaModificacion: {12} Process: {13} Step: {14} Incident: {15}",
|
||
garantia.IdSolicitud.ToString(), garantia.IdTipoFacilidad.ToString(), garantia.IdTipoFacilidad.ToString(), garantia.IdGarantia.ToString(), garantia.EsPropuesta != null ? garantia.EsPropuesta.ToString() : " ", garantia.TipoGarantia != null ? garantia.TipoGarantia.ToString() : "", garantia.DescTipoGarantia, garantia.DetalleGarantia, garantia.NumeroGarantiaSAP,
|
||
garantia.UsuarioCreador, garantia.FechaCreacion != null ? garantia.FechaCreacion.ToString() : " ", garantia.UsuarioModificado, garantia.FechaModificacion != null ? garantia.FechaModificacion.ToString() : " ", garantia.Process, garantia.Step, garantia.Incident != null ? garantia.Incident.ToString() : " ");
|
||
|
||
BitacoraGarantiasGuardar.Usuario = !string.IsNullOrEmpty(model.UsuarioModificado) ? model.UsuarioModificado : model.UsuarioCreador;
|
||
BitacoraGarantiasGuardar.Fecha = DateTime.Now;
|
||
Contexto.BitacoraGarantias.Add(BitacoraGarantiasGuardar);
|
||
}
|
||
else
|
||
{
|
||
if (model.Step == "AP_Enviar_Aprobacion" || model.Step == "AN_Rev_Doc_Clasificar" || model.Step == "AP_Corre_Caratula_Adjuntar_Doc" || model.Step == "AN_Preanalisis" || model.Step == "AP_Vali_CondicionesConCliente")
|
||
{
|
||
|
||
new HistoricoCaratulaDAL().InsertarActualizar(new HistoricoCaratula()
|
||
{
|
||
|
||
Descripcion = string.Format("Oferta Facilidades Garantias Registro Eliminado TipoFacilidad: {0} Comisi<73>n: {1}: ", DescripcionFacilidad.TipoFacilidad.Descripcion, garantia.DetalleGarantia),
|
||
Etapa = garantia.Step,
|
||
Fecha = DateTime.Now,
|
||
IdSolicitud = model.IdSolicitud,
|
||
NombreTabla = "[Corporativo].[OfertaFacilidadesGarantias]",
|
||
Usuario = garantia.UsuarioModificado,
|
||
Name = garantia.UsuarioCreador
|
||
|
||
});
|
||
}
|
||
}
|
||
}
|
||
|
||
}
|
||
#endregion
|
||
|
||
|
||
Contexto.SaveChanges();
|
||
dbContextTransaction.Commit();
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
dbContextTransaction.Rollback();
|
||
logs.Error(ex);
|
||
}
|
||
}
|
||
|
||
}
|
||
}
|
||
|
||
#endregion
|
||
|
||
}
|
||
catch (DbEntityValidationException ex1)
|
||
{
|
||
logs.Error(ex1);
|
||
throw ex1;
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
logs.Error(ex);
|
||
throw ex;
|
||
}
|
||
finally
|
||
{
|
||
model.Moneda = ItemMoneda;
|
||
model.FormasPagos = ItemFormasPagos;
|
||
model.TipoFacilidad = ItemTipoFacilidad;
|
||
model.VerificacionFacturasContratosOrdenes = ItemVerificacionFacturasContratosOrdenes;
|
||
model.FormalizacionTipoFacilidades = ListaFormalizacionTipoFacilidades;
|
||
}
|
||
return model;
|
||
}
|
||
|
||
private OfertaOperaciones InsertarActualizarOfertaOperaciones(OfertaOperaciones model)
|
||
{
|
||
|
||
Moneda ItemMoneda = null;
|
||
FormasPagos ItemFormasPagos = null;
|
||
OfertaOperaciones OperaciondActual = null;
|
||
|
||
ICollection<OfertaOperacionesGarantias> ListaOfertaOperacionesGarantias = null;
|
||
ICollection<OfertaOperacionesComisiones> ListaOfertaOperacionesComisiones = null;
|
||
|
||
OfertaOperacionesGarantias OpercionGarantiaActual = new OfertaOperacionesGarantias();
|
||
OfertaOperacionesComisiones OpercionComisionActual = new OfertaOperacionesComisiones();
|
||
|
||
|
||
try
|
||
{
|
||
ItemMoneda = model.Moneda;
|
||
ItemFormasPagos = model.FormasPagos;
|
||
|
||
ListaOfertaOperacionesGarantias = model.OfertaOperacionesGarantias;
|
||
ListaOfertaOperacionesComisiones = model.OfertaOperacionesComisiones;
|
||
|
||
model.Oferta = null;
|
||
model.Moneda = null;
|
||
model.FormasPagos = null;
|
||
model.OfertaOperacionesGarantias = null;
|
||
model.OfertaOperacionesComisiones = null;
|
||
|
||
#region OfertaOperaciones
|
||
|
||
using (CreditoContex Contexto = new CreditoContex())
|
||
{
|
||
OperaciondActual = Contexto.OfertaOperaciones.Where(e => e.IdSolicitud == model.IdSolicitud && e.Operacion == model.Operacion).FirstOrDefault();
|
||
if (null != OperaciondActual)
|
||
{
|
||
model.FechaModificacion = DateTime.Now;
|
||
model.UsuarioModificado = model.UsuarioCreador;
|
||
model.FechaCreacion = OperaciondActual.FechaCreacion;
|
||
model.UsuarioCreador = OperaciondActual.UsuarioCreador;
|
||
|
||
Contexto.Entry(OperaciondActual).State = System.Data.Entity.EntityState.Detached;
|
||
Contexto.OfertaOperaciones.Attach(model);
|
||
Contexto.Entry(model).State = System.Data.Entity.EntityState.Modified;
|
||
}
|
||
else
|
||
{
|
||
model.FechaCreacion = DateTime.Now;
|
||
Contexto.OfertaOperaciones.Add(model);
|
||
}
|
||
|
||
Contexto.SaveChanges();
|
||
}
|
||
#endregion
|
||
|
||
|
||
#region Comisiones y Garantias
|
||
|
||
model.OfertaOperacionesGarantias = ListaOfertaOperacionesGarantias;
|
||
model.OfertaOperacionesComisiones = ListaOfertaOperacionesComisiones;
|
||
|
||
|
||
using (CreditoContex Contexto = new CreditoContex())
|
||
{
|
||
using (var dbContextTransaction = Contexto.Database.BeginTransaction())
|
||
{
|
||
try
|
||
{
|
||
#region comis<EFBFBD>n por Operacion
|
||
///Recorrer cada comis<69>n por operaci<63>n para guardar o actualizar
|
||
///
|
||
if (model.OfertaOperacionesComisiones != null && model.OfertaOperacionesComisiones.Count > 0)
|
||
{
|
||
List<OfertaOperacionesComisiones> listacomisiones = Contexto.OfertaOperacionesComisiones.Where(x => x.IdSolicitud == model.IdSolicitud && x.Operacion == model.Operacion).ToList();
|
||
|
||
#region BitacoraComisiones
|
||
foreach (OfertaOperacionesComisiones comision in listacomisiones)
|
||
{
|
||
BitacoraComisiones BitacoraComisioneseliminar = new BitacoraComisiones();
|
||
BitacoraComisioneseliminar.IdSolicitud = model.IdSolicitud;
|
||
BitacoraComisioneseliminar.Detalle = string.Format("Contexto.OfertaOperacionesComisiones.Remove: Operacion: {0} IdComision: {1} EsPropuesta: {2} DetalleComision: {3} UsuarioCreador: {4} FechaCreacion: {5} UsuarioModificado: {6} FechaModificacion: {7}",
|
||
comision.Operacion,
|
||
comision.IdComision.ToString(),
|
||
comision.EsPropuesta != null ? comision.EsPropuesta.ToString() : " ",
|
||
comision.DetalleComision,
|
||
comision.UsuarioCreador,
|
||
comision.FechaCreacion != null ? comision.FechaCreacion.ToString() : " ",
|
||
comision.UsuarioModificado,
|
||
comision.FechaModificacion != null ? comision.FechaModificacion.ToString() : " ");
|
||
|
||
BitacoraComisioneseliminar.Usuario = !string.IsNullOrEmpty(model.UsuarioModificado) ? model.UsuarioModificado : model.UsuarioCreador;
|
||
BitacoraComisioneseliminar.Fecha = DateTime.Now;
|
||
Contexto.BitacoraComisiones.Add(BitacoraComisioneseliminar);
|
||
}
|
||
#endregion
|
||
|
||
Contexto.OfertaOperacionesComisiones.RemoveRange(listacomisiones);
|
||
Contexto.SaveChanges();
|
||
|
||
int? Next_idComision = 0;
|
||
|
||
|
||
|
||
foreach (OfertaOperacionesComisiones ComisionOperacion in model.OfertaOperacionesComisiones)
|
||
{
|
||
ComisionOperacion.OfertaOperaciones = null;
|
||
if (ComisionOperacion.EsPropuesta != null)
|
||
{
|
||
if (Next_idComision == null || Next_idComision == 0)
|
||
Next_idComision = Contexto.OfertaOperacionesComisiones.Where(x => x.IdSolicitud == model.IdSolicitud && x.Operacion == model.Operacion).Max(t => (int?)t.IdComision);
|
||
|
||
Next_idComision = (Next_idComision == null) ? 1 : Next_idComision.Value + 1;
|
||
ComisionOperacion.IdComision = Next_idComision.Value;
|
||
ComisionOperacion.FechaCreacion = DateTime.Now;
|
||
Contexto.OfertaOperacionesComisiones.Add(ComisionOperacion);
|
||
|
||
#region BitacoraComisionesinsertar
|
||
BitacoraComisiones BitacoraComisionesinsertar = new BitacoraComisiones();
|
||
BitacoraComisionesinsertar.IdSolicitud = model.IdSolicitud;
|
||
|
||
BitacoraComisionesinsertar.Detalle = string.Format("Contexto.OfertaOperacionesComisiones.Add: Operacion: {0} IdComision: {1} EsPropuesta: {2} DetalleComision: {3} UsuarioCreador: {4} FechaCreacion: {5} UsuarioModificado: {6} FechaModificacion: {7}",
|
||
ComisionOperacion.Operacion,
|
||
ComisionOperacion.IdComision.ToString(),
|
||
ComisionOperacion.EsPropuesta != null ? ComisionOperacion.EsPropuesta.ToString() : "",
|
||
ComisionOperacion.DetalleComision, ComisionOperacion.UsuarioCreador,
|
||
ComisionOperacion.FechaCreacion != null ? ComisionOperacion.FechaCreacion.ToString() : "",
|
||
ComisionOperacion.UsuarioModificado,
|
||
ComisionOperacion.FechaModificacion != null ? ComisionOperacion.FechaModificacion.ToString() : "");
|
||
|
||
BitacoraComisionesinsertar.Usuario = !string.IsNullOrEmpty(model.UsuarioModificado) ? model.UsuarioModificado : model.UsuarioCreador;
|
||
BitacoraComisionesinsertar.Fecha = DateTime.Now;
|
||
Contexto.BitacoraComisiones.Add(BitacoraComisionesinsertar);
|
||
#endregion
|
||
}
|
||
else
|
||
{
|
||
if (model.Step == "AP_Enviar_Aprobacion" || model.Step == "AN_Rev_Doc_Clasificar" || model.Step == "AP_Corre_Caratula_Adjuntar_Doc" || model.Step == "AN_Preanalisis" || model.Step == "AP_Vali_CondicionesConCliente")
|
||
{
|
||
|
||
new HistoricoCaratulaDAL().InsertarActualizar(new HistoricoCaratula()
|
||
{
|
||
|
||
Descripcion = string.Format("Operaciones Facilidades Comisiones Registro Eliminado Operacion: {0} Comisi<73>n: {1}: ", ComisionOperacion.Operacion, ComisionOperacion.DetalleComision),
|
||
Etapa = model.Step,
|
||
Fecha = DateTime.Now,
|
||
IdSolicitud = model.IdSolicitud,
|
||
NombreTabla = "[Corporativo].[OfertaOperacionesComisiones]",
|
||
Usuario = ComisionOperacion.UsuarioModificado,
|
||
Name = ComisionOperacion.UsuarioCreador
|
||
|
||
});
|
||
}
|
||
}
|
||
}
|
||
}
|
||
#endregion
|
||
|
||
#region Garantias por Operacion
|
||
///Recorrer cada Garantias por operacion para guardar o actualizar
|
||
///
|
||
|
||
if (model.OfertaOperacionesGarantias != null && model.OfertaOperacionesGarantias.Count > 0)
|
||
{
|
||
int? Next_idGarantia = 0;
|
||
List<OfertaOperacionesGarantias> listagarantias = Contexto.OfertaOperacionesGarantias.Where(x => x.IdSolicitud == model.IdSolicitud && x.Operacion == model.Operacion).ToList();
|
||
|
||
#region BitacoraGarantias
|
||
foreach (OfertaOperacionesGarantias garantias in listagarantias)
|
||
{
|
||
BitacoraGarantias BitacoraGarantiasEliminar = new BitacoraGarantias();
|
||
BitacoraGarantiasEliminar.IdSolicitud = model.IdSolicitud;
|
||
BitacoraGarantiasEliminar.Detalle = string.Format("Contexto.OfertaOperacionesGarantias.Remove Operacion: {0} IdGarantia: {1} EsPropuesta: {2} TipoGarantia: {3} DescTipoGarantia: {4} DetalleGarantia: {5} UsuarioCreador: {6} FechaCreacion: {7} UsuarioModificado: {8} FechaModificacion: {9}",
|
||
garantias.Operacion.ToString(),
|
||
garantias.IdGarantia.ToString(),
|
||
garantias.EsPropuesta != null ? garantias.EsPropuesta.ToString() : " ",
|
||
garantias.TipoGarantia != null ? garantias.TipoGarantia.ToString() : "",
|
||
garantias.DescTipoGarantia,
|
||
garantias.DetalleGarantia,
|
||
garantias.UsuarioCreador,
|
||
garantias.FechaCreacion != null ? garantias.FechaCreacion.ToString() : " ",
|
||
garantias.UsuarioModificado,
|
||
garantias.FechaModificacion != null ? garantias.FechaModificacion.ToString() : " ");
|
||
|
||
BitacoraGarantiasEliminar.Usuario = !string.IsNullOrEmpty(model.UsuarioModificado) ? model.UsuarioModificado : model.UsuarioCreador;
|
||
BitacoraGarantiasEliminar.Fecha = DateTime.Now;
|
||
Contexto.BitacoraGarantias.Add(BitacoraGarantiasEliminar);
|
||
|
||
}
|
||
#endregion
|
||
|
||
Contexto.OfertaOperacionesGarantias.RemoveRange(listagarantias);
|
||
Contexto.SaveChanges();
|
||
|
||
|
||
foreach (OfertaOperacionesGarantias Operaciongarantia in model.OfertaOperacionesGarantias)
|
||
{
|
||
Operaciongarantia.OfertaOperaciones = null;
|
||
|
||
|
||
if (Operaciongarantia.EsPropuesta != null && Operaciongarantia.TipoGarantia != null && !string.IsNullOrEmpty(Operaciongarantia.DescTipoGarantia) && !string.IsNullOrEmpty(Operaciongarantia.DetalleGarantia))
|
||
{
|
||
if (Next_idGarantia == null || Next_idGarantia == 0)
|
||
Next_idGarantia = Contexto.OfertaOperacionesGarantias.Where(x => x.IdSolicitud == model.IdSolicitud && x.Operacion == model.Operacion).Max(t => (int?)t.IdGarantia);
|
||
|
||
Next_idGarantia = (Next_idGarantia == null) ? 1 : Next_idGarantia.Value + 1;
|
||
Operaciongarantia.IdGarantia = Next_idGarantia.Value;
|
||
Operaciongarantia.FechaCreacion = DateTime.Now;
|
||
Contexto.OfertaOperacionesGarantias.Add(Operaciongarantia);
|
||
|
||
BitacoraGarantias BitacoraGarantiasGuardar = new BitacoraGarantias();
|
||
BitacoraGarantiasGuardar.IdSolicitud = model.IdSolicitud;
|
||
|
||
BitacoraGarantiasGuardar.Detalle = string.Format("Contexto.OfertaOperacionesGarantias.Add Operacion: {0} IdGarantia: {1} EsPropuesta: {2} TipoGarantia: {3} DescTipoGarantia: {4} DetalleGarantia: {5} UsuarioCreador: {6} FechaCreacion: {7} UsuarioModificado: {8} FechaModificacion: {9}",
|
||
Operaciongarantia.Operacion.ToString(),
|
||
Operaciongarantia.IdGarantia.ToString(),
|
||
Operaciongarantia.EsPropuesta != null ? Operaciongarantia.EsPropuesta.ToString() : " ",
|
||
Operaciongarantia.TipoGarantia != null ? Operaciongarantia.TipoGarantia.ToString() : "",
|
||
Operaciongarantia.DescTipoGarantia,
|
||
Operaciongarantia.DetalleGarantia,
|
||
Operaciongarantia.UsuarioCreador,
|
||
Operaciongarantia.FechaCreacion != null ? Operaciongarantia.FechaCreacion.ToString() : " ",
|
||
Operaciongarantia.UsuarioModificado,
|
||
Operaciongarantia.FechaModificacion != null ? Operaciongarantia.FechaModificacion.ToString() : " ");
|
||
|
||
BitacoraGarantiasGuardar.Usuario = !string.IsNullOrEmpty(model.UsuarioModificado) ? model.UsuarioModificado : model.UsuarioCreador;
|
||
BitacoraGarantiasGuardar.Fecha = DateTime.Now;
|
||
Contexto.BitacoraGarantias.Add(BitacoraGarantiasGuardar);
|
||
}
|
||
else if (Operaciongarantia.EsPropuesta == null && Operaciongarantia.TipoGarantia != null && !string.IsNullOrEmpty(Operaciongarantia.DescTipoGarantia) && !string.IsNullOrEmpty(Operaciongarantia.DetalleGarantia))
|
||
{
|
||
if (model.Step == "AP_Enviar_Aprobacion" || model.Step == "AN_Rev_Doc_Clasificar" || model.Step == "AP_Corre_Caratula_Adjuntar_Doc" || model.Step == "AN_Preanalisis" || model.Step == "AP_Vali_CondicionesConCliente")
|
||
{
|
||
|
||
new HistoricoCaratulaDAL().InsertarActualizar(new HistoricoCaratula()
|
||
{
|
||
|
||
Descripcion = string.Format("Operaciones Facilidades Garantias Registro Eliminado Operacion: {0} Comisi<73>n: {1}: ", Operaciongarantia.Operacion, Operaciongarantia.DetalleGarantia),
|
||
Etapa = model.Step,
|
||
Fecha = DateTime.Now,
|
||
IdSolicitud = model.IdSolicitud,
|
||
NombreTabla = "[Corporativo].[OfertaOperacionesGarantias]",
|
||
Usuario = Operaciongarantia.UsuarioModificado,
|
||
Name = Operaciongarantia.UsuarioCreador
|
||
|
||
});
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
#endregion
|
||
|
||
Contexto.SaveChanges();
|
||
dbContextTransaction.Commit();
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
dbContextTransaction.Rollback();
|
||
logs.Error(ex);
|
||
}
|
||
}
|
||
}
|
||
|
||
#endregion
|
||
|
||
}
|
||
catch (DbEntityValidationException ex1)
|
||
{
|
||
logs.Error(ex1);
|
||
throw ex1;
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
logs.Error(ex);
|
||
throw ex;
|
||
}
|
||
finally
|
||
{
|
||
model.Moneda = ItemMoneda;
|
||
model.FormasPagos = ItemFormasPagos;
|
||
}
|
||
return model;
|
||
}
|
||
|
||
public BaseJson InsertaActualizarOfertaSolicitud(int IdSolicitud, int IdCategoria)
|
||
{
|
||
BaseJson respuesta = new BaseJson();
|
||
Oferta oferta = new Oferta();
|
||
try
|
||
{
|
||
using (CreditoContex db = new CreditoContex())
|
||
{
|
||
oferta = db.Oferta.Where(x => x.IdSolicitud == IdSolicitud).FirstOrDefault();
|
||
if (oferta == null)
|
||
{
|
||
oferta = new Oferta
|
||
{
|
||
IdSolicitud = IdSolicitud,
|
||
IdTipoCategoria = IdCategoria
|
||
};
|
||
db.Oferta.Add(oferta);
|
||
db.SaveChanges();
|
||
respuesta.CodigoRespuesta = TipoCodigoRespuesta.ERROR.ToString();
|
||
}
|
||
}
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
logs.Error(ex);
|
||
respuesta.CodigoRespuesta = TipoCodigoRespuesta.ERROR.ToString();
|
||
throw ex;
|
||
}
|
||
return respuesta;
|
||
}
|
||
|
||
/// <summary>
|
||
///
|
||
/// </summary>
|
||
/// <param name="model"></param>
|
||
/// <returns></returns>
|
||
public BaseJson EliminarFacilidadesOfertaSolicitud(Oferta model)
|
||
{
|
||
OfertaFacilidades FacilidadActual = new OfertaFacilidades();
|
||
OfertaOperaciones OperaciondActual = new OfertaOperaciones();
|
||
BaseJson ValorRetorno = new BaseJson();
|
||
|
||
try
|
||
{
|
||
ValorRetorno.CodigoRespuesta = TipoCodigoRespuesta.EXITOSO.ToString();
|
||
|
||
using (CreditoContex Contexto = new CreditoContex())
|
||
{
|
||
|
||
foreach (OfertaFacilidades Facilidad in model.OfertaFacilidades)
|
||
{
|
||
OfertaFacilidades DescripcionFacilidad = new OfertaFacilidadesDAL().ObtenerFacilidad(Facilidad);
|
||
FacilidadActual = Contexto.OfertaFacilidades
|
||
.Where(q => q.IdSolicitud == Facilidad.IdSolicitud && q.IdTipoFacilidad == Facilidad.IdTipoFacilidad && q.Secuencia == Facilidad.Secuencia)
|
||
.Include(w => w.OfertaFacilidadesComisiones)
|
||
.Include(w => w.OfertaFacilidadesGarantias)
|
||
.Include(w => w.VerificacionFacturasContratosOrdenes)
|
||
.Include(w => w.VerificacionFacturasContratosOrdenes.Contacto)
|
||
.Include(w => w.VerificacionFacturasContratosOrdenes.FacturasContratosOrdenes)
|
||
.Include(w => w.FormalizacionTipoFacilidades)
|
||
.FirstOrDefault();
|
||
|
||
if (FacilidadActual != null)
|
||
{
|
||
Contexto.OfertaFacilidades.Remove(FacilidadActual);
|
||
|
||
if (model.Step == "AP_Enviar_Aprobacion" || model.Step == "AN_Rev_Doc_Clasificar" || model.Step == "AP_Corre_Caratula_Adjuntar_Doc" || model.Step == "AN_Preanalisis" || model.Step == "AP_Vali_CondicionesConCliente")
|
||
{
|
||
new HistoricoCaratulaDAL().InsertarActualizar(new HistoricoCaratula()
|
||
{
|
||
|
||
Descripcion = string.Format("Oferta Facilidades Registro Eliminado TipoFacilidad: {0}", DescripcionFacilidad.TipoFacilidad.Descripcion),
|
||
Etapa = model.Step,
|
||
Fecha = DateTime.Now,
|
||
IdSolicitud = model.IdSolicitud,
|
||
NombreTabla = "[Corporativo].[OfertaFacilidades]",
|
||
Usuario = model.UsuarioModificado,
|
||
Name = model.UsuarioCreador
|
||
|
||
});
|
||
}
|
||
|
||
}
|
||
}
|
||
|
||
|
||
|
||
|
||
foreach (OfertaOperaciones Operacion in model.OfertaOperaciones)
|
||
{
|
||
OperaciondActual = Contexto.OfertaOperaciones
|
||
.Where(e => e.IdSolicitud == Operacion.IdSolicitud && e.Operacion == Operacion.Operacion)
|
||
.Include(w => w.OfertaOperacionesComisiones)
|
||
.Include(w => w.OfertaOperacionesGarantias)
|
||
.FirstOrDefault();
|
||
if (OperaciondActual != null)
|
||
{
|
||
Contexto.OfertaOperaciones.Remove(OperaciondActual);
|
||
if (model.Step == "AP_Enviar_Aprobacion" || model.Step == "AN_Rev_Doc_Clasificar" || model.Step == "AP_Corre_Caratula_Adjuntar_Doc" || model.Step == "AN_Preanalisis" || model.Step == "AP_Vali_CondicionesConCliente")
|
||
{
|
||
new HistoricoCaratulaDAL().InsertarActualizar(new HistoricoCaratula()
|
||
{
|
||
Descripcion = string.Format("Registro Eliminado Numero de operaci<63>n : {0}", Operacion.Operacion),
|
||
Etapa = model.Step,
|
||
Fecha = DateTime.Now,
|
||
IdSolicitud = model.IdSolicitud,
|
||
NombreTabla = "[Corporativo].[OfertaOperaciones]",
|
||
Usuario = model.UsuarioModificado,
|
||
Name = model.UsuarioCreador
|
||
});
|
||
}
|
||
|
||
}
|
||
|
||
}
|
||
|
||
Contexto.SaveChanges();
|
||
}
|
||
}
|
||
catch (DbEntityValidationException ex1)
|
||
{
|
||
logs.Error(ex1);
|
||
ValorRetorno.CodigoRespuesta = TipoCodigoRespuesta.ERROR.ToString();
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
logs.Error(ex);
|
||
ValorRetorno.CodigoRespuesta = TipoCodigoRespuesta.ERROR.ToString();
|
||
}
|
||
finally
|
||
{
|
||
FacilidadActual = null;
|
||
OperaciondActual = null;
|
||
}
|
||
|
||
return ValorRetorno;
|
||
}
|
||
|
||
/// <summary>
|
||
///
|
||
/// </summary>
|
||
/// <param name="IdSolicitud"></param>
|
||
/// <returns></returns>
|
||
private TipoSeleccion EvaluarTipoOferta(int IdSolicitud)
|
||
{
|
||
TipoSeleccion TipoOferta = null;
|
||
|
||
try
|
||
{
|
||
using (CreditoContex Contexto = new CreditoContex())
|
||
{
|
||
#region Evaluacion si hay m<EFBFBD>s de 2 Criterios de Seleccion de Tipo FMO
|
||
var ListadoCantidad = (from LineaCriterio in Contexto.HojaSeleccion
|
||
where LineaCriterio.IdSolicitud == IdSolicitud
|
||
group LineaCriterio by LineaCriterio.IdTipoSeleccion into grupo
|
||
select new
|
||
{
|
||
IdTipoSeleccion = grupo.Key,
|
||
Cantidad = grupo.Count()
|
||
});
|
||
|
||
if ((ListadoCantidad != null) && (ListadoCantidad.Count() > 0) && (ListadoCantidad.Where(x => x.IdTipoSeleccion == EnumTipoSeleccion.FMO).Any()) && (ListadoCantidad.Where(x => x.IdTipoSeleccion == EnumTipoSeleccion.FMO).Select(x => x.Cantidad).FirstOrDefault() > 2))
|
||
{
|
||
TipoOferta = Contexto.TipoSeleccion.Where(x => x.IdTipoSeleccion == EnumTipoSeleccion.FMO).FirstOrDefault();
|
||
}
|
||
#endregion
|
||
|
||
#region Evaluacion si el criterio de CIC es igual a 2 o 3
|
||
List<HojaSeleccion> ListaHojaSeleccion = new HojaSeleccionDAL().ObtenerValorCriteriosSolicitud(new HojaSeleccion() { IdSolicitud = IdSolicitud });
|
||
|
||
HojaSeleccion modelCriterioCIC = ListaHojaSeleccion.Where(x => x.IdCriterioSeleccion == EnumCriterioSeleccion.Nivel_CIC_Deudor).FirstOrDefault();
|
||
|
||
int nNivelCICDeudor = 0;
|
||
if (!string.IsNullOrEmpty(modelCriterioCIC.ValorCriterio))
|
||
int.TryParse(modelCriterioCIC.ValorCriterio, out nNivelCICDeudor);
|
||
|
||
if (nNivelCICDeudor.In(2, 3))
|
||
{
|
||
TipoOferta = Contexto.TipoSeleccion.Where(x => x.IdTipoSeleccion == EnumTipoSeleccion.FMO).FirstOrDefault();
|
||
}
|
||
|
||
#endregion
|
||
|
||
|
||
if (TipoOferta == null)
|
||
{
|
||
|
||
var Listado = (from LineaCriterio in Contexto.HojaSeleccion
|
||
where LineaCriterio.IdSolicitud == IdSolicitud
|
||
group LineaCriterio by LineaCriterio.IdTipoSeleccion into grupo
|
||
select new
|
||
{
|
||
IdTipoSeleccion = grupo.Key,
|
||
Cantidad = grupo.Sum(e => e.Peso)
|
||
});
|
||
|
||
|
||
|
||
if (Listado != null)
|
||
{
|
||
List<int> ll = (from j in Listado
|
||
where j.Cantidad == Listado.Max(r => r.Cantidad)
|
||
select new { j.IdTipoSeleccion }).Select(p => p.IdTipoSeleccion.Value).ToList();
|
||
|
||
TipoOferta = (from a in Contexto.TipoSeleccion
|
||
where ll.Contains(a.IdTipoSeleccion)
|
||
select a
|
||
).OrderByDescending(q => q.Orden).FirstOrDefault();
|
||
}
|
||
else
|
||
TipoOferta = null;
|
||
|
||
}
|
||
|
||
|
||
|
||
|
||
|
||
}
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
logs.Error(ex);
|
||
}
|
||
finally
|
||
{
|
||
|
||
}
|
||
return TipoOferta;
|
||
}
|
||
|
||
public BaseJson CopiarOfertaCaratulaCreditoParaDesembolso(Oferta model)
|
||
{
|
||
DesembolsoDatosGenerales Desembolso = new DesembolsoDatosGenerales();
|
||
CaratulaCredito CaratulaActual = new CaratulaCredito();
|
||
CaratulaCredito NuevaCaratula = new CaratulaCredito();
|
||
Oferta OfertaActual = new Oferta();
|
||
Oferta NuevaOferta = new Oferta();
|
||
OfertaFacilidades FacilidadActual = new OfertaFacilidades();
|
||
OfertaFacilidades NuevaFacilidad = new OfertaFacilidades();
|
||
BaseJson ValorRetorno = new BaseJson();
|
||
|
||
try
|
||
{
|
||
ValorRetorno.CodigoRespuesta = TipoCodigoRespuesta.EXITOSO.ToString();
|
||
using (CreditoContex Conn = new CreditoContex())
|
||
{
|
||
Desembolso = Conn.DesembolsoDatosGenerales.Where(q => q.IdSolicitud == model.IdSolicitud).FirstOrDefault();
|
||
if (Desembolso != null)
|
||
{
|
||
CaratulaActual = Conn.CaratulaCredito
|
||
.Include(e => e.CaratulaCreditoCondicionesEspeciales)
|
||
.Include(e => e.CaratulaCreditoExcepcionesPolitica)
|
||
.Where(e => e.CodigoCaratula == Desembolso.NroCaratulaSublimite && e.Process == "Credito").FirstOrDefault();
|
||
if (CaratulaActual != null)
|
||
{
|
||
////
|
||
OfertaActual = (from ofer in Conn.Oferta
|
||
join fac in Conn.OfertaFacilidades on ofer.IdSolicitud equals fac.IdSolicitud
|
||
where ofer.IdSolicitud == CaratulaActual.IdSolicitud && fac.IdTipoFacilidad == Desembolso.IdTipoFacilidad && fac.Eslinea == true
|
||
select ofer).FirstOrDefault();
|
||
|
||
if (OfertaActual != null)
|
||
{
|
||
Conn.Entry(OfertaActual).State = System.Data.Entity.EntityState.Detached;
|
||
|
||
|
||
|
||
|
||
NuevaOferta = OfertaActual.UpdateProperties(w => { w.IdSolicitud = model.IdSolicitud;
|
||
w.Process = model.Process;
|
||
w.UsuarioCreador = model.UsuarioCreador;
|
||
w.Step = model.Step;
|
||
w.Incident = model.Incident;
|
||
w.UsuarioCreador = model.UsuarioCreador;
|
||
w.Step = model.Step;
|
||
w.Incident = model.Incident;
|
||
w.FechaVencimientoActualLinea = w.FechaVencimientoLinea;
|
||
w.MontoActualEspecifico = w.MontoPropuestoEspecifico;
|
||
w.MontoActualLinea = w.MontoPropuestoLinea;
|
||
w.PlazoActualLinea = w.PlazoLinea;
|
||
return w;
|
||
});
|
||
|
||
FacilidadActual = Conn.OfertaFacilidades
|
||
.Include(e => e.OfertaFacilidadesComisiones)
|
||
.Include(e => e.OfertaFacilidadesGarantias)
|
||
.Include(e => e.FormasPagos)
|
||
.Where(fac => fac.IdSolicitud == CaratulaActual.IdSolicitud
|
||
&& fac.IdTipoFacilidad == Desembolso.IdTipoFacilidad
|
||
&& fac.Eslinea == true).FirstOrDefault();
|
||
|
||
NuevaFacilidad.IdSolicitud = model.IdSolicitud;
|
||
|
||
NuevaFacilidad.OfertaFacilidadesComisiones = new HashSet<OfertaFacilidadesComisiones>();
|
||
int maxIdComision = FacilidadActual.OfertaFacilidadesComisiones.Where(x => x.EsPropuesta == true).Max(x => x.IdComision);
|
||
foreach (OfertaFacilidadesComisiones Comision in FacilidadActual.OfertaFacilidadesComisiones.Where(x=> x.EsPropuesta==true).ToList())
|
||
{
|
||
maxIdComision++;
|
||
Conn.Entry(Comision).State = System.Data.Entity.EntityState.Detached;
|
||
|
||
//Actual
|
||
//NuevaFacilidad.OfertaFacilidadesComisiones.Add(Comision.UpdateProperties(w => { w.IdSolicitud = model.IdSolicitud; w.Process = model.Process; w.UsuarioCreador = model.UsuarioCreador; w.Step = model.Step; w.Incident = model.Incident; w.EsPropuesta = false; return w; }));
|
||
NuevaFacilidad.OfertaFacilidadesComisiones.Add(new OfertaFacilidadesComisiones()
|
||
{
|
||
DetalleComision = Comision.DetalleComision,
|
||
EsPropuesta = false,
|
||
FechaCreacion = Comision.FechaCreacion,
|
||
Secuencia = Comision.Secuencia,
|
||
IdComision = Comision.IdComision,
|
||
FechaModificacion = null,
|
||
IdTipoFacilidad = Comision.IdTipoFacilidad,
|
||
IdSolicitud = model.IdSolicitud,
|
||
Incident = model.Incident,
|
||
Process = model.Process,
|
||
Step = model.Step,
|
||
UsuarioCreador = model.UsuarioCreador
|
||
});
|
||
|
||
|
||
|
||
//Propuesto
|
||
//NuevaFacilidad.OfertaFacilidadesComisiones.Add(Comision.UpdateProperties(w => { w.IdSolicitud = model.IdSolicitud; w.Process = model.Process; w.UsuarioCreador = model.UsuarioCreador; w.Step = model.Step; w.Incident = model.Incident; w.IdComision = maxIdComision; return w; }));
|
||
NuevaFacilidad.OfertaFacilidadesComisiones.Add(new OfertaFacilidadesComisiones()
|
||
{
|
||
DetalleComision = Comision.DetalleComision,
|
||
EsPropuesta = true,
|
||
FechaCreacion = Comision.FechaCreacion,
|
||
Secuencia = Comision.Secuencia,
|
||
IdComision = maxIdComision,
|
||
FechaModificacion = null,
|
||
IdTipoFacilidad = Comision.IdTipoFacilidad,
|
||
IdSolicitud = model.IdSolicitud,
|
||
Incident = model.Incident,
|
||
Process = model.Process,
|
||
Step = model.Step,
|
||
UsuarioCreador = model.UsuarioCreador
|
||
});
|
||
}
|
||
|
||
|
||
NuevaFacilidad.OfertaFacilidadesGarantias = new HashSet<OfertaFacilidadesGarantias>();
|
||
int maxIdGarantia = FacilidadActual.OfertaFacilidadesGarantias.Where(x => x.EsPropuesta == true).Max(x => x.IdGarantia);
|
||
foreach (OfertaFacilidadesGarantias garantia in FacilidadActual.OfertaFacilidadesGarantias.Where(x=> x.EsPropuesta==true).ToList())
|
||
{
|
||
|
||
maxIdGarantia++;
|
||
Conn.Entry(garantia).State = System.Data.Entity.EntityState.Detached;
|
||
|
||
//Actual
|
||
//NuevaFacilidad.OfertaFacilidadesGarantias.Add(garantia.UpdateProperties(w => { w.IdSolicitud = model.IdSolicitud; w.Process = model.Process; w.UsuarioCreador = model.UsuarioCreador; w.Step = model.Step; w.Incident = model.Incident; w.EsPropuesta = false; return w; }));
|
||
NuevaFacilidad.OfertaFacilidadesGarantias.Add(new OfertaFacilidadesGarantias()
|
||
{
|
||
DescTipoGarantia = garantia.DescTipoGarantia,
|
||
DetalleGarantia = garantia.DetalleGarantia,
|
||
EsPropuesta = false,
|
||
FechaCreacion = garantia.FechaCreacion,
|
||
Secuencia = garantia.Secuencia,
|
||
IdGarantia = garantia.IdGarantia,
|
||
FechaModificacion = null,
|
||
IdTipoFacilidad = garantia.IdTipoFacilidad,
|
||
IdSolicitud = model.IdSolicitud,
|
||
Incident = model.Incident,
|
||
Process = model.Process,
|
||
Step = model.Step,
|
||
UsuarioCreador = model.UsuarioCreador
|
||
});
|
||
|
||
|
||
//Propuesto
|
||
//NuevaFacilidad.OfertaFacilidadesGarantias.Add(garantia.UpdateProperties(w => { w.IdSolicitud = model.IdSolicitud; w.Process = model.Process; w.UsuarioCreador = model.UsuarioCreador; w.Step = model.Step; w.Incident = model.Incident; w.IdGarantia = maxIdGarantia; return w; }));
|
||
NuevaFacilidad.OfertaFacilidadesGarantias.Add(new OfertaFacilidadesGarantias()
|
||
{
|
||
DescTipoGarantia = garantia.DescTipoGarantia,
|
||
DetalleGarantia = garantia.DetalleGarantia,
|
||
EsPropuesta = true,
|
||
FechaCreacion = garantia.FechaCreacion,
|
||
Secuencia = garantia.Secuencia,
|
||
IdGarantia = maxIdGarantia,
|
||
FechaModificacion = null,
|
||
IdTipoFacilidad = garantia.IdTipoFacilidad,
|
||
IdSolicitud = model.IdSolicitud,
|
||
Incident = model.Incident,
|
||
Process = model.Process,
|
||
Step = model.Step,
|
||
UsuarioCreador = model.UsuarioCreador
|
||
});
|
||
}
|
||
|
||
Conn.Entry(FacilidadActual).State = System.Data.Entity.EntityState.Detached;
|
||
FacilidadActual.IdSolicitud = model.IdSolicitud;
|
||
FacilidadActual.MontoActual = FacilidadActual.MontoPropuesto;
|
||
FacilidadActual.FechaVencimientoActual = FacilidadActual.FechaVencimiento;
|
||
FacilidadActual.SubLimiteActual = FacilidadActual.SubLimitePropuesto;
|
||
FacilidadActual.PlazoMaximoActual = FacilidadActual.PlazoMaximoPropuesto;
|
||
FacilidadActual.FormaPagoActual = FacilidadActual.FormasPagos != null ? FacilidadActual.FormasPagos.Descripcion : string.Empty;
|
||
FacilidadActual.PlazoMaximoActual = FacilidadActual.PlazoMaximoPropuesto;
|
||
|
||
//Tasas de Interes
|
||
FacilidadActual.TasaActualMonedaLocal = FacilidadActual.TasaPropuestaMonedaLocal;
|
||
FacilidadActual.TasaActualDolares = FacilidadActual.TasaPropuestaDolares;
|
||
FacilidadActual.TBPActualMonedaLocal = FacilidadActual.TBPPropuestaMonedaLocal;
|
||
FacilidadActual.PRActualDolares = FacilidadActual.TRPropuestaDolares;
|
||
|
||
FacilidadActual.OfertaFacilidadesComisiones = NuevaFacilidad.OfertaFacilidadesComisiones;
|
||
FacilidadActual.OfertaFacilidadesGarantias = NuevaFacilidad.OfertaFacilidadesGarantias;
|
||
FacilidadActual.FormasPagos = NuevaFacilidad.FormasPagos;
|
||
|
||
NuevaOferta.OfertaFacilidades = new HashSet<OfertaFacilidades>();
|
||
NuevaOferta.OfertaFacilidades.Add(FacilidadActual);
|
||
|
||
////
|
||
NuevaCaratula.CaratulaCreditoCondicionesEspeciales = new HashSet<CaratulaCreditoCondicionesEspeciales>();
|
||
foreach (CaratulaCreditoCondicionesEspeciales Condicion in CaratulaActual.CaratulaCreditoCondicionesEspeciales.ToList())
|
||
{
|
||
Conn.Entry(Condicion).State = System.Data.Entity.EntityState.Detached;
|
||
NuevaCaratula.CaratulaCreditoCondicionesEspeciales.Add(Condicion.UpdateProperties(w => { w.IdSolicitud = model.IdSolicitud; w.Process = model.Process; w.UsuarioCreador = model.UsuarioCreador; w.Step = model.Step; w.Incident = model.Incident; return w; }));
|
||
}
|
||
NuevaCaratula.CaratulaCreditoExcepcionesPolitica = new HashSet<CaratulaCreditoExcepcionesPolitica>();
|
||
foreach (CaratulaCreditoExcepcionesPolitica Politica in CaratulaActual.CaratulaCreditoExcepcionesPolitica.ToList())
|
||
{
|
||
Conn.Entry(Politica).State = System.Data.Entity.EntityState.Detached;
|
||
NuevaCaratula.CaratulaCreditoExcepcionesPolitica.Add(Politica.UpdateProperties(w => { w.IdSolicitud = model.IdSolicitud; w.Process = model.Process; w.UsuarioCreador = model.UsuarioCreador; w.Step = model.Step; w.Incident = model.Incident; return w; }));
|
||
}
|
||
|
||
Conn.Entry(CaratulaActual).State = System.Data.Entity.EntityState.Detached;
|
||
CaratulaActual.CaratulaCreditoCondicionesEspeciales = NuevaCaratula.CaratulaCreditoCondicionesEspeciales;
|
||
CaratulaActual.CaratulaCreditoExcepcionesPolitica = NuevaCaratula.CaratulaCreditoExcepcionesPolitica;
|
||
NuevaCaratula = CaratulaActual
|
||
.UpdateProperties(w =>
|
||
{
|
||
w.IdSolicitud = model.IdSolicitud;
|
||
w.CodigoCaratula = null;
|
||
w.CodigoComite = null;
|
||
w.FechaAprobacion = null;
|
||
w.IdEstadoCaratula = null;
|
||
w.Process = model.Process;
|
||
w.UsuarioCreador = model.UsuarioCreador;
|
||
w.Step = model.Step;
|
||
w.Incident = model.Incident;
|
||
return w;
|
||
});
|
||
|
||
Conn.CaratulaCredito.Add(NuevaCaratula);
|
||
Conn.Oferta.Add(NuevaOferta);
|
||
Conn.SaveChanges();
|
||
}
|
||
else
|
||
{
|
||
ValorRetorno.CodigoRespuesta = TipoCodigoRespuesta.ADVERTENCIA.ToString();
|
||
ValorRetorno.DescripcionRespuesta = "No existen datos de oferta para el c<>digo de car<61>tula de la solicitud de Desembolso.";
|
||
}
|
||
}
|
||
else
|
||
{
|
||
ValorRetorno.CodigoRespuesta = TipoCodigoRespuesta.ADVERTENCIA.ToString();
|
||
ValorRetorno.DescripcionRespuesta = "No existen datos de ca<63>rtula para el c<>digo de car<61>tula de la solicitud de Desembolso.";
|
||
}
|
||
}
|
||
else
|
||
{
|
||
ValorRetorno.CodigoRespuesta = TipoCodigoRespuesta.ADVERTENCIA.ToString();
|
||
ValorRetorno.DescripcionRespuesta = "No existen datos para la solicitud de Desembolso.";
|
||
}
|
||
}
|
||
}
|
||
catch (DbUnexpectedValidationException ex2)
|
||
{
|
||
logs.Error(ex2);
|
||
ValorRetorno.CodigoRespuesta = TipoCodigoRespuesta.ERROR.ToString();
|
||
}
|
||
catch (DbEntityValidationException ex1)
|
||
{
|
||
logs.Error(ex1);
|
||
ValorRetorno.CodigoRespuesta = TipoCodigoRespuesta.ERROR.ToString();
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
logs.Error(ex);
|
||
ValorRetorno.CodigoRespuesta = TipoCodigoRespuesta.ERROR.ToString();
|
||
}
|
||
finally
|
||
{
|
||
Desembolso = null;
|
||
NuevaCaratula = null;
|
||
CaratulaActual = null;
|
||
OfertaActual = null;
|
||
NuevaOferta = null;
|
||
FacilidadActual = null;
|
||
NuevaFacilidad = null;
|
||
}
|
||
return ValorRetorno;
|
||
}
|
||
|
||
public int? ObtenerSolicitudUltimaCaratulaFormalizada(int IdSolicitud, bool FiltraConLinea, int IdTipoCaratula, int? IdTipoTramite = null)
|
||
{
|
||
int? resp = null;
|
||
try
|
||
{
|
||
using (CreditoContex Conn = new CreditoContex())
|
||
{
|
||
#region Obtiene el cliente de la solicitud
|
||
Cliente ClientePrincipal = Conn.Solicitante
|
||
.Where(x => x.IdSolicitud == IdSolicitud && x.EsPrincipal == true)
|
||
.Include(x => x.Cliente)
|
||
.Select(x => x.Cliente)
|
||
.FirstOrDefault();
|
||
#endregion
|
||
|
||
#region Obtiene la lista de solicitudes del cliente con car<EFBFBD>tula permanente
|
||
List<int> ListaNumeroSolicitud = Conn.Solicitante
|
||
.Include(x => x.Cliente)
|
||
.Include(x => x.Solicitud)
|
||
.Include(x => x.Solicitud.CaratulaCredito)
|
||
.Where(x => x.Cliente.NumeroIdentificacion == ClientePrincipal.NumeroIdentificacion
|
||
&& x.EsPrincipal == true
|
||
&& x.Solicitud.CaratulaCredito.IdTipoCaratula == IdTipoCaratula
|
||
&& (IdTipoTramite == null || x.Cliente.IdTipoTramite == IdTipoTramite.Value))
|
||
.Select(x => x.IdSolicitud)
|
||
.ToList();
|
||
#endregion
|
||
|
||
#region Obtiene el # de Solicitud donde la Linea haya sido Formalizada
|
||
if (ListaNumeroSolicitud != null && ListaNumeroSolicitud.Count > 0)
|
||
resp = Conn.OfertaFacilidades
|
||
.Where(x => ListaNumeroSolicitud.Contains(x.IdSolicitud) && x.EstaFormalizada == true && x.FechaFormalizacion != null && (FiltraConLinea == false || x.Eslinea == true))
|
||
.OrderByDescending(x => x.FechaFormalizacion)
|
||
.Select(x => x.IdSolicitud)
|
||
.FirstOrDefault();
|
||
|
||
//if (ListaNumeroSolicitud != null && ListaNumeroSolicitud.Count > 0)
|
||
// resp = Conn.OfertaFacilidades
|
||
// .Where(x => ListaNumeroSolicitud.Contains(x.IdSolicitud) && x.EstaFormalizada == true && (FiltraConLinea == false || x.Eslinea == true))
|
||
// .OrderByDescending(x => x.IdSolicitud)
|
||
// .Select(x => x.IdSolicitud)
|
||
// .FirstOrDefault();
|
||
#endregion
|
||
}
|
||
}
|
||
catch (DbEntityValidationException ex1)
|
||
{
|
||
resp = null;
|
||
logs.Error(ex1);
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
resp = null;
|
||
logs.Error(ex);
|
||
}
|
||
finally
|
||
{
|
||
}
|
||
|
||
return resp;
|
||
}
|
||
|
||
public BaseJson InsertarActualizarOfertaFacilidadesGarantias(OfertaFacilidadesGarantias model)
|
||
{
|
||
OfertaFacilidadesGarantias GarantiaActual = new OfertaFacilidadesGarantias();
|
||
BaseJson resp = new BaseJson() { CodigoRespuesta = TipoCodigoRespuesta.EXITOSO.ToString() };
|
||
|
||
try
|
||
{
|
||
model.OfertaFacilidades = null;
|
||
|
||
#region OfertaFacilidadesGarantias
|
||
|
||
using (CreditoContex Contexto = new CreditoContex())
|
||
{
|
||
#region Garantias por facilidad
|
||
|
||
model.OfertaFacilidades = null;
|
||
|
||
GarantiaActual = Contexto.OfertaFacilidadesGarantias.Where(e => e.IdSolicitud == model.IdSolicitud && e.IdTipoFacilidad == model.IdTipoFacilidad && e.Secuencia == model.Secuencia && e.IdGarantia == model.IdGarantia).FirstOrDefault();
|
||
if (GarantiaActual != null)
|
||
{
|
||
model.Secuencia = model.Secuencia;
|
||
model.FechaModificacion = DateTime.Now;
|
||
model.UsuarioModificado = model.UsuarioCreador;
|
||
model.FechaCreacion = GarantiaActual.FechaCreacion;
|
||
model.UsuarioCreador = GarantiaActual.UsuarioCreador;
|
||
|
||
Contexto.Entry(GarantiaActual).State = System.Data.Entity.EntityState.Detached;
|
||
Contexto.OfertaFacilidadesGarantias.Attach(model);
|
||
Contexto.Entry(model).State = System.Data.Entity.EntityState.Modified;
|
||
}
|
||
else
|
||
{
|
||
model.FechaCreacion = DateTime.Now;
|
||
Contexto.OfertaFacilidadesGarantias.Add(model);
|
||
}
|
||
|
||
#endregion
|
||
|
||
Contexto.SaveChanges();
|
||
}
|
||
#endregion
|
||
}
|
||
catch (DbEntityValidationException ex1)
|
||
{
|
||
logs.Error(ex1);
|
||
resp.CodigoRespuesta = TipoCodigoRespuesta.ERROR.ToString();
|
||
resp.DescripcionRespuesta = ex1.Message;
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
logs.Error(ex);
|
||
resp.CodigoRespuesta = TipoCodigoRespuesta.ERROR.ToString();
|
||
resp.DescripcionRespuesta = ex.Message;
|
||
}
|
||
finally
|
||
{
|
||
}
|
||
|
||
return resp;
|
||
}
|
||
|
||
}
|
||
}
|