using System; using System.Collections.Generic; using System.Collections.ObjectModel; using Gestor.Model.Domain.Generic; using Gestor.Model.Domain.Seguros; using Gestor.Model.Helper; using Newtonsoft.Json; namespace Gestor.Model.Domain.Ferramentas; public class Imposto : DomainBase, IDomain { public Seguradora Seguradora { get; set; } public Ramo Ramo { get; set; } public decimal Ir { get; set; } public decimal Iss { get; set; } public decimal Outros { get; set; } public decimal Desconto { get; set; } public bool Ativo { get; set; } [JsonIgnore] public Func>> ValidationEvent => Validate; public List> Validate() { List> list = ValidationHelper.AddValue(); if (Ir > 1m) { list.AddValue("Ir|PORCENTAGEM IR", "O VALOR DE IR NÃO PODE SER MAIOR QUE 100%."); } if (Iss > 1m) { list.AddValue("Iss|PORCENTAGEM ISS", "O VALOR DE ISS NÃO PODE SER MAIOR QUE 100%."); } if (Outros > 1m) { list.AddValue("Outros|PORCENTAGEM OUTROS", "O VALOR DOS OUTROS DESCONTOS NÃO PODE SER MAIOR QUE 100%."); } if (Desconto > 1m) { list.AddValue("Desconto|PORCENTAGEM DESCONTO", "O VALOR DE DESCONTO NÃO PODE SER MAIOR QUE 100%."); } if (Ir < 0m) { list.AddValue("Ir|PORCENTAGEM IR", "O VALOR DE IR NÃO PODE SER MENOR QUE 0%."); } if (Iss < 0m) { list.AddValue("Iss|PORCENTAGEM ISS", "O VALOR DE ISS NÃO PODE SER MENOR QUE 0%."); } if (Outros < 0m) { list.AddValue("Outros|PORCENTAGEM OUTROS", "O VALOR DOS OUTROS DESCONTOS NÃO PODE SER MENOR QUE 0%."); } if (Desconto < 0m) { list.AddValue("Desconto|PORCENTAGEM DESCONTO", "O VALOR DE DESCONTO NÃO PODE SER MENOR QUE 0%."); } if (Ir + Iss + Outros + Desconto > 1m) { list.AddValue("Ir|PORCENTAGEM TOTAL", "NÃO É POSSÍVEL DEDUZIR MAIS QUE 100% DO TOTAL RECEBIDO."); } if (Ir + Iss + Outros + Desconto == 0m) { list.AddValue("Ir|PORCENTAGEM TOTAL", "A SOMA DOS IMPOSTOS DEVEM SER MAIOR QUE 0 (ZERO)."); } return list; } public List Log() { return new List { new TupleList { Tuples = new ObservableCollection> { new Tuple("RAMO", Ramo?.Nome ?? "", ""), new Tuple("SEGURADORA", Seguradora?.NomeSocial ?? Seguradora?.Nome ?? "", ""), new Tuple("IR", Ir.ToString("p"), ""), new Tuple("ISS", Iss.ToString("p"), ""), new Tuple("OUTROS", Outros.ToString("p"), ""), new Tuple("DESCONTO", Desconto.ToString("p"), ""), new Tuple("ATIVO", Ativo ? "SIM" : "NÃO", "") } } }; } }