function jsaHeredarDatos($idcuenta)
{
    $tab = new TinyAjaxBehavior();
    $xLog = new cCoreLog();
    $xCta = new cCuentaContable($idcuenta);
    $cuenta = "";
    $nombre = "";
    $superior = "";
    $nombresupe = "";
    $tipo = "";
    $nivel = "";
    $centro = "";
    $superiorf = "";
    $operar = 0;
    $equivale = "";
    if ($xCta->init() == true) {
        $cuenta = $xCta->get();
        $nombre = $xCta->getNombre();
        $superior = $xCta->getInmediatoSuperior();
        $nivel = $xCta->getDigitoAgrupador();
        $centro = $xCta->getCentroDeCosto();
        $tipo = $xCta->getTipoDeCuenta();
        $operar = 1;
        $xLog->add("OK\tModificar la cuenta {$idcuenta} - {$operar} - {$superior}\r\n");
        $equivale = $xCta->getEquivalencia();
    } else {
        $xEsq = new cCuentaContableEsquema($idcuenta);
        $cuenta = $xEsq->CUENTA;
        $superior = $xEsq->CUENTA_SUPERIOR;
        $nivel = $xEsq->NIVEL_ACTUAL;
        $xLog->add("OK\tAgregar Nueva cuenta {$idcuenta} ({$cuenta}) - {$superior}\r\n");
    }
    $xLog->add($xCta->getMessages(), $xLog->DEVELOPER);
    //inicializar superior
    if ($nivel > 1) {
        $xSup = new cCuentaContable($superior);
        if ($xSup->init() == true) {
            $tipo = $tipo == "" ? $xSup->getTipoDeCuenta() : $tipo;
            $centro = $centro == "" ? $xSup->getCentroDeCosto() : $centro;
            $superiorf = $xSup->getCuentaCompleta($superior, true);
            $nombresupe = $xSup->getNombre();
            if ($operar == 0) {
                $equivale = $xSup->getEquivalencia();
            }
        }
        $xLog->add($xSup->getMessages(), $xLog->DEVELOPER);
    }
    $tab->add(TabSetvalue::getBehavior('idcuenta', $cuenta));
    $tab->add(TabSetvalue::getBehavior('idnombrecuenta', $nombre));
    $tab->add(TabSetvalue::getBehavior('idtipodecuentacontable', $tipo));
    $tab->add(TabSetvalue::getBehavior('idcentrodecosto', $centro));
    $tab->add(TabSetvalue::getBehavior('idcuentasuperior', $superiorf));
    $tab->add(TabSetvalue::getBehavior('idnombresuperior', $nombresupe));
    $tab->add(TabSetvalue::getBehavior('idoperacion', $operar));
    $tab->add(TabSetvalue::getBehavior('idequivalencia', $equivale));
    $tab->add(TabSetvalue::getBehavior('idmsg3', $xLog->getMessages()));
    return $tab->getString();
}
 function addMovimiento($TipoDeMovimiento, $cuenta, $monto, $referencia = "", $concepto = "")
 {
     $CWTipoMvto = array("1" => 1, "-1" => "2");
     $xCuenta = new cCuentaContable($cuenta);
     $cuenta = $xCuenta->get();
     //Corrige la Cuenta de Cuadre
     if ($cuenta == CUENTA_DE_CUADRE) {
         $cuenta = "_CUADRE";
     }
     //Tipo M + espacio
     //Cuenta   20
     //Referencia 10
     //TipoMvto 2 espacios 1 Cargo 2 Abono
     //Importe 16 Alineado
     //espacio + 000 + espacio + "            0.00 "
     //concepto 30 + espacio
     $this->mMovimientosDePoliza .= "M " . substr(str_pad($cuenta, 20, " ", STR_PAD_RIGHT), 0, 20);
     $this->mMovimientosDePoliza .= " " . substr(str_pad($referencia, 10, " ", STR_PAD_RIGHT), 0, 10);
     $this->mMovimientosDePoliza .= " " . $CWTipoMvto[$TipoDeMovimiento];
     $this->mMovimientosDePoliza .= " " . substr(str_pad($monto, 16, " ", STR_PAD_LEFT), -16);
     $this->mMovimientosDePoliza .= " 000 " . "            0.00 " . substr(str_pad($referencia, 30, " ", STR_PAD_RIGHT), 0, 30) . "\r\n";
 }
 /**
  * Agrega un Movimiento a la Poliza Contable
  * @param integer $cuenta
  * @param float $cargo
  * @param float $abono
  * @param string $referencia
  * @param string $concepto
  * @param integer $NumMvto
  * @param date $Fecha
  */
 function addMovimiento($cuenta, $cargo = 0, $abono = 0, $referencia = "", $concepto = "", $NumMvto = false, $Fecha = false)
 {
     //if($this->mPolizaIniciada == false){ $this->init(); }
     $xT = new cTipos();
     $xLogg = new cCoreLog();
     $msg = "";
     $ejercicio = $this->mEjercicioPoliza;
     $periodo = $this->mPeriodoPoliza;
     $poliza = $this->mNumeroDePoliza;
     $tipo = $this->mTipoDePoliza;
     $NumMvto = setNoMenorQueCero($NumMvto);
     $this->mNumeroMvto = setNoMenorQueCero($this->mNumeroMvto);
     //$this->getFolioDeMvto();
     if ($NumMvto <= 1) {
         $NumMvto = $this->mNumeroMvto > 1 ? $this->mNumeroMvto + 1 : $this->getFolioDeMvto() + 1;
     }
     $cargo = $xT->cFloat($cargo, 2);
     $abono = $xT->cFloat($abono, 2);
     $xLogg->add("WARN\t----------------------------------------------\r\n", $xLogg->DEVELOPER);
     //Valores de los proximos Movimientos
     $TipoMvto = TM_CARGO;
     $monto = 0;
     $Fecha = $Fecha == false ? $this->mFechaPoliza : $Fecha;
     $concepto = $concepto == "" ? $this->mConceptoPoliza : $concepto;
     $referencia = trim($referencia);
     $diario = $this->mCentroDeCosto == false ? DEFAULT_CONTABLE_DIARIO_MVTOS : $this->mCentroDeCosto;
     $xCCont = new cCuentaContable($cuenta);
     $xCCont->init();
     $cuenta = $xCCont->get();
     if ($cargo > 0) {
         $TipoMvto = TM_CARGO;
         $monto = $cargo;
         $abono = 0;
         $this->mTotalCargos += $monto;
     } else {
         $TipoMvto = TM_ABONO;
         $monto = $abono;
         $cargo = 0;
         $this->mTotalAbonos += $monto;
     }
     //-------------------------------------------------------------------------------------------------------
     if ($monto != 0) {
         //-------------------------------------------------------------------------------------------------------
         $sqli_mvto = "INSERT INTO contable_movimientos(ejercicio, periodo, tipopoliza, numeropoliza, numeromovimiento,\n\t\t\t\t\t\tnumerocuenta, tipomovimiento, referencia, importe, diario, moneda, concepto, fecha, cargo, abono)\n\t\t\t\t\t\t    VALUES({$ejercicio}, {$periodo},\n\t\t\t\t\t\t    {$tipo}, {$poliza},\n\t\t\t\t\t\t    {$NumMvto}, {$cuenta},\n\t\t\t\t\t\t    '{$TipoMvto}', '{$referencia}',\n\t\t\t\t\t\t    {$monto}, {$diario}, 1,\n\t\t\t\t\t\t    '{$concepto}', '{$Fecha}',\n\t\t\t\t\t\t    {$cargo}, {$abono})";
         $rs = my_query($sqli_mvto);
         //setLog($sqli_mvto);
         if ($rs[SYS_ESTADO] == true) {
             $xLogg->add("{$NumMvto}\t{$cuenta}\t{$TipoMvto}\t{$cargo}\t{$abono}\t{$referencia}\r\n", $xLogg->DEVELOPER);
             $xCCont->setAfectarSaldos($TipoMvto, $monto, $periodo, $ejercicio, false);
             //Establecer Numeracion
             $this->mNumeroMvto = $NumMvto;
             $_SESSION[POLIZA_ID_ULTIMAOPERACION] = $NumMvto;
         } else {
             $xLogg->add("ERROR\t{$NumMvto}\tAl intentar insertar registro\r\n", $xLogg->DEVELOPER);
         }
     } else {
         $xLogg->add("ERROR\t{$NumMvto}\tNo existe un saldo que agregar\r\n", $xLogg->DEVELOPER);
     }
     $xLogg->add($xCCont->getMessages(), $xLogg->DEVELOPER);
     $xLogg->add($msg, $xLogg->DEVELOPER);
     $this->mMessages .= $xLogg->getMessages();
     return $xLogg->getMessages();
 }