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 CFDIReciboHrsExtras construyeCFDIReciboHrsExtras(CFDIReciboHrsExtras cfdiReciboHrsExtra, DatosHorasExtras horasExtra) { if (cfdiReciboHrsExtra == null) { cfdiReciboHrsExtra = new CFDIReciboHrsExtras(); } if (mapConceptosHrsExtras.ContainsKey(horasExtra.asistencia.excepciones.concepNomDefi.clave)) { MovNomConcep mnc = mapConceptosHrsExtras[horasExtra.asistencia.excepciones.concepNomDefi.clave];//.get(horasExtra.getAsistencia().getExcepciones().getConcepNomDefi().getClave()); if (mnc != null) { cfdiReciboHrsExtra.dias = (horasExtra.dias); cfdiReciboHrsExtra.horasExtras = (horasExtra.hrsExtas); if (string.Equals(horasExtra.asistencia.excepciones.clave, ClavesParametrosModulos.claveExcepcionExtraDoble.ToString(), StringComparison.OrdinalIgnoreCase)) { cfdiReciboHrsExtra.tipoHoras = ("01"); } else if (string.Equals(horasExtra.asistencia.excepciones.clave, ClavesParametrosModulos.claveExcepcionExtraTriple.ToString(), StringComparison.OrdinalIgnoreCase)) { cfdiReciboHrsExtra.tipoHoras = ("02"); } else { cfdiReciboHrsExtra.tipoHoras = ("03"); } if (mnc.movNomBaseAfecta == null) { cfdiReciboHrsExtra.importeExento = (0.0); cfdiReciboHrsExtra.importeGravable = (0.0); } else { List <MovNomBaseAfecta> baseAfectas = mnc.movNomBaseAfecta; if (!baseAfectas.Any()) { cfdiReciboHrsExtra.importeExento = (0.0); cfdiReciboHrsExtra.importeGravable = (0.0); } else { int j; for (j = 0; j < baseAfectas.Count(); j++) { if (string.Equals(baseAfectas[j].baseAfecConcepNom.baseNomina.clave, (String)ClavesParametrosModulos.claveBaseNominaISR, StringComparison.OrdinalIgnoreCase)) { cfdiReciboHrsExtra.importeExento = (baseAfectas[j].resultadoExento.GetValueOrDefault()); cfdiReciboHrsExtra.importeGravable = (baseAfectas[j].resultado.GetValueOrDefault()); break; } else { cfdiReciboHrsExtra.importeExento = (0.0); cfdiReciboHrsExtra.importeGravable = (0.0); } } } } } else { cfdiReciboHrsExtra = null; } } else { cfdiReciboHrsExtra = null; } return(cfdiReciboHrsExtra); }
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); }