Exemple #1
0
        public IHttpActionResult ValidarQuantidadeAjustar(ValidarQuantidadeInstalacaoModelRequisicao requisicao)
        {
            try
            {
                var validarQuantidadeRequisicao = new ValidarQuantidadeAjusteRequisicao
                {
                    IdLote                = requisicao.IdLote,
                    IdProduto             = requisicao.IdProduto,
                    Quantidade            = requisicao.Quantidade,
                    IdEnderecoArmazenagem = requisicao.IdEnderecoArmazenagem,
                    IdEmpresa             = IdEmpresa
                };

                _armazenagemService.ValidarQuantidadeAjuste(validarQuantidadeRequisicao);
            }
            catch (BusinessException ex)
            {
                return(ApiBadRequest(ex.Message));
            }
            catch
            {
                throw;
            }

            return(ApiOk());
        }
Exemple #2
0
        public void ValidarQuantidadeAjuste(ValidarQuantidadeAjusteRequisicao 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 ValidarLoteProdutoAjusteRequisicao
            {
                IdEmpresa = requisicao.IdEmpresa,
                IdLote    = requisicao.IdLote,
                IdProduto = requisicao.IdProduto
            };

            ValidarLoteProdutoAjuste(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.Where(w => w.IdEnderecoArmazenagem != requisicao.IdEnderecoArmazenagem).Sum(s => s.Quantidade);

            if ((totalInstalado + requisicao.Quantidade) > saldoLote)
            {
                throw new BusinessException("Quantidade maior que o saldo do produto no lote.");
            }

            EnderecoArmazenagem enderecoArmazenagem = _unitOfWork.EnderecoArmazenagemRepository.GetById(requisicao.IdEnderecoArmazenagem);
            Produto             produto             = _unitOfWork.ProdutoRepository.GetById(requisicao.IdProduto);
            decimal             pesoInstalacao      = produto.PesoLiquido / produto.MultiploVenda * requisicao.Quantidade;

            ValidarPeso(enderecoArmazenagem, pesoInstalacao);
        }