package br.com.suelengc.calctributospj.view.listener;
import android.content.Context;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.inputmethod.InputMethodManager;
import android.widget.EditText;
import android.widget.TextView;
import br.com.suelengc.calctributospj.R;
import br.com.suelengc.calctributospj.controller.TributoFactory;
import br.com.suelengc.calctributospj.domain.TipoBaseCalculo;
import br.com.suelengc.calctributospj.domain.TipoTributacao;
import br.com.suelengc.calctributospj.model.LucroPresumido;
import br.com.suelengc.calctributospj.model.NotaFiscal;
import br.com.suelengc.calctributospj.model.SimplesNacional;
import br.com.suelengc.calctributospj.model.Tributo;
import br.com.suelengc.calctributospj.preference.PreferenciasCalculo;
import br.com.suelengc.calctributospj.view.controller.Formatter;
import br.com.suelengc.calctributospj.view.controller.Validator;
public class CalcularListener implements OnClickListener, BaseListener {
private PreferenciasCalculo preferencias;
private TipoBaseCalculo baseCalculo;
private NotaFiscal notaFiscal;
private Tributo tributo;
private View p;
private CalculatorCallback callback;
private TextView tvvalor_bruto, tvvalor_liquido, tvirpj_retido, tvcofins_retido, tvpis_retido, tvcsll_retido, tvinss_darf, tvirpj_darf, tvcsll_darf, tvtotaldescontosmensais;
private TextView tvtributo_unificado;
private EditText edValorBruto, edValorHora, edQtdeHora;
public interface CalculatorCallback {
public void onFinishCalculator(boolean sucess, NotaFiscal notaFiscal);
}
public CalcularListener(PreferenciasCalculo preferencias, TipoBaseCalculo baseCalculo, CalculatorCallback callback) {
this.preferencias = preferencias;
this.baseCalculo = baseCalculo;
this.callback = callback;
}
@Override
public void onClick(View view) {
p = (View) view.getRootView();
Context context = p.getContext();
if (p != null) {
if (baseCalculo.equals(TipoBaseCalculo.VALOR_BRUTO)) {
edValorBruto = (EditText) p.findViewById(R.id_calc.valorBruto);
if (!validaDadosEntrada()) {
return;
}
double valorBruto = Double.parseDouble(edValorBruto.getText().toString());
notaFiscal = new NotaFiscal(valorBruto);
} else if (baseCalculo.equals(TipoBaseCalculo.VALOR_HORA)) {
edValorHora = (EditText) p.findViewById(R.id_calc.valorHora);
edQtdeHora = (EditText) p.findViewById(R.id_calc.qtdeHoras);
if (!validaDadosEntrada()) {
return;
}
double valorHora = Double.parseDouble(edValorHora.getText().toString());
double qtdeHora = Double.parseDouble(edQtdeHora.getText().toString());
notaFiscal = new NotaFiscal(valorHora, qtdeHora);
}
TributoFactory factory = new TributoFactory();
tributo = factory.Create(preferencias);
notaFiscal.setTributos(tributo);
notaFiscal.CalcularTributos();
setDadosSaida();
callback.onFinishCalculator(true, notaFiscal);
//Ocultar o teclado virtual
InputMethodManager imm = (InputMethodManager) context.getSystemService(context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(tvvalor_liquido.getWindowToken(), 0);
}
}
private boolean validaDadosEntrada() {
Validator validator = new Validator();
if (baseCalculo.equals(TipoBaseCalculo.VALOR_BRUTO)) {
if (!validator.validateEditText(edValorBruto)) {
return false;
}
} else if (baseCalculo.equals(TipoBaseCalculo.VALOR_HORA)) {
if (!validator.validateEditText(edValorHora)) {
return false;
}
if (!validator.validateEditText(edQtdeHora)) {
return false;
}
}
return true;
}
@Override
public void getDadosEntrada() {
// TODO Auto-generated method stub
}
@Override
public void setDadosSaida() {
if (preferencias.getTipoTributacao().equals(TipoTributacao.LUCRO_PRESUMIDO)) {
tvvalor_liquido = (TextView) p.findViewById(R.id_calc.valorliquido);
tvvalor_bruto = (TextView) p.findViewById(R.id_calc.valorbruto);
tvirpj_retido = (TextView) p.findViewById(R.id_calc.irpj_retido);
tvcofins_retido = (TextView) p.findViewById(R.id_calc.cofins_retido);
tvpis_retido = (TextView) p.findViewById(R.id_calc.pis_retido);
tvcsll_retido = (TextView) p.findViewById(R.id_calc.csll_retido);
tvinss_darf = (TextView) p.findViewById(R.id_calc.iss_darf);
tvirpj_darf = (TextView) p.findViewById(R.id_calc.irpj_darf);
tvcsll_darf = (TextView) p.findViewById(R.id_calc.csll_darf);
tvtotaldescontosmensais = (TextView) p.findViewById(R.id_calc.totaldescontosmensais);
tvirpj_retido.setText("R$ " + Formatter.DoubleToString(((LucroPresumido)tributo).getIrpjMensal()));
tvcofins_retido.setText("R$ " + Formatter.DoubleToString(((LucroPresumido)tributo).getCofinsMensal()));
tvpis_retido.setText("R$ " + Formatter.DoubleToString(((LucroPresumido)tributo).getPisMensal()));
tvcsll_retido.setText("R$ " + Formatter.DoubleToString(((LucroPresumido)tributo).getCsllMensal()));
tvinss_darf.setText("R$ " + Formatter.DoubleToString(((LucroPresumido)tributo).getIssMensal()));
tvirpj_darf.setText("R$ " + Formatter.DoubleToString(((LucroPresumido)tributo).getIrpjTrimestral()));
tvcsll_darf.setText("R$ " + Formatter.DoubleToString(((LucroPresumido)tributo).getCsllTrimetral()));
tvvalor_bruto.setText("R$ " + Formatter.DoubleToString(notaFiscal.getValorBruto()));
tvtotaldescontosmensais.setText("R$ " + Formatter.DoubleToString(((LucroPresumido)tributo).getValorTotalTributos()));
tvvalor_liquido.setText("R$ " + Formatter.DoubleToString(notaFiscal.getValorLiquido()));
} else if (preferencias.getTipoTributacao().equals(TipoTributacao.SIMPLES_NACIONAL)) {
tvvalor_liquido = (TextView) p.findViewById(R.id_calc.valorliquido);
tvvalor_bruto = (TextView) p.findViewById(R.id_calc.valorbruto);
tvtotaldescontosmensais = (TextView) p.findViewById(R.id_calc.totaldescontosmensais);
tvtributo_unificado = (TextView) p.findViewById(R.id_calc.tributo_unificado);
tvtributo_unificado.setText("R$ " + Formatter.DoubleToString(((SimplesNacional) tributo).getValorTotalTributos()));
tvvalor_bruto.setText("R$ " + Formatter.DoubleToString(notaFiscal.getValorBruto()));
tvtotaldescontosmensais.setText("R$ " + Formatter.DoubleToString(((SimplesNacional) tributo).getValorTotalTributos()));
tvvalor_liquido.setText("R$ " + Formatter.DoubleToString(notaFiscal.getValorLiquido()));
}
}
}