$idrecibo = $xRec->setNuevoRecibo(DEFAULT_SOCIO, DEFAULT_CREDITO, $fechaop, 1, 12, "CIERRE_DE_COLOCACION_{$fechaop}", DEFAULT_CHEQUE, DEFAULT_TIPO_PAGO, DEFAULT_RECIBO_FISCAL, DEFAULT_GRUPO);
$xRec->setNumeroDeRecibo($idrecibo);
$messages .= "=======================================================================================\r\n";
$messages .= "=========================\t\t" . EACP_NAME . " \r\n";
$messages .= "=========================\t\t" . getSucursal() . " \r\n";
$messages .= "=======================================================================================\r\n";
$messages .= "=========================\t\tINICIANDO EL CIERRE DE COLOCACION ====================\r\n";
$messages .= "=========================\t\tRECIBO: {$idrecibo}\t\t\t\t   ====================\r\n";
//reconstruir db de pagos
$ql->setRawQuery("CALL `proc_historial_de_pagos` ");
$xCUtils = new cUtileriasParaCreditos();
$messages .= $xCUtils->setEstatusDeCreditos($idrecibo, $fechaop, false, true);
if (date("Y-m-t", strtotime($fechaop)) == date("Y-m-d", strtotime($fechaop))) {
    $messages .= $xCUtils->setGenerarMvtoFinDeMes($xF->getDiaInicial(), $xF->getDiaFinal());
}
if (CREDITO_CIERRE_FORZAR_DEVENGADOS == true) {
    $messages .= $xCUtils->setReestructurarSDPM_Planes(true, false, false, false, $xF->getDiaInicial(), false);
    $messages .= $xCUtils->setReestructurarSDPM(true, false, false, false, false, $xF->getDiaInicial(), false);
    $messages .= $xCUtils->setRegenerarInteresDevengado(false, $xF->get(), $xF->get());
}
$messages .= $xCUtils->setAcumularIntereses();
$xRec->setFinalizarRecibo(true);
$xLog->setWrite($messages);
$xLog->setClose();
if (ENVIAR_MAIL_LOGS == true) {
    $xLog->setSendToMail("TR.Eventos del Cierre del colocacion");
}
if ($parser != false) {
    header("Location: ./cierre_de_captacion.frm.php?s=true&k=" . $key . "&f={$fechaop}");
}
//}
$xLog = new cFileLog($aliasFil);
$idrecibo = DEFAULT_RECIBO;
//$xRec		= new cReciboDeOperacion(12);
//$xRec->setGenerarPoliza();
//$xRec->setForceUpdateSaldos();
//$idrecibo	=  $xRec->setNuevoRecibo(1,1,$fechaop, 1, 12, "CIERRE_DE_SEGUIMIENTO", "NA", "ninguno", "NA", DEFAULT_GRUPO);
//$xRec->setNumeroDeRecibo($idrecibo);
$messages .= "=======================================================================================\r\n";
$messages .= "=========================\t\t" . EACP_NAME . " \r\n";
$messages .= "=========================\t\t" . getSucursal() . " \r\n";
$messages .= "=======================================================================================\r\n";
$messages .= "=========================\t\tINICIANDO EL CIERRE DE CONTABILIDAD ===================\r\n";
$messages .= "=========================\t\tRECIBO: {$idrecibo}\t\t\t\t   ====================\r\n";
if (MODULO_CONTABILIDAD_ACTIVADO == true) {
    $xCUtils = new cUtileriasParaContabilidad();
    $xCUtils->setGenerarPolizasAlCierre($fechaop);
    $messages .= $xCUtils->getMessages();
} else {
    $messages .= "=========================\tNO ACTIVADO\t====================\r\n";
}
//TODO: Si es Anual generar Saldos al Cierre
$xLog->setWrite($messages);
$xLog->setClose();
if (ENVIAR_MAIL_LOGS == true) {
    $xLog->setSendToMail("TR.Eventos del Cierre de Contabilidad");
}
if ($parser != false) {
    //TODO: Agregar cierre de riesgos
    header("Location: ./cierre_de_riesgos.frm.php?s=true&k=" . $key . "&f={$fechaop}");
}
//}
    $NombreOtorgante = $xCR->getNombreOtorgante();
    $DomicilioDevolucion = "";
    //str_replace(",", ";",  EACP_DOMICILIO_CORTO);
    //============================== ELEMENTOS DE CONTROL
    $linea .= "{$TotalSaldosActuales}|{$TotalSaldosVencidos}|{$TotalElementosNombres}|{$TotalElementosDireccion}|{$TotalElementosEmpleo}|{$TotalElementosCuenta}|{$NombreOtorgante}|{$DomicilioDevolucion}";
    //
    if ($xSoc->getEsPersonaFisica() == true) {
        if ($toJson == true) {
            $arrLinea = explode("|", $linea);
            $jsonNew = array();
            foreach ($itemJson as $ix => $item) {
                $jsonNew[$item] = isset($arrLinea[$ix]) ? $arrLinea[$ix] : "ERORR";
            }
            $lineaJson[] = $jsonNew;
        } else {
            echo $linea . "\r\n";
        }
    } else {
        //OMITIDO
        $xLog->add("WARN\t{$idpersona}-{$idcredito}\t{$sucres}\tOmitir por ser Persona Moral " . $xSoc->getNombre() . "\r\n", $xLog->DEVELOPER);
    }
    $icnt++;
}
if (MODO_DEBUG) {
    $xFil = new cFileLog();
    $xFil->setWrite($xLog->getMessages());
    $xFil->setSendToMail($xHP->getTitle(), ADMIN_MAIL);
}
if ($toJson == true) {
    echo _json_encode($lineaJson, JSON_PRETTY_PRINT);
}
    $messages .= "=======================================================================================\r\n";
    $messages .= "=========================\t\t" . EACP_NAME . " \r\n";
    $messages .= "=========================\t\t" . getSucursal() . " \r\n";
    $messages .= "=======================================================================================\r\n";
    $messages .= "=========================\t\tINICIANDO EL CIERRE DE CAPTACION   ====================\r\n";
    $messages .= "=========================\t\tRECIBO: {$idrecibo}\t\t\t\t   ====================\r\n";
    $messages .= "=======================================================================================\r\n";
    $xUCapt = new cUtileriasParaCaptacion();
    $messages .= "=========================\t\tPurgando Dias Minimo de Inversion \t====================\r\n";
    $messages .= $xUCapt->vencer_intereses_de_inversion($idrecibo, $fechaop);
    $messages .= $xUCapt->inversiones_automaticas($idrecibo, $fechaop);
    if ($xF->getDiaFinal() == $xF->get()) {
        $messages .= $xUCapt->setGenerarInteresSobreSDPM($idrecibo, $fechaop);
        if (CAPTACION_IMPUESTOS_A_DEPOSITOS_ACTIVO == true) {
            $messages .= $xUCapt->getGenerarBaseGravadaMensualIDE($fechaop);
            $messages .= $xUCapt->setGenerarIDE_mensual($idrecibo, $fechaop);
        }
    }
    $xRec->setFinalizarRecibo(true);
    $xLog->setWrite($messages);
    $xLog->setClose();
    if (ENVIAR_MAIL_LOGS == true) {
        $xLog->setSendToMail("TR.Eventos del Cierre del Captacion");
    }
}
if ($parser == true) {
    header("Location: ./cierre_de_seguimiento.frm.php?s=true&k=" . $key . "&f={$fechaop}");
}
/*} else{
	setLog("La llave Original $key no correponde a la variable" . MY_KEY);
}*/
} else {
    if ($production == true and $errors == false and $operaciones > 0) {
        $archivo = $xLayout->getClave() . $xT->cSerial(6, $casfin) . $FechaTitulo . "." . $xT->cSerial(3, $supervisor);
        //header("Content-type: text/x-csv");
        header("Content-type: text/plain");
        //header("Content-type: application/csv");
        header("Content-Disposition: attachment; filename={$archivo}");
        echo $rpt;
        if ($definitivo == true) {
            //Guardar
            $sqlUpdate = " UPDATE `aml_risk_register` SET `estado_de_envio` = 1, `fecha_de_envio`= " . $xF->getInt() . "\n\t\t\tWHERE (SELECT `tipo_de_riesgo` FROM `aml_risk_catalog` WHERE `clave_de_control`= `aml_risk_register`.`tipo_de_riesgo`= " . AML_CLAVE_OPERACIONES_INUSUALES . "\n\t\t\tAND (getFechaByInt(`aml_risk_register`.`fecha_de_reporte`) <='{$FechaFinal}')\n\t\t\tAND (`aml_risk_register`.`estado_de_envio` =0)";
            $query->setRawQuery($sqlUpdate);
            //enviar por mail al administrador
            $xLog = new cFileLog($archivo, true);
            $xLog->setWrite($rpt);
            $xLog->setSendToMail($xHP->getTitle(), ARCHIVO_MAIL);
        }
    } else {
        $xRPT = new cReportes();
        $xRPT->setOut(OUT_HTML);
        $xRPT->addContent($xRPT->getHInicial($xHP->getTitle(), $FechaInicial, $FechaFinal));
        $arrTitulos = array();
        foreach ($Estructura as $indice => $propiedades) {
            $xCampo = new cReportes_LayoutTipos($propiedades);
            $arrTitulos[] = $xCampo->getNombre();
        }
        $xHTable->addTitles($arrTitulos);
        if ($msg != "") {
            $xRPT->addFooterBar("<h3>El reporte contiene los siguientes errores</h3>" . $msg);
        }
        $xRPT->addContent($xHTable->get());
        /*$xAml	= new cAML();
        		$xAml->setForceAlerts(true);
        		$xAml->sendAlerts(getUsuarioActual(), $PersonaDeDestino, $TipoDeAlerta);*/
        //envio de informes
        //TODO: Agregar envio de informes
        //checar perfil transaccional mensual
    }
    //verificar operaciones de 6 meses excedidas de maximo permitido
    $sql2 = "SELECT\n\t`operaciones_recibos`.`fecha_operacion`              AS `fecha`,\n\t`operaciones_recibos`.`numero_socio`                 AS `persona`,\n\tCOUNT(`operaciones_recibos`.`idoperaciones_recibos`) AS `operaciones`,\n\tSUM(`operaciones_recibos`.`total_operacion`)         AS `monto`\n\tFROM\n\t`operaciones_recibos` `operaciones_recibos`\n\tWHERE\n\t(`operaciones_recibos`.`fecha_operacion` = '{$fechaop}')\n\tGROUP BY\n\t`operaciones_recibos`.`numero_socio`";
    $rs1 = $mql->getDataRecord($sql2);
    foreach ($rs1 as $rw1) {
        $xAml = new cAMLPersonas($rw1["persona"]);
        $xF = new cFecha();
        $fecha_inicial = $xF->setRestarMeses(6, $fechaop);
        $obj = $xAml->getOAcumuladoDeOperaciones($fecha_inicial, $fechaop);
    }
    //Relaciones Recursivas
    //$xUtils				= new cAMLUtils();
    $xCML = new cAML();
} else {
    $messages .= "=========================\tNO ACTIVADO\t====================\r\n";
}
$xLog->setWrite($messages);
$xLog->setClose();
if (ENVIAR_MAIL_LOGS == true) {
    $xLog->setSendToMail("TR.Eventos del Cierre de Riesgos");
}
if ($parser != false) {
    header("Location: ./cierre_de_sistema.frm.php?s=true&k=" . $key . "&f={$fechaop}");
}
//}
$sqlPeriodosCorrectos = "UPDATE operaciones_mvtos\r\n\t\t\t\t\t\t\t\tSET periodo_mensual = DATE_FORMAT(fecha_afectacion, '%c'),\r\n\t\t\t\t\t\t\t\tperiodo_anual = DATE_FORMAT(fecha_afectacion, '%Y'),\r\n\t\t\t\t\t\t\t\tperiodo_semanal = DATE_FORMAT(fecha_afectacion, '%w')\r\n\t\t\t\t\t\t\t\t";
$x1 = my_query($sqlPeriodosCorrectos);
$messages .= $x1[SYS_INFO];
$xSys = new cSystemTask();
$xDB = new cSAFEData();
//crear backup //
if ($xF->getDiaFinal() == $xF->get() or date("N", $xF->getInt()) == 5) {
    $messages .= "BACKUP\tRespaldo a la fecha " . $xF->getFechaDDMM() . "\r\n";
    $xDB->setCheckDatabase();
    $messages .= $xSys->setBackupDB_WithMail();
}
//cerrar el log
$xLog->setWrite($messages);
$xLog->setClose();
if (ENVIAR_MAIL_LOGS == true) {
    $xLog->setSendToMail("TR.Eventos del Cierre del Sistema");
}
//Stored procedures
$ql->setRawQuery("CALL `proc_listado_de_ingresos` ");
//$ql->setRawQuery("CALL `proc_historial_de_pagos` ");
$ql->setRawQuery("CALL `sp_clonar_actividades` ");
$ql->setRawQuery("CALL `proc_perfil_egresos_por_persona` ");
$ql->setRawQuery("CALL `proc_creditos_letras_pendientes` ");
//
//Limpiar el Cache
//$xSys->setPowerOff();
//apagar el sistema
$xCache = new cCache();
$xCache->clean();
if ($parser != false) {
    $log = $aliasFil;
    $xLog = new cFileLog($aliasFil);
    $idrecibo = DEFAULT_RECIBO;
    $messages .= "=======================================================================================\r\n";
    $messages .= "=========================\t\t" . EACP_NAME . " \r\n";
    $messages .= "=========================\t\t" . getSucursal() . " \r\n";
    $messages .= "=======================================================================================\r\n";
    $messages .= "=========================\t\tINICIANDO EL CIERRE DE SEGUIMIENTO ====================\r\n";
    $messages .= "=========================\t\tRECIBO: {$idrecibo}\t\t\t\t   ====================\r\n";
    $messages .= "=========================\t\tFECHA: {$fechaop}\t\t\t\t\t   ====================\r\n";
    $messages .= "=======================================================================================\r\n";
    //Avisos
    $dia_siguiente = sumardias($fechaop, 1);
    $xAv = new cAlertasDelSistema($dia_siguiente);
    $messages .= $xAv->setGenerarAlCierre($dia_siguiente);
    $messages .= vencer_notificaciones();
    $messages .= vencer_llamadas();
    $messages .= vencer_compromisos();
    $xLlam = new cLlamada();
    $xLlam->setCancelarLlamadasAnteriores($fechaop);
    $messages .= setLlamadasDiariasCreditosNo360($fechaop, $idrecibo);
    $messages .= setLlamadasDiariasPorMora($fechaop, $idrecibo);
    $xLog->setWrite($messages);
    $xLog->setClose();
    if (ENVIAR_MAIL_LOGS == true) {
        $xLog->setSendToMail("TR.Eventos del Cierre del Seguimiento");
    }
}
if ($parser != false) {
    header("Location: ./cierre_de_contabilidad.frm.php?s=true&k=" . $key . "&f={$fechaop}");
}
//}