public function consultaRelatorio()
 {
     try {
         //Obtendo os dados
         $dataformat = new dataformat();
         $periodoDe = $dataformat->formatar($this->http->getRequest('periodoDe'), 'data', 'banco');
         $periodoAte = $dataformat->formatar($this->http->getRequest('periodoAte'), 'data', 'banco');
         $produto = (int) $this->http->getRequest('produto');
         $RelatoriosModel = new RelatoriosModel();
         $RelatoriosModel->setPeriodoDe($periodoDe);
         $RelatoriosModel->setPeriodoAte($periodoAte);
         $RelatoriosDao = new RelatoriosDao();
         $res = $RelatoriosDao->consultarProdutosMaisVendidos($RelatoriosModel);
         if ($res != null) {
             $json = $this->jsonProdutosMaisVendidos($res);
             $this->http->response($json);
         } else {
             $this->http->response('Dados não encontrados', 400);
         }
     } catch (dbException $e) {
         $this->http->response($e->getMessageError());
     }
 }
Beispiel #2
0
    public function consultarProdutosMaisVendidos(RelatoriosModel $relatorio)
    {
        $sql = '
			SELECT 
				PRODVEND.*,
				count(V.idvend) AS nVendas, /*quantidade de vendas*/
				(
					SELECT 
						SUM(PRODV.quantidade_produto_vendido)  as qtdprodv
					FROM
			    		produtos_vendidos as PRODV
					INNER JOIN vendas as VEND ON PRODV.id_venda = VEND.id_venda
			    	WHERE PRODV.id_produto = PRODVEND.id_produto
			    		AND VEND.data_venda between ? AND ?
				) AS qtdprod /*quantidade de produtos*/
			FROM
            	produtos_vendidos as PRODVEND
			    
			/*SELECIONA A QUANTIDADE DE VENDAS*/
            INNER JOIN (  
            	SELECT DISTINCT 
            		VEND.data_venda as datavenda,
                	PRODV.id_produto_vendido as idprodv,
                	PRODV.id_produto as idprod,
                	PRODV.id_venda as idvend 
            	FROM produtos_vendidos as PRODV
            	INNER JOIN vendas as VEND ON PRODV.id_venda = VEND.id_venda
            	GROUP BY PRODV.id_venda, PRODV.id_produto
            ) as V

            WHERE
            	V.idprod = PRODVEND.id_produto
                AND V.idvend = PRODVEND.id_venda
                AND V.idprodv = PRODVEND.id_produto_vendido
            	AND V.datavenda between ? AND ?

			GROUP BY PRODVEND.id_produto
			ORDER BY nVendas DESC
			LIMIT 10
			';
        $this->db->clear();
        $this->db->setParameter(1, $relatorio->getPeriodoDe());
        $this->db->setParameter(2, $relatorio->getPeriodoAte());
        $this->db->setParameter(3, $relatorio->getPeriodoDe());
        $this->db->setParameter(4, $relatorio->getPeriodoAte());
        if ($this->db->query($sql)) {
            $arrprodvend = array();
            $result = $this->db->resultAll();
            foreach ($result as $res) {
                $produtosModel = new produtosModel();
                $produtosModel->setId($res['id_produto']);
                $produtosVendidoModel = new produtosVendidoModel();
                $produtosVendidoModel->setProduto($produtosModel);
                $produtosVendidoModel->setUnidadeMedidaVendido($res['unidade_medida_vendido']);
                $ProdutosMaisVendidosModel = new ProdutosMaisVendidosModel();
                $ProdutosMaisVendidosModel->setProdutoVendido($produtosVendidoModel);
                $ProdutosMaisVendidosModel->setQtdVendas($res['nVendas']);
                $ProdutosMaisVendidosModel->setQtdTotalProdutos($res['qtdprod']);
                $relatorio->addTipoRelatorio($ProdutosMaisVendidosModel);
            }
            return $relatorio;
        } else {
            return NULL;
        }
    }