示例#1
0
        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();
            }
        }
示例#2
0
        public IHttpActionResult InstalarLoteVolume(LoteVolumeRequisicao requisicao)
        {
            try
            {
                _loteService.InstalarLoteVolume(requisicao, IdEmpresa, IdUsuario);

                return(ApiOk());
            }
            catch (BusinessException exception)
            {
                return(ApiBadRequest(exception.Message));
            }
        }
示例#3
0
        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();
            }
        }