package gcom.gui.atendimentopublico.ordemservico;
import gcom.atendimentopublico.ordemservico.OrdemServico;
import gcom.atendimentopublico.ordemservico.ServicoTipo;
import gcom.atendimentopublico.registroatendimento.RegistroAtendimento;
import gcom.fachada.Fachada;
import gcom.gui.ActionServletException;
import gcom.gui.GcomAction;
import gcom.seguranca.acesso.usuario.Usuario;
import gcom.util.ConstantesSistema;
import gcom.util.Util;
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 lms
* @date 22/08/2006
*/
public class GerarOrdemServicoAction extends GcomAction {
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
ActionForward retorno = actionMapping.findForward("telaSucesso");
GerarOrdemServicoActionForm form = (GerarOrdemServicoActionForm) actionForm;
Fachada fachada = Fachada.getInstancia();
HttpSession sessao = httpServletRequest.getSession(false);
Usuario usuario = (Usuario) sessao.getAttribute("usuarioLogado");
OrdemServico ordemServico = (OrdemServico) sessao
.getAttribute("ordemServico");
// Inicio Alterado por S�vio Luiz
if (form.getValorServicoOriginal() == null
|| form.getValorServicoOriginal().equals("")) {
Integer idRA = Integer.valueOf(form.getIdRegistroAtendimento());
RegistroAtendimento ra = fachada.validarRegistroAtendimento(idRA);
// Servi�o Tipo
ServicoTipo servicoTipo = null;
Integer idServicoTipo = Util.converterStringParaInteger(form
.getIdServicoTipo());
String descricaoServicoTipo = null;
String valorServicoOriginal = null;
Integer idServicoTipoPrioridadeOriginal = null;
String descricaoServicoTipoPrioridadeOriginal = null;
if (Util.validarNumeroMaiorQueZERO(idServicoTipo)) {
servicoTipo = fachada.pesquisarSevicoTipo(idServicoTipo);
fachada.validarServicoTipo(ra.getId(), idServicoTipo);
if (servicoTipo != null) {
descricaoServicoTipo = servicoTipo.getDescricao();
if (servicoTipo.getValor() != null) {
String valorFormatado = servicoTipo.getValor()
.toString().replace('.', ',');
valorServicoOriginal = valorFormatado;
}
if (servicoTipo.getServicoTipoPrioridade() != null) {
idServicoTipoPrioridadeOriginal = servicoTipo
.getServicoTipoPrioridade().getId();
descricaoServicoTipoPrioridadeOriginal = servicoTipo
.getServicoTipoPrioridade().getDescricao();
}
httpServletRequest.setAttribute("idServicoTipoEncontrada",
"true");
} else {
throw new ActionServletException(
"atencao.pesquisa_inexistente", null,
"Tipo de Servi�o");
}
form.getOrdemServico().setServicoTipo(servicoTipo);
}
form.setDescricaoServicoTipo(descricaoServicoTipo);
form.setValorServicoOriginal(valorServicoOriginal);
form.setIdPrioridadeServicoOriginal(idServicoTipoPrioridadeOriginal
+ "");
form
.setDescricaoPrioridadeServicoOriginal(descricaoServicoTipoPrioridadeOriginal);
}
// Fim Alterado por S�vio Luiz
if (ordemServico != null) {
ordemServico = form.setFormValues(form.getOrdemServico());
} else {
ordemServico = form.setFormValues(form.getOrdemServico());
}
if(ordemServico.getServicoTipo()!=null
&& ordemServico.getRegistroAtendimento() != null){
fachada.validarServicoTipo(ordemServico.getRegistroAtendimento().getId(),ordemServico.getServicoTipo().getId());
}
String veioAcompanhamento = (String) sessao
.getAttribute("veioAcompanhamento");
String veioAcompanhamentoRoteiro = (String) sessao
.getAttribute("veioAcompanhamentoRoteiro");
if (veioAcompanhamentoRoteiro != null && !veioAcompanhamentoRoteiro.equals("")){
if (ordemServico.getServicoTipo() != null &&
ordemServico.getServicoTipo().getIndicadorProgramacaoAutomatica() != ConstantesSistema.SIM.shortValue()){
throw new ActionServletException("atencao.servico_tipo.nao_compativel");
}
}
// gera a ordem de servi�o
Integer idOrdemServico = fachada.gerarOrdemServico(ordemServico,
usuario, null);
sessao.removeAttribute("ordemServico");
if (veioAcompanhamentoRoteiro != null && !veioAcompanhamentoRoteiro.equals("")){
retorno = actionMapping
.findForward("incluirOrdemServicoAcompanhamentoArqRoteiro");
httpServletRequest.setAttribute("objetoConsulta", "");
httpServletRequest.setAttribute("idOrdemServico", "" + idOrdemServico);
httpServletRequest.setAttribute("descOrdemServico", "" + ordemServico.getServicoTipo().getDescricao());
httpServletRequest.setAttribute("numeroRa", ordemServico.getRegistroAtendimento().getId());
} else if (veioAcompanhamento != null) {
retorno = actionMapping
.findForward("incluirOrdemServicoAcompanharRoteiroProgramacao");
httpServletRequest.setAttribute("objetoConsulta", "2");
httpServletRequest.setAttribute("idOrdemServico", ""
+ idOrdemServico);
}else{
String caminhoRetornoGerarOs = (String) sessao
.getAttribute("caminhoRetornoGerarOs");
if (caminhoRetornoGerarOs != null
&& caminhoRetornoGerarOs
.equals("exibirConsultarRegistroAtendimentoAction.do")) {
String idRa = ordemServico.getRegistroAtendimento().getId()
.toString();
caminhoRetornoGerarOs = caminhoRetornoGerarOs + "?numeroRA="
+ idRa;
}
String msg = "Gera��o da Ordem de Servi�o " + ordemServico.getId()
+ " para o registro de Atendimento n�mero "
+ ordemServico.getRegistroAtendimento().getId()
+ " efetuada com sucesso.";
if (caminhoRetornoGerarOs == null) {
montarPaginaSucessoUmRelatorio(httpServletRequest, msg,"",
"","exibirGerarOrdemServicoAction.do","Voltar",
"Imprimir OS",
"gerarRelatorioOrdemServicoAction.do?idsOS=" + idOrdemServico);
} else {
montarPaginaSucessoUmRelatorio(httpServletRequest, msg,"",
"",caminhoRetornoGerarOs,"Voltar",
"Imprimir OS",
"gerarRelatorioOrdemServicoAction.do?idsOS=" + idOrdemServico);
}
}
return retorno;
}
}