public async Task FinalizarConferenciaEnderecoRequisicao(FinalizarConferenciaEnderecoRequisicao requisicao, long idEmpresa, string idUsuarioExecucao) { using (var transacao = _unitOfWork.CreateTransactionScope()) { LoteProdutoEndereco loteProdutoEndereco = _unitOfWork.LoteProdutoEnderecoRepository.PesquisarPorEndereco(requisicao.IdEnderecoArmazenagem); if (loteProdutoEndereco == null) { throw new BusinessException("O produto não está instalado neste endereço."); } var qtdAnterior = loteProdutoEndereco.Quantidade; if (requisicao.QuantidadeFinal == 0) { await _armazenagemService.RetirarVolumeEndereco(requisicao.IdEnderecoArmazenagem, loteProdutoEndereco.IdLote.Value, requisicao.IdProduto, idEmpresa, idUsuarioExecucao); } else { await _armazenagemService.AjustarVolumeLote(new AjustarVolumeLoteRequisicao { IdEmpresa = idEmpresa, IdEnderecoArmazenagem = requisicao.IdEnderecoArmazenagem, IdLote = loteProdutoEndereco.IdLote.Value, IdProduto = requisicao.IdProduto, IdUsuarioAjuste = idUsuarioExecucao, Quantidade = requisicao.QuantidadeFinal }); await _unitOfWork.SaveChangesAsync(); } var atividadeEstoque = _unitOfWork.AtividadeEstoqueRepository.GetById(requisicao.IdAtividadeEstoque); atividadeEstoque.QuantidadeInicial = qtdAnterior; atividadeEstoque.QuantidadeFinal = requisicao.QuantidadeFinal; atividadeEstoque.IdUsuarioExecucao = idUsuarioExecucao; atividadeEstoque.DataExecucao = DateTime.Now; atividadeEstoque.Finalizado = true; await _unitOfWork.SaveChangesAsync(); _coletorHistoricoService.GravarHistoricoColetor(new GravarHistoricoColetorRequisicao { IdColetorAplicacao = ColetorAplicacaoEnum.Armazenagem, IdColetorHistoricoTipo = ColetorHistoricoTipoEnum.ConferirEndereco, Descricao = $"Conferiu a atividade do endereço {atividadeEstoque.EnderecoArmazenagem.Codigo} do produto {atividadeEstoque.Produto.Referencia}," + $" a quantidade anterior era de {atividadeEstoque.QuantidadeInicial} e quantidade conferida foi {atividadeEstoque.QuantidadeFinal}.", IdEmpresa = idEmpresa, IdUsuario = idUsuarioExecucao }); await _unitOfWork.SaveChangesAsync(); transacao.Complete(); } }
public async Task <IHttpActionResult> FinalizarConferenciaEndereco(FinalizarConferenciaEnderecoRequisicao requisicao) { if (!ModelState.IsValid) { return(ApiBadRequest(ModelState)); } try { await _atividadeEstoqueService.FinalizarConferenciaEnderecoRequisicao(requisicao, IdEmpresa, IdUsuario); return(ApiOk()); } catch (BusinessException ex) { return(ApiBadRequest(ex.Message)); } }