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); } }
public Mensaje getTipoDeRedondeoPorTipoValor(TipoDeValor tipoValor, DBContextAdapter dbContext) { List <TipoDeRedondeo> tipoDeRedondeo = new List <TipoDeRedondeo>(); try { inicializaVariableMensaje(); setSession(dbContext.context); getSession().Database.BeginTransaction(); tipoDeRedondeo = (from tr in getSession().Set <TipoDeRedondeo>() where tr.tipoDeValorString == ManejadorEnum.GetDescription(tipoValor) select tr).ToList(); mensajeResultado.resultado = tipoDeRedondeo; mensajeResultado.noError = 0; mensajeResultado.error = ""; getSession().Database.CurrentTransaction.Commit(); } catch (Exception ex) { System.Diagnostics.Debug.WriteLine(concatena.Remove(0, concatena.Length).Append(msgError).Append("getTipoDeRedondeoPorTipoValor()1_Error: ").Append(ex)); mensajeResultado.noError = ControlErroresEntity.buscaNoErrorPorExcepcion(ex); mensajeResultado.error = ex.GetBaseException().ToString(); mensajeResultado.resultado = null; getSession().Database.CurrentTransaction.Rollback(); } return(mensajeResultado); }
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 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 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 List <String> convierteXML(byte[] xmlString) { List <string> controladores = new List <string>(); try { MemoryStream ms = new MemoryStream(xmlString); string cadenas = SerializationHelper.UTF8ByteArrayToString(xmlString); XmlDocument doc = new XmlDocument(); doc.LoadXml(cadenas); XmlNode node = doc.DocumentElement; XmlNodeList list; int i; node = doc.GetElementsByTagName("Controladores").Item(0); if (node != null) { list = node.ChildNodes; controladores = new List <string>(); for (i = 0; i < list.Count; i++) { XmlElement element = (XmlElement)list.Item(i); if (element.HasAttributes) { if ((TipoControlador)ManejadorEnum.GetValue(element.GetAttribute("identificador"), typeof(TipoControlador)) == TipoControlador.CONTROLADORENTIDAD) { element.GetAttribute("entidad"); element.GetAttribute("sistema"); controladores.Add(element.GetAttribute("entidad")); } } } } } catch (Exception ex) { System.Diagnostics.Debug.WriteLine(concatena.Remove(0, concatena.Length).Append(msgError).Append("convierteXML()1_Error: ").Append(ex)); mensajeResultado.noError = ControlErroresEntity.buscaNoErrorPorExcepcion(ex); mensajeResultado.error = ex.GetBaseException().ToString(); mensajeResultado.resultado = null; } return(controladores); }
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 void setTipoBaja(String modoBaja) { this.tipoBaja = (TipoBaja)ManejadorEnum.GetValue(modoBaja, typeof(TipoBaja)); }
public void setModoBaja(String modoBaja) { //this.modoBaja = ModoBaja.getEnumString(modoBaja); this.modoBaja = (ModoBaja)ManejadorEnum.GetValue(modoBaja, typeof(ModoBaja)); }
private CFDIRecibo construyeCFDIRecibo(List <MovNomConcep> listMovNom, List <DatosHorasExtras> listHrsExtras, List <DatosIncapacidades> listIncapacidades, DateTime fechaActual) { CFDIRecibo cfdiRecibo = new CFDIRecibo(); //////// cfdiRecibo.setCadenaCertificado(nombreTablaBDs); //////// cfdiRecibo.setCadenaOriginalTimbrado(nombreTablaBDs); //////// cfdiRecibo.setCertificadoTimbrado(nombreTablaBDs); cfdiRecibo.fechaGeneraInfo = (fechaActual); //////// cfdiRecibo.setFechaHoraTimCancelado(null); //////// cfdiRecibo.setFechaHoraTimbrado(null); //////// cfdiRecibo.setFolioCFDI(msgError); //////// cfdiRecibo.setMensaje(msgError); //////// cfdiRecibo.setMotivoCancelacion(nombreTablaBDs); //////// cfdiRecibo.setNoCertificado(nombreTablaBDs); //////// cfdiRecibo.setSello(msgError); //////// cfdiRecibo.setSelloTimbrado(nombreTablaBDs); //////// cfdiRecibo.setSerieCFDI(msgError); cfdiRecibo.statusTimbrado = (StatusTimbrado.EN_PROCESO); ////// cfdiRecibo.setUUID(msgError); ////// cfdiRecibo.setVersion(msgError); ////// cfdiRecibo.setXmlTimbrado(xmlTimbrado); //***genera datos conceptos***/ listMovNom = listMovNom == null ? new List <MovNomConcep>() : listMovNom; double totalPercepcion = 0.0, totalDeduccion = 0.0, totalOtrosPagos = 0.0, totalSeparacionIndeminizacion = 0.0; if (listMovNom.Count() > 0) { int i, j; List <MovNomBaseAfecta> baseAfectas; List <CFDIReciboConcepto> listReciboConceptos = new List <CFDIReciboConcepto>(); CFDIReciboConcepto reciboConcepto; ConcepNomDefi cnd; Naturaleza naturaleza; ConfigConceptosSat claveConSat; for (i = 0; i < listMovNom.Count(); i++) { cnd = listMovNom[i].concepNomDefi; naturaleza = cnd.naturaleza; if (listMovNom[i].resultado == null ? true : listMovNom[i].resultado == 0.0) { camposNecesariosMsg.Append(cnd.clave).Append(".- ").Append(cnd.descripcion).Append(" No ha sido calculado|"); } else { if ( (listMovNom[i].concepNomDefi.naturaleza == Naturaleza.PERCEPCION | listMovNom[i].concepNomDefi.naturaleza == Naturaleza.DEDUCCION | ( (listMovNom[i].concepNomDefi.naturaleza == Naturaleza.CALCULO) && ((listMovNom[i].concepNomDefi.formulaConcepto == "SubsEmpleoCalculado") | (listMovNom[i].concepNomDefi.formulaConcepto == "ISRSubsidio")) ) ) & mapConceptosSAT.ContainsKey(string.Concat(cnd.clave, ManejadorEnum.GetDescription(naturaleza))) ) { if (mapConceptosIncapacidades.ContainsKey(cnd.clave)) { claveConSat = mapConceptosSAT[string.Concat(cnd.clave, ManejadorEnum.GetDescription(naturaleza))];//.get(cnd.getClave().concat(naturaleza.name())); if (string.Equals(claveConSat.conceptoSatClave, ClavesParametrosModulos.claveConceptoIncapacidadesSAT.ToString(), StringComparison.OrdinalIgnoreCase)) { mapConceptosIncapacidades[cnd.clave] = listMovNom[i];//.put(cnd.getClave(), listMovNom.get(i)); } } else if (mapConceptosHrsExtras.ContainsKey(cnd.clave)) { //claveConSat = mapConceptosSAT.get(cnd.getClave().concat(naturaleza.name())); claveConSat = mapConceptosSAT[string.Concat(cnd.clave, ManejadorEnum.GetDescription(naturaleza))]; if (string.Equals(claveConSat.conceptoSatClave, ClavesParametrosModulos.claveConceptoHrsExtrasSAT.ToString(), StringComparison.OrdinalIgnoreCase)) { // mapConceptosHrsExtras.put(cnd.getClave(), listMovNom.get(i)); mapConceptosHrsExtras[cnd.clave] = listMovNom[i]; } } reciboConcepto = new CFDIReciboConcepto(); reciboConcepto.id = 0; reciboConcepto.claveConcepto = (cnd.clave); // claveConSat = mapConceptosSAT.get(cnd.getClave().concat(naturaleza.name())); claveConSat = mapConceptosSAT[string.Concat(cnd.clave, ManejadorEnum.GetDescription(naturaleza))]; reciboConcepto.claveSAT = (claveConSat.conceptoSatClave); reciboConcepto.descripcionConcepto = (cnd.descripcion); reciboConcepto.tipoNaturaleza = (ManejadorEnum.GetDescription(naturaleza)); reciboConcepto.otroPago = (claveConSat.otroPago); if (listMovNom[i].movNomBaseAfecta == null) { reciboConcepto.importeExento = (0.0); reciboConcepto.importeGravable = (0.0); } else { baseAfectas = listMovNom[i].movNomBaseAfecta; if (!baseAfectas.Any()) { if (claveConSat.otroPago & naturaleza == Naturaleza.PERCEPCION) { totalOtrosPagos = totalOtrosPagos + listMovNom[i].resultado.GetValueOrDefault(); } else if (naturaleza == Naturaleza.PERCEPCION) { totalPercepcion = totalPercepcion + listMovNom[i].resultado.GetValueOrDefault(); } else if (naturaleza == Naturaleza.DEDUCCION) { totalDeduccion = totalDeduccion + listMovNom[i].resultado.GetValueOrDefault(); } reciboConcepto.importeExento = (listMovNom[i].resultado == null ? 0.0 : listMovNom[i].resultado.GetValueOrDefault()); reciboConcepto.importeGravable = (0.0); } else { for (j = 0; j < baseAfectas.Count(); j++) { //string.Equals(baseAfectas[j].baseAfecConcepNom.baseNomina.clave, (String)ClavesParametrosModulos.claveBaseNominaISR, StringComparison.OrdinalIgnoreCase) if (string.Equals(baseAfectas[j].baseAfecConcepNom.baseNomina.clave, (String)ClavesParametrosModulos.claveBaseNominaISR, StringComparison.OrdinalIgnoreCase)) { if (cnd.formulaConcepto.ToUpper().Contains("ISRSubsidio".ToUpper())) { reciboConcepto.importeExento = (listMovNom[i].resultado == null ? 0.0 : listMovNom[i].resultado.GetValueOrDefault()); reciboConcepto.importeGravable = (0.0); } else if (cnd.formulaConcepto.ToUpper().Contains("CalculoISR".ToUpper()) | cnd.formulaConcepto.ToUpper().Contains("CalculoIMSS".ToUpper()) | cnd.formulaConcepto.ToUpper().Contains("CalculoIMSSPatronal".ToUpper())) { reciboConcepto.importeExento = (0.0); reciboConcepto.importeGravable = (listMovNom[i].resultado == null ? 0.0 : listMovNom[i].resultado.GetValueOrDefault()); } else { reciboConcepto.importeExento = (baseAfectas[j].resultadoExento == null ? 0.0 : baseAfectas[j].resultadoExento.GetValueOrDefault()); reciboConcepto.importeGravable = (baseAfectas[j].resultado == null ? 0.0 : baseAfectas[j].resultado.GetValueOrDefault()); } if (claveConSat.otroPago & naturaleza == Naturaleza.PERCEPCION) { totalOtrosPagos = totalOtrosPagos + reciboConcepto.importeExento + reciboConcepto.importeGravable; } else if (naturaleza == Naturaleza.PERCEPCION) { totalPercepcion = totalPercepcion + reciboConcepto.importeExento + reciboConcepto.importeGravable; } else if (naturaleza == Naturaleza.DEDUCCION) { totalDeduccion = totalDeduccion + reciboConcepto.importeExento + reciboConcepto.importeGravable; } break; } else { if (claveConSat.otroPago & naturaleza == Naturaleza.PERCEPCION) { totalOtrosPagos = totalOtrosPagos + listMovNom[i].resultado.GetValueOrDefault(); } else if (naturaleza == Naturaleza.PERCEPCION) { totalPercepcion = totalPercepcion + listMovNom[i].resultado.GetValueOrDefault(); } else if (naturaleza == Naturaleza.DEDUCCION) { totalDeduccion = totalDeduccion + listMovNom[i].resultado.GetValueOrDefault(); } reciboConcepto.importeExento = (listMovNom[i].resultado.GetValueOrDefault()); reciboConcepto.importeGravable = (0.0); } } } } if (naturaleza == Naturaleza.PERCEPCION) { if (string.Equals(claveConSat.conceptoSatClave, "022", StringComparison.OrdinalIgnoreCase) | string.Equals(claveConSat.conceptoSatClave, "023", StringComparison.OrdinalIgnoreCase) | string.Equals(claveConSat.conceptoSatClave, "025", StringComparison.OrdinalIgnoreCase)) { totalSeparacionIndeminizacion = totalSeparacionIndeminizacion + reciboConcepto.importeExento + reciboConcepto.importeGravable; } } listReciboConceptos.Add(reciboConcepto); } else { camposNecesariosMsg.Append(cnd.clave).Append(".- ").Append(cnd.descripcion).Append(" ").Append("");//Utilerias.ObtenerMensaje.getString("ConcepNomDefiMsgClaveSat")).append("|");Pendiente } } } listHrsExtras = listHrsExtras == null ? new List <DatosHorasExtras>() : listHrsExtras; if (listHrsExtras.Count() > 0) { List <CFDIReciboHrsExtras> cfdiReciboHrsExtras = new List <CFDIReciboHrsExtras>(); CFDIReciboHrsExtras cfdiReciboHrsExtra = null; for (i = 0; i < listHrsExtras.Count(); i++) { cfdiReciboHrsExtra = construyeCFDIReciboHrsExtras(cfdiReciboHrsExtra, listHrsExtras[i]); if (cfdiReciboHrsExtra != null) { cfdiReciboHrsExtras.Add(cfdiReciboHrsExtra); } } cfdiRecibo.cfdiReciboHrsExtras = (!cfdiReciboHrsExtras.Any() ? null : cfdiReciboHrsExtras); } listIncapacidades = listIncapacidades == null ? new List <DatosIncapacidades>() : listIncapacidades; if (listIncapacidades.Count() > 0) { List <CFDIReciboIncapacidad> cfdiReciboIncapacidades = new List <CFDIReciboIncapacidad>(); CFDIReciboIncapacidad cfdiIncapacidad = null; for (i = 0; i < listIncapacidades.Count(); i++) { cfdiIncapacidad = construyeCFDIReciboIncapacidad(cfdiIncapacidad, listIncapacidades[i]); if (cfdiIncapacidad != null) { cfdiReciboIncapacidades.Add(cfdiIncapacidad); } } cfdiRecibo.cfdiReciboIncapacidad = (!cfdiReciboIncapacidades.Any() ? null : cfdiReciboIncapacidades); } cfdiRecibo.cfdiReciboConcepto = (listReciboConceptos); } cfdiRecibo.totalPercepcion = (totalPercepcion); cfdiRecibo.totalOtroPagos = (totalOtrosPagos); cfdiRecibo.totalDeduccion = (totalDeduccion); cfdiRecibo.total = (totalPercepcion + totalOtrosPagos + totalSeparacionIndeminizacion) - totalDeduccion; cfdiRecibo.mensajeRec = (camposNecesariosMsg.ToString());; return(cfdiRecibo); }