//Insert de un Contrato Arrto.
        //Devuelve el Folio de contrato
        public int InsertContratoArrto(ModeloNegocios.ContratoArrto objContratoArrto)
        {
            int FolioContrato = 0;

            System.Data.Entity.Core.Objects.ObjectParameter parametroFolioContrato = new System.Data.Entity.Core.Objects.ObjectParameter("FolioContrato", FolioContrato);

            using (ArrendamientoInmuebleEntities Conn = new ArrendamientoInmuebleEntities())
            {
                try
                {
                    Conn.spuInsertContratoArrto(
                        objContratoArrto.Fk_IdTipoContrato,      //1=Nac, 2=Ext u 3=OtrasFig
                        objContratoArrto.Fk_IdTipoArrendamiento, //Nuevo, Sust o Cont
                        objContratoArrto.Fk_IdTipoContratacion,  //Automatico, Dictamiando
                        objContratoArrto.Fk_IdInmuebleArrendamiento,
                        objContratoArrto.Fk_NumContratoHistorico,
                        objContratoArrto.Fk_IdContratoArrtoPadre,
                        objContratoArrto.Fk_IdTipoUsoInm,    //del BUS
                        objContratoArrto.OtroUsoInmueble,
                        objContratoArrto.Fk_IdTipoOcupacion, //Comodato, Prestamo, Conscesión (aplicable solo a Arrendamiento de Otras Fig.)
                        objContratoArrto.OtroTipoOcupacion,
                        objContratoArrto.Fk_IdTipoMoneda,
                        objContratoArrto.Fk_IdInstitucion,
                        objContratoArrto.NombreInstitucion,
                        objContratoArrto.FechaInicioOcupacion,
                        objContratoArrto.FechaFinOcupacion,
                        objContratoArrto.AreaOcupadaM2,
                        objContratoArrto.MontoPagoMensual,
                        objContratoArrto.MontoPagoPorCajonesEstacionamiento,
                        objContratoArrto.CuotaMantenimiento,
                        objContratoArrto.PtjeImpuesto,
                        objContratoArrto.FolioEmisionOpinion, //se define como atributo y no como objeto, porque solo se 1 dato: el Id
                        objContratoArrto.NumeroDictamenExcepcionFolioSMOI,
                        objContratoArrto.RIUF,
                        objContratoArrto.Observaciones,
                        objContratoArrto.PropietarioInmueble,
                        objContratoArrto.FuncionarioResponsable,
                        objContratoArrto.Fk_IdUsuarioRegistro,
                        objContratoArrto.CargoUsuarioRegistro,
                        //objetos de Persona Referencia
                        //titular del OIC
                        objContratoArrto.PersonaReferenciaTitularOIC.NombreCargo,
                        objContratoArrto.PersonaReferenciaTitularOIC.Nombre,
                        objContratoArrto.PersonaReferenciaTitularOIC.ApellidoPaterno,
                        objContratoArrto.PersonaReferenciaTitularOIC.ApellidoMaterno,
                        objContratoArrto.PersonaReferenciaTitularOIC.Email,
                        //Capturista
                        objContratoArrto.PersonaReferenciaCapturista.NombreCargo,
                        objContratoArrto.PersonaReferenciaCapturista.Nombre,
                        objContratoArrto.PersonaReferenciaCapturista.ApellidoPaterno,
                        objContratoArrto.PersonaReferenciaCapturista.ApellidoMaterno,
                        objContratoArrto.PersonaReferenciaCapturista.Email,
                        //Objeto de Justipreciacion
                        objContratoArrto.JustripreciacionContrato.Secuencial,
                        objContratoArrto.JustripreciacionContrato.SuperficieDictaminada,
                        objContratoArrto.JustripreciacionContrato.FechaDictamen,
                        objContratoArrto.JustripreciacionContrato.MontoDictaminado,
                        objContratoArrto.JustripreciacionContrato.EstatusAtencion,
                        objContratoArrto.JustripreciacionContrato.NoGenerico,
                        objContratoArrto.JustripreciacionContrato.UnidadMedidaSupRentableDictaminada,
                        // apartado de seguridad
                        objContratoArrto.CuentaConDictamen,
                        objContratoArrto.FechaDictamen,
                        //
                        objContratoArrto.CadenaOriginal,
                        objContratoArrto.SelloDigital,
                        objContratoArrto.QR,
                        parametroFolioContrato //parametro ouput
                        );

                    Conn.SaveChanges();

                    if (parametroFolioContrato == null)
                    {
                        throw new InvalidOperationException("No se pudo registrar el Contrato de Arrendamiento, vuelva a intentar o reporte a Sistemas");
                    }
                }
                catch (Exception ex)
                {
                    throw new Exception(string.Format("InsertContratoArrto: {0}", ex.Message));
                }
            }//using

            if (parametroFolioContrato.Value != null)
            {
                FolioContrato = Convert.ToInt32(parametroFolioContrato.Value);
            }

            //parametro de retorno, regresa 0 si no hay insert, o el folio > 0 si se realizo el insert
            return(FolioContrato);
        }