public void Put(LancamentoDto lancamento)
        {
            _lancamentoRepository.OpenTransaction();

            // caso seja conta conjunta aprovada
            AtualizaCategoriasContaConjunta(lancamento.IdConta, lancamento.IdCategoria);

            var conta = _contaFinanceiraRepository.Get(lancamento.IdConta);
            var msg   = $"Editou o lançamento ({lancamento.Descricao}) da conta {conta.Nome.ToUpper()}";

            if (lancamento.IdUsuarioUltimaAlteracao == null)
            {
                _notification.Add("Não foi passado o usuário que esta realizando a edição no lançamento");
                return;
            }

            // Cadastra notificações para todos os usuarios (caso seja conta conjunta)
            _notificacaoService.Post((int)lancamento.IdUsuarioUltimaAlteracao, lancamento.IdConta, 5, msg); // 5: Edição de lançamento em conta conjunta

            if (!lancamento.IdCompromisso.HasValue || lancamento.IndicadorAcaoCompromisso == "S")
            {
                _lancamentoRepository.Put(lancamento);
                _lancamentoRepository.CommitTransaction();
                return;
            }

            if (string.IsNullOrEmpty(lancamento.IndicadorAcaoCompromisso))
            {
                _notification.Add("Não foi passado a forma que serão alterados os lançamentos fixo/parcelado que estão vínculados");
                return;
            }

            if (!new List <string> {
                "P", "T"
            }.Contains(lancamento.IndicadorAcaoCompromisso))
            {
                _notification.Add("Foi passado uma forma de alteração de lançamentos fixo/parcelado inválida, ");
                return;
            }

            // busca todos lançamentos vínvulados posteriores ao atual;
            var lancamentos            = _compromissoRepository.GetCompromissoLancamentos((int)lancamento.IdCompromisso).ToList();
            var dataAnteriorLancamento = lancamentos.First(x => x.IdLancamento == lancamento.Id).DataLancamento;
            var diferenciaDias         = (lancamento.Data - dataAnteriorLancamento).TotalDays;

            // caso o IndicadorAcaoCompromisso == "P" altera somente este e os próximos lançamentos vínculados
            if (lancamento.IndicadorAcaoCompromisso == "P")
            {
                lancamentos = lancamentos.Where(x => x.IdLancamento >= lancamento.Id).ToList();
            }

            foreach (var lanc in lancamentos)
            {
                lancamento.Data = lanc.DataLancamento.AddDays(diferenciaDias);
                lancamento.Id   = lanc.IdLancamento;
                _lancamentoRepository.Put(lancamento);
            }

            _lancamentoRepository.CommitTransaction();
        }
        public ActionResult Post(LancamentoDto lancamento)
        {
            lancamento.IdUsuarioCadastro = UsuarioLogado.Id;
            var response = _lancamentoAppService.Post(lancamento);

            return(response.IsSuccessStatusCode ? Ok("Lançamento cadastrado com sucesso") : Error(response));
        }
        public ActionResult Put(LancamentoDto lancamento)
        {
            lancamento.IdUsuarioUltimaAlteracao = UsuarioLogado.Id;
            var response = _lancamentoAppService.Put(lancamento);

            return(response.IsSuccessStatusCode ? Ok("Lançamento editado com sucesso") : Error(response));
        }
        public ActionResult PutIndicadorPagoRecebido(LancamentoDto lancamento)
        {
            lancamento.IdUsuarioUltimaAlteracao = UsuarioLogado.Id;
            var response = _lancamentoAppService.PutIndicadorPagoRecebido(lancamento);

            return(response.IsSuccessStatusCode ? Ok() : Error(response));
        }
Exemple #5
0
        public async Task DeveEnviarLacamentoParaContaCorrente()
        {
            const string recurso    = "/api/lacamentos";
            var          lancamento = new LancamentoDto()
            {
                IdCliente    = Guid.NewGuid(),
                ContaDestino = "050058454",
                ContaOrigem  = "050050527",
                Data         = DateTime.Now,
                Tipo         = 1,
                Valor        = DateTime.Now.Minute + 500
            };
            var conteudo  = new StringContent(JsonConvert.SerializeObject(lancamento), Encoding.UTF8, "application/json");
            var resultado = await _contextoDeTeste.Client.PostAsync(recurso, conteudo);

            var lancamento2 = new LancamentoDto()
            {
                IdCliente    = Guid.NewGuid(),
                ContaDestino = "050058454",
                ContaOrigem  = "050050527",
                Data         = DateTime.Now,
                Tipo         = 1,
                Valor        = DateTime.Now.Minute + 500
            };
            var conteudo2  = new StringContent(JsonConvert.SerializeObject(lancamento2), Encoding.UTF8, "application/json");
            var resultado2 = await _contextoDeTeste.Client.PostAsync(recurso, conteudo2);


            resultado.StatusCode.Should().Be(HttpStatusCode.OK);
        }
Exemple #6
0
        public void NaoDeveMapearLacamentoQuandoDTOForNulo()
        {
            LancamentoDto lacamentoDto    = null;
            var           lacamentoObtido = Extrato.Aplicacao.Mapeadores.MapeadorDeLancamento.MapearParaEntidade(lacamentoDto);

            Assert.Null(lacamentoObtido);
        }
 public void PutIndicadorPagoRecebido(LancamentoDto lancamento)
 {
     ExecuteProcedure(Procedures.SP_UpdLancamentoIndicadorPagoRecebido);
     AddParameter("IdLancamento", lancamento.Id);
     AddParameter("IndicadorPagoRecebido", lancamento.IndicadorPagoRecebido);
     AddParameter("IdUsuario", lancamento.IdUsuarioUltimaAlteracao);
     ExecuteNonQuery();
 }
        public void RealizaLancamento()
        {
            var Lista  = new List <LancamentoDto>();
            var dados1 = new LancamentoDto(0, 10, DateTime.Now, new TipoLancamentoDto(), new ContaDto(), new ContaDto());
            var dados2 = new LancamentoDto(0, 10, DateTime.Now, new TipoLancamentoDto(), new ContaDto(), new ContaDto());

            Lista.Add(dados1); Lista.Add(dados2);

            var Json = JsonConvert.SerializeObject(Lista);
        }
Exemple #9
0
        public IHttpActionResult PutIndicadorPagoRecebido(LancamentoDto lancamento)
        {
            _lancamentoRepository.PutIndicadorPagoRecebido(lancamento);
            if (!_notification.Any)
            {
                return(Ok());
            }

            return(Content(HttpStatusCode.BadRequest, _notification.Get));
        }
Exemple #10
0
        public IHttpActionResult Put(LancamentoDto lancamento)
        {
            _lancamentoService.Put(lancamento);
            if (!_notification.Any)
            {
                return(Ok());
            }

            return(Content(HttpStatusCode.BadRequest, _notification.Get));
        }
Exemple #11
0
        public static Lancamento Mapear(LancamentoDto lancamentoDto)
        {
            var descricao = lancamentoDto.Tipo == 1 ? "TRANSFERENCIA ENTRE CONTAS" : "TRANSFERENCIA DOC/TED";

            return(new Lancamento(
                       lancamentoDto.IdCliente,
                       lancamentoDto.ContaOrigem,
                       lancamentoDto.ContaDestino,
                       lancamentoDto.Tipo,
                       descricao,
                       lancamentoDto.Valor));
        }
 public int Post(LancamentoDto lancamento)
 {
     ExecuteProcedure(Procedures.SP_InsLancamento);
     AddParameter("IndicadorReceitaDespesa", lancamento.IndicadorReceitaDespesa);
     AddParameter("Descricao", lancamento.Descricao);
     AddParameter("Valor", lancamento.Valor);
     AddParameter("DataLancamento", lancamento.Data);
     AddParameter("IdConta", lancamento.IdConta);
     AddParameter("IdCategoria", lancamento.IdCategoria);
     AddParameter("IndicadorPagoRecebido", lancamento.IndicadorPagoRecebido);
     AddParameter("IdUsuario", lancamento.IdUsuarioCadastro);
     return(ExecuteNonQueryWithReturn());
 }
 public void Put(LancamentoDto lancamento)
 {
     ExecuteProcedure(Procedures.SP_UpdLancamento);
     AddParameter("IndicadorReceitaDespesa", lancamento.IndicadorReceitaDespesa);
     AddParameter("Descricao", lancamento.Descricao);
     AddParameter("Valor", lancamento.Valor);
     AddParameter("DataLancamento", lancamento.Data);
     AddParameter("IdConta", lancamento.IdConta);
     AddParameter("IdCategoria", lancamento.IdCategoria);
     AddParameter("IndicadorPagoRecebido", lancamento.IndicadorPagoRecebido);
     AddParameter("IdUsuario", lancamento.IdUsuarioUltimaAlteracao);
     AddParameter("IdLancamento", lancamento.Id);
     ExecuteNonQuery();
 }
Exemple #14
0
        public LancamentoTestes()
        {
            Id          = Guid.NewGuid();
            ContaId     = Guid.NewGuid();
            Description = "Lançamento de crédito";
            Value       = Faker.RandomNumber.Next(1, 1000);

            for (int i = 0; i < 10; i++)
            {
                var dto = new LancamentoDto()
                {
                    Id          = Guid.NewGuid(),
                    ContaId     = Guid.NewGuid(),
                    Description = "Lançamento de crédito",
                    Value       = Faker.RandomNumber.Next(1, 1000)
                };
                listaLancamentoDto.Add(dto);
            }

            lancamentoDto = new LancamentoDto
            {
                Id          = Id,
                ContaId     = ContaId,
                Description = Description,
                Value       = Value
            };

            lancamentoDtoCreate = new LancamentoDtoCreate
            {
                ContaId     = ContaId,
                Description = Description,
                Value       = Value
            };

            lancamentoDtoCreateResult = new LancamentoDtoCreateResult
            {
                Id          = Id,
                ContaId     = ContaId,
                Description = Description,
                Value       = Value,
                CreateAt    = DateTime.UtcNow
            };
        }
Exemple #15
0
        public static Lancamento MapearParaEntidade(LancamentoDto lacamentoDto)
        {
            if (lacamentoDto == null)
            {
                return(null);
            }

            var lacamento = new Lancamento()
            {
                ContaDestino = lacamentoDto.ContaDestino,
                ContaOrigem  = lacamentoDto.ContaOrigem,
                Data         = lacamentoDto.Data,
                Descricao    = lacamentoDto.Descricao,
                Tipo         = lacamentoDto.Tipo,
                Valor        = lacamentoDto.Valor
            };

            return(lacamento);
        }
Exemple #16
0
 public LancamentoViewModel(LancamentoDto model)
 {
     Id = model.Id;
     IndicadorReceitaDespesa = model.IndicadorReceitaDespesa;
     Descricao                  = model.Descricao;
     Valor                      = model.Valor;
     Data                       = model.Data;
     IdConta                    = model.IdConta;
     IdContaDestino             = model.IdContaDestino;
     NomeContaOrigem            = model.NomeContaOrigem;
     NomeContaDestino           = model.NomeContaDestino;
     IdCategoria                = model.IdCategoria;
     NomeCategoria              = model.NomeCategoria;
     CorCategoria               = model.CorCategoria;
     IndicadorPagoRecebido      = model.IndicadorPagoRecebido;
     IdCompromisso              = model.IdCompromisso;
     IdUsuarioCadastro          = model.IdUsuarioCadastro;
     NomeUsuarioCadastro        = model.NomeUsuarioCadastro;
     DataCadastro               = model.DataCadastro;
     IdUsuarioUltimaAlteracao   = model.IdUsuarioUltimaAlteracao;
     NomeUsuarioUltimaAlteracao = model.NomeUsuarioUltimaAlteracao;
     DataUltimaAlteracao        = model.DataUltimaAlteracao;
 }
Exemple #17
0
        public void DeveMapearLancamento()
        {
            var dataLacamento = DateTime.Now;
            var lacamentoDto  = new LancamentoDto
            {
                ContaOrigem  = "001234",
                ContaDestino = "002256",
                Data         = dataLacamento,
                Descricao    = "Tranferência entre contas",
                Tipo         = TipoDeLancamento.TRANSFERENCIA
            };
            var lacamentoEsperado = new Lancamento
            {
                ContaOrigem  = "001234",
                ContaDestino = "002256",
                Data         = dataLacamento,
                Descricao    = "Tranferência entre contas",
                Tipo         = TipoDeLancamento.TRANSFERENCIA
            }.ToExpectedObject();
            var lacamentoObtido = Extrato.Aplicacao.Mapeadores.MapeadorDeLancamento.MapearParaEntidade(lacamentoDto);

            lacamentoEsperado.ShouldMatch(lacamentoObtido);
        }
Exemple #18
0
 public HttpResponseMessage Put(LancamentoDto lancamento)
 {
     return(PutRequest("Put", lancamento));
 }
Exemple #19
0
 public async Task Post([FromBody] LancamentoDto lancamento)
 {
     await _envioDeLacamento.Enviar(lancamento);
 }
        public void Post(LancamentoDto lancamento)
        {
            _lancamentoRepository.OpenTransaction();

            // caso seja conta conjunta aprovada
            AtualizaCategoriasContaConjunta(lancamento.IdConta, lancamento.IdCategoria);

            var conta = _contaFinanceiraRepository.Get(lancamento.IdConta);
            var msg   = $"Cadastrou uma nova {(lancamento.IndicadorReceitaDespesa == "R" ? "receita" : "despesa")} ({lancamento.Descricao}) na conta {conta.Nome.ToUpper()}";

            // Cadastra notificações para todos os usuarios (caso seja conta conjunta)
            _notificacaoService.Post(lancamento.IdUsuarioCadastro, lancamento.IdConta, 4, msg); // 4: Cadastro de lançamento em conta conjunta

            if (string.IsNullOrEmpty(lancamento.IndicadorFixoParcelado))
            {
                _lancamentoRepository.Post(lancamento);
                _lancamentoRepository.CommitTransaction();
                return;
            }

            // get periodos

            if (!lancamento.IdPeriodo.HasValue)
            {
                _notification.Add("Favor informar o periodo para lançamentos fixo/parcelado");
                return;
            }

            var periodo = _lancamentoRepository.GetPeriodo((byte)lancamento.IdPeriodo);

            if (periodo == null)
            {
                _notification.Add("Os dados do periodo informado não foram encontrados");
                return;
            }

            var idCompromisso = _compromissoRepository.Post(new CompromissoDto
            {
                Descricao             = lancamento.Descricao,
                IdPeriodo             = (byte)lancamento.IdPeriodo,
                DataInicio            = lancamento.Data,
                TotalParcelasOriginal = lancamento.TotalParcelasOriginal,
                IdUsuarioCadastro     = lancamento.IdUsuarioCadastro,
                DataCadastro          = DateTime.Now,
                IdConta = lancamento.IdConta
            });

            if (_notification.Any)
            {
                return;
            }

            var cont = 1;

            if (lancamento.IndicadorFixoParcelado == "F")
            {
                var dataLimite = DateTime.Today.AddYears(2);
                while (lancamento.Data <= dataLimite)
                {
                    var idLancamento = _lancamentoRepository.Post(lancamento);
                    _compromissoRepository.PostCompromissoLancamento(idCompromisso, idLancamento, cont++);
                    lancamento.Data = AddDate(lancamento.Data, periodo);
                }

                _lancamentoRepository.CommitTransaction();
                return;
            }

            // lançamentos parcelados

            if (!lancamento.TotalParcelasOriginal.HasValue || lancamento.TotalParcelasOriginal < 2)
            {
                _notification.Add("Favor informar mais que 1(uma) parcela");
                return;
            }

            for (; cont <= lancamento.TotalParcelasOriginal; cont++)
            {
                var idLancamento = _lancamentoRepository.Post(lancamento);
                _compromissoRepository.PostCompromissoLancamento(idCompromisso, idLancamento, cont);
                lancamento.Data = AddDate(lancamento.Data, periodo);
            }

            _lancamentoRepository.CommitTransaction();
        }
Exemple #21
0
 public HttpResponseMessage PutIndicadorPagoRecebido(LancamentoDto lancamento)
 {
     return(PutRequest("PutIndicadorPagoRecebido", lancamento));
 }
Exemple #22
0
 public async Task Enviar(LancamentoDto lancamentoDto)
 {
     var lancamento = MapeadorDeLancamento.Mapear(lancamentoDto);
     await _mensageria.EnviarMensagem(lancamento);
 }