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; }
/** * @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 inserir() { if (!$this->load->checkPermissao->check(false, URL . 'estoque/gerenciar/')) { $this->http->response("Ação não permitida"); return false; } $this->load->model('produtos/produtosModel'); $this->load->model('produtos/unidadeMedidaEstoqueModel'); $this->load->model('produtos/unidadeMedidaModel'); $this->load->model('estoque/estoqueModel'); $this->load->model('estoque/localizacaoLoteModel'); $this->load->model('estoque/lotesModel'); $this->load->dao('produtos/produtosDao'); $this->load->dao('produtos/iConsultaProduto'); $this->load->dao('produtos/consultaPorId'); $this->load->dao('estoque/estoqueDao'); $this->load->library('dataValidator'); $this->load->library('dataformat'); $dataformat = new dataformat(); //Obtendo os valores $id_produto = (int) $this->http->getRequest('id_produto'); $codigoLote = $this->http->getRequest('codigoLote'); $codBarrasGti = $this->http->getRequest('codBarrasGti'); $codBarrasGst = $this->http->getRequest('codBarrasGst'); $dataValidadeControlada = (bool) $this->http->getRequest('dataValidadeControlada'); $dataValidade = $dataformat->formatar($this->http->getRequest('dataValidade'), 'data', 'banco'); $quantidade = $dataformat->formatar($this->http->getRequest('quantidade'), 'decimal', 'banco'); $unidadeMedidaEstoque = (int) $this->http->getRequest('unidadeMedidaEstoque'); $observacoes = $this->http->getRequest('observacoes'); //Validando os valores de entrada $dataValidator = new dataValidator(); $dataValidator->set('Produto', $id_produto, 'id_produto')->is_required(); $dataValidator->set('Código do lote', $codigoLote, 'codigoLote')->is_required(); if ($dataValidadeControlada == true) { $dataValidator->set('Data de validade', $dataValidade, 'dataValidade')->is_required()->is_date('Y-m-d'); } $dataValidator->set('Quantidade', $quantidade, 'quantidade')->is_required()->min_value(0); $dataValidator->set('Unidade de medida', $unidadeMedidaEstoque, 'unidadeMedidaEstoque')->is_required()->min_value(0); if ($dataValidator->validate()) { //PRODUTO MODEL $produtosModel = new produtosModel(); $produtosModel->setId($id_produto); $status = array(status::ATIVO, status::INATIVO); $produtos = new produtosDao(); $produtosModel = $produtos->consultar(new consultaPorId(), $produtosModel, $status); //UNIDADE MEDIDA ESTOQUE MODEL $unidadeMedidaEstoqueModel = new unidadeMedidaEstoqueModel(); $unidadeMedidaEstoqueModel->setId($unidadeMedidaEstoque); //LOCALIZACAO LOTE MODEL $localizacaoLoteModel = new localizacaoLoteModel(); $localizacaoLoteModel->setUnidadeMedidaEstoque($unidadeMedidaEstoqueModel); $localizacaoLoteModel->setQuantidade($quantidade); $localizacaoLoteModel->setObservacoes($observacoes); $localizacaoLoteModel->armazenar(); //LOTE MODEL $lotesModel = new lotesModel(); $lotesModel->setCodigoLote($codigoLote); $lotesModel->setCodigoBarrasGti($codBarrasGti); $lotesModel->setCodigoBarrasGst($codBarrasGst); $lotesModel->setDataValidade($dataValidade); $lotesModel->addLocalizacao($localizacaoLoteModel); //ESTOQUE MODEL $estoqueModel = new estoqueModel(); $estoqueModel->setProduto($produtosModel); $estoqueModel->addLote($lotesModel); //ESTOQUE DAO $estoqueDao = new estoqueDao(); $this->http->response($estoqueDao->armazenarLote($estoqueModel)); } else { $this->http->response(json_encode($dataValidator->get_errors()), '400'); } }