private Comprobante construyeComprobante(CFDIEmpleado cfdiEmpleado)
        {
            try
            {
                Comprobante comprobante = new Comprobante();
                asignarCertificado(comprobante, cfdiEmpleado.certificadoAsignado);      //@
                comprobante.Emisor   = (construyeEmisor(cfdiEmpleado.razonesSociales)); //@
                comprobante.Receptor = (construyeReceptor(cfdiEmpleado));               //@
                List <ComprobanteConcepto> listConceptos = new List <ComprobanteConcepto>();
                listConceptos.Add(contruyeConceptos(cfdiEmpleado));
                // comprobante.Conceptos=(contruyeListaConceptos(listConceptos)); //@


                comprobante.Conceptos = listConceptos.ToArray();
                comprobante.Version   = ("3.3");

                if (cfdiEmpleado.cfdiRecibo.serieCFDI != "")
                {
                    comprobante.Serie = (cfdiEmpleado.cfdiRecibo.serieCFDI);
                }

                if (cfdiEmpleado.cfdiRecibo.folioCFDI != "")
                {
                    comprobante.Folio = (cfdiEmpleado.cfdiRecibo.folioCFDI);
                }

                fechaGeneraXML = DateTime.Now;

                comprobante.Fecha      = (UtileriasSat.castFechatoXmlFechaFormato(fechaGeneraXML, UtileriasSat.FORMATO_FECHA_HORA_SAT));
                comprobante.FormaPago  = ("99");
                comprobante.MetodoPago = ManejadorEnum.GetDescription(CMetodoPago.PUE);

                comprobante.TipoDeComprobante = ManejadorEnum.GetDescription(CTipoDeComprobante.N);
                comprobante = calculaImportesConceptos(comprobante, cfdiEmpleado);


                String lugarExpedicion = "";
                if (cfdiEmpleado.codigoPostal == null ? false : cfdiEmpleado.codigoPostal.Trim().Length > 0)
                {
                    lugarExpedicion = string.Concat(lugarExpedicion, cfdiEmpleado.razonesSociales.cp.clave);// cfdiEmpleado.codigoPostal lugarExpedicion.concat(cfdiEmpleado.getCodigoPostal());
                }
                comprobante.LugarExpedicion = (lugarExpedicion);


                comprobante.Moneda = ManejadorEnum.GetDescription(CMoneda.MXN);

                if (cfdiEmpleado.cfdiRecibo.UUIDRelacionado != null)
                {
                    ConstruyeCfdiRelacionado(cfdiEmpleado.cfdiRecibo.UUIDRelacionado);
                }

                return(comprobante);
            }
            catch (Exception e)
            {
                //utilSat.bitacora(e.getMessage());
                //System.err.println(concatena.delete(0, concatena.length()).append(msgError).append("contruyeComprobante()1_Error: ").append(e));
                return(null);
            }
        }
        private NominaEmisor construyeNominaEmisor(CFDIEmpleado cfdiEmpleado)
        {
            NominaEmisor emisor = new NominaEmisor();

            /// emisor.setCurp("");   ///Condicional cuando es persona fisica
            ///emisor.setEntidadSNCF(creaEntidadSNCF());  ////Condicional pendiente
            ///!cfdiEmpleado.tipoContrato.equalsIgnoreCase("09") | !cfdiEmpleado.tipoContrato.equalsIgnoreCase("10")
            //    | !cfdiEmpleado.getTipoContrato().equalsIgnoreCase("99")

            //checar si la empresa es persona fisica, de donde saco la curp

            /*if (cfdiEmpleado.CURP == null ? false : cfdiEmpleado.CURP.Trim().Length > 0)
             * {
             *  emisor.Curp = cfdiEmpleado.CURP;
             *
             * }*/

            if (!string.Equals(cfdiEmpleado.tipoContrato, "09", StringComparison.OrdinalIgnoreCase) || !string.Equals(cfdiEmpleado.tipoContrato, "10", StringComparison.OrdinalIgnoreCase)
                | !string.Equals(cfdiEmpleado.tipoContrato, "99", StringComparison.OrdinalIgnoreCase))
            {
                if (cfdiEmpleado.noRegistroPatronal == null ? false : cfdiEmpleado.noRegistroPatronal.Trim().Length > 0)
                {
                    emisor.RegistroPatronal = (cfdiEmpleado.noRegistroPatronal); //Condicional  20 caract maximo
                }
            }
            /////emisor.setRfcPatronOrigen("");  ///pendiente opcional
            return(emisor);
        }
        public Nomina generaComplementoNomina(CFDIEmpleado cfdiEmpleado, ConcepNomDefi conceptoNominaSubsidio1)
        {
            conceptoNominaSubsidio = conceptoNominaSubsidio1;
            Nomina nomina = contruyeNomina12(cfdiEmpleado);

            return(nomina);
        }
        private Nomina contruyeNomina12(CFDIEmpleado cfdiEmpleado)
        {
            Nomina nomina = new Nomina();

            try
            {
                nomina.Version          = ("1.2");
                nomina.FechaFinalPago   = (UtileriasSat.castXmlFechaFormatoIso8601(cfdiEmpleado.fechaFinalPago));
                nomina.FechaInicialPago = (UtileriasSat.castXmlFechaFormatoIso8601(cfdiEmpleado.fechaInicioPago));
                nomina.FechaPago        = (UtileriasSat.castXmlFechaFormatoIso8601(cfdiEmpleado.fechaPago));
                nomina.NumDiasPagados   = (UtileriasSat.castNumerosToBigDecimal(cfdiEmpleado.numeroDiasPago));
                nomina.Emisor           = (construyeNominaEmisor(cfdiEmpleado));
                nomina.Receptor         = (construyeNominaReceptor(cfdiEmpleado));
                anioServicio            = UtileriasSat.getAniosServicio(cfdiEmpleado.fechaInicioRelLaboral.GetValueOrDefault(), cfdiEmpleado.fechaFinalPago);
                if (string.Equals(cfdiEmpleado.tipoCorrida.clave, "ASI", StringComparison.OrdinalIgnoreCase))
                {// duda, no solo una corrida asimilados es tipo de nomina especial, tambien finiquitos, vacaciones
                    nomina.NumDiasPagados = (UtileriasSat.castNumerosToBigDecimal(1));
                    nomina.TipoNomina     = ManejadorEnum.GetDescription(CTipoNomina.E);
                    if (nomina.Receptor != null)
                    {
                        nomina.Receptor.PeriodicidadPago = ("99");
                    }
                    cargaConceptosANomina(nomina, cfdiEmpleado.cfdiRecibo.cfdiReciboConcepto, cfdiEmpleado.cfdiRecibo.cfdiReciboHrsExtras);
                    if (existeIncapacidades)
                    {
                        nomina.Incapacidades = (contruyeNominaListaIncapacidades(cfdiEmpleado.cfdiRecibo.cfdiReciboIncapacidad).ToArray());
                    }
                }
                else
                {
                    nomina.TipoNomina = ManejadorEnum.GetDescription(CTipoNomina.O);
                    cargaConceptosANomina(nomina, cfdiEmpleado.cfdiRecibo.cfdiReciboConcepto, cfdiEmpleado.cfdiRecibo.cfdiReciboHrsExtras);
                    if (existeIncapacidades)
                    {
                        NominaIncapacidad[] incapacidades = contruyeNominaListaIncapacidades(cfdiEmpleado.cfdiRecibo.cfdiReciboIncapacidad).ToArray();
                        if (incapacidades.Length > 0)
                        {
                            nomina.Incapacidades = incapacidades;
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                mensajeNomina.error   = (ex.Message);
                mensajeNomina.noError = (1);
                //utilSat.bitacora(ex.Message);
                ///nomina = null;
            }
            return(nomina);
        }
        private ComprobanteReceptor construyeReceptor(CFDIEmpleado cfdiEmpleado)
        {
            ComprobanteReceptor receptor = new ComprobanteReceptor();

            //agregar el nombre

            receptor.Rfc = (cfdiEmpleado.RFC);
            if (cfdiEmpleado.nombre != "")
            {
                receptor.Nombre = (cfdiEmpleado.nombre);
            }
            receptor.UsoCFDI = ManejadorEnum.GetDescription(CUsoCFDI.P_01);
            return(receptor);
        }
        private Comprobante calculaImportesConceptos(Comprobante comprobante, CFDIEmpleado cfdiEmpleado)
        {
            if (comprobante == null)
            {
                comprobante = new Comprobante();
            }
            Double totalDeduccion = 0.0, subTotal = 0.0, impuestoRetenido = 0.0, descuentos = 0.0, total = 0.0;
            List <CFDIReciboConcepto> conceptos = cfdiEmpleado.cfdiRecibo.cfdiReciboConcepto;

            ////        CFDIReciboConcepto cfdiReciboConceptoISR = null;
            if (conceptos != null)
            {
                int i;
                for (i = 0; i < conceptos.Count(); i++)
                {
                    if (mapClaveConceptosISR.ContainsKey(conceptos[i].claveConcepto))
                    {
                        ////                    cfdiReciboConceptoISR = conceptos.get(i);
                        impuestoRetenido = (conceptos[i].importeExento) + (conceptos[i].importeGravable);
                    }
                    if (string.Equals(conceptos[i].tipoNaturaleza, ManejadorEnum.GetDescription(Naturaleza.PERCEPCION)) | conceptos[i].otroPago)
                    {
                        if (conceptos[i].tipoNaturaleza != "CALCULO")
                        {
                            subTotal = subTotal + (conceptos[i].importeExento) + (conceptos[i].importeGravable);
                        }
                    }
                    else if (string.Equals(conceptos[i].tipoNaturaleza, ManejadorEnum.GetDescription(Naturaleza.DEDUCCION), StringComparison.OrdinalIgnoreCase))
                    {
                        if (!mapClaveConceptosISR.ContainsKey(conceptos[i].claveConcepto))
                        {
                            descuentos = descuentos + (conceptos[i].importeExento) + (conceptos[i].importeGravable);
                        }
                        totalDeduccion = totalDeduccion + (conceptos[i].importeExento) + (conceptos[i].importeGravable);
                    }
                }
            }

            comprobante.Descuento = (UtileriasSat.castNumerosToBigDecimal(descuentos + impuestoRetenido));
            comprobante.SubTotal  = (UtileriasSat.castNumerosToBigDecimal(subTotal)); //@
            total             = subTotal - descuentos - impuestoRetenido;
            comprobante.Total = (UtileriasSat.castNumerosToBigDecimal(total));        //Pendiente
            return(comprobante);
        }
        private ComprobanteConcepto contruyeConceptos(CFDIEmpleado cfdiEmpleado)
        {
            ComprobanteConcepto concepto = new ComprobanteConcepto();

            concepto.Cantidad      = (UtileriasSat.castNumerosToBigDecimal(1)); //@pendiente el cast
            concepto.Descripcion   = ("Pago de nómina");                        //@
            concepto.ClaveProdServ = ("84111505");                              //84111505
            concepto.ClaveUnidad   = ("ACT");
            //no hay necesidad de poner el nodo impuesto
            Double totalPercepcion = 0.0, totalDeduciones = 0.0, totalOtrosPagos = 0.00;
            List <CFDIReciboConcepto> conceptos = cfdiEmpleado.cfdiRecibo.cfdiReciboConcepto;

            if (conceptos != null)
            {
                int i;
                for (i = 0; i < conceptos.Count(); i++)
                {
                    if (string.Equals(conceptos[i].tipoNaturaleza, ManejadorEnum.GetDescription(Naturaleza.PERCEPCION), StringComparison.OrdinalIgnoreCase))
                    {
                        if (conceptos[i].otroPago)
                        {
                            totalOtrosPagos = totalOtrosPagos + (conceptos[i].importeExento) + (conceptos[i].importeGravable);
                        }
                        else
                        {
                            totalPercepcion = totalPercepcion + conceptos[i].importeExento + conceptos[i].importeGravable;
                        }
                    }
                    else if (string.Equals(conceptos[i].tipoNaturaleza, ManejadorEnum.GetDescription(Naturaleza.DEDUCCION), StringComparison.OrdinalIgnoreCase))
                    {
                        totalDeduciones = totalDeduciones + conceptos[i].importeExento + conceptos[i].importeGravable;
                    }
                }
            }
            concepto.Descuento     = UtileriasSat.castNumerosToBigDecimal(totalDeduciones);
            concepto.Importe       = (UtileriasSat.castNumerosToBigDecimal(totalPercepcion + totalOtrosPagos)); //@//pendiente la conversion
            concepto.ValorUnitario = (UtileriasSat.castNumerosToBigDecimal(totalPercepcion + totalOtrosPagos)); //@//pendiente la conversion
            return(concepto);
        }
 public DatosEmpleadoComprobate(CFDIEmpleado cfdiEmpleado, Comprobante comprobante)
 {
     this.cfdiEmpleado = cfdiEmpleado;
     this.comprobante  = comprobante;
     folio             = comprobante.Folio;
 }
        private String nomenclaturaNombreArchivo(TipoNomina tipoNomina, PeriodosNomina periodosNomina, CFDIEmpleado cFDIEmpleado)
        {
            StringBuilder builder = new StringBuilder();

            builder.Append("TIPNOM_").Append((tipoNomina).clave).Append("_");
            builder.Append("PERIODO_").Append(periodosNomina.clave).Append("_");
            builder.Append("NUMEMP_").Append(cFDIEmpleado.plazasPorEmpleadosMov.plazasPorEmpleado.empleados.clave).Append("_");
            builder.Append("FOLIO_").Append(cFDIEmpleado.cfdiRecibo.serieCFDI).Append(cFDIEmpleado.cfdiRecibo.folioCFDI).Append(".xml");
            return(builder.ToString());
        }
        private CFDIEmpleado costruyeCFDIEmpleado(DatosPorEmpleado datosPorEmpleado, PeriodosNomina periodoNomina, TipoCorrida tipoCorrida, TipoNomina nomina, DateTime fechaActual, RazonesSociales razonesSocialesActual)
        {
            CFDIEmpleado cfdiEmpleado = new CFDIEmpleado();

            PlazasPorEmpleadosMov ppem     = (PlazasPorEmpleadosMov)datosPorEmpleado.plazasPorEmpleadosMov;
            Empleados             empleado = ppem.plazasPorEmpleado.empleados;

            cfdiEmpleado.razonesSociales = (razonesSocialesActual);//MainPrincipal.getRazonesSocialesActual());
            //validaDatosRazonSocial(razonesSocialesActual);//MainPrincipal.getRazonesSocialesActual());
            cfdiEmpleado.tipoCorrida           = (tipoCorrida);
            cfdiEmpleado.tipoNomina            = (nomina);
            cfdiEmpleado.periodosNomina        = (periodoNomina);
            cfdiEmpleado.plazasPorEmpleadosMov = (ppem);
            cfdiEmpleado.nombre          = (empleado.nombre);
            cfdiEmpleado.apellidoMaterno = (empleado.apellidoMaterno);
            cfdiEmpleado.apellidoPaterno = (empleado.apellidoPaterno);
            camposNecesariosMsg.Append(empleado.CURP == null ? "Empleado_CURP|" : !empleado.CURP.Any() ? "Empleado_CURP|" : "");
            cfdiEmpleado.CURP = (empleado.CURP);
            camposNecesariosMsg.Append(empleado.RFC == null ? "Empleado_RFC|" : !empleado.RFC.Any() ? "Empleado_RFC|" : "");
            cfdiEmpleado.RFC        = (empleado.RFC);
            cfdiEmpleado.calle      = (empleado.domicilio);
            cfdiEmpleado.noExterior = (empleado.numeroExt);
            cfdiEmpleado.noInterior = (empleado.numeroInt);
            cfdiEmpleado.colonia    = (empleado.colonia);

            if (empleado.cp != null)
            {
                cfdiEmpleado.codigoPostal = (empleado.cp.clave);
            }
            if (empleado.ciudades != null)
            {
                cfdiEmpleado.ciudad = (empleado.ciudades.descripcion);
            }
            if (empleado.municipios != null)
            {
                cfdiEmpleado.municipio = (empleado.municipios.descripcion);
            }
            if (empleado.estados != null)
            {
                cfdiEmpleado.estado = (empleado.estados.clave);
            }
            if (empleado.paises == null)
            {
                camposNecesariosMsg.Append("Empleado_Pais|");
            }
            else
            {
                String pais = empleado.paises.descripcion;
                camposNecesariosMsg.Append(pais == null ? "Empleado_Pais|" : !pais.Any() ? "Empleado_Pais|" : "");
                cfdiEmpleado.pais = (pais);
            }
            cfdiEmpleado.correoElectronico = (empleado.correoElectronico);
            cfdiEmpleado.noSeguroSocial    = (empleado.IMSS);

            cfdiEmpleado.formaPago          = "99"; //dato fijo segun la guia de llenado
            cfdiEmpleado.noRegistroPatronal = (ppem.plazasPorEmpleado.registroPatronal == null ? null : ppem.plazasPorEmpleado.registroPatronal.registroPatronal.Replace(" ", "-"));
            cfdiEmpleado.tipoContrato       = (ppem.tipoContrato == null ? null : ppem.tipoContrato.clave);
            cfdiEmpleado.riesgoPuesto       = (ppem.plazasPorEmpleado.registroPatronal == null ? null : ppem.plazasPorEmpleado.registroPatronal.riesgoPuesto);
            camposNecesariosMsg.Append(ppem.plazasPorEmpleado.registroPatronal == null ? "RegistroPatronal_RiesgoPuesto|" : ppem.plazasPorEmpleado.registroPatronal.riesgoPuesto == null ? "RegistroPatronal_RiesgoPuesto|" : !ppem.plazasPorEmpleado.registroPatronal.riesgoPuesto.Any() ? "RegistroPatronal_RiesgoPuesto|" : "");
            cfdiEmpleado.puesto       = (ppem.puestos == null ? null : ppem.puestos.descripcion);
            cfdiEmpleado.departamento = (ppem.departamentos == null ? null : ppem.departamentos.descripcion);

            cfdiEmpleado.fechaInicioRelLaboral = (ppem.fechaInicial); /// fecha ingreso esta en ingresos y reingresos

            if (tipoCorrida == null ? false : string.Equals(tipoCorrida.clave, "ASI", StringComparison.OrdinalIgnoreCase))
            {//
             //  camposNecesariosMsg.Append(ppem.clabe == null ? "PlazasPorEmpleadosMov_CLABE|" : !ppem.clabe.Trim().Any() ? "PlazasPorEmpleadosMov_CLABE" : "");
            }
            //cfdiEmpleado.CLABE = (ppem.clabe);
            //camposNecesariosMsg.Append(ppem.bancos == null ? "PlazasPorEmpleadosMov_Bancos|" : "");
            //cfdiEmpleado.claveBancoSat = (ppem.bancos == null ? null : ppem.bancos.clave);

            //if (ppem.cuentaBancaria != null)
            //{
            //    cfdiEmpleado.cuentaBancaria = (ppem.cuentaBancaria.Replace("-", ""));
            //}
            camposNecesariosMsg.Append(ppem.regimenContratacion == null ? "PlazasPorEmpleadosMov_RegimenContratacion|" : "");
            cfdiEmpleado.regimenContratacion = (ppem.regimenContratacion);
            cfdiEmpleado.jornada             = (ppem.turnos == null ? null : ppem.turnos.Jornada == null ? null : ppem.turnos.Jornada.clave);

            camposNecesariosMsg.Append(periodoNomina.fechaPago == null ? "PeriodosNomina_FechaPago|" : "");
            cfdiEmpleado.fechaPago = (periodoNomina.fechaPago.GetValueOrDefault());
            camposNecesariosMsg.Append(periodoNomina.fechaFinal == null ? "PeriodosNomina_FechaFinal|" : "");
            cfdiEmpleado.fechaFinalPago = (periodoNomina.fechaFinal.GetValueOrDefault());
            camposNecesariosMsg.Append(periodoNomina.fechaInicial == null ? "PeriodosNomina_FechaInicial|" : "");
            cfdiEmpleado.fechaInicioPago = (periodoNomina.fechaInicial.GetValueOrDefault());
            camposNecesariosMsg.Append(periodoNomina.diasPago == null ? "PeriodosNomina_DiasPago|" : "");
            cfdiEmpleado.numeroDiasPago = (periodoNomina.diasPago.GetValueOrDefault());

            cfdiEmpleado.salIntIMSS      = (datosPorEmpleado.salarioDiarioIntegrado);
            cfdiEmpleado.salBaseCotAport = (ppem.sueldoDiario);
            if (datosPorEmpleado.fechaIngreso == null || fechaActual == null)
            {
                System.Diagnostics.Debug.WriteLine("Las fechas del empleado estan vacías");
            }                                                                                                                                                                  ////datosPorEmpleado.getFechaIngreso()
            cfdiEmpleado.antiguedad    = (Utilerias.cantidadSemanasEntreDosFechasStatic(ppem.fechaInicial.GetValueOrDefault(), periodoNomina.fechaFinal.GetValueOrDefault())); //calculado
            cfdiEmpleado.antiguedadYMD = (UtileriasSat.getAntiguedadYMD(ppem.fechaInicial.GetValueOrDefault(), periodoNomina.fechaFinal.GetValueOrDefault()));                 //calculado

            cfdiEmpleado.periodiciadadPago = (nomina.periodicidad.clave);

            return(cfdiEmpleado);
        }
        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);
        }