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."); } }
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); }