public IHttpActionResult AtualizarMovimentacao(string token, string id, string tipo, string quantidade, string valorUnitarioCusto)
        {
            try
            {
                //Valida se o usuário do token de sessão informado possui autorização necessária para utilizar esta funcionalidade
                List <Usuario.Perfis> Perfis = new List <Usuario.Perfis>()
                {
                    Usuario.Perfis.AdministradorGeral, Usuario.Perfis.AdministradorEstoque
                };
                ValidarAutorizacao(token, Perfis);

                //Ajusta os parâmetros informados
                long idAtualizacao = _utilitariosService.ObterValorLong(id, "O código do produto informado não é válido!");
                Movimentacao.TiposMovimentacao tipoAtualizacao = _utilitariosService.ObterValorEnum <Movimentacao.TiposMovimentacao>(tipo, "O tipo informado não é válido!");
                decimal quantidadeAtualizacao         = _utilitariosService.ObterValorDecimal(quantidade, "A quantidade informada não é válida!");
                decimal valorUnitarioCustoAtualizacao = _utilitariosService.ObterValorDecimal(valorUnitarioCusto, "O valor unitário de custo informado não é válido!");

                //Executa a ação
                _produtoService.AtualizarMovimentacao(idAtualizacao, tipoAtualizacao, quantidadeAtualizacao, valorUnitarioCustoAtualizacao);

                return(Json(new { Erro = false, Mensagem = "A atualização dos dados foi processada com sucesso!" }));
            }
            catch (Exception ex)
            {
                return(Json(new { Erro = true, Mensagem = _utilitariosService.ObterMensagemErroDetalhada(ex), TipoException = ex.GetType().ToString(), StackTrace = ex.StackTrace }));
            }
        }
Beispiel #2
0
        public List <Movimentacao> ObterTodas(Movimentacao.TiposMovimentacao tipo, DateTime dataInicial, DateTime dataFinal)
        {
            try
            {
                if (dataFinal < dataInicial)
                {
                    throw new Exception("A data final deve ser maior do que a data inicial!");
                }

                return(DbContext.Movimentacoes.Where(w => w.TipoMovimentacao == tipo &
                                                     w.Data >= dataInicial &
                                                     w.Data <= dataFinal).OrderBy(o => o.Data).ToList());
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        public void AtualizarMovimentacao(long id, Movimentacao.TiposMovimentacao tipo, decimal quantidade, decimal?valorUnitarioCusto)
        {
            try
            {
                Produto produtoExistente = Obter(id, PorId.PorId);
                if (produtoExistente == null)
                {
                    return;
                }

                produtoExistente.OperacaoCRUD = BaseEntity.OperacoesCRUD.Update;

                if (tipo == Movimentacao.TiposMovimentacao.Entrada)
                {
                    produtoExistente.QtdEstoque += quantidade;
                    if (valorUnitarioCusto != null)
                    {
                        produtoExistente.ValorUnitarioCusto = valorUnitarioCusto.Value;
                    }
                }
                else
                {
                    produtoExistente.QtdEstoque -= quantidade;
                }
                produtoExistente.DataUltimaMovimentacao = DateTime.Now;

                produtoExistente.AjustarPropriedades();
                if (produtoExistente.PossuiErrosValidacao())
                {
                    throw new Exception(produtoExistente.ObterMensagensErrosValidacao());
                }

                DbContext.Produtos.Attach(produtoExistente);
                DbContext.Entry(produtoExistente).State = EntityState.Modified;
                DbContext.SaveChanges();
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }