No meu projeto original eu criei duas tabelas, uma resumia a venda por mês e outra por dia. Quando o usuário selecionava uma data, a tabela exibia as vendas por hora daquele dia. O problema é que o usuário precisava rolar a página para ver os detalhes por hora. Ontem eu decidi tirar os detalhes das horas de dentro da tabela por dia, e colocar numa <div> por cima das outras duas tabelas (o blade usa a sintaxe {{ }} e @função, mas eu usei <?php ?>, para compartilhar os mesmos códigos entre o Laravel e o PHP):
app > Http > Controllers > Venda.php
<?php
namespaceApp\Http\Controllers;useIlluminate\Http\Request;useIlluminate\Support\Facades\DB;useApp\Models\tbpedido;classVenda{function inicio(Request $request){
$detalhes=[];if($request->detalhe){
$detalhes=tbpedido::wheredate('horavenda',$request->detalhe)->orderBy('horavenda','desc')->get();}if(!session()->has('apuracao')){
session(['apuracao'=>date('Y-m-01')]);}
$primeiroDia=apuracao(session('apuracao'))->primeiroDia;
$ultimoDia=apuracao(session('apuracao'))->ultimoDia;
$grupos=DB::table('tbpedido')->selectRaw('DATE(horavenda) as ddia, SUM(total) as ttotal')->whereBetween(DB::raw('DATE(horavenda)'),[$primeiroDia, $ultimoDia])->whereNotNull('horavenda')->groupBy('ddia')->orderBy('ddia','desc')->get();
$vendaMensal=DB::table('tbpedido')->selectRaw('DATE_FORMAT(horavenda, "%Y-%m") as mes, SUM(total) as total')->whereNotNull('horavenda')->groupBy('mes')->orderBy('mes','desc')->get();return view('vendaView',['grupos'=>$grupos,'vendaMensal'=>$vendaMensal,'detalhes'=>$detalhes,'detalhe'=>$request->detalhe]);}function apuracao(Request $request){
$detalhe=$request->apuracao."-01";
session(['apuracao'=>$detalhe]);return $this->inicio(newRequest(['detalhe'=>null]));}}
resources > views > vendaView.blade.php
@include('menuView')<script>
document.title="Relatório Venda"
btmenu.innerHTML="Relatório Venda"</script><?php if(count($detalhes)):?><divclass="position-absolute top-10 start-50 translate-middle-x bg-dark text-white"onclick="this.style.display='none'"><tableclass="table table-striped linha border">
Detalhe por hora
<trclass=fw-semibold><td><?=dbr($detalhes[0]->dia)?><td>Pedido<td>Bling<td>Total<td>dinheiro<td>troco<td>cartão<td>pix
<?php foreach($detalhes as $grupo):?><tr><tdclass=text-end><?=date('H:i',strtotime($grupo->horavenda))?><tdclass=text-end><?=$grupo->ped?><tdclass=text-end><?=$grupo->bling?><tdclass=text-end><?=dec($grupo->total)?><tdclass=text-end><?php if(abs($grupo->dinheiro)>0):?><?=dec($grupo->dinheiro)?><?php endif;?><tdclass=text-end><?php if(abs($grupo->troco)>0):?><?=dec($grupo->troco)?><?php endif;?><tdclass=text-center><?php if($grupo->cartao==1):?>
x
<?php endif;?><tdclass=text-center><?php if($grupo->pix==1):?>
x
<?php endif;?><?php endforeach;?></table></div></div><?php endif;?><tableclass='table table-striped linha w-25'style=float:left><tr><tdcolspan=2>Detalhe por mês
<?php foreach($vendaMensal as $venda):?><tr><td><a href="vendaApuracao?apuracao=<?=$venda->mes?>"><?=$venda->mes?></a> => R$
<tdclass='text-danger text-end'><?=dec($venda->total)?><?php endforeach;?></table><tableclass='table table-striped linha w-25'style=float:right><tr><tdcolspan=2>Detalhe por dia
<trclass=fw-semibold><td>Dia<tdclass=text-end>Total
<?php foreach($grupos as $grupo):?><tr><td><a href="vendaInicio?detalhe=<?=$grupo->ddia?>">
<?=date('d/m/y',strtotime($grupo->ddia))?></a><tdclass=text-end><?=dec($grupo->ttotal)?><?php endforeach;?></table>
Pergunta
Frank K Hosaka
No meu projeto original eu criei duas tabelas, uma resumia a venda por mês e outra por dia. Quando o usuário selecionava uma data, a tabela exibia as vendas por hora daquele dia. O problema é que o usuário precisava rolar a página para ver os detalhes por hora. Ontem eu decidi tirar os detalhes das horas de dentro da tabela por dia, e colocar numa <div> por cima das outras duas tabelas (o blade usa a sintaxe {{ }} e @função, mas eu usei <?php ?>, para compartilhar os mesmos códigos entre o Laravel e o PHP):
Link 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.