package gcom.gui.cobranca;
import gcom.atendimentopublico.ordemservico.FiltroOrdemServico;
import gcom.atendimentopublico.ordemservico.OrdemServico;
import gcom.atendimentopublico.registroatendimento.AtendimentoMotivoEncerramento;
import gcom.cobranca.CobrancaAcao;
import gcom.cobranca.CobrancaAcaoOrdemServicoNaoAceitas;
import gcom.cobranca.CobrancaAcaoOrdemServicoNaoAceitasPK;
import gcom.cobranca.CobrancaGrupo;
import gcom.cobranca.FiltroCobrancaAcaoOrdemServicoNaoAceitas;
import gcom.cobranca.MotivoNaoAceitacaoEncerramentoOS;
import gcom.cobranca.bean.CobrancaAcaoOrdemServicoNaoAceitasHelper;
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.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
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;
/**
* Permite consultar comandos de a��o de cobran�a
* [UC1098] Informar N�o Aceita��o de Motivo de Encerramento Ordem de Servi�o
* @author Mariana Victor
* @since 13/12/2010
*/
public class ComandosAcaoCobrancaFiltrarAction extends GcomAction{
/**
* @param actionMapping
* @param actionForm
* @param httpServletRequest
* @param httpServletResponse
* @return
*/
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
ActionForward retorno = actionMapping.findForward("retornarComandosAcaoCobranca");
Fachada fachada = Fachada.getInstancia();
// Mudar isso quando tiver esquema de seguran�a
HttpSession sessao = httpServletRequest.getSession(false);
ComandosAcaoCobrancaFiltrarActionForm comandosAcaoCobrancaFiltrarActionForm = (ComandosAcaoCobrancaFiltrarActionForm)actionForm;
FiltroOrdemServico filtroOrdemServico;
List<CobrancaAcaoOrdemServicoNaoAceitasHelper> colecaoCobrancaAcaoOrdemServicoNaoAceitasHelper = new ArrayList();
List<CobrancaAcaoOrdemServicoNaoAceitasHelper> colecaoHelperOSAteradas = new ArrayList();
boolean primeiraVez = false;
if (httpServletRequest.getParameter("carregando") != null) {
primeiraVez = true;
sessao.removeAttribute("colecaoHelperOSAteradas");
}
if (sessao.getAttribute("colecaoHelperOSAteradas") != null) {
colecaoHelperOSAteradas = (List<CobrancaAcaoOrdemServicoNaoAceitasHelper>) sessao.getAttribute("colecaoHelperOSAteradas");
}
//Caso a pesquisa seja feita a partir de uma ordem de servi�o
if (comandosAcaoCobrancaFiltrarActionForm.getIdOrdemServicoConsulta() != null
&& !comandosAcaoCobrancaFiltrarActionForm.getIdOrdemServicoConsulta().equals("")) {
//Caso o usu�rio selecione um ordem de servi�o para alterar
if (httpServletRequest.getParameter("carregando") != null &&
httpServletRequest.getParameter("carregando").equals("SIM")) {
OrdemServico ordemServico = fachada.pesquisarOS(new Integer(comandosAcaoCobrancaFiltrarActionForm.getIdOrdemServicoConsulta()));
// Caso n�o exista a Ordem de Servi�o
if (ordemServico == null) {
throw new ActionServletException("atencao.ordens.servico.inexistente",
null, "Ordem de Servi�o");
}
// Caso a Ordem de Servi�o n�o esteja encerrada
if (ordemServico.getSituacao() == ConstantesSistema.INDICADOR_OS_NAO_ENCERRADA) {
throw new ActionServletException("atencao.ordens.servico.nao.encerrada",
null, "Ordem de Servi�o");
}
// Caso a Ordem de Servi�o n�o esteja associada � a��o de cobran�a selecionada
if(!Util.verificarIdNaoVazio(comandosAcaoCobrancaFiltrarActionForm.getIdOrdemServicoConsulta())){
if (ordemServico.getCobrancaDocumento() == null
|| ordemServico.getCobrancaDocumento().getCobrancaAcaoAtividadeCronograma() == null
|| !ordemServico.getCobrancaDocumento().getCobrancaAcaoAtividadeCronograma()
.getCobrancaAcaoCronograma().getCobrancaAcao().getId()
.equals(new Integer(comandosAcaoCobrancaFiltrarActionForm.getIdAcaoCobranca()))) {
throw new ActionServletException("atencao.ordens.servico.acao.cobranca",
null, "Ordem de Servi�o");
}
}
// Caso a Ordem de Servi�o tenha sido encerrada por "Decurso de Prazo"
if (ordemServico.getAtendimentoMotivoEncerramento().getId()
.equals(new Integer(AtendimentoMotivoEncerramento.CANCELADO_POR_DERCURSO_DE_PRAZO))) {
throw new ActionServletException("atencao.ordens.servico.decurso.prazo",
null, "Ordem de Servi�o");
}
FiltroCobrancaAcaoOrdemServicoNaoAceitas filtroCobrancaAcaoOrdemServicoNaoAceitas = new FiltroCobrancaAcaoOrdemServicoNaoAceitas();
filtroCobrancaAcaoOrdemServicoNaoAceitas.adicionarParametro(new ParametroSimples(
FiltroCobrancaAcaoOrdemServicoNaoAceitas.ORDEM_SERVICO, ordemServico));
filtroCobrancaAcaoOrdemServicoNaoAceitas
.adicionarCaminhoParaCarregamentoEntidade(FiltroCobrancaAcaoOrdemServicoNaoAceitas.ORDEM_SERVICO);
filtroCobrancaAcaoOrdemServicoNaoAceitas
.adicionarCaminhoParaCarregamentoEntidade(FiltroCobrancaAcaoOrdemServicoNaoAceitas.MOTIVO_NAO_ACEITACAO);
Collection<CobrancaAcaoOrdemServicoNaoAceitas> colecao = fachada
.pesquisar(filtroCobrancaAcaoOrdemServicoNaoAceitas, CobrancaAcaoOrdemServicoNaoAceitas.class.getName());
if (colecao != null && colecao.size() > 0) {
CobrancaAcaoOrdemServicoNaoAceitas cobrancaAcaoOrdemServicoNaoAceitas = colecao.iterator().next();
comandosAcaoCobrancaFiltrarActionForm.setMotivoNaoAceitacao(
String.valueOf(cobrancaAcaoOrdemServicoNaoAceitas.getMotivoNaoAceitacao().getId()));
if (cobrancaAcaoOrdemServicoNaoAceitas.getObservacao() != null) {
comandosAcaoCobrancaFiltrarActionForm.setObservacao(cobrancaAcaoOrdemServicoNaoAceitas.getObservacao());
} else {
comandosAcaoCobrancaFiltrarActionForm.setObservacao("");
}
sessao.removeAttribute("indicadorNaoAceitacao");
} else {
comandosAcaoCobrancaFiltrarActionForm.setMotivoNaoAceitacao("");
comandosAcaoCobrancaFiltrarActionForm.setObservacao("");
sessao.setAttribute("indicadorNaoAceitacao", true);
}
try {
CobrancaAcao cobrancaAcao = ordemServico.getCobrancaDocumento().getCobrancaAcaoAtividadeCronograma().getCobrancaAcaoCronograma().getCobrancaAcao();
sessao.setAttribute("objetoCobrancaAcao", cobrancaAcao);
} catch (Exception e) {
e.printStackTrace();
}
try {
CobrancaGrupo cobrancaGrupo = ordemServico.getCobrancaDocumento().getCobrancaAcaoAtividadeCronograma().getCobrancaAcaoCronograma().getCobrancaGrupoCronogramaMes().getCobrancaGrupo();
sessao.setAttribute("objetoCobrancaGrupo",cobrancaGrupo);
} catch (Exception e) {
e.printStackTrace();
}
sessao.setAttribute("ordemServicoConsulta", ordemServico);
sessao.setAttribute("ordemServicoSelecionada", true);
}
// Caso o usu�rio clique no bot�o "Concluir"
if (httpServletRequest.getParameter("acao") != null &&
httpServletRequest.getParameter("acao").equals("concluir")) {
CobrancaAcao cobrancaAcao = (CobrancaAcao) sessao.getAttribute("objetoCobrancaAcao");
OrdemServico ordemServico = (OrdemServico) sessao.getAttribute("ordemServicoConsulta");
CobrancaAcaoOrdemServicoNaoAceitas cobrancaAcaoOrdemServicoNaoAceitas = new CobrancaAcaoOrdemServicoNaoAceitas();
CobrancaAcaoOrdemServicoNaoAceitasPK cobrancaAcaoOrdemServicoNaoAceitasPK = new CobrancaAcaoOrdemServicoNaoAceitasPK();
Date date = new Date();
cobrancaAcaoOrdemServicoNaoAceitas.setUltimaAlteracao(date);
cobrancaAcaoOrdemServicoNaoAceitas.setIndicadorNaoAceitacao(new Short("2"));
cobrancaAcaoOrdemServicoNaoAceitas.setIndicadorDescontoEfetuado(new Short("2"));
cobrancaAcaoOrdemServicoNaoAceitas.setOrdemServico(ordemServico);
cobrancaAcaoOrdemServicoNaoAceitas.setCobrancaAcao(cobrancaAcao);
cobrancaAcaoOrdemServicoNaoAceitasPK.setOrdemServicoId(ordemServico.getId());
// cobrancaAcaoOrdemServicoNaoAceitasPK.setCobrancaAcaoId(cobrancaAcao.getId());
cobrancaAcaoOrdemServicoNaoAceitas.setComp_id(cobrancaAcaoOrdemServicoNaoAceitasPK);
if (comandosAcaoCobrancaFiltrarActionForm.getObservacao() != null
&& !comandosAcaoCobrancaFiltrarActionForm.getObservacao().equals("")) {
cobrancaAcaoOrdemServicoNaoAceitas.setObservacao(comandosAcaoCobrancaFiltrarActionForm.getObservacao());
} else {
cobrancaAcaoOrdemServicoNaoAceitas.setObservacao(null);
}
if (Util.verificarNaoVazio(comandosAcaoCobrancaFiltrarActionForm.getMotivoNaoAceitacao())) {
MotivoNaoAceitacaoEncerramentoOS motivoNaoAceitacaoEncerramentoOS = new MotivoNaoAceitacaoEncerramentoOS();
motivoNaoAceitacaoEncerramentoOS.setId(Integer.parseInt(comandosAcaoCobrancaFiltrarActionForm.getMotivoNaoAceitacao()));
cobrancaAcaoOrdemServicoNaoAceitas.setMotivoNaoAceitacao(motivoNaoAceitacaoEncerramentoOS);
} else {
throw new ActionServletException("atencao.motivo_nao_aceitacao_encerramento_os", null, "Motivo de N�o Aceita��o");
}
FiltroCobrancaAcaoOrdemServicoNaoAceitas filtro = new FiltroCobrancaAcaoOrdemServicoNaoAceitas();
filtro.adicionarParametro(new ParametroSimples(FiltroCobrancaAcaoOrdemServicoNaoAceitas.COBRANCA_ACAO_ID, cobrancaAcao.getId()));
filtro.adicionarParametro(new ParametroSimples(FiltroCobrancaAcaoOrdemServicoNaoAceitas.ORDEM_SERVICO_ID, ordemServico.getId()));
filtro.adicionarCaminhoParaCarregamentoEntidade(FiltroCobrancaAcaoOrdemServicoNaoAceitas.COBRANCA_ACAO);
filtro.adicionarCaminhoParaCarregamentoEntidade(FiltroCobrancaAcaoOrdemServicoNaoAceitas.ORDEM_SERVICO);
Collection <CobrancaAcaoOrdemServicoNaoAceitas> colecao = fachada.pesquisar(filtro, CobrancaAcaoOrdemServicoNaoAceitas.class.getName());
// Monta a p�gina de sucesso
montarPaginaSucesso(httpServletRequest, "Atualiza��es efetuadas com sucesso.",
"Consultar Comandos de A��o de Cobran�a",
"exibirFiltrarComandosAcaoCobrancaAction.do?menu=sim");
if (colecao != null && !colecao.isEmpty()) {
if (colecao.iterator().next().getIndicadorDescontoEfetuado().equals(new Short("1"))) {
cobrancaAcaoOrdemServicoNaoAceitas.setIndicadorDescontoEfetuado(new Short("1"));
// Monta a p�gina de sucesso
montarPaginaSucesso(httpServletRequest, "Situa��o n�o pode ser alterada, desconto j� efetuado."
+ " Atualiza��es efetuadas com sucesso.",
"Consultar Comandos de A��o de Cobran�a",
"exibirFiltrarComandosAcaoCobrancaAction.do?menu=sim");
}
fachada.atualizar(cobrancaAcaoOrdemServicoNaoAceitas);
} else {
fachada.inserir(cobrancaAcaoOrdemServicoNaoAceitas);
}
retorno = actionMapping.findForward("telaSucesso");
}
} else { //Caso a pesquisa seja feita a partir de a��o de cobran�a/grupo de cobran�a
sessao.removeAttribute("ordemServicoConsulta");
sessao.removeAttribute("indicadorNaoAceitacao");
//Carregar o filtro
if (sessao.getAttribute("filtroOrdemServico") == null || primeiraVez) {
filtroOrdemServico =
fachada.construirFiltroOrdemServico(
comandosAcaoCobrancaFiltrarActionForm.getIdGrupoCobranca(),
comandosAcaoCobrancaFiltrarActionForm.getIdAcaoCobranca(),
comandosAcaoCobrancaFiltrarActionForm.getPeriodoReferenciaContaInicial(),
comandosAcaoCobrancaFiltrarActionForm.getPeriodoReferenciaContaFinal()
);
sessao.setAttribute("filtroOrdemServico", filtroOrdemServico);
}
//Consultar as Ordens de Servi�o
if (sessao.getAttribute("filtroOrdemServico") != null
&& (primeiraVez || httpServletRequest.getParameter("page.offset") != null)) {
if (!(httpServletRequest.getParameter("acao") != null
&& (httpServletRequest.getParameter("acao").equals("selecionar")
|| httpServletRequest.getParameter("acao").equals("adicionar")))) {
comandosAcaoCobrancaFiltrarActionForm.setIdOrdemServico("");
}
filtroOrdemServico = (FiltroOrdemServico) sessao.getAttribute("filtroOrdemServico");
Map resultado = controlarPaginacao(httpServletRequest, retorno,
filtroOrdemServico, OrdemServico.class.getName());
Collection colecaoOrdemServico = (Collection) resultado.get("colecaoRetorno");
retorno = (ActionForward) resultado.get("destinoActionForward");
if (colecaoOrdemServico == null || colecaoOrdemServico.isEmpty()) {
throw new ActionServletException("atencao.ordens.servico.inexistente",
null, "Ordem de Servi�o");
}
Iterator iterator = colecaoOrdemServico.iterator();
while (iterator.hasNext()) {
OrdemServico ordemServico = (OrdemServico) iterator.next();
CobrancaAcaoOrdemServicoNaoAceitasHelper cobrancaAcaoOrdemServicoNaoAceitasHelper = new CobrancaAcaoOrdemServicoNaoAceitasHelper();
CobrancaAcaoOrdemServicoNaoAceitas cobrancaAcaoOrdemServicoNaoAceitas = new CobrancaAcaoOrdemServicoNaoAceitas();
FiltroCobrancaAcaoOrdemServicoNaoAceitas filtroCobrancaAcaoOrdemServicoNaoAceitas = new FiltroCobrancaAcaoOrdemServicoNaoAceitas();
filtroCobrancaAcaoOrdemServicoNaoAceitas.adicionarParametro(new ParametroSimples(
FiltroCobrancaAcaoOrdemServicoNaoAceitas.ORDEM_SERVICO, ordemServico));
filtroCobrancaAcaoOrdemServicoNaoAceitas.adicionarParametro(new ParametroSimples(
FiltroCobrancaAcaoOrdemServicoNaoAceitas.COBRANCA_ACAO, ordemServico.getCobrancaDocumento().getCobrancaAcaoAtividadeCronograma().getCobrancaAcaoCronograma().getCobrancaAcao()));
filtroCobrancaAcaoOrdemServicoNaoAceitas.adicionarCaminhoParaCarregamentoEntidade(FiltroCobrancaAcaoOrdemServicoNaoAceitas.ORDEM_SERVICO);
filtroCobrancaAcaoOrdemServicoNaoAceitas.adicionarCaminhoParaCarregamentoEntidade(FiltroCobrancaAcaoOrdemServicoNaoAceitas.COBRANCA_ACAO);
Collection<CobrancaAcaoOrdemServicoNaoAceitas> colecaoCobrancaAcaoOrdemServicoNaoAceitas = fachada
.pesquisar(filtroCobrancaAcaoOrdemServicoNaoAceitas, CobrancaAcaoOrdemServicoNaoAceitas.class.getName());
int acaoOrdemServicoNaoAceitasHelper = posicaoOrdemServicoAlterada(ordemServico, colecaoHelperOSAteradas);
if (acaoOrdemServicoNaoAceitasHelper != 0) {
cobrancaAcaoOrdemServicoNaoAceitas = colecaoHelperOSAteradas.get(acaoOrdemServicoNaoAceitasHelper - 1).getCobrancaAcaoOrdemServicoNaoAceitas();
} else if (colecaoCobrancaAcaoOrdemServicoNaoAceitas != null && !colecaoCobrancaAcaoOrdemServicoNaoAceitas.isEmpty()) {
cobrancaAcaoOrdemServicoNaoAceitas = colecaoCobrancaAcaoOrdemServicoNaoAceitas.iterator().next();
}
cobrancaAcaoOrdemServicoNaoAceitasHelper.setCobrancaAcaoOrdemServicoNaoAceitas(cobrancaAcaoOrdemServicoNaoAceitas);
cobrancaAcaoOrdemServicoNaoAceitasHelper.setOrdemServico(ordemServico);
colecaoCobrancaAcaoOrdemServicoNaoAceitasHelper.add(cobrancaAcaoOrdemServicoNaoAceitasHelper);
}
CobrancaAcao cobrancaAcao = ((OrdemServico)colecaoOrdemServico.iterator().next()).getCobrancaDocumento().getCobrancaAcaoAtividadeCronograma().getCobrancaAcaoCronograma().getCobrancaAcao();
CobrancaGrupo cobrancaGrupo = ((OrdemServico)colecaoOrdemServico.iterator().next()).getCobrancaDocumento().getCobrancaAcaoAtividadeCronograma().getCobrancaAcaoCronograma().getCobrancaGrupoCronogramaMes().getCobrancaGrupo();
sessao.setAttribute("objetoCobrancaAcao", cobrancaAcao);
sessao.setAttribute("objetoCobrancaGrupo",cobrancaGrupo);
sessao.setAttribute("colecaoCobrancaAcaoOrdemServicoNaoAceitasHelper", colecaoCobrancaAcaoOrdemServicoNaoAceitasHelper);
} else {
colecaoCobrancaAcaoOrdemServicoNaoAceitasHelper = (List<CobrancaAcaoOrdemServicoNaoAceitasHelper>) sessao.getAttribute("colecaoCobrancaAcaoOrdemServicoNaoAceitasHelper");
}
//Caso selecione uma ordem de servi�o
if (httpServletRequest.getParameter("acao") != null
&& httpServletRequest.getParameter("acao").equals("selecionar")
&& comandosAcaoCobrancaFiltrarActionForm.getIdOrdemServico() != null) {
int posicaoComponente = new Integer(comandosAcaoCobrancaFiltrarActionForm.getIdOrdemServico());
if (colecaoCobrancaAcaoOrdemServicoNaoAceitasHelper.size() >= posicaoComponente) {
@SuppressWarnings("unused")
CobrancaAcaoOrdemServicoNaoAceitasHelper cobrancaAcaoOrdemServicoNaoAceitasHelper =
(CobrancaAcaoOrdemServicoNaoAceitasHelper) colecaoCobrancaAcaoOrdemServicoNaoAceitasHelper.get(posicaoComponente-1);
OrdemServico ordemServico = fachada.pesquisarOS(new Integer(cobrancaAcaoOrdemServicoNaoAceitasHelper.getOrdemServico().getId()));
FiltroCobrancaAcaoOrdemServicoNaoAceitas filtroCobrancaAcaoOrdemServicoNaoAceitas = new FiltroCobrancaAcaoOrdemServicoNaoAceitas();
filtroCobrancaAcaoOrdemServicoNaoAceitas.adicionarParametro(new ParametroSimples(FiltroCobrancaAcaoOrdemServicoNaoAceitas.ORDEM_SERVICO, ordemServico));
filtroCobrancaAcaoOrdemServicoNaoAceitas.adicionarCaminhoParaCarregamentoEntidade(FiltroCobrancaAcaoOrdemServicoNaoAceitas.ORDEM_SERVICO);
filtroCobrancaAcaoOrdemServicoNaoAceitas.adicionarCaminhoParaCarregamentoEntidade(FiltroCobrancaAcaoOrdemServicoNaoAceitas.MOTIVO_NAO_ACEITACAO);
Collection<CobrancaAcaoOrdemServicoNaoAceitas> colecao = fachada.pesquisar(filtroCobrancaAcaoOrdemServicoNaoAceitas, CobrancaAcaoOrdemServicoNaoAceitas.class.getName());
if (colecao != null && colecao.size() > 0) {
CobrancaAcaoOrdemServicoNaoAceitas cobrancaAcaoOrdemServicoNaoAceitas = colecao.iterator().next();
comandosAcaoCobrancaFiltrarActionForm.setMotivoNaoAceitacao(String.valueOf(cobrancaAcaoOrdemServicoNaoAceitas.getMotivoNaoAceitacao().getId()));
if (cobrancaAcaoOrdemServicoNaoAceitas.getObservacao() != null) {
comandosAcaoCobrancaFiltrarActionForm.setObservacao(cobrancaAcaoOrdemServicoNaoAceitas.getObservacao());
} else {
comandosAcaoCobrancaFiltrarActionForm.setObservacao("");
}
} else {
comandosAcaoCobrancaFiltrarActionForm.setMotivoNaoAceitacao("");
comandosAcaoCobrancaFiltrarActionForm.setObservacao("");
}
sessao.setAttribute("ordemServicoSelecionada", true);
}
} else {
sessao.removeAttribute("ordemServicoSelecionada");
}
// Caso o usu�rio clique no bot�o "Adicionar"
if (httpServletRequest.getParameter("acao") != null
&& httpServletRequest.getParameter("acao").equals("adicionar")) {
sessao.setAttribute("ordemServicoSelecionada", true);
int posicaoComponente = new Integer(comandosAcaoCobrancaFiltrarActionForm.getIdOrdemServico());
if (colecaoCobrancaAcaoOrdemServicoNaoAceitasHelper.size() >= posicaoComponente) {
CobrancaAcaoOrdemServicoNaoAceitasHelper cobrancaAcaoOrdemServicoNaoAceitasHelper =
(CobrancaAcaoOrdemServicoNaoAceitasHelper) colecaoCobrancaAcaoOrdemServicoNaoAceitasHelper.get(posicaoComponente-1);
MotivoNaoAceitacaoEncerramentoOS motivoNaoAceitacaoEncerramentoOS = new MotivoNaoAceitacaoEncerramentoOS();
motivoNaoAceitacaoEncerramentoOS.setId(Integer.parseInt(comandosAcaoCobrancaFiltrarActionForm.getMotivoNaoAceitacao()));
cobrancaAcaoOrdemServicoNaoAceitasHelper.getCobrancaAcaoOrdemServicoNaoAceitas().setMotivoNaoAceitacao(motivoNaoAceitacaoEncerramentoOS);
cobrancaAcaoOrdemServicoNaoAceitasHelper.getCobrancaAcaoOrdemServicoNaoAceitas().setObservacao(comandosAcaoCobrancaFiltrarActionForm.getObservacao());
colecaoCobrancaAcaoOrdemServicoNaoAceitasHelper.remove(posicaoComponente-1);
colecaoCobrancaAcaoOrdemServicoNaoAceitasHelper.add(cobrancaAcaoOrdemServicoNaoAceitasHelper);
// O sistema classifica a lista de CobrancaAcaoOrdemServicoNaoAceitasHelper por tipo de servi�o
Collections.sort((List) colecaoCobrancaAcaoOrdemServicoNaoAceitasHelper,
new Comparator() {
public int compare(Object a, Object b) {
Integer codigo1 = ((CobrancaAcaoOrdemServicoNaoAceitasHelper) a)
.getOrdemServico().getId();
Integer codigo2 = ((CobrancaAcaoOrdemServicoNaoAceitasHelper) b)
.getOrdemServico().getId();
if (codigo1 == null || codigo1.equals("")) {
return -1;
} else {
return codigo1.compareTo(codigo2);
}
}
});
sessao.setAttribute("colecaoCobrancaAcaoOrdemServicoNaoAceitasHelper", colecaoCobrancaAcaoOrdemServicoNaoAceitasHelper);
int posicaoOSAlterada = posicaoOrdemServicoAlterada(cobrancaAcaoOrdemServicoNaoAceitasHelper.getOrdemServico(), colecaoHelperOSAteradas);
if (posicaoOSAlterada != 0) {
colecaoHelperOSAteradas.remove(posicaoOSAlterada - 1);
}
colecaoHelperOSAteradas.add(cobrancaAcaoOrdemServicoNaoAceitasHelper);
// O sistema classifica a lista de CobrancaAcaoOrdemServicoNaoAceitasHelper por tipo de servi�o
Collections.sort((List) colecaoHelperOSAteradas,
new Comparator() {
public int compare(Object a, Object b) {
Integer codigo1 = ((CobrancaAcaoOrdemServicoNaoAceitasHelper) a)
.getOrdemServico().getId();
Integer codigo2 = ((CobrancaAcaoOrdemServicoNaoAceitasHelper) b)
.getOrdemServico().getId();
if (codigo1 == null || codigo1.equals("")) {
return -1;
} else {
return codigo1.compareTo(codigo2);
}
}
});
sessao.setAttribute("colecaoHelperOSAteradas", colecaoHelperOSAteradas);
}
}
// Caso o usu�rio clique no bot�o "Concluir"
if (httpServletRequest.getParameter("acao") != null && httpServletRequest.getParameter("acao").equals("concluir")) {
Iterator iterator = colecaoHelperOSAteradas.iterator();
CobrancaAcao cobrancaAcao = (CobrancaAcao) sessao.getAttribute("objetoCobrancaAcao");
String ids = "";
while (iterator.hasNext()) {
CobrancaAcaoOrdemServicoNaoAceitasHelper cobrancaAcaoOrdemServicoNaoAceitasHelper = (CobrancaAcaoOrdemServicoNaoAceitasHelper) iterator.next();
OrdemServico ordemServico = cobrancaAcaoOrdemServicoNaoAceitasHelper.getOrdemServico();
CobrancaAcaoOrdemServicoNaoAceitas cobrancaAcaoOrdemServicoNaoAceitas = cobrancaAcaoOrdemServicoNaoAceitasHelper.getCobrancaAcaoOrdemServicoNaoAceitas();
CobrancaAcaoOrdemServicoNaoAceitasPK cobrancaAcaoOrdemServicoNaoAceitasPK = new CobrancaAcaoOrdemServicoNaoAceitasPK();
Date date = new Date();
cobrancaAcaoOrdemServicoNaoAceitas.setUltimaAlteracao(date);
cobrancaAcaoOrdemServicoNaoAceitas.setIndicadorNaoAceitacao(new Short("2"));
cobrancaAcaoOrdemServicoNaoAceitas.setIndicadorDescontoEfetuado(new Short("2"));
cobrancaAcaoOrdemServicoNaoAceitas.setCobrancaAcao(cobrancaAcao);
cobrancaAcaoOrdemServicoNaoAceitas.setOrdemServico(ordemServico);
cobrancaAcaoOrdemServicoNaoAceitasPK.setOrdemServicoId(ordemServico.getId());
cobrancaAcaoOrdemServicoNaoAceitas.setComp_id(cobrancaAcaoOrdemServicoNaoAceitasPK);
if (!Util.verificarNaoVazio(cobrancaAcaoOrdemServicoNaoAceitas.getObservacao())) {
cobrancaAcaoOrdemServicoNaoAceitas.setObservacao(null);
}
FiltroCobrancaAcaoOrdemServicoNaoAceitas filtro = new FiltroCobrancaAcaoOrdemServicoNaoAceitas();
// filtro.adicionarParametro(new ParametroSimples(FiltroCobrancaAcaoOrdemServicoNaoAceitas.COBRANCA_ACAO_ID, cobrancaAcao.getId()));
filtro.adicionarParametro(new ParametroSimples(FiltroCobrancaAcaoOrdemServicoNaoAceitas.ORDEM_SERVICO_ID, ordemServico.getId()));
// filtro.adicionarCaminhoParaCarregamentoEntidade(FiltroCobrancaAcaoOrdemServicoNaoAceitas.COBRANCA_ACAO);
filtro.adicionarCaminhoParaCarregamentoEntidade(FiltroCobrancaAcaoOrdemServicoNaoAceitas.ORDEM_SERVICO);
Collection <CobrancaAcaoOrdemServicoNaoAceitas> colecao = fachada.pesquisar(filtro, CobrancaAcaoOrdemServicoNaoAceitas.class.getName());
if (colecao != null && !colecao.isEmpty()) {
if (colecao.iterator().next().getIndicadorDescontoEfetuado().equals(new Short("1"))) {
cobrancaAcaoOrdemServicoNaoAceitas.setIndicadorDescontoEfetuado(new Short("1"));
ids += ordemServico.getId() + ", ";
}
fachada.atualizar(cobrancaAcaoOrdemServicoNaoAceitas);
} else {
fachada.inserir(cobrancaAcaoOrdemServicoNaoAceitas);
}
}
//Monta a p�gina de sucesso
if (!ids.equals("")) {
ids = Util.removerUltimosCaracteres(ids, 2);
montarPaginaSucesso(httpServletRequest, "Situa��o da(s) ordem(ns) de servi�o " +
ids + " n�o pode ser alterada, desconto j� efetuado."
+ " Atualiza��es efetuadas com sucesso.",
"Consultar Comandos de A��o de Cobran�a",
"exibirFiltrarComandosAcaoCobrancaAction.do?menu=sim");
} else {
montarPaginaSucesso(httpServletRequest, "Atualiza��es efetuadas com sucesso.",
"Consultar Comandos de A��o de Cobran�a",
"exibirFiltrarComandosAcaoCobrancaAction.do?menu=sim");
}
retorno = actionMapping.findForward("telaSucesso");
}
}
return retorno;
}
private int posicaoOrdemServicoAlterada(OrdemServico ordemServico, List<CobrancaAcaoOrdemServicoNaoAceitasHelper> colecaoHelper){
Iterator iterator = colecaoHelper.iterator();
int posicao = 1;
while (iterator.hasNext()) {
CobrancaAcaoOrdemServicoNaoAceitasHelper cobrancaAcaoOrdemServicoNaoAceitasHelper = (CobrancaAcaoOrdemServicoNaoAceitasHelper) iterator.next();
if (cobrancaAcaoOrdemServicoNaoAceitasHelper.getOrdemServico().getId().equals(ordemServico.getId()))
return posicao;
posicao++;
}
return 0;
}
}