package gcom.gui.relatorio.faturamento;
import gcom.cadastro.sistemaparametro.SistemaParametro;
import gcom.fachada.Fachada;
import gcom.faturamento.conta.ImpostoDeduzidoHelper;
import gcom.gui.ActionServletException;
import gcom.relatorio.ExibidorProcessamentoTarefaRelatorio;
import gcom.relatorio.faturamento.RelatorioImpostosPorClienteResponsavelBean;
import gcom.seguranca.acesso.usuario.Usuario;
import gcom.tarefa.TarefaRelatorio;
import gcom.util.ConstantesSistema;
import gcom.util.Util;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
/**
* Permite atualizar um contrato de demanda [UC0513] Manter Contrato de Demanda
*
* @author Rafael Corr�a
* @since 31/03/2006
*/
public class GerarRelatorioImpostosPorClienteResponsavelAction extends ExibidorProcessamentoTarefaRelatorio {
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
// Seta o mapeamento de retorno
ActionForward retorno = null;
httpServletRequest.setAttribute("telaSucessoRelatorio",true);
RelatorioImpostosPorClienteResponsavelActionForm form = (RelatorioImpostosPorClienteResponsavelActionForm) actionForm;
Fachada fachada = Fachada.getInstancia();
String tipoImposto = form.getIndicadorTipoImposto();
String anoMes = form.getAnoMesReferencia();
Integer anoMesTemp = Util.formatarMesAnoComBarraParaAnoMes(anoMes);
SistemaParametro sistemaParametro = this.getFachada().pesquisarParametrosDoSistema();
String tipoRelatorio = httpServletRequest.getParameter("tipoRelatorio");
String relatorioTipo = form.getRelatorioTipo();
Integer clienteID = null;
if ( form.getClienteID() != null && !form.getClienteID().equals("") ){
clienteID = Util.converterStringParaInteger(form.getClienteID());
}
if (tipoRelatorio == null) {
tipoRelatorio = TarefaRelatorio.TIPO_PDF + "";
}
if(sistemaParametro.getAnoMesFaturamento().intValue() < anoMesTemp.intValue()){
throw new ActionServletException("atencao.mes_ano.faturamento.inferior",
null,""+sistemaParametro.getAnoMesFaturamento());
}
if(relatorioTipo != null && tipoRelatorio != null){
RelatorioImpostosPorClienteResponsavel relatorioImpCliResponsavel =
new RelatorioImpostosPorClienteResponsavel(
(Usuario)(httpServletRequest.getSession(false)).getAttribute("usuarioLogado"));
relatorioImpCliResponsavel.addParametro("tipoFormatoRelatorio", Integer.parseInt(tipoRelatorio));
relatorioImpCliResponsavel.addParametro("anoMes",anoMes);
if(relatorioTipo.equals(ConstantesSistema.SINTETICO+"")){
relatorioTipo = "SINTETICO";
relatorioImpCliResponsavel.addParametro("tipoRelatorio", "SINTETICO");
}else if(relatorioTipo.equals(ConstantesSistema.ANALITICO+"")){
relatorioTipo = "ANALITICO";
relatorioImpCliResponsavel.addParametro("tipoRelatorio", "ANALITICO");
}
Collection<ImpostoDeduzidoHelper>helpersRelatorio = null;
//Caso o relat�rio a ser gerado seja do tipo faturamento
if(tipoImposto.equals("1")){
//pega todas as faturas com seus respectivos impostos e clientes
helpersRelatorio = fachada.pesquisarImpostosPorClienteResponsavelFederal(
anoMesTemp, clienteID, relatorioTipo);
relatorioImpCliResponsavel.addParametro("tipoImposto", "DO FATURAMENTO");
//Caso o relat�rio a ser gerado seja do tipo arrecada��o
}else if(tipoImposto.equals("2")){
helpersRelatorio = fachada.pesquisarImpostosArrecadacaoClienteResponsavelFederal(
anoMesTemp, clienteID, relatorioTipo);
relatorioImpCliResponsavel.addParametro("tipoImposto", "DA ARRECADA��O");
}
//passa o tamanho da quantidade de registros
relatorioImpCliResponsavel.addParametro("tamanhoColecao", helpersRelatorio.size());
//Inicializa o bean do relatorio
List<RelatorioImpostosPorClienteResponsavelBean> relatorioBeans = new ArrayList();
if(relatorioTipo.equalsIgnoreCase("sintetico") ){
if(helpersRelatorio != null && !helpersRelatorio.isEmpty()){
for (Iterator iter = helpersRelatorio.iterator(); iter.hasNext();) {
ImpostoDeduzidoHelper elementoHelper = (ImpostoDeduzidoHelper) iter.next();
//cria o novo bean - cada bean representa um imposto por cliente e por fatura no relatorio
RelatorioImpostosPorClienteResponsavelBean relatorioBean =
new RelatorioImpostosPorClienteResponsavelBean();
if(elementoHelper.getIdCliente() != null && elementoHelper.getIdCliente() != null){
relatorioBean.setClienteIdNome(elementoHelper.getIdCliente() + " - "+
elementoHelper.getNomeCliente());
}
if(elementoHelper.getCnpjCliente() != null){
relatorioBean.setCnpjCliente(elementoHelper.getCnpjCliente());
}
if(elementoHelper.getValorFatura() != null){
relatorioBean.setValorFatura(Util.formataBigDecimal(elementoHelper.getValorFatura(),2,true));
}
if(elementoHelper.getIdImpostoTipo() != null){
relatorioBean.setIdImpostoTipo(elementoHelper.getIdImpostoTipo());
}
if(elementoHelper.getDescricaoImposto() != null){
relatorioBean.setDescricaoImposto(elementoHelper.getDescricaoImposto());
}
if(elementoHelper.getPercentualAliquota() != null){
relatorioBean.setPercentualAliquota(Util.formataBigDecimal(elementoHelper.getPercentualAliquota(),2,true));
}
if(elementoHelper.getValor() != null){
relatorioBean.setValorImposto(Util.formataBigDecimal(elementoHelper.getValor(),2,true));
}
relatorioBeans.add(relatorioBean);
}
}
}else if(relatorioTipo.equalsIgnoreCase("analitico")){
if(helpersRelatorio != null && !helpersRelatorio.isEmpty()){
for (Iterator iter = helpersRelatorio.iterator(); iter.hasNext();) {
ImpostoDeduzidoHelper elementoHelper = (ImpostoDeduzidoHelper) iter.next();
RelatorioImpostosPorClienteResponsavelBean relatorioBean =
new RelatorioImpostosPorClienteResponsavelBean();
if(elementoHelper.getIdCliente() != null && elementoHelper.getIdCliente() != null){
relatorioBean.setClienteIdNome(elementoHelper.getIdCliente() + " - "+
elementoHelper.getNomeCliente());
}
if(elementoHelper.getCnpjCliente() != null){
relatorioBean.setCnpjCliente(elementoHelper.getCnpjCliente());
}
if(elementoHelper.getValorFatura() != null){
relatorioBean.setValorFatura(Util.formataBigDecimal(elementoHelper.getValorFatura(),2,true));
}
if(elementoHelper.getIdImpostoTipo() != null){
relatorioBean.setIdImpostoTipo(elementoHelper.getIdImpostoTipo());
}
if(elementoHelper.getDescricaoImposto() != null){
relatorioBean.setDescricaoImposto(elementoHelper.getDescricaoImposto());
}
if(elementoHelper.getPercentualAliquota() != null){
relatorioBean.setPercentualAliquota(Util.formataBigDecimal(elementoHelper.getPercentualAliquota(),2,true));
}
if(elementoHelper.getValor() != null){
relatorioBean.setValorImposto(Util.formataBigDecimal(elementoHelper.getValor(),2,true));
}
if ( elementoHelper.getIdImovel() != null ){
relatorioBean.setImovelID( elementoHelper.getIdImovel().toString() );
}
relatorioBeans.add(relatorioBean);
}
}
}
relatorioImpCliResponsavel.addParametro("beansRelatorio", relatorioBeans);
retorno = processarExibicaoRelatorio(relatorioImpCliResponsavel,
tipoRelatorio, httpServletRequest, httpServletResponse,
actionMapping);
}
return retorno;
}
}