package gcom.gui.micromedicao;
import gcom.fachada.Fachada;
import gcom.gui.ActionServletException;
import gcom.gui.GcomAction;
import gcom.interceptor.RegistradorOperacao;
import gcom.micromedicao.ContratoEmpresaAditivo;
import gcom.micromedicao.ContratoEmpresaServico;
import gcom.micromedicao.InformarItensContratoServicoHelper;
import gcom.micromedicao.ItemServicoContrato;
import gcom.seguranca.acesso.Operacao;
import gcom.seguranca.acesso.usuario.Usuario;
import gcom.seguranca.acesso.usuario.UsuarioAcao;
import gcom.seguranca.acesso.usuario.UsuarioAcaoUsuarioHelper;
import gcom.util.Util;
import java.math.BigDecimal;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
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;
/**
* [UC1055] Informar Valor de Item de Servico Por Contrato
*
* @author Hugo Leonardo, Mariana Victor
* @date 26/07/2010, 23/11/2010
*/
public class InformarItensContratoServicoAction extends GcomAction {
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
ActionForward retorno = actionMapping.findForward("telaSucesso");
Fachada fachada = Fachada.getInstancia();
HttpSession sessao = httpServletRequest.getSession(false);
ExibirInformarItensContratoServicoActionForm form =
(ExibirInformarItensContratoServicoActionForm) actionForm;
Usuario usuarioLogado = (Usuario) sessao.getAttribute("usuarioLogado");
List colecaoHelper = (List) sessao.getAttribute("colecaoHelper");
if(form.getIdNumeroContrato() != null && !form.getIdNumeroContrato().equals("")
&& ((form.getDtFimContrato() != null && !form.getDtFimContrato().equals(""))
|| (form.getValorGlobalContrato() != null && !form.getValorGlobalContrato().equals(""))
|| (form.getPercentualTaxaSucesso() != null && !form.getPercentualTaxaSucesso().equals("")))){
Integer posicaoComponente = new Integer(form.getIdNumeroContrato());
InformarItensContratoServicoHelper helper = null;
helper = (InformarItensContratoServicoHelper) colecaoHelper.get(posicaoComponente-1);
ContratoEmpresaServico contratoEmpresaServico = helper.getContratoEmpresaServico();
if (form.getDtFimContrato() != null && !form.getDtFimContrato().equals("")) {
contratoEmpresaServico.setDataFimContrato(Util.converteStringParaDate(form.getDtFimContrato()));
}
if (form.getValorGlobalContrato() != null && !form.getValorGlobalContrato().equals("")) {
BigDecimal igualZero = new BigDecimal(0);
BigDecimal valorGlobalContratoAtual = null;
String valorGlobalContrato = form.getValorGlobalContrato()
.toString().replace(".", "");
valorGlobalContrato = valorGlobalContrato.replace(",", ".");
valorGlobalContratoAtual = new BigDecimal(valorGlobalContrato);
if (valorGlobalContratoAtual.compareTo(igualZero) <= -1){
throw new ActionServletException("atencao.invalido_zero", null ,"O Valor Global do Contrato" );
}
contratoEmpresaServico.setValorGlobalContrato(valorGlobalContratoAtual);
}
if (form.getPercentualTaxaSucesso() != null
&& !form.getPercentualTaxaSucesso()
.equals("")) {
BigDecimal percentualTaxaSucessoAtual = new BigDecimal("0.00");
String percentualTaxaSucesso = form.getPercentualTaxaSucesso()
.toString().replace(".", "");
percentualTaxaSucesso = percentualTaxaSucesso.replace(",", "");
percentualTaxaSucessoAtual = Util
.formatarMoedaRealparaBigDecimalComUltimos2CamposDecimais(percentualTaxaSucesso);
contratoEmpresaServico
.setPercentualTaxaSucesso(percentualTaxaSucessoAtual);
} else {
contratoEmpresaServico
.setPercentualTaxaSucesso(null);
}
if (form.getObservacao() != null
&& !form.getObservacao()
.equals("")) {
contratoEmpresaServico
.setObservacao(form.getObservacao());
}
List listItemServico = helper.getItemServicoContrato();
colecaoHelper.remove(posicaoComponente-1);
helper.setContratoEmpresaServico(contratoEmpresaServico);
helper.setItemServicoContrato(listItemServico);
colecaoHelper.add(helper);
}
List colecaoItemServicoContrato = null;
List colecaoAditivo = null;
InformarItensContratoServicoHelper helper = null;
ContratoEmpresaServico contratoEmpresaServico = null;
ItemServicoContrato itemServicoContrato = null;
ContratoEmpresaAditivo contratoEmpresaAditivo = null;
Integer idContratoEmpresaServico = null;
String ids = "";
Iterator iterator = null;
iterator = colecaoHelper.iterator();
while (iterator.hasNext()) {
helper = (InformarItensContratoServicoHelper) iterator.next();
contratoEmpresaServico = helper.getContratoEmpresaServico();
contratoEmpresaServico.setUltimaAlteracao(new Date());
// Caso seja um novo Contrato.
if(contratoEmpresaServico.getId() == null){
// ------------ REGISTRAR TRANSA��O ----------------
RegistradorOperacao registradorOperacaoContratoEmpresaServico = new RegistradorOperacao(
Operacao.OPERACAO_INFORMAR_ITEM_SERVICO_CONTRATO, contratoEmpresaServico.getId(),
contratoEmpresaServico.getId(), new UsuarioAcaoUsuarioHelper(usuarioLogado,
UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO));
// ------------ REGISTRAR TRANSA��O ----------------
registradorOperacaoContratoEmpresaServico.registrarOperacao(contratoEmpresaServico);
idContratoEmpresaServico = (Integer) fachada.inserir(contratoEmpresaServico);
ids += contratoEmpresaServico.getDescricaoContrato() + ", ";
contratoEmpresaServico.setId(idContratoEmpresaServico);
colecaoItemServicoContrato = helper.getItemServicoContrato();
if(colecaoItemServicoContrato != null && (colecaoItemServicoContrato.size() > 0)){
Iterator iteratorItens = colecaoItemServicoContrato.iterator();
while (iteratorItens.hasNext()) {
itemServicoContrato = (ItemServicoContrato) iteratorItens.next();
itemServicoContrato.setId(null);
itemServicoContrato.setContratoEmpresaServico(contratoEmpresaServico);
itemServicoContrato.setUltimaAlteracao( new Date());
// ------------ REGISTRAR TRANSA��O ----------------
RegistradorOperacao registradorOperacaoItemServicoContrato = new RegistradorOperacao(
Operacao.OPERACAO_INFORMAR_ITEM_SERVICO_CONTRATO, itemServicoContrato.getId(),
itemServicoContrato.getId(), new UsuarioAcaoUsuarioHelper(usuarioLogado,
UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO));
// ------------ REGISTRAR TRANSA��O ----------------
registradorOperacaoItemServicoContrato.registrarOperacao(itemServicoContrato);
fachada.inserir(itemServicoContrato);
}
}
colecaoAditivo = helper.getContratoEmpresaAditivo();
if (colecaoAditivo != null && (colecaoAditivo.size() > 0)) {
Iterator iteratorAditivos = colecaoAditivo.iterator();
while (iteratorAditivos.hasNext()) {
contratoEmpresaAditivo = (ContratoEmpresaAditivo) iteratorAditivos.next();
contratoEmpresaAditivo.setId(null);
contratoEmpresaAditivo.setContratoEmpresaServico(contratoEmpresaServico);
contratoEmpresaAditivo.setUltimaAlteracao( new Date());
fachada.inserir(contratoEmpresaAditivo);
}
}
// Caso o Contrato j� exista.
}else{
// ------------ REGISTRAR TRANSA��O ----------------
RegistradorOperacao registradorOperacaoContratoEmpresaServico = new RegistradorOperacao(
Operacao.OPERACAO_INFORMAR_ITEM_SERVICO_CONTRATO, contratoEmpresaServico.getId(),
contratoEmpresaServico.getId(), new UsuarioAcaoUsuarioHelper(usuarioLogado,
UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO));
// ------------ REGISTRAR TRANSA��O ----------------
registradorOperacaoContratoEmpresaServico.registrarOperacao(contratoEmpresaServico);
fachada.atualizar( contratoEmpresaServico);
// Remover todos os Item Servi�o Contrato do Contrato.
idContratoEmpresaServico = contratoEmpresaServico.getId();
ids += contratoEmpresaServico.getDescricaoContrato() + ", ";
fachada.removerItemServicoDoContrato(idContratoEmpresaServico, usuarioLogado);
colecaoItemServicoContrato = helper.getItemServicoContrato();
if(colecaoItemServicoContrato != null && (colecaoItemServicoContrato.size() > 0)){
Iterator iteratorItens = colecaoItemServicoContrato.iterator();
while (iteratorItens.hasNext()) {
itemServicoContrato = (ItemServicoContrato) iteratorItens.next();
itemServicoContrato.setContratoEmpresaServico(contratoEmpresaServico);
itemServicoContrato.setUltimaAlteracao( new Date());
// ------------ REGISTRAR TRANSA��O ----------------
RegistradorOperacao registradorOperacaoItemServicoContrato = new RegistradorOperacao(
Operacao.OPERACAO_INFORMAR_ITEM_SERVICO_CONTRATO,
itemServicoContrato.getContratoEmpresaServico().getId(),
itemServicoContrato.getContratoEmpresaServico().getId(),
new UsuarioAcaoUsuarioHelper(usuarioLogado,
UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO));
// ------------ REGISTRAR TRANSA��O ----------------
registradorOperacaoItemServicoContrato.registrarOperacao(itemServicoContrato);
fachada.inserir(itemServicoContrato);
}
}
fachada.removerAditivosDoContrato(idContratoEmpresaServico);
colecaoAditivo = helper.getContratoEmpresaAditivo();
if(colecaoAditivo != null && (colecaoAditivo.size() > 0)){
Iterator iteratorItens = colecaoAditivo.iterator();
while (iteratorItens.hasNext()) {
contratoEmpresaAditivo = (ContratoEmpresaAditivo) iteratorItens.next();
contratoEmpresaAditivo.setContratoEmpresaServico(contratoEmpresaServico);
contratoEmpresaAditivo.setUltimaAlteracao( new Date());
fachada.inserir(contratoEmpresaAditivo);
}
}
}
}
ids = Util.removerUltimosCaracteres(ids, 2);
// Monta a p�gina de sucesso
montarPaginaSucesso(httpServletRequest, "Contrato(s) Empresa Servi�o: "
+ ids
+ " atualizado(s) com sucesso.",
"Realizar outra Manuten��o de Contrato Empresa Servi�o",
"exibirInformarItensContratoServicoAction.do?menu=sim");
sessao.removeAttribute("colecaoItemServicoContratoSelecionados");
sessao.removeAttribute("colecaoAditivo");
sessao.removeAttribute("colecaoEmpresa");
sessao.removeAttribute("colecaoItemServico");
sessao.removeAttribute("colecaoHelper");
sessao.removeAttribute("contratoSelecionado");
sessao.removeAttribute("dataFimContrato");
sessao.removeAttribute("colecaoEmpresa");
return retorno;
}
}