Files

118 lines
3.6 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ADSNetLibrary.PacsTimbrado.SAT
{
[Serializable]
public class CFDINomina
{
public string Version { get; set; }
public string TipoNomina { get; set; }
public DateTime FechaPago { get; set; }
public string FechaInicio { get; set; }
public string FechaFin { get; set; }
public int NumDiasPagados { get; set; }
public CFDINominaReceptor Receptor { get; set; }
public List<CFDINominaPercepciones> Percepciones { get; set; }
public List<CFDINominaDeducciones> Deducciones { get; set; }
public List<CFDINominaIncapacidades> Incapacidades { get; set; }
public List<CFDINominaOtrosPagos> OtrosPagos { get; set; }
public List<CFDINominaHorasExtras> HorasExtras { get; set; }
public int CveNomina { get; set; }
public decimal TotalPercepciones
{
get
{
return TotalSueldos + TotalIndemnizacion + TotalJubilacion;
}
}
public decimal TotalDeducciones
{
get
{
return Math.Round(TotalDeduccionesOtras + TotalDeduccionesImpuestosRetenidos, 2);
}
}
public decimal TotalOtrosPagos
{
get
{
return OtrosPagos.Sum(item => item.Importe);
}
}
public decimal TotalSueldos
{
get
{
return Percepciones.Where(per => !per.TipoPercepcion.Contiene("022", "023", "025", "039", "044")).Sum(per => per.ImporteGravado + per.ImporteExento);
}
}
public decimal TotalIndemnizacion
{
get
{
return Percepciones.Where(per => per.TipoPercepcion.Contiene("022", "023", "025")).Sum(per => per.ImporteGravado + per.ImporteExento);
}
}
public decimal TotalJubilacion
{
get
{
return Percepciones.Where(per => per.TipoPercepcion.Contiene("039", "044")).Sum(per => per.ImporteGravado + per.ImporteExento);
}
}
public decimal TotalPercepcionesGravado
{
get
{
// nota especificar claves
return Percepciones.Sum(item => item.ImporteGravado);
}
}
public decimal TotalPercepcionesExento
{
get
{
// nota especificar claves
return Percepciones.Sum(item => item.ImporteExento);
}
}
public decimal TotalDeduccionesOtras
{
get
{
// DEDUCCIONES SE LE QUITAN LOS CENTAVOS
return Math.Round(Deducciones.Where(ded => !ded.TipoDeduccion.Contiene("002")).Sum(ded => ded.Importe), 2);
}
}
public decimal TotalDeduccionesImpuestosRetenidos
{
get
{
// nota especificar claves
return Math.Round(Deducciones.Where(ded => ded.TipoDeduccion.Contiene("002")).Sum(ded => ded.Importe), 2);
}
}
public CFDINomina()
{
Receptor = new CFDINominaReceptor();
Percepciones = new List<CFDINominaPercepciones>();
Deducciones = new List<CFDINominaDeducciones>();
Incapacidades = new List<CFDINominaIncapacidades>();
OtrosPagos = new List<CFDINominaOtrosPagos>();
HorasExtras = new List<CFDINominaHorasExtras>();
}
}
}