rivalcoba

ISRCALC

Jun 7th, 2020
234
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.51 KB | None | 0 0
  1. using System;
  2.                    
  3. public class Program
  4. {
  5.     public static void Main()
  6.     {
  7.         double monthBaseSalary = 23205.12;
  8.         Console.WriteLine($"El ISR Mensual de {monthBaseSalary:C2} es {Fiscal.CalcIsr(23205.12):C2} ");
  9.         //El resultaod debe ser: "El ISR Mensual de $23,205.12 es $3,663.16"
  10.     }
  11. }
  12.  
  13. class Fiscal
  14. {
  15.     // Ref: https://clickbalance.com/ayuda/erp/nomina/catalogos/calculo-del-isr#/
  16.     // TABLA DE ISR
  17.     static double[,] isrTable =
  18.                             {  //Limite Inf   -  Limite Sup - Cuota Fija -  %Excedente
  19.                             {      0.01,          578.52,          0.00,        1.92},
  20.                             {    578.53,         4910.18,         11.11,         6.4},
  21.                             {   4910.19,         8629.20,        288.33,       10.88},
  22.                             {   8629.21,        10031.07,        692.96,          16},
  23.                             {  10031.08,        12009.94,        917.26,       17.92},
  24.                             {  12009.95,        24222.31,       1271.87,       21.36},
  25.                             {  24222.32,        38177.69,       3880.44,       23.52},
  26.                             {  38177.70,        72887.50,       7162.74,          30},
  27.                             {  72887.51,        97183.33,      17575.69,          32},
  28.                             {  97183.34,       291550.00,      25350.35,          34},
  29.                             { 291550.01, double.MaxValue,      91435.02,          35}
  30.                          };
  31.     // Calculo ISR
  32.     public static double CalcIsr(double baseSalary)
  33.     {
  34.         int isrIndex = 0;
  35.         // La primera y segunda columna de la tabla isrTable contienen el limite
  36.         // inferior y el limite superior, el primer paso es iterar sobre esa tabla
  37.         // y encontrar el índice del rango donde cae el salario
  38.         // ejemplo, un baseSalary de $10,000 cae entre el rango entre $8629.21 y $10031.07
  39.         // El indice de ese rango en la tabla isrTable es la fila (row) = 3
  40.         // # Completa el siguiente código sustituyendo por la sentencia correcta en
  41.         // # las secciones donde hay /*?x?*/
  42.         // # ESTE FOR ENCEUNTRA EL isrTable dado un baseSalary
  43.         // ## CODIGO DE EVALUACION INICIA AQUI
  44.         for(/*?1?*/; r < isrTable.GetLength(0) ; /*?2?*/)
  45.         {
  46.             if(baseSalary /*?3?*/ isrTable[r,1])
  47.             {
  48.                 isrIndex =  r;
  49.                 break;
  50.             }
  51.         }
  52.         // ## CODIGO DE EVALUACION TERMINA AQUI
  53.  
  54.     // Una vez calculado el isrIndex se calcula el isr con la
  55.     // siguiente formula:
  56.     // ISR = cuotaFija + (baseSalary - Limite Inf) * (%Excedente / 100)
  57.     // # Completa el siguiente código sustituyendo por la sentencia correcta en
  58.     // # las secciones donde hay /*?x?*/
  59.     // ## CODIGO DE EVALUACION INICIA AQUI
  60.     double isr = isrTable[isrIndex,2] + (baseSalary - /*?3?*/) * (/*?4?*/);
  61.     // ## CODIGO DE EVALUACION TERMINA AQUI
  62.  
  63.         return System.Math.Round(isr,2) ;
  64.     }
  65. }
Add Comment
Please, Sign In to add comment