Ir para conteúdo
Fórum Script Brasil
  • 0

Não consegui pegar os valores do balancete


Frank K Hosaka

Pergunta

Ontem eu consegui montar o balancete. Eu já tenho a consulta que monta o balancete no MySQL e eu chamei de vw_balancete, mas até ele aparecer na tela do navegador é bastante tempo, coisa de um minuto. Isso é muito tempo. Descobri que é bem mais rápido eu pedir para o PHP montar o balancete do que pegar um já pronto no MySQL. O código ficou assim:

<?php

// ...

public function balancete(){
        $balancete=[];
        $contas=$this->Conexao->select("* from tbconta");
        if(!isset($_SESSION['dia'])){$_SESSION['dia']=date('Y-m-d');}
        $apuracao=apuracao($_SESSION['dia']);
        $primeiroDia=$apuracao->primeiroDia;
        $ultimoDia=$apuracao->ultimoDia;
        foreach($contas as $conta){
            $debitoAnterior=$this->Conexao->select("sum(valor) as soma from 
                tbdiario where contad=$conta->conta and dia<'$primeiroDia'")[0]->soma;
            $creditoAnterior=$this->Conexao->select("sum(valor) as soma from 
                tbdiario where contac=$conta->conta and dia<'$primeiroDia'")[0]->soma;
            $inicio=$debitoAnterior-$creditoAnterior;
            $debito=$this->Conexao->select("sum(valor) as soma from
                tbdiario where contad=$conta->conta and 
                dia between '$primeiroDia' and '$ultimoDia'")[0]->soma;
            $credito=$this->Conexao->select("sum(valor) as soma from
                tbdiario where contac=$conta->conta and 
                dia between '$primeiroDia' and '$ultimoDia'")[0]->soma;
            $debitoFim=$this->Conexao->select("sum(valor) as soma from 
                tbdiario where contad=$conta->conta and dia<='$ultimoDia'")[0]->soma;
            $creditoFim=$this->Conexao->select("sum(valor) as soma from 
                tbdiario where contac=$conta->conta and dia<='$ultimoDia'")[0]->soma;
            $fim=$debitoFim-$creditoFim;
            array_push($balancete,['conta'=>$conta->conta,'descricao'=>$conta->descricao,
                'inicio'=>$inicio,'debito'=>$debito,'credito'=>$credito,'fim'=>$fim]);}
            $balancete=json_decode(json_encode($balancete));
        $_SESSION['balancete']=$balancete;
        $this->view('balancete',['balancete'=>$balancete,'apuracao'=>$apuracao]);}

O problema foi pegar os valores correspondentes à conta selecionada nesse view:

<?php require VISAO . '/menu.php'; $_SESSION['uri']=$_SERVER['REQUEST_URI'];?>
<table class='table table-striped linha'>
<th><th><a href='?ControleDiario.apuracao'><?=$apuracao->apuracao?></a>
    <th class=text-end>Inicial<th class=text-end>Débito
    <th class=text-end>Crédito<th class=text-end>Saldo
<?php foreach($balancete as $conta): ?>
    <tr>
    <td><a href=?ControleDiario.razao.<?=$conta->conta?>><?=$conta->conta?></a>
    <td nowrap><?=$conta->descricao?>
    <td class=text-end><?=dec($conta->inicio)?>
    <td class=text-end><?=dec($conta->debito)?>
    <td class=text-end><?=dec($conta->credito)?>
    <td class=text-end><?=dec($conta->fim)?>
<?php endforeach; ?>

Tentei criar um vetor, tentei montar um <form> com um monte de <input type=hidden>, nada deu certo. É uma péssima ideia tentar colocar um <form> no meio da tabela. Agora que eu vi que não tentei colocar toda a tabela dentro do <form>, talvez essa seja a melhor resposta. Mas, enfim, eu desisti. Ao invés de pegar os valores de uma view, achei melhor pegar uma cópia do $balancete e colocar dentro do $_SESSION['balancete'], e a rotina do razão ficou assim:

<?php

// ...

public function razao(){
        $conta=$_GET['razao'];
        $balancete=$_SESSION['balancete'];
        $razao=array_column($balancete, null, 'conta')[$conta] ?? false;
        var_dump($razao);exit;
    }

 

Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...