public ContaPagarParcela Get(int id)
        {
            var command = CreateCommand("SELECT * FROM public.ContaPagarParcela WHERE idContaPagarParcela = @id");

            command.Parameters.AddWithValue("@id", id);
            ContaPagarParcela conta = null;

            using (var reader = command.ExecuteReader())
            {
                reader.Read();
                if (reader.HasRows)
                {
                    conta = new ContaPagarParcela
                    {
                        Id             = Convert.ToInt32(reader["idContaPagarParcela"]),
                        dataVencimento = Convert.ToDateTime(reader["dataVencimento"]),
                        valorParcela   = Convert.ToDecimal(reader["valorParcela"]),
                        ajuste         = Convert.ToDecimal(reader["ajuste"]),
                        numParcela     = Convert.ToInt32(reader["numParcela"]),
                        idContaPagar   = Convert.ToInt32(reader["fk_IdContaPagar"])
                    };
                }
                else
                {
                    return(null);
                }
            }
            conta.pagamentos = (List <ContaPagarParcelaPagamento>) new ContaPagarParcelaPagamentoRepositorio(this._context, this._transaction).GetByContaPagarParcela(conta.Id);
            return(conta);
        }
        public void Create(ContaPagarParcela contPgParc)
        {
            var query   = "INSERT INTO public.ContaPagarParcela(dataVencimento, valorParcela, ajuste, numParcela, fk_IdContaPagar) VALUES (@dataVencimento, @valorParcela, @ajuste, @numParcela, @fk_IdContaPagar)";
            var command = CreateCommand(query);

            command.Parameters.AddWithValue("@dataVencimento", contPgParc.dataVencimento);
            command.Parameters.AddWithValue("@valorParcela", contPgParc.valorParcela);
            command.Parameters.AddWithValue("@ajuste", contPgParc.ajuste);
            command.Parameters.AddWithValue("@numParcela", contPgParc.numParcela);
            command.Parameters.AddWithValue("@fk_IdContaPagar", contPgParc.idContaPagar);

            command.ExecuteNonQuery();

            query   = "select currval('contapagarparcela_idcontapagarparcela_seq') as newId";
            command = CreateCommand(query);

            using (var reader = command.ExecuteReader())
            {
                reader.Read();
                if (reader.HasRows)
                {
                    contPgParc.Id = Convert.ToInt32(reader["newId"]);
                }
            }
        }
 public void Update(ContaPagarParcela contPgParc)
 {
     using (var context = _unitOfWork.Create())
     {
         context.Repositorios.ContaPagarParcelaRepositorio.Update(contPgParc);
         context.SaveChanges();
     }
 }
Example #4
0
        public IActionResult CadastrarContaParcela([FromBody] ContaPagarParcela contParc)
        {
            if (contParc == null)
            {
                return(BadRequest());
            }

            _contPgParcService.Create(contParc);

            return(CreatedAtRoute("GetContaParcela", new { id = contParc.Id }, contParc));
        }
        public void Update(ContaPagarParcela contPgParc)
        {
            var query = "UPDATE public.ContaPagarParcela SET dataVencimento = @dataVencimento, valorParcela = @valorParcela, " +
                        "numParcela = @numParcela, ajuste = @ajuste, fk_IdContaPagar = @fk_IdContaPagar WHERE idContaPagarParcela = @id";
            var command = CreateCommand(query);

            command.Parameters.AddWithValue("@dataVencimento", contPgParc.dataVencimento);
            command.Parameters.AddWithValue("@valorParcela", contPgParc.valorParcela);
            command.Parameters.AddWithValue("@numParcela", contPgParc.numParcela);
            command.Parameters.AddWithValue("@ajuste", contPgParc.ajuste);
            command.Parameters.AddWithValue("@fk_IdContaPagar", contPgParc.idContaPagar);
            command.Parameters.AddWithValue("@id", contPgParc.Id);

            command.ExecuteNonQuery();
        }
Example #6
0
        public IActionResult EditarContaParcela(int id, [FromBody] ContaPagarParcela contParc)
        {
            _contPgParcService.Update(contParc);

            return(new NoContentResult());
        }
Example #7
0
        public void GerarParcelas(ContaPagar contaPagar)
        {
            if (contaPagar.valorTotal == 0 && contaPagar.valorMensal == 0)
            {
                throw new AppError("É necessário informar o Valor Total ou Mensal para a Conta");
            }
            else if (contaPagar.valorTotal > 0 && contaPagar.valorMensal > 0)
            {
                throw new AppError("Não é possível informar o Valor Total e Mensal para a Conta");
            }
            else if (contaPagar.mesInicial <= 0 || contaPagar.mesInicial > 12)
            {
                throw new AppError("O Mês Inicial da Conta deve ser informado");
            }
            else if (contaPagar.numParcelas <= 0)
            {
                throw new AppError("O número de parcelas da Conta deve ser informado");
            }

            List <ContaPagarParcela> parcelas = new List <ContaPagarParcela>();
            var ano      = (contaPagar.mesInicial < DateTime.Now.Month && (DateTime.Now.Month == 12 && (contaPagar.mesInicial == 1 || contaPagar.mesInicial == 2))) ? DateTime.Now.Year + 1 : DateTime.Now.Year;
            var diasParc = contaPagar.diasPagamento.Split(',');

            if (contaPagar.valorMensal > 0 && !string.IsNullOrEmpty(contaPagar.diasPagamento))
            {
                if (diasParc.Length != contaPagar.numParcelas)
                {
                    throw new AppError("Dias de Pagamento não conferem com o número de parcelas");
                }
            }

            var parcelasConta = new ContaPagarParcelaRepositorio(this._context, this._transaction).GetByContaPagar(contaPagar.Id).ToList();

            if (parcelasConta.Count > 0)
            {
                foreach (var parc in parcelasConta)
                {
                    new ContaPagarParcelaRepositorio(this._context, this._transaction).Remove(parc.Id);
                }
            }

            for (int i = 0; i < contaPagar.numParcelas; i++)
            {
                ContaPagarParcela contaPagarParcela = new ContaPagarParcela();
                decimal           valorParc         = 0;
                DateTime          data = new DateTime();
                if (contaPagar.valorTotal > 0)
                {
                    data      = Convert.ToDateTime(contaPagar.diaInicial + "/" + contaPagar.mesInicial + "/" + ano.ToString()).AddMonths(i);
                    valorParc = contaPagar.valorTotal / contaPagar.numParcelas;
                    valorParc = Math.Round(valorParc, 2);
                }
                else if (contaPagar.valorMensal > 0 && !string.IsNullOrEmpty(contaPagar.diasPagamento))
                {
                    valorParc = contaPagar.valorMensal / contaPagar.numParcelas;
                    valorParc = Math.Round(valorParc, 2);
                    data      = Convert.ToDateTime(diasParc[i].ToString().Trim() + "/" + contaPagar.mesInicial + "/" + ano.ToString());
                }
                else if (contaPagar.valorMensal > 0)
                {
                    valorParc = contaPagar.valorMensal;
                    data      = Convert.ToDateTime(contaPagar.diaInicial + "/" + contaPagar.mesInicial + "/" + ano.ToString()).AddMonths(i);
                }

                contaPagarParcela.idContaPagar   = contaPagar.Id;
                contaPagarParcela.numParcela     = i + 1;
                contaPagarParcela.valorParcela   = valorParc;
                contaPagarParcela.dataVencimento = data;
                parcelas.Add(contaPagarParcela);
            }

            var     soma = parcelas.Sum(p => p.valorParcela);
            decimal dif  = 0;

            if (contaPagar.valorTotal > 0)
            {
                dif = contaPagar.valorTotal - soma;
            }
            else if (contaPagar.valorMensal > 0)
            {
                dif = contaPagar.valorMensal - soma;
            }

            if (dif > 0)
            {
                parcelas.Last().valorParcela = parcelas.Last().valorParcela + dif;
            }

            foreach (var parc in parcelas)
            {
                new ContaPagarParcelaRepositorio(this._context, this._transaction).Create(parc);
            }
        }