private NominaPercepcionesPercepcionHorasExtra contruyeNominaHoraExtra(CFDIReciboHrsExtras cfdiReciboHrsExtras)
        {
            NominaPercepcionesPercepcionHorasExtra horaExtra = new NominaPercepcionesPercepcionHorasExtra();

            horaExtra.Dias       = (cfdiReciboHrsExtras.dias);
            horaExtra.HorasExtra = (cfdiReciboHrsExtras.horasExtras);
            Double importePagado = cfdiReciboHrsExtras.importeExento + cfdiReciboHrsExtras.importeGravable;

            horaExtra.ImportePagado = (UtileriasSat.castNumerosToImporteMX(importePagado)); ///pendiente
            horaExtra.TipoHoras     = (cfdiReciboHrsExtras.tipoHoras);
            return(horaExtra);
        }
        private Nomina cargaConceptosANomina(Nomina nomina, List <CFDIReciboConcepto> listConceptos, List <CFDIReciboHrsExtras> listReciboHorasExtras)
        {
            totalDeducciones  = 0.0;
            totalPercepciones = 0.0;
            totalOtrosPagos   = 0.0;
            listConceptos     = listConceptos == null ? new List <CFDIReciboConcepto>() : listConceptos;
            if (listConceptos.Count() > 0)
            {
                if (nomina == null)
                {
                    nomina = new Nomina();
                }
                List <CFDIReciboConcepto> listPercepciones = new List <CFDIReciboConcepto>();
                List <CFDIReciboConcepto> listOtrosPagos   = new List <CFDIReciboConcepto>();
                List <CFDIReciboConcepto> listDeducciones  = new List <CFDIReciboConcepto>();
                int i;
                for (i = 0; i < listConceptos.Count(); i++)
                {
                    if (listConceptos[i].otroPago)
                    {
                        listOtrosPagos.Add(listConceptos[i]);
                    }
                    else if (string.Equals(listConceptos[i].tipoNaturaleza, ManejadorEnum.GetDescription(Naturaleza.PERCEPCION)))
                    {
                        listPercepciones.Add(listConceptos[i]);
                    }
                    else if (string.Equals(listConceptos[i].tipoNaturaleza, ManejadorEnum.GetDescription(Naturaleza.DEDUCCION)))
                    {
                        listDeducciones.Add(listConceptos[i]);
                    }
                }
                nomina.Percepciones = (contruyeNominaListaPercepciones(listPercepciones, listReciboHorasExtras));
                if (listOtrosPagos.Any())
                {
                    nomina.OtrosPagos = (contruyeNominaListaOtrosPagos(listOtrosPagos).ToArray());
                }
                else
                {
                    nomina.OtrosPagos = (construyeSinSubsidio().ToArray());
                }

                nomina.Deducciones       = (contruyeNominaListaDeducciones(listDeducciones));
                nomina.TotalPercepciones = (UtileriasSat.castNumerosToImporteMX(totalPercepciones));
                nomina.TotalOtrosPagos   = (UtileriasSat.castNumerosToImporteMX(totalOtrosPagos));
                nomina.TotalDeducciones  = (UtileriasSat.castNumerosToImporteMX(totalDeducciones));
            }
            return(nomina);
        }
        private NominaReceptor construyeNominaReceptor(CFDIEmpleado cfdiEmpleado)
        {
            NominaReceptor receptor = new NominaReceptor();

            receptor.Curp = (cfdiEmpleado.CURP);
            if (cfdiEmpleado.noSeguroSocial == null ? false : cfdiEmpleado.noSeguroSocial.Trim().Length > 0)
            {
                receptor.NumSeguridadSocial = (cfdiEmpleado.noSeguroSocial);
            }

            if (cfdiEmpleado.fechaInicioRelLaboral != null)
            {
                receptor.FechaInicioRelLaboral = (UtileriasSat.castXmlFechaFormatoIso8601(cfdiEmpleado.fechaInicioRelLaboral.GetValueOrDefault()));
            }
            if (cfdiEmpleado.antiguedad != null)
            {
                //"P".concat(String.valueOf(cfdiEmpleado.getAntiguedad())).concat("W")
                receptor.Antigüedad = (string.Concat("P", string.Concat(cfdiEmpleado.antiguedad, "W")));
            }
            ////////        if (cfdiEmpleado.getAntiguedadYMD().trim().length() > 0) {
            ////////            receptor.setAntiguedad(cfdiEmpleado.getAntiguedadYMD());
            ////////        }
            receptor.TipoContrato = (cfdiEmpleado.tipoContrato);
            if (cfdiEmpleado.jornada == null ? false : cfdiEmpleado.jornada.Trim().Length > 0)
            {
                receptor.TipoJornada = (cfdiEmpleado.jornada);
            }
            receptor.TipoRegimen = (cfdiEmpleado.regimenContratacion); //@
            receptor.NumEmpleado = (cfdiEmpleado.plazasPorEmpleadosMov.plazasPorEmpleado.empleados.clave);

            if (cfdiEmpleado.departamento == null ? false : cfdiEmpleado.departamento.Trim().Length > 0)
            {
                receptor.Departamento = (cfdiEmpleado.departamento);
            }

            if (cfdiEmpleado.puesto == null ? false : cfdiEmpleado.puesto.Trim().Length > 0)
            {
                receptor.Puesto = (cfdiEmpleado.puesto);
            }
            if (cfdiEmpleado.riesgoPuesto != null)
            {
                receptor.RiesgoPuesto = (cfdiEmpleado.riesgoPuesto);
            }

            receptor.PeriodicidadPago = (cfdiEmpleado.periodiciadadPago);

            if (cfdiEmpleado.claveBancoSat == null ? false : cfdiEmpleado.claveBancoSat.Trim().Length > 0)
            {
                receptor.Banco = (cfdiEmpleado.claveBancoSat);
            }
            if (cfdiEmpleado.cuentaBancaria == null ? false : cfdiEmpleado.cuentaBancaria.Trim().Length > 0)
            {
                receptor.CuentaBancaria = (UtileriasSat.castNumerosToBigInteger(cfdiEmpleado.cuentaBancaria).ToString());
            }

            if (cfdiEmpleado.salBaseCotAport == null ? false: cfdiEmpleado.salBaseCotAport > 0)
            {
                receptor.SalarioBaseCotApor = (UtileriasSat.castNumerosToImporteMX(cfdiEmpleado.salBaseCotAport));
            }
            if (cfdiEmpleado.salIntIMSS == null ? false: cfdiEmpleado.salIntIMSS > 0)
            {
                receptor.SalarioDiarioIntegrado = (UtileriasSat.castNumerosToImporteMX(cfdiEmpleado.salIntIMSS));
            }
            try
            {
                //receptor.ClaveEntFed=(CEstado.fromValue(cfdiEmpleado.estado));
                receptor.ClaveEntFed = (cfdiEmpleado.estado);
            }
            catch (Exception e)
            {
                receptor.ClaveEntFed = (null);
            }

            ///subcontratacion

            ///receptor.setSindicalizado(SCHEMALOCATION_NOMINA);    //opcional   pendiente

            return(receptor);
        }