Esempio n. 1
0
 /**
  * @param boolean, date, int
  * Verifica se existe um lote com data de validade perto de vencer e o retorna
  * */
 public function verificaDataValidade(estoqueModel $estoque)
 {
     try {
         $this->load->model('estoque/lotesModel');
         $this->db->clear();
         $sql = "SELECT * \n\t\t\t\t\tFROM produto_lote, estoque, produtos, localizacao_lote\n\t\t\t\t\tWHERE produto_lote.id_estoque = ?\t\n\t\t\t\t\tAND produto_lote.data_validade < (SELECT PRODLOTE.data_validade \n\t\t\t\t\t\t\t\t\t\t\t\t\t\tFROM produto_lote as PRODLOTE \n\t\t\t\t\t\t\t\t\t\t\t\t\t\tWHERE PRODLOTE.id_produto_lote = ?) \n\t\t\t\t\tAND produto_lote.id_estoque = estoque.id_estoque \n\t\t\t\t\tAND produto_lote.id_produto_lote = localizacao_lote.id_produto_lote\n\t\t\t\t\tAND localizacao_lote.localizacao = ?\n\t\t\t\t\tAND produtos.id_produto = estoque.id_produto\n\t\t\t\t\tAND produtos.data_validade_controlada = 1\n\t\t\t\t\t";
         $this->db->setParameter(1, $estoque->getId());
         $this->db->setParameter(2, $estoque->getLotes()[0]->getId());
         $this->db->setParameter(3, localizacoes::ARMAZEM);
         if ($this->db->query($sql)) {
             $lote = $this->db->result();
             $lotesModel = new lotesModel();
             $lotesModel->setId((int) $lote['id_produto_lote']);
             $lotesModel->setCodigoLote($lote['codigo_lote']);
             $lotesModel->setDataValidade($lote['data_validade']);
             return $lotesModel;
         }
     } catch (dbException $e) {
         $this->db->query('rollback');
         return $e->getMessageError();
     }
 }
 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));
     }
 }
Esempio n. 3
0
 public function listarLotes(estoqueModel $estoque, $localizacao)
 {
     $this->load->model('estoque/lotesModel');
     $this->load->model('estoque/localizacaoLoteModel');
     $this->load->model('produtos/unidadeMedidaEstoqueModel');
     $this->load->model('produtos/unidademedidaModel');
     $this->db->clear();
     $this->db->setParameter(1, localizacoes::getAttribute($localizacao));
     $this->db->setParameter(2, $estoque->getId());
     $res = $this->db->query("select * from produto_lote \n\t\t\t\t\t\t\tinner join localizacao_lote on produto_lote.id_produto_lote = localizacao_lote.id_produto_lote AND localizacao_lote.localizacao = ?\n\t\t\t\t    \t\tWHERE produto_lote.id_estoque =? GROUP BY produto_lote.id_produto_lote ORDER BY produto_lote.id_produto_lote DESC");
     $arrLotes = array();
     if ($res) {
         $result = $this->db->resultAll();
         foreach ($result as $value) {
             $lotes = new lotesModel();
             $lotes->setId($value['id_produto_lote']);
             $lotes->setCodigoLote($value['codigo_lote']);
             $lotes->setCodigoBarrasGti($value['codigo_barras_gti']);
             $lotes->setCodigoBarrasGst($value['codigo_barras_gst']);
             $lotes->setDataValidade($value['data_validade']);
             $lotes->setUltimaAtualizacao($value['timestamp']);
             $this->db->clear();
             $this->db->setParameter(1, localizacoes::getAttribute($localizacao));
             $this->db->setParameter(2, $value['id_produto_lote']);
             $res = $this->db->query("select * from localizacao_lote\n\t\t\t\t\t\t\t\t\tINNER JOIN unidade_medida_produto ON localizacao_lote.id_unidade_medida_produto = unidade_medida_produto.id_unidade_medida_produto\n\t\t\t\t\t\t    \t\tINNER JOIN unidade_medida ON unidade_medida_produto.id_unidade_medida = unidade_medida.id_unidade_medida\n\t\t\t\t\t\t    \t\tWHERE localizacao_lote.localizacao = ? AND localizacao_lote.id_produto_lote = ? ");
             if ($res) {
                 $resultLocal = $this->db->resultAll();
                 foreach ($resultLocal as $valueLocal) {
                     $localizacaoLoteModel = new localizacaoLoteModel();
                     $localizacaoLoteModel->setId($valueLocal['id_localizacao_lote']);
                     $localizacaoLoteModel->setLocalizacao(localizacoes::getAttribute($valueLocal['localizacao']));
                     $localizacaoLoteModel->setQuantidade($valueLocal['quantidade_localizacao']);
                     $localizacaoLoteModel->setObservacoes($valueLocal['observacoes_localizacao_lote']);
                     $localizacaoLoteModel->setUltimaAtualizacao($valueLocal['timestamp']);
                     $unidademedidaModel = new unidademedidaModel();
                     $unidademedidaModel->setId($valueLocal['id_unidade_medida']);
                     $unidademedidaModel->setNome($valueLocal['nome_unidade_medida']);
                     $unidademedidaModel->setAbreviacao($valueLocal['abreviacao_unidade_medida']);
                     $unidadeMedidaEstoqueModel = new unidadeMedidaEstoqueModel();
                     $unidadeMedidaEstoqueModel->setId($valueLocal['id_unidade_medida_produto']);
                     $unidadeMedidaEstoqueModel->setFator($valueLocal['fator_unidade_medida']);
                     $unidadeMedidaEstoqueModel->setParaVenda((bool) $valueLocal['para_venda']);
                     $unidadeMedidaEstoqueModel->setParaEstoque((bool) $valueLocal['para_estoque']);
                     $unidadeMedidaEstoqueModel->setOrdem($valueLocal['ordem']);
                     $unidadeMedidaEstoqueModel->setUnidadeMedida($unidademedidaModel);
                     $localizacaoLoteModel->setUnidadeMedidaEstoque($unidadeMedidaEstoqueModel);
                     $lotes->addLocalizacao($localizacaoLoteModel);
                 }
             }
             array_push($arrLotes, $lotes);
         }
     }
     return $arrLotes;
 }