Está en la página 1de 19

APLICAR PROCESO PIRAMIDAR

Public Function aplicarProcesoPiramidar(ByVal sEmpleado As empleado, ByRef cn As SqlConnection, ByRef tx As SqlTransaction) As String Dim dImporteConImpuesto As Double = 0 Dim dImpuestoTemporal As Double = 0 Dim dAyudaFiscal As Double = 0 Dim dSueldoBruto As Double = 0 Dim dSueldoNeto As Double = 0 Dim dOtrasPrestaciones As Double = 0 Dim dNetoTemporal As Double = 0 Dim dNetoGarantizar As Double = 0 Dim dBaseGravable As Double = 0 Dim dPrevisionSocial As Double = 0 Dim dImporteExentableMensual As Double = 0 Dim dAgregados As Double = 0 Dim dSalud As Double = 0 Dim dISR As Double = 0 Dim dISRquincena2 As Double = 0 Dim dISRMensual As Double = 0 Dim cmd As SqlCommand Dim tmpConceptoAyudaFiscal As incidencia Dim lstGrupoSueldo As New Collection Dim lstGrupoOtras As New Collection Dim lstGrupoCargaSocial As New Collection Dim lstGrupoAgregados As New Collection Dim sConsulta As String Dim bGarantizado As Boolean = False Dim anterior As Double = 0 Dim nuevo As Double = 0 aplicarProcesoPiramidar = "" If sEmpleado.idEmpleado = "158" Then sEmpleado.idEmpleado = sEmpleado.idEmpleado End If 'Elimina las ayudas fiscales ya existentes sConsulta = "Delete from tnnom_incidencias Where idNomina='" & nominaActual.idNomina & "' and idConcepto='1693' and idEmpleado='" & sEmpleado.idEmpleado & "'" cmd = New SqlCommand(sConsulta, cn) cmd.Transaction = tx cmd.ExecuteNonQuery() 'Obtiene el sueldo bruto mensual lstGrupoSueldo = obtenerIncidenciasByGrupo(sEmpleado.idEmpleado, nominaActual.idNomina, nominaActual.idNominaAnterior, "SUELDO INTEGRADO", cn, tx) dSueldoBruto = 0 For Each tmp As empleadoConcepto In lstGrupoSueldo dSueldoBruto = dSueldoBruto + CDbl("0" & tmp.importeBruto) Next 'Agregados al sueldo lstGrupoAgregados = obtenerIncidenciasByGrupo(sEmpleado.idEmpleado, nominaActual.idNomina, nominaActual.idNominaAnterior, "AGREGADOS AL SUELDO", cn, tx)

dAgregados = 0 For Each tmp As empleadoConcepto In lstGrupoAgregados dAgregados = dAgregados + CDbl("0" & tmp.importeBruto) Next dSueldoBruto = dSueldoBruto + dAgregados 'Obtiene el ISR dISR = calcularISRxImporte(dSueldoBruto, nominaActual.idTabla, cn, tx) 'Obtener el sueldo Neto dSueldoNeto = dSueldoBruto - dISR 'Obtiene otras prestaciones separadas por gravables y prevision social lstGrupoOtras.Clear() lstGrupoOtras = obtenerIncidenciasByGrupo(sEmpleado.idEmpleado, nominaActual.idNomina, nominaActual.idNominaAnterior, "OTRAS_PRESTACIONES", cn, tx) dOtrasPrestaciones = 0 dPrevisionSocial = 0 For Each tmp As empleadoConcepto In lstGrupoOtras tmp.idConcepto = tmp.idConcepto If tmp.piramidar = "SI" Then If tmp.previsionSocial = "SI" Then dPrevisionSocial = dPrevisionSocial + CDbl(tmp.importeBruto) Else dOtrasPrestaciones = dOtrasPrestaciones + CDbl(tmp.importeBruto) End If End If Next 'Descuenta lo exentable a las previsiones sociales If nominaActual.exentable = "SI" Then dImporteExentableMensual = CDbl(getDatoTabulador("IMPORTE_EXENTABLE_MES_PREVISIONSOCIAL", nominaActual.idTabulador, cn, tx)) If dPrevisionSocial >= dImporteExentableMensual Then dPrevisionSocial = dPrevisionSocial - dImporteExentableMensual Else dPrevisionSocial = 0 End If End If dOtrasPrestaciones = dOtrasPrestaciones + dPrevisionSocial If nominaActual.idNominaAnterior <> "" Then anterior = importeIncidenciaByEmpleado(nominaActual.idNominaAnterior, sEmpleado.idEmpleado, "1693", cn, tx) If anterior = 0 Then dAgregados = dAgregados / 2 Else dAgregados = 0 End If End If If dOtrasPrestaciones > 0 Then dOtrasPrestaciones = dOtrasPrestaciones + dAgregados

dNetoGarantizar = dSueldoNeto + dOtrasPrestaciones 'Base gravable + prestaciones dBaseGravable = dSueldoBruto + dOtrasPrestaciones dAyudaFiscal = piramidar(dBaseGravable, dNetoGarantizar, cn, tx) If dAyudaFiscal > 0 Then tmpConceptoAyudaFiscal = New incidencia 'si no existe, agregar el concepto ayuda fiscal ' fixme: Este concepto debe cargarse desde el catlogo de los conceptos. Poner un campo que lo distinga como el de ayuda fiscal. tmpConceptoAyudaFiscal.idConcepto = "1693" tmpConceptoAyudaFiscal.idTipoConcepto = "PRESTACION" tmpConceptoAyudaFiscal.idEmpleado = sEmpleado.idEmpleado tmpConceptoAyudaFiscal.idArea = sEmpleado.idArea tmpConceptoAyudaFiscal.idPuesto = sEmpleado.idPuesto tmpConceptoAyudaFiscal.idPlaza = sEmpleado.idPlaza tmpConceptoAyudaFiscal.idNivel = sEmpleado.idNivel tmpConceptoAyudaFiscal.idOrigen = "GENERADO" tmpConceptoAyudaFiscal.importeISN = "0" tmpConceptoAyudaFiscal.idFrecuencia = "UNICO" tmpConceptoAyudaFiscal.fAplica = Now.ToString("dd/MM/yyyy") tmpConceptoAyudaFiscal.idNomina = nominaActual.idNomina tmpConceptoAyudaFiscal.idTabulador = nominaActual.idTabulador tmpConceptoAyudaFiscal.estatus = "INCIDENCIA_NUEVA" tmpConceptoAyudaFiscal.importe = dAyudaFiscal

'Si es nomina mensual, debe restar el importe del ACF anterior If nominaActual.idNominaAnterior <> "" Then nuevo = CDbl(tmpConceptoAyudaFiscal.importe) 'anterior = importeIncidenciaByEmpleado(nominaActual.idNominaAnterior, sEmpleado.idEmpleado, "1693", cn, tx) If (nuevo - anterior) < 0 Then tmpConceptoAyudaFiscal.importe = 0 Else tmpConceptoAyudaFiscal.importe = nuevo - anterior End If End If guardaIncidencia(tmpConceptoAyudaFiscal, "ALTA", "", cn, tx) End If End Function

FUNCIN PIRAMIDAR
Public Function piramidar(ByVal dbaseGravable As Double, ByVal dNetoGarantizar As Double, ByRef cn As SqlConnection, ByRef tx As SqlTransaction) As Double Dim dincrementoTemporal As Double = 0 Dim dNetoTemporal As Double = 0 Dim dImpuestoTemporal As Double = 0

Dim bGarantizado As Boolean = False Dim sTabla As String = "2" If Not IsNothing(nominaActual.idTabla) Then sTabla = nominaActual.idTabla piramidar = 0 While Not bGarantizado dbaseGravable = dbaseGravable + dincrementoTemporal dImpuestoTemporal = calcularISRxImporte(dbaseGravable, sTabla, cn, tx) dNetoTemporal = dbaseGravable - dImpuestoTemporal If Math.Round(dNetoTemporal, 2) >= Math.Round(dNetoGarantizar, 2) Then bGarantizado = True Else dincrementoTemporal = System.Math.Abs((dNetoGarantizar - dNetoTemporal) / 2) 'dincrementoTemporal = System.Math.Abs((dNetoGarantizar - dNetoTemporal)) piramidar = piramidar + dincrementoTemporal 'If dNetoTemporal > dNetoGarantizar Then ' piramidar = piramidar - dincrementoTemporal ' Else ' piramidar = piramidar + dincrementoTemporal 'End If End If End While End Function

FUNCION CALCULAR CONCEPTOS


Public Function calcularConcepto(ByRef concepto As empleadoConcepto, ByRef cn As SqlConnection, ByRef tx As SqlTransaction) As Boolean Dim cnPago As New SqlConnection Dim bResultado As Boolean = False If concepto.idOrigen <> "PROGRAMADO" Then ' Calcular el sueldo If concepto.idConcepto = "1010" Then concepto.importeBruto = "" & concepto.importeBruto / nDIAS_MES * CDbl(concepto.diasPagados) 'Calcula 6230 Dim tmpconcepto As New incidencia tmpconcepto.idTipoConcepto = "DEDUCCION" tmpconcepto.idNomina = nominaActual.idNomina tmpconcepto.idEmpleado = concepto.idEmpleado tmpconcepto.idOrigen = "GENERADO" tmpconcepto.importeISN = "0" tmpconcepto.idFrecuencia = "UNICO" tmpconcepto.fAplica = concepto.fAplica tmpconcepto.estatus = "INCIDENCIA_NUEVA" tmpconcepto.externo = "SI"

tmpconcepto.referencia = "FALTA" tmpconcepto.idTabulador = nominaActual.idTabulador tmpconcepto.idConcepto = "6230" Dim tope As Double = CDbl(getDatoTabulador("SALARIO_MINIMO", nominaActual.idTabulador, cn, tx)) * (nDIAS_MES / 2) * 10 If concepto.importeBruto > tope Then tmpconcepto.importe = CDbl(getDatoTabulador("SALARIO_MINIMO", nominaActual.idTabulador, cn, tx)) * 10 Else tmpconcepto.importe = concepto.importeBruto * CDbl(getDatoTabulador("CTE_FONDOVIVIENDA_APORTACION", nominaActual.idTabulador, cn, tx)) End If If CDbl(tmpconcepto.importe) > 0 Then guardaIncidencia(tmpconcepto, "ALTA", "", cn, tx) 'Calcula 6240 tmpconcepto = New incidencia tmpconcepto.idTipoConcepto = "DEDUCCION" tmpconcepto.idNomina = nominaActual.idNomina tmpconcepto.idEmpleado = concepto.idEmpleado tmpconcepto.idOrigen = "GENERADO" tmpconcepto.importeISN = "0" tmpconcepto.idFrecuencia = "UNICO" tmpconcepto.fAplica = concepto.fAplica tmpconcepto.estatus = "INCIDENCIA_NUEVA" tmpconcepto.externo = "SI" tmpconcepto.referencia = "FALTA" tmpconcepto.idTabulador = nominaActual.idTabulador tmpconcepto.idConcepto = "6240" If concepto.importeBruto > tope Then tmpconcepto.importe = CDbl(getDatoTabulador("SALARIO_MINIMO", nominaActual.idTabulador, cn, tx)) * 10 Else tmpconcepto.importe = concepto.importeBruto * CDbl(getDatoTabulador("CTE_SEGURO-RETIRO_APORTACION", nominaActual.idTabulador, cn, tx)) End If If CDbl(tmpconcepto.importe) > 0 Then guardaIncidencia(tmpconcepto, "ALTA", "", cn, tx) End If ' Calcular la despensa If concepto.idConcepto = "1020" Then concepto.importeBruto = CDbl(getDatoTabulador("CTE_DESPENSA", nominaActual.idTabulador, cn, tx)) / nDIAS_MES * concepto.diasPagados End If 'Calcular la prima vacacional If concepto.idConcepto = "1060" Then Dim dDiasPrima As Double = 0 dDiasPrima = obtenerDiasProporcionalesPrima(concepto.idEmpleado) concepto.importeBruto = obtenerImporteByGrupo(concepto.idEmpleado, nominaActual.idNomina, "", "SUELDO INTEGRADO", cn, tx) * nDIAS_MES * dDiasPrima End If 'Calcular el aguinaldo If concepto.idConcepto = "1070" Then concepto.importeBruto = getImporteConceptoYaProcesado(concepto, "1010", cn, tx) / nDIAS_MES * 40 / nDIAS_AO * getImporteConceptoYaProcesado(concepto, "1010", cn, tx) / nDIAS_MES / 2 End If 'Calcular el reconocimiento If concepto.idConcepto = "1120" Then

concepto.importeBruto = concepto.importeBruto / nDIAS_MES * concepto.diasPagados End If 'Calcular la cantidad adicional If concepto.idConcepto = "1130" Then concepto.importeBruto = concepto.importeBruto / nDIAS_MES * concepto.diasPagados End If 'Calcular el reembolso de reconocimiento If concepto.idConcepto = "1126" Then concepto.importeBruto = getImporteConceptoYaProcesado(concepto, "1120", cn, tx) / nDIAS_MES * getImporteConceptoYaProcesado(concepto, "2200", cn, tx) End If 'Calcular la reembolso de cantidad adicional If concepto.idConcepto = "1136" Then concepto.importeBruto = getImporteConceptoYaProcesado(concepto, "1130", cn, tx) / nDIAS_MES * getImporteConceptoYaProcesado(concepto, "2200", cn, tx) End If 'Calcular compensacion If concepto.idConcepto = "1140" Then concepto.importeBruto = concepto.importeBruto / nDIAS_MES * concepto.diasPagados End If 'Calcular prevision social multiple If concepto.idConcepto = "1170" Then concepto.importeBruto = CDbl(getDatoTabulador("CTE_PREVISION", nominaActual.idTabulador, cn, tx)) / nDIAS_MES * concepto.diasPagados End If 'Calcular dias de pasaje If concepto.idConcepto = "1180" Then concepto.importeBruto = CDbl(getDatoTabulador("CTE_DIASPASAJE", nominaActual.idTabulador, cn, tx)) / nDIAS_MES * concepto.diasPagados End If 'Calcular Prima quinquenal por aos de servicio If concepto.idConcepto = "1220" Then concepto.importeBruto = obtenerQuinquenal(concepto.idNivelQuinquenal, cn, tx) / nDIAS_MES * concepto.diasPagados End If 'calcular vales de despensa If concepto.idConcepto = "1370" Then concepto.importeBruto = "" & CDbl("0" & concepto.importeBruto) End If 'Calcular GMM If concepto.idConcepto = "1330" Then 'concepto.importeBruto = getImporteConceptoYaProcesado(concepto, "1330") / CDbl(getConstante("DIAS_ANIO")) * nominaActual.diasNaturales End If 'Calcular reembolso por traslados If concepto.idConcepto = "1400" Then concepto.importeBruto = CDbl(getDatoTabulador("CTE_REEMBOLSO", nominaActual.idTabulador, cn, tx)) / CDbl(getDatoTabulador("CTE_REEMBOLSO2", nominaActual.idTabulador, cn, tx)) * concepto.diasPagados End If

'Vales del Dia del Nio If concepto.idConcepto = "1710" Then concepto.importeBruto = CDbl(getDatoTabulador("CTE_IMPORTE_VALES_NIO", nominaActual.idTabulador, cn, tx)) * obtenerCantidadHijos(concepto.idEmpleado) End If If concepto.idConcepto = "1812" Then concepto.importeBruto = concepto.importeBruto End If 'Calcular: 1815 Ayuda de comida efectivo If concepto.idConcepto = "1815" Or concepto.idConcepto = "1819" Then concepto.importeBruto = CDbl(getDatoTabulador("CTE_IMPORTECOMIDAINSTITUCION", nominaActual.idTabulador, cn, tx)) * concepto.diasTrabajados End If '1820 If concepto.idConcepto = "1820" Then If concepto.porcentaje <> "" Then concepto.importeBruto = getImporteConceptoYaProcesado(concepto, "1010", cn, tx) * CDbl("0" & concepto.porcentaje) / 100 End If '1830 If concepto.idConcepto = "1830" Then If concepto.porcentaje <> "" Then concepto.importeBruto = getImporteConceptoYaProcesado(concepto, "1010", cn, tx) * CDbl("0" & concepto.porcentaje) / 100 End If '2010 If concepto.idConcepto = "2010" Then If CDbl("0" & concepto.porcentaje) > 0 Then concepto.importeBruto = getImporteConceptoYaProcesado(concepto, "1010", cn, tx) * CDbl(concepto.porcentaje) / 100 If concepto.seguro = "SI" Then Dim tmpconcepto As New incidencia tmpconcepto.idTipoConcepto = "DEDUCCION" tmpconcepto.idNomina = nominaActual.idNomina tmpconcepto.idEmpleado = concepto.idEmpleado tmpconcepto.idOrigen = "GENERADO" tmpconcepto.importeISN = "0" tmpconcepto.idFrecuencia = "UNICO" tmpconcepto.fAplica = concepto.fAplica tmpconcepto.estatus = "INCIDENCIA_NUEVA" tmpconcepto.externo = "SI" tmpconcepto.referencia = "FALTA" tmpconcepto.idTabulador = nominaActual.idTabulador '2460 Dcto del seguro tmpconcepto.idConcepto = "2460" tmpconcepto.importe = CDbl("0" & getDatoTabulador("CTE_DCTO_SEG_FOVISSSTE", nominaActual.idTabulador, cn, tx)) If CDbl(tmpconcepto.importe) > 0 Then guardaIncidencia(tmpconcepto, "ALTA", "", cn, tx) End If End If 'Calcular seguro institucional If concepto.idConcepto = "2020" Then
concepto.importeBruto = obtenerImporteByGrupo(concepto.idEmpleado, nominaActual.idNomina, "", "SUELDO INTEGRADO", cn, tx) * CDbl(getDatoTabulador("CTE_SEGUROINST", nominaActual.idTabulador, cn, tx))

End If 'Calcular Descuentos por falta If concepto.idConcepto = "2030" Then concepto.importeBruto = getImporteConceptoYaProcesado(concepto, "1010", cn, tx) / concepto.diasPagados * 1.4 * concepto.cantidad Dim tmpconcepto As New incidencia tmpconcepto.idTipoConcepto = "DEDUCCION" tmpconcepto.idNomina = nominaActual.idNomina tmpconcepto.idEmpleado = concepto.idEmpleado tmpconcepto.idOrigen = "GENERADO" tmpconcepto.importeISN = "0" tmpconcepto.idFrecuencia = "UNICO" tmpconcepto.fAplica = concepto.fAplica tmpconcepto.estatus = "INCIDENCIA_NUEVA" tmpconcepto.externo = "SI" tmpconcepto.referencia = "FALTA" tmpconcepto.idTabulador = nominaActual.idTabulador '2190 FALTA CANTIDAD ADICIONAL tmpconcepto.idConcepto = "2190" tmpconcepto.importe = getImporteConceptoYaProcesado(concepto, "1130", cn, tx) / concepto.diasPagados * 1.4 * concepto.cantidad If CDec(tmpconcepto.importe) <> 0 Then guardaIncidencia(tmpconcepto, "ALTA", "", cn, tx) '2200 FALTA RECONOCIMIENTO MENSUAL tmpconcepto.idConcepto = "2200" tmpconcepto.importe = getImporteConceptoYaProcesado(concepto, "1120", cn, tx) / concepto.diasPagados * 1.4 * concepto.cantidad If CDec(tmpconcepto.importe) <> 0 Then guardaIncidencia(tmpconcepto, "ALTA", "", cn, tx) '2210 FALTA COMPENSACIN ADICIONAL tmpconcepto.idConcepto = "2210" tmpconcepto.importe = getImporteConceptoYaProcesado(concepto, "1140", cn, tx) / concepto.diasPagados * 1.4 * concepto.cantidad If CDec(tmpconcepto.importe) <> 0 Then guardaIncidencia(tmpconcepto, "ALTA", "", cn, tx) End If 'Calcular: Incapacidad de sueldo tabular If concepto.idConcepto = "2050" Then concepto.importeBruto = getImporteConceptoYaProcesado(concepto, "1010", cn, tx) / concepto.diasPagados * concepto.cantidad Dim tmpconcepto As New incidencia tmpconcepto.idTipoConcepto = "DEDUCCION" tmpconcepto.idNomina = nominaActual.idNomina tmpconcepto.idEmpleado = concepto.idEmpleado tmpconcepto.idOrigen = "GENERADO" tmpconcepto.importeISN = "0" tmpconcepto.idFrecuencia = "UNICO" tmpconcepto.fAplica = concepto.fAplica tmpconcepto.estatus = "INCIDENCIA_NUEVA" tmpconcepto.externo = "SI" tmpconcepto.referencia = "FALTA" tmpconcepto.idTabulador = nominaActual.idTabulador

'2360 FALTA CANTIDAD ADICIONAL tmpconcepto.idConcepto = "2360" tmpconcepto.importe = getImporteConceptoYaProcesado(concepto, "1130", cn, tx) / concepto.diasPagados * concepto.cantidad If CDbl(tmpconcepto.importe) > 0 Then guardaIncidencia(tmpconcepto, "ALTA", "", cn, tx) '2370 FALTA RECONOCIMIENTO MENSUAL tmpconcepto.idConcepto = "2370" tmpconcepto.importe = getImporteConceptoYaProcesado(concepto, "1120", cn, tx) / concepto.diasPagados * concepto.cantidad If CDbl(tmpconcepto.importe) > 0 Then guardaIncidencia(tmpconcepto, "ALTA", "", cn, tx) '2380 FALTA COMPENSACIN ADICIONAL tmpconcepto.idConcepto = "2210" tmpconcepto.importe = getImporteConceptoYaProcesado(concepto, "1140", cn, tx) / concepto.diasPagados * concepto.cantidad If CDbl(tmpconcepto.importe) > 0 Then guardaIncidencia(tmpconcepto, "ALTA", "", cn, tx) End If 'Calcular: Seguro de vida colectivo Ahisa If concepto.idConcepto = "2060" Then concepto.importeBruto = CDbl(getDatoTabulador("CTE_SEGUROCOLECTIVO", nominaActual.idTabulador, cn, tx)) / nDIAS_MES * concepto.diasPagados End If

'Calcular: Seguro de vida colectivo Ahisa CMHALDF If concepto.idConcepto = "2065" Then concepto.importeBruto = CDbl(getDatoTabulador("CTE_SEGUROCOLECTIVO2", nominaActual.idTabulador, cn, tx)) / nDIAS_MES * 1 * concepto.diasPagados End If 'Calcular: Seguro institucional adicional If concepto.idConcepto = "2090" Then concepto.importeBruto = getImporteConceptoYaProcesado(concepto, "1010", cn, tx) concepto.importeBruto = CDbl(concepto.importeBruto) + getImporteConceptoYaProcesado(concepto, "1120", cn, tx) concepto.importeBruto = CDbl(concepto.importeBruto) + getImporteConceptoYaProcesado(concepto, "1130", cn, tx) concepto.importeBruto = CDbl(concepto.importeBruto) + getImporteConceptoYaProcesado(concepto, "1140", cn, tx) concepto.importeBruto = CDbl(concepto.importeBruto) + getImporteConceptoYaProcesado(concepto, "1210", cn, tx) concepto.importeBruto = CDbl(concepto.importeBruto) + getImporteConceptoYaProcesado(concepto, "1150", cn, tx) concepto.importeBruto = CDbl(concepto.importeBruto) * CDbl(getDatoTabulador("CTE_SEGUROINSTADIC", nominaActual.idTabulador, cn, tx)) End If ' '2150 -> Es un importe fijo 'If concepto.idConcepto = "2150" Then mostrarMensaje("", "El concepto " & concepto.idConcepto & " no ha sido programado.", "", usuarioActual.idEmpleado) 'Fixme: Falta programarlo '2213 If concepto.idConcepto = "2213" Then mostrarMensaje("", "El concepto " & concepto.idConcepto & " no ha sido programado.", "", usuarioActual.idEmpleado) ' Calcular Falta de reconocimiento mensual (derivado del 1120) If concepto.idConcepto = "2200" Then concepto.importeBruto = getImporteConceptoYaProcesado(concepto, "1120", cn, tx) / nDIAS_MES * concepto.cantidad * 1.4 End If ' Calcular Falta compenascion adicional (derivado del 1130) If concepto.idConcepto = "2190" Then

concepto.importeBruto = getImporteConceptoYaProcesado(concepto, "1030", cn, tx) / nDIAS_MES * concepto.cantidad * 1.4 End If ' Calcular Falta compenascion adicional (derivado del 1140) If concepto.idConcepto = "2210" Then concepto.importeBruto = getImporteConceptoYaProcesado(concepto, "1140", cn, tx) / nDIAS_MES * concepto.cantidad * 1.4 End If 'Calcular: servicio mdico y maternidad If concepto.idConcepto = "2220" Then Dim tope As Double = CDbl(getDatoTabulador("SALARIO_MINIMO", nominaActual.idTabulador, cn, tx)) * nDIAS_MES * 10 If getImporteConceptoYaProcesado(concepto, "1010", cn, tx) + getImporteConceptoYaProcesado(concepto, "1220", cn, tx) > tope Then concepto.importeBruto = ((CDbl(getDatoTabulador("SALARIO_MINIMO", nominaActual.idTabulador, cn, tx)) * nDIAS_MES * 10 * CDbl(getDatoTabulador("CTE_SERVICIOMEDICO", nominaActual.idTabulador, cn, tx))) / nDIAS_MES) * concepto.diasPagados Else concepto.importeBruto = ((CDbl(getDatoTabulador("SALARIO_MINIMO", nominaActual.idTabulador, cn, tx)) * CDbl(getDatoTabulador("CTE_SERVICIOMEDICO", nominaActual.idTabulador, cn, tx))) / nDIAS_MES) * concepto.diasPagados End If End If 'Calcular: Seguro de salud If concepto.idConcepto = "2221" Then Dim tope As Double = CDbl(getDatoTabulador("SALARIO_MINIMO", nominaActual.idTabulador, cn, tx)) * (nDIAS_MES / 2) * 10
If getImporteConceptoYaProcesado(concepto, "1010", cn, tx) + getImporteConceptoYaProcesado(concepto, "1220", cn, tx) > tope Then concepto.importeBruto = ((CDbl(getDatoTabulador("SALARIO_MINIMO", nominaActual.idTabulador, cn, tx)) * nDIAS_MES * 10 * CDbl(getDatoTabulador("CTE_SEGUROSALUD", nominaActual.idTabulador, cn, tx))) / nDIAS_MES) * concepto.diasPagados Else concepto.importeBruto = (getImporteConceptoYaProcesado(concepto, "1010", cn, tx) + getImporteConceptoYaProcesado(concepto, "1220", cn, tx)) * CDbl(getDatoTabulador("CTE_SEGUROSALUD", nominaActual.idTabulador, cn, tx)) '/ nDIAS_MES '* concepto.diasPagados End If

'Genera el 6221 Dim tmpconcepto As New incidencia tmpconcepto.idTipoConcepto = "DEDUCCION" tmpconcepto.idNomina = nominaActual.idNomina tmpconcepto.idEmpleado = concepto.idEmpleado tmpconcepto.idOrigen = "GENERADO" tmpconcepto.importeISN = "0" tmpconcepto.idFrecuencia = "UNICO" tmpconcepto.fAplica = concepto.fAplica tmpconcepto.estatus = "INCIDENCIA_NUEVA" tmpconcepto.externo = "SI" tmpconcepto.referencia = "FALTA" tmpconcepto.idTabulador = nominaActual.idTabulador tmpconcepto.idConcepto = "6221" tope = CDbl(getDatoTabulador("SALARIO_MINIMO", nominaActual.idTabulador, cn, tx)) * (nDIAS_MES / 2) * 10 If getImporteConceptoYaProcesado(concepto, "1010", cn, tx) > tope Then tmpconcepto.importe = CDbl(getDatoTabulador("SALARIO_MINIMO", nominaActual.idTabulador, cn, tx)) * 10 Else tmpconcepto.importe = (getImporteConceptoYaProcesado(concepto, "1010", cn, tx)) * CDbl(getDatoTabulador("CTE_SEGUROSALUD_APORTACION", nominaActual.idTabulador, cn, tx)) End If If CDbl(tmpconcepto.importe) > 0 Then guardaIncidencia(tmpconcepto, "ALTA", "", cn, tx)

10

End If 'Calcular: Seguro de retiro, cesanta y vejez If concepto.idConcepto = "2222" Then Dim tope As Double = CDbl(getDatoTabulador("SALARIO_MINIMO", nominaActual.idTabulador, cn, tx)) * nDIAS_MES / 2 * 10 If getImporteConceptoYaProcesado(concepto, "1010", cn, tx) + getImporteConceptoYaProcesado(concepto, "1220", cn, tx) > tope Then
concepto.importeBruto = ((CDbl(getDatoTabulador("SALARIO_MINIMO", nominaActual.idTabulador, cn, tx)) * nDIAS_MES * 10 * CDbl(getDatoTabulador("CTE_SEGURORETIRO", nominaActual.idTabulador, cn, tx))) / nDIAS_MES) * concepto.diasPagados

Else
concepto.importeBruto = (getImporteConceptoYaProcesado(concepto, "1010", cn, tx) + getImporteConceptoYaProcesado(concepto, "1220", cn, tx)) * CDbl(getDatoTabulador("CTE_SEGURORETIRO", nominaActual.idTabulador, cn, tx)) ' / nDIAS_MES '* concepto.diasPagados

End If 'Genera el 6222 Dim tmpconcepto As New incidencia tmpconcepto.idTipoConcepto = "DEDUCCION" tmpconcepto.idNomina = nominaActual.idNomina tmpconcepto.idEmpleado = concepto.idEmpleado tmpconcepto.idOrigen = "GENERADO" tmpconcepto.importeISN = "0" tmpconcepto.idFrecuencia = "UNICO" tmpconcepto.fAplica = concepto.fAplica tmpconcepto.estatus = "INCIDENCIA_NUEVA" tmpconcepto.externo = "SI" tmpconcepto.referencia = "FALTA" tmpconcepto.idTabulador = nominaActual.idTabulador tmpconcepto.idConcepto = "6222" tope = CDbl(getDatoTabulador("SALARIO_MINIMO", nominaActual.idTabulador, cn, tx)) * (nDIAS_MES / 2) * 10 If getImporteConceptoYaProcesado(concepto, "1010", cn, tx) > tope Then tmpconcepto.importe = CDbl(getDatoTabulador("SALARIO_MINIMO", nominaActual.idTabulador, cn, tx)) * 10 Else tmpconcepto.importe = (getImporteConceptoYaProcesado(concepto, "1010", cn, tx)) * CDbl(getDatoTabulador("CTE_SEGURORETIRO_APORTACION", nominaActual.idTabulador, cn, tx)) End If If CDbl(tmpconcepto.importe) > 0 Then guardaIncidencia(tmpconcepto, "ALTA", "", cn, tx) End If 'Calcular: Seguro de invalidez If concepto.idConcepto = "2223" Then Dim tope As Double = CDbl(getDatoTabulador("SALARIO_MINIMO", nominaActual.idTabulador, cn, tx)) * nDIAS_MES / 2 * 10 If getImporteConceptoYaProcesado(concepto, "1010", cn, tx) + getImporteConceptoYaProcesado(concepto, "1220", cn, tx) > tope Then
concepto.importeBruto = ((CDbl(getDatoTabulador("SALARIO_MINIMO", nominaActual.idTabulador, cn, tx)) * nDIAS_MES * 10 * CDbl(getDatoTabulador("CTE_SEGUROINVALIDEZ", nominaActual.idTabulador, cn, tx))) / nDIAS_MES) * concepto.diasPagados

Else
concepto.importeBruto = (getImporteConceptoYaProcesado(concepto, "1010", cn, tx) + getImporteConceptoYaProcesado(concepto, "1220", cn, tx)) * CDbl(getDatoTabulador("CTE_SEGUROINVALIDEZ", nominaActual.idTabulador, cn, tx)) '/ nDIAS_MES '* concepto.diasPagados

End If 'Genera el 6223 Dim tmpconcepto As New incidencia tmpconcepto.idTipoConcepto = "DEDUCCION" tmpconcepto.idNomina = nominaActual.idNomina tmpconcepto.idEmpleado = concepto.idEmpleado tmpconcepto.idOrigen = "GENERADO" tmpconcepto.importeISN = "0" tmpconcepto.idFrecuencia = "UNICO" tmpconcepto.fAplica = concepto.fAplica tmpconcepto.estatus = "INCIDENCIA_NUEVA"

11

tmpconcepto.externo = "SI" tmpconcepto.referencia = "FALTA" tmpconcepto.idTabulador = nominaActual.idTabulador tmpconcepto.idConcepto = "6223" tope = CDbl(getDatoTabulador("SALARIO_MINIMO", nominaActual.idTabulador, cn, tx)) * (nDIAS_MES / 2) * 10 If getImporteConceptoYaProcesado(concepto, "1010", cn, tx) > tope Then tmpconcepto.importe = CDbl(getDatoTabulador("SALARIO_MINIMO", nominaActual.idTabulador, cn, tx)) * 10 Else tmpconcepto.importe = (getImporteConceptoYaProcesado(concepto, "1010", cn, tx)) * CDbl(getDatoTabulador("CTE_SEGUROINVALIDEZ_APORTACION", nominaActual.idTabulador, cn, tx)) End If If CDbl(tmpconcepto.importe) > 0 Then guardaIncidencia(tmpconcepto, "ALTA", "", cn, tx) End If 'Calcular: Servicios sociales y culturales If concepto.idConcepto = "2224" Then Dim tope As Double = CDbl(getDatoTabulador("SALARIO_MINIMO", nominaActual.idTabulador, cn, tx)) * nDIAS_MES / 2 * 10 If getImporteConceptoYaProcesado(concepto, "1010", cn, tx) + getImporteConceptoYaProcesado(concepto, "1220", cn, tx) > tope Then
concepto.importeBruto = ((CDbl(getDatoTabulador("SALARIO_MINIMO", nominaActual.idTabulador, cn, tx)) * nDIAS_MES * 10 * CDbl(getDatoTabulador("CTE_SERVICIOSOCIAL", nominaActual.idTabulador, cn, tx))) / nDIAS_MES) * concepto.diasPagados

Else concepto.importeBruto = getImporteConceptoYaProcesado(concepto, "1010", cn, tx) * CDbl(getDatoTabulador("CTE_SERVICIOSOCIAL", nominaActual.idTabulador, cn, tx)) End If 'Genera el 6224 Dim tmpconcepto As New incidencia tmpconcepto.idTipoConcepto = "DEDUCCION" tmpconcepto.idNomina = nominaActual.idNomina tmpconcepto.idEmpleado = concepto.idEmpleado tmpconcepto.idOrigen = "GENERADO" tmpconcepto.importeISN = "0" tmpconcepto.idFrecuencia = "UNICO" tmpconcepto.fAplica = concepto.fAplica tmpconcepto.estatus = "INCIDENCIA_NUEVA" tmpconcepto.externo = "SI" tmpconcepto.referencia = "FALTA" tmpconcepto.idTabulador = nominaActual.idTabulador tmpconcepto.idConcepto = "6224" tope = CDbl(getDatoTabulador("SALARIO_MINIMO", nominaActual.idTabulador, cn, tx)) * (nDIAS_MES / 2) * 10 If getImporteConceptoYaProcesado(concepto, "1010", cn, tx) > tope Then tmpconcepto.importe = CDbl(getDatoTabulador("SALARIO_MINIMO", nominaActual.idTabulador, cn, tx)) * 10 Else tmpconcepto.importe = (getImporteConceptoYaProcesado(concepto, "1010", cn, tx)) * CDbl(getDatoTabulador("CTE_SERVICIOSOCIAL", nominaActual.idTabulador, cn, tx)) End If If CDbl(tmpconcepto.importe) > 0 Then guardaIncidencia(tmpconcepto, "ALTA", "", cn, tx) End If 'Calcular: Cuota del ISSSTE If concepto.idConcepto = "2225" Then Dim tope As Double = CDbl(getDatoGenerico("SALARIO_MINIMO")) * 15 * 10 If getImporteConceptoYaProcesado(concepto, "1010", cn, tx) + getImporteConceptoYaProcesado(concepto, "1220", cn, tx) + getImporteConceptoYaProcesado(concepto, "1280", cn, tx) > tope Then concepto.importeBruto = ((CDbl(getDatoGenerico("SALARIO_MINIMO")) * nDIAS_MES * 10 * CDbl(getDatoTabulador("CTE_RIESGOS", nominaActual.idTabulador, cn, tx))) / nDIAS_MES) * concepto.diasPagados

12

Else
concepto.importeBruto = (getImporteConceptoYaProcesado(concepto, "1010", cn, tx) + getImporteConceptoYaProcesado(concepto, "1220", cn, tx) + getImporteConceptoYaProcesado(concepto, "1280", cn, tx)) * CDbl(getDatoTabulador("CTE_RIESGOS", nominaActual.idTabulador, cn, tx)) / 15 * concepto.diasPagados

End If 'Genera el 6225 Dim tmpconcepto As New incidencia tmpconcepto = New incidencia tmpconcepto.idTipoConcepto = "DEDUCCION" tmpconcepto.idNomina = nominaActual.idNomina tmpconcepto.idEmpleado = concepto.idEmpleado tmpconcepto.idOrigen = "GENERADO" tmpconcepto.importeISN = "0" tmpconcepto.idFrecuencia = "UNICO" tmpconcepto.fAplica = concepto.fAplica tmpconcepto.estatus = "INCIDENCIA_NUEVA" tmpconcepto.externo = "SI" tmpconcepto.referencia = "FALTA" tmpconcepto.idTabulador = nominaActual.idTabulador tmpconcepto.idConcepto = "6225" tope = CDbl(getDatoTabulador("SALARIO_MINIMO", nominaActual.idTabulador, cn, tx)) * (nDIAS_MES / 2) * 10 If getImporteConceptoYaProcesado(concepto, "1010", cn, tx) > tope Then tmpconcepto.importe = CDbl(getDatoTabulador("SALARIO_MINIMO", nominaActual.idTabulador, cn, tx)) * 10 Else tmpconcepto.importe = (getImporteConceptoYaProcesado(concepto, "1010", cn, tx)) * CDbl(getDatoTabulador("CTE_RIESGOS_APORTACION", nominaActual.idTabulador, cn, tx)) End If If CDbl(tmpconcepto.importe) > 0 Then guardaIncidencia(tmpconcepto, "ALTA", "", cn, tx) End If 'Calcular la cuota sindical If concepto.idConcepto = "2227" Then concepto.importeBruto = getImporteConceptoYaProcesado(concepto, "1010", cn, tx) * CDbl(getDatoTabulador("CTE_CUOTASINDICAL", nominaActual.idTabulador, cn, tx)) End If 'Si es pensin If concepto.idConcepto = "2250" Then concepto.importeBruto = concepto.importeBruto End If 'Fixme: Falta programarlo '2460 'If concepto.idConcepto = "2460" Then mostrarMensaje("", "El concepto " & concepto.idConcepto & " no ha sido programado.", "", usuarioActual.idEmpleado)

'Calcular: Ajustes cuota del issste FALTANTE 'Calcular: 2230 Fondo de pensiones If concepto.idConcepto = "2230" Then Dim tope As Double = CDbl(getDatoGenerico("SALARIO_MINIMO")) * nDIAS_MES * 10 If getImporteConceptoYaProcesado(concepto, "1010", cn, tx) + getImporteConceptoYaProcesado(concepto, "1220", cn, tx) > tope Then
concepto.importeBruto = ((CDbl(getDatoGenerico("SALARIO_MINIMO")) * nDIAS_MES * 10 * CDbl(getDatoTabulador("CTE_FONDOPENSIONES", nominaActual.idTabulador, cn, tx))) / nDIAS_MES) * concepto.diasPagados

Else concepto.importeBruto = ((CDbl(getDatoGenerico("SALARIO_MINIMO")) * CDbl(getDatoTabulador("CTE_FONDOPENSIONES", nominaActual.idTabulador, cn, tx))) / nDIAS_MES) * concepto.diasPagados

13

End If End If 'Calcular: 2360 Incapacidad de cantidad adicional If concepto.idConcepto = "2360" Then concepto.importeBruto = getImporteConceptoYaProcesado(concepto, "1130", cn, tx) / nDIAS_MES * 1 * getImporteConceptoYaProcesado(concepto, "1130", cn, tx) 'Confirmar el id del concepto de incapacidad End If 'Calcular: 2370 Incapacidad de Reconocimiento If concepto.idConcepto = "2370" Then concepto.importeBruto = getImporteConceptoYaProcesado(concepto, "1120", cn, tx) / nDIAS_MES * 1 * getImporteConceptoYaProcesado(concepto, "1120", cn, tx) 'Confirmar el id del concepto de incapacidad End If 'Calcular: 2380 Incapacidad de compensacin If concepto.idConcepto = "2380" Then concepto.importeBruto = getImporteConceptoYaProcesado(concepto, "1140", cn, tx) / nDIAS_MES * 1 * getImporteConceptoYaProcesado(concepto, "1140", cn, tx) 'Confirmar el id del concepto de incapacidad End If 'Es pago programado '2750 'If concepto.idConcepto = "2750" Then mostrarMensaje("", "El concepto " & concepto.idConcepto & " no ha sido programado.", "", usuarioActual.idEmpleado) 'Fixme: Falta programarlo '2780 If concepto.idConcepto = "2780" Then mostrarMensaje("", "El concepto " & concepto.idConcepto & " no ha sido programado.", "", usuarioActual.idEmpleado)

'Calcular: 2808 Ayuda para comida (deduccion) If concepto.idConcepto = "2808" Then concepto.importeBruto = CDbl(getDatoTabulador("CTE_IMPORTECOMIDAEMPLEADO", nominaActual.idTabulador, cn, tx)) * nominaActual.diasTrabajados End If If (concepto.idEmpleado = "203" Or concepto.idEmpleado = "48") And concepto.idConcepto = 2830 Then concepto.idEmpleado = concepto.idEmpleado End If 'Calcular el SSI If concepto.idConcepto = "2810" Then concepto.importeBruto = obtenerImporteByGrupo(concepto.idEmpleado, nominaActual.idNomina, "", "SUELDO INTEGRADO", cn, tx) * CDbl("0" & concepto.porcentaje) / 100 'Calcula 1820 Dim tmpconcepto As New incidencia tmpconcepto.idTipoConcepto = "PERCEPCION" tmpconcepto.idNomina = nominaActual.idNomina tmpconcepto.idEmpleado = concepto.idEmpleado tmpconcepto.idOrigen = "ASIGNADO" tmpconcepto.importeISN = "0" tmpconcepto.idFrecuencia = "UNICO" tmpconcepto.fAplica = concepto.fAplica tmpconcepto.estatus = "INCIDENCIA_NUEVA" tmpconcepto.externo = "SI" tmpconcepto.referencia = "FALTA" tmpconcepto.idTabulador = nominaActual.idTabulador

14

tmpconcepto.idConcepto = "1820" tmpconcepto.importe = concepto.importeBruto If CDbl(tmpconcepto.importe) > 0 Then guardaIncidencia(tmpconcepto, "ALTA", "", cn, tx) End If 'Calcular el SSI If concepto.idConcepto = "2811" Then concepto.idConcepto = concepto.idConcepto 'Calcula 1821 Dim tmpconcepto As New incidencia tmpconcepto.idTipoConcepto = "PERCEPCION" tmpconcepto.idNomina = nominaActual.idNomina tmpconcepto.idEmpleado = concepto.idEmpleado tmpconcepto.idOrigen = "ASIGNADO" tmpconcepto.importeISN = "0" tmpconcepto.idFrecuencia = "UNICO" tmpconcepto.fAplica = concepto.fAplica tmpconcepto.estatus = "INCIDENCIA_NUEVA" tmpconcepto.externo = "SI" tmpconcepto.referencia = "FALTA" tmpconcepto.idTabulador = nominaActual.idTabulador tmpconcepto.idConcepto = "1821" tmpconcepto.importe = concepto.importeBruto If CDbl(tmpconcepto.importe) > 0 Then guardaIncidencia(tmpconcepto, "ALTA", "", cn, tx) End If 'Calcular el Fondo de ahorro If concepto.idConcepto = "2830" Then Dim tope As Double = (CDbl(getDatoTabulador("SALARIO_MINIMO", nominaActual.idTabulador, cn, tx)) * 1.3 * 365 / 12) / 2 Dim calculo As Double = obtenerImporteByGrupo(concepto.idEmpleado, nominaActual.idNomina, "", "SUELDO INTEGRADO", cn, tx) * CDbl("0" & concepto.porcentaje) / 100 If calculo > tope Then concepto.importeBruto = tope 'concepto.importeBruto = CDbl(getDatoTabulador("SALARIO_MINIMO", nominaActual.idTabulador, cn, tx)) * 1.3 * 30.4 Else concepto.importeBruto = calculo End If 'Calcula 1830 Dim tmpconcepto As New incidencia tmpconcepto.idTipoConcepto = "PERCEPCION" tmpconcepto.idNomina = nominaActual.idNomina tmpconcepto.idEmpleado = concepto.idEmpleado tmpconcepto.idOrigen = "GENERADO" tmpconcepto.importeISN = "0" tmpconcepto.idFrecuencia = "UNICO" tmpconcepto.fAplica = concepto.fAplica tmpconcepto.estatus = "INCIDENCIA_NUEVA" tmpconcepto.externo = "SI" tmpconcepto.referencia = "FALTA" tmpconcepto.idTabulador = nominaActual.idTabulador

15

tmpconcepto.idConcepto = "1830" tmpconcepto.importe = concepto.importeBruto If CDbl(tmpconcepto.importe) > 0 Then guardaIncidencia(tmpconcepto, "ALTA", "", cn, tx) End If 'Calcular el Fondo de ahorro If concepto.idConcepto = "2831" Then 'Calcula 1831 Dim tmpconcepto As New incidencia tmpconcepto.idTipoConcepto = "PERCEPCION" tmpconcepto.idNomina = nominaActual.idNomina tmpconcepto.idEmpleado = concepto.idEmpleado tmpconcepto.idOrigen = "GENERADO" tmpconcepto.importeISN = "0" tmpconcepto.idFrecuencia = "UNICO" tmpconcepto.fAplica = concepto.fAplica tmpconcepto.estatus = "INCIDENCIA_NUEVA" tmpconcepto.externo = "SI" tmpconcepto.referencia = "FALTA" tmpconcepto.idTabulador = nominaActual.idTabulador tmpconcepto.idConcepto = "1831" tmpconcepto.importe = concepto.importeBruto If CDbl(tmpconcepto.importe) > 0 Then guardaIncidencia(tmpconcepto, "ALTA", "", cn, tx) End If 'Calcular: 2855 Ahorro solidario If concepto.idConcepto = "2855" Then 'concepto.importeBruto = getImporteConceptoYaProcesado(concepto, "1010", cn, tx) / nDIAS_MES * concepto.diasPagados * CDbl("0" & concepto.porcentaje) / 100 If CDbl("0" & concepto.porcentaje) > 0 Then concepto.importeBruto = getImporteConceptoYaProcesado(concepto, "1010", cn, tx) * CDbl("0" & concepto.porcentaje) / 100 'Calcula 6250 Dim tmpconcepto As New incidencia tmpconcepto.idTipoConcepto = "DEDUCCION" tmpconcepto.idNomina = nominaActual.idNomina tmpconcepto.idEmpleado = concepto.idEmpleado tmpconcepto.idOrigen = "GENERADO" tmpconcepto.importeISN = "0" tmpconcepto.idFrecuencia = "UNICO" tmpconcepto.fAplica = concepto.fAplica tmpconcepto.estatus = "INCIDENCIA_NUEVA" tmpconcepto.externo = "SI" tmpconcepto.referencia = "FALTA" tmpconcepto.idTabulador = nominaActual.idTabulador tmpconcepto.idConcepto = "6250" Dim tope As Double = CDbl(getDatoTabulador("SALARIO_MINIMO", nominaActual.idTabulador, cn, tx)) * 10 If concepto.importeBruto > tope Then tmpconcepto.importe = CDbl(getDatoTabulador("SALARIO_MINIMO", nominaActual.idTabulador, cn, tx)) * 10 Else tmpconcepto.importe = CDbl(concepto.importeBruto) * 3.25 End If If CDbl(tmpconcepto.importe) > 0 Then guardaIncidencia(tmpconcepto, "ALTA", "", cn, tx)

16

End If ' Si este concepto genera impues sobre nmina, entonces se debe calcular If concepto.importeISN = "SI" And CDec(concepto.importeBruto) > 0 Then concepto.importeISN = concepto.importeBruto * 2.5 / 100 Else concepto.importeISN = "0" End If 'Valida que el importe no sea negativo If CDbl(concepto.importeBruto) < 0 Then 'mostrarMensaje("ERROR", "Al calcular el concepto " & concepto.idConcepto, "NOMINAS", usuarioActual.idEmpleado) 'calcularConcepto = False End If End If calcularConcepto = True End Function

17

Proceso de ISR
Public Function AplicarProcesoISR(ByVal sEmpleado As empleado, ByRef cn As SqlConnection, ByRef tx As SqlTransaction) Dim dAcumuladoGravable As Double = 0 Dim dAcumuladoExentable As Double = 0 Dim dImporteExento As Double = 0 Dim cmd As SqlCommand Dim sConsulta As String Dim lstConceptosProcesados As New Collection sConsulta = "Delete from tnnom_incidencias Where idNomina='" & nominaActual.idNomina & "' and idConcepto in ('2100', '1992') and idEmpleado='" & sEmpleado.idEmpleado & "' " cmd = New SqlCommand(sConsulta, cn) cmd.Transaction = tx cmd.ExecuteNonQuery() 'obtiene lista de conceptos lstConceptosProcesados = obtenerConceptosProcesados(sEmpleado.idEmpleado, nominaActual.idNomina, nominaActual.idNominaAnterior, cn, tx) dAcumuladoExentable = 0 dAcumuladoGravable = 0 For Each tmp As empleadoConcepto In lstConceptosProcesados tmp.idConcepto = tmp.idConcepto If tmp.previsionSocial = "SI" Then dAcumuladoExentable = dAcumuladoExentable + tmp.importeBruto Else dAcumuladoGravable = dAcumuladoGravable + tmp.importeBruto End If Next 'obtener importe exento disponible If nominaActual.exentable = "SI" Then 'Obtiene la cantidad exentable al mes para los de prevision social dImporteExento = CDbl(getDatoTabulador("IMPORTE_EXENTABLE_MES_PREVISIONSOCIAL", nominaActual.idTabulador, cn, tx)) ' resta el importe exento. Si el importe exento es mayor al acumulado, entonces el acumulado es cero. If dAcumuladoExentable >= dImporteExento Then dAcumuladoExentable = dAcumuladoExentable - dImporteExento Else dAcumuladoExentable = 0 End If End If dAcumuladoGravable = dAcumuladoGravable + dAcumuladoExentable Dim tmpIncidencia As New incidencia tmpIncidencia.idArea = sEmpleado.idArea tmpIncidencia.idPuesto = sEmpleado.idPuesto tmpIncidencia.idPlaza = sEmpleado.idPlaza tmpIncidencia.idNivel = sEmpleado.idNivel tmpIncidencia.importe = calcularISRxImporte(dAcumuladoGravable, nominaActual.idTabla, cn, tx) 'Si es nomina mensual, debe restar el importe del ISR anterior If nominaActual.idNominaAnterior <> "" Then tmpIncidencia.importe = CDbl(tmpIncidencia.importe) - (importeIncidenciaByEmpleado(nominaActual.idNominaAnterior, sEmpleado.idEmpleado, "2100", cn, tx)) If CDbl(tmpIncidencia.importe) >= 0 Then tmpIncidencia.idConcepto = "2100" tmpIncidencia.idTipoConcepto = "DEDUCCION" Else tmpIncidencia.importe = System.Math.Abs(CDbl(tmpIncidencia.importe))

18

tmpIncidencia.idConcepto = "1992" tmpIncidencia.idTipoConcepto = "PERCEPCION" End If tmpIncidencia.idClasificacionConcepto = "REMUNERACION" tmpIncidencia.idEmpleado = sEmpleado.idEmpleado tmpIncidencia.idOrigen = "GENERADO" tmpIncidencia.importeISN = "0" tmpIncidencia.idFrecuencia = "UNICO" tmpIncidencia.fAplica = Now.ToString("dd/MM/yyyy") tmpIncidencia.idNomina = nominaActual.idNomina tmpIncidencia.idTabulador = nominaActual.idTabulador tmpIncidencia.estatus = "INCIDENCIA_NUEVA" guardaIncidencia(tmpIncidencia, "ALTA", "", cn, tx) AplicarProcesoISR = tmpIncidencia.importe End Function

19

Intereses relacionados