package gcom.gui.faturamento;
import gcom.arrecadacao.pagamento.GuiaPagamento;
import gcom.atendimentopublico.ordemservico.OrdemServico;
import gcom.atendimentopublico.registroatendimento.RegistroAtendimento;
import gcom.atendimentopublico.registroatendimento.bean.ObterDadosRegistroAtendimentoHelper;
import gcom.cadastro.cliente.Cliente;
import gcom.cadastro.imovel.Imovel;
import gcom.fachada.Fachada;
import gcom.gui.ActionServletException;
import gcom.gui.GcomAction;
import gcom.seguranca.acesso.usuario.Usuario;
import gcom.util.ConstantesSistema;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Collection;
import java.util.Date;
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;
public class InserirGuiaPagamentoAction extends GcomAction {
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
// Seta o retorno
ActionForward retorno = actionMapping.findForward("telaSucesso");
// Obt�m a inst�ncia da fachada
Fachada fachada = Fachada.getInstancia();
HttpSession sessao = httpServletRequest.getSession(false);
InserirGuiaPagamentoActionForm inserirGuiaPagamentoActionForm = (InserirGuiaPagamentoActionForm) actionForm;
SimpleDateFormat dataFormatada = new SimpleDateFormat("dd/MM/yyyy");
String idImovel = inserirGuiaPagamentoActionForm.getIdImovel();
String codigoCliente = inserirGuiaPagamentoActionForm.getCodigoCliente();
String idOrdemServico = inserirGuiaPagamentoActionForm.getOrdemServico();
String dataVencimento = inserirGuiaPagamentoActionForm.getDataVencimento();
String observacao = inserirGuiaPagamentoActionForm.getObservacao();
String indicadorEmitirObservacao = inserirGuiaPagamentoActionForm.getIndicadorEmitirObservacao();
if (inserirGuiaPagamentoActionForm.getObservacaoPagamentoParcial() != null &&
!inserirGuiaPagamentoActionForm.getObservacaoPagamentoParcial().equals("")){
if (observacao != null && !observacao.equals("")){
observacao = "REFER�NCIA DA CONTA: " + inserirGuiaPagamentoActionForm.getObservacaoPagamentoParcial() + " - " +
observacao;
}
else{
observacao = "REFER�NCIA DA CONTA: " + inserirGuiaPagamentoActionForm.getObservacaoPagamentoParcial();
}
indicadorEmitirObservacao = ConstantesSistema.SIM.toString();
}
GuiaPagamento guiaPagamento = new GuiaPagamento();
Imovel imovel = new Imovel();
if (idImovel != null && !idImovel.equals("")) {
imovel.setId(new Integer(idImovel));
}
guiaPagamento.setImovel(imovel);
Cliente cliente = new Cliente();
if (codigoCliente != null && !codigoCliente.equals("")) {
cliente.setId(new Integer(codigoCliente));
}
guiaPagamento.setCliente(cliente);
OrdemServico ordemServico = new OrdemServico();
if (idOrdemServico != null && !idOrdemServico.equals("")) {
ordemServico =
Fachada.getInstancia().recuperaOSPorId(new Integer(idOrdemServico));
// Verifica se a pesquisa retornou algum objeto para a cole��o
if (ordemServico != null) {
Fachada.getInstancia().validarExibirInserirGuiaPagamento(null,ordemServico,
imovel.getId(),cliente.getId());
RegistroAtendimento ra = ordemServico.getRegistroAtendimento();
inserirGuiaPagamentoActionForm.setRegistroAtendimento(""+ra.getId());
inserirGuiaPagamentoActionForm.setNomeRegistroAtendimento(
ra.getSolicitacaoTipoEspecificacao().getDescricao());
if(ordemServico.getServicoTipo().getDebitoTipo() != null){
inserirGuiaPagamentoActionForm.setIdTipoDebito(
""+ordemServico.getServicoTipo().getDebitoTipo().getId());
inserirGuiaPagamentoActionForm.setDescricaoTipoDebito(
ordemServico.getServicoTipo().getDebitoTipo().getDescricao());
}
}else{
throw new ActionServletException("atencao.naocadastrado", null,"Ordem de Servi�o");
}
}
guiaPagamento.setOrdemServico(ordemServico);
String idRegistroAtendimento = inserirGuiaPagamentoActionForm.getRegistroAtendimento();
RegistroAtendimento registroAtendimento = new RegistroAtendimento();
if (idRegistroAtendimento != null && !idRegistroAtendimento.equals("")) {
ObterDadosRegistroAtendimentoHelper obterDadosRegistroAtendimentoHelper =
Fachada.getInstancia().obterDadosRegistroAtendimento(new Integer(idRegistroAtendimento));
if (obterDadosRegistroAtendimentoHelper.getRegistroAtendimento() != null) {
registroAtendimento = obterDadosRegistroAtendimentoHelper.getRegistroAtendimento();
fachada.validarExibirInserirGuiaPagamento(registroAtendimento,null,imovel.getId(),cliente.getId());
}else{
throw new ActionServletException("atencao.naocadastrado", null,"Registro Atendimento");
}
}
guiaPagamento.setRegistroAtendimento(registroAtendimento);
Date dataVencimentoFormatada = null;
try {
dataVencimentoFormatada = dataFormatada.parse(dataVencimento);
} catch (ParseException ex) {
throw new ActionServletException("erro.sistema");
}
guiaPagamento.setDataVencimento(dataVencimentoFormatada);
guiaPagamento.setNumeroPrestacaoTotal(new Short(inserirGuiaPagamentoActionForm.getNumeroTotalPrestacao()));
// Adicionado por Rafael Corr�a em 17/12/2008
if (observacao != null && !observacao.trim().equals("")) {
guiaPagamento.setObservacao(observacao.trim());
} else {
if (indicadorEmitirObservacao != null && indicadorEmitirObservacao.trim().equals(ConstantesSistema.SIM.toString())) {
throw new ActionServletException("atencao.campo_selecionado.obrigatorio", null, "Observa��o");
}
}
guiaPagamento.setIndicadorEmitirObservacao(new Short(indicadorEmitirObservacao));
/** alterado por pedro alexandre dia 20/11/2006
* Recupera o usu�rio logado para passar no met�do de inserir guia de pagamento
* para verificar se o usu�rio tem abrang�ncia para inserir a guia de pagamento
* para o im�vel caso a guia de pagamentoseja para o im�vel.
*/
Usuario usuarioLogado = (Usuario)sessao.getAttribute(Usuario.USUARIO_LOGADO);
guiaPagamento.setUsuario(usuarioLogado);
Collection colecaoGuiaPagamentoItem = (Collection)sessao.getAttribute("colecaoGuiaDebitoTipo");
if(colecaoGuiaPagamentoItem == null || colecaoGuiaPagamentoItem.isEmpty()){
throw new ActionServletException("atencao.nao.existe.debito.tipo.guia");
}
String[] idGuiaPagamento = fachada.inserirGuiaPagamento(guiaPagamento,usuarioLogado,
new Integer(inserirGuiaPagamentoActionForm.getQtdeDiasVencimento()),colecaoGuiaPagamentoItem, null);
sessao.setAttribute("idGuiaPagamento",idGuiaPagamento);
/** fim da altera��o ***************************************************/
if (idImovel != null && !idImovel.equals("")) {
// montarPaginaSucesso(httpServletRequest, "Guia de Pagamento de "
// + debitoTipo.getDescricao() + " para o im�vel " + idImovel
// + " inserida com sucesso.",
// "Inserir outra Guia de Pagamento",
// "exibirInserirGuiaPagamentoAction.do?menu=sim",
// "exibirManterGuiaPagamentoAction.do?idImovel=" + idImovel,
// "Cancelar Guia(s) de Pagamento do im�vel " + idImovel);
montarPaginaSucesso(httpServletRequest ,
"Guia de Pagamento para o im�vel " + idImovel
+ " inserida com sucesso.", "Inserir outra Guia de Pagamento",
"exibirInserirGuiaPagamentoAction.do?menu=sim",
"exibirManterGuiaPagamentoAction.do?idImovel=" + idImovel,
"Cancelar Guia(s) de Pagamento do im�vel " + idImovel,
"Imprimir Guia de Pagamento",
"gerarRelatorioEmitirGuiaPagamentoActionInserir.do");
} else {
// montarPaginaSucesso(httpServletRequest, "Guia de Pagamento de "
// + debitoTipo.getDescricao() + " para o cliente "
// + codigoCliente + " inserida com sucesso.",
// "Inserir outra Guia de Pagamento",
// "exibirInserirGuiaPagamentoAction.do?menu=sim",
// "exibirManterGuiaPagamentoAction.do?idCliente="
// + codigoCliente,
// "Cancelar Guia(s) de Pagamento do cliente " + codigoCliente);
montarPaginaSucesso(httpServletRequest, "Guia de Pagamento para o cliente "
+ codigoCliente + " inserida com sucesso.",
"Inserir outra Guia de Pagamento",
"exibirInserirGuiaPagamentoAction.do?menu=sim",
"exibirManterGuiaPagamentoAction.do?idCliente="
+ codigoCliente,
"Cancelar Guia(s) de Pagamento do cliente " + codigoCliente,
"Imprimir Guia de Pagamento",
"gerarRelatorioEmitirGuiaPagamentoActionInserir.do");
}
return retorno;
}
}