function db_varPatrimoniaisRpps($anousu, $dataini, $datafin, $iInstit)
{
    $aVariacoesAtivo = array();
    $aVariacoesPassivo = array();
    $aVariacoesExtraAtivo = array();
    $aVariacoesExtraPassivo = array();
    (double) ($aVariacoesAtivo['ReceitasCorrentes'] = 0);
    (double) ($aVariacoesAtivo['ReceitasCapital'] = 0);
    (double) ($aVariacoesAtivo['IntraOrcamentarias'] = 0);
    (double) ($aVariacoesAtivo['TransferenciasFinanceirasRecebidas'] = 0);
    (double) ($aVariacoesAtivo['IncorporacaoAtivos'] = 0);
    (double) ($aVariacoesAtivo['DesincorporacaoPassivos'] = 0);
    (double) ($aVariacoesPassivo['DespesasCorrentes'] = 0);
    (double) ($aVariacoesPassivo['DespesasCapital'] = 0);
    (double) ($aVariacoesPassivo['IntraOrcamentarias'] = 0);
    (double) ($aVariacoesPassivo['DesincorporacaoAtivos'] = 0);
    (double) ($aVariacoesPassivo['IncorporacaoPassivos'] = 0);
    (double) ($aVariacoesExtraAtivo['TransferenciasFinanceirasRecebidas'] = 0);
    (double) ($aVariacoesExtraAtivo['MovimentoFundosDebito'] = 0);
    (double) ($aVariacoesExtraAtivo['IncorporacaoAtivos'] = 0);
    (double) ($aVariacoesExtraAtivo['DesincorporacaoPassivos'] = 0);
    (double) ($aVariacoesExtraAtivo['AjustesBensValoresCreditos'] = 0);
    (double) ($aVariacoesExtraAtivo['AjustesExerciciosAnteriores'] = 0);
    (double) ($aVariacoesExtraPassivo['TransferenciasFinanceirasConcedidas'] = 0);
    (double) ($aVariacoesExtraPassivo['MovimentoFundosCredito'] = 0);
    (double) ($aVariacoesExtraPassivo['DesincorporacaoAtivos'] = 0);
    (double) ($aVariacoesExtraPassivo['AjustesBensValoresCreditos'] = 0);
    (double) ($aVariacoesExtraPassivo['IncorporacaoPassivos'] = 0);
    //
    // Balancete de Receita (db_receitasaldo)
    //
    $sSqlFiltro = ' o70_instit = ' . $iInstit;
    $rsReceitaSaldo = db_receitasaldo(3, 1, 3, true, $sSqlFiltro, $anousu, $dataini, $datafin);
    $iNumrowsReceita = pg_num_rows($rsReceitaSaldo);
    // db_criatabela($rsReceitaSaldo);exit;
    for ($i = 0; $i < $iNumrowsReceita; $i++) {
        $oReceitaSaldo = db_utils::fieldsMemory($rsReceitaSaldo, $i);
        switch (substr($oReceitaSaldo->o57_fonte, 0, 4)) {
            case '4100':
                $aVariacoesAtivo['ReceitasCorrentes'] += (double) $oReceitaSaldo->saldo_arrecadado_acumulado;
                break;
            case '4200':
                $aVariacoesAtivo['ReceitasCapital'] += (double) $oReceitaSaldo->saldo_arrecadado_acumulado;
                break;
            case '4700':
                $aVariacoesAtivo['IntraOrcamentarias'] += (double) $oReceitaSaldo->saldo_arrecadado_acumulado;
                break;
            case '4800':
                $aVariacoesAtivo['IntraOrcamentarias'] += (double) $oReceitaSaldo->saldo_arrecadado_acumulado;
                break;
        }
    }
    //
    // Balancete de Despesa (db_dotacaosaldo)
    //
    $sCondicaoDotacao = 'w.o58_instit = ' . $iInstit;
    $rsDotacaoSaldo = db_dotacaosaldo(7, 3, 4, true, $sCondicaoDotacao, $anousu, $dataini, $datafin);
    $iNumRowsDotacaoSaldo = pg_num_rows($rsDotacaoSaldo);
    //db_criatabela($rsDotacaoSaldo); exit;
    for ($i = 0; $i < $iNumRowsDotacaoSaldo; $i++) {
        $oDotacaoSaldo = db_utils::fieldsMemory($rsDotacaoSaldo, $i);
        if (substr($oDotacaoSaldo->o58_elemento, 0, 2) == '33' && substr($oDotacaoSaldo->o58_elemento, 3, 2) != '91') {
            $aVariacoesPassivo['DespesasCorrentes'] += (double) $oDotacaoSaldo->liquidado_acumulado;
        }
        if (substr($oDotacaoSaldo->o58_elemento, 0, 2) == '34' && substr($oDotacaoSaldo->o58_elemento, 3, 2) != '91') {
            $aVariacoesPassivo['DespesasCapital'] += (double) $oDotacaoSaldo->liquidado_acumulado;
        }
        if ((substr($oDotacaoSaldo->o58_elemento, 0, 2) == '33' || substr($oDotacaoSaldo->o58_elemento, 0, 2) == '34') && substr($oDotacaoSaldo->o58_elemento, 3, 2) == '91') {
            $aVariacoesPassivo['IntraOrcamentarias'] += (double) $oDotacaoSaldo->liquidado_acumulado;
        }
    }
    //
    // Balancete de verificacao (db_planocontassaldo_matriz)
    //
    $sCondicaoConta = ' c61_instit = ' . $iInstit;
    $rsContaSaldo = db_planocontassaldo_matriz($anousu, $dataini, $datafin, false, $sCondicaoConta);
    $iNumRowsContaSaldo = pg_num_rows($rsContaSaldo);
    //db_criatabela($rsContaSaldo); exit;
    for ($i = 0; $i < $iNumRowsContaSaldo; $i++) {
        $oContaSaldo = db_utils::fieldsMemory($rsContaSaldo, $i);
        if (substr($oContaSaldo->estrutural, 0, 15) == '612000000000000') {
            $aVariacoesAtivo['TransferenciasFinanceirasRecebidas'] += (double) $oContaSaldo->saldo_final;
        }
        switch (substr($oContaSaldo->estrutural, 0, 15)) {
            case '613100000000000':
                $aVariacoesAtivo['IncorporacaoAtivos'] += (double) $oContaSaldo->saldo_final;
                break;
            case '613300000000000':
                $aVariacoesAtivo['DesincorporacaoPassivos'] += (double) $oContaSaldo->saldo_final;
                break;
            case '622200000000000':
                $aVariacoesExtraAtivo['TransferenciasFinanceirasRecebidas'] += (double) $oContaSaldo->saldo_final;
                break;
            case '622300000000000':
                $aVariacoesExtraAtivo['MovimentoFundosDebito'] += (double) $oContaSaldo->saldo_final;
                break;
            case '623100000000000':
                $aVariacoesExtraAtivo['IncorporacaoAtivos'] += (double) $oContaSaldo->saldo_final;
                break;
            case '623200000000000':
                $aVariacoesExtraAtivo['AjustesBensValoresCreditos'] += (double) $oContaSaldo->saldo_final;
                break;
            case '623300000000000':
                $aVariacoesExtraAtivo['DesincorporacaoPassivos'] += (double) $oContaSaldo->saldo_final;
                break;
            case '623800000000000':
                $aVariacoesExtraAtivo['AjustesExerciciosAnteriores'] += (double) $oContaSaldo->saldo_final;
                break;
            case '513100000000000':
                $aVariacoesPassivo['DesincorporacaoAtivos'] += (double) $oContaSaldo->saldo_final;
                break;
            case '513300000000000':
                $aVariacoesPassivo['IncorporacaoPassivos'] += (double) $oContaSaldo->saldo_final;
                break;
            case '522200000000000':
                $aVariacoesExtraPassivo['TransferenciasFinanceirasConcedidas'] += (double) $oContaSaldo->saldo_final;
                break;
            case '522300000000000':
                $aVariacoesExtraPassivo['MovimentoFundosCredito'] += (double) $oContaSaldo->saldo_final;
                break;
            case '523100000000000':
                $aVariacoesExtraPassivo['DesincorporacaoAtivos'] += (double) $oContaSaldo->saldo_final;
                break;
            case '523200000000000':
                $aVariacoesExtraPassivo['AjustesBensValoresCreditos'] += (double) $oContaSaldo->saldo_final;
                break;
            case '523300000000000':
                $aVariacoesExtraPassivo['IncorporacaoPassivos'] += (double) $oContaSaldo->saldo_final;
                break;
        }
    }
    //------------------------------------------------------------------------------------------------------------------------------------------------//
    //
    // Totalizadores
    //
    $aRetorno = array();
    // Receitas
    $aRetorno['Ativo']['ReceitasCorrentes'] = $aVariacoesAtivo['ReceitasCorrentes'];
    $aRetorno['Ativo']['ReceitasCapital'] = $aVariacoesAtivo['ReceitasCapital'];
    $aRetorno['Ativo']['IntraOrcamentarias'] = $aVariacoesAtivo['IntraOrcamentarias'];
    $aRetorno['Ativo']['Receitas'] = $aVariacoesAtivo['ReceitasCorrentes'] + $aVariacoesAtivo['ReceitasCapital'] + $aVariacoesAtivo['IntraOrcamentarias'];
    // Interferencias Ativas
    $aRetorno['Ativo']['TransferenciasFinanceirasRecebidas'] = $aVariacoesAtivo['TransferenciasFinanceirasRecebidas'];
    $aRetorno['Ativo']['InterferenciasAtivas'] = $aVariacoesAtivo['TransferenciasFinanceirasRecebidas'];
    // Mutacoes Ativas
    $aRetorno['Ativo']['IncorporacaoAtivos'] = $aVariacoesAtivo['IncorporacaoAtivos'];
    $aRetorno['Ativo']['DesincorporacaoPassivos'] = $aVariacoesAtivo['DesincorporacaoPassivos'];
    $aRetorno['Ativo']['MutacoesAtivas'] = $aVariacoesAtivo['IncorporacaoAtivos'] + $aVariacoesAtivo['DesincorporacaoPassivos'];
    //Total Orcamentaria Ativa
    $aRetorno['Ativo']['TotalOrcamentariaAtiva'] = $aRetorno['Ativo']['Receitas'] + $aRetorno['Ativo']['InterferenciasAtivas'] + $aRetorno['Ativo']['MutacoesAtivas'];
    $aRetorno['Passivo']['DespesasCorrentes'] = $aVariacoesPassivo['DespesasCorrentes'];
    $aRetorno['Passivo']['DespesasCapital'] = $aVariacoesPassivo['DespesasCapital'];
    $aRetorno['Passivo']['IntraOrcamentarias'] = $aVariacoesPassivo['IntraOrcamentarias'];
    $aRetorno['Passivo']['Despesas'] = $aVariacoesPassivo['DespesasCorrentes'] + $aVariacoesPassivo['DespesasCapital'] + $aVariacoesPassivo['IntraOrcamentarias'];
    $aRetorno['Passivo']['DesincorporacaoAtivos'] = $aVariacoesPassivo['DesincorporacaoAtivos'];
    $aRetorno['Passivo']['IncorporacaoPassivos'] = $aVariacoesPassivo['IncorporacaoPassivos'];
    $aRetorno['Passivo']['MutacoesPassivas'] = $aVariacoesPassivo['DesincorporacaoAtivos'] + $aVariacoesPassivo['IncorporacaoPassivos'];
    // Total Orcamentaria Passiva
    $aRetorno['Passivo']['TotalOrcamentariaPassiva'] = $aRetorno['Passivo']['Despesas'] + $aRetorno['Passivo']['MutacoesPassivas'];
    //
    //Extra-Orcamentario
    //
    // Interferencias Ativas
    $aRetorno['AtivoExtra']['TransferenciasFinanceirasRecebidas'] = $aVariacoesExtraAtivo['TransferenciasFinanceirasRecebidas'];
    $aRetorno['AtivoExtra']['MovimentoFundosDebito'] = $aVariacoesExtraAtivo['MovimentoFundosDebito'];
    $aRetorno['AtivoExtra']['InterferenciasAtivas'] = $aVariacoesExtraAtivo['TransferenciasFinanceirasRecebidas'] + $aVariacoesExtraAtivo['MovimentoFundosDebito'];
    // Acrescimos Patrimoniais
    $aRetorno['AtivoExtra']['IncorporacaoAtivos'] = $aVariacoesExtraAtivo['IncorporacaoAtivos'];
    $aRetorno['AtivoExtra']['AjustesBensValoresCreditos'] = $aVariacoesExtraAtivo['AjustesBensValoresCreditos'];
    $aRetorno['AtivoExtra']['DesincorporacaoPassivos'] = $aVariacoesExtraAtivo['DesincorporacaoPassivos'];
    $aRetorno['AtivoExtra']['AjustesExerciciosAnteriores'] = $aVariacoesExtraAtivo['AjustesExerciciosAnteriores'];
    $aRetorno['AtivoExtra']['AcrescimosPatrimoniais'] = $aVariacoesExtraAtivo['IncorporacaoAtivos'] + $aVariacoesExtraAtivo['AjustesBensValoresCreditos'] + $aVariacoesExtraAtivo['DesincorporacaoPassivos'];
    // Total Ativo Extra-Orcamentario
    $aRetorno['AtivoExtra']['TotalAtivoExtra'] = $aRetorno['AtivoExtra']['InterferenciasAtivas'] + $aRetorno['AtivoExtra']['AcrescimosPatrimoniais'];
    // Interferencias Passivas
    $aRetorno['PassivoExtra']['TransferenciasFinanceirasConcedidas'] = $aVariacoesExtraPassivo['TransferenciasFinanceirasConcedidas'];
    $aRetorno['PassivoExtra']['MovimentoFundosCredito'] = $aVariacoesExtraPassivo['MovimentoFundosCredito'];
    $aRetorno['PassivoExtra']['InterferenciasPassivas'] = $aVariacoesExtraPassivo['TransferenciasFinanceirasConcedidas'] + $aVariacoesExtraPassivo['MovimentoFundosCredito'];
    //Descrescimos Patrimoniais
    $aRetorno['PassivoExtra']['DesincorporacaoAtivos'] = $aVariacoesExtraPassivo['DesincorporacaoAtivos'];
    $aRetorno['PassivoExtra']['AjustesBensValoresCreditos'] = $aVariacoesExtraPassivo['AjustesBensValoresCreditos'];
    $aRetorno['PassivoExtra']['IncorporacaoPassivos'] = $aVariacoesExtraPassivo['IncorporacaoPassivos'];
    $aRetorno['PassivoExtra']['DecrescimosPatrimoniais'] = $aVariacoesExtraPassivo['DesincorporacaoAtivos'] + $aVariacoesExtraPassivo['AjustesBensValoresCreditos'] + $aVariacoesExtraPassivo['IncorporacaoPassivos'];
    // Total Passivo Extra-Orcamentario
    $aRetorno['PassivoExtra']['TotalPassivoExtra'] = $aRetorno['PassivoExtra']['InterferenciasPassivas'] + $aRetorno['PassivoExtra']['DecrescimosPatrimoniais'];
    $aRetorno['TotaisAtivo']['Soma'] = $aRetorno['Ativo']['TotalOrcamentariaAtiva'] + $aRetorno['AtivoExtra']['TotalAtivoExtra'];
    $aRetorno['TotaisPassivo']['Soma'] = $aRetorno['Passivo']['TotalOrcamentariaPassiva'] + $aRetorno['PassivoExtra']['TotalPassivoExtra'];
    $nSomaAtivo = $aRetorno['TotaisAtivo']['Soma'];
    $nSomaPassivo = $aRetorno['TotaisPassivo']['Soma'];
    if ($nSomaAtivo - $nSomaPassivo < 0) {
        $nDeficitPatrimonial = abs($nSomaAtivo - $nSomaPassivo);
        (double) ($nTotalAtivo = $nSomaAtivo + abs($nSomaAtivo - $nSomaPassivo));
    } else {
        $nDeficitPatrimonial = '-';
        (double) ($nTotalAtivo = $nSomaAtivo);
    }
    if ($nSomaAtivo - $nSomaPassivo > 0) {
        $nSuperavitPatrimonial = $nSomaAtivo - $nSomaPassivo;
        (double) ($nTotalPassivo = $nSomaPassivo + abs($nSomaAtivo - $nSomaPassivo));
    } else {
        $nSuperavitPatrimonial = '-';
        (double) ($nTotalPassivo = $nSomaPassivo);
    }
    $aRetorno['TotaisAtivo']['TotalAtivo'] = $nTotalAtivo;
    $aRetorno['TotaisAtivo']['DeficitPatrimonial'] = $nDeficitPatrimonial;
    $aRetorno['TotaisPassivo']['TotalPassivo'] = $nTotalPassivo;
    $aRetorno['TotaisPassivo']['SuperavitPatrimonial'] = $nSuperavitPatrimonial;
    return $aRetorno;
}
$oParam = $oJson->decode(str_replace("\\", "", $_POST["json"]));
$oRetorno = new stdClass();
$oRetorno->status = 1;
$oRetorno->message = '';
$oRetorno->itens = array();
switch ($oParam->exec) {
    case 'getReceitasByPeriodo':
        $sDataInicial = "{$oParam->iAno}-{$oParam->iMes}-01";
        $sDataFinal = "{$oParam->iAno}-{$oParam->iMes}-" . cal_days_in_month(CAL_GREGORIAN, $oParam->iMes, $oParam->iAno);
        $iMesCorrente = date("m", db_getsession("DB_datausu"));
        $iAnoCorrente = date("Y", db_getsession("DB_datausu"));
        $iDiaCorrente = date("d", db_getsession("DB_datausu"));
        if ($iMesCorrente == $oParam->iMes && $iAnoCorrente == $oParam->iAno) {
            $sDataFinal = date("Y-m-d", mktime(0, 0, 0, $oParam->iMes, $iDiaCorrente - 2, $oParam->iAno));
        }
        $rsReceitaSaldo = db_receitasaldo(11, 1, 3, true, "o70_instit = " . db_getsession("DB_instit"), $oParam->iAno, $sDataInicial, $sDataFinal);
        $oRetorno->itens = db_utils::getColectionByRecord($rsReceitaSaldo, true, false, true);
        break;
    case 'getDespesasByPeriodo':
        $sWhere = " o58_instit = " . db_getsession("DB_instit");
        if ($oParam->iOrgao != '') {
            $sWhere .= " and o58_orgao = {$oParam->iOrgao}";
        }
        $sDataInicial = "{$oParam->iAno}-{$oParam->iMes}-01";
        $sDataFinal = "{$oParam->iAno}-{$oParam->iMes}-" . cal_days_in_month(CAL_GREGORIAN, $oParam->iMes, $oParam->iAno);
        $iMesCorrente = date("m", db_getsession("DB_datausu"));
        $iAnoCorrente = date("Y", db_getsession("DB_datausu"));
        $iDiaCorrente = date("d", db_getsession("DB_datausu"));
        if ($iMesCorrente == $oParam->iMes && $iAnoCorrente == $oParam->iAno) {
            $sDataFinal = date("Y-m-d", mktime(0, 0, 0, $oParam->iMes, $iDiaCorrente - 2, $oParam->iAno));
        }