Exemple #1
0
        public ConsultarContratoManttoPRE(IConsultarContratoManttoVIS view, IucHerramientasManttoVIS viewHerramientas)
        {
            try
            {
                this.vista = view;
                this.presentadorHerramientas = new ucHerramientasManttoPRE(viewHerramientas);
                dctx = FacadeBR.ObtenerConexion();

                this.controlador = new ContratoManttoBR();
            }
            catch (Exception ex)
            {
                vista.MostrarMensaje("Inconsistencias en la construcción del presentador", ETipoMensajeIU.ERROR, nombreClase + ".ConsultarContratoManttoPRE: " + ex.Message);
            }
        }
        /// <summary>
        /// Constructor por defecto del presentador
        /// </summary>
        /// <param name="view">Vista de Registro</param>
        /// <param name="viewDatosContrato">Vista de Datos de Contrato</param>
        /// <param name="viewDocumentos">Vista del Control de Documentos</param>
        /// <param name="viewHerramientas">Vista de la Barra de Herramienta</param>
        public RegistrarContratoManttoPRE(IRegistrarContratoManttoVIS view, IucContratoManttoVIS viewDatosContrato, IucLineaContratoManttoVIS viewLinea, IucCatalogoDocumentosVIS viewDocumentos)
        {
            try
            {
                this.vista = view;
                this.presentadorDatosContrato = new ucContratoManttoPRE(viewDatosContrato, viewLinea);
                this.presentadorDocumentos    = new ucCatalogoDocumentosPRE(viewDocumentos);

                this.controlador = new ContratoManttoBR();
                this.dctx        = FacadeBR.ObtenerConexion();
            }
            catch (Exception ex)
            {
                this.vista.MostrarMensaje("Inconsistencia en los parámetros de configuración", ETipoMensajeIU.ERROR, this.nombreClase + ".ucContratoManttoPRE:" + ex.Message);
            }
        }
        public CancelarContratoManttoPRE(ICancelarContratoManttoVIS vistaActual, IucHerramientasManttoVIS vistaHerramientas, IucContratoManttoVIS vistaContrato, IucLineaContratoManttoVIS vistaLinea)
        {
            try
            {
                this.vista = vistaActual;

                this.presentadorContrato     = new ucContratoManttoPRE(vistaContrato, vistaLinea);
                this.presentadorHerramientas = new ucHerramientasManttoPRE(vistaHerramientas);

                this.controlador = new ContratoManttoBR();
                this.dctx        = FacadeBR.ObtenerConexion();
            }
            catch (Exception ex)
            {
                this.vista.MostrarMensaje("Inconsistencia en los parámetros de configuración", ETipoMensajeIU.ERROR, this.nombreClase + ".CancelarContratoManttoPRE:" + ex.Message);
            }
        }
        /// <summary>
        /// Constructor del presentador para la edición de los contratos de mantenimiento
        /// </summary>
        /// <param name="vista">vista de la edición del contrato de mantenimiento</param>
        /// <param name="viewHerramientas">Vista del user control correspondiente a la barra de herramientas</param>
        /// <param name="viewContrato">Vista del  user control general</param>
        /// <param name="viewLinea">Vista de l user control de linea de contrato</param>
        /// <param name="viewDocumentos">Vista del user control de documnetos</param>
        public EditarContratoManttoPRE(IEditarContratoManttoVIS vista, IucHerramientasManttoVIS viewHerramientas, IucContratoManttoVIS viewContrato, IucLineaContratoManttoVIS viewLinea, IucCatalogoDocumentosVIS viewDocumentos)
        {
            try
            {
                if (ReferenceEquals(vista, null))
                {
                    throw new Exception("La vista asociada no puede ser nula");
                }

                this.vista                   = vista;
                this.controlador             = new ContratoManttoBR();
                this.dctx                    = FacadeBR.ObtenerConexion();
                this.presentadorDatos        = new ucContratoManttoPRE(viewContrato, viewLinea);
                this.presentadorDocumentos   = new ucCatalogoDocumentosPRE(viewDocumentos);
                this.presentadorHerramientas = new ucHerramientasManttoPRE(viewHerramientas);
            }
            catch (Exception ex)
            {
                this.vista.MostrarMensaje("Inconsistencia al crear el presentador", ETipoMensajeIU.ERROR, string.Format("{0}.EditarContratoManttoPRE:{1}{2}", nombreClase, Environment.NewLine, ex.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);
        }
        /// <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>
        /// 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>
        /// 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);
            }
        }