function jsaSetPago($Recibo, $cheque1, $Cuenta1, $monto1, $cheque2, $Cuenta2, $monto2)
{
    $sucess = true;
    $tab = new TinyAjaxBehavior();
    $xCtaBanc = new cCuentaBancaria($Cuenta1);
    $xCaja = new cCaja();
    //$recibo, $MontoRecibido, $banco, $cheque
    if (floatval($monto1) > 0) {
        $s1 = $xCtaBanc->getVerificarCheque($cheque1, $monto1);
        $sucess = $s1;
        if ($s1 == false) {
            $tab->add(TabSetValue::getBehavior("iNumeroCheque1", "0"));
        }
    }
    if (floatval($monto2) > 0) {
        $xCtaBanc->set($Cuenta2);
        $s2 = $xCtaBanc->getVerificarCheque($cheque2, $monto2);
        $sucess = $s2;
        if ($s1 == false) {
            $tab->add(TabSetValue::getBehavior("iNumeroCheque2", "0"));
        }
    }
    if ($sucess == true) {
        if (floatval($monto1) > 0) {
            $xCaja->setCobroChequeInterno($Recibo, $monto1, $Cuenta1, $cheque1);
        }
        if (floatval($monto2) > 0) {
            $xCaja->setCobroChequeInterno($Recibo, $monto2, $Cuenta2, $cheque2);
        }
    }
    if ($sucess == false) {
        $tab->add(TabSetValue::getBehavior("avisos", $xCtaBanc->getMessages("txt")));
    }
    return $tab->getString();
}
function jsaSetPago($Recibo, $cheque1, $banco1, $monto1, $diferencia)
{
    $xCaja = new cCaja();
    //$recibo, $MontoRecibido, $banco, $cheque
    $op = $xCaja->setCobroChequeForaneo($Recibo, $monto1, $banco1, $cheque1, $diferencia);
    //saveError(DEFAULT_CODIGO_DE_ERROR, false,  $xCaja->getMessages("txt") );
}
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);
    }
}
$recibo = parametro("idrecibo");
$reciboIDE = 0;
//
$actload = "";
$Fecha = parametro("idfecha-0", false);
$Fecha = $Fecha == false ? fechasys() : $xF->getFechaISO($Fecha);
$idsocio = parametro("idsocio", false, MQL_INT);
//$xT->cInt($_POST["idsocio"]);
$detalles = parametro("idobservaciones", "");
$monto = parametro("idmonto", 0, MQL_FLOAT);
$cheque = parametro("cheque", DEFAULT_CHEQUE);
$comopago = parametro("ctipo_pago", DEFAULT_TIPO_PAGO, MQL_RAW);
$folio_fiscal = parametro("foliofiscal", DEFAULT_RECIBO_FISCAL);
$msg = parametro(SYS_MSG);
$action = parametro("action", SYS_NINGUNO);
$xCaja = new cCaja();
if ($xCaja->getEstatus() == TESORERIA_CAJA_CERRADA) {
    header("location:../404.php?i=200");
}
if (isset($iddocto)) {
    $actload = " onload='jsImprimirRecibo();' ";
}
$jxc = new TinyAjax();
function jsaGetIDE($socio, $monto, $tipo_de_pago)
{
    $xSoc = new cSocio($socio);
    $xSoc->init();
    $x = $xSoc->getIDExPagarByPeriodo(false, $monto, $tipo_de_pago);
    $tab = new TinyAjaxBehavior();
    $tab->add(TabSetValue::getBehavior("idide", $x));
    return $tab->getString();
 function getOCaja()
 {
     $xC = new cCaja();
     if ($this->mOCaja == null) {
         $xC->initByRecibo($this->getCodigoDeRecibo());
         $this->mOCaja = $xC;
     }
     return $this->mOCaja;
 }
$cSoc = new cSocio($numero_de_socio);
$DSoc = $cSoc->getDatosInArray();
$numero_caja_local = $DSoc["cajalocal"];
$cCL = new cCajaLocal($numero_caja_local);
$caja_local = $cCL->getNombre();
$variable_nombre_del_socio = $idsocio == DEFAULT_SOCIO ? $DRec["cadena_distributiva"] : $cSoc->getNombreCompleto();
$tipo_de_pago = $xRec->getTipoDePago();
//$variable_nombre_del_cajero
//
$tipoderecibo = $DRec["tipo_docto"];
$docto = $xRec->getCodigoDeDocumento();
$origen = $xRec->getOrigen();
$variable_tipo_de_recibo = $xRec->getOTipoRecibo()->getNombre();
$totaloperacion = $xRec->getTotal();
//<------------- Verificar Si existe El Pago ----------------
$xCaja = new cCaja();
$TesMontoPagado = $xCaja->getReciboEnCorte($recibo);
$eventOnLoad = "";
$scripts = "";
//TODO: Resolver ajuste y permisos de ajuste
if (MODULO_CAJA_ACTIVADO == true and $xRec->isPagable() == true) {
    if ($TesMontoPagado < $totaloperacion) {
        $arrTPag = $xFRM->getAFormsDeTipoPago();
        $frm = $arrTPag[$tipo_de_pago];
        //si la caja de tesoreria esta abierta, proceder, si no cerrar
        if ($xCaja->getEstatus() == TESORERIA_CAJA_CERRADA) {
            $scripts = "<script>\n\t\t\t\talert('El Recibo {$recibo} no ha sido SALDADO({$TesMontoPagado}) en su totalidad({$totaloperacion}),\\n No se puede efectuar operaciones en Caja Cerrada\\nNecesita Autorizar una Sesion de Caja');\n\t\t\t\tdocument.location = '../404.php?i=7001';\n\t\t\t</script>";
        } else {
            $scripts = "<script>\n\t\t\tTINY.box.show({iframe:'../frmtesoreria/{$frm}?r={$recibo}',boxid:'frameless',width:400,height:540,fixed:false,maskid:'bluemask',maskopacity:40,closejs:function(){ jsRevalidarRecibo() }})\n\t\t\t</script>";
        }
    } else {
$tipoDeExposicion = isset($DDATA["ctipo_pago"]) ? $DDATA["ctipo_pago"] : DEFAULT_TIPO_PAGO;
$monto = isset($DDATA["idmonto"]) ? $xT->cFloat($DDATA["idmonto"]) : 0;
$MontoOperacion = isset($DDATA["idmontooperado"]) ? $DDATA["idmontooperado"] : $monto;
$MontoCambio = isset($DDATA["idmontocambio"]) ? $DDATA["idmontocambio"] : 0;
$banco = isset($DDATA["idbanco"]) ? $DDATA["idbanco"] : 99;
//FALLBACK_BANCO
$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;
$ql = new MQL();
$xLi = new cSQLListas();
$xSuc->init();
$aliasFil = getSucursal() . "-eventos-al-cierre-de-sistema-del-dia-{$fechaop}";
$xLog = new cFileLog($aliasFil);
$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);
}
function jsaGetResumenDeCaja($caja)
{
    $xCaja = new cCaja();
    $xCaja->init($caja);
    return $xCaja->getResumenDeCaja();
}
//<=====	FIN_H
//=====================================================================================================
$xHP = new cHPage("TR.Corte de caja", HP_REPORT);
$xF = new cFecha();
$xSQL = new cSQLListas();
//=====================================================================================================
$fecha_inicial = isset($_GET["on"]) ? $_GET["on"] : fechasys();
$fecha_final = isset($_GET["off"]) ? $_GET["off"] : fechasys();
$cajero = isset($_GET["f3"]) ? $_GET["f3"] : getUsuarioActual();
// Numero de Cajero
$cajero = parametro("cajero", $cajero, MQL_RAW);
$out = parametro("out", OUT_HTML, MQL_RAW);
$mails = getEmails($_REQUEST);
$ByCajero = "";
$ByAll = "";
$xCaja = new cCaja();
$xCaja->initByFechaUsuario($fecha_final, $cajero);
if (isset($_REQUEST["fechaMX"])) {
    $fecha_inicial = $xF->getFechaISO($_REQUEST["fechaMX"]);
    $fecha_final = $xF->getFechaISO($_REQUEST["fechaMX"]);
}
if (count($mails) <= 0) {
    if (MODULO_CAJA_ACTIVADO == true) {
        if ($xF->getInt($fecha_final) > $xF->getInt(fechasys())) {
            if ($xCaja->getEstatus() == TESORERIA_CAJA_ABIERTA) {
                $xHP->goToPageError(70102);
            }
        }
    }
}
$xUsr = new cSystemUser($cajero);
 //		$oficial	= trim(substr($_POST["cOficialDeApertura"], 0, 15));
 //		$pwd		= trim( md5( substr($_POST["cOficialClave"],0,20) ) );
 $oficial_s = parametro("oficial", "", MQL_RAW);
 $pwd = parametro("password", "", MQL_RAW);
 $fondos = parametro("fondodecaja", 0, MQL_FLOAT);
 $pwd = strtolower($pwd);
 //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) {
 function check5Cierres($fecha_final, $alCerrar = false)
 {
     $xF = new cFecha();
     $fecha_inicio_sistema = FECHA_INICIO_OPERACIONES_SISTEMA;
     $dias_a_revisar = REVISAR_DIAS_DE_CIERRE;
     $fecha_inicial = $xF->setRestarDias($dias_a_revisar, $fecha_final);
     $res = array();
     $ok = false;
     $xSuc = new cSucursal();
     for ($i = 0; $i <= $dias_a_revisar; $i++) {
         $fecha = $xF->setSumarDias($i, $fecha_inicial);
         if ($xF->getInt($fecha_inicio_sistema) >= $xF->getInt($fecha)) {
             $this->mMessages .= "WARN\tFecha {$fecha} OMITIDO por ser menor al inicio de operaciones\r\n";
             $res[$fecha] = true;
             $ok = true;
         } elseif ($xF->getInt($fecha) == $xF->getInt(fechasys())) {
             $this->mMessages .= "WARN\tFecha {$fecha} OMITIDO por ser Fecha Actual\r\n";
             $res[$fecha] = true;
             $ok = true;
             if ($alCerrar == true) {
                 if ((int) date("H") < (int) $xSuc->getHorarioDeCierre()) {
                     //considerar si es dia festivo
                     $this->mMessages .= "ERROR\tNO ES EL HORARIO MINIMO DE CIERRE PARA LA FECHA {$fecha} SON LAS " . date("H") . " HRS. DE " . $xSuc->getHorarioDeCierre() . ", MINIMO DE CIERRE\r";
                     $res[$fecha] = false;
                     $ok = false;
                 }
             }
         } else {
             //$this->mMessages	.= "WARN\tFecha $fecha OMITIDO por ser menor al inicio de operaciones\r\n";
             if ($this->checkCierre($fecha) == false) {
                 $res[$fecha] = false;
                 $ok = false;
                 $this->mMessages .= "ERROR\tFecha {$fecha} No existe en el sistema\r\n";
                 if ($xF->getInt($fecha) == $xF->getInt($fecha_final)) {
                     $this->mMessages .= "ERROR\tPROCESAR LA FECHA {$fecha_final}|{$fecha} LAS FECHAS SON LAS MISMAS A " . fechasys() . "\r\n";
                     $res[$fecha] = true;
                     $ok = true;
                 }
             } else {
                 $res[$fecha] = true;
                 $ok = true;
                 $this->mMessages .= "OK\tFecha {$fecha} existente\r\n";
             }
         }
         $xCaja = new cCaja();
         if ($alCerrar == true) {
             if ($xCaja->getCajasAbiertas($fecha) > 0) {
                 $ok = false;
                 $res[$fecha] = false;
                 $this->mMessages .= "OK\tFecha {$fecha} tiene cortes pendientes\r\n";
             }
         }
     }
     unset($res[fechasys()]);
     foreach ($res as $dateme => $rs) {
         if ($dateme != SYS_ESTADO) {
             if ($rs == false) {
                 $this->mMessages .= "ERROR\tFecha {$dateme} tiene cortes pendientes.-2\r\n";
                 $ok = false;
             }
         }
     }
     if (MODO_DEBUG == true) {
         setLog($this->mMessages);
     }
     $res[SYS_ESTADO] = $ok;
     return $res;
 }
function jsaSetGuardarDeposito($tipo_pago, $banco, $monto, $cobranza, $fecha, $observaciones, $empresa, $periodo)
{
    //'idtipo_pago', 'idcodigodecuenta', 'idmontodeposito', 'idsumacbza', 'idfecha-0', 'idobservaciones', 'idcodigodeempresas', 'idperiodo'
    $diferencia = $monto - $cobranza;
    $xEmp = new cEmpresas($empresa);
    $xEmp->init();
    $persona = $xEmp->getClaveDePersona();
    $xF = new cFecha();
    $fecha = $xF->getFechaISO($fecha);
    $xCaja = new cCaja();
    $documento = DEFAULT_CREDITO;
    $nombreemp = $xEmp->getNombreCorto();
    $xPer = $xEmp->getOPeriodo(false, false, $periodo);
    $periodo2 = $xPer->periodo_marcado()->v();
    $periocidad = $xPer->periocidad()->v();
    $observaciones = "{$empresa}-{$nombreemp}-{$periocidad}-{$periodo2}-ID.{$periodo}-" . $observaciones;
    if ($tipo_pago == TESORERIA_COBRO_TRANSFERENCIA) {
        $op = $xCaja->setCobroTransferencia(DEFAULT_RECIBO, $banco, $monto, $diferencia, $fecha, $observaciones, $persona, $documento);
    } elseif ($tipo_pago == TESORERIA_COBRO_EFECTIVO) {
        $xCaja->setCobroEfectivo(DEFAULT_RECIBO, $monto, $cobranza, $observaciones);
    }
    //Agregar operacion de la empresa
    $xEmp->addOperacion($monto, $periodo2, $periocidad, $fecha, -1, false, $observaciones);
}