private NominaIncapacidad contruyeNominaIncapacidad(CFDIReciboIncapacidad cfdiReciboIncapacidad) { NominaIncapacidad incapacidad = new NominaIncapacidad(); incapacidad.ImporteMonetario = (UtileriasSat.castNumerosToBigDecimal(cfdiReciboIncapacidad.importeMonetario)); incapacidad.DiasIncapacidad = (cfdiReciboIncapacidad.diasIncapacidad); incapacidad.TipoIncapacidad = (cfdiReciboIncapacidad.tipoIncapacidad); return(incapacidad); }
private CFDIReciboIncapacidad construyeCFDIReciboIncapacidad(CFDIReciboIncapacidad cfdiReciboIncapacidad, DatosIncapacidades datosIncapacidad) { if (cfdiReciboIncapacidad == null) { cfdiReciboIncapacidad = new CFDIReciboIncapacidad(); } if (mapConceptosIncapacidades.ContainsKey(datosIncapacidad.asistencia.excepciones.concepNomDefi.clave)) { MovNomConcep mnc = mapConceptosIncapacidades[datosIncapacidad.asistencia.excepciones.concepNomDefi.clave];//.get(datosIncapacidad.getAsistencia().getExcepciones().getConcepNomDefi().getClave()); if (mnc != null) { cfdiReciboIncapacidad.importeMonetario = (mnc.resultado.GetValueOrDefault()); cfdiReciboIncapacidad.diasIncapacidad = (datosIncapacidad.dias); if (String.Equals(datosIncapacidad.asistencia.excepciones.clave, ClavesParametrosModulos.claveExcepcionIncapacidadPorAccidente.ToString(), StringComparison.OrdinalIgnoreCase)) { cfdiReciboIncapacidad.tipoIncapacidad = ("01"); } else if (string.Equals(datosIncapacidad.asistencia.excepciones.clave, ClavesParametrosModulos.claveExcepcionIncapacidadPorEnfermedad.ToString(), StringComparison.OrdinalIgnoreCase)) { cfdiReciboIncapacidad.tipoIncapacidad = ("02"); } else if (string.Equals(datosIncapacidad.asistencia.excepciones.clave, ClavesParametrosModulos.claveExcepcionIncapacidadPorMaternidad.ToString(), StringComparison.OrdinalIgnoreCase)) { cfdiReciboIncapacidad.tipoIncapacidad = ("03"); } } else { cfdiReciboIncapacidad = null; } } else { cfdiReciboIncapacidad = null; } return(cfdiReciboIncapacidad); }
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); }