summaryrefslogtreecommitdiff
path: root/Decompiler/Gestor.Application.ViewModels.Ferramentas/NotaFiscalViewModel.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Decompiler/Gestor.Application.ViewModels.Ferramentas/NotaFiscalViewModel.cs')
-rw-r--r--Decompiler/Gestor.Application.ViewModels.Ferramentas/NotaFiscalViewModel.cs348
1 files changed, 348 insertions, 0 deletions
diff --git a/Decompiler/Gestor.Application.ViewModels.Ferramentas/NotaFiscalViewModel.cs b/Decompiler/Gestor.Application.ViewModels.Ferramentas/NotaFiscalViewModel.cs
new file mode 100644
index 0000000..c2585a0
--- /dev/null
+++ b/Decompiler/Gestor.Application.ViewModels.Ferramentas/NotaFiscalViewModel.cs
@@ -0,0 +1,348 @@
+using System;
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+using System.Globalization;
+using System.Linq;
+using System.Threading.Tasks;
+using Gestor.Application.Helpers;
+using Gestor.Application.Servicos;
+using Gestor.Application.Servicos.Ferramentas;
+using Gestor.Application.ViewModels.Generic;
+using Gestor.Common.Validation;
+using Gestor.Model.Common;
+using Gestor.Model.Domain.Configuracoes;
+using Gestor.Model.Domain.Ferramentas;
+using Gestor.Model.Domain.Generic;
+using Gestor.Model.Domain.Seguros;
+
+namespace Gestor.Application.ViewModels.Ferramentas;
+
+public class NotaFiscalViewModel : BaseSegurosViewModel
+{
+ private readonly NotaFiscalServico _servico;
+
+ private readonly ServicoExtrato _servicoExtrato;
+
+ private bool _apelido;
+
+ private List<Estipulante> _estipulantes;
+
+ private List<Seguradora> _seguradoras;
+
+ private ObservableCollection<NotaFiscal> _notasFiscaisFiltrados = new ObservableCollection<NotaFiscal>();
+
+ private bool _isExpanded;
+
+ private string _numExtrato;
+
+ private NotaFiscal _selectedNotaFiscal;
+
+ public NotaFiscal CancelNotaFiscal;
+
+ public bool Apelido
+ {
+ get
+ {
+ return _apelido;
+ }
+ set
+ {
+ _apelido = value;
+ OnPropertyChanged("Apelido");
+ }
+ }
+
+ public List<Estipulante> Estipulantes
+ {
+ get
+ {
+ return _estipulantes;
+ }
+ set
+ {
+ _estipulantes = value;
+ OnPropertyChanged("Estipulantes");
+ }
+ }
+
+ public List<Seguradora> Seguradoras
+ {
+ get
+ {
+ return _seguradoras;
+ }
+ set
+ {
+ _seguradoras = value;
+ OnPropertyChanged("Seguradoras");
+ }
+ }
+
+ public ObservableCollection<NotaFiscal> NotasFiscaisFiltrados
+ {
+ get
+ {
+ return _notasFiscaisFiltrados;
+ }
+ set
+ {
+ _notasFiscaisFiltrados = value;
+ IsExpanded = value != null && value.Count > 0;
+ OnPropertyChanged("NotasFiscaisFiltrados");
+ }
+ }
+
+ public bool IsExpanded
+ {
+ get
+ {
+ return _isExpanded;
+ }
+ set
+ {
+ _isExpanded = value;
+ OnPropertyChanged("IsExpanded");
+ }
+ }
+
+ public string NumExtrato
+ {
+ get
+ {
+ return _numExtrato;
+ }
+ set
+ {
+ _numExtrato = value;
+ OnPropertyChanged("NumExtrato");
+ }
+ }
+
+ public List<NotaFiscal> NotasFiscais { get; set; }
+
+ public NotaFiscal SelectedNotaFiscal
+ {
+ get
+ {
+ return _selectedNotaFiscal;
+ }
+ set
+ {
+ _selectedNotaFiscal = value;
+ WorkOnSelectedNotaFiscal(value);
+ VerificarEnables((value != null) ? new long?(((DomainBase)value).Id) : null);
+ OnPropertyChanged("SelectedNotaFiscal");
+ }
+ }
+
+ public NotaFiscalViewModel()
+ {
+ _servicoExtrato = new ServicoExtrato();
+ _servico = new NotaFiscalServico();
+ Seguradoras = Recursos.Seguradoras.Where((Seguradora x) => x.Ativo).ToList();
+ Estipulantes = Recursos.Estipulantes.Where((Estipulante e) => e.Ativo).ToList();
+ Apelido = Recursos.Configuracoes.Any((ConfiguracaoSistema x) => (int)x.Configuracao == 6);
+ base.EnableMenu = true;
+ Seleciona();
+ }
+
+ private async void Seleciona()
+ {
+ Loading(isLoading: true);
+ await PermissaoTela((TipoTela)55);
+ await SelecionaNotaFiscal();
+ Loading(isLoading: false);
+ }
+
+ public async Task SelecionaNotaFiscal()
+ {
+ Loading(isLoading: true);
+ NotasFiscais = (await _servico.BuscarNotasFiscais()).OrderBy((NotaFiscal x) => x.Seguradora.Nome).ToList();
+ NotasFiscaisFiltrados = new ObservableCollection<NotaFiscal>(NotasFiscais);
+ SelectedNotaFiscal = NotasFiscaisFiltrados.FirstOrDefault();
+ Loading(isLoading: false);
+ }
+
+ public async Task<List<NotaFiscal>> Filtrar(string value)
+ {
+ return await Task.Run(() => FiltrarNotaFiscal(value));
+ }
+
+ public List<NotaFiscal> FiltrarNotaFiscal(string filter)
+ {
+ NotasFiscaisFiltrados = (string.IsNullOrWhiteSpace(filter) ? new ObservableCollection<NotaFiscal>(NotasFiscais) : new ObservableCollection<NotaFiscal>(from x in NotasFiscais
+ where ValidationHelper.RemoveDiacritics(x.Seguradora.Nome.Trim()).ToUpper().Contains(ValidationHelper.RemoveDiacritics(filter)) || ValidationHelper.RemoveDiacritics(x.ValorBruto.ToString(CultureInfo.InvariantCulture).Trim()).Contains(ValidationHelper.RemoveDiacritics(filter)) || ValidationHelper.RemoveDiacritics(x.Data.ToString().Trim()).Contains(ValidationHelper.RemoveDiacritics(filter))
+ orderby x.Seguradora.Nome
+ select x));
+ return NotasFiscaisFiltrados.ToList();
+ }
+
+ public void Incluir()
+ {
+ //IL_0001: Unknown result type (might be due to invalid IL or missing references)
+ //IL_0006: Unknown result type (might be due to invalid IL or missing references)
+ //IL_0007: Unknown result type (might be due to invalid IL or missing references)
+ //IL_0011: Expected O, but got Unknown
+ //IL_0011: Unknown result type (might be due to invalid IL or missing references)
+ //IL_0012: Unknown result type (might be due to invalid IL or missing references)
+ //IL_001c: Expected O, but got Unknown
+ //IL_001c: Unknown result type (might be due to invalid IL or missing references)
+ //IL_0027: Unknown result type (might be due to invalid IL or missing references)
+ //IL_0032: Unknown result type (might be due to invalid IL or missing references)
+ //IL_003d: Unknown result type (might be due to invalid IL or missing references)
+ //IL_004d: Expected O, but got Unknown
+ SelectedNotaFiscal = new NotaFiscal
+ {
+ Seguradora = new Seguradora(),
+ Estipulante = new Estipulante(),
+ Iss = 0m,
+ ValorLiquido = 0m,
+ ValorBruto = 0m,
+ Extrato = ""
+ };
+ Alterar(alterar: true);
+ }
+
+ public async Task<List<KeyValuePair<string, string>>> Salvar()
+ {
+ List<KeyValuePair<string, string>> list = SelectedNotaFiscal.Validate();
+ if (list.Count > 0)
+ {
+ return list;
+ }
+ string acao = ((((DomainBase)SelectedNotaFiscal).Id == 0L) ? "INCLUIU" : "ALTEROU");
+ NotaFiscal selectedNotaFiscal = SelectedNotaFiscal;
+ int num;
+ if (selectedNotaFiscal == null)
+ {
+ num = 0;
+ }
+ else
+ {
+ Estipulante estipulante = selectedNotaFiscal.Estipulante;
+ num = ((((estipulante != null) ? new long?(((DomainBase)estipulante).Id) : null) <= 0) ? 1 : 0);
+ }
+ if (num != 0)
+ {
+ SelectedNotaFiscal.Estipulante = null;
+ }
+ NotaFiscal value = await _servico.Save(SelectedNotaFiscal);
+ if (!_servico.Sucesso)
+ {
+ return null;
+ }
+ RegistrarAcao($"{acao} NOTA FISCAL DE ID \"{((DomainBase)value).Id}\"", ((DomainBase)value).Id, (TipoTela)55, string.Format("SEGURADORA: {0}\nDATA: {1}\nBRUTO: {2:c}\nISS: {3:c}\nLÍQUIDO: {4:c}", value.Seguradora.Nome, (!value.Data.HasValue) ? "-" : $"{value.Data:d}", value.ValorBruto, value.Iss, value.ValorLiquido));
+ if (NotasFiscais.Any((NotaFiscal x) => ((DomainBase)x).Id == ((DomainBase)value).Id))
+ {
+ DomainBase.Copy<NotaFiscal, NotaFiscal>(NotasFiscais.First((NotaFiscal x) => ((DomainBase)x).Id == ((DomainBase)value).Id), value);
+ }
+ else
+ {
+ NotasFiscais.Add(value);
+ }
+ if (NotasFiscaisFiltrados.Any((NotaFiscal x) => ((DomainBase)x).Id == ((DomainBase)value).Id))
+ {
+ DomainBase.Copy<NotaFiscal, NotaFiscal>(NotasFiscaisFiltrados.First((NotaFiscal x) => ((DomainBase)x).Id == ((DomainBase)value).Id), value);
+ }
+ else
+ {
+ NotasFiscaisFiltrados.Add(value);
+ }
+ NotasFiscaisFiltrados = new ObservableCollection<NotaFiscal>(NotasFiscaisFiltrados);
+ WorkOnSelectedNotaFiscal(value, registrar: false);
+ Alterar(alterar: false);
+ ToggleSnackBar("NOTA FISCAL SALVA COM SUCESSO");
+ return null;
+ }
+
+ public async Task SalvarLote(List<NotaFiscal> notas)
+ {
+ foreach (NotaFiscal nota in notas)
+ {
+ bool flag = nota.IdExtrato.HasValue;
+ if (flag)
+ {
+ flag = await _servico.Cadatrada(nota.IdExtrato.Value);
+ }
+ if (!flag)
+ {
+ SelectedNotaFiscal = nota;
+ await Salvar();
+ }
+ }
+ ToggleSnackBar("NOTAS FISCAIS SALVAS COM SUCESSO");
+ }
+
+ public void CancelarAlteracao()
+ {
+ if (CancelNotaFiscal != null && NotasFiscais.Any((NotaFiscal x) => ((DomainBase)x).Id == ((DomainBase)CancelNotaFiscal).Id))
+ {
+ DomainBase.Copy<NotaFiscal, NotaFiscal>(NotasFiscais.First((NotaFiscal x) => ((DomainBase)x).Id == ((DomainBase)CancelNotaFiscal).Id), CancelNotaFiscal);
+ if (NotasFiscaisFiltrados.Count > 0 && NotasFiscaisFiltrados.Any((NotaFiscal x) => ((DomainBase)x).Id == ((DomainBase)CancelNotaFiscal).Id))
+ {
+ DomainBase.Copy<NotaFiscal, NotaFiscal>(NotasFiscaisFiltrados.First((NotaFiscal x) => ((DomainBase)x).Id == ((DomainBase)CancelNotaFiscal).Id), CancelNotaFiscal);
+ }
+ else
+ {
+ NotasFiscaisFiltrados.Add(CancelNotaFiscal);
+ }
+ NotasFiscaisFiltrados = new ObservableCollection<NotaFiscal>(NotasFiscaisFiltrados);
+ SelectedNotaFiscal = NotasFiscaisFiltrados.First((NotaFiscal x) => ((DomainBase)x).Id == ((DomainBase)CancelNotaFiscal).Id);
+ }
+ else
+ {
+ Incluir();
+ }
+ Alterar(alterar: false);
+ }
+
+ public async void Excluir()
+ {
+ if (SelectedNotaFiscal != null && ((DomainBase)SelectedNotaFiscal).Id != 0L && await ShowMessage("DESEJA REALMENTE EXCLUIR A NOTA FISCAL DA " + SelectedNotaFiscal.Seguradora.Nome + "?", "SIM", "NÃO"))
+ {
+ Loading(isLoading: true);
+ if (!(await _servico.Delete(SelectedNotaFiscal)))
+ {
+ Loading(isLoading: false);
+ return;
+ }
+ RegistrarAcao($"EXCLUIU NOTA FISCAL DE ID \"{((DomainBase)SelectedNotaFiscal).Id}\"", ((DomainBase)SelectedNotaFiscal).Id, (TipoTela)55, string.Format("SEGURADORA: {0}\nDATA: {1}\nBRUTO: {2:c}\nISS: {3:c}\nLÍQUIDO: {4:c}", SelectedNotaFiscal.Seguradora.Nome, (!SelectedNotaFiscal.Data.HasValue) ? "-" : $"{SelectedNotaFiscal.Data:d}", SelectedNotaFiscal.ValorBruto, SelectedNotaFiscal.Iss, SelectedNotaFiscal.ValorLiquido));
+ await SelecionaNotaFiscal();
+ Loading(isLoading: false);
+ ToggleSnackBar("RECIBO EXCLUÍDO COM SUCESSO");
+ }
+ }
+
+ private async Task WorkOnSelectedNotaFiscal(NotaFiscal value, bool registrar = true)
+ {
+ CancelNotaFiscal = (NotaFiscal)((value == null || ((DomainBase)value).Id == 0L) ? ((object)CancelNotaFiscal) : ((object)(NotaFiscal)((DomainBase)value).Clone()));
+ if (value == null || ((DomainBase)value).Id == 0L || (LastAccessId == ((DomainBase)value).Id && (int)LastAccessTela == 55))
+ {
+ return;
+ }
+ if (registrar)
+ {
+ RegistrarAcao($"ACESSOU NOTA FISCAL DE ID \"{((DomainBase)value).Id}\"", ((DomainBase)value).Id, (TipoTela)55, string.Format("SEGURADORA: {0}\nDATA: {1}\nBRUTO: {2:c}\nISS: {3:c}\nLÍQUIDO: {4:c}", value.Seguradora.Nome, (!value.Data.HasValue) ? "-" : $"{value.Data:d}", value.ValorBruto, value.Iss, value.ValorLiquido));
+ }
+ LastAccessId = ((DomainBase)value).Id;
+ LastAccessTela = (TipoTela)55;
+ if (string.IsNullOrEmpty(SelectedNotaFiscal.Extrato))
+ {
+ NotaFiscal selectedNotaFiscal = SelectedNotaFiscal;
+ string extrato = ((!SelectedNotaFiscal.IdExtrato.HasValue) ? "" : (await _servicoExtrato.BuscarNumExtrato(SelectedNotaFiscal.IdExtrato)));
+ selectedNotaFiscal.Extrato = extrato;
+ }
+ NotaFiscal selectedNotaFiscal2 = SelectedNotaFiscal;
+ if (((selectedNotaFiscal2 != null) ? new long?(((DomainBase)selectedNotaFiscal2).Id) : null) != ((DomainBase)value).Id)
+ {
+ SelectedNotaFiscal = ((IEnumerable<NotaFiscal>)NotasFiscaisFiltrados).FirstOrDefault((Func<NotaFiscal, bool>)((NotaFiscal x) => ((DomainBase)x).Id == ((DomainBase)value).Id));
+ }
+ }
+
+ public async Task<decimal> BuscarImposto()
+ {
+ List<Imposto> source = await new ImpostoServico().Buscar(true);
+ Imposto? obj = ((IEnumerable<Imposto>)source).FirstOrDefault((Func<Imposto, bool>)((Imposto x) => x.Seguradora != null && ((DomainBase)x.Seguradora).Id == ((DomainBase)SelectedNotaFiscal.Seguradora).Id && x.Ramo == null)) ?? ((IEnumerable<Imposto>)source).FirstOrDefault((Func<Imposto, bool>)((Imposto x) => x.Seguradora == null && x.Ramo == null));
+ return (obj != null) ? obj.Iss : 0m;
+ }
+}