diff options
| author | Lucas Faria Mendes <lucas.fariamo08@gmail.com> | 2026-03-30 15:29:41 +0000 |
|---|---|---|
| committer | Lucas Faria Mendes <lucas.fariamo08@gmail.com> | 2026-03-30 15:29:41 +0000 |
| commit | 225aa1499e37faf9d38257caabbadc68d78b427e (patch) | |
| tree | 102bb7a40c58595348ae9d3c7076201759fe0720 /Decompiler/Gestor.Application.ViewModels.Financeiro/ExtratoContaViewModel.cs | |
| parent | 1f4e14b2e973ee7de337fd4866d9a5ceff5cb6d1 (diff) | |
| download | gestor-225aa1499e37faf9d38257caabbadc68d78b427e.tar.gz gestor-225aa1499e37faf9d38257caabbadc68d78b427e.zip | |
decompiler.com
Diffstat (limited to 'Decompiler/Gestor.Application.ViewModels.Financeiro/ExtratoContaViewModel.cs')
| -rw-r--r-- | Decompiler/Gestor.Application.ViewModels.Financeiro/ExtratoContaViewModel.cs | 408 |
1 files changed, 408 insertions, 0 deletions
diff --git a/Decompiler/Gestor.Application.ViewModels.Financeiro/ExtratoContaViewModel.cs b/Decompiler/Gestor.Application.ViewModels.Financeiro/ExtratoContaViewModel.cs new file mode 100644 index 0000000..6c57232 --- /dev/null +++ b/Decompiler/Gestor.Application.ViewModels.Financeiro/ExtratoContaViewModel.cs @@ -0,0 +1,408 @@ +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Diagnostics; +using System.IO; +using System.Linq; +using System.Text; +using System.Text.RegularExpressions; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Forms; +using System.Windows.Media; +using ClosedXML.Excel; +using Gestor.Application.Helpers; +using Gestor.Application.Servicos.Financeiro; +using Gestor.Application.ViewModels.Generic; +using Gestor.Common.Helpers; +using Gestor.Model.Common; +using Gestor.Model.Domain.Configuracoes; +using Gestor.Model.Domain.Financeiro; +using Gestor.Model.Domain.Generic; +using Gestor.Model.Domain.Relatorios; + +namespace Gestor.Application.ViewModels.Financeiro; + +public class ExtratoContaViewModel : BaseFinanceiroViewModel +{ + private Geometry _maximizeRestore = Geometry.Parse((string)Application.Current.Resources[(object)"Restore"]); + + private string _head; + + private readonly FinanceiroServico _servico; + + private ObservableCollection<BancosContas> _contas; + + private ObservableCollection<BancosContas> _contasFilter; + + private BancosContas _selectedConta; + + private DateTime? _inicio = new DateTime(Funcoes.GetNetworkTime().Date.Year, Funcoes.GetNetworkTime().Date.Month, 1); + + private DateTime? _fim = Funcoes.GetNetworkTime(); + + private static ObservableCollection<string> _bancosContas = new ObservableCollection<string> { "TODOS", "ATIVOS", "INATIVOS" }; + + private string _selectedBancosContas = "TODOS"; + + private ObservableCollection<ExtratoConta> _extrato; + + private bool _saldoFinal; + + private bool _naoHaDados; + + public Geometry MaximizeRestore + { + get + { + return _maximizeRestore; + } + set + { + _maximizeRestore = value; + OnPropertyChanged("MaximizeRestore"); + } + } + + public string Head + { + get + { + return _head; + } + set + { + _head = value; + OnPropertyChanged("Head"); + } + } + + public ObservableCollection<BancosContas> Contas + { + get + { + return _contas; + } + set + { + _contas = value; + OnPropertyChanged("Contas"); + } + } + + public ObservableCollection<BancosContas> ContasFilter + { + get + { + return _contasFilter; + } + set + { + _contasFilter = value; + OnPropertyChanged("ContasFilter"); + } + } + + public BancosContas SelectedConta + { + get + { + return _selectedConta; + } + set + { + _selectedConta = value; + OnPropertyChanged("SelectedConta"); + } + } + + public DateTime? Inicio + { + get + { + return _inicio; + } + set + { + _inicio = value; + OnPropertyChanged("Inicio"); + } + } + + public DateTime? Fim + { + get + { + return _fim; + } + set + { + _fim = value; + OnPropertyChanged("Fim"); + } + } + + public ObservableCollection<string> BancosContas + { + get + { + return _bancosContas; + } + set + { + _bancosContas = value; + OnPropertyChanged("BancosContas"); + } + } + + public string SelectedBancosContas + { + get + { + return _selectedBancosContas; + } + set + { + _selectedBancosContas = value; + if (value == null || Contas == null || Contas.Count <= 0) + { + return; + } + switch (value) + { + case "TODOS": + ContasFilter = Contas; + break; + case "ATIVOS": + ContasFilter = new ObservableCollection<BancosContas>(Contas.Where((BancosContas x) => x.Ativo).ToList()); + break; + case "INATIVOS": + ContasFilter = new ObservableCollection<BancosContas>(Contas.Where((BancosContas x) => !x.Ativo).ToList()); + break; + } + OnPropertyChanged("SelectedBancosContas"); + } + } + + public ObservableCollection<ExtratoConta> Extrato + { + get + { + return _extrato; + } + set + { + _extrato = value; + NaoHaDados = value == null || value.Count == 0; + OnPropertyChanged("Extrato"); + } + } + + public bool SaldoFinal + { + get + { + return _saldoFinal; + } + set + { + _saldoFinal = value; + OnPropertyChanged("SaldoFinal"); + } + } + + public bool NaoHaDados + { + get + { + return _naoHaDados; + } + set + { + _naoHaDados = value; + OnPropertyChanged("NaoHaDados"); + } + } + + public ExtratoContaViewModel(long id) + { + _servico = new FinanceiroServico(); + BuscaInicial(id); + } + + private async void BuscaInicial(long id) + { + Loading(isLoading: true); + List<BancosContas> source = await new BancosContasServico().BuscarBancos(); + Contas = new ObservableCollection<BancosContas>(source.OrderBy((BancosContas x) => x.Descricao)); + ContasFilter = new ObservableCollection<BancosContas>(source.OrderBy((BancosContas x) => x.Descricao)); + SelectedConta = ((id > 0) ? ((IEnumerable<BancosContas>)Contas).FirstOrDefault((Func<BancosContas, bool>)((BancosContas x) => ((DomainBase)x).Id == id)) : Contas.FirstOrDefault()); + await GerarRelatorio(); + Loading(isLoading: false); + } + + public void LimparRelatorio() + { + Extrato = null; + } + + public async Task GerarRelatorio() + { + if (SelectedConta == null || ((DomainBase)SelectedConta).Id == 0L || !Inicio.HasValue || !Fim.HasValue) + { + return; + } + BancosContasServico servico = new BancosContasServico(); + Saldo val = await servico.BuscarSaldoInicial(((DomainBase)SelectedConta).Id); + if (((val != null) ? val.DataInicio : null) > Inicio) + { + ShowMessage("DATA DE INÍCIO É MENOR QUE A CRIAÇÃO DA CONTA " + val.Conta.Descricao + ",\nDATA DE ABERTURA " + val.DataInicio?.ToString("dd/MM/yyyy")); + NaoHaDados = true; + return; + } + List<ExtratoConta> lancamentos = await _servico.BuscarLancamentosPorConta(Inicio.Value, Fim.Value, ((DomainBase)SelectedConta).Id); + Saldo val2 = await servico.BuscarSaldo(Inicio.Value, ((DomainBase)SelectedConta).Id); + if (lancamentos.Count == 0) + { + NaoHaDados = true; + return; + } + if (val2 == null) + { + val2 = new Saldo + { + Conta = SelectedConta, + DataInicio = Inicio, + ValorInicio = 0m + }; + } + val2.DataFinal = Inicio.Value; + val2.ValorFinal = default(decimal); + val2 = await servico.FecharSaldo(val2); + List<ExtratoConta> extrato = new List<ExtratoConta>(); + ExtratoConta val3 = new ExtratoConta + { + Baixa = Inicio.Value, + Fornecedor = "SALDO INICIAL", + Valor = val2.ValorFinal.GetValueOrDefault(), + Sinal = (Sinal)((val2.ValorFinal.GetValueOrDefault() < 0m) ? 1 : 0), + Bold = true + }; + extrato.Add(val3); + decimal? saldoDia = val3.Valor; + (from x in lancamentos + orderby x.Baixa + group x by x.Baixa).ToList().ForEach(delegate(IGrouping<DateTime?, ExtratoConta> g) + { + //IL_002a: Unknown result type (might be due to invalid IL or missing references) + //IL_002f: Unknown result type (might be due to invalid IL or missing references) + //IL_0040: Unknown result type (might be due to invalid IL or missing references) + //IL_004b: Unknown result type (might be due to invalid IL or missing references) + //IL_00b4: Unknown result type (might be due to invalid IL or missing references) + //IL_0143: Unknown result type (might be due to invalid IL or missing references) + //IL_014b: Expected O, but got Unknown + List<ExtratoConta> list2 = lancamentos.Where(delegate(ExtratoConta x) + { + DateTime? baixa = x.Baixa; + DateTime? key = g.Key; + if (baixa.HasValue != key.HasValue) + { + return false; + } + return !baixa.HasValue || baixa.GetValueOrDefault() == key.GetValueOrDefault(); + }).ToList(); + ExtratoConta val5 = new ExtratoConta + { + Baixa = g.Key, + Fornecedor = "SALDO FINAL DO DIA", + Valor = saldoDia + list2.Sum((ExtratoConta x) => x.Valor) + }; + decimal? num2 = saldoDia + list2.Sum((ExtratoConta x) => x.Valor); + val5.Sinal = (Sinal)(((num2.GetValueOrDefault() < default(decimal)) & num2.HasValue) ? 1 : 0); + val5.Bold = true; + ExtratoConta val6 = val5; + if (!SaldoFinal) + { + extrato.AddRange(list2); + } + extrato.Add(val6); + saldoDia = val6.Valor; + }); + List<ExtratoConta> list = extrato; + ExtratoConta val4 = new ExtratoConta + { + Baixa = Fim.Value, + Fornecedor = "SALDO FINAL", + Valor = saldoDia + }; + decimal? num = saldoDia; + val4.Sinal = (Sinal)(((num.GetValueOrDefault() < default(decimal)) & num.HasValue) ? 1 : 0); + val4.Bold = true; + list.Add(val4); + Extrato = new ObservableCollection<ExtratoConta>(extrato); + } + + public async Task Print() + { + if (Extrato == null || Extrato.Count == 0) + { + ShowMessage("NÃO HÁ DADOS PARA A IMPRESSÃO"); + return; + } + string dados = await Funcoes.GenerateTable(Extrato.ToList(), new List<string>()); + TipoRelatorio val = new TipoRelatorio + { + Nome = "EXTRATO CONTA - " + SelectedConta.Descricao, + Inicio = (Inicio ?? DateTime.MinValue), + Fim = (Fim ?? DateTime.MinValue) + }; + val.Nome = ((val.Nome.Length < 30) ? val.Nome : val.Nome.Substring(0, 30)); + string value = Funcoes.ExportarHtml(val, dados, "60", "portrait"); + string tempPath = Path.GetTempPath(); + string text = string.Format("{0}{1}_{2:ddMMyyyyhhmmss}.html", tempPath, new Regex("[" + Regex.Escape(new string(Path.GetInvalidFileNameChars()) + new string(Path.GetInvalidPathChars())) + "]").Replace(val.Nome, ""), Funcoes.GetNetworkTime()); + StreamWriter streamWriter = new StreamWriter(text, append: true, Encoding.UTF8); + streamWriter.Write(value); + streamWriter.Close(); + Process.Start(text); + } + + public async Task GerarExcel() + { + if (Extrato == null || Extrato.Count == 0) + { + ShowMessage("NÃO HÁ DADOS PARA A IMPRESSÃO EM EXCEL"); + return; + } + List<ExtratoConta> analitico = Extrato.ToList(); + string text = ""; + string fileName; + if (Recursos.Configuracoes.Any((ConfiguracaoSistema x) => (int)x.Configuracao == 41)) + { + FolderBrowserDialog val = new FolderBrowserDialog(); + try + { + if (1 != (int)((CommonDialog)val).ShowDialog()) + { + return; + } + text = val.SelectedPath + "\\"; + Directory.CreateDirectory(text); + } + finally + { + ((IDisposable)val)?.Dispose(); + } + fileName = text + "EXTRATO CONTA - " + SelectedConta.Descricao + " " + Functions.GetNetworkTime().Date.ToShortDateString().Replace("/", "") + ".xlsx"; + } + else + { + text = Path.GetTempPath(); + fileName = $"{text}{Guid.NewGuid()}.xlsx"; + } + XLWorkbook val2 = new XLWorkbook(); + string text2 = "EXTRATO CONTA - " + SelectedConta.Descricao; + text2 = ((text2.Length < 30) ? text2 : text2.Substring(0, 30)); + (await Funcoes.GerarXls(val2, text2, analitico, new List<string>())).SaveAs(fileName); + Process.Start(fileName); + } +} |