/**
  * Agrega una operacion a tesoreria
  * @param integer $recibo	Numero de recibo
  * 
  */
 function addOperacion($recibo, $tipoDeExposicion, $MontoRecibido, $MontoOperacion = 0, $MontoCambio = 0, $banco = FALLBACK_CLAVE_DE_BANCO, $cheque = "", $CuentaBancaria = 0, $DocumentoDescontado = 0, $Observaciones = "", $fecha = false, $hora = false, $moneda = false, $monto_original = 0, $persona = false, $documento = false, $transaccion = SYS_NINGUNO)
 {
     $sucess = false;
     $fecha = $fecha == false ? fechasys() : $fecha;
     $arrQ = array("aumento" => 1, "disminucion" => -1, "ninguna" => 0);
     $xF = new cFecha(0, $fecha);
     $xT = new cTipos();
     $fecha = $xF->get();
     $hora = $hora == false ? date("H:i:s") : $hora;
     $CodigoDeCaja = $this->getKey();
     $cajero = $this->mCajero;
     $banco = setNoMenorQueCero($banco) <= 0 ? FALLBACK_CLAVE_DE_BANCO : $banco;
     $this->mMoneda = $this->mMoneda == "" ? AML_CLAVE_MONEDA_LOCAL : $this->mMoneda;
     if ($moneda == false or $moneda == AML_CLAVE_MONEDA_LOCAL) {
         $moneda = $this->mMoneda != AML_CLAVE_MONEDA_LOCAL ? $this->mMoneda : AML_CLAVE_MONEDA_LOCAL;
     }
     //$monto_original	= setNoMenorQueCero($monto_original);
     $monto_original = $monto_original == 0 ? $this->mMontoOrigen : $monto_original;
     $xRec = new cReciboDeOperacion(false, false, $recibo);
     $xRec->init();
     $DRec = $xRec->getDatosInArray();
     $persona = ($persona == false or $persona == "") ? DEFAULT_SOCIO : $persona;
     $documento = $documento == false ? $xRec->getCodigoDeDocumento() : $documento;
     $afectaCaja = $arrQ[$DRec["afectacion_en_flujo_efvo"]];
     $MontoOperacion = $MontoOperacion == 0 ? $DRec["total_operacion"] : $MontoOperacion;
     $MontoCambio = $MontoCambio == 0 ? $MontoRecibido - $MontoOperacion : $MontoCambio;
     //Obtener Banco
     $pais = EACP_CLAVE_DE_PAIS;
     $eacp = EACP_CLAVE;
     $sucursal = getSucursal();
     if ($banco == FALLBACK_CLAVE_DE_BANCO and $CuentaBancaria > 0) {
         $xCta = new cCuentaBancaria($CuentaBancaria);
         $xCta->init();
         $banco = $xCta->getClaveDeBanco();
         $pais = $xCta->getPaisDeOrigen();
     }
     $xBanco = new cBancos_entidades();
     $xBanco->setData($xBanco->query()->initByID($banco));
     $pais = $xBanco->pais_de_origen()->v();
     //Actualizar Moneda por pais
     if ($banco != FALLBACK_CLAVE_DE_BANCO) {
         $moneda2 = mifila("SELECT clave_de_moneda FROM `tesoreria_monedas` WHERE `pais_de_origen` ='{$pais}' LIMIT 0,1 ", "clave_de_moneda");
         if ($moneda2 === 0) {
         } else {
             $moneda = $moneda2;
         }
     }
     $xTes = new cTesoreria_cajas_movimientos();
     $xTes->banco($banco);
     $xTes->codigo_de_caja($CodigoDeCaja);
     $xTes->cuenta_bancaria($CuentaBancaria);
     $xTes->documento($documento);
     $xTes->documento_descontado($DocumentoDescontado);
     $xTes->eacp(EACP_CLAVE);
     $xTes->fecha($fecha);
     $xTes->hora($hora);
     $xTes->idtesoreria_cajas_movimientos($xTes->query()->getLastID());
     $xTes->idusuario($cajero);
     $xTes->moneda_de_operacion($moneda);
     if ($moneda != AML_CLAVE_MONEDA_LOCAL) {
     }
     //EVALUAR MONEDA
     $xTes->monto_del_movimiento($MontoOperacion);
     $xTes->monto_en_cambio($MontoCambio);
     $xTes->monto_recibido($MontoRecibido);
     $xTes->numero_de_cheque($cheque);
     $xTes->observaciones($Observaciones);
     $xTes->recibo($recibo);
     $xTes->sucursal($sucursal);
     $xTes->tipo_de_exposicion($tipoDeExposicion);
     $xTes->tipo_de_movimiento($afectaCaja);
     $xTes->unidades_de_moneda(setNoMenorQueCero($monto_original));
     $xTes->persona($persona);
     $sucess = $xT->getEvalNotNull(array($cajero, $CodigoDeCaja));
     if ($sucess == true) {
         $q = $xTes->query()->insert();
         $id = $q->save();
         $sucess = $id == false ? false : true;
         if ($sucess == true) {
             $this->mMessages .= "OK\tRegistro Agregado exitosamente, relacionado con el Recibo {$recibo}, Operacion {$id} ({$moneda}|{$monto_original}|{$cheque}|{$tipoDeExposicion}|{$transaccion})\r\n";
             //Agregar recibo
             $xRec->setDatosDePago($moneda, $monto_original, $cheque, $tipoDeExposicion, $transaccion);
             $this->mMessages .= $xRec->getMessages(OUT_TXT);
         } else {
             if (MODO_DEBUG == true) {
                 $this->mMessages .= $q->getMessages(OUT_TXT);
             }
         }
     } else {
         $this->mMessages .= "ERROR\tSe produjo un error al Agregar la Operacion de Tesoreria({$cajero}, {$CodigoDeCaja})\r\n";
     }
     return $sucess;
 }