package gcom.gui.arrecadacao;
import gcom.arrecadacao.Arrecadador;
import gcom.arrecadacao.ArrecadadorContrato;
import gcom.arrecadacao.FiltroArrecadador;
import gcom.arrecadacao.banco.ContaBancaria;
import gcom.arrecadacao.banco.FiltroContaBancaria;
import gcom.cadastro.cliente.Cliente;
import gcom.cadastro.cliente.FiltroCliente;
import gcom.fachada.Fachada;
import gcom.gui.ActionServletException;
import gcom.gui.GcomAction;
import gcom.seguranca.acesso.usuario.Usuario;
import gcom.util.Util;
import gcom.util.filtro.ParametroSimples;
import java.util.Collection;
import java.util.Iterator;
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;
/**
* Descri��o da classe
*
* @author Marcio Roberto
* @date 19/03/2007
*/
public class InserirContratoArrecadadorAction extends GcomAction {
/**
* Este caso de uso permite a inclus�o de um novo Contrato de Arrecadador
*
* [UC0509] InserirContratoArrecadador
*
*
* @author Marcio Roberto
* @date 19/03/2007
*
* @param actionMapping
* @param actionForm
* @param httpServletRequest
* @param httpServletResponse
* @return
*/
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
ActionForward retorno = actionMapping.findForward("telaSucesso");
InserirContratoArrecadadorActionForm inserirContratoArrecadadorActionForm = (InserirContratoArrecadadorActionForm) actionForm;
HttpSession sessao = httpServletRequest.getSession(false);
Fachada fachada = Fachada.getInstancia();
sessao.setAttribute("caminhoRetornoVoltar",
"/gsan/exibirInserirContratoArrecadadorAction.do");
Usuario usuario = (Usuario) sessao.getAttribute("usuarioLogado");
ArrecadadorContrato arrecadadorContrato = new ArrecadadorContrato();
FiltroArrecadador filtroArrecadador = new FiltroArrecadador();
// Arrecadador
if (inserirContratoArrecadadorActionForm.getIdClienteCombo() != null
&& !inserirContratoArrecadadorActionForm.getIdClienteCombo()
.equals("")) {
// Inclui a obejeto de cliente no filtro de arrecadador
filtroArrecadador
.adicionarCaminhoParaCarregamentoEntidade("cliente");
// filtra arrecadador pelo cliente
filtroArrecadador.adicionarParametro(new ParametroSimples(
FiltroArrecadador.CLIENTE_ID,
inserirContratoArrecadadorActionForm.getIdClienteCombo()));
// Preenche colecao de arrecadador baseado no cliente escolhido
Collection<Arrecadador> colecaoArrecadador = fachada.pesquisar(
filtroArrecadador, Arrecadador.class.getName());
if (colecaoArrecadador != null && !colecaoArrecadador.isEmpty()) {
Iterator iteratorColecaoArrecadador = colecaoArrecadador
.iterator();
while (iteratorColecaoArrecadador.hasNext()) {
Arrecadador arrecadador = (Arrecadador) iteratorColecaoArrecadador
.next();
arrecadadorContrato.setArrecadador(arrecadador);
}
} else {
arrecadadorContrato.setArrecadador(null);
}
}
// [FS0007]-Verificar exist�ncia do contrato de arrecadador
String numeroContrato = inserirContratoArrecadadorActionForm
.getNumeroContrato();
// Numero de Contrato
arrecadadorContrato
.setNumeroContrato(inserirContratoArrecadadorActionForm
.getNumeroContrato());
// Conta Deposito Arrecadador
FiltroContaBancaria filtroContaBancaria = new FiltroContaBancaria();
if (inserirContratoArrecadadorActionForm
.getIdContaBancariaArrecadador() != null
&& !inserirContratoArrecadadorActionForm
.getIdContaBancariaArrecadador().equals("")) {
filtroContaBancaria.adicionarParametro(new ParametroSimples(
FiltroContaBancaria.ID,
inserirContratoArrecadadorActionForm
.getIdContaBancariaArrecadador()));
Collection<ContaBancaria> colecaoContaBancariaArrecadador = fachada
.pesquisar(filtroContaBancaria, ContaBancaria.class
.getName());
if (colecaoContaBancariaArrecadador != null
&& !colecaoContaBancariaArrecadador.isEmpty()) {
Iterator iteratorColecaoContaBancariaArrecadador = colecaoContaBancariaArrecadador
.iterator();
while (iteratorColecaoContaBancariaArrecadador.hasNext()) {
ContaBancaria contaBancariaArrecadador = (ContaBancaria) iteratorColecaoContaBancariaArrecadador
.next();
arrecadadorContrato
.setContaBancariaDepositoArrecadacao(contaBancariaArrecadador);
}
} else {
arrecadadorContrato.setContaBancariaDepositoArrecadacao(null);
}
}
// Conta Deposito Tarifa
filtroContaBancaria = new FiltroContaBancaria();
if (inserirContratoArrecadadorActionForm.getIdContaBancariaTarifa() != null
&& !inserirContratoArrecadadorActionForm
.getIdContaBancariaTarifa().equals("")) {
filtroContaBancaria.adicionarParametro(new ParametroSimples(
FiltroContaBancaria.ID,
inserirContratoArrecadadorActionForm
.getIdContaBancariaTarifa()));
Collection<ContaBancaria> colecaoContaBancariaTarifa = fachada
.pesquisar(filtroContaBancaria, ContaBancaria.class
.getName());
if (colecaoContaBancariaTarifa != null
&& !colecaoContaBancariaTarifa.isEmpty()) {
Iterator iteratorColecaoContaBancariaTarifa = colecaoContaBancariaTarifa
.iterator();
while (iteratorColecaoContaBancariaTarifa.hasNext()) {
ContaBancaria contaBancariaTarifa = (ContaBancaria) iteratorColecaoContaBancariaTarifa
.next();
arrecadadorContrato
.setContaBancariaDepositoTarifa(contaBancariaTarifa);
}
} else {
arrecadadorContrato.setContaBancariaDepositoTarifa(null);
}
}
// Cliente
Cliente cliente = new Cliente();
cliente.setId(new Integer(inserirContratoArrecadadorActionForm
.getIdCliente()));
// [FS0004]-Verificar se pessoa f�sica
FiltroCliente filtroCliente = new FiltroCliente();
filtroCliente.adicionarParametro(new ParametroSimples(FiltroCliente.ID,
cliente.getId()));
filtroCliente.adicionarCaminhoParaCarregamentoEntidade("clienteTipo");
Collection colecaoCliente = fachada.pesquisar(filtroCliente,
Cliente.class.getName());
Cliente clientePesq = (Cliente) Util
.retonarObjetoDeColecao(colecaoCliente);
if (clientePesq.getClienteTipo().getIndicadorPessoaFisicaJuridica() != null
&& clientePesq.getClienteTipo()
.getIndicadorPessoaFisicaJuridica().equals(
new Short("2"))) {
throw new ActionServletException(
"atencao.cliente_arrecadador_pessoa_fisica");
}
arrecadadorContrato.setCliente(cliente);
// C�digo Convenio
arrecadadorContrato
.setCodigoConvenio(inserirContratoArrecadadorActionForm
.getIdConvenio());
// IndicadorCobrancaISS
if (inserirContratoArrecadadorActionForm.getIndicadorCobranca() != null) {
arrecadadorContrato
.setIndicadorCobrancaIss(new Short(
inserirContratoArrecadadorActionForm
.getIndicadorCobranca()));
} else {
arrecadadorContrato.setIndicadorCobrancaIss(null);
}
// Intervalo de Datas do Contrato
arrecadadorContrato.setDataContratoInicio(Util
.converteStringParaDate(inserirContratoArrecadadorActionForm
.getDtInicioContrato()));
arrecadadorContrato.setDataContratoFim(Util
.converteStringParaDate(inserirContratoArrecadadorActionForm
.getDtFimContrato()));
arrecadadorContrato.setTamanhoMaximoIdentificacaoImovel(new Integer(
inserirContratoArrecadadorActionForm
.getTamanhoMaximoIdentificacaoImovel()).shortValue());
String emailCliente = inserirContratoArrecadadorActionForm
.getEmailCliente();
if (emailCliente != null && !emailCliente.trim().equals("")) {
arrecadadorContrato.setDescricaoEmail(emailCliente);
} else {
arrecadadorContrato.setDescricaoEmail(null);
}
Collection colecaoArrecadadorContratoTarifa = (Collection)
sessao.getAttribute("colecaoArrecadadorContratoTarifaSelecionados");
if (colecaoArrecadadorContratoTarifa == null || colecaoArrecadadorContratoTarifa.isEmpty()) {
throw new ActionServletException("atencao.required", null,
"Arrecadador(es) Contrato(s) Tarifa(s)");
}
Integer idContratoArrecadador = fachada.inserirContratoArrecadador(
arrecadadorContrato, colecaoArrecadadorContratoTarifa, usuario);
String idRegistroAtualizacao = idContratoArrecadador.toString();
sessao.setAttribute("idRegistroAtualizacao", idRegistroAtualizacao);
// Monta a p�gina de sucesso
montarPaginaSucesso(httpServletRequest, "Contrato de Arrecadador "
+ numeroContrato + " inserido com sucesso.",
"Inserir outro Contrato de Arrecadador",
"exibirInserirContratoArrecadadorAction.do?menu=sim",
"exibirAtualizarContratoArrecadadorAction.do?idRegistroInseridoAtualizar="
+ idContratoArrecadador,
"Atualizar Contrato de Arrecadador Inserido");
sessao.removeAttribute("InserirContratoArrecadadorActionForm");
return retorno;
}
}