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;
}
function jsaSetPago($Recibo, $cuentabancaria, $monto1, $diferencia, $fecha, $transaccion, $bancodeorigen)
{
    $xF = new cFecha();
    $fecha = $xF->getFechaISO($fecha);
    $xCaja = new cCaja();
    $op = $xCaja->setCobroTransferencia($Recibo, $cuentabancaria, $monto1, $diferencia, $fecha, "", false, false, $transaccion, $bancodeorigen);
    if (MODO_DEBUG == true) {
        setLog($xCaja->getMessages());
    }
}
function jsaSetPago($Recibo, $MontoRecibido, $Moneda, $MontoOriginal)
{
    $xCaja = new cCaja();
    if ($Moneda != AML_CLAVE_MONEDA_LOCAL) {
        $op = $xCaja->setCobroEfectivo($Recibo, $MontoOriginal, 0, "", false, $Moneda, $MontoRecibido);
    } else {
        $op = $xCaja->setCobroEfectivo($Recibo, $MontoRecibido, 0, "", false, $Moneda, $MontoOriginal);
    }
    if ($op == false) {
        return $xCaja->getMessages(OUT_HTML);
    }
}
$cheque = isset($DDATA["idcheque"]) ? $DDATA["idcheque"] : DEFAULT_CHEQUE;
$CuentaBancaria = isset($DDATA["idcuenta"]) ? $DDATA["idcuenta"] : DEFAULT_CUENTA_BANCARIA;
$documento = isset($DDATA["iddoctodescontado"]) ? $DDATA["iddoctodescontado"] : DEFAULT_CREDITO;
$observaciones = isset($DDATA["idobservaciones"]) ? $DDATA["idobservaciones"] : "";
$fecha = isset($DDATA["idfecha-0"]) ? $xF->getFechaISO($DDATA["idfecha-0"]) : fechasys();
$msg = isset($DPDATA[SYS_MSG]) ? $DPDATA[SYS_MSG] : "";
$hora = date("H:i");
//$msg		.= "MONTO $monto .... " . $DDATA["idmonto"] ;
if ($monto > 0) {
    $xCaja = new cCaja();
    /*
    $recibo, $tipoDeExposicion, $MontoRecibido, $MontoOperacion = 0, $MontoCambio = 0, 
    		$banco = 1, $cheque = "", $CuentaBancaria = 0, $DocumentoDescontado = 0, $Observaciones = "", $fecha = false, $hora = false
    */
    $xCaja->addOperacion($recibo, $tipoDeExposicion, $monto, $MontoOperacion, $MontoCambio, $banco, $cheque, $CuentaBancaria, $documento, $observaciones, $fecha, $hora);
    $msg .= $xCaja->getMessages(OUT_TXT);
}
if ($cargar != "" and $origen = "recibo") {
    $xRec = new cReciboDeOperacion(false, true, $cargar);
    $xRec->init();
    $monto = $xRec->getTotal();
    //$documento	= $xRec->getCodigoDeDocumento();
    $recibo = $cargar;
    $fecha = $xRec->getFechaDeRecibo();
    //$operacion	= BANCOS_OPERACION_DEPOSITO;
    $cheque = $xRec->getNumeroDeCheque();
    $observaciones = $xRec->getObservaciones();
    //$xBanc		= new cCuentaBancaria("");
    $xBanc = $xRec->getBancoPorOperacion();
    if ($xBanc != null) {
        $banco = $xBanc->getClaveDeBanco();
$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);
}
if ($xSuc->existeCuenta(DEFAULT_CUENTA_CORRIENTE) == false) {
    $xCta = new cCuentaALaVista(DEFAULT_CUENTA_CORRIENTE);
    //Definir bien los PWD
    $cUsr = new cSystemUser($oficial_s, false);
    $sucess = $cUsr->getCompareData("contrasenna", $pwd);
    $cUsr->init();
    if ($sucess == true) {
        $IOficial = $cUsr->getID();
        if ($fondos <= 0) {
            $msg .= "ERROR\tFondos menores a los establecido {$fondos} \r\n";
        } else {
            $cCj = new cCaja();
            $ropen = $cCj->setOpenBox($IOficial, $fondos);
            if ($ropen == true) {
                $msg .= "OK\tLa Caja esta abierta\r\n";
            } else {
                if (MODO_DEBUG == true) {
                    setLog($cCj->getMessages());
                }
                $msg .= "ERROR\tProblemas al iniciar la Caja\r\n";
            }
            if (MODO_DEBUG == true) {
                $msg .= $cCj->getMessages(OUT_TXT);
            }
        }
    } else {
        if (MODO_DEBUG == true) {
            $msg .= $cUsr->getMessages(OUT_TXT);
        }
        $msg .= "WARN\tERROR AL INICIAR LA SESSION DE CAJA\r\n";
    }
}
$xFRM = new cHForm("frmabrir", "abrir_caja.frm.php?action=1");