function setVerificarPerfilTransaccional($fecha = false, $generar_avisos = false) { $xQL = new cSQLListas(); $mq = new MQL(); $xPerf = new cAMLPersonas_PerfilTransaccional($this->mClaveDePersona); $xF = new cFecha(); $fecha = $fecha == false ? fechasys() : $fecha; $fechaI6M = $xF->setRestarMeses(6, $fecha); //6 Meses $periodoI6M = date("Ym", $xF->getInt($fechaI6M)); //6 Meses $periodo_inicial = date("Ym", $xF->getInt($fecha)); $periodo_final = date("Ym", $xF->getInt($fecha)); $persona = $this->getCodigoDePersona(); $sql = $xQL->getAMLAcumuladoDeEgresos($periodo_inicial, $periodo_final, $persona); $datos = $mq->getDataRecord($sql); //checar datos si no existen en la consulta acumulada if (!isset($datos[SYS_MONTO]) or setNoMenorQueCero($datos[SYS_MONTO]) <= 0) { $sql = $xQL->getAMLAcumuladoDeEgresos_RT($periodo_inicial, $periodo_final, $persona); $datos = $mq->getDataRecord($sql); } $suma_efectivo = 0; $mes_activo = 0; $excedido = false; //setLog($sql); foreach ($datos as $row) { $tipo = strtolower($row[SYS_TIPO]); $moneda = strtoupper($row["moneda"]); $monto = $row[SYS_MONTO]; $numero = $row[SYS_NUMERO]; $mes = $row["periodo"]; $recibo = $row["recibo"]; $xDPerfil = $xPerf->concepto($tipo); $xMonto = new cCantidad($monto); $monto = $xMonto->v(); $pmonto = $xDPerfil->v(); //Monto permitido $montoDiff = $xMonto->diff($pmonto); $pnumero = $xDPerfil->getNumero(); if ($moneda != $xDPerfil->getClaveDeMoneda()) { $this->mMessages .= "ERROR\t{$tipo}|{$moneda}\tNo tiene Perfil para operar con la Moneda {$moneda} \r\n"; $excedido = true; } if ($monto > $pmonto) { $this->mMessages .= "ERROR\t{$tipo}|{$moneda}\tMonto excedido ({$montoDiff}) por de {$pmonto} tuvo operaciones por {$monto}\r\n"; $excedido = true; } else { $this->mMessages .= "OK\t{$tipo}|{$moneda}\tMonto Normal de {$pmonto} hizo operaciones por {$monto}\r\n"; } if ($numero > $pnumero) { $this->mMessages .= "ERROR\t{$tipo}|{$moneda}\tNumero excedido de {$pnumero} tuvo operaciones por {$numero}\r\n"; $excedido = true; } else { $this->mMessages .= "OK\t{$tipo}|{$moneda}\tNumero normal de {$pnumero} hizo operaciones por {$numero}\r\n"; } $mes_activo = $mes; if ($tipo == TESORERIA_COBRO_EFECTIVO) { $suma_efectivo = $monto; } } if (MODO_DEBUG == true) { $this->mMessages .= $xPerf->getMessages(OUT_TXT); } //$this->mMessages .= "OK\t \r\n"; //$efectivo = TESORERIA_COBRO_EFECTIVO . "-" . AML_CLAVE_MONEDA_LOCAL; //efectivo nacional //verificar pagos mayores a 500 USD //verificar pagos if ($excedido == true) { if ($this->mForceAvisos == true or $generar_avisos == true) { $xAml = new cAML(); $xAml->setForceAlerts(); $res = $xAml->sendAlerts($persona, AML_OFICIAL_DE_CUMPLIMIENTO, AML_DEBITOS_MAYORES_AL_PERFIL, $this->mMessages, $recibo, $fecha, false, 0, iDE_RECIBO); if ($res == false) { $this->mMessages .= "ERROR\tError al enviar alertas\r\n"; } $this->mMessages .= $xAml->getMessages(); } else { $this->mMessages .= "WARN\tNo se enviaron alertas\r\n"; } } return $excedido; }