/// <summary>
        /// Despliega los datos a la Vista
        /// </summary>
        /// <param name="obj"></param>
        private void DatoAInterfazUsuario(object obj)
        {
            ContratoManttoBO bo = (ContratoManttoBO)obj;

            this.vista.ContratoID     = bo.ContratoID;
            this.vista.NumeroContrato = bo.NumeroContrato;
        }
Exemple #2
0
        public void IrADetalle(int?contratoID)
        {
            try
            {
                if (contratoID == null)
                {
                    throw new Exception("No se encontró el registro seleccionado.");
                }

                ContratoManttoBO bo = new ContratoManttoBO {
                    ContratoID = contratoID
                };

                this.vista.LimpiarSesion();

                Dictionary <string, object> paquete = new Dictionary <string, object>();
                paquete.Add("ObjetoFiltro", this.InterfazUsuarioADato());
                paquete.Add("Bandera", true);

                this.vista.EstablecerPaqueteNavegacion("FiltrosContratoMantto", paquete);
                this.vista.EstablecerPaqueteNavegacion("ContratoManttoBO", bo);

                this.vista.RedirigirADetalle();
            }
            catch (Exception ex)
            {
                throw new Exception(this.nombreClase + ".IrADetalle: " + ex.Message);
            }
        }
        private object InterfazUsuarioADato()
        {
            ContratoManttoBO bo = new ContratoManttoBO();

            if (this.vista.UltimoObjeto != null)
            {
                bo = new ContratoManttoBO((ContratoManttoBO)this.vista.UltimoObjeto);
            }

            bo.CierreContrato         = new CierreContratoManttoBO();
            bo.CierreContrato.Usuario = new UsuarioBO();

            bo.ContratoID = this.vista.ContratoID;
            bo.UUA        = this.vista.UUA;
            bo.FUA        = this.vista.FUA;
            bo.Tipo       = (ETipoContrato)this.vista.TipoContratoID.Value;

            if (this.vista.EstatusID != null)
            {
                bo.Estatus = (EEstatusContrato)Enum.Parse(typeof(EEstatusContrato), this.vista.EstatusID.ToString());
            }
            else
            {
                bo.Estatus = null;
            }

            bo.CierreContrato.Fecha         = this.vista.FechaCancelacion;
            bo.CierreContrato.Observaciones = this.vista.ObservacionesCancelacion;
            bo.CierreContrato.Usuario.Id    = this.vista.UsuarioID;

            ((CierreContratoManttoBO)bo.CierreContrato).Motivo = this.vista.MotivoCancelacion;

            return(bo);
        }
Exemple #4
0
        private void EstablecerDatosNavegacion(object paqueteNavegacion)
        {
            try
            {
                if (paqueteNavegacion == null)
                {
                    throw new Exception("Se esperaba un objeto en la navegación. No se puede identificar qué Contrato se desea consultar.");
                }
                if (!(paqueteNavegacion is ContratoManttoBO))
                {
                    throw new Exception("Se esperaba un Contrato.");
                }

                ContratoManttoBO bo = new ContratoManttoBO {
                    ContratoID = ((ContratoManttoBO)paqueteNavegacion).ContratoID
                };

                this.DatoAInterfazUsuario(bo);
            }
            catch (Exception ex)
            {
                this.DatoAInterfazUsuario(new ContratoManttoBO());
                throw new Exception(this.nombreClase + ".EstablecerDatosNavegacion: " + ex.Message);
            }
        }
Exemple #5
0
        private void ConsultarCompleto()
        {
            try
            {
                //Se consulta la información del contrato
                ContratoManttoBO bo = (ContratoManttoBO)this.InterfazUsuarioADato();

                List <ContratoManttoBO> lst = this.controlador.ConsultarCompleto(this.dctx, bo, true);

                if (lst.Count < 1)
                {
                    throw new Exception("No se encontró ningún registro que corresponda a la información proporcionada.");
                }
                if (lst.Count > 1)
                {
                    throw new Exception("La consulta devolvió más de un registro.");
                }

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

                this.DatoAInterfazUsuario(lst[0]);
                this.presentadorHerramientas.DatosAInterfazUsuario(lst[0]);
                this.vista.UltimoObjeto = lst[0];
            }
            catch (Exception ex)
            {
                this.DatoAInterfazUsuario(new ContratoManttoBO());
                throw new Exception(this.nombreClase + ".ConsultarCompleto:" + ex.Message);
            }
        }
        /// <summary>
        /// Despliega los datos del contrato en la interfaz de usuario
        /// </summary>
        /// <param name="contrato">Contrato RD que contiene los datos a desplegar</param>
        public void DatosAInterfazUsuario(ContratoManttoBO contrato)
        {
            contrato = contrato ?? new ContratoManttoBO();

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

            vista.Configurar(contrato.Estatus);
        }
        public void Regresar()
        {
            ContratoManttoBO bo = (ContratoManttoBO)this.vista.UltimoObjeto;

            this.LimpiarSesion();

            this.vista.LimpiarPaqueteNavegacion("ContratoManttoBO");
            this.vista.EstablecerPaqueteNavegacion("ContratoManttoBO", bo);

            this.vista.RedirigirADetalles();
        }
Exemple #8
0
        /// <summary>
        /// Elimina el contrato desplegado con estatus de borrador
        /// </summary>
        public void EliminarContrato()
        {
            try
            {
                #region InterfazUsuarioADato Personalizado
                ContratoManttoBO bo = (ContratoManttoBO)this.vista.UltimoObjeto;

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

                //finalización del contrato
                FinalizacionContratoProxyBO finalizacionContrato = new FinalizacionContratoProxyBO();
                finalizacionContrato.Fecha   = vista.FUA;
                finalizacionContrato.Usuario = new UsuarioBO {
                    Id = vista.UUA
                };
                finalizacionContrato.Observaciones = vista.Observaciones;

                ContratoManttoBO previous = new ContratoManttoBO(bo);

                bo.CierreContrato = finalizacionContrato;
                bo.FUA            = vista.FUA;
                bo.UUA            = vista.UUA;
                #endregion

                //Se crea el objeto de seguridad
                UsuarioBO usuario = new UsuarioBO()
                {
                    Id = this.vista.UsuarioID
                };
                AdscripcionBO adscripcion = new AdscripcionBO()
                {
                    UnidadOperativa = new UnidadOperativaBO()
                    {
                        Id = this.vista.UnidadOperativaID
                    }
                };
                SeguridadBO seguridadBO = new SeguridadBO(Guid.Empty, usuario, adscripcion);

                this.controlador.BorrarCompleto(dctx, bo, previous, seguridadBO);

                this.LimpiarSesion();
                this.vista.LimpiarPaqueteNavegacion("ContratoManttoBO");
                this.vista.RedirigirAConsulta();
            }
            catch (Exception ex)
            {
                throw new Exception(this.nombreClase + ".EliminarContrato: " + ex.Message);
            }
        }
        public void CancelarContrato()
        {
            string s;

            if ((s = this.ValidarCampos()) != null)
            {
                this.vista.MostrarMensaje(s, ETipoMensajeIU.ADVERTENCIA, null);
                return;
            }

            try
            {
                //Se obtiene la información a partir de la Interfaz de Usuario
                ContratoManttoBO bo = (ContratoManttoBO)this.InterfazUsuarioADato();

                //Se crea el objeto de seguridad
                UsuarioBO usuario = new UsuarioBO()
                {
                    Id = this.vista.UsuarioID
                };
                AdscripcionBO adscripcion = new AdscripcionBO()
                {
                    UnidadOperativa = new UnidadOperativaBO()
                    {
                        Id = this.vista.UnidadOperativaID
                    }
                };
                SeguridadBO seguridadBO = new SeguridadBO(Guid.Empty, usuario, adscripcion);

                //Se actualiza en la base de datos
                this.controlador.Cancelar(this.dctx, bo, (ContratoManttoBO)this.vista.UltimoObjeto, seguridadBO);

                //Se despliega la información en la Interfaz de Usuario
                this.DatoAInterfazUsuario(bo);
                this.vista.UltimoObjeto = bo;

                this.LimpiarSesion();
                this.vista.LimpiarPaqueteNavegacion("ContratoManttoBO");
                this.vista.EstablecerPaqueteNavegacion("ContratoManttoBO", new ContratoManttoBO()
                {
                    ContratoID = this.vista.ContratoID
                });
                this.vista.RedirigirADetalles();
            }
            catch (Exception ex)
            {
                throw new Exception(nombreClase + ".CancelarContrato:" + ex.Message);
            }
        }
Exemple #10
0
        public void CerrarContrato()
        {
            try
            {
                ContratoManttoBO bo = (ContratoManttoBO)this.InterfazUsuarioADato();

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

                this.vista.RedirigirACierre();
            }
            catch (Exception ex)
            {
                throw new Exception(nombreClase + ".EditarContrato: " + ex.Message);
            }
        }
Exemple #11
0
        /// <summary>
        /// Envia el contrato a Agregar Documentos
        /// </summary>
        public void AgregarDocumentos()
        {
            try
            {
                ContratoManttoBO bo = (ContratoManttoBO)this.InterfazUsuarioADato();

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

                this.vista.RedirigirAAgregarDocumentos();
            }
            catch (Exception ex)
            {
                throw new Exception(nombreClase + ".AgregarDocumentos: " + ex.Message);
            }
        }
Exemple #12
0
        private object InterfazUsuarioADato()
        {
            ContratoManttoBO bo = new ContratoManttoBO();

            bo.Cliente = new CuentaClienteIdealeaseBO();
            bo.Cliente = new CuentaClienteIdealeaseBO();
            bo.Cliente.UnidadOperativa = new UnidadOperativaBO();
            bo.Divisa = new DivisaBO();
            bo.Divisa.MonedaDestino     = new MonedaBO();
            bo.Sucursal                 = new SucursalBO();
            bo.Sucursal.UnidadOperativa = new UnidadOperativaBO();
            bo.LineasContrato           = new List <ILineaContrato>();

            bo.ContratoID = this.vista.ContratoID;
            if (this.vista.TipoContratoID != null)
            {
                bo.Tipo = (ETipoContrato)Enum.Parse(typeof(ETipoContrato), this.vista.TipoContratoID.ToString());
            }

            return(bo);
        }
        /// <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);
            }
        }
Exemple #14
0
        private void DatoAInterfazUsuario(object obj)
        {
            ContratoManttoBO bo = (ContratoManttoBO)obj;

            if (bo == null)
            {
                bo = new ContratoManttoBO();
            }
            if (bo.Cliente == null)
            {
                bo.Cliente = new CuentaClienteIdealeaseBO();
            }
            if (bo.Divisa == null)
            {
                bo.Divisa = new DivisaBO();
            }
            if (bo.Divisa.MonedaDestino == null)
            {
                bo.Divisa.MonedaDestino = new MonedaBO();
            }
            if (bo.Sucursal == null)
            {
                bo.Sucursal = new SucursalBO();
            }
            if (bo.Sucursal.UnidadOperativa == null)
            {
                bo.Sucursal.UnidadOperativa = new UnidadOperativaBO();
            }

            this.vista.ContratoID           = bo.ContratoID;
            this.vista.NumeroContrato       = bo.NumeroContrato;
            this.vista.CodigoMoneda         = bo.Divisa.MonedaDestino.Codigo;
            this.vista.FechaContrato        = bo.FechaContrato;
            this.vista.RepresentanteEmpresa = bo.Representante;
            if (bo.Tipo != null)
            {
                this.vista.TipoContratoID = (int)bo.Tipo;
            }
            else
            {
                this.vista.TipoContratoID = null;
            }

            this.vista.SucursalID     = bo.Sucursal.Id;
            this.vista.SucursalNombre = bo.Sucursal.Nombre;

            //Cuenta de Cliente Idealease
            this.vista.CuentaClienteID     = bo.Cliente.Id;
            this.vista.CuentaClienteNombre = bo.Cliente.Nombre;
            if (bo.Cliente.TipoCuenta != null)
            {
                this.vista.CuentaClienteTipoID = (int)bo.Cliente.TipoCuenta;
            }
            else
            {
                this.vista.CuentaClienteTipoID = null;
            }
            this.presentadorContrato.SeleccionarCuentaCliente(bo.Cliente);

            //Dirección del cliente
            if (bo.Cliente.Direcciones != null && bo.Cliente.Direcciones.Count > 0)
            {
                this.vista.DireccionClienteID           = bo.Cliente.Direcciones[0].Id;
                this.vista.ClienteDireccionCompleta     = bo.Cliente.Direcciones[0].Direccion;
                this.vista.ClienteDireccionCalle        = bo.Cliente.Direcciones[0].Calle;
                this.vista.ClienteDireccionColonia      = bo.Cliente.Direcciones[0].Colonia;
                this.vista.ClienteDireccionCodigoPostal = bo.Cliente.Direcciones[0].CodigoPostal;
                this.vista.ClienteDireccionCiudad       = bo.Cliente.Direcciones[0].Ubicacion.Ciudad.Codigo;
                this.vista.ClienteDireccionEstado       = bo.Cliente.Direcciones[0].Ubicacion.Estado.Codigo;
                this.vista.ClienteDireccionMunicipio    = bo.Cliente.Direcciones[0].Ubicacion.Municipio.Codigo;
                this.vista.ClienteDireccionPais         = bo.Cliente.Direcciones[0].Ubicacion.Pais.Codigo;
            }
            else
            {
                this.vista.DireccionClienteID           = null;
                this.vista.ClienteDireccionCompleta     = null;
                this.vista.ClienteDireccionCalle        = null;
                this.vista.ClienteDireccionColonia      = null;
                this.vista.ClienteDireccionCodigoPostal = null;
                this.vista.ClienteDireccionCiudad       = null;
                this.vista.ClienteDireccionEstado       = null;
                this.vista.ClienteDireccionMunicipio    = null;
                this.vista.ClienteDireccionPais         = null;
            }

            if (bo.RepresentantesLegales != null)
            {
                this.vista.RepresentantesLegales = bo.RepresentantesLegales.ConvertAll(s => (RepresentanteLegalBO)s);
            }
            else
            {
                this.vista.RepresentantesLegales = null;
            }
            if (bo.ObligadosSolidarios != null)
            {
                this.vista.ObligadosSolidarios = bo.ObligadosSolidarios.ConvertAll(s => (ObligadoSolidarioBO)s);
            }
            else
            {
                this.vista.ObligadosSolidarios = null;
            }
            this.vista.Avales              = bo.Avales;
            this.vista.SoloRepresentantes  = bo.SoloRepresentantes;
            this.vista.ObligadosComoAvales = bo.ObligadosComoAvales;
            this.presentadorContrato.ConfigurarOpcionesPersonas();

            this.vista.Plazo = bo.Plazo;
            this.vista.FechaInicioContrato      = bo.FechaInicioContrato;
            this.vista.FechaTerminacionContrato = bo.CalcularFechaTerminacionContrato();

            if (bo.LineasContrato != null)
            {
                this.vista.LineasContrato = bo.LineasContrato.ConvertAll(s => (LineaContratoManttoBO)s);
            }
            else
            {
                this.vista.LineasContrato = null;
            }
            this.vista.UbicacionTaller     = bo.UbicacionTaller;
            this.vista.DireccionAlmacenaje = bo.DireccionAlmacenaje;
            this.vista.DepositoGarantia    = bo.DepositoGarantia;
            this.vista.ComisionApertura    = bo.ComisionApertura;
            if (bo.IncluyeLavado != null)
            {
                this.vista.IncluyeLavadoID = (int)bo.IncluyeLavado;
            }
            else
            {
                this.vista.IncluyeLavadoID = null;
            }
            if (bo.IncluyeLlantas != null)
            {
                this.vista.IncluyeLlantasID = (int)bo.IncluyeLlantas;
            }
            else
            {
                this.vista.IncluyeLlantasID = null;
            }
            if (bo.IncluyePinturaRotulacion != null)
            {
                this.vista.IncluyePinturaRotulacionID = (int)bo.IncluyePinturaRotulacion;
            }
            else
            {
                this.vista.IncluyePinturaRotulacionID = null;
            }
            if (bo.IncluyeSeguro != null)
            {
                this.vista.IncluyeSeguroID = (int)bo.IncluyeSeguro;
            }
            else
            {
                this.vista.IncluyeSeguroID = null;
            }

            this.vista.Observaciones    = bo.Observaciones;
            this.vista.DatosAdicionales = bo.DatosAdicionalesAnexo;
            this.vista.UC  = bo.UC;
            this.vista.UUA = bo.UUA;
            this.vista.FC  = bo.FC;
            this.vista.FUA = bo.FUA;
            if (bo.Estatus != null)
            {
                this.vista.EstatusID = (int)bo.Estatus;
            }
            else
            {
                this.vista.EstatusID = null;
            }

            this.presentadorDocumentos.CargarListaArchivos(bo.DocumentosAdjuntos, this.presentadorDocumentos.Vista.TiposArchivo);
        }
        /// <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>
        /// Registra un Contrato RD
        /// </summary>
        private void Registrar()
        {
            #region Se inicia la Transaccion
            dctx.SetCurrentProvider("Outsourcing");
            Guid firma = Guid.NewGuid();
            try
            {
                dctx.OpenConnection(firma);
                dctx.BeginTransaction(firma);
            }

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

            try
            {
                //Se obtiene la información a partir de la Interfaz de Usuario
                ContratoManttoBO bo = (ContratoManttoBO)this.InterfazUsuarioADato();

                //Se crea el objeto de seguridad
                UsuarioBO usuario = new UsuarioBO()
                {
                    Id = this.vista.UsuarioID
                };
                AdscripcionBO adscripcion = new AdscripcionBO()
                {
                    UnidadOperativa = new UnidadOperativaBO()
                    {
                        Id = this.vista.UnidadOperativaID
                    }
                };
                SeguridadBO seguridadBO = new SeguridadBO(Guid.Empty, usuario, adscripcion);

                //Se inserta en la base de datos
                this.controlador.InsertarCompleto(this.dctx, bo, seguridadBO);

                //Se consulta lo insertado para recuperar los ID
                DataSet ds = this.controlador.ConsultarSet(this.dctx, bo);
                if (ds.Tables[0].Rows.Count <= 0)
                {
                    throw new Exception("Al consultar lo insertado no se encontraron coincidencias.");
                }
                if (ds.Tables[0].Rows.Count > 1)
                {
                    throw new Exception("Al consultar lo insertado se encontró más de una coincidencia.");
                }

                bo.ContratoID = this.controlador.DataRowToContratoManttoBO(ds.Tables[0].Rows[0]).ContratoID;

                #region SC0001 BEP1401 - Registra los pagos del Contrato
                if (bo.Estatus == EEstatusContrato.EnCurso)
                {
                    GeneradorPagosManttoBR generadorPagos = new GeneradorPagosManttoBR();
                    generadorPagos.GenerarPagos(dctx, bo, seguridadBO, true);
                }

                #endregion

                //Se despliega la información en la Interfaz de Usuario
                this.DatoAInterfazUsuario(bo);

                dctx.CommitTransaction(firma);
            }
            catch (Exception ex)
            {
                dctx.RollbackTransaction(firma);
                throw new Exception(this.nombreClase + ".Registrar:" + ex.Message);
            }
            finally
            {
                if (dctx.ConnectionState == ConnectionState.Open)
                {
                    dctx.CloseConnection(firma);
                }
            }
        }
        /// <summary>
        /// Obtiene la información porporcionada por el ususario en la base de datos y la transforma en un contrato
        /// </summary>
        /// <returns>Contrato genenerado por los datos</returns>
        private object InterfazUsuarioADato()
        {
            #region Creacion BO's
            var bo = new ContratoManttoBO();
            bo.Avales         = new List <AvalBO>();
            bo.CierreContrato = new CierreContratoManttoBO();
            bo.Cliente        = new CuentaClienteIdealeaseBO {
                Cliente = new ClienteBO(), UnidadOperativa = new UnidadOperativaBO()
            };
            bo.Divisa = new DivisaBO {
                MonedaDestino = new MonedaBO()
            };
            bo.Sucursal = new SucursalBO {
                UnidadOperativa = new UnidadOperativaBO()
            };
            bo.LineasContrato = new List <ILineaContrato>();
            #endregion

            #region Información General
            if (this.vista.ContratoID.HasValue)
            {
                bo.ContratoID = this.vista.ContratoID.Value;
            }
            if (this.vista.TipoContrato.HasValue)
            {
                bo.Tipo = (ETipoContrato)this.vista.TipoContrato.Value;
            }
            if (!string.IsNullOrEmpty(this.vista.NumeroContrato) && !string.IsNullOrWhiteSpace(this.vista.NumeroContrato))
            {
                bo.NumeroContrato = this.vista.NumeroContrato.Trim().ToUpper();
            }
            if (this.vista.EstatusContrato.HasValue)
            {
                bo.Estatus = (EEstatusContrato)this.vista.EstatusContrato.Value;
            }
            if (this.vista.FechaContrato.HasValue)
            {
                bo.FechaContrato = this.vista.FechaContrato.Value;
            }
            if (this.vista.SucursalID.HasValue)
            {
                bo.Sucursal.Id = this.vista.SucursalID.Value;
            }
            if (!String.IsNullOrEmpty(this.vista.SucursalNombre))
            {
                bo.Sucursal.Nombre = this.vista.SucursalNombre;
            }
            if (this.vista.UnidadOperativaID.HasValue)
            {
                bo.Sucursal.UnidadOperativa.Id = this.vista.UnidadOperativaID.Value;
            }
            if (!String.IsNullOrEmpty(this.vista.UnidadOperativaNombre))
            {
                bo.Sucursal.UnidadOperativa.Nombre = this.vista.UnidadOperativaNombre;
            }
            if (!string.IsNullOrEmpty(this.vista.RepresentanteEmpresa) && !string.IsNullOrWhiteSpace(this.vista.RepresentanteEmpresa))
            {
                bo.Representante = this.vista.RepresentanteEmpresa.Trim().ToUpper();
            }
            if (!string.IsNullOrEmpty(this.vista.DivisaID) && !string.IsNullOrWhiteSpace(this.vista.DivisaID))
            {
                bo.Divisa.MonedaDestino.Codigo = this.vista.DivisaID;
            }
            #endregion

            #region Informacion Cliente
            if (this.vista.CuentaClienteID.HasValue)
            {
                bo.Cliente.Id = this.vista.CuentaClienteID.Value;
            }
            if (!string.IsNullOrEmpty(this.vista.CuentaClienteNombre) && !string.IsNullOrWhiteSpace(this.vista.CuentaClienteNombre))
            {
                bo.Cliente.Nombre = this.vista.CuentaClienteNombre;
            }
            if (this.vista.SoloRepresentantes.HasValue)
            {
                bo.SoloRepresentantes = this.vista.SoloRepresentantes.Value;
            }
            if (this.vista.RepresentatesLegales != null && this.vista.RepresentatesLegales.Count > 0)
            {
                bo.RepresentantesLegales = this.vista.RepresentatesLegales.ConvertAll(x => (PersonaBO)x);
            }
            if (this.vista.ObligadosSolidarios != null && this.vista.ObligadosSolidarios.Count > 0)
            {
                bo.ObligadosSolidarios = this.vista.ObligadosSolidarios.ConvertAll(x => (PersonaBO)x);
            }
            if (this.vista.ObligadosComoAvales.HasValue)
            {
                bo.ObligadosComoAvales = this.vista.ObligadosComoAvales.Value;
            }
            if (this.vista.Avales != null && this.vista.Avales.Count > 0)
            {
                bo.Avales = this.vista.Avales.ConvertAll(x => (AvalBO)x);
            }
            if (bo.ObligadosComoAvales != null && bo.ObligadosComoAvales == true)
            {
                if (this.vista.ObligadosSolidarios != null)
                {
                    bo.Avales = this.vista.ObligadosSolidarios.ConvertAll(x => this.ObligadoAAval((ObligadoSolidarioBO)x));
                }
            }
            if (this.vista.UnidadOperativaID.HasValue)
            {
                bo.Cliente.UnidadOperativa.Id = this.vista.UnidadOperativaID.Value;
            }

            #region Dirección del cliente
            var direccion = new DireccionClienteBO();
            direccion.Ubicacion = new UbicacionBO {
                Ciudad = new CiudadBO(), Estado = new EstadoBO(), Municipio = new MunicipioBO(), Pais = new PaisBO()
            };
            if (this.vista.DireccionClienteID.HasValue)
            {
                direccion.Id = this.vista.DireccionClienteID.Value;
            }
            if (!string.IsNullOrEmpty(this.vista.ClienteDireccionCalle) && !string.IsNullOrWhiteSpace(this.vista.ClienteDireccionCalle))
            {
                direccion.Calle = this.vista.ClienteDireccionCalle.Trim().ToUpper();
            }
            if (!string.IsNullOrEmpty(this.vista.ClienteDireccionCiudad) && !string.IsNullOrWhiteSpace(this.vista.ClienteDireccionCiudad))
            {
                direccion.Ubicacion.Ciudad.Codigo = this.vista.ClienteDireccionCiudad.Trim().ToUpper();
            }
            if (!string.IsNullOrEmpty(this.vista.ClienteDireccionCodigoPostal) && !string.IsNullOrWhiteSpace(this.vista.ClienteDireccionCodigoPostal))
            {
                direccion.CodigoPostal = this.vista.ClienteDireccionCodigoPostal.Trim().ToUpper();
            }
            if (!string.IsNullOrEmpty(this.vista.ClienteDireccionColonia) && !string.IsNullOrWhiteSpace(this.vista.ClienteDireccionColonia))
            {
                direccion.Colonia = this.vista.ClienteDireccionColonia.Trim().ToUpper();
            }
            if (!string.IsNullOrEmpty(this.vista.ClienteDireccionEstado) && !string.IsNullOrWhiteSpace(this.vista.ClienteDireccionEstado))
            {
                direccion.Ubicacion.Estado.Codigo = this.vista.ClienteDireccionEstado.Trim().ToUpper();
            }
            if (!string.IsNullOrEmpty(this.vista.ClienteDireccionMunicipio) && !string.IsNullOrWhiteSpace(this.vista.ClienteDireccionMunicipio))
            {
                direccion.Ubicacion.Municipio.Codigo = this.vista.ClienteDireccionMunicipio;
            }
            if (!string.IsNullOrEmpty(this.vista.ClienteDireccionPais) && !string.IsNullOrWhiteSpace(this.vista.ClienteDireccionPais))
            {
                direccion.Ubicacion.Pais.Codigo = this.vista.ClienteDireccionPais;
            }

            bo.Cliente.RemoverDirecciones();
            bo.Cliente.Agregar(direccion);
            #endregion

            #endregion

            #region Condiciones de Renta
            if (this.vista.Plazo.HasValue)
            {
                bo.Plazo = this.vista.Plazo.Value;
            }
            if (this.vista.FechaInicioContrato.HasValue)
            {
                bo.FechaInicioContrato = this.vista.FechaInicioContrato.Value;
            }
            if (this.vista.DepositoGarantia.HasValue)
            {
                bo.DepositoGarantia = this.vista.DepositoGarantia.Value;
            }
            if (this.vista.ComisionApertura.HasValue)
            {
                bo.ComisionApertura = this.vista.ComisionApertura.Value;
            }
            if (this.vista.IncluyeLavado.HasValue)
            {
                bo.IncluyeLavado = (ETipoInclusion)this.vista.IncluyeLavado.Value;
            }
            if (this.vista.IncluyeLlantas.HasValue)
            {
                bo.IncluyeLlantas = (ETipoInclusion)this.vista.IncluyeLlantas.Value;
            }
            if (this.vista.IncluyePinturaRotulación.HasValue)
            {
                bo.IncluyePinturaRotulacion = (ETipoInclusion)this.vista.IncluyePinturaRotulación.Value;
            }
            if (this.vista.IncluyeSeguro.HasValue)
            {
                bo.IncluyeSeguro = (ETipoInclusion)this.vista.IncluyeSeguro;
            }
            #endregion

            #region Otros
            if (!string.IsNullOrEmpty(this.vista.UbicacionTaller) && !string.IsNullOrWhiteSpace(this.vista.UbicacionTaller))
            {
                bo.UbicacionTaller = this.vista.UbicacionTaller.Trim().ToUpper();
            }
            if (!string.IsNullOrEmpty(this.vista.DireccionAlmacenaje) && !string.IsNullOrWhiteSpace(this.vista.DireccionAlmacenaje))
            {
                bo.DireccionAlmacenaje = this.vista.DireccionAlmacenaje.Trim().ToUpper();
            }
            if (!string.IsNullOrEmpty(this.vista.Observaciones) && !string.IsNullOrWhiteSpace(this.vista.Observaciones))
            {
                bo.Observaciones = this.vista.Observaciones.Trim().ToUpper();
            }
            #endregion

            #region Datos Adicionales
            if (this.vista.DatosAdicionales != null && this.vista.DatosAdicionales.Count > 0)
            {
                bo.DatosAdicionalesAnexo = this.vista.DatosAdicionales.ConvertAll(x => (DatoAdicionalAnexoBO)x);
            }
            #endregion

            #region Unidades
            if (this.vista.LineasContrato != null && this.vista.LineasContrato.Count > 0)
            {
                bo.LineasContrato = this.vista.LineasContrato.ConvertAll(x => (ILineaContrato)x);
            }
            #endregion

            #region Documentos adjuntos
            List <ArchivoBO> adjuntos = presentadorDocumentos.Vista.ObtenerArchivos() ?? new List <ArchivoBO>();
            foreach (ArchivoBO adjunto in adjuntos)
            {
                if (bo.Tipo != null && bo.Tipo == ETipoContrato.CM)
                {
                    adjunto.TipoAdjunto = ETipoAdjunto.ContratoMantenimiento;
                }
                if (bo.Tipo != null && bo.Tipo == ETipoContrato.SD)
                {
                    adjunto.TipoAdjunto = ETipoAdjunto.ContratoServicioDedicado;
                }
                adjunto.Auditoria = new AuditoriaBO
                {
                    FC  = this.vista.FC,
                    UC  = this.vista.UC,
                    FUA = DateTime.Now,
                    UUA = this.vista.UsuarioID.Value
                };
            }
            bo.DocumentosAdjuntos = adjuntos;
            #endregion

            bo.UC  = this.vista.UC;
            bo.FC  = this.vista.FC;
            bo.UUA = this.vista.UsuarioID.Value;
            bo.FUA = DateTime.Now;

            return(bo);
        }
        /// <summary>
        /// Despliega en pantalla la información del contrato recuperado
        /// </summary>
        /// <param name="obj">Objeto que </param>
        private void DatoAInterfazUsuario(object obj)
        {
            var bo = (ContratoManttoBO)obj;

            #region Contrato nuevo
            if (ReferenceEquals(obj, null))
            {
                bo = new ContratoManttoBO
                {
                    Avales  = new List <AvalBO>(),
                    Cliente = new CuentaClienteIdealeaseBO {
                        Cliente = new ClienteBO()
                    },
                    DatosAdicionalesAnexo = new List <DatoAdicionalAnexoBO>(),
                    Divisa = new DivisaBO {
                        MonedaDestino = new MonedaBO()
                    },
                    DocumentosAdjuntos    = new List <ArchivoBO>(),
                    RepresentantesLegales = new List <PersonaBO>(),
                    LineasContrato        = new List <ILineaContrato>(),
                    ObligadosSolidarios   = new List <PersonaBO>(),
                    Sucursal = new SucursalBO {
                        UnidadOperativa = new UnidadOperativaBO()
                    }
                }
            }
            ;
            #endregion

            #region Instancias de propiedades
            if (object.ReferenceEquals(bo.Avales, null))
            {
                bo.Avales = new List <AvalBO>();
            }
            if (object.ReferenceEquals(bo.Cliente, null))
            {
                bo.Cliente = new CuentaClienteIdealeaseBO {
                    Cliente = new ClienteBO()
                }
            }
            ;
            if (object.ReferenceEquals(bo.DatosAdicionalesAnexo, null))
            {
                bo.DatosAdicionalesAnexo = new List <DatoAdicionalAnexoBO>();
            }
            if (object.ReferenceEquals(bo.Divisa, null))
            {
                bo.Divisa = new DivisaBO {
                    MonedaDestino = new MonedaBO()
                }
            }
            ;
            if (object.ReferenceEquals(bo.DocumentosAdjuntos, null))
            {
                bo.DocumentosAdjuntos = new List <ArchivoBO>();
            }
            if (object.ReferenceEquals(bo.LineasContrato, null))
            {
                bo.LineasContrato = new List <ILineaContrato>();
            }
            if (object.ReferenceEquals(bo.RepresentantesLegales, null))
            {
                bo.RepresentantesLegales = new List <PersonaBO>();
            }
            if (object.ReferenceEquals(bo.ObligadosSolidarios, null))
            {
                bo.ObligadosSolidarios = new List <PersonaBO>();
            }
            if (object.ReferenceEquals(bo.Sucursal, null))
            {
                bo.Sucursal = new SucursalBO {
                    UnidadOperativa = new UnidadOperativaBO()
                }
            }
            ;
            #endregion

            #region Datos Generales
            this.vista.TipoContrato   = bo.Tipo.HasValue ? (int?)((int)bo.Tipo.Value) : null;
            this.vista.ContratoID     = bo.ContratoID.HasValue ? bo.ContratoID : null;
            this.vista.NumeroContrato = !string.IsNullOrEmpty(bo.NumeroContrato) && !string.IsNullOrWhiteSpace(bo.NumeroContrato)
                                            ? bo.NumeroContrato.Trim().ToUpper()
                                            : string.Empty;
            this.vista.EstatusContrato = bo.Estatus.HasValue ? (int?)((int)bo.Estatus.Value) : null;
            this.vista.FechaContrato   = bo.FechaContrato.HasValue ? bo.FechaContrato : null;
            this.vista.SucursalID      = bo.Sucursal.Id.HasValue ? bo.Sucursal.Id : null;
            this.vista.SucursalNombre  = !string.IsNullOrEmpty(bo.Sucursal.Nombre) && !string.IsNullOrWhiteSpace(bo.Sucursal.Nombre)
                                            ? bo.Sucursal.Nombre.Trim().ToUpper()
                                            : string.Empty;
            this.vista.RepresentanteEmpresa = !string.IsNullOrEmpty(bo.Representante) && !string.IsNullOrWhiteSpace(bo.Representante)
                                                  ? bo.Representante.Trim().ToUpper()
                                                  : string.Empty;

            this.vista.DivisaID = !string.IsNullOrEmpty(bo.Divisa.MonedaDestino.Codigo) && !string.IsNullOrWhiteSpace(bo.Divisa.MonedaDestino.Codigo)
                                    ? bo.Divisa.MonedaDestino.Codigo.ToUpper().Trim()
                                      : string.Empty;
            this.vista.EstatusContrato = bo.Estatus.HasValue ? (int?)((int)bo.Estatus.Value) : null;
            #endregion

            #region Datos Cliente
            this.vista.ClienteID       = bo.Cliente.Cliente != null && bo.Cliente.Cliente.Id.HasValue ? bo.Cliente.Cliente.Id : null;
            this.vista.CuentaClienteID = bo.Cliente.Id.HasValue
                                             ? bo.Cliente.Id
                                             : null;
            this.vista.CuentaClienteTipoID = bo.Cliente.TipoCuenta.HasValue ? (int?)((int)bo.Cliente.TipoCuenta) : null;
            this.vista.CuentaClienteNombre = !string.IsNullOrEmpty(bo.Cliente.Nombre) && !string.IsNullOrWhiteSpace(bo.Cliente.Nombre)
                                                 ? bo.Cliente.Nombre.Trim().ToUpper()
                                                 : string.Empty;
            this.vista.CuentaClienteFisica = bo.Cliente.EsFisico.HasValue ? bo.Cliente.EsFisico : null;

            //Se ejecuta explicitamente la selección de la cuenta del cliente
            this.presentadorDatos.SeleccionarCuentaCliente(bo.Cliente);

            #region Direccion
            var direccion = new DireccionClienteBO {
                Ubicacion = new UbicacionBO {
                    Ciudad = new CiudadBO(), Estado = new EstadoBO(), Municipio = new MunicipioBO(), Pais = new PaisBO()
                }
            };

            if (bo.Cliente.Direcciones != null && bo.Cliente.Direcciones.Count > 0)
            {
                direccion = bo.Cliente.Direcciones[0];

                if (direccion.Ubicacion == null)
                {
                    direccion.Ubicacion = new UbicacionBO
                    {
                        Ciudad    = new CiudadBO(),
                        Estado    = new EstadoBO(),
                        Municipio = new MunicipioBO(),
                        Pais      = new PaisBO()
                    }
                }
                ;
                if (direccion.Ubicacion.Ciudad == null)
                {
                    direccion.Ubicacion.Ciudad = new CiudadBO();
                }
                if (direccion.Ubicacion.Estado == null)
                {
                    direccion.Ubicacion.Estado = new EstadoBO();
                }
                if (direccion.Ubicacion.Municipio == null)
                {
                    direccion.Ubicacion.Municipio = new MunicipioBO();
                }
                if (direccion.Ubicacion.Pais == null)
                {
                    direccion.Ubicacion.Pais = new PaisBO();
                }
            }

            this.vista.DireccionClienteID       = direccion.Id.HasValue ? (int?)((int)direccion.Id) : null;
            this.vista.ClienteDireccionCompleta = !string.IsNullOrEmpty(direccion.Direccion) && !string.IsNullOrWhiteSpace(direccion.Direccion)
                                                      ? direccion.Direccion.Trim().ToUpper()
                                                      : string.Empty;
            this.vista.ClienteDireccionCalle = !string.IsNullOrEmpty(direccion.Calle) && !string.IsNullOrWhiteSpace(direccion.Calle)
                                                   ? direccion.Calle.Trim().ToUpper()
                                                   : string.Empty;
            this.vista.ClienteDireccionColonia = !string.IsNullOrEmpty(direccion.Colonia) && !string.IsNullOrWhiteSpace(direccion.Colonia)
                                                     ? direccion.Colonia.Trim().ToUpper()
                                                     : string.Empty;
            this.vista.ClienteDireccionCiudad = !string.IsNullOrEmpty(direccion.Ubicacion.Ciudad.Codigo) && !string.IsNullOrWhiteSpace(direccion.Ubicacion.Ciudad.Codigo)
                                                    ? direccion.Ubicacion.Ciudad.Codigo
                                                    : string.Empty;
            this.vista.ClienteDireccionEstado = !string.IsNullOrEmpty(direccion.Ubicacion.Estado.Codigo) && !string.IsNullOrWhiteSpace(direccion.Ubicacion.Estado.Codigo)
                                                    ? direccion.Ubicacion.Estado.Codigo
                                                    : string.Empty;
            this.vista.ClienteDireccionMunicipio = !string.IsNullOrEmpty(direccion.Ubicacion.Municipio.Codigo) && !string.IsNullOrWhiteSpace(direccion.Ubicacion.Municipio.Codigo)
                                                       ? direccion.Ubicacion.Municipio.Codigo
                                                       : string.Empty;
            this.vista.ClienteDireccionPais = !string.IsNullOrEmpty(direccion.Ubicacion.Pais.Codigo) && !string.IsNullOrWhiteSpace(direccion.Ubicacion.Pais.Codigo)
                                                  ? direccion.Ubicacion.Pais.Codigo
                                                  : string.Empty;
            this.vista.ClienteDireccionCodigoPostal = !string.IsNullOrEmpty(direccion.CodigoPostal) && !string.IsNullOrWhiteSpace(direccion.CodigoPostal)
                                                          ? direccion.CodigoPostal
                                                          : string.Empty;
            #endregion

            //Se asignan los representantes legales seleccionados
            this.vista.RepresentatesLegales = bo.RepresentantesLegales.ConvertAll(x => (object)x);
            this.vista.SoloRepresentantes   = bo.SoloRepresentantes.HasValue ? bo.SoloRepresentantes : null;

            //se asignan los obligados solidarios seleccionados
            this.vista.ObligadosSolidarios = bo.ObligadosSolidarios.ConvertAll(x => (object)x);
            this.vista.ObligadosComoAvales = bo.ObligadosComoAvales.HasValue ? bo.ObligadosComoAvales : null;

            //Se asignan los avlaes seleccionados
            this.vista.Avales = bo.Avales.ConvertAll(x => (object)x);

            #endregion

            #region Condiciones de renta
            this.vista.Plazo = bo.Plazo.HasValue ? bo.Plazo : null;
            this.vista.FechaInicioContrato      = bo.FechaInicioContrato.HasValue ? bo.FechaInicioContrato : null;
            this.vista.FechaTerminacionContrato = bo.CalcularFechaTerminacionContrato();
            this.vista.DepositoGarantia         = bo.DepositoGarantia.HasValue ? bo.DepositoGarantia : null;
            this.vista.ComisionApertura         = bo.ComisionApertura.HasValue ? bo.ComisionApertura : null;
            this.vista.IncluyeLavado            = bo.IncluyeLavado.HasValue ? (int?)((int)bo.IncluyeLavado.Value) : null;
            this.vista.IncluyeLlantas           = bo.IncluyeLlantas.HasValue ? (int?)((int)bo.IncluyeLlantas.Value) : null;
            this.vista.IncluyePinturaRotulación = bo.IncluyePinturaRotulacion.HasValue
                                                      ? (int?)((int)bo.IncluyePinturaRotulacion.Value)
                                                      : null;
            this.vista.IncluyeSeguro = bo.IncluyeSeguro.HasValue ? (int?)((int)bo.IncluyeSeguro.Value) : null;
            #endregion

            #region Otros

            this.vista.DireccionAlmacenaje = !string.IsNullOrEmpty(bo.DireccionAlmacenaje) && !string.IsNullOrWhiteSpace(bo.DireccionAlmacenaje)
                                                 ? bo.DireccionAlmacenaje.Trim().ToUpper()
                                                 : string.Empty;
            this.vista.UbicacionTaller = !string.IsNullOrEmpty(bo.UbicacionTaller) && !string.IsNullOrWhiteSpace(bo.UbicacionTaller)
                                             ? bo.UbicacionTaller.Trim().ToUpper()
                                             : string.Empty;
            this.vista.Observaciones = !string.IsNullOrEmpty(bo.Observaciones) && !string.IsNullOrWhiteSpace(bo.Observaciones) ? bo.Observaciones.Trim().ToUpper() : string.Empty;
            #endregion

            #region Unidades
            this.vista.LineasContrato = bo.LineasContrato.ConvertAll(x => (object)x);
            #endregion

            #region Datos adicionales
            this.vista.DatosAdicionales = bo.DatosAdicionalesAnexo.ConvertAll(x => (object)x);
            #endregion

            //Documentos asociados al contrato
            if (this.presentadorDocumentos.Vista.TiposArchivo == null)
            {
                this.presentadorDocumentos.Vista.TiposArchivo = new List <TipoArchivoBO>();
            }

            this.presentadorDocumentos.CargarListaArchivos(bo.DocumentosAdjuntos, this.presentadorDocumentos.Vista.TiposArchivo);

            //Valores para la barra de herramientas
            this.presentadorHerramientas.DatosAInterfazUsuario(bo);
        }
        /// <summary>
        /// Obtiene los datos de la Vista
        /// </summary>
        /// <returns></returns>
        private object InterfazUsuarioADato()
        {
            ContratoManttoBO bo = new ContratoManttoBO();

            bo.Cliente = new CuentaClienteIdealeaseBO();
            bo.Cliente.UnidadOperativa = new UnidadOperativaBO();
            bo.Divisa = new DivisaBO();
            bo.Divisa.MonedaDestino     = new MonedaBO();
            bo.Sucursal                 = new SucursalBO();
            bo.Sucursal.UnidadOperativa = new UnidadOperativaBO();
            bo.LineasContrato           = new List <ILineaContrato>();

            //Información General
            if (vista.TipoContratoID != null)
            {
                bo.Tipo = (ETipoContrato)Enum.Parse(typeof(ETipoContrato), vista.TipoContratoID.ToString());
            }
            if (vista.SucursalID != null)
            {
                bo.Sucursal.Id = vista.SucursalID;
            }
            if (vista.SucursalNombre != null)
            {
                bo.Sucursal.Nombre = vista.SucursalNombre;
            }
            if (vista.UnidadOperativaID != null)
            {
                bo.Sucursal.UnidadOperativa.Id = vista.UnidadOperativaID;
                bo.Cliente.UnidadOperativa.Id  = vista.UnidadOperativaID;
            }
            if (!String.IsNullOrEmpty(vista.UnidadOperativaNombre))
            {
                bo.Sucursal.UnidadOperativa.Nombre = vista.UnidadOperativaNombre;
            }
            bo.Representante = vista.RepresentanteEmpresa;
            if (vista.CodigoMoneda != null)
            {
                bo.Divisa.MonedaDestino.Codigo = vista.CodigoMoneda;
            }
            if (vista.FechaContrato != null)
            {
                bo.FechaContrato = vista.FechaContrato;
            }

            //Datos del Cliente
            if (vista.CuentaClienteID != null)
            {
                bo.Cliente.Id = vista.CuentaClienteID;
            }
            if (!string.IsNullOrEmpty(vista.CuentaClienteNombre) && !string.IsNullOrWhiteSpace(vista.CuentaClienteNombre))
            {
                bo.Cliente.Nombre = vista.CuentaClienteNombre;
            }
            if (vista.RepresentantesLegales != null)
            {
                bo.RepresentantesLegales = vista.RepresentantesLegales.ConvertAll(s => (PersonaBO)s);
            }
            if (vista.ObligadosSolidarios != null)
            {
                bo.ObligadosSolidarios = vista.ObligadosSolidarios.ConvertAll(s => (PersonaBO)s);
            }
            bo.SoloRepresentantes  = vista.SoloRepresentantes;
            bo.ObligadosComoAvales = vista.ObligadosComoAvales;
            if (vista.Avales != null)
            {
                bo.Avales = vista.Avales;
            }
            if (bo.ObligadosComoAvales != null && bo.ObligadosComoAvales == true)
            {
                if (vista.ObligadosSolidarios != null)
                {
                    bo.Avales = vista.ObligadosSolidarios.ConvertAll(s => ObligadoAAval(s));
                }
            }

            #region Dirección del Cliente
            DireccionClienteBO direccion = new DireccionClienteBO
            {
                Id        = vista.DireccionClienteID,
                Ubicacion =
                    new UbicacionBO
                {
                    Pais = new PaisBO {
                        Codigo = vista.ClienteDireccionPais
                    },
                    Municipio = new MunicipioBO {
                        Codigo = vista.ClienteDireccionMunicipio
                    },
                    Estado = new EstadoBO {
                        Codigo = vista.ClienteDireccionEstado
                    },
                    Ciudad = new CiudadBO {
                        Codigo = vista.ClienteDireccionCiudad
                    }
                },
                CodigoPostal = vista.ClienteDireccionCodigoPostal,
                Calle        = vista.ClienteDireccionCalle,
                Colonia      = vista.ClienteDireccionColonia
            };

            bo.Cliente.RemoverDirecciones();
            bo.Cliente.Agregar(direccion);
            #endregion

            bo.Plazo = vista.Plazo;
            bo.FechaInicioContrato = vista.FechaInicioContrato;

            if (vista.LineasContrato != null)
            {
                bo.LineasContrato = vista.LineasContrato.ConvertAll(s => (ILineaContrato)s);
                #region RI0006
                foreach (var linea in bo.LineasContrato)
                {
                    linea.LineaContratoID = null;
                }
                #endregion
            }
            bo.UbicacionTaller  = vista.UbicacionTaller;
            bo.DepositoGarantia = vista.DepositoGarantia;
            bo.ComisionApertura = vista.ComisionApertura;
            if (vista.IncluyeSeguroID != null)
            {
                bo.IncluyeSeguro = (ETipoInclusion)Enum.Parse(typeof(ETipoInclusion), vista.IncluyeSeguroID.ToString());
            }
            if (vista.IncluyeLavadoID != null)
            {
                bo.IncluyeLavado = (ETipoInclusion)Enum.Parse(typeof(ETipoInclusion), vista.IncluyeLavadoID.ToString());
            }
            if (vista.IncluyePinturaRotulacionID != null)
            {
                bo.IncluyePinturaRotulacion = (ETipoInclusion)Enum.Parse(typeof(ETipoInclusion), vista.IncluyePinturaRotulacionID.ToString());
            }
            if (vista.IncluyeLlantasID != null)
            {
                bo.IncluyeLlantas = (ETipoInclusion)Enum.Parse(typeof(ETipoInclusion), vista.IncluyeLlantasID.ToString());
            }
            bo.DireccionAlmacenaje = vista.DireccionAlmacenaje;

            if (vista.DatosAdicionales != null)
            {
                bo.DatosAdicionalesAnexo = vista.DatosAdicionales;
            }

            #region Archivos Adjuntos
            List <ArchivoBO> adjuntos = presentadorDocumentos.Vista.ObtenerArchivos() ?? new List <ArchivoBO>();
            foreach (ArchivoBO adjunto in adjuntos)
            {
                if (bo.Tipo != null && bo.Tipo == ETipoContrato.CM)
                {
                    adjunto.TipoAdjunto = ETipoAdjunto.ContratoMantenimiento;
                }
                if (bo.Tipo != null && bo.Tipo == ETipoContrato.SD)
                {
                    adjunto.TipoAdjunto = ETipoAdjunto.ContratoServicioDedicado;
                }
                adjunto.Auditoria = new AuditoriaBO
                {
                    FC  = vista.FC,
                    UC  = vista.UC,
                    FUA = vista.FUA,
                    UUA = vista.UUA
                };
            }
            bo.DocumentosAdjuntos = adjuntos;
            #endregion

            if (vista.Observaciones != null)
            {
                bo.Observaciones = vista.Observaciones;
            }
            if (vista.EstatusID != null)
            {
                bo.Estatus = (EEstatusContrato)Enum.Parse(typeof(EEstatusContrato), vista.EstatusID.ToString());
            }
            if (vista.FC != null)
            {
                bo.FC = vista.FC;
            }
            if (vista.UC != null)
            {
                bo.UC = vista.UC;
            }
            if (vista.FUA != null)
            {
                bo.FUA = vista.FUA;
            }
            if (vista.UUA != null)
            {
                bo.UUA = vista.UUA;
            }

            return(bo);
        }
        /// <summary>
        /// Consulta la información completa del contrato para su despliegue en la vista
        /// </summary>
        private void ConsultarCompleto()
        {
            try
            {
                var bo   = (ContratoManttoBO)this.InterfazUsuarioADato();
                var temp = new ContratoManttoBO();

                if (bo.ContratoID.HasValue)
                {
                    temp.ContratoID = bo.ContratoID.Value;
                }
                else
                {
                    temp = bo;
                }

                List <ContratoManttoBO> lst = new ContratoManttoBR().Consultar(this.dctx, temp);

                if (lst.Count < 1)
                {
                    throw new Exception("No se encontró ningún registro que corresponda a la información proporcionada.");
                }
                if (lst.Count > 1)
                {
                    throw new Exception("La consulta devolvió más de un registro.");
                }

                var contrato = new ContratoManttoBO();

                if (lst != null && lst.Count > 0)
                {
                    contrato = lst[0];
                }

                var tipoContrato = ETipoAdjunto.ContratoMantenimiento;

                if (contrato != null)
                {
                    if (contrato.Tipo.HasValue)
                    {
                        switch (contrato.Tipo.Value)
                        {
                        case ETipoContrato.CM:
                            tipoContrato = ETipoAdjunto.ContratoMantenimiento;
                            break;

                        case ETipoContrato.SD:
                            tipoContrato = ETipoAdjunto.ContratoServicioDedicado;
                            break;
                        }
                    }
                }

                lst[0].DocumentosAdjuntos = new ArchivoBR().Consultar(this.dctx, new ArchivoBO()
                {
                    Activo = true, TipoAdjunto = tipoContrato
                }, contrato.ContratoID.Value);

                this.DatoAInterfazUsuario(lst[0]);
                this.vista.UltimoObjeto = lst[0];
            }
            catch (Exception ex)
            {
                this.DatoAInterfazUsuario(new ContratoManttoBO());
                throw new Exception(this.nombreClase + ".ConsultarCompleto:" + ex.Message);
            }
        }
        /// <summary>
        /// Obtiene la inforamción del contrato proporcionada por el usaurio para su actualización
        /// </summary>
        /// <returns>Contrato que será actualizado</returns>
        private object InterfazUsuarioADato()
        {
            var bo = new ContratoManttoBO();

            if (this.vista.UltimoObjeto is ContratoManttoBO)
            {
                bo = new ContratoManttoBO((ContratoManttoBO)this.vista.UltimoObjeto);
            }

            bo.ContratoID = this.vista.ContratoID;
            if (this.vista.EstatusID != null)
            {
                bo.Estatus = (EEstatusContrato)Enum.Parse(typeof(EEstatusContrato), this.vista.EstatusID.ToString());
            }
            else
            {
                bo.Estatus = null;
            }
            bo.FUA = this.vista.FUA;
            bo.UUA = this.vista.UUA;

            List <ArchivoBO> adjuntos = this.presentadorDocumentos.Vista.ObtenerArchivos();

            if (adjuntos != null)
            {
                foreach (ArchivoBO adjuntoContratoBo in adjuntos)
                {
                    if (bo != null)
                    {
                        if (bo.Tipo.HasValue)
                        {
                            switch (bo.Tipo.Value)
                            {
                            case ETipoContrato.CM:
                                adjuntoContratoBo.TipoAdjunto = ETipoAdjunto.ContratoMantenimiento;
                                break;

                            case ETipoContrato.SD:
                                adjuntoContratoBo.TipoAdjunto = ETipoAdjunto.ContratoServicioDedicado;
                                break;
                            }
                        }
                    }
                }
            }
            bo.DocumentosAdjuntos = adjuntos;

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

            return(bo);
        }
        /// <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);
        }
Exemple #23
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);
            }
        }