/** * @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)); } }
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; }