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;
/**
*
* @author K�ssia Albuquerque
* @date 08/01/2007
*
* Alterado por Vinicius Medeiros
* @date 06/06/2008
*/
public class AtualizarContratoArrecadadorAction extends GcomAction {
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
ActionForward retorno = actionMapping.findForward("telaSucesso");
AtualizarContratoArrecadadorActionForm atualizarContratoArrecadadorActionForm = (AtualizarContratoArrecadadorActionForm) actionForm;
Fachada fachada = Fachada.getInstancia();
HttpSession sessao = httpServletRequest.getSession(false);
Usuario usuarioLogado = (Usuario) sessao.getAttribute("usuarioLogado");
ArrecadadorContrato arrecadadorContrato = (ArrecadadorContrato) sessao
.getAttribute("arrecadadorContrato");
String[] idArrecadador = new String[1];
idArrecadador[0] = arrecadadorContrato.getArrecadador().getId()
.toString();
// Arrecadador
if (atualizarContratoArrecadadorActionForm.getIdClienteCombo() != null
&& !atualizarContratoArrecadadorActionForm.getIdClienteCombo()
.equals("")) {
FiltroArrecadador filtroArrecadador = new FiltroArrecadador();
// Inclui a obejeto de cliente no filtro de arrecadador
filtroArrecadador
.adicionarCaminhoParaCarregamentoEntidade("cliente");
// filtra arrecadador pelo cliente
filtroArrecadador
.adicionarParametro(new ParametroSimples(
FiltroArrecadador.CLIENTE_ID,
atualizarContratoArrecadadorActionForm
.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);
}
}
arrecadadorContrato
.setNumeroContrato(atualizarContratoArrecadadorActionForm
.getNumeroContrato());
// Conta Deposito Arrecadador
FiltroContaBancaria filtroContaBancaria = new FiltroContaBancaria();
if (atualizarContratoArrecadadorActionForm
.getIdContaBancariaArrecadador() != null
&& !atualizarContratoArrecadadorActionForm
.getIdContaBancariaArrecadador().equals("")) {
filtroContaBancaria.adicionarParametro(new ParametroSimples(
FiltroContaBancaria.ID,
atualizarContratoArrecadadorActionForm
.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 (atualizarContratoArrecadadorActionForm.getIdContaBancariaTarifa() != null
&& !atualizarContratoArrecadadorActionForm
.getIdContaBancariaTarifa().equals("")) {
filtroContaBancaria.adicionarParametro(new ParametroSimples(
FiltroContaBancaria.ID,
atualizarContratoArrecadadorActionForm
.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(atualizarContratoArrecadadorActionForm
.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(atualizarContratoArrecadadorActionForm
.getIdConvenio());
// IndicadorCobrancaISS
if (atualizarContratoArrecadadorActionForm.getIndicadorCobranca() != null) {
arrecadadorContrato.setIndicadorCobrancaIss(new Short(
atualizarContratoArrecadadorActionForm
.getIndicadorCobranca()));
} else {
arrecadadorContrato.setIndicadorCobrancaIss(null);
}
// Intervalo de Datas do Contrato
arrecadadorContrato.setDataContratoInicio(Util
.converteStringParaDate(atualizarContratoArrecadadorActionForm
.getDtInicioContrato()));
arrecadadorContrato.setDataContratoFim(Util
.converteStringParaDate(atualizarContratoArrecadadorActionForm
.getDtFimContrato()));
String emailCliente = atualizarContratoArrecadadorActionForm
.getEmailCliente();
// email
if (emailCliente != null && !emailCliente.trim().equals("")) {
arrecadadorContrato.setDescricaoEmail(emailCliente);
} else {
arrecadadorContrato.setDescricaoEmail(null);
}
arrecadadorContrato.setTamanhoMaximoIdentificacaoImovel(new Integer(
atualizarContratoArrecadadorActionForm
.getTamanhoMaximoIdentificacaoImovel()).shortValue());
//Contrato Tarifa
Collection colecaoArrecadadorContratoTarifa = (Collection)
sessao.getAttribute("colecaoArrecadadorContratoTarifaSelecionados");
sessao.setAttribute("colecaoArrecadadorContratoTarifaSelecionados", null);
if (colecaoArrecadadorContratoTarifa == null || colecaoArrecadadorContratoTarifa.isEmpty()) {
throw new ActionServletException("atencao.required", null,
"pelo menos uma Tarifa de Contrato");
}
// atualiza na base de dados de Arrecadador
fachada
.atualizarContratoArrecadador(arrecadadorContrato, colecaoArrecadadorContratoTarifa,
usuarioLogado);
// Monta a p�gina de sucesso
montarPaginaSucesso(httpServletRequest, "Contrato de Arrecadador "
+ atualizarContratoArrecadadorActionForm.getNumeroContrato()
+ " atualizado com sucesso.",
"Realizar outra Manuten��o de Contrato de Arrecadador",
"exibirFiltrarContratoArrecadadorAction.do?menu=sim");
return retorno;
}
}