/**
  * Agrega una vivienda a la persona
  * @param string $calle
  * @param string $numero_exterior
  * @param string $codigo_postal
  * @param string $numero_interior
  * @param string $referencia
  * @param string $telefono_fijo
  * @param string $telefono_movil
  * @param string $es_principal
  * @param number $regimen
  * @param number $tipo
  * @param number $tiempo_de_residir
  * @param string $colonia				Nombre del colonia
  * @param string $TipoDeAcceso			Calle, Andador, etc
  * @param string $gps					Claves GPS 0,0,0
  * @param string $clave_de_localidad
  * @param string $clave_de_pais			Ejemplo MX
  * @param string $nombre_pais			Ejemplo Mexico
  * @return string	Mensaje de resultado
  */
 function addVivienda($calle, $numero_exterior, $codigo_postal = false, $numero_interior = "", $referencia = "", $telefono_fijo = "0", $telefono_movil = "0", $es_principal = false, $regimen = FALLBACK_PERSONAS_REGIMEN_VIV, $tipo = FALLBACK_PERSONAS_TIPO_VIV, $tiempo_de_residir = DEFAULT_TIEMPO, $colonia = "", $TipoDeAcceso = "", $gps = "", $clave_de_localidad = false, $clave_de_pais = EACP_CLAVE_DE_PAIS, $nombre_pais = "", $nombre_estado = "", $nombre_municipo = "", $nombre_localidad = "")
 {
     //$xViv				= new cPersonasVivienda($this->getCodigo(), $tipo);
     $fechaalta = fechasys();
     $eacp = EACP_CLAVE;
     $socio = $this->mCodigo;
     $xT = new cTipos();
     $xLc = new cLocal();
     $xQL = new MQL();
     //depurar calle y numero 18Jul2013
     $calle = str_replace("CALLE", "", strtoupper($calle));
     //Inicia al Socio 20120620
     $this->init();
     $DSocio = $this->getDatosInArray();
     $TipoDeIngreso = $DSocio["tipoingreso"];
     $codigo_postal = setNoMenorQueCero($codigo_postal);
     $sucursal = getSucursal();
     $sucess = true;
     $usuario = getUsuarioActual();
     //Fixed
     $msg = "";
     $TipoDeAcceso = $TipoDeAcceso == "" ? "calle" : $TipoDeAcceso;
     $clave_de_municipio = $xLc->DomicilioMunicipioClave();
     $clave_de_estado = $xLc->DomicilioEstadoClaveNum();
     $clave_de_localidad = setNoMenorQueCero($clave_de_localidad);
     $clave_de_pais = trim($clave_de_pais) == "" ? EACP_CLAVE_DE_PAIS : $clave_de_pais;
     /* 1 part 2 fiscal 3 laboral*/
     //verifica los codigos postales
     $xCol = new cDomiciliosColonias();
     if ($clave_de_pais == EACP_CLAVE_DE_PAIS) {
         if ($xCol->existe($codigo_postal) == true) {
             $estado = $xCol->getNombreEstado();
             $nombre_localidad = $xCol->getNombreLocalidad();
             $municipio = $xCol->getNombreMunicipio();
             $colonia = trim($colonia) == "" ? $xCol->getNombre() : $xT->cChar($colonia);
             $clave_de_estado = $xCol->getClaveDeEstado();
             $clave_de_municipio = $xCol->getClaveDeMunicipio();
             $msg .= "WARN\t{$socio}\tEl CP queda en {$codigo_postal}, Localidad en {$nombre_localidad}, municipio en {$municipio}, Colonia {$colonia}\r\n";
         } else {
             $msg .= "WARN\tEL C.P.({$codigo_postal}) No existe, se carga el de la Caja Local\r\n";
             if (SISTEMA_CAJASLOCALES_ACTIVA == true) {
                 $this->init();
                 $xCL = new cCajaLocal($this->mCajaLocal);
                 $DCols = $xCL->getDatosInArray();
                 $codigo_postal = isset($DCols["codigo_postal"]) ? setNoMenorQueCero($DCols["codigo_postal"]) : $xLc->DomicilioCodigoPostal();
                 $msg .= "WARN\tSe obtiene el C.P. por caja Local ({$codigo_postal}) \r\n";
                 if ($xCol->existe($codigo_postal) == true) {
                     $estado = $xCol->getNombreEstado();
                     $nombre_localidad = $xCol->getNombreLocalidad();
                     $municipio = $xCol->getNombreMunicipio();
                     $colonia = trim($colonia) == "" ? $xCol->getNombre() : $xT->cChar($colonia);
                     $clave_de_estado = $xCol->getClaveDeEstado();
                     $clave_de_municipio = $xCol->getClaveDeMunicipio();
                 }
             }
             if ($codigo_postal <= 0) {
                 $msg .= "ERROR\tEL C.P.({$codigo_postal}) No existe, se carga el de la Sucursal\r\n";
                 $codigo_postal = $xLc->DomicilioCodigoPostal();
             }
         }
     } else {
         $clave_de_estado = FALLBACK_PERSONAS_DOMICILIO_ID_ESTADO;
         $clave_de_municipio = FALLBACK_PERSONAS_DOMICILIO_ID_MUNICIPIO;
         if ($codigo_postal <= 0) {
             $codigo_postal = 1;
         }
     }
     $xLoc = new cDomicilioLocalidad($clave_de_localidad);
     if ($clave_de_localidad <= 0) {
         $clave_de_localidad = $xLoc->setBuscar($nombre_localidad, $clave_de_estado, $clave_de_municipio);
         if (setNoMenorQueCero($clave_de_localidad) <= 0) {
             $clave_de_localidad = $xLc->DomicilioLocalidadClave();
         }
         $xLoc->set($clave_de_localidad);
     } else {
         $xLoc->init();
     }
     $nombre_localidad = $nombre_localidad == "" ? $xLoc->getNombre() : $nombre_localidad;
     //Tipos de Acceso calle, avenida, callejon privada, andador
     if ($nombre_pais == "") {
         $xPais = new cDomiciliosPaises($clave_de_pais);
         //$xPais->getPaisPorMoneda($moneda)
         $xTP = new cPersonas_domicilios_paises();
         $xTP->setData($xTP->query()->initByID($clave_de_pais));
         $nombre_pais = $xTP->nombre_oficial()->v();
         $municipio = $nombre_municipo == "" ? $nombre_localidad : strtoupper($nombre_municipo);
         $estado = $nombre_estado == "" ? $nombre_localidad : strtoupper($nombre_estado);
     }
     $estado = $nombre_estado == "" ? $xLc->DomicilioEstado() : strtoupper($nombre_estado);
     $nombre_localidad = $nombre_localidad == "" ? $xLc->DomicilioLocalidad() : strtoupper($nombre_localidad);
     $municipio = $nombre_municipo == "" ? $xLc->DomicilioMunicipio() : strtoupper($nombre_municipo);
     $calle = setCadenaVal($calle);
     $colonia = setCadenaVal($colonia);
     $estado = setCadenaVal($estado);
     $nombre_localidad = setCadenaVal($nombre_localidad);
     $municipio = setCadenaVal($municipio);
     $sql = "INSERT INTO socios_vivienda(socio_numero, tipo_regimen, calle, numero_exterior, numero_interior, colonia,\n\t\t\t\tlocalidad, estado, municipio, telefono_residencial, telefono_movil,\n\t\t\t\ttiempo_residencia, referencia, idusuario, principal, tipo_domicilio, codigo_postal,\n\t\t\t\tfecha_alta, codigo , sucursal,\n\t\t\t\teacp, coordenadas_gps, tipo_de_acceso, fecha_de_verificacion, oficial_de_verificacion, estado_actual, clave_de_localidad,\n\t\t\t\tclave_de_pais, nombre_de_pais)\n\t\t\t\tVALUES\n\t\t\t\t({$socio}, {$regimen}, '{$calle}', '{$numero_exterior}', '{$numero_interior}', '{$colonia}',\n\t\t\t\t'{$nombre_localidad}', '{$estado}', '{$municipio}', '{$telefono_fijo}','{$telefono_movil}',\n\t\t\t\t{$tiempo_de_residir}, '{$referencia}', {$usuario}, '{$es_principal}', {$tipo}, '{$codigo_postal}',\n\t\t\t\t'{$fechaalta}', {$socio}, '{$sucursal}',\n\t\t\t\t'{$eacp}', '{$gps}', '{$TipoDeAcceso}', '{$fechaalta}', {$usuario}, 99, {$clave_de_localidad},\n\t\t\t\t'{$clave_de_pais}', '{$nombre_pais}')";
     $sucess = $xQL->setRawQuery($sql);
     if ($sucess != false) {
         $id = $xQL->getLastInsertID();
         $this->mIDVivienda = $id;
         $msg .= "OK\tSe agrega la Vivienda con ID {$id} CP {$codigo_postal} y Localidad {$clave_de_localidad} del pais {$nombre_pais}\r\n";
         //Actualiza el Dato de Domicilio del Grupo Solidario
         if ($TipoDeIngreso == TIPO_INGRESO_GRUPO and intval($es_principal) == SYS_UNO) {
             $xGrp = new cGrupo($this->mCodigo);
             $DDom = $this->getDatosDomicilio();
             $arrUp = array("direccion_gruposolidario" => $this->getDomicilio(), "colonia_gruposolidario" => $DDom["colonia"]);
             $xGrp->setUpdate($arrUp);
             $msg .= $xGrp->getMessages();
         }
         $this->setCuandoSeActualiza();
     }
     $this->mMessages .= $msg;
     return $sucess;
 }
 function obj()
 {
     $mObj = null;
     switch ($this->mTabla) {
         case TPERSONAS_RELACIONES:
             $mObj = new cSocios_relaciones();
             break;
         case TBANCOS_CUENTAS:
             $mObj = new cBancos_cuentas();
             break;
         case TOPERACIONES_RECIBOS:
             $mObj = new cOperaciones_recibos();
             break;
         case TOPERACIONES_MVTOS:
             $mObj = new cOperaciones_mvtos();
             break;
         case TBANCOS_OPERACIONES:
             $mObj = new cBancos_operaciones();
             break;
         case TBANCOS_CUENTAS:
             $mObj = new cBancos_cuentas();
             break;
         case TCREDITOS_REGISTRO:
             $mObj = new cCreditos_solicitud();
             break;
         case TTESORERIA_MVTOS:
             $mObj = new cTesoreria_cajas_movimientos();
             break;
         case TCATALOGOS_EMPRESAS:
             $mObj = new cSocios_aeconomica_dependencias();
             $this->mCampoDesc = $mObj->nombre_corto()->v();
             break;
         case TCATALOGOS_RELACIONES:
             $mObj = new cSocios_relacionestipos();
             $this->mCampoDesc = $mObj->descripcion_relacionestipos()->get();
             break;
         case TCATALOGOS_ACTIVIDADES_ECONOMICAS:
             $mObj = new cPersonas_actividad_economica_tipos();
             $this->mCampoDesc = $mObj->nombre_de_la_actividad()->get();
             break;
         case TCATALOGOS_LOCALIDADES:
             $mObj = new cCatalogos_localidades();
             $this->mCampoDesc = $mObj->nombre_de_la_localidad()->get();
             break;
         case TCAPTACION_CUENTAS:
             $mObj = new cCaptacion_cuentas();
             break;
         case TCATALOGOS_PAISES:
             $mObj = new cPersonas_domicilios_paises();
             $this->mCampoDesc = $mObj->nombre_oficial()->get();
             break;
         case TPERSONAS_DIRECCIONES:
             $mObj = new cSocios_vivienda();
             break;
         case TPERSONAS_GENERALES:
             $mObj = new cSocios_general();
             break;
         case TPERSONAS_MEMOS:
             $mObj = new cSocios_memo();
             break;
         case TPERSONAS_PERFIL_TRANSACCIONAL:
             $mObj = new cPersonas_perfil_transaccional();
             break;
         case TSEGUMIENTO_LLAMADAS:
             $mObj = new cSeguimiento_llamadas();
             break;
         case TSYSTEM_LOG:
             $mObj = new cGeneral_log();
             break;
         case TCREDITOS_PRODUCTOS_OTROS_PARAMETROS:
             $mObj = new cCreditos_productos_otros_parametros();
             break;
         case TPERSONAS_ACTIVIDAD_ECONOMICA:
             $mObj = new cSocios_aeconomica();
             break;
         case TUSUARIOS_NOTAS:
             $mObj = new cUsuarios_web_notas();
             break;
         case TAML_PERFIL_RIESGO:
             $mObj = new cAml_riesgo_perfiles();
             break;
         case TCATALOGOS_GRADO_RIESGO:
             $mObj = new cAml_risk_levels();
             $this->mCampoDesc = $mObj->nombre_del_nivel()->get();
             break;
         case TAML_REGISTRO_DE_RIESGOS:
             $mObj = new cAml_risk_register();
             $this->mCampoDesc = $mObj->mensajes_del_sistema()->get();
             break;
         case TAML_REGISTRO_DE_RIESGOS:
             $mObj = new cAml_alerts();
             $this->mCampoDesc = $mObj->mensaje()->get();
             break;
         default:
             $mObj = null;
             break;
     }
     if ($mObj != null) {
         $this->mClavePrincipal = $mObj->getKey();
     }
     return $mObj;
 }