1199 lines
No EOL
65 KiB
C#
1199 lines
No EOL
65 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Web.Http;
|
|
using ULA.Cathay.CreditoModel.Credito;
|
|
using Ultimus.Interfaces;
|
|
using Ultimus.Utilitarios;
|
|
using ULA.Cathay.CreditoModel.DAL.Credito;
|
|
using ULA.Cathay.Credito.ServicioSAP;
|
|
using ULA.Cathay.CreditoModel.DAL.CorporativoDatosRecientes;
|
|
using ULA.Cathay.CreditoModel.CorporativoDatosRecientes;
|
|
using ULA.Cathay.CreditoModel.Entidades;
|
|
|
|
|
|
namespace ULA.Cathay.Credito.ControllersWebApi
|
|
{
|
|
public partial class IngresoClienteAPIController : ApiController
|
|
{
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
/// <param name="modelResp"></param>
|
|
/// <returns></returns>
|
|
[HttpPost]
|
|
public Oferta ObtenerOfertaSolicitud(Oferta model)
|
|
{
|
|
Oferta respuesta = new Oferta();
|
|
OfertaDAL Conn = new OfertaDAL();
|
|
SAPServicioIntegracionAPIController Sap = new SAPServicioIntegracionAPIController();
|
|
List<CategoriasPorFacilidad> FacilidadCategoria = new List<CategoriasPorFacilidad>();
|
|
TasaBase TasasBases = new TasaBase();
|
|
CategoriasPorFacilidadDAL ConnFaciCate = new CategoriasPorFacilidadDAL();
|
|
List<int> listaID = new List<int>();
|
|
|
|
List<OfertaFacilidades> ListOfertaFacilidadesCopy = new List<OfertaFacilidades>();
|
|
try
|
|
{
|
|
Conn.TipoCambio = Sap.ObtenerTipoCambioContable().TipoCambio;
|
|
TasasBases = Sap.ObtenerTasasBase();
|
|
Conn.TasaBasePasiva = TasasBases.TasaBasePasiva;
|
|
Conn.TasaBasePrime = TasasBases.TasaBasePrime;
|
|
respuesta = Conn.ObtenerOfertaSolicitud(model);
|
|
if (respuesta != null)
|
|
{
|
|
if (respuesta.IdTipoCategoria != null)
|
|
{
|
|
FacilidadCategoria = ConnFaciCate.Obtener(respuesta.IdTipoCategoria.Value);
|
|
listaID = (from q in respuesta.OfertaFacilidades
|
|
where q.Secuencia != 0
|
|
select q.IdTipoFacilidad).Distinct().ToList();
|
|
|
|
foreach (CategoriasPorFacilidad fac in FacilidadCategoria.Where(w => listaID.Contains(w.IdTipoFacilidad) && w.Especifico.Value))
|
|
{
|
|
var itemFacilidadCopiaLimpia = new OfertaFacilidades
|
|
{
|
|
IdSolicitud = model.IdSolicitud,
|
|
IdTipoFacilidad = fac.IdTipoFacilidad,
|
|
Secuencia = 0,
|
|
Eslinea = fac.LineaCredito.Value ? respuesta.OfertaFacilidades.Where(g => g.IdTipoFacilidad == fac.IdTipoFacilidad && g.Eslinea.Value).FirstOrDefault() == null ? fac.LineaCredito : (bool?)false : (bool?)false,
|
|
EsEspecifico = fac.Especifico,
|
|
TipoFacilidad = fac.TipoFacilidad,
|
|
MontoMaximo = respuesta.OfertaFacilidades.Where(j => j.IdTipoFacilidad == fac.IdTipoFacilidad).FirstOrDefault().MontoMaximo,
|
|
};
|
|
respuesta.OfertaFacilidades.Add(itemFacilidadCopiaLimpia);
|
|
ListOfertaFacilidadesCopy.Add(itemFacilidadCopiaLimpia);
|
|
}
|
|
respuesta.MontoActualLinea = respuesta.MontoActualLinea == null ? 0 : respuesta.MontoActualLinea;
|
|
respuesta.MontoActualEspecifico = respuesta.MontoActualEspecifico == null ? 0 : respuesta.MontoActualEspecifico;
|
|
//ObtenerDatosActualesSap(respuesta);
|
|
}
|
|
|
|
|
|
#region Ultima Caratula Formalizada o SAP
|
|
|
|
ObtenerDatosActualesSap(respuesta);
|
|
|
|
int? IdSolicitudCaratulaFormalizada = Conn.ObtenerSolicitudUltimaCaratulaFormalizada(model.IdSolicitud, true, EnumTipoCaratula.Permanente);
|
|
|
|
if (IdSolicitudCaratulaFormalizada != null && IdSolicitudCaratulaFormalizada != 0)
|
|
ObtenerDatosCaratulaVigenteUltimus(respuesta);
|
|
|
|
#endregion
|
|
|
|
|
|
#region Limpia los Montos Actuales de la Facilidad Copiada
|
|
|
|
foreach (var itemOferta in ListOfertaFacilidadesCopy)
|
|
{
|
|
if (respuesta.OfertaFacilidades.Where(x => x.IdTipoFacilidad == itemOferta.IdTipoFacilidad && x.Secuencia == itemOferta.Secuencia).Any())
|
|
{
|
|
respuesta.OfertaFacilidades.ToList().ForEach(y =>
|
|
{
|
|
if (y.IdTipoFacilidad == itemOferta.IdTipoFacilidad && y.Secuencia == itemOferta.Secuencia)
|
|
//*****************************************************
|
|
//Es Especifico y (EsLinea == Nulo o EsLinea == Falso)
|
|
//*****************************************************
|
|
if ((y.EsEspecifico.HasValue && y.EsEspecifico.Value == true) && (y.Eslinea == null || y.Eslinea.Value == false))
|
|
y.MontoActual = 0;
|
|
});
|
|
}
|
|
}
|
|
#endregion
|
|
}
|
|
|
|
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
logs.Error(ex);
|
|
}
|
|
finally
|
|
{
|
|
Conn = null;
|
|
Sap = null;
|
|
FacilidadCategoria = null;
|
|
listaID = null;
|
|
}
|
|
|
|
return respuesta;
|
|
}
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
/// <param name="modelResp"></param>
|
|
/// <returns></returns>
|
|
[HttpPost]
|
|
public List<OfertaFacilidades> ObtenerFacilidadesOfertaSolicitud(Oferta model)
|
|
{
|
|
List<OfertaFacilidades> respuesta = new List<OfertaFacilidades>();
|
|
OfertaDAL Conn = new OfertaDAL();
|
|
TasaBase TasasBases = new TasaBase();
|
|
SAPServicioIntegracionAPIController Sap = new SAPServicioIntegracionAPIController();
|
|
|
|
try
|
|
{
|
|
Conn.TipoCambio = Sap.ObtenerTipoCambioContable().TipoCambio;
|
|
TasasBases = Sap.ObtenerTasasBase();
|
|
Conn.TasaBasePasiva = TasasBases.TasaBasePasiva;
|
|
Conn.TasaBasePrime = TasasBases.TasaBasePrime;
|
|
model.OfertaFacilidades = Conn.ObtenerFacilidadesOfertaSolicitud(model);
|
|
|
|
ObtenerDatosActualesSap(model);
|
|
|
|
int? IdSolicitudCaratulaFormalizada = Conn.ObtenerSolicitudUltimaCaratulaFormalizada(model.IdSolicitud, true, EnumTipoCaratula.Permanente);
|
|
if (IdSolicitudCaratulaFormalizada != null && IdSolicitudCaratulaFormalizada != 0)
|
|
ObtenerDatosCaratulaVigenteUltimus(model);
|
|
|
|
|
|
|
|
|
|
respuesta = model.OfertaFacilidades.ToList();
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
logs.Error(ex);
|
|
}
|
|
finally
|
|
{
|
|
Conn = null;
|
|
TasasBases = null;
|
|
Sap = null;
|
|
}
|
|
return respuesta;
|
|
}
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
/// <param name="modelResp"></param>
|
|
/// <returns></returns>
|
|
[HttpPost]
|
|
public BaseJson InsertaActualizarOfertaSolicitud(Oferta model)
|
|
{
|
|
BaseJson ValorRetorno = new BaseJson();
|
|
OfertaDAL Conn = new OfertaDAL();
|
|
|
|
List<OfertaFacilidades> ListaFacilidades = new List<OfertaFacilidades>();
|
|
ICollection<OfertaFacilidades> ListaFacilidadesAll = null;
|
|
|
|
try
|
|
{
|
|
ListaFacilidadesAll = model.OfertaFacilidades.ToList();
|
|
|
|
ListaFacilidades = model.OfertaFacilidades.Where(q => q.Secuencia == 0).ToList();
|
|
foreach (OfertaFacilidades Facilidad in ListaFacilidades)
|
|
model.OfertaFacilidades.Remove(Facilidad);
|
|
|
|
ValorRetorno = Conn.InsertaActualizarOfertaSolicitud(model);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
logs.Error(ex);
|
|
ValorRetorno.CodigoRespuesta = TipoCodigoRespuesta.ERROR.ToString();
|
|
}
|
|
finally
|
|
{
|
|
model.OfertaFacilidades = ListaFacilidadesAll;
|
|
Conn = null;
|
|
ListaFacilidades.Clear();
|
|
ListaFacilidades = null;
|
|
|
|
}
|
|
|
|
return ValorRetorno;
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
/// <param name="modelResp"></param>
|
|
/// <returns></returns>
|
|
[HttpPost]
|
|
public BaseJson InsertaActualizarOfertaFacilidadesGarantias(OfertaFacilidadesGarantias model)
|
|
{
|
|
BaseJson ValorRetorno = new BaseJson();
|
|
OfertaDAL Conn = new OfertaDAL();
|
|
|
|
try
|
|
{
|
|
ValorRetorno = Conn.InsertarActualizarOfertaFacilidadesGarantias(model);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
logs.Error(ex);
|
|
ValorRetorno.CodigoRespuesta = TipoCodigoRespuesta.ERROR.ToString();
|
|
}
|
|
finally
|
|
{
|
|
Conn = null;
|
|
}
|
|
|
|
return ValorRetorno;
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
/// <param name="modelResp"></param>
|
|
/// <returns></returns>
|
|
[HttpPost]
|
|
public BaseJson EliminarFacilidadesOfertaSolicitud(Oferta model)
|
|
{
|
|
BaseJson ValorRetorno = new BaseJson();
|
|
OfertaDAL Conn = new OfertaDAL();
|
|
try
|
|
{
|
|
ValorRetorno = Conn.EliminarFacilidadesOfertaSolicitud(model);
|
|
|
|
|
|
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
logs.Error(ex);
|
|
ValorRetorno.CodigoRespuesta = TipoCodigoRespuesta.ERROR.ToString();
|
|
}
|
|
finally
|
|
{
|
|
Conn = null;
|
|
}
|
|
|
|
return ValorRetorno;
|
|
}
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
/// <param name="modelResp"></param>
|
|
/// <returns></returns>
|
|
[HttpPost]
|
|
public BpResponse ObtenerBPSap(Oferta model)
|
|
{
|
|
BpResponse respuesta = new BpResponse();
|
|
|
|
try
|
|
{
|
|
respuesta = ConsultaBP(model.IdSolicitud, EnumOperacionesCliente.Ambas);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
logs.Error(ex);
|
|
}
|
|
finally
|
|
{
|
|
|
|
}
|
|
|
|
return respuesta;
|
|
}
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
/// <param name="IdSolicitud"></param>
|
|
/// <returns></returns>
|
|
private ServicioSAP.BpResponse ConsultaBP(int IdSolicitud, int? TipoConsulta = null)
|
|
{
|
|
SolicitanteDAL ConnSolicitante = new SolicitanteDAL();
|
|
SAPServicioIntegracionAPIController Sap = new SAPServicioIntegracionAPIController();
|
|
ServicioSAP.BpResponse BpSap = new ServicioSAP.BpResponse();
|
|
DatosEntrada ObjEntrada = new DatosEntrada();
|
|
Solicitante Deudor = new Solicitante();
|
|
|
|
try
|
|
{
|
|
Deudor = ConnSolicitante.Obtener(IdSolicitud).Where(q => q.EsPrincipal == true).FirstOrDefault();
|
|
ObjEntrada.Identificacion = Deudor.Cliente.NumeroIdentificacion;
|
|
ObjEntrada.NumeroCliente = Deudor.Cliente.CodigoBP;
|
|
if (TipoConsulta == null)
|
|
ObjEntrada.TipoConsulta = EnumOperacionesCliente.Especificas;
|
|
else
|
|
ObjEntrada.TipoConsulta = Convert.ToInt32(TipoConsulta);
|
|
BpSap = Sap.ConsultaBP(ObjEntrada);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
logs.Error(ex);
|
|
}
|
|
finally
|
|
{
|
|
ConnSolicitante = null;
|
|
Sap = null;
|
|
ObjEntrada = null;
|
|
Deudor = null;
|
|
}
|
|
|
|
return BpSap;
|
|
}
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
/// <param name="respuesta"></param>
|
|
private void ObtenerDatosActualesSap(Oferta respuesta)
|
|
{
|
|
Cliente ModeloClientePrincipal = new Cliente();
|
|
SAPServicioIntegracionAPIController Sap = new SAPServicioIntegracionAPIController();
|
|
ServicioSAP.BpResponse BpSap = new ServicioSAP.BpResponse();
|
|
List<OfertaFacilidades> FacilidadOferta = new List<OfertaFacilidades>();
|
|
OfertaDAL OfertaDal = new OfertaDAL();
|
|
TasaBase TasasBases = new TasaBase();
|
|
|
|
decimal TasaCambio = 0;
|
|
|
|
try
|
|
{
|
|
TasaCambio = Sap.ObtenerTipoCambioContable().TipoCambio;
|
|
BpSap = ConsultaBP(respuesta.IdSolicitud);
|
|
TasasBases = Sap.ObtenerTasasBase();
|
|
|
|
//***********************************************************
|
|
//Si no existe una oferta de caratula permanente formalizada
|
|
//procesa la información de SAP para Linea
|
|
//***********************************************************
|
|
int? IdSolicitudCaratulaFormalizada = OfertaDal.ObtenerSolicitudUltimaCaratulaFormalizada(respuesta.IdSolicitud, true, EnumTipoCaratula.Permanente);
|
|
|
|
if (IdSolicitudCaratulaFormalizada == null || IdSolicitudCaratulaFormalizada == 0)
|
|
{
|
|
#region Actualizar los datos de las lineas si existe en SAP
|
|
if (!string.IsNullOrWhiteSpace(BpSap.Identificacion) && BpSap.Linea.Count != 0)
|
|
{
|
|
ModeloClientePrincipal = new ClienteDAL().ObtenerPrincipal(respuesta.IdSolicitud);
|
|
|
|
ServicioSAP.Lineas linea = BpSap.Linea.OrderByDescending(x => x.FechaVencimiento).FirstOrDefault(); ;
|
|
|
|
if (linea.Moneda.Equals("USD"))
|
|
{
|
|
respuesta.MontoActualLinea = linea.Monto;
|
|
respuesta.MontoPropuestoLinea = (respuesta.MontoPropuestoLinea == null || respuesta.MontoPropuestoLinea == 0) ? linea.Monto : respuesta.MontoPropuestoLinea;
|
|
}
|
|
else if (linea.Moneda.Equals("CRC"))
|
|
{
|
|
//respuesta.MontoActualLinea = linea.Monto / TasaCambio;
|
|
//respuesta.MontoPropuestoLinea = respuesta.MontoPropuestoLinea == null ? linea.Monto / TasaCambio : respuesta.MontoPropuestoLinea;
|
|
respuesta.MontoActualLinea = linea.Monto;
|
|
respuesta.MontoPropuestoLinea = (respuesta.MontoPropuestoLinea == null || respuesta.MontoPropuestoLinea == 0) ? linea.Monto : respuesta.MontoPropuestoLinea;
|
|
}
|
|
|
|
|
|
if (!string.IsNullOrEmpty(linea.Moneda))
|
|
respuesta.Moneda = new MonedaDAL().ObtenerMoneda(linea.Moneda.Trim());
|
|
|
|
#region FechaVencimiento
|
|
if ((linea.FechaVencimiento != null) && (respuesta.FechaVencimientoLinea == null))
|
|
{
|
|
respuesta.FechaVencimientoLinea = linea.FechaVencimiento;
|
|
}
|
|
|
|
if (linea.FechaVencimiento != null)
|
|
{
|
|
respuesta.FechaVencimientoActualLinea = linea.FechaVencimiento;
|
|
}
|
|
#endregion
|
|
|
|
#region Plazo
|
|
if (!string.IsNullOrEmpty(linea.Plazo) && string.IsNullOrEmpty(respuesta.PlazoLinea))
|
|
{
|
|
respuesta.PlazoLinea = linea.Plazo;
|
|
}
|
|
|
|
if (!string.IsNullOrEmpty(linea.Plazo))
|
|
{
|
|
respuesta.PlazoActualLinea = linea.Plazo;
|
|
}
|
|
#endregion
|
|
|
|
#region DescripcionClaseLinea
|
|
if (!string.IsNullOrEmpty(linea.DescClaseLinea) && string.IsNullOrEmpty(respuesta.DetalleLinea))
|
|
respuesta.DetalleLinea = linea.DescClaseLinea;
|
|
#endregion
|
|
|
|
|
|
#region Actualizar los datos facilidades por subLimite si existe en SAP
|
|
foreach (ServicioSAP.Sublimite SubLi in linea.Sublimites)
|
|
{
|
|
FacilidadOferta = respuesta.OfertaFacilidades.Where(q => q.TipoFacilidad.CodigoSAP == SubLi.Clasesublimite).ToList();
|
|
|
|
|
|
if (FacilidadOferta != null)
|
|
{
|
|
foreach (OfertaFacilidades facilidad in FacilidadOferta)
|
|
{
|
|
facilidad.OfertaFacilidadesComisiones = respuesta.OfertaFacilidades.Where(q => q.IdTipoFacilidad == facilidad.IdTipoFacilidad).Select(x => x.OfertaFacilidadesComisiones).FirstOrDefault();
|
|
if (facilidad.OfertaFacilidadesComisiones == null) facilidad.OfertaFacilidadesComisiones = new List<OfertaFacilidadesComisiones>();
|
|
|
|
facilidad.OfertaFacilidadesGarantias = respuesta.OfertaFacilidades.Where(q => q.IdTipoFacilidad == facilidad.IdTipoFacilidad).Select(x => x.OfertaFacilidadesGarantias).FirstOrDefault();
|
|
if (facilidad.OfertaFacilidadesGarantias == null) facilidad.OfertaFacilidadesGarantias = new List<OfertaFacilidadesGarantias>();
|
|
|
|
|
|
if (facilidad.MontoActual == null)
|
|
{
|
|
if (linea.Moneda.Equals("USD"))
|
|
{
|
|
facilidad.IdMonedaMontoPropuesto = EnumMoneda.DOLARES;
|
|
facilidad.MontoActual = (decimal?)SubLi.Montomaxlimite;
|
|
facilidad.MontoPropuesto = (decimal?)SubLi.Montomaxlimite;
|
|
facilidad.SubLimiteActual = (decimal?)SubLi.Montomaxlimite;
|
|
facilidad.PlazoMaximoActual = SubLi.Plazomininteres.ToString();
|
|
facilidad.FormaPagoActual = string.IsNullOrWhiteSpace(SubLi.Formapago) ? string.Empty : SubLi.Formapago;
|
|
}
|
|
else if (linea.Moneda.Equals("CRC"))
|
|
{
|
|
facilidad.IdMonedaMontoPropuesto = EnumMoneda.COLONES;
|
|
facilidad.MontoActual = (decimal?)SubLi.Montomaxlimite;// ----->/ TasaCambio;
|
|
facilidad.MontoPropuesto = (decimal?)SubLi.Montomaxlimite;// ----->/ TasaCambio;
|
|
facilidad.MontoEquivalentePropuesto = (decimal?)SubLi.Montomaxlimite / TasaCambio;
|
|
facilidad.SubLimiteActual = (decimal?)SubLi.Montomaxlimite;// ----->/ TasaCambio;
|
|
facilidad.PlazoMaximoActual = SubLi.Plazomininteres.ToString();
|
|
facilidad.FormaPagoActual = string.IsNullOrWhiteSpace(SubLi.Formapago) ? string.Empty : SubLi.Formapago;
|
|
}
|
|
|
|
#region OfertaFacilidades-Tasas Intereses
|
|
if (SubLi.Tasabaseinteres != null)
|
|
{
|
|
#region Actual
|
|
|
|
if (SubLi.Tasabaseinteres.Equals("TBP"))
|
|
{
|
|
facilidad.TBPActualMonedaLocal = TasasBases.TasaBasePasiva;
|
|
facilidad.TasaActualMonedaLocal = SubLi.Vartasaint;
|
|
}
|
|
else if (SubLi.Tasabaseinteres.Equals("PRIME_RATE"))
|
|
{
|
|
facilidad.PRActualDolares = TasasBases.TasaBasePrime;
|
|
facilidad.TasaActualDolares = SubLi.Vartasaint;
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Propuesto
|
|
|
|
if (ModeloClientePrincipal.IdTipoTramite == EnumTipoTramite.CambioCondiciones)
|
|
{
|
|
if (SubLi.Tasabaseinteres.Equals("TBP"))
|
|
{
|
|
facilidad.TasaPropuestaMonedaLocal = SubLi.Vartasaint;
|
|
facilidad.TBPPropuestaMonedaLocal = TasasBases.TasaBasePasiva;
|
|
facilidad.TotalTBPTasaPropuestaMonedaLocal = SubLi.Vartasaint;
|
|
|
|
}
|
|
else if (SubLi.Tasabaseinteres.Equals("PRIME_RATE"))
|
|
{
|
|
facilidad.TasaPropuestaDolares = SubLi.Vartasaint;
|
|
facilidad.TRPropuestaDolares = TasasBases.TasaBasePrime;
|
|
facilidad.TotalPRTasaPropuestaDolares = SubLi.Vartasaint;
|
|
|
|
}
|
|
}
|
|
#endregion
|
|
}
|
|
#endregion
|
|
|
|
facilidad.UsuarioCreador = "ExisteSap";
|
|
|
|
#region OfertaFacilidadesComisiones
|
|
if (!string.IsNullOrEmpty(SubLi.Comision))
|
|
{
|
|
if (facilidad.OfertaFacilidadesComisiones.Where(x => x.UsuarioCreador == "ExisteSap").Any())
|
|
{
|
|
List<OfertaFacilidadesComisiones> ComisionesSAP = facilidad.OfertaFacilidadesComisiones.Where(x => x.UsuarioCreador == "ExisteSap").ToList();
|
|
foreach (var ItemComisionSAP in ComisionesSAP)
|
|
{
|
|
facilidad.OfertaFacilidadesComisiones.Remove(ItemComisionSAP);
|
|
}
|
|
}
|
|
|
|
#region Actual
|
|
|
|
facilidad.OfertaFacilidadesComisiones.Add(new OfertaFacilidadesComisiones()
|
|
{
|
|
DetalleComision = SubLi.Comision,
|
|
EsPropuesta = false,
|
|
IdComision = 1,
|
|
IdSolicitud = respuesta.IdSolicitud,
|
|
IdTipoFacilidad = facilidad.IdTipoFacilidad,
|
|
Secuencia = facilidad.Secuencia,
|
|
UsuarioCreador = "ExisteSap"
|
|
});
|
|
|
|
#endregion
|
|
|
|
#region Propuesto
|
|
////**************************************************************************************
|
|
////21-06-2017 No aplica por eso se quita - No se pueden homologar las Comisiones de SAP
|
|
////**************************************************************************************
|
|
//if (ModeloClientePrincipal.IdTipoTramite == EnumTipoTramite.CambioCondiciones)
|
|
//{
|
|
// int maxIdComision = facilidad.OfertaFacilidadesComisiones.Max(x => x.IdComision);
|
|
// foreach (var ItemOfertaFacilidadesComisiones in facilidad.OfertaFacilidadesComisiones)
|
|
// {
|
|
// maxIdComision++;
|
|
|
|
// facilidad.OfertaFacilidadesComisiones.Add(new OfertaFacilidadesComisiones()
|
|
// {
|
|
// DetalleComision = ItemOfertaFacilidadesComisiones.DetalleComision,
|
|
// EsPropuesta = true,
|
|
// FechaCreacion = ItemOfertaFacilidadesComisiones.FechaCreacion,
|
|
// Secuencia = ItemOfertaFacilidadesComisiones.Secuencia,
|
|
// IdComision = maxIdComision,
|
|
// FechaModificacion = null,
|
|
// IdTipoFacilidad = facilidad.IdTipoFacilidad,
|
|
// IdSolicitud = facilidad.IdSolicitud,
|
|
// Incident = facilidad.Incident,
|
|
// Process = facilidad.Process,
|
|
// Step = facilidad.Step,
|
|
// UsuarioCreador = "ExisteSap",
|
|
// });
|
|
// }
|
|
//}
|
|
#endregion
|
|
|
|
}
|
|
#endregion
|
|
|
|
#region OfertaFacilidadesGarantias
|
|
|
|
if (!string.IsNullOrEmpty(linea.Garantias) && linea.Garantias.Length > 2)
|
|
{
|
|
if (facilidad.OfertaFacilidadesGarantias.Where(x => x.UsuarioCreador == "ExisteSap").Any())
|
|
{
|
|
List<OfertaFacilidadesGarantias> GarantiasSAP = facilidad.OfertaFacilidadesGarantias.Where(x => x.UsuarioCreador == "ExisteSap").ToList();
|
|
foreach (var ItemGarantiaSAP in GarantiasSAP)
|
|
{
|
|
facilidad.OfertaFacilidadesGarantias.Remove(ItemGarantiaSAP);
|
|
}
|
|
}
|
|
|
|
#region Actual
|
|
facilidad.OfertaFacilidadesGarantias.Add(new OfertaFacilidadesGarantias()
|
|
{
|
|
DetalleGarantia = linea.Garantias,
|
|
EsPropuesta = false,
|
|
IdGarantia = 1,
|
|
IdSolicitud = respuesta.IdSolicitud,
|
|
IdTipoFacilidad = facilidad.IdTipoFacilidad,
|
|
Secuencia = facilidad.Secuencia,
|
|
UsuarioCreador = "ExisteSap"
|
|
});
|
|
|
|
#endregion
|
|
|
|
#region Propuesto
|
|
|
|
////**************************************************************************************
|
|
////21-06-2017 No aplica por eso se quita - No se pueden homologar las Comisiones de SAP
|
|
////**************************************************************************************
|
|
//if (ModeloClientePrincipal.IdTipoTramite == EnumTipoTramite.CambioCondiciones)
|
|
//{
|
|
// int maxIdGarantia = facilidad.OfertaFacilidadesGarantias.Max(x => x.IdGarantia);
|
|
// foreach (var ItemOfertaFacilidadesGarantias in facilidad.OfertaFacilidadesGarantias)
|
|
// {
|
|
// maxIdGarantia++;
|
|
|
|
// facilidad.OfertaFacilidadesGarantias.Add(new OfertaFacilidadesGarantias()
|
|
// {
|
|
// DescTipoGarantia = ItemOfertaFacilidadesGarantias.DescTipoGarantia,
|
|
// DetalleGarantia = ItemOfertaFacilidadesGarantias.DetalleGarantia,
|
|
// EsPropuesta = true,
|
|
// FechaCreacion = ItemOfertaFacilidadesGarantias.FechaCreacion,
|
|
// Secuencia = ItemOfertaFacilidadesGarantias.Secuencia,
|
|
// IdGarantia = maxIdGarantia,
|
|
// FechaModificacion = null,
|
|
// IdTipoFacilidad = facilidad.IdTipoFacilidad,
|
|
// IdSolicitud = facilidad.IdSolicitud,
|
|
// Incident = facilidad.Incident,
|
|
// Process = facilidad.Process,
|
|
// Step = facilidad.Step,
|
|
// UsuarioCreador = "ExisteSap",
|
|
// });
|
|
// }
|
|
//}
|
|
|
|
#endregion
|
|
}
|
|
#endregion
|
|
}
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
}
|
|
}
|
|
#endregion
|
|
}
|
|
|
|
#region Actualizar los datos de las Especificos si tiene operaciones en SAP
|
|
if (!string.IsNullOrWhiteSpace(BpSap.Identificacion) && BpSap.Operacion != null)
|
|
{
|
|
///Monto actual Especifico: Sera la sumatoria de los saldos de los créditos específicos [Dato de SAP]
|
|
respuesta.MontoActualEspecifico = 0;
|
|
foreach (ServicioSAP.Operaciones opera in BpSap.Operacion)
|
|
{
|
|
if (string.IsNullOrWhiteSpace(opera.Linea))
|
|
{
|
|
if (opera.Moneda.Equals("USD"))
|
|
respuesta.MontoActualEspecifico += opera.SaldoPendiente;
|
|
else
|
|
respuesta.MontoActualEspecifico += opera.SaldoPendiente / TasaCambio;
|
|
}
|
|
}
|
|
}
|
|
#endregion
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
logs.Error(ex);
|
|
}
|
|
finally
|
|
{
|
|
Sap = null;
|
|
BpSap = null;
|
|
FacilidadOferta = null;
|
|
}
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
/// <param name="respuesta"></param>
|
|
private void ObtenerDatosCaratulaVigenteUltimus(Oferta respuesta)
|
|
{
|
|
Cliente ModeloClientePrincipal = new Cliente();
|
|
List<OfertaFacilidades> FacilidadOferta = new List<OfertaFacilidades>();
|
|
int? IdSolicitudCaratulaFormalizada = null;
|
|
OfertaDAL connOferta = new OfertaDAL();
|
|
Oferta modelOferta = new Oferta();
|
|
Oferta OfertaToInsert = new Oferta();
|
|
TasaBase TasasBases = new TasaBase();
|
|
SAPServicioIntegracionAPIController Sap = new SAPServicioIntegracionAPIController();
|
|
|
|
try
|
|
{
|
|
TasasBases = Sap.ObtenerTasasBase();
|
|
|
|
IdSolicitudCaratulaFormalizada = connOferta.ObtenerSolicitudUltimaCaratulaFormalizada(respuesta.IdSolicitud, true, EnumTipoCaratula.Permanente);
|
|
if (IdSolicitudCaratulaFormalizada == null || IdSolicitudCaratulaFormalizada == 0)
|
|
return;
|
|
|
|
//****************************************************************
|
|
//Si la Oferta de la Caratula Formalizada no se pudo Obtener
|
|
//****************************************************************
|
|
modelOferta = connOferta.ObtenerOfertaSolicitud(new Oferta() { IdSolicitud = IdSolicitudCaratulaFormalizada.Value, Process = respuesta.Process, IdTipoCategoria = respuesta.IdTipoCategoria });
|
|
if (modelOferta == null)
|
|
return;
|
|
|
|
ModeloClientePrincipal = new ClienteDAL().ObtenerPrincipal(respuesta.IdSolicitud);
|
|
|
|
//****************************************************************
|
|
//Si la Oferta Actual ya posee rergistros de facilidades en linea
|
|
//****************************************************************
|
|
if (respuesta.OfertaFacilidades.Where(x => x.Secuencia != 0).Any() == true)
|
|
{
|
|
#region Facilidades en Linea
|
|
foreach (OfertaFacilidades FacilidadCaratulaVigente in modelOferta.OfertaFacilidades.Where(x => x.Secuencia != 0 && x.Eslinea == true))
|
|
{
|
|
FacilidadOferta = respuesta.OfertaFacilidades.Where(q => q.IdTipoFacilidad == FacilidadCaratulaVigente.IdTipoFacilidad).ToList();
|
|
if (FacilidadOferta != null && FacilidadOferta.Count() > 0)
|
|
{
|
|
foreach (OfertaFacilidades facilidad in FacilidadOferta)
|
|
{
|
|
if (facilidad.Secuencia == 0)
|
|
{
|
|
#region Info General de la Facilidad
|
|
|
|
facilidad.MontoActual = FacilidadCaratulaVigente.MontoPropuesto;
|
|
facilidad.MontoPropuesto = FacilidadCaratulaVigente.MontoPropuesto;
|
|
facilidad.MontoEquivalentePropuesto = FacilidadCaratulaVigente.MontoEquivalentePropuesto;
|
|
|
|
facilidad.Detalle = FacilidadCaratulaVigente.Detalle;
|
|
facilidad.FechaVencimiento = FacilidadCaratulaVigente.FechaVencimiento;
|
|
facilidad.FechaVencimientoActual = FacilidadCaratulaVigente.FechaVencimiento;
|
|
facilidad.CodigoNaturalezaGasto = FacilidadCaratulaVigente.CodigoNaturalezaGasto;
|
|
facilidad.DescNaturalezaGasto = FacilidadCaratulaVigente.DescNaturalezaGasto;
|
|
facilidad.IdMonedaMontoPropuesto = FacilidadCaratulaVigente.IdMonedaMontoPropuesto;
|
|
|
|
facilidad.RazonSuperandoLimites = FacilidadCaratulaVigente.RazonSuperandoLimites;
|
|
facilidad.SubLimiteActual = FacilidadCaratulaVigente.SubLimitePropuesto;
|
|
facilidad.SubLimitePropuesto = FacilidadCaratulaVigente.SubLimitePropuesto;
|
|
facilidad.PlazoMaximoActual = FacilidadCaratulaVigente.PlazoMaximoPropuesto;
|
|
facilidad.PlazoMaximoPropuesto = FacilidadCaratulaVigente.PlazoMaximoPropuesto;
|
|
facilidad.Recursos = FacilidadCaratulaVigente.Recursos;
|
|
|
|
facilidad.FormaPagoActual = FacilidadCaratulaVigente.FormasPagos.Descripcion;
|
|
facilidad.IdFormaPagoPropuesto = FacilidadCaratulaVigente.IdFormaPagoPropuesto;
|
|
facilidad.FormasPagos = FacilidadCaratulaVigente.FormasPagos;
|
|
facilidad.OtrasTasas = FacilidadCaratulaVigente.OtrasTasas;
|
|
facilidad.PlazoMeses = FacilidadCaratulaVigente.PlazoMeses;
|
|
|
|
#endregion
|
|
|
|
#region Tasa de Interes
|
|
|
|
#region Actual
|
|
|
|
///Invierte los cambos ya que es una facilidad ya aprobada
|
|
///el propuesto se convierte en el actual
|
|
///
|
|
|
|
facilidad.TasaActualMonedaLocal = FacilidadCaratulaVigente.TasaPropuestaMonedaLocal;
|
|
facilidad.TasaActualDolares = FacilidadCaratulaVigente.TasaPropuestaDolares;
|
|
facilidad.TBPActualMonedaLocal = TasasBases.TasaBasePasiva;
|
|
facilidad.PRActualDolares = TasasBases.TasaBasePrime;
|
|
|
|
|
|
#endregion
|
|
|
|
#region Propuesto
|
|
|
|
if (ModeloClientePrincipal.IdTipoTramite == EnumTipoTramite.CambioCondiciones)
|
|
{
|
|
facilidad.TasaPropuestaMonedaLocal = FacilidadCaratulaVigente.TasaPropuestaMonedaLocal;
|
|
facilidad.TasaPropuestaDolares = FacilidadCaratulaVigente.TasaPropuestaDolares;
|
|
facilidad.TBPPropuestaMonedaLocal = TasasBases.TasaBasePasiva;
|
|
facilidad.TRPropuestaDolares = TasasBases.TasaBasePrime;
|
|
facilidad.TotalTBPTasaPropuestaMonedaLocal = FacilidadCaratulaVigente.TotalTBPTasaPropuestaMonedaLocal;
|
|
facilidad.TotalPRTasaPropuestaDolares = FacilidadCaratulaVigente.TotalPRTasaPropuestaDolares;
|
|
}
|
|
#endregion
|
|
|
|
#endregion
|
|
|
|
#region OfertaFacilidadesComisiones
|
|
|
|
if (FacilidadCaratulaVigente.OfertaFacilidadesComisiones != null && FacilidadCaratulaVigente.OfertaFacilidadesComisiones.Count() > 0)
|
|
facilidad.OfertaFacilidadesComisiones = new List<OfertaFacilidadesComisiones>();
|
|
|
|
#region Actual
|
|
//En las comisiones actuales registra las condiciones propuestas del trámite anterior.
|
|
foreach (var ItemOfertaFacilidadesComisiones in FacilidadCaratulaVigente.OfertaFacilidadesComisiones.Where(x => x.EsPropuesta == true))
|
|
{
|
|
facilidad.OfertaFacilidadesComisiones.Add(new OfertaFacilidadesComisiones()
|
|
{
|
|
DetalleComision = ItemOfertaFacilidadesComisiones.DetalleComision,
|
|
EsPropuesta = false,
|
|
FechaCreacion = ItemOfertaFacilidadesComisiones.FechaCreacion,
|
|
Secuencia = ItemOfertaFacilidadesComisiones.Secuencia,
|
|
IdComision = ItemOfertaFacilidadesComisiones.IdComision,
|
|
FechaModificacion = null,
|
|
IdTipoFacilidad = facilidad.IdTipoFacilidad,
|
|
IdSolicitud = facilidad.IdSolicitud,
|
|
Incident = facilidad.Incident,
|
|
Process = facilidad.Process,
|
|
Step = facilidad.Step
|
|
});
|
|
}
|
|
#endregion
|
|
|
|
#region Propuesto
|
|
|
|
if (ModeloClientePrincipal.IdTipoTramite == EnumTipoTramite.CambioCondiciones)
|
|
{
|
|
int maxIdComision = 0;
|
|
if (facilidad.OfertaFacilidadesComisiones.Count > 0)
|
|
maxIdComision = facilidad.OfertaFacilidadesComisiones.Max(x => x.IdComision);
|
|
|
|
|
|
foreach (var ItemOfertaFacilidadesComisiones in FacilidadCaratulaVigente.OfertaFacilidadesComisiones.Where(x => x.EsPropuesta == true))
|
|
{
|
|
maxIdComision++;
|
|
|
|
facilidad.OfertaFacilidadesComisiones.Add(new OfertaFacilidadesComisiones()
|
|
{
|
|
DetalleComision = ItemOfertaFacilidadesComisiones.DetalleComision,
|
|
EsPropuesta = true,
|
|
FechaCreacion = ItemOfertaFacilidadesComisiones.FechaCreacion,
|
|
Secuencia = ItemOfertaFacilidadesComisiones.Secuencia,
|
|
IdComision = maxIdComision,
|
|
FechaModificacion = null,
|
|
IdTipoFacilidad = facilidad.IdTipoFacilidad,
|
|
IdSolicitud = facilidad.IdSolicitud,
|
|
Incident = facilidad.Incident,
|
|
Process = facilidad.Process,
|
|
Step = facilidad.Step
|
|
});
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
|
|
#endregion
|
|
|
|
#region OfertaFacilidadesGarantias
|
|
|
|
if (FacilidadCaratulaVigente.OfertaFacilidadesGarantias != null && FacilidadCaratulaVigente.OfertaFacilidadesGarantias.Count() > 0)
|
|
facilidad.OfertaFacilidadesGarantias = new List<OfertaFacilidadesGarantias>();
|
|
|
|
#region Actual
|
|
|
|
foreach (var ItemOfertaFacilidadesGarantias in FacilidadCaratulaVigente.OfertaFacilidadesGarantias.Where(x => x.EsPropuesta == true))
|
|
{
|
|
facilidad.OfertaFacilidadesGarantias.Add(new OfertaFacilidadesGarantias()
|
|
{
|
|
DescTipoGarantia = ItemOfertaFacilidadesGarantias.DescTipoGarantia,
|
|
DetalleGarantia = ItemOfertaFacilidadesGarantias.DetalleGarantia,
|
|
EsPropuesta = false,
|
|
FechaCreacion = ItemOfertaFacilidadesGarantias.FechaCreacion,
|
|
Secuencia = ItemOfertaFacilidadesGarantias.Secuencia,
|
|
IdGarantia = ItemOfertaFacilidadesGarantias.IdGarantia,
|
|
FechaModificacion = null,
|
|
IdTipoFacilidad = facilidad.IdTipoFacilidad,
|
|
IdSolicitud = facilidad.IdSolicitud,
|
|
Incident = facilidad.Incident,
|
|
Process = facilidad.Process,
|
|
Step = facilidad.Step
|
|
});
|
|
}
|
|
#endregion
|
|
|
|
#region Propuesto
|
|
|
|
if (ModeloClientePrincipal.IdTipoTramite == EnumTipoTramite.CambioCondiciones)
|
|
{
|
|
int maxIdGarantia = 0;
|
|
if (facilidad.OfertaFacilidadesGarantias.Count > 0)
|
|
maxIdGarantia = facilidad.OfertaFacilidadesGarantias.Max(x => x.IdGarantia);
|
|
|
|
foreach (var ItemOfertaFacilidadesGarantias in FacilidadCaratulaVigente.OfertaFacilidadesGarantias.Where(x => x.EsPropuesta == true))
|
|
{
|
|
maxIdGarantia++;
|
|
|
|
facilidad.OfertaFacilidadesGarantias.Add(new OfertaFacilidadesGarantias()
|
|
{
|
|
DescTipoGarantia = ItemOfertaFacilidadesGarantias.DescTipoGarantia,
|
|
DetalleGarantia = ItemOfertaFacilidadesGarantias.DetalleGarantia,
|
|
EsPropuesta = true,
|
|
FechaCreacion = ItemOfertaFacilidadesGarantias.FechaCreacion,
|
|
Secuencia = ItemOfertaFacilidadesGarantias.Secuencia,
|
|
IdGarantia = maxIdGarantia,
|
|
FechaModificacion = null,
|
|
IdTipoFacilidad = facilidad.IdTipoFacilidad,
|
|
IdSolicitud = facilidad.IdSolicitud,
|
|
Incident = facilidad.Incident,
|
|
Process = facilidad.Process,
|
|
Step = facilidad.Step
|
|
});
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
#endregion
|
|
}
|
|
}
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
|
|
}
|
|
else
|
|
{
|
|
#region Info General Linea
|
|
|
|
respuesta.MontoActualLinea = modelOferta.MontoPropuestoLinea;
|
|
respuesta.MontoPropuestoLinea = modelOferta.MontoPropuestoLinea;
|
|
respuesta.MontoEquivalentePropuestoLinea = modelOferta.MontoEquivalentePropuestoLinea;
|
|
respuesta.FechaVencimientoLinea = modelOferta.FechaVencimientoLinea;
|
|
respuesta.FechaVencimientoActualLinea = modelOferta.FechaVencimientoLinea;
|
|
respuesta.IdMonedaMontoPropuestoLinea = modelOferta.IdMonedaMontoPropuestoLinea;
|
|
respuesta.Moneda = modelOferta.Moneda;
|
|
respuesta.PlazoLinea = modelOferta.PlazoLinea;
|
|
respuesta.PlazoActualLinea = modelOferta.PlazoLinea;
|
|
respuesta.DetalleLinea = modelOferta.DetalleLinea;
|
|
respuesta.RazonLineaSuperaLimiteGlobal = modelOferta.RazonLineaSuperaLimiteGlobal;
|
|
|
|
|
|
#endregion
|
|
|
|
#region Facilidades en Linea
|
|
foreach (OfertaFacilidades FacilidadCaratulaVigente in modelOferta.OfertaFacilidades.Where(x => x.Secuencia != 0 && x.Eslinea == true))
|
|
{
|
|
FacilidadOferta = respuesta.OfertaFacilidades.Where(q => q.IdTipoFacilidad == FacilidadCaratulaVigente.IdTipoFacilidad).ToList();
|
|
if (FacilidadOferta != null && FacilidadOferta.Count() > 0)
|
|
{
|
|
foreach (OfertaFacilidades facilidad in FacilidadOferta)
|
|
{
|
|
#region Info General de la Facilidad
|
|
|
|
|
|
facilidad.MontoActual = FacilidadCaratulaVigente.MontoPropuesto;
|
|
facilidad.MontoPropuesto = FacilidadCaratulaVigente.MontoPropuesto;
|
|
facilidad.MontoEquivalentePropuesto = FacilidadCaratulaVigente.MontoEquivalentePropuesto;
|
|
|
|
facilidad.Detalle = FacilidadCaratulaVigente.Detalle;
|
|
facilidad.FechaVencimiento = FacilidadCaratulaVigente.FechaVencimiento;
|
|
facilidad.FechaVencimientoActual = FacilidadCaratulaVigente.FechaVencimiento;
|
|
facilidad.CodigoNaturalezaGasto = FacilidadCaratulaVigente.CodigoNaturalezaGasto;
|
|
facilidad.DescNaturalezaGasto = FacilidadCaratulaVigente.DescNaturalezaGasto;
|
|
facilidad.IdMonedaMontoPropuesto = FacilidadCaratulaVigente.IdMonedaMontoPropuesto;
|
|
|
|
facilidad.RazonSuperandoLimites = FacilidadCaratulaVigente.RazonSuperandoLimites;
|
|
facilidad.SubLimiteActual = FacilidadCaratulaVigente.SubLimitePropuesto;
|
|
facilidad.SubLimitePropuesto = FacilidadCaratulaVigente.SubLimitePropuesto;
|
|
facilidad.PlazoMaximoActual = FacilidadCaratulaVigente.PlazoMaximoPropuesto;
|
|
facilidad.PlazoMaximoPropuesto = FacilidadCaratulaVigente.PlazoMaximoPropuesto;
|
|
facilidad.Recursos = FacilidadCaratulaVigente.Recursos;
|
|
|
|
facilidad.FormaPagoActual = FacilidadCaratulaVigente.FormasPagos.Descripcion;
|
|
facilidad.IdFormaPagoPropuesto = FacilidadCaratulaVigente.IdFormaPagoPropuesto;
|
|
facilidad.FormasPagos = FacilidadCaratulaVigente.FormasPagos;
|
|
facilidad.OtrasTasas = FacilidadCaratulaVigente.OtrasTasas;
|
|
facilidad.PlazoMeses = FacilidadCaratulaVigente.PlazoMeses;
|
|
|
|
#endregion
|
|
|
|
#region Tasas de Interes
|
|
|
|
#region Actual
|
|
///Invierte los cambos ya que es una facilidad ya aprobada
|
|
///el propuesto se convierte en el actual
|
|
|
|
facilidad.TasaActualMonedaLocal = FacilidadCaratulaVigente.TasaPropuestaMonedaLocal;
|
|
facilidad.TasaActualDolares = FacilidadCaratulaVigente.TasaPropuestaDolares;
|
|
facilidad.TBPActualMonedaLocal = TasasBases.TasaBasePasiva;
|
|
facilidad.PRActualDolares = TasasBases.TasaBasePrime;
|
|
|
|
|
|
#endregion
|
|
|
|
#region Propuesto
|
|
if (ModeloClientePrincipal.IdTipoTramite == EnumTipoTramite.CambioCondiciones)
|
|
{
|
|
|
|
facilidad.TasaPropuestaMonedaLocal = FacilidadCaratulaVigente.TasaPropuestaMonedaLocal;
|
|
facilidad.TasaPropuestaDolares = FacilidadCaratulaVigente.TasaPropuestaDolares;
|
|
facilidad.TBPPropuestaMonedaLocal = TasasBases.TasaBasePasiva;
|
|
facilidad.TRPropuestaDolares = TasasBases.TasaBasePrime;
|
|
facilidad.TotalTBPTasaPropuestaMonedaLocal = FacilidadCaratulaVigente.TotalTBPTasaPropuestaMonedaLocal;
|
|
facilidad.TotalPRTasaPropuestaDolares = FacilidadCaratulaVigente.TotalPRTasaPropuestaDolares;
|
|
}
|
|
#endregion
|
|
|
|
#endregion
|
|
|
|
#region OfertaFacilidadesComisiones
|
|
|
|
if (FacilidadCaratulaVigente.OfertaFacilidadesComisiones != null && FacilidadCaratulaVigente.OfertaFacilidadesComisiones.Count() > 0)
|
|
facilidad.OfertaFacilidadesComisiones = new List<OfertaFacilidadesComisiones>();
|
|
|
|
#region Actual
|
|
foreach (var ItemOfertaFacilidadesComisiones in FacilidadCaratulaVigente.OfertaFacilidadesComisiones.Where(x => x.EsPropuesta == true))
|
|
{
|
|
facilidad.OfertaFacilidadesComisiones.Add(new OfertaFacilidadesComisiones()
|
|
{
|
|
DetalleComision = ItemOfertaFacilidadesComisiones.DetalleComision,
|
|
EsPropuesta = false,
|
|
FechaCreacion = ItemOfertaFacilidadesComisiones.FechaCreacion,
|
|
Secuencia = ItemOfertaFacilidadesComisiones.Secuencia,
|
|
IdComision = ItemOfertaFacilidadesComisiones.IdComision,
|
|
FechaModificacion = null,
|
|
IdTipoFacilidad = facilidad.IdTipoFacilidad,
|
|
IdSolicitud = facilidad.IdSolicitud,
|
|
Incident = facilidad.Incident,
|
|
Process = facilidad.Process,
|
|
Step = facilidad.Step
|
|
});
|
|
}
|
|
#endregion
|
|
|
|
#region Propuesto
|
|
if (ModeloClientePrincipal.IdTipoTramite == EnumTipoTramite.CambioCondiciones)
|
|
{
|
|
int maxIdComision = 0;
|
|
if (facilidad.OfertaFacilidadesComisiones.Count > 0)
|
|
maxIdComision = facilidad.OfertaFacilidadesComisiones.Max(x => x.IdComision);
|
|
|
|
foreach (var ItemOfertaFacilidadesComisiones in FacilidadCaratulaVigente.OfertaFacilidadesComisiones.Where(x => x.EsPropuesta == true))
|
|
{
|
|
maxIdComision++;
|
|
|
|
facilidad.OfertaFacilidadesComisiones.Add(new OfertaFacilidadesComisiones()
|
|
{
|
|
DetalleComision = ItemOfertaFacilidadesComisiones.DetalleComision,
|
|
EsPropuesta = true,
|
|
FechaCreacion = ItemOfertaFacilidadesComisiones.FechaCreacion,
|
|
Secuencia = ItemOfertaFacilidadesComisiones.Secuencia,
|
|
IdComision = maxIdComision,
|
|
FechaModificacion = null,
|
|
IdTipoFacilidad = facilidad.IdTipoFacilidad,
|
|
IdSolicitud = facilidad.IdSolicitud,
|
|
Incident = facilidad.Incident,
|
|
Process = facilidad.Process,
|
|
Step = facilidad.Step
|
|
});
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
#endregion
|
|
|
|
#region OfertaFacilidadesGarantias
|
|
|
|
if (FacilidadCaratulaVigente.OfertaFacilidadesGarantias != null && FacilidadCaratulaVigente.OfertaFacilidadesGarantias.Count() > 0)
|
|
facilidad.OfertaFacilidadesGarantias = new List<OfertaFacilidadesGarantias>();
|
|
|
|
#region Actual
|
|
foreach (var ItemOfertaFacilidadesGarantias in FacilidadCaratulaVigente.OfertaFacilidadesGarantias.Where(x => x.EsPropuesta == true))
|
|
{
|
|
facilidad.OfertaFacilidadesGarantias.Add(new OfertaFacilidadesGarantias()
|
|
{
|
|
DescTipoGarantia = ItemOfertaFacilidadesGarantias.DescTipoGarantia,
|
|
DetalleGarantia = ItemOfertaFacilidadesGarantias.DetalleGarantia,
|
|
EsPropuesta = false,
|
|
FechaCreacion = ItemOfertaFacilidadesGarantias.FechaCreacion,
|
|
Secuencia = ItemOfertaFacilidadesGarantias.Secuencia,
|
|
IdGarantia = ItemOfertaFacilidadesGarantias.IdGarantia,
|
|
FechaModificacion = null,
|
|
IdTipoFacilidad = facilidad.IdTipoFacilidad,
|
|
IdSolicitud = facilidad.IdSolicitud,
|
|
Incident = facilidad.Incident,
|
|
Process = facilidad.Process,
|
|
Step = facilidad.Step
|
|
});
|
|
}
|
|
#endregion
|
|
|
|
#region Propuesto
|
|
if (ModeloClientePrincipal.IdTipoTramite == EnumTipoTramite.CambioCondiciones)
|
|
{
|
|
int maxIdGarantia = 0;
|
|
if (facilidad.OfertaFacilidadesGarantias.Count > 0)
|
|
maxIdGarantia = facilidad.OfertaFacilidadesGarantias.Max(x => x.IdGarantia);
|
|
|
|
foreach (var ItemOfertaFacilidadesGarantias in FacilidadCaratulaVigente.OfertaFacilidadesGarantias.Where(x => x.EsPropuesta == true))
|
|
{
|
|
maxIdGarantia++;
|
|
|
|
facilidad.OfertaFacilidadesGarantias.Add(new OfertaFacilidadesGarantias()
|
|
{
|
|
DescTipoGarantia = ItemOfertaFacilidadesGarantias.DescTipoGarantia,
|
|
DetalleGarantia = ItemOfertaFacilidadesGarantias.DetalleGarantia,
|
|
EsPropuesta = true,
|
|
FechaCreacion = ItemOfertaFacilidadesGarantias.FechaCreacion,
|
|
Secuencia = ItemOfertaFacilidadesGarantias.Secuencia,
|
|
IdGarantia = maxIdGarantia,
|
|
FechaModificacion = null,
|
|
IdTipoFacilidad = facilidad.IdTipoFacilidad,
|
|
IdSolicitud = facilidad.IdSolicitud,
|
|
Incident = facilidad.Incident,
|
|
Process = facilidad.Process,
|
|
Step = facilidad.Step
|
|
});
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
#endregion
|
|
|
|
}
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
logs.Error(ex);
|
|
}
|
|
finally
|
|
{
|
|
FacilidadOferta = null;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
/// <param name="model"></param>
|
|
private void BuscarCondicionesActuales(Oferta model)
|
|
{
|
|
ClienteFacilidadesDal Conn2 = new ClienteFacilidadesDal();
|
|
List<ClienteFacilidades> FacilidadesCliente = new List<ClienteFacilidades>();
|
|
|
|
try
|
|
{
|
|
FacilidadesCliente = Conn2.ObtenerValorCriteriosSolicitud(model.IdSolicitud);
|
|
foreach (ClienteFacilidades faci in FacilidadesCliente)
|
|
{
|
|
foreach (OfertaFacilidades faciOferta in model.OfertaFacilidades.Where(q => q.IdTipoFacilidad == faci.IdTipoFacilidad && q.Secuencia == 0).ToList())
|
|
{
|
|
faciOferta.CopyValueProperties(faci);
|
|
if (faciOferta.FormasPagos == null)
|
|
faciOferta.FormasPagos = new FormasPagos();
|
|
faciOferta.IdFormaPagoPropuesto = faci.IdFormaPagoPropuesto.Value;
|
|
faciOferta.FormasPagos.IdFormaPago = faci.IdFormaPagoPropuesto.Value;
|
|
faciOferta.FormasPagos.Descripcion = faci.DecFormaPagoPropuesto;
|
|
}
|
|
}
|
|
ObtenerDatosActualesSap(model);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
logs.Error(ex);
|
|
}
|
|
finally
|
|
{
|
|
FacilidadesCliente = null;
|
|
Conn2 = null;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
[HttpPost]
|
|
public BaseJson ValidarLimitePropuestoLinea(OfertaFacilidades model)
|
|
{
|
|
BaseJson respuesta = new BaseJson() { CodigoRespuesta = TipoCodigoRespuesta.EXITOSO.ToString() };
|
|
double dblMontoPropuestoFacilidadesLinea = 0;
|
|
double dblTotalPropuestoFacilidadesLinea = 0;
|
|
try
|
|
{
|
|
Oferta modelOferta = new OfertaDAL().ObtenerOfertaSolicitud(new Oferta() { IdSolicitud = model.IdSolicitud });
|
|
|
|
if (modelOferta != null)
|
|
{
|
|
//if (modelOferta.MontoPropuestoLinea != null && modelOferta.MontoPropuestoLinea > 0) {
|
|
// if (modelOferta.OfertaFacilidades != null && modelOferta.OfertaFacilidades.Count > 0) {
|
|
// dblMontoPropuestoFacilidadesLinea = modelOferta.OfertaFacilidades.Where(x => x.Eslinea == true).Sum(x => (double)(x.MontoPropuesto ?? 0));
|
|
// }
|
|
//}
|
|
|
|
//if (modelOferta.MontoPropuestoLinea != null && modelOferta.MontoPropuestoLinea > 0)
|
|
//{
|
|
// if (modelOferta.OfertaFacilidades != null && modelOferta.OfertaFacilidades.Count > 0)
|
|
// {
|
|
// dblMontoPropuestoFacilidadesLinea = modelOferta.OfertaFacilidades.Where(x => x.Eslinea == true && x.IdTipoFacilidad == model.IdTipoFacilidad).Sum(x => (double)(x.MontoPropuesto ?? 0));
|
|
// }
|
|
//}
|
|
|
|
dblTotalPropuestoFacilidadesLinea = dblMontoPropuestoFacilidadesLinea + (double)(model.MontoPropuesto ?? 0);
|
|
|
|
if (dblTotalPropuestoFacilidadesLinea > (double)(modelOferta.MontoPropuestoLinea ?? 0))
|
|
{
|
|
respuesta.CodigoRespuesta = TipoCodigoRespuesta.ADVERTENCIA.ToString();
|
|
respuesta.DescripcionRespuesta = string.Format("No es permitido que el monto propuesto para la facilidad supere el monto propuesto global de la Línea.", model.TipoFacilidad.Descripcion);
|
|
}
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
respuesta.CodigoRespuesta = TipoCodigoRespuesta.ERROR.ToString();
|
|
respuesta.DescripcionRespuesta = ex.Message;
|
|
|
|
logs.Error(ex);
|
|
}
|
|
finally
|
|
{
|
|
}
|
|
|
|
return respuesta;
|
|
}
|
|
|
|
|
|
}
|
|
} |