public function listar(iListagemEstoque $listaestoque) { $this->load->model('estoque/estoqueModel'); $this->load->model('produtos/produtosModel'); $this->load->model('produtos/unidademedidaModel'); $this->load->model('produtos/unidadeMedidaEstoqueModel'); $this->load->model('produtos/unidadeMedidaModel'); $estoque = array(); $result = $listaestoque->listar($this->db); if ($result != null) { foreach ($result as $value) { $estoqueModel = new estoqueModel(); $estoqueModel->setId($value['id_estoque']); $estoqueModel->setQuantidadeMinima($value['quantidade_minima']); $estoqueModel->setQuantidadeMaxima($value['quantidade_maxima']); $produtoModel = new produtosModel(); $produtoModel->setId($value['id_produto']); $produtoModel->setFoto($value['foto_produto']); $produtoModel->setCodigoBarra($value['codigo_barra_gti']); $produtoModel->setNome($value['nome_produto']); $estoqueModel->setProduto($produtoModel); $this->db->clear(); $this->db->setTabela('unidade_medida as A, unidade_medida_produto AS B'); $this->db->setCondicao("B.id_produto = ? AND A.id_unidade_medida = B.id_unidade_medida"); $this->db->setOrderBy("B.ordem"); $this->db->setParameter(1, $value['id_produto']); if ($this->db->select()) { $unidadeMedida = $this->db->resultAll(); foreach ($unidadeMedida as $unidade) { $unidadeMedidaModel = new unidadeMedidaModel(); $unidadeMedidaModel->setId($unidade['id_unidade_medida']); $unidadeMedidaModel->setNome($unidade['nome_unidade_medida']); $unidadeMedidaModel->setAbreviacao($unidade['abreviacao_unidade_medida']); $unidadeMedidaEstoqueModel = new unidadeMedidaEstoqueModel(); $unidadeMedidaEstoqueModel->setId($unidade['id_unidade_medida_produto']); $unidadeMedidaEstoqueModel->setUnidadeMedida($unidadeMedidaModel); $unidadeMedidaEstoqueModel->setParaVenda((bool) $unidade['para_venda']); $unidadeMedidaEstoqueModel->setParaEstoque((bool) $unidade['para_estoque']); $unidadeMedidaEstoqueModel->setFator($unidade['fator_unidade_medida']); $unidadeMedidaEstoqueModel->setOrdem($unidade['ordem']); $produtoModel->addUnidadeMedidaEstoque($unidadeMedidaEstoqueModel); } } $estoqueModel->setLotes($this->listarLotes($estoqueModel, $listaestoque->getLocalizacao())); array_push($estoque, $estoqueModel); unset($estoqueModel); } } return $estoque; }
public function descartar() { $this->load->model('estoque/estoqueModel'); $this->load->model('estoque/lotesModel'); $this->load->model('estoque/localizacaoLoteModel'); $this->load->model('produtos/unidadeMedidaEstoqueModel'); $this->load->dao('estoque/estoqueDao'); $this->load->library('dataValidator'); $idEstoque = (int) $this->http->getRequest('idEstoque'); $idlote = (int) $this->http->getRequest('idlote'); $idUnidadeMedidaVenda = (int) $this->http->getRequest('idUnidadeMedidaVenda'); $quantidade = (double) $this->http->getRequest('quantidade'); $observacoes = $this->http->getRequest('observacoes'); //validação dos dados $dataValidator = new dataValidator(); $dataValidator->set('Quantidade', $quantidade, 'quantidade')->is_required()->is_num(); if ($dataValidator->validate()) { //UNIDADE MEDIDA ESTOQUE MODEL $unidadeMedidaEstoqueModel = new unidadeMedidaEstoqueModel(); $unidadeMedidaEstoqueModel->setId($idUnidadeMedidaVenda); //LOCALIZACAO LOTE MODEL $localizacaoLoteModel = new localizacaoLoteModel(); $localizacaoLoteModel->setUnidadeMedidaEstoque($unidadeMedidaEstoqueModel); $localizacaoLoteModel->setQuantidade($quantidade); $localizacaoLoteModel->setObservacoes($observacoes); $localizacaoLoteModel->descartar(); //LOTES MODEL $lotesModel = new lotesModel(); $lotesModel->setId($idlote); $lotesModel->addLocalizacao($localizacaoLoteModel); //ESTOQUE MODEL $estoqueModel = new estoqueModel(); $estoqueModel->setId($idEstoque); $estoqueModel->addLote($lotesModel); //ESTOQUE DAO $estoqueDao = new estoqueDao(); $lotePertoVencer = $estoqueDao->verificaDataValidade($estoqueModel); if (!$estoqueDao->verificaQuantidadeTransferencia($estoqueModel, localizacoes::ARMAZEM)) { $mensagem = "Quantidade insuficiente para realizar o descarte"; $this->http->response($mensagem); } else { $this->http->response($estoqueDao->transferir($estoqueModel, localizacoes::ARMAZEM)); } } else { $todos_erros = $dataValidator->get_errors(); $this->http->response(json_encode($todos_erros)); } }
/** * Obtem o id do estoque * */ private function atualizaEstoque(estoqueModel $estoque) { try { $this->db->clear(); $this->db->setTabela('estoque'); $this->db->setCondicao("id_produto = ?"); $this->db->setParameter(1, $estoque->getProduto()->getId()); if ($this->db->select()) { $res = $this->db->result(); $estoque->setId((int) $res['id_estoque']); } else { $data = array('id_produto' => $estoque->getProduto()->getId()); $this->db->clear(); $this->db->setTabela('estoque'); $this->db->insert($data); $estoque->setId((int) $this->db->getUltimoId()); } $this->atualizaNivelEstoque($estoque); return $estoque; } catch (dbException $e) { $this->db->query('ROLLBACK'); return $e->getMessageError(); } }