Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- public class Program
- {
- public static void Main()
- {
- double monthBaseSalary = 23205.12;
- Console.WriteLine($"El ISR Mensual de {monthBaseSalary:C2} es {Fiscal.CalcIsr(23205.12):C2} ");
- //El resultaod debe ser: "El ISR Mensual de $23,205.12 es $3,663.16"
- }
- }
- class Fiscal
- {
- // Ref: https://clickbalance.com/ayuda/erp/nomina/catalogos/calculo-del-isr#/
- // TABLA DE ISR
- static double[,] isrTable =
- { //Limite Inf - Limite Sup - Cuota Fija - %Excedente
- { 0.01, 578.52, 0.00, 1.92},
- { 578.53, 4910.18, 11.11, 6.4},
- { 4910.19, 8629.20, 288.33, 10.88},
- { 8629.21, 10031.07, 692.96, 16},
- { 10031.08, 12009.94, 917.26, 17.92},
- { 12009.95, 24222.31, 1271.87, 21.36},
- { 24222.32, 38177.69, 3880.44, 23.52},
- { 38177.70, 72887.50, 7162.74, 30},
- { 72887.51, 97183.33, 17575.69, 32},
- { 97183.34, 291550.00, 25350.35, 34},
- { 291550.01, double.MaxValue, 91435.02, 35}
- };
- // Calculo ISR
- public static double CalcIsr(double baseSalary)
- {
- int isrIndex = 0;
- // La primera y segunda columna de la tabla isrTable contienen el limite
- // inferior y el limite superior, el primer paso es iterar sobre esa tabla
- // y encontrar el índice del rango donde cae el salario
- // ejemplo, un baseSalary de $10,000 cae entre el rango entre $8629.21 y $10031.07
- // El indice de ese rango en la tabla isrTable es la fila (row) = 3
- // # Completa el siguiente código sustituyendo por la sentencia correcta en
- // # las secciones donde hay /*?x?*/
- // # ESTE FOR ENCEUNTRA EL isrTable dado un baseSalary
- // ## CODIGO DE EVALUACION INICIA AQUI
- for(/*?1?*/; r < isrTable.GetLength(0) ; /*?2?*/)
- {
- if(baseSalary /*?3?*/ isrTable[r,1])
- {
- isrIndex = r;
- break;
- }
- }
- // ## CODIGO DE EVALUACION TERMINA AQUI
- // Una vez calculado el isrIndex se calcula el isr con la
- // siguiente formula:
- // ISR = cuotaFija + (baseSalary - Limite Inf) * (%Excedente / 100)
- // # Completa el siguiente código sustituyendo por la sentencia correcta en
- // # las secciones donde hay /*?x?*/
- // ## CODIGO DE EVALUACION INICIA AQUI
- double isr = isrTable[isrIndex,2] + (baseSalary - /*?3?*/) * (/*?4?*/);
- // ## CODIGO DE EVALUACION TERMINA AQUI
- return System.Math.Round(isr,2) ;
- }
- }
Add Comment
Please, Sign In to add comment