function jsaGetLocalidades($estado, $municipio, $pais, $cp)
{
    $xSel = new cHSelect();
    $text = new cHText();
    $txt = "";
    $mun = false;
    if (setNoMenorQueCero($cp) > 0) {
        if ($pais == EACP_CLAVE_DE_PAIS) {
            $xCol = new cDomiciliosColonias();
            $xCol->existe($cp);
            $mun = $xCol->getClaveDeMunicipio();
            //$xCol->getNombreMunicipio();
        }
    }
    if (PERSONAS_VIVIENDA_MANUAL == true) {
        $text->setDivClass("");
        $txt = $text->getDeNombreDeLocalidad("idnombrelocalidad", "", "TR.Localidad");
    } else {
        $xS = $xSel->getListaDeLocalidades("", $estado, $pais);
        $txt = $xS->get(false);
        if ($xS->getCountRows() <= 0) {
            //Corregir si no hay registros
            $text->setDivClass("");
            $txt = $text->getDeNombreDeLocalidad("idnombrelocalidad", "", "TR.Localidad");
        }
    }
    return $txt;
}
 $primerApellido = $r["apellidopaterno"];
 $segundoApellido = $r["apellidomaterno"];
 $primerApellido = strlen($primerApellido) == 0 ? $segundoApellido : $primerApellido;
 $segundoApellido = strlen($primerApellido) == 0 ? "" : $segundoApellido;
 $nombres = explode(" ", $r["nombrecompleto"]);
 $primerNombre = $nombres[0];
 $segundoNombre = isset($nombres[1]) ? $nombres[1] : "";
 $tipoPersona = "0";
 $fechaInscripcion = date("Y/m/d", strtotime($r["fechaalta"]));
 $genero = $arrEquivGenero[$r["genero"]];
 //datos del Domicilio
 $DDom = $xSoc->getDatosDomicilio();
 $calle = $xT->getCSV($DDom["calle"]);
 $numero = $xT->getCSV($DDom["numero_exterior"]);
 $colonia = $xT->getCSV($DDom["colonia"]);
 $xCol = new cDomiciliosColonias();
 $codCol = $xCol->getClavePorCodigoPostal($DDom["codigo_postal"]);
 $xCol->set($codCol);
 $xCol->init();
 $DCol = $xCol->getDatosInArray();
 $cp = $xT->cSerial(5, $DDom["codigo_postal"]);
 $claveMun = $DCol["codigo_de_municipio"];
 $claveEnt = $DCol["codigo_de_estado"];
 $localidad = $DDom["localidad"];
 $xLoc = new cDomicilioLocalidad("");
 $claveLoc = $xLoc->setBuscar($localidad, $claveEnt, $claveMun);
 $xLoc->set($claveLoc);
 $DLoc = $xLoc->getDatosInArray();
 $claveLocInegi = $DLoc["clave_de_localidad"];
 $DAports = $xSoc->getDatosAportaciones();
 $montoParteSoc = $xSoc->getAportacionesSociales();
    function setReceptor($nombre, $rfc, $calle, $numeroExt, $numeroInt, $codigoPostal, $colonia = "", $municipio = "", $estado = "", $pais = "")
    {
        if (setNoMenorQueCero($codigoPostal) > 0 and $colonia == "") {
            $xCol = new cDomiciliosColonias();
            $xLoc = new cLocal();
            $idcol = $xCol->getClavePorCodigoPostal($codigoPostal);
            $colonia = $xCol->getNombre();
            $estado = $xCol->getNombreEstado();
            $municipio = $xCol->getNombreMunicipio();
            $pais = $pais == "" ? $xLoc->getNombreDePais() : $pais;
        }
        $sInterior = $numeroInt == "" ? "" : ' noInterior="' . strtoupper($numeroInt) . '" ';
        $this->mReceptor .= '<cfdi:Receptor 
		nombre="' . strtoupper($nombre) . '" 
		rfc="' . strtoupper($rfc) . '">
		<cfdi:Domicilio calle="' . strtoupper($calle) . '" 
		noExterior="' . strtoupper($numeroExt) . '" 
		' . $sInterior . '
		colonia="' . strtoupper($colonia) . '" 
		municipio="' . strtoupper($municipio) . '" 
		estado="' . strtoupper($estado) . '" pais="' . strtoupper($pais) . '" 
		codigoPostal="' . $codigoPostal . '" /></cfdi:Receptor>';
    }
     $TipoDomicilio = "";
     $TipoAsentamiento = "";
     $linea .= "{$Direccion}|{$ColoniaPoblacion}|{$DelegacionMunicipio}|{$Ciudad}|{$Estado}|{$CP}|{$FechaResidencia}|{$NumeroTelefono}|{$TipoDomicilio}|{$TipoAsentamiento}|";
     $xLog->add("ERROR\t{$idpersona}-{$idcredito}\t{$sucres}\tSin Domicilio {$Direccion}|{$ColoniaPoblacion}|{$DelegacionMunicipio}|{$Ciudad}|{$Estado}|{$CP}|{$FechaResidencia}|{$NumeroTelefono}|{$TipoDomicilio}|{$TipoAsentamiento}|\r\n", $xLog->DEVELOPER);
 } else {
     $calle = $ODom->getCalle();
     $numExterior = $ODom->getNumeroExterior() == "" ? "SN" : $ODom->getNumeroExterior();
     $numeroInterior = $ODom->getNumeroInterior();
     $Direccion = $xCR->getText(trim($xCR->getPurgueDomicilio("{$calle} {$numeroInterior} {$numExterior}")), false, 79);
     $ColoniaPoblacion = $xCR->getText($ODom->getColonia());
     $DelegacionMunicipio = $xCR->getText($ODom->getMunicipio());
     $Ciudad = $xCR->getText($ODom->getCiudad());
     $CP = $xCR->getText($ODom->getCodigoPostal(), 5);
     $Estado = $xCR->getText($ODom->getClaveDeEstadoEnSIC());
     //setLog("RRRRRR .. " . $ODom->getClaveDeEstadoEnSIC() . " ----  " . $xLoc->DomicilioEstadoClaveSIC());
     $xColonia = new cDomiciliosColonias();
     if ($Direccion == "" or trim($Direccion) == "SN") {
         $Direccion = "DOMICILIO NO PROPORCIONADO";
         $DelegacionMunicipio = $xCR->getText($xLoc->DomicilioMunicipio());
         $CP = $xCR->getText($xLoc->DomicilioCodigoPostal());
         $ColoniaPoblacion = "";
         $Estado = $xCR->getText($xLoc->DomicilioEstadoClaveSIC());
         $xSuc = new cSucursal($sucres);
         if ($xSuc->init() == true) {
             $DelegacionMunicipio = $xCR->getText($xSuc->getMunicipio());
             $Estado = $xCR->getText($xSuc->getClaveDeEstadoSIC());
             $CP = $xCR->getText($xSuc->getCodigoPostal(), 5);
         }
         $xLog->add("ERROR\t{$idpersona}-{$idcredito}\t{$sucres}\tEn datos de Domicilio {$Direccion}|{$ColoniaPoblacion}|{$DelegacionMunicipio}|{$Ciudad}|{$Estado}|{$CP}|{$FechaResidencia}|{$NumeroTelefono}|{$TipoDomicilio}|{$TipoAsentamiento}|\r\n", $xLog->DEVELOPER);
     }
     $CP = $xCR->getText($CP, 5);
 }
 if (setNoMenorQueCero($cpostal) > 0) {
     $xCol = new cDomiciliosColonias();
     if ($xCol->existe($cpostal) == true) {
         $pais = EACP_CLAVE_DE_PAIS;
         $nombre_estado = $xCol->getNombreEstado();
         $nombremunicipio = $xCol->getNombreMunicipio();
         $nombrelocalidad = $xCol->getNombreLocalidad();
         if (trim($colonia) == "") {
             $colonia = $xCol->getNombre();
         }
     }
 }
 if ($colonia == false || $colonia == "") {
     if (setNoMenorQueCero($idcolonia) > 0) {
         $xCol = new cDomiciliosColonias($idcolonia);
         $xCol->init();
         $colonia = $xCol->getNombre();
         $nombre_estado = $xCol->getNombreEstado();
         $nombremunicipio = $xCol->getNombreMunicipio();
         $nombrelocalidad = $xCol->getNombreLocalidad();
     } else {
         $colonia = trim($colonia) == "" ? $xLoc->DomicilioCodigoPostal() : $colonia;
     }
 }
 $addDom = $xSoc->addVivienda($calle, $nexterior, $cpostal, $ninterior, $referencia, $tresidencial, $tmovil, $principal, $regimen, $tdomicilio, $tiempo, $colonia, $tipo_acceso, "", $idlocalidad, $pais, $nombre_pais, $nombre_estado, $nombremunicipio, $nombrelocalidad);
 if ($addDom == false) {
     $msg .= "ERROR\tError al agregar el domicilio \r\n";
 } else {
     $iddomicilio = $xSoc->getIDDeVivienda();
 }
 function init()
 {
     $ql = new MQL();
     if ($this->mPersona > 0) {
         $ByTipo = "";
         // ($this->mTipo == false ) ? "" : "AND (`socios_aeconomica`.`tipo_aeconomica` = $tipo)";//no aplica tipo
         $ByID = setNoMenorQueCero($this->mIDCargado) > 1 ? " AND `idsocios_aeconomica` = " . $this->mIDCargado : "";
         $xDB = new cSAFETabla(TPERSONAS_ACTIVIDAD_ECONOMICA);
         $sql = $xDB->getQueryInicial() . "\tWHERE (`socios_aeconomica`.`socio_aeconomica` =" . $this->mPersona . ") {$ByTipo} {$ByID}\tORDER BY `fecha_alta` DESC, `socios_aeconomica`.`monto_percibido_ae` DESC LIMIT 0,1";
         $this->mDatosInArray = $ql->getDataRow($sql);
         $this->mInit = isset($this->mDatosInArray["idsocios_aeconomica"]) ? true : false;
         $this->mTipo = FALLBACK_ACTIVIDAD_ECONOMICA;
         if ($this->mInit == true) {
             $this->mOB = new cSocios_aeconomica();
             $this->mOB->query()->initByID($this->mDatosInArray["idsocios_aeconomica"]);
             $this->mIDCargado = $this->mOB->idsocios_aeconomica()->v();
             $this->mClaveEmpresa = $this->mOB->dependencia_ae()->v();
             $this->mDomicilio = $this->mOB->domicilio_ae()->v();
             $this->mCodigoPostal = setNoMenorQueCero($this->mOB->ae_codigo_postal()->v());
             $this->mIDDomicilio = setNoMenorQueCero($this->mOB->domicilio_vinculado()->v());
             $this->mNombreColonia = $this->mOB->localidad_ae()->v();
             //Iniciar Empresa
             $this->mOEmp = new cEmpresas($this->mClaveEmpresa);
             $this->mOEmp->init();
             $this->mEmpresaClavePersona = $this->mOEmp->getClaveDePersona();
             $this->mOB->setData($this->mDatosInArray);
             $this->mPuesto = $this->mOB->puesto()->v(OUT_TXT);
             $this->mTipo = $this->mOB->tipo_aeconomica()->v();
             //$this->mAMLNivelRiesgo		= $this->mOB->
             //Iniciar por codigo postal
             $xViv = new cPersonasVivienda($this->mPersona, PERSONAS_TIPO_DOM_LABORAL);
             if ($this->mIDDomicilio > 1) {
                 $xViv->setID($this->mDomicilio);
             }
             $xViv->init();
             if ($xViv->isInit() == true) {
                 $this->mDomicilio = $xViv->getDireccionBasica();
                 $this->mClaveDeEstado = $xViv->getClaveDeEstado();
                 $this->mClaveDeMunicipio = $xViv->getClaveDeMunicipio();
                 $this->mClaveDeLocalidad = $xViv->getClaveDeLocalidad();
                 $this->mCodigoPostal = $xViv->getCodigoPostal();
                 $this->mNombreDeLocalidad = $xViv->getLocalidad();
                 $this->mNombreDeMunicipio = $xViv->getMunicipio();
                 $this->mNombreDeEstado = $xViv->getEstado();
                 $this->mCalle = $xViv->getCalle();
                 $this->mNumeroExt = $xViv->getNumeroExterior();
                 $this->mNombreColonia = $xViv->getColonia();
                 $this->mClaveDeEstadoSIC = $xViv->getClaveDeEstadoEnSIC();
                 $this->mClaveDePais = $xViv->getClaveDePais();
                 $this->mViviendaInit = true;
             }
             if ($this->mIDDomicilio <= 1 and $this->mCodigoPostal > 0) {
                 $xCols = new cDomiciliosColonias();
                 $xCols->getClavePorCodigoPostal($this->mCodigoPostal);
                 $this->mClaveDeEstado = $xCols->getClaveDeEstado();
                 $this->mClaveDeMunicipio = $xCols->getClaveDeMunicipio();
                 $this->mClaveDeLocalidad = $xCols->getClaveDeEstado();
                 $this->mNombreDeLocalidad = $xCols->getNombreLocalidad();
                 $this->mNombreDeMunicipio = $xCols->getNombreMunicipio();
                 $this->mNombreDeEstado = $xCols->getNombreEstado();
                 $this->mNombreColonia = $xCols->getNombre();
                 $this->mClaveDeEstadoSIC = $xCols->getClaveEstadoEnSIC();
                 $this->mClaveDePais = $xCols->getClaveDePais();
                 $this->mViviendaInit = true;
             }
         }
     }
     if ($this->mOB == null) {
         $this->mOB = new cSocios_aeconomica();
         $this->mClaveEmpresa = FALLBACK_CLAVE_EMPRESA;
         $this->mEmpresaClavePersona = FALLBACK_CLAVE_DE_PERSONA;
     }
     return $this->mDatosInArray;
 }
    system('locale -a');
    $str = ob_get_contents();
    ob_end_clean();
    return split("\\n", trim($str));
}
$locale = "es_MX.iso-8859-1";
setlocale(LC_ALL, $locale);
$locales = list_system_locales();
//var_dump($locales);
//Crear formularios
$xFRM = new cHForm("frmTest", "./test.php");
$xHTxt = new cHText("");
//====================================================================================================
$xFRM->addHElem("<p class='aviso'>Pruebas de la Clase Colonia</p>");
//$txt 	= $xHTxt->getDeMoneda("id", "Moneda de Prueba",  100);
$xColonia = new cDomiciliosColonias();
$clave = $xColonia->getClavePorNombre("Ampliacion josefa ortiz de dom");
$xColonia->init();
$lng = new cLang();
$xFRM->addHElem($lng->getT("TR.La Clave Buscada es ") . $clave . "<br />");
$xFRM->addHElem($lng->getT("TR.El Codigo Postal Buscado es ") . $xColonia->getCodigoPostal() . "<br />");
$xFRM->addHElem($lng->getT("TR.EL Nombre de la Colonia es ") . $xColonia->getNombre() . "<br />");
$xFRM->addHElem($lng->getT("TR.EL Nombre del Municipio es ") . $xColonia->getNombreMunicipio() . "<br />");
$xFRM->addHElem($lng->getT("TR.EL Nombre del Estado es ") . $xColonia->getNombreEstado() . "<br />");
$xFRM->addHElem($lng->getT("TR.EL Nombre de la Localidaad es ") . $xColonia->getNombreLocalidad() . "<br />");
//$xFRM->addHElem( $txt );
$xFRM->addHElem("<p class='aviso'>Probando con el C.P. 24026</p>");
$clave = $xColonia->getClavePorCodigoPostal(24026);
//$xColonia->init();
$xFRM->addHElem("<p>La OTRA Clave Buscada es " . $clave . "</p>");
$xFRM->addHElem("<p>EL Nombre de la Colonia es " . $xColonia->getNombre() . "</p>");
 function setCorregirDomicilios($correcion = false)
 {
     //obtener codigo postal
     $msg = "";
     //verificar si existe persona
     $ql = new MQL();
     $rs = $ql->getDataRecord("SELECT * FROM `socios_vivienda`");
     $xViv = new cSocios_vivienda();
     $xT = new cTipos();
     $xT->setForceMayus();
     $xT->setToUTF8();
     $xT->setForceClean();
     foreach ($rs as $rows) {
         $xViv->setData($rows);
         //codigo_postal
         $codigo_postal = $xViv->codigo_postal()->v();
         $id = $xViv->idsocios_vivienda()->v();
         $xCol = new cDomiciliosColonias();
         $idunico = $xCol->getClavePorCodigoPostal($codigo_postal);
         //corregir codigo postal
         //optener CP por sucursal
         if ($idunico <= 0) {
             //asignar codigo postal
             //iniciar por sucursal
             $xSuc = new cSucursal($xViv->sucursal()->v());
             if ($xSuc->init() == true) {
                 $codigo_postal = $xSuc->getCodigoPostal();
                 $idunico = $xCol->getClavePorCodigoPostal($codigo_postal);
                 $xViv->codigo_postal($codigo_postal);
             }
         }
         //verificar principal
         if (trim($xViv->principal()->v()) == "") {
             $xViv->principal(TIPO_DOMICILIO_PRINCIPAL);
         }
         //corregir pais
         if (trim($xViv->nombre_de_pais()->v()) == "") {
             $xViv->nombre_de_pais(strtoupper(EACP_DOMICILIO_PAIS));
         } else {
             $xViv->nombre_de_pais(strtoupper($xViv->nombre_de_pais()->v()));
         }
         if ($idunico > 0) {
             //cargar colonia
             $estado = $xViv->estado()->v();
             //if($xViv->clave_de_pais()->v() != $xCol->get)
             if ($estado != $xCol->getNombreEstado()) {
                 //$msg		.= "ERROR\tEl Estado " . $xViv->estado()->v() .  " es diferente a " . $xT->cChar( $xCol->getNombreEstado()) . "\r\n";
                 //$estado		= $xT->cChar( $xCol->getNombreEstado());
             }
             if ($correcion == true) {
                 //$msg		.= "OK\tCorrecion autorizada\r\n";
                 $xViv->estado($xT->cChar($xCol->getNombreEstado()));
                 $xViv->municipio($xT->cChar($xCol->getNombreMunicipio()));
                 $xViv->localidad($xT->cChar($xCol->getNombreLocalidad()));
                 $xViv->clave_de_localidad($xCol->getClaveDeLocalidad());
                 if (PERSONAS_PERMITIR_EXTRANJEROS == false) {
                     $xViv->clave_de_pais(EACP_CLAVE_DE_PAIS);
                 }
                 $qup = $xViv->query()->update();
                 $rx = $qup->save($id);
                 if ($rx == true) {
                     $msg .= "OK\tVivienda con CP {$codigo_postal} e ID {$id} actualizado a la Colonia {$idunico}\r\n";
                 } else {
                     $msg .= "ERROR\tAl actualizar la Vivienda con CP {$codigo_postal} e ID {$id} . Colonia {$idunico}\r\n";
                 }
                 if (MODO_DEBUG == true) {
                     $msg .= $qup->getMessages();
                 }
             }
         } else {
             $msg .= "WARN\tCodigo omitido por ser {$codigo_postal}\r\n";
         }
     }
     return $msg;
 }