public IHttpActionResult ValidarQuantidadeInstalacao(ValidarQuantidadeInstalacaoModelRequisicao requisicao) { try { var validarQuantidadeRequisicao = new ValidarQuantidadeInstalacaoRequisicao { IdLote = requisicao.IdLote, IdProduto = requisicao.IdProduto, Quantidade = requisicao.Quantidade, IdEmpresa = IdEmpresa }; _armazenagemService.ValidarQuantidadeInstalacao(validarQuantidadeRequisicao); } catch (BusinessException ex) { return(ApiBadRequest(ex.Message)); } catch { throw; } return(ApiOk()); }
public void ValidarQuantidadeInstalacao(ValidarQuantidadeInstalacaoRequisicao requisicao) { if (requisicao.Quantidade <= 0) { throw new BusinessException("A quantidade deve ser informada."); } var validarLoteRequisicao = new ValidarLoteRequisicao { IdLote = requisicao.IdLote, IdEmpresa = requisicao.IdEmpresa }; ValidarLote(validarLoteRequisicao); var validarLoteProdutoRequisicao = new ValidarLoteProdutoInstalacaoRequisicao { IdEmpresa = requisicao.IdEmpresa, IdLote = requisicao.IdLote, IdProduto = requisicao.IdProduto }; ValidarLoteProdutoInstalacao(validarLoteProdutoRequisicao); var listaEnderecosLoteProduto = _unitOfWork.LoteProdutoEnderecoRepository.PesquisarPorLoteProduto(requisicao.IdLote, requisicao.IdProduto); LoteProduto loteProduto = _unitOfWork.LoteProdutoRepository.PesquisarProdutoNoLote(requisicao.IdEmpresa, requisicao.IdLote, requisicao.IdProduto); int saldoLote = loteProduto.Saldo; int totalInstalado = listaEnderecosLoteProduto.Sum(s => s.Quantidade); if ((totalInstalado + requisicao.Quantidade) > saldoLote) { throw new BusinessException("Quantidade maior que o saldo do produto no lote."); } }
public void ValidarEnderecoInstalacao(ValidarEnderecoInstalacaoRequisicao requisicao) { if (requisicao.IdEnderecoArmazenagem <= 0) { throw new BusinessException("O endereço deve ser informado."); } var validarLoteRequisicao = new ValidarLoteRequisicao { IdLote = requisicao.IdLote, IdEmpresa = requisicao.IdEmpresa }; ValidarLote(validarLoteRequisicao); var validarLoteProdutoRequisicao = new ValidarLoteProdutoInstalacaoRequisicao { IdEmpresa = requisicao.IdEmpresa, IdLote = requisicao.IdLote, IdProduto = requisicao.IdProduto }; ValidarLoteProdutoInstalacao(validarLoteProdutoRequisicao); var validarQuantidadeRequisicao = new ValidarQuantidadeInstalacaoRequisicao { IdEmpresa = requisicao.IdEmpresa, IdLote = requisicao.IdLote, IdProduto = requisicao.IdProduto, Quantidade = requisicao.Quantidade }; ValidarQuantidadeInstalacao(validarQuantidadeRequisicao); EnderecoArmazenagem enderecoArmazenagem = _unitOfWork.EnderecoArmazenagemRepository.GetById(requisicao.IdEnderecoArmazenagem); if (enderecoArmazenagem == null) { throw new BusinessException("O endereço não foi encontrado."); } if (enderecoArmazenagem.IsPontoSeparacao) { throw new BusinessException("Não é possível instalar volume em um endereço de Picking."); } if (enderecoArmazenagem.PontoArmazenagem.IdTipoArmazenagem != TipoArmazenagemEnum.Volume) { throw new BusinessException("Tipo de Movimentação inválido."); } if (enderecoArmazenagem.Ativo == false) { throw new BusinessException("O endereço não está ativo."); } if (enderecoArmazenagem.PontoArmazenagem.Ativo == false) { throw new BusinessException("O ponto de armazenagem não está ativo."); } if (enderecoArmazenagem.PontoArmazenagem.NivelArmazenagem.Ativo == false) { throw new BusinessException("O nível de armazenagem não está ativo."); } LoteProdutoEndereco loteProdutoEndereco = _unitOfWork.LoteProdutoEnderecoRepository.PesquisarPorEndereco(requisicao.IdEnderecoArmazenagem); if (loteProdutoEndereco != null) { throw new BusinessException("O endereço já está ocupado."); } Produto produto = _unitOfWork.ProdutoRepository.GetById(requisicao.IdProduto); decimal pesoInstalacao = produto.PesoLiquido / produto.MultiploVenda * requisicao.Quantidade; ValidarPeso(enderecoArmazenagem, pesoInstalacao); }