Eu tenho um código que ajuda o usuário a escolher um período de apuração.
O problema é que eu tenho um código chamado balancete, outro chamado razão e finalmente um chamado Mercado Pago. Os três precisam da rotina para escolher o período de apuração. A pergunta é: como o código da apuração vai saber quem iniciou o serviço?
No PHP, temos o comando function ( ), ele devolve o comando para quem lhe chamou, sem precisar de nenhum código adicional.
Eu tentei colocar um view dentro da function ( ) e o resultado foi um desastre.
A minha saída foi criar um roteador dentro da função apuração.
Para chamar a função, usei o comando <a href=?ControleDiario.apuracao.razao> dentro do view balancete e do view razão e <a href=?ControleDiario.apuracao.mercado> dentro do view Mercado Pago. Para melhorar mais ainda, a própria função apuração recebe o valor escolhido pelo usuário, coisa do tipo <a href=?ControleDiario.apuracao.2024-02> dentro do view Apuracao. Ou seja, eu coloquei o nome do solicitante bem como a apuração escolhida pelo usuário dentro da mesma chave. Olha só a baderna que ficou:
Arquivo Controles/ControleDiario.php
<?php
classControleDiarioextendsControle{publicfunction apuracao(){if(isset($_GET['apuracao'])){if(is_numeric(substr($_GET['apuracao'],0,4))){
$apuracao=apuracao($_GET['apuracao']."-1");
$_SESSION['dia']=$apuracao->primeiroDia;if($_SESSION['endereco']=="mercado"){return $this->mercado();}return $this->razao();}else{
$_SESSION['endereco']=$_GET['apuracao'];}}
$primeiroDia=$this->Conexao->select('dia from tbdiario order by dia')[0]->dia;
$ultimoDia=$this->Conexao->select('dia from tbdiario order by dia desc')[0]->dia;
$apuracoes=[];while($primeiroDia<=$ultimoDia){
$apuracoes[]=date('Y-m',strtotime($primeiroDia));
$data=newDateTime($primeiroDia);
$primeiroDia=date_modify($data,'+1 month')->format('Y-m-1');}
rsort($apuracoes);
$this->view('Apuracao',['apuracoes'=>$apuracoes]);}// ...}ArquivoViews/Apuracao.php
<?php
include VISOES .'Menu.php';
echo "<table class='table table-striped'>
<tr class='fw-semibold'><td><td>Selecione o período de apuração";foreach($apuracoes as $apuracao){
$ano = substr($apuracao,0,4);
$mes = substr($apuracao,5,2);if(!isset($anoAnterior)){
echo "<tr><td>$ano<td>";$anoAnterior=$ano;}if($ano!==$anoAnterior){
echo "<tr><td>". $ano ."<td><a href=?ControleDiario.apuracao.$apuracao>$mes</a> ";
$anoAnterior=$ano;}else{
echo " <a href=?ControleDiario.apuracao.$apuracao>$mes</a> ";}}
echo "</table>";
Pergunta
Frank K Hosaka
Eu tenho um código que ajuda o usuário a escolher um período de apuração.
O problema é que eu tenho um código chamado balancete, outro chamado razão e finalmente um chamado Mercado Pago. Os três precisam da rotina para escolher o período de apuração. A pergunta é: como o código da apuração vai saber quem iniciou o serviço?
No PHP, temos o comando function ( ), ele devolve o comando para quem lhe chamou, sem precisar de nenhum código adicional.
Eu tentei colocar um view dentro da function ( ) e o resultado foi um desastre.
A minha saída foi criar um roteador dentro da função apuração.
Para chamar a função, usei o comando <a href=?ControleDiario.apuracao.razao> dentro do view balancete e do view razão e <a href=?ControleDiario.apuracao.mercado> dentro do view Mercado Pago. Para melhorar mais ainda, a própria função apuração recebe o valor escolhido pelo usuário, coisa do tipo <a href=?ControleDiario.apuracao.2024-02> dentro do view Apuracao. Ou seja, eu coloquei o nome do solicitante bem como a apuração escolhida pelo usuário dentro da mesma chave. Olha só a baderna que ficou:
Isso é uma grande gambiarra, mas funciona.
Editado por Frank K HosakaLink para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
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.