function setRetiro($monto, $cheque = DEFAULT_CHEQUE, $tipo_de_pago = "cheque", $recibo_fiscal = DEFAULT_RECIBO_FISCAL, $observaciones = "", $grupo = DEFAULT_GRUPO, $fecha = false, $recibo = false)
 {
     $iduser = getUsuarioActual();
     /**
      * verifica el maximo Retirable
      * Si forzar es VERDADERO, el Maximo retirable es igual al SALDO
      */
     if ($this->mForceOperations == true) {
         $maximo_ret = $this->mSaldoActual;
         $this->mMessages .= "WARN\tLa Operacion sera FORZADA \r\n";
     } else {
         $maximo_ret = $this->getMaximoRetirable($fecha);
     }
     if ($monto > $maximo_ret) {
         $this->mMessages .= "ERROR\tEl Monto a Retirar({$monto}) es Mayor al Retirable({$maximo_ret}) \r\n";
         $monto = 0;
         $recibo = false;
     }
     if ($monto > 0) {
         if (in_array($this->mEstatusActual, $this->mEstatusNoOperativos) == true or $monto > $this->mSaldoActual) {
             $this->mMessages .= "ERROR\tLa Cuenta no esta permitida para recibir Operacion, tiene estatus " . $this->mEstatusActual . " ";
             $this->mMessages .= "o su saldo(" . $this->mSaldoActual . ") es Mayor al Monto a  retirar({$monto})  \r\n";
             $this->mSucess = false;
         } else {
             if (setNoMenorQueCero($this->mPeriodoCuenta) == 0) {
                 $this->mPeriodoCuenta = 1;
             }
             if (setNoMenorQueCero($this->mSocioTitular) <= DEFAULT_SOCIO) {
                 $this->init();
             }
             if ($fecha == false) {
                 if (isset($this->mFechaOperacion) and $this->mFechaOperacion != false) {
                     $fecha = $this->mFechaOperacion;
                 } else {
                     $fecha = fechasys();
                 }
             }
             $fecha = setFechaValida($fecha);
             $this->mFechaOperacion = $fecha;
             $socio = $this->mSocioTitular;
             $CRecibo = new cReciboDeOperacion(8, true);
             //Set a Mvto Contable
             //Agregar recibo si no hay
             if (setNoMenorQueCero($recibo) == 0) {
                 $recibo = $CRecibo->setNuevoRecibo($socio, $this->mNumeroCuenta, $this->mFechaOperacion, $this->mPeriodoCuenta, 8, $observaciones, $cheque, $tipo_de_pago, $recibo_fiscal, $grupo);
                 if (setNoMenorQueCero($recibo) == 0) {
                     $this->mMessages .= "OK\tSe Agrego Exitosamente el Recibo [{$recibo}] de la Cuenta " . $this->mNumeroCuenta . " \r\n";
                     $this->mReciboDeOperacion = $recibo;
                     $this->mSucess = true;
                 } else {
                     $this->mMessages .= "ERROR\tSe Fallo al Agregar el Recibo [{$recibo}] de la Cuenta " . $this->mNumeroCuenta . " \r\n";
                     $this->mSucess = false;
                 }
             }
             $this->mReciboDeOperacion = $recibo;
             if (setNoMenorQueCero($recibo) > 0) {
                 //Agregar el Movimiento
                 $CRecibo->setNumeroDeRecibo($recibo);
                 $CRecibo->setNuevoMvto($fecha, $monto, $this->mOperacionRetiro, $this->mPeriodoCuenta, $observaciones, -1, TM_CARGO, $socio, $this->mNumeroCuenta);
                 $CRecibo->setFinalizarRecibo(true);
                 $CRecibo->setFinalizarTesoreria();
                 $this->mNuevoSaldo = $this->mSaldoAnterior - $monto;
                 $this->mSucess = true;
                 ///Actualizar el recibo
                 $this->mReciboDeOperacion = $recibo;
                 //Actualizar la Cuenta
                 $this->setUpdateSaldo();
             } else {
                 $this->mMessages .= "ERROR\tNo Existe Recibo con el cual trabajar({$recibo}) \r\n";
             }
             $this->mMessages .= $CRecibo->getMessages();
             $this->mORec = $CRecibo;
         }
     }
     return $recibo;
 }
 function getOPeriodo($periocidad = false, $periodo = false, $clave = false)
 {
     $periocidad = $periocidad == false ? $this->getPeriocidadPref() : $periocidad;
     $periodo = $periodo == false ? $this->getPeriodo() : $periodo;
     $xPer = new cPeriodoDeEmpresa();
     $empresa = $this->getClaveDeEmpresa();
     if ($clave == false) {
         $sql = "SELECT\t* FROM `empresas_operaciones` WHERE\n\t\t\t(`empresas_operaciones`.`clave_de_empresa` ={$empresa}) AND\n\t\t\t(`empresas_operaciones`.`periodo_marcado` ={$periodo}) AND\n\t\t\t(`empresas_operaciones`.`tipo_de_operacion` =1) AND\n\t\t\t(`empresas_operaciones`.`periocidad` = {$periocidad}) LIMIT 0,1 ";
         $dat = obten_filas($sql);
     } else {
         $dat = $xPer->query()->initByID($clave);
     }
     $xPer->setData($dat);
     $xPer->fecha_de_cobro(setFechaValida($xPer->fecha_de_cobro()->v()));
     $xPer->fecha_inicial(setFechaValida($xPer->fecha_inicial()->v()));
     $xPer->fecha_final(setFechaValida($xPer->fecha_final()->v()));
     return $xPer;
 }
 /**
  * Purga Recibos Duplicados
  */
 case 852:
     $msg .= date("H:i:s") . "\tEliminando Recibos Duplicados\r\n";
     $msg .= setPurgeFromDuplicatedRecibos();
     setFoliosAlMaximo();
     break;
     /**
      * Actualiza el Estatus de los Creditos sin distinguir sucursal
      */
 /**
  * Actualiza el Estatus de los Creditos sin distinguir sucursal
  */
 case 853:
     $fecha_inicial = setFechaValida($id);
     $xRec = new cReciboDeOperacion();
     $recibo = $xRec->setNuevoRecibo(DEFAULT_SOCIO, DEFAULT_CREDITO, $fecha_inicial, 1, RECIBOS_TIPO_ESTADISTICO, "AJUSTE_DE_ESTATUS_DE_CREDITOS");
     //$recibo 		= setNuevoRecibo(1, 1, fechasys(), 0, 10, "AJUSTE_DE_ESTATUS_DE_CREDITOS", "NA", "ninguno", "NA", 99, 0);
     $cUtils = new cUtileriasParaCreditos();
     $msg .= $cUtils->setEstatusDeCreditos($recibo, $fecha_inicial, false, true);
     break;
     //Valida Recibos
 //Valida Recibos
 case 856:
     $afectar = strtolower($id);
     $sqlMvtos = " SELECT\n\t\t\t\t\t\t\t`operaciones_mvtos`.`recibo_afectado`            AS `recibo`,\n\t\t\t\t\t\t\tCOUNT(`operaciones_mvtos`.`idoperaciones_mvtos`) AS `operaciones`\n\t\t\t\t\t\tFROM\n\t\t\t\t\t\t\t`operaciones_mvtos` `operaciones_mvtos`\n\t\t\t\t\t\tGROUP BY\n\t\t\t\t\t\t\t`operaciones_mvtos`.`recibo_afectado`";
     $arrCM = array();
     $arrO = array();
     $rsM = mysql_query($sqlMvtos, cnnGeneral());
     while ($rw = mysql_fetch_array($rsM)) {
 function __construct($parametros, $valor = "", $delimiter = "")
 {
     $this->mValor = $valor;
     $this->mDelimit = $delimiter;
     $xT = new cTipos();
     //$this->mMessages		.= "OK\tValor a $valor\r\n";
     $this->mNombre = isset($parametros[$this->NOMBRE]) ? $parametros[$this->NOMBRE] : "?";
     if (isset($parametros[$this->TIPO])) {
         $this->mTipo = strtolower($parametros[$this->TIPO]);
         //setLog($this->mTipo . " --- $valor");
         switch ($this->mTipo) {
             case MQL_DATE:
                 $this->mValor = setFechaValida($this->mValor);
                 break;
             case MQL_BOOL:
                 $this->mValor = $xT->cBool($this->mValor);
                 break;
             case MQL_STRING:
                 $this->mValor = $this->cleanText($this->mValor);
                 $this->mValor = setCadenaVal($this->mValor);
                 break;
             case MQL_FLOAT:
                 $this->mValor = setNoMenorQueCero($this->mValor);
                 break;
             case MQL_INT:
                 $this->mValor = setNoMenorQueCero($this->mValor);
                 $this->mValor = (int) $this->mValor;
                 break;
         }
     }
     //$this->mMessages		.= "OK\tValor queda en (" . $this->mValor . ") de ($valor)\r\n";
     $this->mObligatorio = isset($parametros[$this->OBLIGATORIO]) ? $xT->cBool($parametros[$this->OBLIGATORIO]) : false;
     $this->mFormato = isset($parametros[$this->FORMATO]) ? $parametros[$this->FORMATO] : "";
     $this->mLargo = isset($parametros[$this->LONGITUD]) ? setNoMenorQueCero($parametros[$this->LONGITUD]) : 0;
     //if($this->mObligatorio == true){
     if (isset($parametros[$this->ACEPTADOS])) {
         if ($this->aceptado($this->mValor, $parametros[$this->ACEPTADOS]) === false) {
             $this->mValor = null;
             $this->mMessages .= "ERROR\tError en la columna " . $this->mNombre . "  : Valor no aceptado " . $this->mValor . ", los valores deben ser (" . $parametros[$this->ACEPTADOS] . ")\r\n";
             $this->ERRORES++;
         }
     }
     //}
     if (is_array($parametros)) {
         $this->mDatos = $parametros;
     }
 }
function jsaSetNominaCerrada($empresa, $periocidad, $variacion, $periodo, $monto, $observaciones, $fechaInicial, $fechaFinal, $fechaCobro)
{
    $xF = new cFecha();
    $xEmp = new cEmpresas($empresa);
    $xEmp->init();
    //$periodo	= $periodo + $variacion;
    $xEmp->setPeriodo($periodo);
    $xEmp->setClearPeriodo(true);
    $fechaInicial = setFechaValida($fechaInicial);
    $fechaFinal = setFechaValida($fechaFinal);
    $fechaCobro = setFechaValida($fechaCobro);
    $idx = $xEmp->addOperacion($monto, $periodo, $periocidad, fechasys(), SYS_UNO, false, $observaciones, $fechaInicial, $fechaFinal, $fechaCobro);
    return $idx;
}
function parametro($nombre, $fallback = null, $tipo = MQL_STRING, $fuente = false)
{
    $valor = null;
    $xT = new cTipos();
    $fuente = $fuente == false ? $_REQUEST : $fuente;
    //if($fuente == false){
    //if(isset($_REQUEST)){ $fuente		= $_REQUEST; }
    switch ($tipo) {
        case MQL_INT:
            $fallback = $fallback == null ? 0 : $fallback;
            $valor = isset($fuente[$nombre]) ? $xT->cInt($fuente[$nombre]) : $fallback;
            break;
        case MQL_FLOAT:
            $fallback = $fallback == null ? 0 : $fallback;
            $valor = isset($fuente[$nombre]) ? $xT->cFloat($fuente[$nombre]) : $fallback;
            break;
        case MQL_BOOL:
            $fallback = $fallback == null ? false : $fallback;
            $valor = isset($fuente[$nombre]) ? $xT->cBool($fuente[$nombre]) : $fallback;
            //setLog(" $tipo, $fallback $nombre ... " . $fuente[$nombre] . " ----  ") . $xT->cBool( $fuente[$nombre] );
            break;
        case MQL_RAW:
            //$fallback	= ($fallback == null) ? "" : $fallback;
            $valor = isset($fuente[$nombre]) ? $fuente[$nombre] : $fallback;
            break;
        case MQL_DATE:
            $valor = isset($fuente[$nombre]) ? setFechaValida($fuente[$nombre]) : fechasys();
            //setLog(setFechaValida($fuente[$nombre]));
            break;
        default:
            $fallback = $fallback == null ? "" : $fallback;
            $valor = isset($fuente[$nombre]) ? $fuente[$nombre] : $fallback;
            if ($valor == SYS_TODAS) {
            } else {
                $xT = new cTipos();
                $arrRAW = array("action" => true, "out" => true, "c" => true, "s" => "true", "ctipo_pago" => true, "i" => true, "callback" => true);
                $valor = isset($arrRAW[$nombre]) ? $valor : strtoupper($xT->cChar($valor));
            }
            break;
    }
    //}
    return $valor;
}