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; } }