Beispiel #1
0
        public void ValidarLoteProdutoAjuste(ValidarLoteProdutoAjusteRequisicao requisicao)
        {
            var validarLoteRequisicao = new ValidarLoteRequisicao
            {
                IdLote    = requisicao.IdLote,
                IdEmpresa = requisicao.IdEmpresa
            };

            ValidarLote(validarLoteRequisicao);

            if (requisicao.IdProduto <= 0)
            {
                throw new BusinessException("O produto deve ser informado.");
            }

            Produto produto = _unitOfWork.ProdutoRepository.GetById(requisicao.IdProduto);

            if (produto == null)
            {
                throw new BusinessException("O produto não foi encontrado.");
            }

            LoteProduto loteProduto = _unitOfWork.LoteProdutoRepository.PesquisarProdutoNoLote(requisicao.IdEmpresa, requisicao.IdLote, requisicao.IdProduto);

            if (loteProduto == null)
            {
                throw new BusinessException("O produto não pertence ao lote.");
            }

            if (loteProduto.Saldo == 0)
            {
                throw new BusinessException("Saldo do produto no lote insuficiente.");
            }
        }
Beispiel #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);
        }