package gcom.gui.cadastro;
import gcom.cadastro.empresa.Empresa;
import gcom.cadastro.empresa.EmpresaCobrancaFaixa;
import gcom.cadastro.empresa.EmpresaContratoCobranca;
import gcom.cadastro.empresa.FiltroEmpresa;
import gcom.cadastro.empresa.FiltroEmpresaCobrancaFaixa;
import gcom.cadastro.empresa.FiltroEmpresaContratoCobranca;
import gcom.fachada.Fachada;
import gcom.gui.ActionServletException;
import gcom.gui.GcomAction;
import gcom.util.ConstantesSistema;
import gcom.util.Util;
import gcom.util.filtro.ParametroSimples;
import java.math.BigDecimal;
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 javax.servlet.http.HttpSession;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
/**
*
* @author Arthur Carvalho
* @date 14/05/2008
*/
public class ExibirAtualizarEmpresaAction extends GcomAction {
/**
* M�todo responsavel por responder a requisicao
*
* @param actionMapping
* Descri��o do par�metro
* @param actionForm
* Descri��o do par�metro
* @param httpServletRequest
* Descri��o do par�metro
* @param httpServletResponse
* Descri��o do par�metro
* @return Descri��o do retorno
*/
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
ActionForward retorno = actionMapping.findForward("empresaAtualizar");
AtualizarEmpresaActionForm atualizarEmpresaActionForm = (AtualizarEmpresaActionForm) actionForm;
Fachada fachada = Fachada.getInstancia();
HttpSession sessao = httpServletRequest.getSession(false);
String id = null;
List<EmpresaCobrancaFaixa> colecaoEmpresaCobrancaFaixa = new ArrayList();
List<EmpresaCobrancaFaixa> colecaoEmpresaCobrancaFaixaRemover = new ArrayList();
if (sessao.getAttribute("colecaoEmpresaCobrancaFaixa") != null
&& !sessao.getAttribute("colecaoEmpresaCobrancaFaixa").equals("")){
colecaoEmpresaCobrancaFaixa = (List<EmpresaCobrancaFaixa>) sessao.getAttribute("colecaoEmpresaCobrancaFaixa");
}
if (sessao.getAttribute("colecaoEmpresaCobrancaFaixaRemover") != null
&& !sessao.getAttribute("colecaoEmpresaCobrancaFaixaRemover").equals("")){
colecaoEmpresaCobrancaFaixaRemover = (List<EmpresaCobrancaFaixa>) sessao.getAttribute("colecaoEmpresaCobrancaFaixaRemover");
}
if (httpServletRequest.getParameter("idRegistroAtualizacao") != null) {
id = httpServletRequest.getParameter("idRegistroAtualizacao");
} else if (sessao.getAttribute("empresa") != null
&& !sessao.getAttribute("empresa").equals("")) {
id = ((Empresa) sessao.getAttribute("empresa")).getId().toString();
} else if (sessao.getAttribute("atualizarEmpresa") != null
&& !sessao.getAttribute("atualizarEmpresa").equals("")){
id = ((Empresa) sessao.getAttribute("atualizarEmpresa")).getId().toString();
}
if (httpServletRequest.getParameter("manter") != null) {
sessao.setAttribute("manter", true);
} else if (httpServletRequest.getParameter("filtrar") != null) {
sessao.removeAttribute("manter");
}
if (id == null) {
if (httpServletRequest.getAttribute("idRegistroAtualizacao") == null) {
id = (String) sessao.getAttribute("idRegistroAtualizacao");
} else {
id = (String) httpServletRequest.getAttribute(
"idRegistroAtualizacao").toString();
}
} else {
sessao.setAttribute("i", true);
}
Empresa empresa = new Empresa();
if (id != null && !id.trim().equals("") && Integer.parseInt(id) > 0
&& (httpServletRequest.getParameter("adicionarFaixa") == null
|| !httpServletRequest.getParameter("adicionarFaixa").equalsIgnoreCase("sim"))
&& (httpServletRequest.getParameter("removerEmpresaCobrancaFaixa") == null
|| httpServletRequest.getParameter("removerEmpresaCobrancaFaixa").equals(""))
&& (httpServletRequest.getParameter("limparFaixa") == null
|| httpServletRequest.getParameter("limparFaixa").equals(""))) {
sessao.removeAttribute("colecaoEmpresaCobrancaFaixaRemover");
FiltroEmpresa filtroEmpresa = new FiltroEmpresa();
filtroEmpresa.adicionarParametro(new ParametroSimples(
FiltroEmpresa.ID, id));
Collection colecaoEmpresa = fachada.pesquisar(filtroEmpresa,
Empresa.class.getName());
if (colecaoEmpresa != null && !colecaoEmpresa.isEmpty()) {
empresa = (Empresa) Util.retonarObjetoDeColecao(colecaoEmpresa);
}
if (id == null || id.trim().equals("")) {
atualizarEmpresaActionForm.setId(empresa.getId().toString());
atualizarEmpresaActionForm.setDescricao(empresa.getDescricao());
atualizarEmpresaActionForm.setDescricaoAbreviada(empresa
.getDescricaoAbreviada());
atualizarEmpresaActionForm.setEmail(empresa.getEmail());
atualizarEmpresaActionForm.setIndicadorEmpresaPrincipal(empresa
.getIndicadorEmpresaPrincipal());
atualizarEmpresaActionForm.setIndicadorUso(empresa
.getIndicadorUso());
atualizarEmpresaActionForm
.setIndicadorEmpresaCobranca(empresa
.getIndicadorEmpresaContratadaCobranca()
.toString());
atualizarEmpresaActionForm.setIndicadorLeitura( empresa.getIndicadorLeitura() );
if (empresa.getIndicadorEmpresaContratadaCobranca()
.intValue() == ConstantesSistema.INDICADOR_USO_ATIVO) {
FiltroEmpresaContratoCobranca filtroEmpresaCobranca = new FiltroEmpresaContratoCobranca();
filtroEmpresaCobranca
.adicionarParametro(new ParametroSimples(
FiltroEmpresaContratoCobranca.EMPRESA_ID, empresa
.getId().toString()));
Collection colecaoEmpresaCobranca = fachada.pesquisar(
filtroEmpresaCobranca, EmpresaContratoCobranca.class
.getName());
if (colecaoEmpresaCobranca != null
&& !colecaoEmpresaCobranca.isEmpty()) {
EmpresaContratoCobranca empresaCobranca = (EmpresaContratoCobranca) colecaoEmpresaCobranca
.iterator().next();
atualizarEmpresaActionForm
.setDataInicioContratoCobranca(Util
.formatarData(empresaCobranca
.getDataInicioContrato()));
atualizarEmpresaActionForm
.setDataFimContratoCobranca(Util
.formatarData(empresaCobranca
.getDataFinalContrato()));
atualizarEmpresaActionForm.setPercentualPagamento(Util
.formatarMoedaReal(empresaCobranca
.getPercentualContratoCobranca()));
FiltroEmpresaCobrancaFaixa filtro = new FiltroEmpresaCobrancaFaixa();
filtro.adicionarParametro(new ParametroSimples(
FiltroEmpresaCobrancaFaixa.EMPRESA_CONTRATO_COBRANCA_ID, empresaCobranca.getId()));
filtro.setCampoOrderBy(FiltroEmpresaCobrancaFaixa.NUMERO_MAXIMO_CONTAS_FAIXA);
colecaoEmpresaCobrancaFaixa = (List<EmpresaCobrancaFaixa>)fachada.pesquisar(
filtro, EmpresaCobrancaFaixa.class.getName());
if (colecaoEmpresaCobrancaFaixa != null
&& !colecaoEmpresaCobrancaFaixa.isEmpty()) {
atualizarEmpresaActionForm.setPercentualDaFaixaInformado("sim");
sessao.setAttribute("colecaoEmpresaCobrancaFaixa", colecaoEmpresaCobrancaFaixa);
} else {
atualizarEmpresaActionForm.setPercentualDaFaixaInformado("");
sessao.removeAttribute("colecaoEmpresaCobrancaFaixa");
}
}
}
}
atualizarEmpresaActionForm.setId(empresa.getId().toString());
atualizarEmpresaActionForm.setDescricao(empresa.getDescricao());
atualizarEmpresaActionForm.setDescricaoAbreviada(empresa
.getDescricaoAbreviada());
atualizarEmpresaActionForm.setEmail(empresa.getEmail());
atualizarEmpresaActionForm.setIndicadorEmpresaPrincipal(empresa
.getIndicadorEmpresaPrincipal());
atualizarEmpresaActionForm.setIndicadorLeitura( empresa.getIndicadorLeitura() );
atualizarEmpresaActionForm.setIndicadorEmpresaCobranca(empresa
.getIndicadorEmpresaContratadaCobranca().toString());
if (empresa.getIndicadorEmpresaContratadaCobranca()
.intValue() == ConstantesSistema.INDICADOR_USO_ATIVO) {
FiltroEmpresaContratoCobranca filtroEmpresaCobranca = new FiltroEmpresaContratoCobranca();
filtroEmpresaCobranca.adicionarParametro(new ParametroSimples(
FiltroEmpresaContratoCobranca.EMPRESA_ID, empresa.getId()
.toString()));
Collection colecaoEmpresaCobranca = fachada.pesquisar(
filtroEmpresaCobranca, EmpresaContratoCobranca.class.getName());
if (colecaoEmpresaCobranca != null
&& !colecaoEmpresaCobranca.isEmpty()) {
EmpresaContratoCobranca empresaCobranca = (EmpresaContratoCobranca) colecaoEmpresaCobranca
.iterator().next();
atualizarEmpresaActionForm
.setDataInicioContratoCobranca(Util
.formatarData(empresaCobranca
.getDataInicioContrato()));
atualizarEmpresaActionForm.setDataFimContratoCobranca(Util
.formatarData(empresaCobranca
.getDataFinalContrato()));
atualizarEmpresaActionForm.setPercentualPagamento(Util
.formatarMoedaReal(empresaCobranca
.getPercentualContratoCobranca()));
FiltroEmpresaCobrancaFaixa filtro = new FiltroEmpresaCobrancaFaixa();
filtro.adicionarParametro(new ParametroSimples(
FiltroEmpresaCobrancaFaixa.EMPRESA_CONTRATO_COBRANCA_ID, empresaCobranca.getId()));
filtro.setCampoOrderBy(FiltroEmpresaCobrancaFaixa.NUMERO_MAXIMO_CONTAS_FAIXA);
colecaoEmpresaCobrancaFaixa = (List<EmpresaCobrancaFaixa>)fachada.pesquisar(
filtro, EmpresaCobrancaFaixa.class.getName());
if (colecaoEmpresaCobrancaFaixa != null
&& !colecaoEmpresaCobrancaFaixa.isEmpty()) {
atualizarEmpresaActionForm.setPercentualDaFaixaInformado("sim");
sessao.setAttribute("colecaoEmpresaCobrancaFaixa", colecaoEmpresaCobrancaFaixa);
} else {
atualizarEmpresaActionForm.setPercentualDaFaixaInformado("");
sessao.removeAttribute("colecaoEmpresaCobrancaFaixa");
}
}
}
atualizarEmpresaActionForm.setIndicadorUso(empresa
.getIndicadorUso());
sessao.setAttribute("atualizarEmpresa", empresa);
if (sessao.getAttribute("colecaoEmpresa") != null) {
sessao.setAttribute("caminhoRetornoVoltar",
"/gsan/filtrarEmpresaAction.do");
} else {
sessao.setAttribute("caminhoRetornoVoltar",
"/gsan/exibirFiltrarEmpresaAction.do");
}
}
// Adicionar EmpresaCobrancaFaixa
if (httpServletRequest.getParameter("adicionarFaixa") != null
&& httpServletRequest.getParameter("adicionarFaixa").equals("sim")
&& atualizarEmpresaActionForm.getQuantidadeMinimaContas() != null
&& !atualizarEmpresaActionForm.getQuantidadeMinimaContas().equals("")
&& atualizarEmpresaActionForm.getPercentualDaFaixa() != null
&& !atualizarEmpresaActionForm.getPercentualDaFaixa().equals("")) {
Integer quantidadeMinimaContas = new Integer(atualizarEmpresaActionForm.getQuantidadeMinimaContas());
BigDecimal percentualFaixa = Util.formatarMoedaRealparaBigDecimal(atualizarEmpresaActionForm.getPercentualDaFaixa());
if (colecaoEmpresaCobrancaFaixa != null && !colecaoEmpresaCobrancaFaixa.isEmpty()) {
Iterator iterator = colecaoEmpresaCobrancaFaixa.iterator();
while(iterator.hasNext()) {
EmpresaCobrancaFaixa empresaCobrancaFaixa = (EmpresaCobrancaFaixa) iterator.next();
if (empresaCobrancaFaixa.getNumeroMinimoContasFaixa().compareTo(quantidadeMinimaContas) >= 0) {
throw new ActionServletException(
"atencao.quantidade.maior.que.quantidade.anterior", null, "Quantidade M�nima de Contas");
}
}
}
EmpresaCobrancaFaixa empresaCobrancaFaixa = new EmpresaCobrancaFaixa();
empresaCobrancaFaixa.setNumeroMinimoContasFaixa(quantidadeMinimaContas);
empresaCobrancaFaixa.setPercentualFaixa(percentualFaixa);
colecaoEmpresaCobrancaFaixa.add(empresaCobrancaFaixa);
sessao.setAttribute("colecaoEmpresaCobrancaFaixa", colecaoEmpresaCobrancaFaixa);
atualizarEmpresaActionForm.setPercentualDaFaixaInformado("sim");
atualizarEmpresaActionForm.setQuantidadeMinimaContas("");
atualizarEmpresaActionForm.setPercentualDaFaixa("");
}
// Remover EmpresaCobrancaFaixa
if (httpServletRequest.getParameter("removerEmpresaCobrancaFaixa") != null
&& !httpServletRequest.getParameter("removerEmpresaCobrancaFaixa").equals("")) {
Integer indice = new Integer(httpServletRequest.getParameter("removerEmpresaCobrancaFaixa"));
if (colecaoEmpresaCobrancaFaixa != null
&& !colecaoEmpresaCobrancaFaixa.isEmpty()
&& colecaoEmpresaCobrancaFaixa.size() >= indice) {
EmpresaCobrancaFaixa empresaCobrancaFaixa = colecaoEmpresaCobrancaFaixa.get(indice - 1);
if (empresaCobrancaFaixa.getUltimaAlteracao() != null) {
colecaoEmpresaCobrancaFaixaRemover.add(empresaCobrancaFaixa);
sessao.setAttribute("colecaoEmpresaCobrancaFaixaRemover", colecaoEmpresaCobrancaFaixaRemover);
}
colecaoEmpresaCobrancaFaixa.remove(indice-1);
if (colecaoEmpresaCobrancaFaixa != null
&& !colecaoEmpresaCobrancaFaixa.isEmpty()) {
sessao.setAttribute("colecaoEmpresaCobrancaFaixa", colecaoEmpresaCobrancaFaixa);
atualizarEmpresaActionForm.setPercentualDaFaixaInformado("sim");
} else {
sessao.removeAttribute("colecaoEmpresaCobrancaFaixa");
atualizarEmpresaActionForm.setPercentualDaFaixaInformado("");
}
}
}
// Limpar Formul�rio
if (httpServletRequest.getParameter("limparFaixa") != null
&& httpServletRequest.getParameter("limparFaixa").equals("sim")) {
sessao.removeAttribute("colecaoEmpresaCobrancaFaixa");
atualizarEmpresaActionForm.setPercentualDaFaixaInformado("");
}
return retorno;
}
}