function jsaCerrarCaja($oficial, $pwd, $caja)
{
    $xBtn = new cHButton();
    $xCaja = new cCaja($caja);
    $cUsr = new cSystemUser($oficial, false);
    $sucess = $cUsr->getCompareData("contrasenna", $pwd);
    $msg = "";
    if ($sucess == true) {
        $IOficial = $cUsr->getID();
        $xCaja->init($caja);
        if ($xCaja->setCloseBox($IOficial, 0) == true) {
            $url = $xCaja->getLinkDeCorte();
            $msg = $xBtn->getBasic("TR.Imprimir Corte", "var xG = new Gen(); xG.w({url:'{$url}'});", "imprimir", "printcorte", false);
        } else {
            //TODO: Checar el problema con esto
            if (MODO_DEBUG == true) {
                setLog($xCaja->getMessages(OUT_TXT));
            }
            $msg = "<p class='warn'>CLAVE DE ERROR " . $err . "</p>";
        }
    } else {
        $msg = "<p class='warn'>ERROR</p>";
    }
    return $msg;
}
$idrecibo = DEFAULT_RECIBO;
$xRec = new cReciboDeOperacion(12);
$xRec->setGenerarPoliza();
$xRec->setForceUpdateSaldos();
$idrecibo = $xRec->setNuevoRecibo(DEFAULT_SOCIO, DEFAULT_CREDITO, $fechaop, 1, 12, "CIERRE_DE_SISTEMA_{$fechaop}", "NA", "ninguno", "NA", DEFAULT_GRUPO);
$xRec->setNumeroDeRecibo($idrecibo);
//======================= cancelar todas las cajas a 0
$sqlCa = $xLi->getListadoDeCajasConUsuario(TESORERIA_CAJA_ABIERTA);
$rs = $ql->getDataRecord($sqlCa);
foreach ($rs as $rw) {
    $xCaja = new cCaja();
    $xCaja->init($rw["codigo"]);
    if ($xCaja->setActualizaFondosCobrados() > TOLERANCIA_SALDOS) {
        $messages .= "ERROR\t Caja No cerrada por tener fondos pendientes \r\n";
    } else {
        $xCaja->setCloseBox(getUsuarioActual(), 0);
    }
    $messages .= $xCaja->getMessages(OUT_TXT);
}
//Verificar lo Valores por defecto
if ($xSuc->existeSocio(DEFAULT_SOCIO) == false) {
    $cajaLocalR = $xSuc->getCajaLocalResidente();
    $xSoc = new cSocio(DEFAULT_SOCIO);
    $xSoc->add("", "PUBLICO_GENERAL", "", "POR_REGISTRAR", "POR_REGISTRAR", $cajaLocalR, false, "DESCONOCIDO", 99, 99, 99, 99, 99, 1, DEFAULT_GRUPO, "", 1, "0", DEFAULT_SOCIO, getSucursal());
    $messages .= $xSoc->getMessages(OUT_TXT);
}
if ($xSuc->existeCredito(DEFAULT_CREDITO) == false) {
    $xCred = new cCredito(DEFAULT_CREDITO, DEFAULT_SOCIO);
    $xCred->add(DEFAULT_TIPO_CONVENIO, DEFAULT_SOCIO, DEFAULT_CUENTA_CORRIENTE, 0, CREDITO_TIPO_PERIOCIDAD_FINAL_DE_PLAZO, 1, 1, CREDITO_DEFAULT_DESTINO, DEFAULT_CREDITO, DEFAULT_GRUPO, "CREDITO POR DEFECTO");
    $messages .= $xCred->getMessages(OUT_TXT);
}