function getSimilaresPorNombre($nombre = "", $apellido1 = "", $apellido2 = "", $soloBusqueda = false) { if ($nombre == "") { $xSoc = $this->getOPersona(); // new cSocio($this->mClaveDePersona); $nombre = $xSoc->getNombre(); $apellido1 = $xSoc->getApellidoPaterno(); $apellido2 = $xSoc->getApellidoMaterno(); } $nombre = strtoupper($nombre); $apellido1 = strtoupper($apellido1); $PersonaDeOrigen = $this->getCodigoDePersona(); $xPO = $this->getOPersona(); $NombreDeOrigen = $xPO->getNombreCompleto(); $snom = substr($nombre, 0, 3); $sapp1 = substr($apellido1, 0, 3); $apellido2 = strtoupper($apellido2); $sapp2 = substr($apellido2, 0, 3); $sql = "SELECT * FROM socios_general WHERE (`socios_general`.`nombrecompleto` LIKE '%{$snom}%') "; if ($apellido1 != "") { $sql = " AND (`socios_general`.`apellidopaterno` LIKE '%{$sapp1}%') "; } if ($apellido2 != "") { $sql .= " AND (`socios_general`.`apellidomaterno` LIKE '%{$sapp2}%') "; } $this->mMessages .= "WARN\tBuscando similitudes para {$nombre} {$apellido1} {$apellido2} \r\n"; $xPer = new cSocios_general(); $xMql = new MQL(); $data = $xMql->getDataRecord($sql); foreach ($data as $rows) { $xPer->setData($rows); $PersonaCoincide = $xPer->codigo()->v(); $PersonaDeDestino = AML_OFICIAL_DE_CUMPLIMIENTO; $TipoDeAlerta = 901002; $minimo = 90; $parecido = 0; $mNombre = strtoupper($xPer->nombrecompleto()->v()); $mApp1 = strtoupper($xPer->apellidopaterno()->v()); $mApp2 = strtoupper($xPer->apellidomaterno()->v()); $divisor = 1; $parecido_a2 = 0; $parecido_a1 = 0; similar_text($mNombre, $nombre, $parecido_n); similar_text($mApp1, $apellido1, $parecido_a1); if ($apellido1 != "") { similar_text($mApp1, $apellido1, $parecido_a1); $divisor = 2; $minimo = 80; } if ($apellido2 != "") { similar_text($mApp2, $apellido2, $parecido_a2); $divisor = 3; $minimo = 70; } $parecido = ($parecido_n + $parecido_a1 + $parecido_a2) / $divisor; if ($parecido > 51) { if ($parecido >= $minimo) { $xAML = new cAML(); $xSocP = new cSocio($PersonaCoincide); $xSocP->init(); $origenN = $xSocP->getNombreCompleto(); $mensaje = "{$NombreDeOrigen} .- Concidencia({$mNombre}|{$mApp1}|{$mApp2}) del {$parecido} con la persona {$origenN} "; if ($xSocP->getEsPersonaSDN() == true) { //aviso inminente $xAML->setForceRegistroRiesgo(); $xAML->setForceAlerts(); $xAML->sendAlerts($PersonaDeOrigen, $PersonaDeDestino, 901002, $mensaje); } elseif ($xSocP->getEsPersonaPoliticamenteExpuesta() == true) { //enviar a oficial de cumplimiento $xAML->setForceAlerts(); $xAML->sendAlerts($PersonaDeOrigen, $PersonaDeDestino, 901010, $mensaje); //registro pep } else { //enviar a oficial de cumplimiento $xAML->setForceAlerts(); $xAML->sendAlerts($PersonaDeOrigen, $PersonaDeDestino, 901010, $mensaje); //registro pep } $this->mMessages .= $xSocP->getMessages(); $this->mMessages .= $xAML->getMessages(); } else { $this->mMessages .= "WARN\tEl parecido con {$mNombre} {$mApp1} {$mApp2} es {$parecido} %\r\n"; } } } }
/** * Efectua operaciones de finalizacion del recibo * @param boolean $UpdateSaldo Marca si Actualiza el Saldo del Credito */ function setFinalizarRecibo($UpdateSaldo = false, $tesoreria_cargada = false) { //generar Poliza a demanda $finalizado = true; //tranferencia.egresos cheque if (MODULO_CAJA_ACTIVADO == false) { $tesoreria_cargada = true; /* Forzar AML si Tesoreria esta Desactivado */ } /** * Modificacion de la condicion de socio por afectar al recibo en SI? */ if ($UpdateSaldo == true) { if ($this->mSumaDeRecibo == 0 or $this->mForceUpdateSaldos == true or !isset($this->mSumaDeRecibo) or $this->mSumaDeRecibo == false or $this->mSumaDeRecibo == '') { $sqlSUM = "SELECT\n\t\t\t\t\t\t\t\tSUM(`operaciones_mvtos`.`afectacion_real` * `operaciones_mvtos`.`valor_afectacion`) \tAS 'monto',\n\t\t\t\t\t\t\t\tCOUNT(`operaciones_mvtos`.`idoperaciones_mvtos`)\t\t\t\t\t\t\t\t\t\tAS 'numero',\n\t\t\t\t\t\t\t\t`operaciones_mvtos`.`recibo_afectado`,\n\t\t\t\t\t\t\t\t`operaciones_mvtos`.`socio_afectado`\n\t\t\t\t\t\t\tFROM\n\t\t\t\t\t\t\t\t`operaciones_mvtos` `operaciones_mvtos`\n\t\t\t\t\t\t\tWHERE\n\t\t\t\t\t\t\t\t(`operaciones_mvtos`.`recibo_afectado` =" . $this->mCodigoDeRecibo . ")\n\n\t\t\t\t\t\t\tGROUP BY\n\t\t\t\t\t\t\t\t`operaciones_mvtos`.`recibo_afectado` "; $TDRec = obten_filas($sqlSUM); $this->mSumaDeRecibo = $TDRec["monto"]; $this->mNumeroDeMvtos = $TDRec["numero"]; $this->mMessages .= "SUCESSACT\tMonto Actualizado a " . $this->mSumaDeRecibo . " y # Operaciones " . $this->mNumeroDeMvtos . "\r\n"; } if (!isset($this->mSumaDeRecibo)) { $this->mSumaDeRecibo = 0; } $sql = "UPDATE operaciones_recibos SET total_operacion=" . $this->mSumaDeRecibo . "\n \t\t\t\tWHERE\tidoperaciones_recibos= " . $this->mCodigoDeRecibo . "\t"; $xRs = my_query($sql); } if ($this->mSetGenerarPoliza == true) { //PolizaPorRecibo($this->mCodigoDeRecibo, GENERAR_POLIZAS_AL_CIERRE); } $this->mTotalRecibo = $this->mSumaDeRecibo; //-- AML if (MODULO_AML_ACTIVADO == true and $this->isPagable() == true and $tesoreria_cargada == true) { $xAml = new cAMLPersonas($this->mSocio); $xAml->init(); $xAml->setForceAlerts(); $xAmlO = new cAMLOperaciones(); $this->init(); if ($xAml->getEsPersonaVigilada() == true) { $tipo_de_pago_aml = $this->mTipoDePago; if (setNoMenorQueCero($this->mTipoOrigenAML) > 0) { $xRisK = new cPersonas_perfil_transaccional_tipos(); $xRisK->query()->initByID($this->mTipoOrigenAML); $tipo_de_pago_aml = strtolower($xRisK->tipo_de_exhibicion()->v(OUT_TXT)); $this->mMessages .= "WARN\tCambiar el perfil de pago de " . $this->mTipoDePago . " a {$tipo_de_pago_aml} \r\n"; } $res = $xAmlO->analizarOperacion($this->mSocio, 0, $this->mMoneda, $tipo_de_pago_aml, $this->getFechaDeRecibo(), $this->getCodigoDeRecibo(), $this->mTipoOrigenAML); if ($res == false) { $this->mMessages .= "OK\tAML Normal \r\n"; if (MODO_DEBUG == true) { $this->mMessages .= $xAmlO->getMessages(OUT_TXT); } } else { //REPORTAR $xAv = new cAML(); if ($xAmlO->getTipoDeReporte() == AML_REPORTE_INMEDIATO) { $xAv->setForceRegistroRiesgo(); $this->mMessages .= "WARN\tAML de Aviso Inmediato\r\n"; } $xAv->sendAlerts($this->mSocio, AML_OFICIAL_DE_CUMPLIMIENTO, $xAmlO->getTipoDeAlerta(), $xAmlO->getMessageAlert(), $this->mCodigoDeRecibo, $this->mFechaDeOperacion); } $this->mMessages .= $xAmlO->getMessages(OUT_TXT); //validar perfil transaccional $xAml->setVerificarPerfilTransaccional(); } //Validar si es person riesgosa $xSoc = $xAml->getOPersona(); if ($xSoc->getEsPersonaSDN() == true) { //REPORTAR operaciones con alto riesgo $idriesgo = AML_ID_OPERACIONES_PERSONAS_ALTO_RIESGO; //operaciones con criminales $xRiesgo = new cAml_risk_catalog(); $xRiesgo->setData($xRiesgo->query()->initByID($idriesgo)); $xAv = new cAML(); $xAv->setForceRegistroRiesgo(); $xAv->sendAlerts($this->mSocio, AML_OFICIAL_DE_CUMPLIMIENTO, $idriesgo, "ERROR\tOperaciones con persona ALTAMENTE RIESGOSA Recibo " . $this->mCodigoDeRecibo, $this->mCodigoDeRecibo, $this->getFechaDeRecibo()); $this->mMessages .= $xAv->getMessages(OUT_TXT); } if ($xSoc->getEsPersonaPoliticamenteExpuesta() == true) { //REPORTAR operaciones con PEPs $idriesgo = AML_ID_OPERACIONES_PERSONAS_PEP; //operaciones con criminales $xRiesgo = new cAml_risk_catalog(); $xRiesgo->setData($xRiesgo->query()->initByID($idriesgo)); $xAv = new cAML(); $xAv->sendAlerts($this->mSocio, AML_OFICIAL_DE_CUMPLIMIENTO, $idriesgo, "ERROR\tOperaciones con PEPS Recibo " . $this->mCodigoDeRecibo, $this->mCodigoDeRecibo, $this->getFechaDeRecibo()); $this->mMessages .= $xAv->getMessages(OUT_TXT); } if ($xSoc->getEsPersonaRiesgosa() == true) { //REPORTAR operaciones con PEPs $idriesgo = 101005; //operaciones con criminales $xRiesgo = new cAml_risk_catalog(); $xRiesgo->setData($xRiesgo->query()->initByID($idriesgo)); $xAv = new cAML(); $xAv->sendAlerts($this->mSocio, AML_OFICIAL_DE_CUMPLIMIENTO, $idriesgo, "ERROR\tOperaciones con Personas de Alto Riesgo.- Recibo " . $this->mCodigoDeRecibo, $this->mCodigoDeRecibo, $this->getFechaDeRecibo()); $this->mMessages .= $xAv->getMessages(OUT_TXT); } //Operaciones de una exhibicion 500 y USD if ($this->mMoneda != AML_CLAVE_MONEDA_LOCAL) { $idriesgo = AML_CLAVE_RIESGO_OPS_INDIVIDUALES; $xRiesgo = new cAml_risk_catalog(); $xMon = new cMonedas($this->mMoneda); $xRiesgo->setData($xRiesgo->query()->initByID($idriesgo)); $unidades = $xMon->getEnDolares($this->getUnidadesOriginales()); if ($unidades >= $xRiesgo->unidades_ponderadas()->v()) { $xAv = new cAML(); $xAv->setForceRegistroRiesgo(); $xAv->sendAlerts($this->mSocio, AML_OFICIAL_DE_CUMPLIMIENTO, $idriesgo, "Operaciones({$unidades}) excedidas de 500 USD en el recibo " . $this->mCodigoDeRecibo . " Moneda " . $this->mMoneda, $this->mCodigoDeRecibo, $this->getFechaDeRecibo()); $this->mMessages .= $xAv->getMessages(OUT_TXT); } else { $this->mMessages .= "OK\tNo hay modificacion para la Moneda " . $this->mMoneda . " por {$unidades} \r\n"; } } // Agregar Relevantes por 10000USD if ($this->isEfectivo() == true) { $idriesgo = AML_CLAVE_RIESGO_OPS_RELEVANTES; $xRiesgo = new cAml_risk_catalog(); $xMon = new cMonedas($this->mMoneda); $mmonto = $this->mMoneda == AML_CLAVE_MONEDA_LOCAL ? $this->getTotal() : $this->getUnidadesOriginales(); $xRiesgo->setData($xRiesgo->query()->initByID($idriesgo)); $unidades = $xMon->getEnDolares($mmonto); if ($unidades >= $xRiesgo->unidades_ponderadas()->v()) { $xAv = new cAML(); $xAv->setForceRegistroRiesgo(); $xAv->sendAlerts($this->mSocio, AML_OFICIAL_DE_CUMPLIMIENTO, $idriesgo, "Operaciones Relevantes por {$unidades} USD en el recibo " . $this->mCodigoDeRecibo . " Moneda " . $this->mMoneda, $this->mCodigoDeRecibo, $this->getFechaDeRecibo()); $this->mMessages .= $xAv->getMessages(OUT_TXT); } else { $this->mMessages .= "OK\tNo hay modificacion para la Moneda " . $this->mMoneda . " por {$unidades} \r\n"; } } if ($xAml->getEsPersonaVigilada() == true) { //Operaciones Internas Preocupantes por Usuario $xAml->setAnalizarTransaccionalidadPorNucleo($this->mCodigoDeRecibo, $this->mFechaDeOperacion, $this->mUsuario, true); } $this->mMessages .= $xAml->getMessages(OUT_TXT); } return $finalizado; }