Saludos
Tengo el siguiente codigo que me calcula los impuestos(ISR, IVA,etc...) de los ingresos y gatos que le voy ingresando de acuerdo al mes que se elija, pero en el método calculaImpuestos cuando me imprime ISR(por_isr) me lo imprime en 0, cuando deberia ser 11%, 15% o 20% de acuerdo al rango en el que se encuentre
el error esta en la siguiente linea
y no se si se deba a que en la llamada a método estoy haciendo algo indebido
de antemano gracias
Tengo el siguiente codigo que me calcula los impuestos(ISR, IVA,etc...) de los ingresos y gatos que le voy ingresando de acuerdo al mes que se elija, pero en el método calculaImpuestos cuando me imprime ISR(por_isr) me lo imprime en 0, cuando deberia ser 11%, 15% o 20% de acuerdo al rango en el que se encuentre
Código (java) [Seleccionar]
public class Impuestos {
//variables globales de uso interno del programa
final int MESES=12;
int mes_elegido=1;
String meses[]=new String[MESES];
double rango_monto[][]=new double[3][2];
int porcentaje_ISR[]=new int[3];
//Arreglo de ingresos y gastos
final double ingresos[]=new double[MESES];
final double gastos[]=new double[MESES];
final double IVA=16.0;
final double POR_RET_IVA=10.0;
final double POR_RET_ISR=10.0;
public void inicializa(String meses[],double rango_monto[][],int porcentaje_ISR[]){
this.meses[0]="Enero";
this.meses[1]="Febrero";
this.meses[2]="Marzo";
this.meses[3]="Abril";
this.meses[4]="Mayo";
this.meses[5]="Junio";
this.meses[6]="Julio";
this.meses[7]="Agosto";
this.meses[8]="Septiembre";
this.meses[9]="Octubre";
this.meses[10]="Noviembre";
this.meses[11]="Diciembre";
this.rango_monto[0][0]=0;
this.rango_monto[0][1]=10000.00;
this.rango_monto[1][0]=10000.00;
this.rango_monto[1][1]=20000.00;
this.rango_monto[2][0]=20000.00;
this.rango_monto[2][1]=10000000.00;
this.porcentaje_ISR[0]=11;
this.porcentaje_ISR[1]=15;
this.porcentaje_ISR[2]=20;
}
public double monto(double gan_bruta)
{
double por_isr;
if((gan_bruta>rango_monto[0][0])&&(gan_bruta<=rango_monto[1][0]))
por_isr= porcentaje_ISR[0];
else
if((gan_bruta>rango_monto[1][0])&&(gan_bruta<=rango_monto[2][0]))
por_isr= porcentaje_ISR[1];
else
if(gan_bruta>rango_monto[2][0])
por_isr= porcentaje_ISR[2];
else
por_isr=0;
return(por_isr);
}
public static void main(String[] args) {
//constantes
final int CAPTURA_MES=1;
final int CAP_INGRESO=2;
final int CAP_GASTOS=3;
final int L_INGR_ANUALES=4;
final int L_GAST_ANUALES=5;
final int CALC_IMPUESTOS=6;
final int SALIR=7;
final int MESES=12;
//variables globales de uso interno del programa
String meses[]=new String[MESES];
int porcentaje_ISR[]=new int[3];
double rango_monto[][]=new double[3][2];
//variables del programa modificables por el usuario
Impuestos c=new Impuestos();
c.inicializa(meses,rango_monto,porcentaje_ISR);
int opcion;
boolean continuar = true;
do
{
c.mostrarMenu();
opcion=ScanF.leeInt();
System.out.println(" "+opcion);
switch(opcion)
{
case CAPTURA_MES:
c.capturaMes();
break;
case CAP_INGRESO:
c.capturaIngreso();
break;
case CAP_GASTOS:
c.capturaGasto();
break;
case L_INGR_ANUALES:
c.listaIngresoAnual();
break;
case L_GAST_ANUALES:
c.listaGastoAnual();
break;
case CALC_IMPUESTOS:
c.calculoImpuestos();
break;
case SALIR:
continuar = false;
break;
default:System.out.println("Opcion no valida!");
}
if(continuar){
System.out.println("Presione tecla para continuar...");
}
}while(continuar);
}
void capturaMes()
{
System.out.println("Establecer mes para captura");
for(int i=0,indice=0;i<MESES;i++,indice++)
System.out.printf("%d) %s\n",indice+1,meses[i]);
System.out.println("Elige el mes (1 a 12):");
mes_elegido=ScanF.leeInt();
System.out.println(" "+mes_elegido);
if(mes_elegido > MESES)
System.out.println("Mes no valido!");
else
System.out.println("Se ha establecido el mes de captura en "+meses[mes_elegido-1]);
}
public void capturaIngreso()
{
float ingreso;
System.out.println("Captura ingresos");
System.out.printf("Dame el ingreso del mes de "+meses[mes_elegido-1]+":");
ingreso=ScanF.leeInt();
System.out.println(" "+ingreso);
ingresos[mes_elegido-1] = ingreso;
}
public void capturaGasto()
{
float gasto;
System.out.println("Captura gastos");
System.out.printf("Dame el gasto del mes de %s: ",meses[mes_elegido-1]);
gasto=ScanF.leeInt();
System.out.println(" "+gasto);
gastos[mes_elegido-1] = gasto;
}
void listaIngresoAnual()
{
System.out.println("Mostrar lista de ingresos anual");
for(int i=0;i<MESES;i++)
System.out.println(" "+meses[i]+" = "+ingresos[i]);
}
void listaGastoAnual()
{
System.out.println("Mostrar lista de gastos anual");
for(int i=0;i<MESES;i++)
System.out.println(" "+meses[i]+" = "+gastos[i]);
}
void calculoImpuestos()
{
Impuestos r=new Impuestos();
double iva,subtotal,ret_isr,ret_iva,total,gan_bruta,isr,gan_neta,isr_pag,gasto_iva,iva_pag;
double por_isr,ingreso_tot=0,gasto_tot=0;
for(int i=0;i<MESES;i++)
{
ingreso_tot+=ingresos[i];
gasto_tot+=gastos[i];
}
iva=(ingreso_tot*IVA)/100;
subtotal=ingreso_tot+iva;
ret_isr=(ingreso_tot*POR_RET_ISR)/100;
ret_iva=(ingreso_tot*POR_RET_IVA)/100;
total=subtotal-(ret_isr+ret_iva);
gan_bruta=(ingreso_tot-gasto_tot);
por_isr=r.monto(gan_bruta);
isr=(gan_bruta*por_isr)/100;
gan_neta=(gan_bruta-isr);
isr_pag=(isr-ret_isr);
gasto_iva=(gasto_tot*IVA)/100;
iva_pag=(iva-gasto_iva-ret_iva);
System.out.println("CALCULO DE IMPUESTOS");
System.out.println("***Tabla de Recibo de Honorarios***");
System.out.println("Ingresos\t\t"+ingreso_tot);
System.out.println("(+) IVA\t\t\t"+iva);
System.out.println("(=) Subtotal\t\t"+subtotal);
System.out.println("(-) Retención ISR\t"+ret_isr);
System.out.println("(-) Retención IVA\t"+ret_iva);
System.out.println("(=) Total\t\t"+total);
System.out.println("***Tabla Ganancias***");
System.out.println("Ingresos\t\t"+ingreso_tot);
System.out.println("(-) Gastos\t\t"+gasto_tot);
System.out.println("(=) Ganancia Bruta\t"+gan_bruta);
System.out.println("(-) ISR "+por_isr+"%\t\t"+isr);
System.out.println("(=) Ganancia Neta\t"+gan_neta);
System.out.println("***Tabla ISR***");
System.out.println("ISR "+por_isr+"%\t\t"+isr);
System.out.println("(-) ISR Retenido\t"+ret_isr);
System.out.println("(=) ISR a Pagar\t\t"+isr_pag);
System.out.println("***Tabla IVA***");
System.out.println("IVA\t\t\t"+iva);
System.out.println("(-) Gastos IVA\t\t"+gasto_iva);
System.out.println("(-) Retención IVA\t"+ret_iva);
System.out.println("(=) IVA a Pagar\t\t"+iva_pag);
}
void mostrarMenu()
{
System.out.println("CALCULO DE IMPUESTOS ANUAL");
System.out.println("Menu principal:");
System.out.println("1. Establecer mes para la captura (mes actual es "+meses[mes_elegido-1]+")");
System.out.println("2. Captura de ingresos");
System.out.println("3. Captura de gastos");
System.out.println("4. Mostrar lista de ingresos anual");
System.out.println("5. Mostrar lista de gastos anual");
System.out.println("6. Calculo de impuestos anual");
System.out.println("7. Salir");
System.out.println("Opcion: ");
}
}
el error esta en la siguiente linea
Código (java) [Seleccionar]
System.out.println("(-) ISR "+por_isr+"%\t\t"+isr);
y no se si se deba a que en la llamada a método estoy haciendo algo indebido
Código (java) [Seleccionar]
por_isr=r.monto(gan_bruta);
de antemano gracias