Exemplo n.º 1
0
        public bool GenerarConvenioModificatorio(Convenio Convenio, int IdUsuario, JustripreciacionContrato JustripreciacionContrato, ref string msjError, ref string fechaRegistro)
        {
            bool respuesta = false;

            try
            {
                ContratoArrtoDAL cDAL = new ContratoArrtoDAL();
                respuesta = cDAL.GenerarConvenioModificatorio(Convenio, IdUsuario, JustripreciacionContrato, ref msjError, ref fechaRegistro);
            }

            catch (Exception) { throw; }

            return(respuesta);
        }
        public static Respuesta ObtenerJustipreciacionSecuencial(string secuencial, int IdPais, int IdEstado, int IdMunicipio, int IdInmueble)
        {
            Respuesta      Respuesta        = new Respuesta();
            ControladorBUS cBus             = new ControladorBUS();
            string         SupRentable      = null;
            string         MontoDictaminado = null;
            NG_Inmueble    nInm             = new NG_Inmueble();
            bool           valCP            = false;

            try
            {
                List <SolicitudAvaluos> LsolAvaluos = cBus.ObtenerJustipreciacionAvaluos(secuencial);

                ModeloNegocios.InmuebleArrto Inmueble = new NG_InmuebleArrto().ObtenerInmuebleArrto(System.Convert.ToInt32(IdInmueble));

                if (Inmueble.IdPais != Constantes.IdMexico)
                {
                    Respuesta.Mensaje   = "El secuencial de justipreciación debe ser para un inmueble nacional. Favor de validar tus datos";
                    Respuesta.respuesta = false;
                    return(Respuesta);
                }

                if (LsolAvaluos == null)
                {
                    Respuesta.respuesta = false;
                    Respuesta.Mensaje   = "No se encontró ningun resultado en la busqueda del secuencial. Favor de validar tus datos";
                    return(Respuesta);
                }

                if (LsolAvaluos.Count == 0)
                {
                    Respuesta.respuesta = false;
                    Respuesta.Mensaje   = "No se encontró ningun resultado en la busqueda del secuencial. Favor de validar tus datos";
                    return(Respuesta);
                }

                SolicitudAvaluos solAvaluos = LsolAvaluos.FirstOrDefault();

                if (solAvaluos.Estatus.ToUpper() == "CANCELADO")
                {
                    Respuesta.respuesta = false;
                    Respuesta.Mensaje   = "El estatus de la justipreciación es cancelado";
                    return(Respuesta);
                }

                if (nInm.QuitarAcentosTexto(solAvaluos.EstadoDescripcion.Replace(" ", "").ToUpper()) == nInm.QuitarAcentosTexto(Inmueble.NombreEstado.Replace(" ", "").ToUpper()) && nInm.QuitarAcentosTexto(solAvaluos.MunicipioDescripcion.Replace(" ", "").ToUpper()) == nInm.QuitarAcentosTexto(Inmueble.NombreMunicipio.Replace(" ", "").ToUpper()))
                {
                    valCP = true;

                    if (!string.IsNullOrEmpty(solAvaluos.CP))
                    {
                        var res  = solAvaluos.CP.Trim().Replace(" ", "").PadLeft(5, '0');
                        var res1 = Inmueble.CodigoPostal.Trim().Replace(" ", "").PadLeft(5, '0');

                        if (res != res1)
                        {
                            valCP = false;
                        }
                    }

                    if (!valCP)
                    {
                        Respuesta.respuesta = false;
                        Respuesta.Mensaje   = "El secuencial de justipreciación proporcionado no corresponde con el código postal  de la dirección del inmueble. Favor de validar tus datos";
                        return(Respuesta);
                    }
                }

                else
                {
                    Respuesta.respuesta = false;
                    Respuesta.Mensaje   = "El secuencial de justipreciación proporcionado no corresponde con la entidad federativa y municipio en la dirección del inmueble. Favor de validar tus datos";
                    return(Respuesta);
                }

                if (solAvaluos.SuperficieRentableDictaminado != null || solAvaluos.SuperficieRentable != null)
                {
                    if ((solAvaluos.SuperficieRentableDictaminado != null) && (solAvaluos.SuperficieRentableDictaminado > 0))
                    {
                        SupRentable = solAvaluos.SuperficieRentableDictaminado.Value.ToString("0.00");
                    }
                    if ((solAvaluos.SuperficieRentable != null) && (solAvaluos.SuperficieRentable > 0))
                    {
                        SupRentable = solAvaluos.SuperficieRentable.Value.ToString("0.00");
                    }
                }

                if (solAvaluos.MontoDictaminado != null)
                {
                    MontoDictaminado = solAvaluos.MontoDictaminado.Value.ToString("0.00");
                }

                if ((SupRentable == null && MontoDictaminado == null) || (Convert.ToDecimal(SupRentable) == 0 || Convert.ToDecimal(MontoDictaminado) == 0))
                {
                    string msjError = "El secuencial de justipreciación proporcionado con estatus de atención: " + solAvaluos.Estatus.ToUpper() + ", aun no cuenta con: <br/> * Monto dictaminado <br/> * Superficie rentable dictaminado ó capturada por el promovente en la solicitud de avalúo <br/> Es necesario que se cuente con esta información para poder registrarlo al contrato, por favor contacte al Indaabin";

                    if (solAvaluos.Estatus.ToUpper() != "CONCLUIDO")
                    {
                        msjError = "El secuencial de justipreciación proporcionado con estatus de atención: " + solAvaluos.Estatus.ToUpper() + ", aun no cuenta con: <br/> * Monto dictaminado <br/> * Superficie rentable dictaminado ó capturada por el promovente en la solicitud de avalúo <br/> Es necesario que se cuente con esta información para poder registrarlo al contrato, por favor contacte al Indaabin";
                    }

                    Respuesta.Mensaje   = msjError;
                    Respuesta.respuesta = false;
                    return(Respuesta);
                }

                DateTime?fechaDictamen = null;

                if (string.IsNullOrEmpty(solAvaluos.FechaDictamen.ToString()) == false)
                {
                    fechaDictamen = Convert.ToDateTime(solAvaluos.FechaDictamen.Substring(0, 10));
                }


                JustripreciacionContrato justipreciacion = new JustripreciacionContrato
                {
                    MontoDictaminado      = Convert.ToDecimal(MontoDictaminado),
                    SuperficieDictaminada = SupRentable,
                    UnidadMedidaSupRentableDictaminada = solAvaluos.UnidadMedidaRentable,
                    EstatusAtencion            = solAvaluos.Estatus,
                    NoGenerico                 = solAvaluos.NoGenerico,
                    FechaDictamen              = fechaDictamen,
                    descFechaDictamen          = fechaDictamen == null ? "" : fechaDictamen.Value.ToString("d"),
                    Secuencial                 = secuencial,
                    InstitucionJustipreciacion = solAvaluos.InstitucionDescripcion,
                };

                Respuesta.Justipreciacion = justipreciacion;
                Respuesta.respuesta       = true;
                Respuesta.Mensaje         = string.Empty;
            }

            catch (Exception ex)
            {
                Respuesta.respuesta = false;
                Respuesta.Mensaje   = "Hubo un problema al realizar la búsqueda del secuencial. Favor de contactar a tu administrador";
            }

            return(Respuesta);
        }
        public static Respuesta GenerarRegistroConvenio(int IdUsuario, Convenio Convenio, JustripreciacionContrato JustripreciacionContrato, string Institucion, int IdInmueble)
        {
            Respuesta    Respuesta = new Respuesta();
            string       msjError  = string.Empty;
            NG_Catalogos nCatalogo = new NG_Catalogos();
            string       HTML      = string.Empty;

            Utilerias.ExportHTML exportHTML = new Utilerias.ExportHTML();
            string        fechaRegistro     = string.Empty;
            string        fechaAutorizacion = string.Empty;
            AcuseContrato AcuseContrato     = new AcuseContrato();

            try
            {
                NG_ContratoArrto             nContrato        = new NG_ContratoArrto();
                ModeloNegocios.InmuebleArrto objInmuebleArrto = new Negocio.NG_InmuebleArrto().ObtenerInmuebleArrto(IdInmueble);

                JustripreciacionContrato.FechaDictamen = null;

                if (!string.IsNullOrEmpty(JustripreciacionContrato.descFechaDictamen))
                {
                    JustripreciacionContrato.FechaDictamen = Convert.ToDateTime(JustripreciacionContrato.descFechaDictamen);
                }

                if (!nContrato.GenerarConvenioModificatorio(Convenio, IdUsuario, JustripreciacionContrato, ref msjError, ref fechaRegistro))
                {
                    if (msjError.Length == 0)
                    {
                        msjError = "Hubo un problema al generar el registro del convenio modificatorio. Favor de contactar a tu administrador";
                    }

                    Respuesta.respuesta = false;
                    Respuesta.Mensaje   = msjError;
                    return(Respuesta);
                }

                string Direccion      = objInmuebleArrto.DireccionCompleta;
                string CadenaOriginal = "||Invocante:[" + Institucion + "] || Inmueble:[" + Direccion + "]||Fecha:[" + DateTime.Today.ToLongDateString() + "]||" + Guid.NewGuid().ToString();
                string SelloDigital   = UtilContratosArrto.Encrypt(CadenaOriginal, true, "ConvenioModificatorio");
                string ruta           = ConfigurationManager.AppSettings["RutaDocsAdjuntosEscritura"] + Convenio.FolioConvenio + "\\AcuseConvenio\\";

                Convenio.cadOriginal = CadenaOriginal;
                Convenio.Sello       = SelloDigital;
                Convenio.QR          = UtilContratosArrto.GenerarCodigoQR(string.Empty, 6, string.Empty, ruta.Replace("\\", "/").Replace(ConfigurationManager.AppSettings["RutaDocsAdjuntosEscritura"], ConfigurationManager.AppSettings["RutaDocsAdjuntosLectura"]) + "AcuseConvenioModificatorio.pdf");

                if (!nContrato.AutorizarConvenioModificatorio(Convenio.IdConvenio, CadenaOriginal, SelloDigital, Convenio.QR, IdUsuario, ref fechaAutorizacion))
                {
                    if (msjError.Length == 0)
                    {
                        msjError = "Hubo un problema al generar el registro del convenio modificatorio. Favor de contactar a tu administrador";
                    }

                    Respuesta.respuesta = false;
                    Respuesta.Mensaje   = msjError;
                    return(Respuesta);
                }

                Parametro parametro = nCatalogo.ObtenerParametroNombre("PlantillaConvenioModificatorio");
                HTML = parametro.ValorParametro;

                Parametro ParametroQR = nCatalogo.ObtenerParametroNombre("LeyendaQR");

                AcuseContrato = nContrato.ObtenerAcuseContrato(Convenio.FolioContrato);

                string cuerpoTabla = string.Empty;

                if (Convenio.TieneProrroga == 1)
                {
                    cuerpoTabla += "<tr font-family: Montserrat'><td><strong>Prorroga de vigencia:</strong> " + Convenio.descFechaTermino + "</td></tr>";
                }

                if (Convenio.TieneNvaSuperfice == 1)
                {
                    cuerpoTabla += "<tr font-family: Montserrat'><td><strong>Superficie rentable:</strong> " + Convenio.SupM2 + "</td></tr>";
                }

                if (Convenio.TieneNvoMonto == 1)
                {
                    cuerpoTabla += "<tr font-family: Montserrat'><td><strong>Monto de pago mensual:</strong> " + Convenio.ImporteRenta + "</td></tr>";
                }

                if (Convenio.TieneNvoMonto == 1 && Convenio.ImporteRenta > Constantes.MONTO_MINIMO_SECUENCIAL)
                {
                    cuerpoTabla += "<tr font-family: Montserrat'><td><strong>Secuencial de justipreciación:</strong> " + Convenio.Secuencial + "</td></tr>";
                }

                HTML = HTML.Replace("##FechaEfecto##", Convenio.DescFechaEfectoConvenio);
                HTML = HTML.Replace("##Folio##", Convenio.FolioConvenio);
                HTML = HTML.Replace("##InstitucionPublica##", Institucion);
                HTML = HTML.Replace("##Propietario##", AcuseContrato.ContratoArrto.PropietarioInmueble);
                HTML = HTML.Replace("##FunResponsable##", AcuseContrato.ContratoArrto.FuncionarioResponsable);
                HTML = HTML.Replace("##DireccionInmu##", objInmuebleArrto.DireccionCompleta);
                HTML = HTML.Replace("##valorRIUF##", AcuseContrato.ContratoArrto.RIUF.ToString());

                HTML = HTML.Replace("##CadOriginal##", Convenio.cadOriginal);
                HTML = HTML.Replace("##Sello##", Convenio.Sello);
                HTML = HTML.Replace("##QR##", Convenio.QR);
                HTML = HTML.Replace("##LeyendaQR##", ParametroQR.ValorParametro);
                HTML = HTML.Replace("##HoraReg##", Convenio.FechaRegistro.ToString("hh:mm tt"));

                HTML = HTML.Replace("##dia##", fechaRegistro.Split('/')[0]);
                HTML = HTML.Replace("##mes##", Util.ObtenerDescripcionMes(Convert.ToInt32(fechaRegistro.Split('/')[1])));
                HTML = HTML.Replace("##anio##", fechaRegistro.Split('/')[2]);

                HTML = HTML.Replace("##FechaAutorizacion##", fechaAutorizacion);

                HTML = HTML.Replace("##CuerpoTabla##", cuerpoTabla);

                byte[] bPDF = exportHTML.GeneraPdfFromHtmlStr(HTML);

                if (bPDF != null)
                {
                    if (!Directory.Exists(ruta))
                    {
                        Directory.CreateDirectory(ruta);
                    }

                    if (File.Exists(ruta + "AcuseConvenioModificatorio.pdf"))
                    {
                        File.Delete(ruta + "AcuseConvenioModificatorio.pdf");
                    }

                    File.WriteAllBytes(ruta + "AcuseConvenioModificatorio.pdf", bPDF);

                    Respuesta.Url       = ruta.Replace("\\", "/").Replace(ConfigurationManager.AppSettings["RutaDocsAdjuntosEscritura"], ConfigurationManager.AppSettings["RutaDocsAdjuntosLectura"]) + "AcuseConvenioModificatorio.pdf";
                    Respuesta.respuesta = true;
                    Respuesta.Mensaje   = string.Empty;
                }
            }

            catch (Exception ex)
            {
                Respuesta.respuesta = false;
                Respuesta.Mensaje   = "Hubo un problema al generar el registro del convenio modificatorio. Favor de contactar a tu administrador";
            }

            return(Respuesta);
        }
        public bool GenerarConvenioModificatorio(Convenio Convenio, int IdUsuario, JustripreciacionContrato JustripreciacionContrato, ref string msjError, ref string fechaRegistro)
        {
            bool respuesta  = false;
            int  IdConvenio = 0;

            try
            {
                using (ArrendamientoInmuebleEntities aInmuebles = new ArrendamientoInmuebleEntities())
                {
                    Datos.ContratoArrto Contrato = aInmuebles.ContratoArrto.Where(x => x.FolioContratoArrto == Convenio.FolioContrato && x.EstatusRegistro == true).FirstOrDefault();

                    if (Contrato == null)
                    {
                        msjError = "No se encuentra el registro del contrato. Favor de contactar a tu administrador";
                        return(false);
                    }

                    if (Convenio.TieneNvoMonto == 1 && Convenio.ImporteRenta > Constantes.MONTO_MINIMO_SECUENCIAL)
                    {
                        JustipreciacionArrto justipreciacion = aInmuebles.JustipreciacionArrto.Where(x => x.Fk_IdContratoArrto == Contrato.IdContratoArrto && x.EstatusRegistro == true).FirstOrDefault();

                        if (justipreciacion != null)
                        {
                            if (Convenio.Secuencial == justipreciacion.Secuencial)
                            {
                                msjError = "El secuencial no puede ser igual al secuencial del contrato. Favor de validar tus datos";
                                return(false);
                            }

                            List <Convenio_Modificatorio> Lconvenio = aInmuebles.Convenio_Modificatorio.Where(x => x.Fk_IdJustipreciacion == Convenio.Secuencial).ToList();

                            if (Lconvenio != null)
                            {
                                if (Lconvenio.Count > 0)
                                {
                                    msjError = "El secuencial ingresado se encuentra relacionado a otro convenio modificatorio. Favor de validar tus datos";
                                    return(false);
                                }
                            }
                        }
                    }

                    IdConvenio = aInmuebles.Convenio_Modificatorio.Where(x => x.Fk_IdContratoArrto == Contrato.IdContratoArrto).Count();
                    IdConvenio = IdConvenio + 1;

                    using (TransactionScope transaccion = new TransactionScope())
                    {
                        Convenio_Modificatorio convenio = new Convenio_Modificatorio();
                        convenio.Fk_IdContratoArrto = Contrato.IdContratoArrto;
                        convenio.IdConvenio         = (short)IdConvenio;
                        convenio.FechaConvenio      = Convert.ToDateTime(Convenio.descFechaConvenio);
                        convenio.Nombre             = Convenio.NombreOIC;
                        convenio.Primer_Apellido    = Convenio.PApellidoOIC;
                        convenio.Segundo_Apellido   = Convenio.SApellidoOIC;
                        convenio.Nombre_Cargo       = Convenio.CargoOIC;
                        convenio.Email             = Convenio.CorreoOIC;
                        convenio.FechaEfecConvenio = Convert.ToDateTime(Convenio.DescFechaEfectoConvenio);

                        if (Convenio.TieneProrroga == 1)
                        {
                            convenio.FechaTerminacion = Convert.ToDateTime(Convenio.descFechaTermino);
                        }

                        if (Convenio.TieneNvaSuperfice == 1)
                        {
                            convenio.Nueva_Superficie = Convenio.SupM2;
                        }

                        if (Convenio.TieneNvoMonto == 1)
                        {
                            convenio.Importe_Renta = Convenio.ImporteRenta;
                        }



                        if (Convenio.TieneNvoMonto == 1 && Convenio.ImporteRenta > Constantes.MONTO_MINIMO_SECUENCIAL)
                        {
                            convenio.Fk_IdJustipreciacion = Convenio.Secuencial;
                        }

                        convenio.FechaRegistro = DateTime.Now;
                        convenio.Institución_justipreciacion = 1;

                        aInmuebles.Convenio_Modificatorio.Add(convenio);
                        aInmuebles.SaveChanges();
                        fechaRegistro          = convenio.FechaRegistro.ToString("d");
                        Convenio.FechaRegistro = convenio.FechaRegistro;

                        Convenio.IdConvenio          = convenio.IdConvenioModif;
                        Convenio.ConsecutivoConvenio = convenio.IdConvenio;

                        if (Convenio.TieneNvoMonto == 1 && Convenio.ImporteRenta > Constantes.MONTO_MINIMO_SECUENCIAL)
                        {
                            convenio.Fk_IdJustipreciacion = Convenio.Secuencial;
                        }

                        aInmuebles.SaveChanges();

                        transaccion.Complete();
                        respuesta = true;
                    }

                    Convenio.ConsecutivoConvenio = IdConvenio;
                    Convenio.FolioConvenio       = Convenio.FolioContrato + "-" + IdConvenio.ToString().PadLeft(2, '0');
                }
            }

            catch (Exception ex)
            {
                throw new Exception(string.Format("GenerarConvenioModificatorio:{0}", ex.Message));
            }

            return(respuesta);
        }