public function addProdutoListaVenda()
 {
     //carregamento das classes dependentes
     $this->load->dao('produtos/IConsultaProduto');
     $this->load->dao('produtos/consultaPorId');
     $this->load->dao('produtos/produtosDao');
     $this->load->dao('produtos/precosDao');
     $this->load->model('produtos/produtosModel');
     $this->load->model('caixa/produtosVendidoModel');
     $this->load->model('caixa/vendasModel');
     $this->load->model('caixa/caixaAbertoModel');
     $this->load->model('caixa/caixasModel');
     //Obtendo os dados de entrada
     $dataformat = new dataformat();
     $idproduto = $this->http->getRequest('idproduto');
     $quantidade = (double) $dataformat->formatar($this->http->getRequest('quantidade'), 'decimal', 'banco');
     $produtosModel = new produtosModel();
     $produtosModel->setId($idproduto);
     //obtendo os dados do produto
     $produtosDao = new produtosDao();
     $produtosModel = $produtosDao->consultar(new consultaPorId(), $produtosModel, array(status::ATIVO));
     $produtosVendidoModel = new produtosVendidoModel();
     $produtosVendidoModel->setProduto($produtosModel);
     $produtosVendidoModel->setQuantidade($quantidade);
     //Obtendo o preço de venda
     $precosDao = new precosDao();
     $produtosVendidoModel->setPrecoVendido($precosDao->consultarPrecoVenda($produtosModel)->getPreco());
     //Adicionando o produto na venda
     $caixa = unserialize($_SESSION['caixa']);
     $caixa->getCaixaAberto()[0]->getVendas()[0]->addProdutoVendido($produtosVendidoModel);
     $_SESSION['caixa'] = serialize($caixa);
     $this->http->response(true);
 }
    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;
        }
    }