private NominaPercepcionesJubilacionPensionRetiro createJubilacionRetiro(ConceptosJubilacion conceptosJubilacion, Double total, Double?montoDiario, Double ultSueldoMen) { NominaPercepcionesJubilacionPensionRetiro jubilacionPensionRetiro = new NominaPercepcionesJubilacionPensionRetiro(); if (conceptosJubilacion == ConceptosJubilacion.TOTAL) { jubilacionPensionRetiro.TotalUnaExhibicion = (UtileriasSat.castNumerosToBigDecimal(total)); } if (conceptosJubilacion == ConceptosJubilacion.PARCIAL) { jubilacionPensionRetiro.MontoDiario = (UtileriasSat.castNumerosToBigDecimal(total)); jubilacionPensionRetiro.TotalParcialidad = (UtileriasSat.castNumerosToBigDecimal(montoDiario)); } if (ultSueldoMen.CompareTo(total) > 0) { jubilacionPensionRetiro.IngresoAcumulable = (UtileriasSat.castNumerosToBigDecimal(total)); } else { jubilacionPensionRetiro.IngresoAcumulable = (UtileriasSat.castNumerosToBigDecimal(ultSueldoMen)); } jubilacionPensionRetiro.IngresoNoAcumulable = (UtileriasSat.castNumerosToBigDecimal(total - ultSueldoMen)); return(jubilacionPensionRetiro); }
private NominaDeducciones contruyeNominaListaDeducciones(List <CFDIReciboConcepto> listConceptos) { NominaDeducciones deducciones = null; listConceptos = listConceptos == null ? new List <CFDIReciboConcepto>() : listConceptos; if (listConceptos.Count() > 0) { deducciones = new NominaDeducciones(); List <NominaDeduccionesDeduccion> listDeducciones = new List <NominaDeduccionesDeduccion>(); int i; Double totalImpuestosRetenidos = 0.0, totalOtrasDeducciones = 0.0; for (i = 0; i < listConceptos.Count(); i++) { if (string.Equals(listConceptos[i].claveSAT, "002", StringComparison.OrdinalIgnoreCase)) { totalImpuestosRetenidos = totalImpuestosRetenidos + listConceptos[i].importeExento + listConceptos[i].importeGravable; } else { totalOtrasDeducciones = totalOtrasDeducciones + listConceptos[i].importeGravable + listConceptos[i].importeExento; } listDeducciones.Add(contruyeNominaDeduccion(listConceptos[i])); } totalDeducciones = totalImpuestosRetenidos + totalOtrasDeducciones; deducciones.Deduccion = listDeducciones.ToArray(); if (totalImpuestosRetenidos > 0.0) { deducciones.TotalImpuestosRetenidos = (UtileriasSat.castNumerosToBigDecimal(totalImpuestosRetenidos)); } deducciones.TotalOtrasDeducciones = (UtileriasSat.castNumerosToBigDecimal(totalOtrasDeducciones)); } return(deducciones); }
private NominaOtroPago contruyeNominaOtroPago(List <CFDIReciboConcepto> listConceptosOtros) { NominaOtroPago otroPago = new NominaOtroPago(); int i; Double total1 = 0.0, total2 = 0.0; for (i = 0; i < listConceptosOtros.Count(); i++) { if (i == 0) { total1 = listConceptosOtros[i].importeGravable + listConceptosOtros[i].importeExento; } if (i == 1) { total2 = listConceptosOtros[i].importeExento + listConceptosOtros[i].importeGravable; } } if (total1 < total2) { otroPago.Clave = (listConceptosOtros[0].claveConcepto); otroPago.Concepto = (listConceptosOtros[0].descripcionConcepto); otroPago.TipoOtroPago = (listConceptosOtros[0].claveSAT); otroPago.Importe = (UtileriasSat.castNumerosToBigDecimal(listConceptosOtros[0].importeExento)); otroPago.SubsidioAlEmpleo = (creaSubsidioAlEmpleo(total2)); } if (total1 > total2) { if (listConceptosOtros.Count() == 1) { otroPago.Clave = (listConceptosOtros[0].claveConcepto); otroPago.Concepto = (listConceptosOtros[0].descripcionConcepto); otroPago.TipoOtroPago = (listConceptosOtros[0].claveSAT); otroPago.Importe = (UtileriasSat.castNumerosToBigDecimal(listConceptosOtros[0].importeExento)); } else { otroPago.Clave = (listConceptosOtros[1].claveConcepto); otroPago.Concepto = (listConceptosOtros[1].descripcionConcepto); otroPago.TipoOtroPago = (listConceptosOtros[1].claveSAT); otroPago.Importe = (UtileriasSat.castNumerosToBigDecimal(listConceptosOtros[1].importeExento)); } otroPago.SubsidioAlEmpleo = (creaSubsidioAlEmpleo(total1)); } /* otroPago.Clave=(cfdiConceptoPercepcion.claveConcepto); * otroPago.Concepto=(cfdiConceptoPercepcion.descripcionConcepto); * otroPago.TipoOtroPago=(cfdiConceptoPercepcion.claveSAT); * otroPago.Importe=(UtileriasSat.castNumerosToBigDecimal(cfdiConceptoPercepcion.importeExento)); * * otroPago.SubsidioAlEmpleo=(creaSubsidioAlEmpleo(cfdiConceptoPercepcion.importeExento)); ///pendiente * //////// otroPago.setCompensacionSaldosAFavor(creaCompensacionSaldosAFavor());////pendiente */ return(otroPago); }
private NominaOtroPagoSubsidioAlEmpleo creaSubsidioAlEmpleo(Double subsidioCausado) { NominaOtroPagoSubsidioAlEmpleo subsidioAlEmpleo = new NominaOtroPagoSubsidioAlEmpleo(); subsidioAlEmpleo.SubsidioCausado = (UtileriasSat.castNumerosToBigDecimal(subsidioCausado)); return(subsidioAlEmpleo); }
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 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 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 List <NominaOtroPago> construyeSinSubsidio() { //--- List <NominaOtroPago> listOtrosPagos = new List <NominaOtroPago>(); NominaOtroPago otroPago = new NominaOtroPago(); otroPago.Clave = conceptoNominaSubsidio.clave; //(listConceptosOtros[0].claveConcepto); otroPago.Concepto = conceptoNominaSubsidio.descripcion; //(listConceptosOtros[0].descripcionConcepto); otroPago.TipoOtroPago = "002"; //(listConceptosOtros[0].claveSAT); otroPago.Importe = (UtileriasSat.castNumerosToBigDecimal(0.00)); otroPago.SubsidioAlEmpleo = (creaSubsidioAlEmpleo(0)); listOtrosPagos.Add(otroPago); return(listOtrosPagos); }
/*finiquito*/ private NominaPercepcionesSeparacionIndemnizacion createSeparacionIndemnizacion(Double totalSeparacionIndeminizacion, Double ultSueldoMes, int anioServ) { NominaPercepcionesSeparacionIndemnizacion separacionIndemnizacion = new NominaPercepcionesSeparacionIndemnizacion(); separacionIndemnizacion.NumAñosServicio = (anioServ); separacionIndemnizacion.TotalPagado = (UtileriasSat.castNumerosToBigDecimal(totalSeparacionIndeminizacion)); separacionIndemnizacion.UltimoSueldoMensOrd = (UtileriasSat.castNumerosToBigDecimal(ultSueldoMes)); if (ultSueldoMes.CompareTo(totalSeparacionIndeminizacion) > 0) { separacionIndemnizacion.IngresoAcumulable = (UtileriasSat.castNumerosToBigDecimal(totalSeparacionIndeminizacion)); } else { separacionIndemnizacion.IngresoAcumulable = (UtileriasSat.castNumerosToBigDecimal(ultSueldoMes)); } separacionIndemnizacion.IngresoNoAcumulable = (UtileriasSat.castNumerosToBigDecimal(totalSeparacionIndeminizacion - ultSueldoMes)); return(separacionIndemnizacion); }
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 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 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); }
private NominaPercepciones contruyeNominaListaPercepciones(List <CFDIReciboConcepto> listConceptos, List <CFDIReciboHrsExtras> listReciboHorasExtras) { NominaPercepciones percepciones = null; existeIncapacidades = false; listConceptos = listConceptos == null ? new List <CFDIReciboConcepto>() : listConceptos; if (listConceptos.Count() > 0) { double ultSueldo = 0.0; percepciones = new NominaPercepciones(); List <NominaPercepcionesPercepcion> listPercepciones = new List <NominaPercepcionesPercepcion>(); int i; bool jubilacion = false, separacionIndeminizacion = false; Double totalExento = 0.0, totalGravable = 0.0, totalSueldo = 0.0, totalSeparacionIndeminizacion = 0.0, totalJubilacionPension = 0.0; ConceptosJubilacion conceptosJubilacion = ConceptosJubilacion.NINGUNA; for (i = 0; i < listConceptos.Count(); i++) { totalExento = totalExento + listConceptos[i].importeExento; totalGravable = totalGravable + listConceptos[i].importeGravable; if (string.Equals(listConceptos[i].claveSAT, "014", StringComparison.OrdinalIgnoreCase)) { existeIncapacidades = true; } if (string.Equals(listConceptos[i].claveSAT, "001", StringComparison.OrdinalIgnoreCase)) { existeIncapacidades = true; ultSueldo = listConceptos[i].importeExento + listConceptos[i].importeGravable; } if (string.Equals(listConceptos[i].claveSAT, "022", StringComparison.OrdinalIgnoreCase) | string.Equals(listConceptos[i].claveSAT, "023", StringComparison.OrdinalIgnoreCase) | string.Equals(listConceptos[i].claveSAT, "025", StringComparison.OrdinalIgnoreCase)) { /////SeparacionIndeminizacion totalSeparacionIndeminizacion = totalSeparacionIndeminizacion + listConceptos[i].importeExento + listConceptos[i].importeGravable; separacionIndeminizacion = true; } else if (string.Equals(listConceptos[i].claveSAT, "039", StringComparison.OrdinalIgnoreCase) | string.Equals(listConceptos[i].claveSAT, "044", StringComparison.OrdinalIgnoreCase)) { ///JubilacionPension totalJubilacionPension = totalJubilacionPension + listConceptos[i].importeExento + listConceptos[i].importeGravable; jubilacion = true; if (string.Equals(listConceptos[i].claveSAT, "039", StringComparison.OrdinalIgnoreCase)) { conceptosJubilacion = ConceptosJubilacion.TOTAL; } else if (string.Equals(listConceptos[i].claveSAT, "044", StringComparison.OrdinalIgnoreCase)) { conceptosJubilacion = ConceptosJubilacion.PARCIAL; } } else { totalSueldo = totalSueldo + listConceptos[i].importeExento + listConceptos[i].importeGravable; } listPercepciones.Add(contruyeNominaPercepcion(listConceptos[i], listReciboHorasExtras)); } percepciones.Percepcion = listPercepciones.ToArray(); totalPercepciones = totalExento + totalGravable; percepciones.TotalExento = (UtileriasSat.castNumerosToBigDecimal(totalExento)); percepciones.TotalGravado = (UtileriasSat.castNumerosToBigDecimal(totalGravable)); percepciones.TotalSueldos = (UtileriasSat.castNumerosToBigDecimal(totalSueldo)); if (jubilacion) { percepciones.JubilacionPensionRetiro = (createJubilacionRetiro(conceptosJubilacion, totalJubilacionPension, null, ultSueldo)); //pendiente percepciones.TotalJubilacionPensionRetiro = (UtileriasSat.castNumerosToBigDecimal(totalJubilacionPension)); } if (separacionIndeminizacion) { percepciones.TotalSeparacionIndemnizacion = (UtileriasSat.castNumerosToBigDecimal(totalSeparacionIndeminizacion)); percepciones.SeparacionIndemnizacion = (createSeparacionIndemnizacion(totalSeparacionIndeminizacion, ultSueldo, anioServicio)); } } return(percepciones); }