public async Task <IActionResult> gerarParcelas(ParcelasDTO parcela) { try { var result = await _service.gerarParcelas(parcela); return(Ok(result)); } catch (Exception ex) { return(UnprocessableEntity(new { ex.Message, Status = 422 })); } }
public async Task <List <ParcelasCompra> > gerarParcelas(ParcelasDTO parcela) { CondicoesPagamentoDAO condicaoDao = new CondicoesPagamentoDAO(); CondicoesPagamento condicao = await condicaoDao.BuscarPorID(parcela.codigoCondicaoPagamento); List <ParcelasCompra> listParcelas = new List <ParcelasCompra>(); foreach (var p in condicao.parcelas) { var itemParcela = new ParcelasCompra { numeroParcela = p.numeroParcela, dtEmissao = DateTime.Now, dtVencimento = parcela.dtEmissao.AddDays((double)p.numeroDias), codigoFormaPagamento = p.codigoFormaPagamento, descricaoForma = p.formaPagamento.descricao, valorParcela = decimal.Round(((p.porcentagem / 100) * parcela.valorTotal), 2) }; listParcelas.Add(itemParcela); } var totalParcelas = listParcelas.Sum(k => k.valorParcela); if (totalParcelas != parcela.valorTotal) { if (totalParcelas < parcela.valorTotal) { var dif = parcela.valorTotal - totalParcelas; var list = listParcelas.OrderBy(u => u.numeroParcela); list.Last().valorParcela = list.Last().valorParcela + dif; listParcelas = list.ToList(); } if (totalParcelas > parcela.valorTotal) { var dif = totalParcelas - parcela.valorTotal; var list = listParcelas.OrderBy(u => u.numeroParcela); list.Last().valorParcela = list.Last().valorParcela - dif; listParcelas = list.ToList(); } } return(listParcelas); }