/// <summary>
        /// Inicializa la vista para Cerrar un contrato
        /// </summary>
        public void Inicializar()
        {
            try {
                informacionGeneralPRE.Inicializar();
                informacionPagoPRE.Inicializar();
                clienteContratoPRE.Inicializar();
                datosRentaPRE.Inicializar();
                herramientasPRE.Inicializar();

                vista.CodigoUltimoObjeto = "UltimoContratoFSLBO";
                ValidarEstadoContrato();
                ContratoFSLBO contrato = vista.UltimoObjeto;
                DatosAInterfazUsuario(contrato);
                informacionGeneralPRE.Vista.ConfigurarModoConsultar();
                informacionPagoPRE.Vista.ConfigurarModoConsultar();
                clienteContratoPRE.Vista.ConfigurarModoConsultar();
                datosRentaPRE.Vista.ConfigurarModoConsultar();
                lineaContratoPRE.Vista.ConfigurarModoConsultar();
                finalizacionPRE.EstablecerModoEdicion(true);
                clienteContratoPRE.Vista.HabilitarConsultaDireccionCliente(false);
                herramientasPRE.vista.HabilitarOpciones(false);
                herramientasPRE.vista.OcultarFormatosContrato();
                herramientasPRE.vista.OcultarPlantillas();

                EstablecerSeguridad();
            } catch (Exception ex) {
                throw new Exception(nombreClase + ".Inicializar: " + ex.Message);
            }
        }
        /// <summary>
        /// Despliega la informacion del contrato en la Vista
        /// </summary>
        /// <param name="contrato"></param>
        public void DatosAInterfazUsuario(ContratoFSLBO contrato)
        {
            if (contrato == null)
            {
                contrato = new ContratoFSLBO();
            }
            if (contrato.Sucursal == null)
            {
                contrato.Sucursal = new SucursalBO();
            }
            if (contrato.Divisa == null)
            {
                contrato.Divisa = new DivisaBO();
            }
            if (contrato.Divisa.MonedaDestino == null)
            {
                contrato.Divisa.MonedaDestino = new MonedaBO();
            }

            vista.FechaContrato = contrato.FechaContrato;

            if (contrato.Sucursal.Id != null)
            {
                vista.EstablecerSucursalSeleccionada(contrato.Sucursal.Id);
            }

            if (contrato.Divisa.MonedaDestino.Codigo != null)
            {
                vista.EstablecerMonedaSeleccionada(contrato.Divisa.MonedaDestino.Codigo);
            }

            vista.Representante          = contrato.Representante;
            vista.PorcentajePenalizacion = contrato.PorcentajePenalizacion;
        }
示例#3
0
        /// <summary>
        /// Inicializa la vista para editar un contrato
        /// </summary>
        public void Inicializar()
        {
            herramientasPRE.Inicializar();

            vista.CodigoUltimoObjeto = "UltimoContratoFSLBO";

            DesplegarTiposArchivos();

            ContratoFSLBO contrato = vista.UltimoObjeto;

            documentosPRE.ModoEditable(true);

            if (contrato != null && contrato.DocumentosAdjuntos != null && contrato.DocumentosAdjuntos.Count > 0)
            {
                contrato.DocumentosAdjuntos =
                    contrato.DocumentosAdjuntos.Where(archivo => archivo.Activo == true).ToList();
            }

            DatosAInterfazUsuario(contrato);

            herramientasPRE.vista.HabilitarOpcionesEdicion();
            herramientasPRE.vista.DeshabilitarOpcionesEditarContratoFSL();
            herramientasPRE.vista.MarcarOpcionAgregarDocumentos();
            herramientasPRE.vista.OcultarFormatosContrato();
            herramientasPRE.vista.OcultarPlantillas();

            this.EstablecerSeguridad();//SC_0008
        }
示例#4
0
        /// <summary>
        /// Registra el nuevo contrato en la base de datos
        /// </summary>
        /// <param name="contrato">Contrato a Registrar</param>
        /// <returns>Retorna el Identificador del Nuevo Contrato</returns>
        private int? GuardarContrato(ContratoFSLBO contrato)
        {
            try
            {
                //SC_0008
                SeguridadBO seguridadBO = new SeguridadBO(Guid.Empty, new UsuarioBO { Id = this.vista.UsuarioID }, new AdscripcionBO
                {
                    Departamento = new DepartamentoBO(),
                    Sucursal = new SucursalBO(),
                    UnidadOperativa = new UnidadOperativaBO { Id = this.vista.UnidadAdscripcionID }
                });
                //END SC_0008

                var contratoBR = new ContratoFSLBR();
                contratoBR.InsertarCompleto(dataContext, contrato, seguridadBO);
                DataSet ds = contratoBR.ConsultarSet(dataContext, contrato);

                if (ds.Tables[0].Rows.Count > 0)
                {
                    return ds.Tables[0].Rows[0].Field<int>("ContratoID");
                }
                return null;
            }
            catch (Exception ex)
            {
                throw new Exception(nombreClase + ".GuardarContrato:" + ex.Message);
            }

        }
示例#5
0
        /// <summary>
        /// Despliega los datos en la interfaz de usuario
        /// </summary>
        /// <param name="contrato">contrato que contiene la informacion a desplegar</param>
        public void DatosAInterfazUsuario(ContratoFSLBO contrato)
        {
            if (contrato == null)
            {
                contrato = new ContratoFSLBO();
            }
            #region Cuenta Bancaria
            //if(contrato.Banco == null) contrato.Banco = new Banco();

            //vista.Banco = contrato.Banco.Nombre != null && !string.IsNullOrEmpty(contrato.Banco.Nombre)
            //                           ? contrato.Banco.Nombre
            //                           : null;
            //vista.Beneficiario = contrato.Banco.Beneficiario != null && !string.IsNullOrEmpty(contrato.Banco.Beneficiario)
            //                           ? contrato.Banco.Beneficiario
            //                           : null;
            //vista.EstablecerCuentaBancariaSeleccionada(contrato.Banco.Id);
            #endregion
            vista.FechaInicioContrato = contrato.FechaInicioContrato;

            CalcularFechaTerminacionContrato(contrato.Plazo);
            #region Cuenta Bancaria
            //vista.Lugar = contrato.Banco.Ciudad != null && !string.IsNullOrEmpty(contrato.Banco.Ciudad)
            //                  ? contrato.Banco.Ciudad
            //                  : null;
            #endregion
            vista.Mensualidad = contrato.CalcularMensualidad();

            vista.Total = contrato.CalcularTotalAPagar();

            vista.DiasPago = contrato.DiasPago;
        }
示例#6
0
        /// <summary>
        /// Guarda un Contrato con Estatus de Borrador
        /// </summary>
        public void GuardarContratoBorrador()
        {
            string resultado = ValidarContratoBorrador();

            if (!string.IsNullOrEmpty(resultado))
            {
                vista.MostrarMensaje(resultado, ETipoMensajeIU.INFORMACION);
                return;
            }

            try
            {
                ContratoFSLBO contrato = InterfazUsuarioADatos();
                contrato.Estatus = EEstatusContrato.Borrador;


                int? contratoID = GuardarContrato(contrato);
                if (contratoID != null)
                {
                    vista.EstablecerPaqueteNavegacion(vista.Clave, contrato);
                    vista.MostrarMensaje("Se ha guardado del contrato exitosamente.", ETipoMensajeIU.EXITO);
                    vista.IrADetalle();
                }
                else
                    vista.MostrarMensaje("Inconsistencias al intentar guardar el contrato.", ETipoMensajeIU.ADVERTENCIA);
            }
            catch (Exception ex)
            {
                throw new Exception(nombreClase + ".GuardarContratoBorrador:" + ex.Message);
            }
        }
示例#7
0
        /// <summary>
        /// Actualiza la lista de documentos
        /// </summary>
        public void ActualizarDocumentos()
        {
            try
            {
                //SC_0008
                SeguridadBO seguridadBO = new SeguridadBO(Guid.Empty, new UsuarioBO {
                    Id = this.vista.UsuarioID
                }, new AdscripcionBO
                {
                    Departamento    = new DepartamentoBO(),
                    Sucursal        = new SucursalBO(),
                    UnidadOperativa = new UnidadOperativaBO {
                        Id = this.vista.UnidadAdscripcionID
                    }
                });
                //End SC_0008

                ContratoFSLBO    contrato = vista.UltimoObjeto;
                List <ArchivoBO> adjuntos = documentosPRE.Vista.ObtenerArchivos();
                foreach (ArchivoBO adjuntoContratoBo in adjuntos)
                {
                    adjuntoContratoBo.TipoAdjunto = ETipoAdjunto.ContratoFSL;
                }
                contrato.DocumentosAdjuntos = adjuntos;

                // Se agrega la Auditoria de cada uno de los documentos adjuntos
                foreach (ArchivoBO adjunto in contrato.DocumentosAdjuntos)
                {
                    if (adjunto.Id == null)
                    {
                        adjunto.Auditoria = new AuditoriaBO
                        {
                            FC  = contrato.FUA,
                            UC  = contrato.UUA,
                            FUA = contrato.FUA,
                            UUA = contrato.UUA
                        };
                    }
                    else
                    {
                        adjunto.Auditoria.FUA = contrato.FUA;
                        adjunto.Auditoria.UUA = contrato.UUA;
                    }
                }

                // Se actualiza el Contrato
                var contratoBR = new ContratoBR();
                contratoBR.ActualizarDocumento(dataContext, contrato, vista.UltimoObjeto, seguridadBO);//SC_0008
                vista.EstablecerPaqueteNavegacion(vista.Codigo, contrato);
                vista.IrADetalleContrato();
                vista.MostrarMensaje("Se han actualizado los documentos del contrato exitosamente.", ETipoMensajeIU.EXITO);
            }
            catch (Exception ex)
            {
                vista.MostrarMensaje("Inconsistencia al actualizar los documentos del contrato", ETipoMensajeIU.ERROR, nombreClase + ".AgregarDocumentos:" + ex.Message);
            }
        }
        /// <summary>
        /// Valida que el contrato a cerrar se encuentre en curso.
        /// </summary>
        public void ValidarEstadoContrato()
        {
            ContratoFSLBO contrato = vista.UltimoObjeto;

            if (contrato == null || contrato.Estatus != EEstatusContrato.EnCurso)
            {
                vista.RedirigirSinPermisoAcceso();
            }
        }
示例#9
0
 /// <summary>
 /// Despliega los datos del contrato en la interfaz de usuario
 /// </summary>
 /// <param name="contrato">Contrato que contiene los datos</param>
 public void DatosAInterfazUsuario(ContratoFSLBO contrato)
 {
     vista.ContratoID = contrato.ContratoID;
     vista.Estatus    = contrato.Estatus;
     if (contrato.Sucursal != null && contrato.Sucursal.UnidadOperativa != null)
     {
         vista.UnidadOperativaContratoID = contrato.Sucursal.UnidadOperativa.Id;
     }
     herramientasPRE.DatosAInterfazUsuario(contrato);
     documentosPRE.CargarListaArchivos(contrato.DocumentosAdjuntos, documentosPRE.Vista.TiposArchivo);
 }
        /// <summary>
        /// Despliega los datos del contrato en la interfaz de usuario
        /// </summary>
        /// <param name="contrato">Contrato FSL que contiene los datos a desplegar</param>
        public void DatosAInterfazUsuario(ContratoFSLBO contrato)
        {
            contrato = contrato ?? new ContratoFSLBO();

            vista.NumeroContrato = contrato.NumeroContrato != null && !string.IsNullOrEmpty(contrato.NumeroContrato)
                                       ? contrato.NumeroContrato
                                       : null;
            vista.EstatusContrato = contrato.Estatus;

            vista.Configurar(contrato.Estatus);
        }
 /// <summary>
 ///  Establece el paquete navegacion de UltimoContrato para Edicion.
 /// </summary>
 /// <param name="clave">Clave del paquete de navegacion</param>
 /// <param name="contrato">Contrato a editar</param>
 public void EstablecerPaqueteNavegacionEditar(string clave, ContratoFSLBO contrato)
 {
     if (!String.IsNullOrEmpty(clave))
     {
         Session[clave] = contrato;
     }
     else
     {
         throw new Exception(NombreClase +
                             ".EstablecerPaqueteNavegacionEditar: No se ha proporcionado la clave para el paquete de navegación del contrato a editar.");
     }
 }
示例#12
0
 /// <summary>
 /// Establece el paquete de navegacion con el nuevo contrato
 /// </summary>
 /// <param name="codigo"></param>
 /// <param name="contrato"></param>
 public void EstablecerPaqueteNavegacion(string codigo, ContratoFSLBO contrato)
 {
     if (contrato != null && contrato.ContratoID != null)
     {
         Session[Clave] = contrato;
     }
     else
     {
         throw new Exception(NombreClase +
                             ".EstablecerPaqueteNavegacion: El contrato proporcionado no contiene un identificador.");
     }
 }
示例#13
0
 /// <summary>
 /// Obtiene el Contrato presentado y se redirige a la interfaz de Modificacion de Lineas
 /// </summary>
 public void ModificarUnidadesContrato()
 {
     try
     {
         ContratoFSLBO contrato = InterfazUsuarioADatos();
         vista.EstablecerPaqueteNavegacionEditar("ContratoFSLEditar", contrato);
         vista.IrAModificarLineas();
     }
     catch (Exception ex)
     {
         vista.MostrarMensaje("Inconsistencias al intentar Modificar Lineas del contrato.", ETipoMensajeIU.ERROR, nombreClase + ".ModificarUnidadesContrato: " + ex.Message);
     }
 }
示例#14
0
 /// <summary>
 /// Envía el Contrato a Cerrar Contrato
 /// </summary>
 public void CerrarContrato()
 {
     try
     {
         ContratoFSLBO contrato = InterfazUsuarioADatos();
         vista.Contrato = contrato;
         contrato       = ObtenerContrato();
         vista.EstablecerPaqueteNavegacionEditar("UltimoContratoFSLBO", contrato);
         vista.IrACerrarContrato();
     }
     catch (Exception ex)
     {
         vista.MostrarMensaje("Inconsistencias al intentar cerrar el contrato.", ETipoMensajeIU.ERROR, nombreClase + ".CerrarContrato: " + ex.Message);
     }
 }
 /// <summary>
 /// Regresar a la pantalla de Detalles
 /// </summary>
 public void RegresarADetalles()
 {
     try {
         ContratoFSLBO contrato = new ContratoFSLBO {
             ContratoID = vista.ContratoID
         };
         ContratoFSLBR ContratoBR = new ContratoFSLBR();
         contrato = ContratoBR.ConsultarCompleto(dataContext, contrato)[0];
         vista.EstablecerPaqueteNavegacion(vista.Codigo, contrato);
         vista.LimpiarSesion();
         vista.IrADetalleContrato();
     } catch (Exception ex) {
         throw new Exception(nombreClase + ".RegresarADetalles: " + ex.Message);
     }
 }
示例#16
0
 /// <summary>
 /// Calcula los Pagos Totales y Mensuales
 /// </summary>
 public void CalcularTotales()
 {
     try
     {
         var contrato = new ContratoFSLBO
         {
             LineasContrato = datosRentaPRE.Vista.LineasContrato.ConvertAll(ln => (ILineaContrato)ln),
             Plazo = datosRentaPRE.Vista.PlazoMeses
         };
         informacionPagoPRE.Vista.Total = contrato.CalcularTotalAPagar();
         informacionPagoPRE.Vista.Mensualidad = contrato.CalcularMensualidad();
     }
     catch (Exception ex)
     {
         throw new Exception(nombreClase + ".CalcularTotales:" + ex.Message);
     }
 }
示例#17
0
        /// <summary>
        /// Despliega los datos en la Interfaz de Usuario
        /// </summary>
        private void DatosAIntefazUsuario()
        {
            ContratoFSLBO contrato = ObtenerContrato();

            if (contrato.Sucursal == null)
            {
                contrato.Sucursal = new SucursalBO();
            }
            if (contrato.Sucursal.UnidadOperativa == null)
            {
                contrato.Sucursal.UnidadOperativa = new UnidadOperativaBO();
            }

            vista.Contrato                  = contrato;
            vista.ContratoID                = contrato.ContratoID;
            vista.EstatusContrato           = contrato.Estatus;
            vista.UnidadOperativaContratoID = contrato.Sucursal.UnidadOperativa.Id;

            informacionGeneralPRE.DatosAInterfazUsuario(contrato);
            informacionPagoPRE.DatosAInterfazUsuario(contrato);
            clienteContratoPRE.DatosAInterfazUsuario(contrato);
            datosRentaPRE.DatosAInterfazUsuario(contrato);
            herramientasPRE.DatosAInterfazUsuario(contrato);

            datosAdicionalesPRE.DatosAInterfazUsuario(contrato); //SC0007

            vista.DatosAInterfazUsuario(contrato);

            if (contrato.InpcContrato != null)
            {
                if (contrato.InpcContrato.Fijo != null)
                {
                    vista.InpcFijo = contrato.InpcContrato.Fijo;
                }
                if (contrato.InpcContrato.FechaInicio != null)
                {
                    vista.FechaInicioINPC = contrato.InpcContrato.FechaInicio;
                }
                if (contrato.InpcContrato.Valor != null)
                {
                    vista.ValorInpc = contrato.InpcContrato.Valor;
                }
            }
        }
 /// <summary>
 /// Despliega los datos del contrato en la interfaz de usuario
 /// </summary>
 /// <param name="contrato">Contrato que contiene los datos</param>
 public void DatosAInterfazUsuario(ContratoFSLBO contrato)
 {
     try {
         vista.ContratoID = contrato.ContratoID;
         vista.Estatus    = contrato.Estatus;
         if (contrato.Sucursal != null && contrato.Sucursal.UnidadOperativa != null)
         {
             vista.UnidadOperativaContratoID = contrato.Sucursal.UnidadOperativa.Id;
         }
         herramientasPRE.DatosAInterfazUsuario(contrato);
         informacionGeneralPRE.DatosAInterfazUsuario(contrato);
         clienteContratoPRE.DatosAInterfazUsuario(contrato);
         datosRentaPRE.DatosAInterfazUsuario(contrato);
         informacionPagoPRE.DatosAInterfazUsuario(contrato);
         finalizacionPRE.Inicializar(contrato);
     } catch (Exception ex) {
         throw new Exception(nombreClase + ".DatosAInterfazUsuario:" + ex.Message);
     }
 }
        private List <PagoUnidadContratoFSLBO> ObtenerPagos(ContratoFSLBO contrato, DateTime FechaCierre)
        {
            var pagoBR = new PagoUnidadContratoBR();

            var pago = new PagoUnidadContratoBOF
            {
                ReferenciaContrato = new ReferenciaContratoBO {
                    ReferenciaContratoID = contrato.ContratoID, UnidadOperativa = new UnidadOperativaBO {
                        Id = vista.UnidadOperativaContratoID
                    }
                },
                Facturado = false,
                FechaVencimientoInicial = FechaCierre, Sucursales = new List <SucursalBO> {
                    contrato.Sucursal
                },
            };

            var pagos = pagoBR.ConsultarFiltroSinCuentas(dataContext, pago, true);

            return(pagos.Cast <PagoUnidadContratoFSLBO>().ToList());
        }
 public void Inicializar(ContratoFSLBO contrato)
 {
     try {
         vista.Mensualidad            = contrato.CalcularMensualidad();
         vista.Plazo                  = contrato.Plazo;
         vista.FechaInicioContrato    = contrato.FechaInicioContrato;
         vista.FechaFinContrato       = ((DateTime)contrato.FechaInicioContrato).AddMonths((int)contrato.Plazo);
         vista.PorcentajePenalizacion = contrato.PorcentajePenalizacion;
         if (contrato.CierreContrato != null && contrato.CierreContrato.Fecha != null)
         {
             vista.FechaCierre         = contrato.CierreContrato.Fecha;
             vista.ObservacionesCierre = contrato.Observaciones;
             if (DateTime.Compare((DateTime)contrato.CierreContrato.Fecha, (DateTime)contrato.CalcularFechaTerminacionContrato()) < 0)
             {
                 vista.Penalizacion           = ((CierreAnticipadoContratoFSLBO)contrato.CierreContrato).CantidadPenalizacion;
                 vista.MotivoCierreAnticipado = ((CierreAnticipadoContratoFSLBO)contrato.CierreContrato).Motivo;
             }
         }
     } catch (Exception ex) {
         vista.MostrarMensaje("Error al desplegar los datos de cierre", ETipoMensajeIU.ADVERTENCIA);
     }
 }
示例#21
0
        /// <summary>
        /// Elimina la linea de contrato desplegada en la Interfaz de Usuario (Con estatus Borrador)
        /// </summary>
        public void EliminarContrato()
        {
            try
            {
                ContratoFSLBO contratoEliminar = InterfazUsuarioADatos();

                if (contratoEliminar.Estatus != EEstatusContrato.Borrador)
                {
                    vista.MostrarMensaje("El contrato debe tener estatus Borrador para ser eliminado.", ETipoMensajeIU.INFORMACION);
                    return;
                }

                contratoEliminar.FUA = vista.FUA;
                contratoEliminar.UUA = vista.UUA;

                var contratoBR = new ContratoFSLBR();
                //SC_0008
                SeguridadBO seguridadBO = new SeguridadBO(Guid.Empty, new UsuarioBO {
                    Id = this.vista.UsuarioID
                }, new AdscripcionBO
                {
                    Departamento    = new DepartamentoBO(),
                    Sucursal        = new SucursalBO(),
                    UnidadOperativa = new UnidadOperativaBO {
                        Id = this.vista.UnidadAdscripcionID
                    }
                });
                //END SC_0008
                contratoBR.BorrarCompleto(dataContext, contratoEliminar, seguridadBO);

                vista.MostrarMensaje("El contrato ha sido eliminado exitosamente.", ETipoMensajeIU.EXITO);

                vista.RegresarAConsultar();
            }
            catch (Exception ex)
            {
                vista.MostrarMensaje("Inconsistencias al intentar eliminar el contrato", ETipoMensajeIU.ERROR, nombreClase + ".EliminarContrato: " + ex.Message);
            }
        }
        /// <summary>
        /// Despliega la informacion del contrato en la Vista
        /// </summary>
        /// <param name="contrato"></param>
        public void DatosAInterfazUsuario(ContratoFSLBO contrato)
        {
            if (contrato == null)
            {
                contrato = new ContratoFSLBO();
            }

            vista.LineasContrato = (contrato.LineasContrato != null) ? contrato.LineasContrato.ConvertAll(s => (LineaContratoFSLBO)s) : null;
            vista.PlazoMeses     = contrato.Plazo;
            int?plazo = contrato.CalcularPlazoEnAños();

            vista.PlazoAnios      = plazo != null ? plazo.Value : 0;
            vista.UbicacionTaller = contrato.UbicacionTaller;
            vista.EstablecerIncluyeLavadoSeleccionado(contrato.IncluyeLavado);
            vista.EstablecerIncluyeLlantasSeleccionado(contrato.IncluyeLlantas);
            vista.EstablecerIncluyePinturaSeleccionado(contrato.IncluyePinturaRotulacion);
            vista.EstablecerIncluyeSeguroSeleccionado(contrato.IncluyeSeguro);

            vista.EstablecerFrecuenciaSeguro(contrato.FrecuenciaSeguro);

            vista.PermitirFrecuenciaSeguro(contrato.IncluyeSeguro != null && contrato.IncluyeSeguro == ETipoInclusion.NoIncluidoCargoCliente);
            vista.PorcentajeSeguro = contrato.PorcentajeSeguro;
        }
 public void CalcularPlazoAnios()
 {
     try
     {
         if (vista.PlazoMeses != null)
         {
             var calcularPlazoEnAños = new ContratoFSLBO {
                 Plazo = vista.PlazoMeses
             }.CalcularPlazoEnAños();
             if (calcularPlazoEnAños != null)
             {
                 vista.PlazoAnios = calcularPlazoEnAños.Value;
             }
         }
         else
         {
             vista.PlazoAnios = 0;
         }
     }
     catch (Exception ex)
     {
         vista.MostrarMensaje("Inconsistencias al calcular el plazo en años.", ETipoMensajeIU.ERROR, NombreClase + ".CalcularPlazoAnios: " + ex.Message);
     }
 }
示例#24
0
        public void ConsultarContrato()
        {
            try
            {
                if (this.vista.TipoContratoID == null)
                {
                    throw new Exception("No se identificó el tipo de contrato que desea ver");
                }

                ETipoContrato tipo = (ETipoContrato)Enum.Parse(typeof(ETipoContrato), this.vista.TipoContratoID.ToString());
                switch (tipo)
                {
                case ETipoContrato.CM:
                    #region Ir a CM
                    ContratoManttoBO boCM = new ContratoManttoBO()
                    {
                        ContratoID = this.vista.ContratoID
                    };

                    this.LimpiarSesion();
                    this.vista.EstablecerPaqueteNavegacion("ContratoManttoBO", boCM);

                    this.vista.RedirigirADetalleContratoCM();
                    #endregion
                    break;

                case ETipoContrato.FSL:
                    #region Ir a FSL
                    ContratoFSLBO boFSL = new ContratoFSLBO()
                    {
                        ContratoID = this.vista.ContratoID
                    };

                    this.LimpiarSesion();
                    this.vista.EstablecerPaqueteNavegacion("ContratoFSLBO", boFSL);

                    this.vista.RedirigirADetalleContratoFSL();
                    #endregion
                    break;

                case ETipoContrato.RD:
                    #region Ir a RD
                    ContratoRDBO boRD = new ContratoRDBO()
                    {
                        ContratoID = this.vista.ContratoID
                    };

                    this.LimpiarSesion();
                    this.vista.EstablecerPaqueteNavegacion("ContratoRDBO", boRD);

                    this.vista.RedirigirADetalleContratoRD();
                    #endregion
                    break;

                case ETipoContrato.SD:
                    #region Ir a SD
                    ContratoManttoBO boSD = new ContratoManttoBO()
                    {
                        ContratoID = this.vista.ContratoID
                    };

                    this.LimpiarSesion();
                    this.vista.EstablecerPaqueteNavegacion("ContratoManttoBO", boSD);

                    this.vista.RedirigirADetalleContratoSD();
                    #endregion
                    break;

                default:
                    throw new Exception("No se identificó el tipo de contrato que desea ver");
                }
            }
            catch (Exception ex)
            {
                throw new Exception(this.nombreClase + ".ConsultarContrato: " + ex.Message);
            }
        }
        /// <summary>
        /// Despliega los datos del contrato en la interfaz de usuario
        /// </summary>
        /// <param name="contrato">Contrato que contiene los datos a desplegar</param>
        public void DatosAInterfazUsuario(ContratoFSLBO contrato)
        {
            if (contrato == null)
            {
                contrato = new ContratoFSLBO();
            }
            if (contrato.Cliente == null)
            {
                contrato.Cliente = new CuentaClienteIdealeaseBO();
            }
            if (contrato.Cliente.Cliente == null)
            {
                contrato.Cliente.Cliente = new ClienteBO();
            }

            vista.CuentaClienteID     = contrato.Cliente.Id;
            vista.ClienteID           = contrato.Cliente.Cliente.Id;
            vista.NombreCuentaCliente = contrato.Cliente.Nombre;
            vista.ClienteNumeroCuenta = contrato.Cliente.Numero;
            vista.EsFisico            = contrato.Cliente.EsFisico;
            vista.SoloRepresentantes  = contrato.SoloRepresentantes;
            vista.ObligadosComoAvales = contrato.ObligadosComoAvales;

            if (contrato.Cliente.Direcciones.Count > 0)
            {
                if (contrato.Cliente.Direcciones.Count == 1)
                {
                    var bof = new DireccionCuentaClienteBOF {
                        Direccion = contrato.Cliente.Direcciones[0]
                    };
                    EstablecerDatosDireccionCliente(bof);
                }
                else
                {
                    vista.MostrarMensaje("Inconsistencias en las direcciones del cliente, la consulta regreso mas de una dirección", ETipoMensajeIU.ADVERTENCIA);
                }
            }

            if (vista.CuentaClienteID != null && vista.ClienteID != null && !string.IsNullOrEmpty(vista.NombreCuentaCliente) && vista.ModoEditar)
            {
                DesplegarPersonasCliente();
            }

            if (vista.EsFisico != true)
            {
                vista.RepresentantesLegalesContrato = contrato.RepresentantesLegales.ConvertAll(s => (RepresentanteLegalBO)s);
                vista.ConfigurarClienteMoral();
            }
            else
            {
                vista.HabilitarAgregarRepresentanteLegal(false);
                vista.HabilitarListadoRepresentantesLegales(false);
                vista.HabilitarSoloRepresentantes(false);
                vista.PermitirAgregarAvales(false);
                vista.PermitirSeleccionarAvales(false);
                vista.HabilitarObligadosComoAvales(false);
                vista.ConfigurarClienteFisico();
            }

            if (vista.SoloRepresentantes != true)
            {
                vista.ObligadosSolidariosContrato = contrato.ObligadosSolidarios.ConvertAll(s => (ObligadoSolidarioBO)s);
                vista.HabilitarAgregarObligadoSolidario(true);
                vista.HabilitarListadoObligadosSolidarios(true);
                if (vista.ObligadosComoAvales != true)
                {
                    vista.AvalesSeleccionados = new List <AvalBO>(contrato.Avales);
                    vista.PermitirAgregarAvales(true);
                    vista.PermitirSeleccionarAvales(true);
                    vista.HabilitarObligadosComoAvales(true);
                    vista.ActualizarAvales();
                    Vista.MostrarAvales(true);
                }
            }
            else
            {
                vista.HabilitarAgregarObligadoSolidario(false);
                vista.HabilitarListadoObligadosSolidarios(false);
                vista.MostrarObligadosSolidarios(false);
                vista.MostrarAvales(false);
                vista.PermitirAgregarAvales(false);
                vista.PermitirSeleccionarAvales(false);
            }
        }
 internal void DatosAInterfazUsuario(ContratoFSLBO contrato)
 {
     vista.DatosAdicionales = contrato.DatosAdicionalesAnexo;
     vista.ContratoID       = contrato.ContratoID;
 }
        /// <summary>
        /// Obtiene el Contrato que sera Editado
        /// </summary>
        private void ConsultarCompleto()
        {
            ContratoBO contrato = new ContratoProxyBO()
            {
                ContratoID = this.vista.ContratoId
            };
            ContratoBO contratoCompleto = null;

            switch (this.vista.TipoContrato)
            {
            case ETipoContrato.RD:
                ContratoRDBR controladorRD = new ContratoRDBR();
                var          contratoRd    = new ContratoRDBO((ContratoBO)contrato);
                var          contratosRd   = controladorRD.ConsultarCompleto(this.dataContext, contratoRd);
                contratoCompleto = contratosRd.FirstOrDefault();

                this.controlador          = new ContratoRDBR();
                this.vista.ObjetoAnterior = contratoCompleto != null?controladorRD.ConsultarCompleto(this.dataContext, contratoRd).FirstOrDefault() : null;

                break;

            case ETipoContrato.FSL:
                ContratoFSLBR controladorFsl = new ContratoFSLBR();
                var           contratoFsl    = new ContratoFSLBO()
                {
                    ContratoID = this.vista.ContratoId
                };
                var contratosFsl = controladorFsl.ConsultarCompleto(this.dataContext, contratoFsl);
                contratoCompleto = contratosFsl.FirstOrDefault();

                this.controlador          = new ContratoFSLBR();
                this.vista.ObjetoAnterior = contratoCompleto != null?controladorFsl.ConsultarCompleto(this.dataContext, contratoFsl).FirstOrDefault() : null;

                break;

            case ETipoContrato.CM:
            case ETipoContrato.SD:
                ContratoManttoBR controladorMantto = new ContratoManttoBR();
                var contratoMantto  = new ContratoManttoBO((ContratoBO)contrato);
                var contratosMantto = controladorMantto.ConsultarCompleto(this.dataContext, contratoMantto, false);
                contratoCompleto = contratosMantto.FirstOrDefault();

                this.controlador          = new ContratoManttoBR();
                this.vista.ObjetoAnterior = contratoCompleto != null?controladorMantto.ConsultarCompleto(this.dataContext, contratoMantto, false).FirstOrDefault() : null;

                break;

            default:
                contratoCompleto = null;
                break;
            }
            if (contratoCompleto != null)
            {
                this.vista.ContratoId            = contratoCompleto.ContratoID;
                this.vista.NumeroContrato        = contratoCompleto.NumeroContrato;
                this.vista.SucursalIdAntigua     = contratoCompleto.Sucursal.Id;
                this.vista.SucursalNombreAntigua = contratoCompleto.Sucursal.Nombre;
                this.vista.TipoContrato          = contratoCompleto.Tipo;
                this.vista.ContratoConsultado    = contratoCompleto;
            }
            else
            {
                throw new Exception(nombreClase + ".ConsultarCompleto: No se encontro el Contrato solicitado");
            }
        }
        /// <summary>
        /// Metodo que genera el pago adicional
        /// </summary>
        public void GenerarPagoAdicional()
        {
            try
            {
                string validacion = this.ValidarPagoAdicional();
                if (!String.IsNullOrEmpty(validacion))
                {
                    this.vista.MostrarMensaje("No se puede generar el pago Adicional: " + validacion, ETipoMensajeIU.INFORMACION);
                    return;
                }

                ContratoBO        contratoBo     = null;
                IGeneradorPagosBR generadorPagos = null;
                SeguridadBO       seguridadBo    = this.CrearObjetoSeguridad();
                List <ContratoBO> contratos      = new List <ContratoBO>();
                switch (vista.TipoContrato)
                {
                case ETipoContrato.RD:
                    contratoBo = new ContratoRDBO {
                        ContratoID = this.vista.ContratoID
                    };
                    var contratosRd = new ContratoRDBR().ConsultarCompleto(this.dctx, (ContratoRDBO)contratoBo, false);
                    contratos.AddRange(contratosRd);
                    generadorPagos = new GeneradorPagoRDBR();
                    break;

                case ETipoContrato.FSL:
                    contratoBo = new ContratoFSLBO {
                        ContratoID = this.vista.ContratoID
                    };
                    var contratosFsl = new ContratoFSLBR().ConsultarCompleto(this.dctx, (ContratoFSLBO)contratoBo);
                    contratos.AddRange(contratosFsl);
                    generadorPagos = new GeneradorPagosFSLBR();
                    break;

                case ETipoContrato.CM:
                case ETipoContrato.SD:
                    contratoBo = new ContratoManttoBO {
                        ContratoID = this.vista.ContratoID
                    };
                    var contratosMantto = new ContratoManttoBR().ConsultarCompleto(this.dctx, (ContratoManttoBO)contratoBo, true, false);
                    contratos.AddRange(contratosMantto);
                    generadorPagos = new GeneradorPagosManttoBR();
                    break;
                }
                if (generadorPagos == null)
                {
                    throw new Exception("No se pudo determinar el Tipo del Pago a Generar.");
                }

                generadorPagos.GenerarPagoAdicional(this.dctx, contratos.First(), (ultimoPagoContrato.NumeroPago.Value + 1), seguridadBo, false, true);
                PagoUnidadContratoBO pagoBo = new PagoUnidadContratoBOF {
                    ReferenciaContrato = new ReferenciaContratoBO()
                    {
                        ReferenciaContratoID = this.vista.ContratoID
                    }
                };
                PagoUnidadContratoBR pagoBr = new PagoUnidadContratoBR();
                var pagos = pagoBr.Consultar(this.dctx, (PagoUnidadContratoBO)pagoBo);

                this.Inicializar();

                this.vista.MostrarMensaje("El pago " + pagos.Last().NumeroPago.ToString() + " con Fecha " + pagos.Last().FechaVencimiento.Value.ToShortDateString() + " se ha Creado con Éxito.", ETipoMensajeIU.EXITO);
            }
            catch (Exception ex)
            {
                this.vista.MostrarMensaje("Error al generar el pago Adicional", ETipoMensajeIU.ERROR, NombreClase + ".GenerarPagoAdicional: " + ex.GetBaseException().Message);
            }
        }
        /// <summary>
        /// Determina si es posible generar el pago adicional del contrato
        /// </summary>
        /// <returns>Devuelve la inconsitencia encontrada para genera el pago adicional</returns>
        private string ValidarPagoAdicional()
        {
            if (this.vista.TipoContrato == null)
            {
                return("No se ha seleccionado del Departamento del Contrato");
            }
            if (this.vista.SucursalID == null)
            {
                return("No se ha seleccionado la Sucursal del Contrato");
            }
            if (String.IsNullOrEmpty(this.vista.FolioContrato))
            {
                return("No se ha introducido el Folio del Contrato");
            }

            ContratoBO contratoBo = null;

            List <ContratoBO> contratos = new List <ContratoBO>();

            switch (vista.TipoContrato)
            {
            case ETipoContrato.RD:
                contratoBo = new ContratoRDBO {
                    NumeroContrato = vista.FolioContrato, Sucursal = new SucursalBO {
                        Id = vista.SucursalID
                    }, Estatus = EEstatusContrato.EnCurso
                };
                var contratosRD = new ContratoRDBR().Consultar(this.dctx, (ContratoRDBO)contratoBo);
                contratos.AddRange(contratosRD);
                break;

            case ETipoContrato.FSL:
                contratoBo = new ContratoFSLBO {
                    NumeroContrato = vista.FolioContrato, Sucursal = new SucursalBO {
                        Id = vista.SucursalID
                    }, Estatus = EEstatusContrato.EnCurso
                };
                var contratosFsl = new ContratoFSLBR().Consultar(this.dctx, (ContratoFSLBO)contratoBo);
                contratos.AddRange(contratosFsl);
                break;

            case ETipoContrato.CM:
            case ETipoContrato.SD:
                contratoBo = new ContratoManttoBO {
                    NumeroContrato = vista.FolioContrato, Tipo = vista.TipoContrato, Sucursal = new SucursalBO {
                        Id = vista.SucursalID
                    }, Estatus = EEstatusContrato.EnCurso
                };
                var contratosMantto = new ContratoManttoBR().Consultar(this.dctx, (ContratoManttoBO)contratoBo);
                contratos.AddRange(contratosMantto);
                break;
            }

            if (!contratos.Any())
            {
                return("No se encontró el Contrato solicitado");
            }
            switch (vista.TipoContrato)
            {
            case ETipoContrato.RD:
                var contratoRD = contratos.FirstOrDefault() as ContratoRDBO;
                if (!String.IsNullOrEmpty(TiempoMaximoRecepcionRD))
                {
                    if (DateTime.Now < contratoRD.FechaPromesaDevolucion.Value.AddHours(int.Parse(TiempoMaximoRecepcionRD)))
                    {
                        return("Deben pasar al menos " + TiempoMaximoRecepcionRD + " hrs para poder generar un pago adicional después de la Fecha de Promesa de Devolución.");
                    }
                }

                break;
            }
            this.vista.ContratoID = contratos.FirstOrDefault().ContratoID;

            PagoUnidadContratoBO pagoBo = new PagoUnidadContratoBOF {
                ReferenciaContrato = new ReferenciaContratoBO()
                {
                    ReferenciaContratoID = this.vista.ContratoID
                }
            };
            PagoUnidadContratoBR pagoBr = new PagoUnidadContratoBR();
            var pagos = pagoBr.Consultar(this.dctx, (PagoUnidadContratoBO)pagoBo);

            if (!pagos.Any())
            {
                return("No se han generado Pagos para el Contrato");
            }

            var ultimoPago = pagos.Last(x => x.Activo.Value);

            if (ultimoPago.EnviadoFacturacion != null && !ultimoPago.EnviadoFacturacion.Value)
            {
                return("No se ha Facturado el Último Pago Activo del Contrato");
            }

            this.ultimoPagoContrato = ultimoPago;

            return(null);
        }
示例#30
0
        /// <summary>
        /// Guarda un contrato con estatus de En Curso
        /// </summary>
        public void GuardarContratoEnCurso()
        {
            string resultado = ValidarContratoEnCurso();

            if (!string.IsNullOrEmpty(resultado))
            {
                vista.MostrarMensaje(resultado, ETipoMensajeIU.INFORMACION);
                return;
            }

            #region Se inicia la Transaccion
            dataContext.SetCurrentProvider("Outsourcing");
            Guid firma = Guid.NewGuid();
            try
            {
                dataContext.OpenConnection(firma);
                dataContext.BeginTransaction(firma);
            }

            catch(Exception)
            {
                if(dataContext.ConnectionState == ConnectionState.Open)
                    dataContext.CloseConnection(firma);
                throw new Exception("Se encontraron inconsistencias al insertar el Contrato.");
            }
            #endregion

            try
            {
                ContratoFSLBO contrato = InterfazUsuarioADatos();
                contrato.Estatus = EEstatusContrato.EnCurso;
                
                int? contratoID=  GuardarContrato(contrato);
                if (contratoID != null)
                {
                    #region SC0001 BEP1401 - Registra los pagos del Contrato

                    contrato.ContratoID = contratoID;
                    GeneradorPagosFSLBR generadorPagosFsl = new GeneradorPagosFSLBR();

                    SeguridadBO seguridadBo = new SeguridadBO(Guid.Empty, new UsuarioBO { Id = this.vista.UsuarioID }, new AdscripcionBO
                    {
                        Departamento = new DepartamentoBO(),
                        Sucursal = new SucursalBO(),
                        UnidadOperativa = new UnidadOperativaBO { Id = this.vista.UnidadAdscripcionID }
                    });

                    generadorPagosFsl.GenerarPagos(dataContext, contrato, seguridadBo,true);

                    #endregion

                    dataContext.CommitTransaction(firma);

                    vista.EstablecerPaqueteNavegacion(vista.Clave, contrato);
                    vista.MostrarMensaje("Se ha guardado del contrato exitosamente.", ETipoMensajeIU.EXITO);
                    vista.IrADetalle();
                }
                else
                    vista.MostrarMensaje("Inconsistencias al intentar guardar el contrato.", ETipoMensajeIU.ADVERTENCIA);
            }
            catch (Exception ex)
            {
                dataContext.RollbackTransaction(firma);
                throw new Exception(nombreClase + ".GuardarContratoEnCurso:" + ex.Message);
            }
            finally
            {
                if(dataContext.ConnectionState == ConnectionState.Open)
                    dataContext.CloseConnection(firma);
            }
        }