public void RetirarLoteVolume(LoteVolumeRequisicao requisicao, long idEmpresa, string idUsuario) { ValidarLoteVolume(idEmpresa, requisicao.NroVolume, requisicao.IdLote); var loteVolume = _uow.LoteVolumeRepository.Obter(requisicao.IdLote, requisicao.NroVolume); if (loteVolume == null) { throw new BusinessException("Volume não encontrado."); } if (!loteVolume.IdEnderecoArmazenagem.HasValue) { throw new BusinessException("Volume já está desinstalado."); } else if (loteVolume.IdEnderecoArmazenagem != requisicao.IdEnderecoArmazenagem) { throw new BusinessException("O local do volume e o local informado estão divergentes."); } using (var transacao = _uow.CreateTransactionScope()) { _uow.ColetorHistoricoTipoRepository.GravarHistorico(new ColetorHistorico { IdColetorAplicacao = ColetorAplicacaoEnum.Recebimento, IdColetorHistoricoTipo = ColetorHistoricoTipoEnum.InstalarVolume, Descricao = $"Retirou o volume {requisicao.NroVolume} do lote {requisicao.IdLote} no endereço {loteVolume.EnderecoArmazenagem.Codigo}.", IdEmpresa = idEmpresa, IdUsuario = idUsuario }); loteVolume.IdEnderecoArmazenagem = null; loteVolume.DataInstalacao = null; loteVolume.IdUsuarioInstalacao = null; _uow.LoteVolumeRepository.Update(loteVolume); _uow.SaveChanges(); _uow.LoteMovimentacaoRepository.Add(new LoteMovimentacao { IdEmpresa = idEmpresa, IdLote = loteVolume.IdLote, IdEnderecoArmazenagem = requisicao.IdEnderecoArmazenagem, IdUsuarioMovimentacao = idUsuario, Quantidade = 1, IdLoteMovimentacaoTipo = LoteMovimentacaoTipoEnum.Saida, DataHora = DateTime.Now, NroVolume = requisicao.NroVolume }); _uow.SaveChanges(); transacao.Complete(); } }
public IHttpActionResult InstalarLoteVolume(LoteVolumeRequisicao requisicao) { try { _loteService.InstalarLoteVolume(requisicao, IdEmpresa, IdUsuario); return(ApiOk()); } catch (BusinessException exception) { return(ApiBadRequest(exception.Message)); } }
public void InstalarLoteVolume(LoteVolumeRequisicao requisicao, long idEmpresa, string idUsuario) { ValidarEnderecoInstalacaoLoteVolume(requisicao.IdEnderecoArmazenagem, idEmpresa); LoteVolume loteVolume = ValidarLoteVolume(idEmpresa, requisicao.NroVolume, requisicao.IdLote); if (loteVolume.IdEnderecoArmazenagem.HasValue) { throw new BusinessException("Volume já está instalado em outro local."); } using (var transacao = _uow.CreateTransactionScope()) { loteVolume.IdEnderecoArmazenagem = requisicao.IdEnderecoArmazenagem; loteVolume.DataInstalacao = DateTime.Now; loteVolume.IdUsuarioInstalacao = idUsuario; _uow.LoteVolumeRepository.Update(loteVolume); _uow.SaveChanges(); _uow.LoteMovimentacaoRepository.Add(new LoteMovimentacao { IdEmpresa = idEmpresa, IdLote = loteVolume.IdLote, IdEnderecoArmazenagem = requisicao.IdEnderecoArmazenagem, IdUsuarioMovimentacao = idUsuario, Quantidade = 1, IdLoteMovimentacaoTipo = LoteMovimentacaoTipoEnum.Entrada, DataHora = DateTime.Now, NroVolume = requisicao.NroVolume }); _uow.ColetorHistoricoTipoRepository.GravarHistorico(new ColetorHistorico { IdColetorAplicacao = ColetorAplicacaoEnum.Recebimento, IdColetorHistoricoTipo = ColetorHistoricoTipoEnum.InstalarVolume, Descricao = $"Instalou o volume { requisicao.NroVolume} do lote {requisicao.IdLote} no endereço {loteVolume.EnderecoArmazenagem.Codigo}.", IdEmpresa = idEmpresa, IdUsuario = idUsuario }); _uow.SaveChanges(); transacao.Complete(); } }