public BalancoDia Conciliacao(List <LancamentoFinanceiro> lancamentos) { decimal totalCredito = 0; decimal totalDebito = 0; decimal total = 0; foreach (var item in lancamentos) { if (item.TipoLancamento.ToLower() == TipoLancamento.credito.ToString()) { totalCredito += Convert.ToDecimal(item.Valor); total += Convert.ToDecimal(item.Valor); } else if (item.TipoLancamento.ToLower() == TipoLancamento.debito.ToString()) { totalDebito += Convert.ToDecimal(item.Valor); total -= Convert.ToDecimal(item.Valor); } } BalancoDia balanco = new BalancoDia(); balanco.DataBalanco = Convert.ToDateTime(lancamentos[0].DataLancamento); balanco.ValorSaldo = total; balanco.ValorTotalCredito = totalCredito; balanco.ValorTotalDebito = totalDebito; return(balanco); }
public async Task <DefaultResponse <BalancoDia> > Post( [FromServices] DataContext context, [FromBody] BalancoDia dataBalanco) { try { Acoes_LancamentoFinanceiro acoes = new Acoes_LancamentoFinanceiro(); List <LancamentoFinanceiro> lancamentosDia = await context.LancamentosFinanceiros.Where(x => x.DataLancamento == dataBalanco.DataBalanco).ToListAsync(); var model = acoes.Conciliacao(lancamentosDia); context.BalancosDia.Add(model); await context.SaveChangesAsync(); acoes.AtualizarLancamentosAposBalanco(context, lancamentosDia, model.IdBalanco); return(new DefaultResponse <BalancoDia>() { success = true, message = $"Balanço do dia {dataBalanco.DataBalanco} efetuado com sucesso!", result = model }); } catch (Exception ex) { throw ex; } }
// GET: LancamentoFinanceiro public async Task <IActionResult> RelatorioMensal() { var balancoDia = new List <BalancoDia>(); using (var client = new HttpClient()) { using (var response = await client.GetAsync(URI + "?tipoRelatorio=M&dateTime=" + DateTime.Now.ToString("MM-yyyy"))) { if (response.IsSuccessStatusCode) { var ProdutoJsonString = await response.Content.ReadAsStringAsync(); balancoDia = JsonConvert.DeserializeObject <BalancoDia[]>(ProdutoJsonString).ToList(); } else { TempData["Erro"] = "Erro"; } } } //⦁ O relatório mensal de balanço deve demonstrar para cada dia do mês qual foi o total de //crédito e débito bem como o saldo em sua totalização mensal; var totalizacaoMensal = new BalancoDia(); //TotalCredito totalizacaoMensal.ValorTotalCredito = balancoDia.Sum(x => x.ValorTotalCredito); //TotalDebito totalizacaoMensal.ValorTotalDebito = balancoDia.Sum(x => x.ValorTotalDebito); //ValorSaldo totalizacaoMensal.ValorSaldo = balancoDia.Sum(x => x.ValorSaldo); // Indica que é a totalização mensal totalizacaoMensal.Totalizacao = true; balancoDia.Add(totalizacaoMensal); // URI = URI + id; return(View(balancoDia)); }
// GET: LancamentoFinanceiro public async Task <IActionResult> Index(string data) { var balancoDia = new List <BalancoDia>(); using (var client = new HttpClient()) { using (var response = await client.GetAsync(URI + "?tipoRelatorio=D&dateTime=" + DateTime.Now.ToString("dd-MM-yyyy"))) { if (response.IsSuccessStatusCode) { var ProdutoJsonString = await response.Content.ReadAsStringAsync(); balancoDia = JsonConvert.DeserializeObject <BalancoDia[]>(ProdutoJsonString).ToList(); } else { TempData["Erro"] = "Erro"; } } // ⦁ O balanço do dia deve contemplar todos os lançamentos de crédito e débito diário com o // cálculo de saldo; (CRÉDITO - DÉBITO) var totalizaDia = new BalancoDia(); //TotalCredito totalizaDia.ValorTotalCredito = balancoDia.Sum(x => x.ValorTotalCredito); //TotalDebito totalizaDia.ValorTotalDebito = balancoDia.Sum(x => x.ValorTotalDebito); //ValorSaldo totalizaDia.ValorSaldo = balancoDia.Sum(x => x.ValorSaldo); // Indica que é a totalização mensal totalizaDia.Totalizacao = true; balancoDia.Add(totalizaDia); } return(View(balancoDia)); }
public async Task <ActionResult <BalancoDia> > ObterPorData(string tipoRelatorio, string dateTime) { // dateTime = Convert.ToDateTime(dateTime).ToString("dd/MM/yyy"); var listBalancoDia = new List <BalancoDia>(); var balancoDia = new BalancoDia(); if (tipoRelatorio.ToUpper() == "D") { var produtoViewModel = await _lancamentoFinanceiroService.Buscar(p => p.DataLancamento.ToString("dd-MM-yyyy") == dateTime); ////Débito //var debito = produtoViewModel.Where(x => x.Tipo == 1).Select(x => x.Valor).Sum(); //balancoDia.ValorTotalDebito = debito; ////Crédito //var credito = produtoViewModel.Where(x => x.Tipo == 2).Select(x => x.Valor).Sum(); //balancoDia.ValorTotalCredito = credito; ////Valor saldo //balancoDia.ValorSaldo = balancoDia.ValorTotalCredito - balancoDia.ValorTotalDebito; foreach (var item in produtoViewModel) { balancoDia = new BalancoDia(); //Débito if (item.Tipo == 1) { balancoDia.ValorTotalDebito = item.Valor; //Valor saldo balancoDia.ValorSaldo -= item.Valor; } //Crédito else if (item.Tipo == 2) { balancoDia.ValorTotalCredito = item.Valor; //Valor saldo balancoDia.ValorSaldo += item.Valor; } // Data do Balanço balancoDia.DatadoBalanco = item.DataLancamento; //Adiciona o item na lista listBalancoDia.Add(balancoDia); } return(Ok(listBalancoDia)); } else if (tipoRelatorio.ToUpper() == "M") { var produtoViewModel = await _lancamentoFinanceiroService.Buscar(p => p.DataLancamento.ToString("MM-yyyy") == dateTime); produtoViewModel = produtoViewModel.ToList().OrderBy(x => x.DataLancamento).ToList(); // Datas var filtraDatas = produtoViewModel.Select(x => x.DataLancamento.ToString("dd/MM/yyyy")).Distinct().ToList(); foreach (var fatura in filtraDatas) { var Datafatura = fatura; foreach (var item in produtoViewModel) { // Obtem a data da Fatura var dataItem = item.DataLancamento.ToString("dd/MM/yyyy"); // Verifica se a data é a mesma do laço if (Datafatura == dataItem) { // Data do Balanço balancoDia.DatadoBalanco = item.DataLancamento; //Débito if (item.Tipo == 1) { balancoDia.ValorTotalDebito += item.Valor; //Valor saldo balancoDia.ValorSaldo -= item.Valor; } //Crédito else if (item.Tipo == 2) { balancoDia.ValorTotalCredito += item.Valor; //Valor saldo balancoDia.ValorSaldo += item.Valor; } } } //Adiciona os Itens da Lista listBalancoDia.Add(balancoDia); balancoDia = new BalancoDia(); } return(Ok(listBalancoDia)); } return(NotFound()); }