/**
  * Agrega una nueva persona  a la base de datos
  * @param string $nombre
  * @param string $apellidopaterno
  * @param string $apellidomaterno
  * @param string $rfc
  * @param string $curp
  * @param number $cajalocal
  * @param string $fecha_de_nacimiento
  * @param string $lugar_de_nacimiento
  * @param string $tipo_de_ingreso
  * @param string $estado_civil
  * @param string $genero
  * @param string $dependencia
  * @param string $regimen_conyugal
  * @param number $personalidad_juridica
  * @param string $grupo_solidario
  * @param string $observaciones
  * @param number $identificado_con
  * @param string $documento_de_identificacion
  * @param string $codigo
  * @param string $sucursal
  * @param string $movil
  * @param string $correo
  * @param number $dependientes
  * @param string $fecha
  * @param string $riesgo
  * @param string $clave_fiel
  * @param string $pais
  * @return boolean
  */
 function add($nombre, $apellidopaterno = "", $apellidomaterno = "", $rfc = "", $curp = "", $cajalocal = DEFAULT_CAJA_LOCAL, $fecha_de_nacimiento = false, $lugar_de_nacimiento = "", $tipo_de_ingreso = FALLBACK_PERSONAS_TIPO_ING, $estado_civil = DEFAULT_ESTADO_CIVIL, $genero = DEFAULT_GENERO, $dependencia = FALLBACK_CLAVE_EMPRESA, $regimen_conyugal = DEFAULT_REGIMEN_CONYUGAL, $personalidad_juridica = PERSONAS_FIGURA_FISICA, $grupo_solidario = DEFAULT_GRUPO, $observaciones = "", $identificado_con = 1, $documento_de_identificacion = "0", $codigo = false, $sucursal = false, $movil = "", $correo = "", $dependientes = 0, $fecha = false, $riesgo = AML_PERSONA_BAJO_RIESGO, $clave_fiel = "", $pais = EACP_CLAVE_DE_PAIS, $regimen_fiscal = DEFAULT_REGIMEN_FISCAL)
 {
     $sucess = false;
     $xF = new cFecha();
     $xLoc = new cLocal();
     //$ql						= new MQL();
     //Reparando
     $fecha_de_entrevista = $xF->getFechaISO($fecha);
     $fecha_de_alta = $xF->getFechaISO($fecha);
     $fecha_de_revision = $xF->getFechaISO($fecha);
     $estatus = FALLBACK_PERSONAS_ESTADO;
     $region = FALLBACK_PERSONAS_REGION;
     $nombre = addslashes($nombre);
     $apellidomaterno = addslashes($apellidomaterno);
     $apellidopaterno = addslashes($apellidopaterno);
     $nombre = utf8_decode(strtoupper($nombre));
     $apellidopaterno = utf8_decode(strtoupper($apellidopaterno));
     $apellidomaterno = utf8_decode(strtoupper($apellidomaterno));
     $dependientes = setNoMenorQueCero($dependientes);
     $eacp = EACP_CLAVE;
     $sucursal = $sucursal == false ? getSucursal() : $sucursal;
     $usuario = getUsuarioActual();
     $codigo = $codigo == false ? $this->mCodigo : $codigo;
     $fecha_de_nacimiento = $xF->getFechaISO($fecha_de_nacimiento);
     $cajalocal = setNoMenorQueCero($cajalocal);
     $cajalocal = $cajalocal == 0 ? $xLoc->getCajaLocal() : $cajalocal;
     if ($codigo == false) {
         $xCL = new cCajaLocal($cajalocal);
         $xCL->init();
         $codigo = $xCL->getUltimoSocioRegistrado(true) + 1;
         $this->mCodigo = $codigo;
     }
     //purgar RFC
     if ($pais == "MX") {
         $xMex = new cReglasDePais();
         $rfc = $xMex->getValidIDFiscal($rfc);
     }
     $rfc = $rfc == "" ? DEFAULT_PERSONAS_RFC_GENERICO : $rfc;
     $sql = "INSERT INTO socios_general(codigo, nombrecompleto, apellidopaterno, apellidomaterno, rfc, curp, \n\t\t\t\t\tfechaentrevista, fechaalta, estatusactual, region, cajalocal,\n\t\t\t\t\tfechanacimiento, lugarnacimiento, tipoingreso,\n\t\t\t\t\testadocivil, genero, eacp, observaciones, idusuario,\n\t\t\t\t\tgrupo_solidario, personalidad_juridica, dependencia,\n\t\t\t\t\tregimen_conyugal, sucursal, fecha_de_revision, tipo_de_identificacion, documento_de_identificacion,\n\t\t\t\t\tcorreo_electronico, telefono_principal, dependientes_economicos, pais_de_origen, nivel_de_riesgo_aml, clave_de_firma_electronica,\n\t\t\tregimen_fiscal)\n    \t\t\tVALUES\n\t\t\t\t\t({$codigo}, '{$nombre}', '{$apellidopaterno}', '{$apellidomaterno}', '{$rfc}', '{$curp}',\n\t\t\t\t\t'{$fecha_de_entrevista}', '{$fecha_de_alta}', {$estatus}, {$region}, {$cajalocal},\n\t\t\t\t\t'{$fecha_de_nacimiento}', '{$lugar_de_nacimiento}', {$tipo_de_ingreso},\n\t\t\t\t\t{$estado_civil}, {$genero}, '{$eacp}', '{$observaciones}', {$usuario},\n\t\t\t\t\t{$grupo_solidario}, {$personalidad_juridica}, {$dependencia},\n\t\t\t\t\t'{$regimen_conyugal}', '{$sucursal}', '{$fecha_de_revision}', {$identificado_con}, '{$documento_de_identificacion}',\n\t\t\t\t\t'{$correo}', '{$movil}', {$dependientes}, '{$pais}', {$riesgo}, '{$clave_fiel}', {$regimen_fiscal})";
     $x = my_query($sql);
     $this->mCodigo = $codigo;
     if ($x["stat"] == false) {
         $this->mMessages .= "ERROR\tSe fallo al agregar la persona {$codigo}\r\n";
         $sucess = false;
     } else {
         $this->mMessages .= "OK\tSe agrego el Socio {$codigo} con Nombre {$nombre} {$apellidopaterno} {$apellidomaterno} \r\n";
         $this->init();
         //Iniciar
         //Agregar en la Tabla de Grupos Solidarios si aplica
         //2012-06-20 si es grupo y es persojna moral
         if ($tipo_de_ingreso == TIPO_INGRESO_GRUPO and $personalidad_juridica == PERSONAS_FIGURA_MORAL) {
             $xGrup = new cGrupo($codigo);
             $this->addToGrupos(DEFAULT_SOCIO, DEFAULT_SOCIO, $sucursal, $fecha);
             //$xGrup->add($nombre, "", DEFAULT_SOCIO, DEFAULT_SOCIO, 10, 1, $codigo, $sucursal, $fecha_de_alta, $codigo);
             //$this->mMessages .= "OK\tSe Agrega Nuevo Grupo con clave $codigo\r\n";
         }
         if (MODULO_AML_ACTIVADO == true) {
             if ($this->mNoAML == false) {
                 //checar lista negra
                 $xAml = new cAMLPersonas($codigo);
                 $xAml->init($codigo);
                 $ln = $xAml->getBuscarEnListaNegra($nombre, $apellidopaterno, $apellidomaterno);
                 if ($ln == true) {
                     $xCM = new cAML();
                     $xCM->sendAlerts($codigo, AML_OFICIAL_DE_CUMPLIMIENTO, 901001, $xAml->getMessages());
                 }
                 if ($pais != EACP_CLAVE_DE_PAIS) {
                     //verificar persona extranjera
                     $xCM = new cAML();
                     $xCM->sendAlerts($codigo, AML_OFICIAL_DE_CUMPLIMIENTO, 801009, "PERSONA EXTRANJERA REGISTRADA");
                 }
                 if ($riesgo == AML_PERSONA_ALTO_RIESGO) {
                     //verificar persona extranjera
                     $xCM = new cAML();
                     $xCM->sendAlerts($codigo, AML_OFICIAL_DE_CUMPLIMIENTO, 901001, "PERSONA ALTAMENTE RIESGOSA REGISTRADA");
                 }
                 //buscar persona SDN
             }
         }
         $sucess = true;
     }
     return $sucess;
 }
$idpais = parametro("idpaisdeorigen", EACP_CLAVE_DE_PAIS);
$idfechanacimiento = parametro("idfechanacimiento", false, MQL_DATE);
$identidadfederativa = parametro("identidadfederativanacimiento", EACP_CLAVE_DE_ENTIDADFED);
$idlugardenacimiento = parametro("idlugardenacimiento");
$idestadocivil = parametro("idestadocivil", DEFAULT_ESTADO_CIVIL, MQL_INT);
$idregimenmatrimonial = parametro("idregimenmatrimonial", DEFAULT_REGIMEN_CONYUGAL);
$idtipoidentificacion = parametro("idtipoidentificacion", DEFAULT_TIPO_IDENTIFICACION);
$idnumerodocumento = parametro("idnumerodocumento");
$idemail = parametro("idemail", "", MQL_RAW);
$idtelefono = parametro("idtelefono", 0, MQL_INT);
$idcurp = parametro("idcurp");
$idrfc = parametro("idrfc");
$idclavefiel = parametro("idclavefiel");
$idrazonnofiel = parametro("idrazonnofiel");
$idobservaciones = parametro("idobservaciones");
$idcajalocal = parametro("idcajalocal", $xLoc->getCajaLocal(), MQL_INT);
$iddependientes = parametro("iddependientes", 0, MQL_INT);
$eacp = EACP_CLAVE;
$razonSocial = parametro("idrazonsocial");
$descuento = parametro("iddescuento", 0, MQL_FLOAT);
$sucursal = parametro("idsucursal", getSucursal(), MQL_RAW);
$xSuc = new cSucursal($sucursal);
$xSuc->init();
$gruposolidario = parametro("idgrupo", DEFAULT_GRUPO, MQL_INT);
$gruposolidario = setNoMenorQueCero($gruposolidario) <= 0 ? DEFAULT_GRUPO : $gruposolidario;
$empresa = parametro("empresa", FALLBACK_CLAVE_EMPRESA, MQL_INT);
$empresa = parametro("iddependencia", $empresa, MQL_INT);
$empresa = parametro("idempresa", $empresa, MQL_INT);
$empresa = parametro("idcodigodeempresas", $empresa, MQL_INT);
$empresa = setNoMenorQueCero($empresa) <= 0 ? FALLBACK_CLAVE_EMPRESA : $empresa;
$calle = parametro("idnombreacceso");
}
$cTbl = new cTabla($xLi->getListadoDeTareas(getUsuarioActual()));
$cTbl->setKeyField("idusuarios_web_notas");
$cTbl->setKeyTable("usuarios_web_notas");
$cTbl->OButton("TR.Checado", "setUpdateEstatus(_REPLACE_ID_)", $cTbl->ODicIcons()->OK);
$alerts .= $cTbl->Show("TR.Tareas");
$xFRM->OButton("TR.Salir", "var xG = new Gen(); xG.salir()", "salir");
$xFRM->addSeccion("idmastareas", "TR.Tareas");
$xFRM->addHElem("<div id=\"tcalendar-task\">{$alerts}</div>");
$xFRM->endSeccion();
$sysinfo = "";
if (MODO_DEBUG == true and SYSTEM_ON_HOSTING == false) {
    $xUL = new cHUl();
    $xUL2 = new cHUl();
    $sysinfo = $xUL->li("Base de Datos:" . MY_DB_IN)->li("Servidor: " . WORK_HOST)->li("Sucursal: " . getSucursal())->li("Version S.A.F.E.: " . SAFE_VERSION)->li("Revision S.A.F.E: " . SAFE_REVISION)->li("Path Temporal: " . PATH_TMP)->li("Path Backups: " . PATH_BACKUPS)->li("Fecha del Sistema: " . date("Y-m-d H:i:s"))->li("Usuario Activo: " . $xUsr->getNombreCompleto())->li("ID de Usuario: " . $xUsr->getID())->li("Nivel de Usuario: " . $xUsr->getNivel())->li("SAFE DB version : " . SAFE_DB_VERSION)->end();
    $sysinfo2 = $xUL2->li("Caja Local : " . $xLoc->getCajaLocal())->li("Localidad : " . $xLoc->DomicilioLocalidad())->li("Clave Localidad : " . $xLoc->DomicilioLocalidadClave())->li("Municipio : " . $xLoc->DomicilioMunicipio())->li("Estado : " . $xLoc->DomicilioEstado())->li("Clave Estado : " . $xLoc->DomicilioEstadoClaveABC())->li("C.P. : " . $xLoc->DomicilioCodigoPostal())->end();
    $xFRM->addSeccion("idmaslogs", "TR.Sistema");
    $xFRM->addDivSolo($sysinfo, $sysinfo2, "tx24", "tx24");
    $xFRM->endSeccion();
}
if (getUsuarioActual(SYS_USER_NIVEL) == USUARIO_TIPO_CAJERO) {
    $xNot = new cHNotif();
    $xCaja = new cCaja();
    if ($xCaja->getEstatus() == TESORERIA_CAJA_CERRADA) {
        $xNot->get("", "idestadocaja", $xNot->ERROR);
    } else {
    }
}
$xFRM->addAviso("", "idavisos");
$xFRM->OHidden("id-KeyEditable", "", "");
//$xFRM->addHTML($menu);