Ejemplo n.º 1
0
 public function geraRelatorio(Request $request)
 {
     $address = new EnderecosCapa();
     $address = $address->getCapa($request, 'App\\Models\\Cliente');
     $clientes = Cliente::with('contatos')->with(['vendas' => function ($v) use($address) {
         $v->with('lancamentos');
         $v->with(['venda_itens' => function ($vi) {
             $vi->with('produto');
         }]);
         $v->whereBetween('data_venda', [setDataBR($address['data_inicial']), setDataBR($address['data_final'])]);
     }])->join('enderecos', function ($q) use($address) {
         $q->on('enderecos.enderecavel_id', '=', 'clientes.id');
         $q->where('enderecos.enderecavel_type', '=', 'App\\Models\\Cliente');
         $q->whereIn('estado', $address['estados']);
         $q->whereIn('cidade', $address['cidades']);
         $q->whereIn('bairro', $address['bairros']);
     })->select('enderecos.estado', 'enderecos.cidade', 'enderecos.bairro', 'enderecos.logradouro', 'enderecos.numero', 'enderecos.complemento', 'enderecos.cep', 'clientes.*')->orderBy('enderecos.estado', 'asc')->orderBy('enderecos.cidade', 'asc')->orderBy('enderecos.bairro', 'asc')->orderBy('enderecos.logradouro', 'asc')->orderBy('enderecos.numero', 'asc')->orderBy('clientes.fantasia', 'asc')->orderBy('clientes.nome_razao', 'asc')->get();
     //fim join enderecos
     return view('clientes/relatorios/relatorio_completo', compact('enderecos', 'clientes', 'address'));
 }