private NominaDeduccionesDeduccion contruyeNominaDeduccion(CFDIReciboConcepto cfdiConceptoDeduccion) { NominaDeduccionesDeduccion deduccion = new NominaDeduccionesDeduccion(); deduccion.Clave = (cfdiConceptoDeduccion.claveConcepto); deduccion.Concepto = (cfdiConceptoDeduccion.descripcionConcepto); Double importe = cfdiConceptoDeduccion.importeExento + cfdiConceptoDeduccion.importeGravable; deduccion.Importe = (UtileriasSat.castNumerosToBigDecimal(importe)); deduccion.TipoDeduccion = (cfdiConceptoDeduccion.claveSAT); return(deduccion); }
private NominaPercepcionesPercepcion contruyeNominaPercepcion(CFDIReciboConcepto cfdiConceptoPercepcion, List <CFDIReciboHrsExtras> listReciboHorasExtras) { NominaPercepcionesPercepcion percepcion = new NominaPercepcionesPercepcion(); percepcion.Clave = (cfdiConceptoPercepcion.claveConcepto); percepcion.Concepto = (cfdiConceptoPercepcion.descripcionConcepto); percepcion.ImporteExento = (UtileriasSat.castNumerosToBigDecimal(cfdiConceptoPercepcion.importeExento)); percepcion.ImporteGravado = (UtileriasSat.castNumerosToBigDecimal(cfdiConceptoPercepcion.importeGravable)); percepcion.TipoPercepcion = (cfdiConceptoPercepcion.claveSAT); if (string.Equals(cfdiConceptoPercepcion.claveSAT, "045")) { // accciones y titulos percepcion.AccionesOTitulos = (createAccionesTitulos()); } else if (string.Equals(cfdiConceptoPercepcion.claveSAT, "019")) { /// horas extras contruyeNominaListaHorasExtras(percepcion.HorasExtra.ToList(), listReciboHorasExtras); } return(percepcion); }
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); }