package br.com.centralit.citcorpore.ajaxForms;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang.StringEscapeUtils;
import org.mozilla.javascript.Context;
import org.mozilla.javascript.Scriptable;
import br.com.centralit.citajax.html.DocumentHTML;
import br.com.centralit.citajax.html.HTMLForm;
import br.com.centralit.citcorpore.bean.AcordoNivelServicoDTO;
import br.com.centralit.citcorpore.bean.AtividadesOSDTO;
import br.com.centralit.citcorpore.bean.AtividadesServicoContratoDTO;
import br.com.centralit.citcorpore.bean.FormulaDTO;
import br.com.centralit.citcorpore.bean.GlosaOSDTO;
import br.com.centralit.citcorpore.bean.GlosaServicoContratoDTO;
import br.com.centralit.citcorpore.bean.OSDTO;
import br.com.centralit.citcorpore.bean.ResultadosEsperadosDTO;
import br.com.centralit.citcorpore.bean.ServicoDTO;
import br.com.centralit.citcorpore.bean.SolicitacaoServicoDTO;
import br.com.centralit.citcorpore.bean.UsuarioDTO;
import br.com.centralit.citcorpore.bean.VinculaOsIncidenteDTO;
import br.com.centralit.citcorpore.metainfo.script.ScriptRhinoJSExecute;
import br.com.centralit.citcorpore.metainfo.util.RuntimeScript;
import br.com.centralit.citcorpore.negocio.AcordoNivelServicoContratoService;
import br.com.centralit.citcorpore.negocio.AcordoNivelServicoService;
import br.com.centralit.citcorpore.negocio.AtividadesOSService;
import br.com.centralit.citcorpore.negocio.AtividadesServicoContratoService;
import br.com.centralit.citcorpore.negocio.FormulaService;
import br.com.centralit.citcorpore.negocio.GlosaOSService;
import br.com.centralit.citcorpore.negocio.GlosaServicoContratoService;
import br.com.centralit.citcorpore.negocio.OSService;
import br.com.centralit.citcorpore.negocio.ServicoContratoService;
import br.com.centralit.citcorpore.negocio.ServicoService;
import br.com.centralit.citcorpore.negocio.SolicitacaoServicoService;
import br.com.centralit.citcorpore.negocio.VinculaOsIncidenteService;
import br.com.centralit.citcorpore.util.Enumerados;
import br.com.centralit.citcorpore.util.FormulasUtil;
import br.com.centralit.citcorpore.util.ParametroUtil;
import br.com.citframework.excecao.ServiceException;
import br.com.citframework.service.ServiceLocator;
import br.com.citframework.util.Constantes;
import br.com.citframework.util.UtilFormatacao;
import br.com.citframework.util.UtilI18N;
import br.com.citframework.util.UtilStrings;
import br.com.citframework.util.WebUtil;
@SuppressWarnings({"rawtypes","unused"})
public class OsSetSituacao extends Os {
@Override
public void restore(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception {
OSDTO os = (OSDTO) document.getBean();
OSService osService = (OSService) ServiceLocator.getInstance().getService(OSService.class, null);
AtividadesOSService atividadesOSService = (AtividadesOSService) ServiceLocator.getInstance().getService(AtividadesOSService.class, null);
GlosaOSService glosaOSService = (GlosaOSService) ServiceLocator.getInstance().getService(GlosaOSService.class, null);
os = (OSDTO)osService.restore(os);
HTMLForm form = document.getForm("form");
form.clear();
form.setValues(os);
document.executeScript("GRID_ITENS.deleteAllRows()");
document.executeScript("GRID_GLOSAS.deleteAllRows()");
Collection col = null;
Collection colGlosas = null;
Double custoTotalPrevisto = 0.0;
Double custoTotalExecutado = 0.0;
if (os != null){
int i = 0;
col = atividadesOSService.findByIdOS(os.getIdOS());
if (col != null){
for(Iterator it = col.iterator(); it.hasNext();){
i++;
AtividadesOSDTO atividadesOSDTO = (AtividadesOSDTO)it.next();
document.executeScript("GRID_ITENS.addRow()");
document.executeScript("seqSelecionada = NumberUtil.zerosAEsquerda(GRID_ITENS.getMaxIndex(),5)");
String strQtde = UtilFormatacao.formatDouble(atividadesOSDTO.getCustoAtividade(), 2);
String strGlosa = "";
String strFormula = atividadesOSDTO.getFormula();
String exibirBotao = "";
String strIdServicoContratoContabil = "";
StringBuilder strBtnServicoContabil = new StringBuilder();
StringBuilder strPopUpAssociacao = new StringBuilder();
if (atividadesOSDTO.getGlosaAtividade() != null){
strGlosa = UtilFormatacao.formatDouble(atividadesOSDTO.getGlosaAtividade(), 2);
}
String strQtdeExec = "";
if (atividadesOSDTO.getQtdeExecutada() != null){
strQtdeExec = UtilFormatacao.formatDouble(atividadesOSDTO.getQtdeExecutada(), 2);
}
String strDet = atividadesOSDTO.getDescricaoAtividade();
String strObs = atividadesOSDTO.getObsAtividade();
if (strDet != null){
strDet = strDet.replaceAll("'", "");
}else{
strDet = "";
}
if (strObs != null){
strObs = strObs.replaceAll("'", "");
}else{
strObs = "";
}
if (atividadesOSDTO.getCustoAtividade() != null) {
custoTotalPrevisto = custoTotalPrevisto + atividadesOSDTO.getCustoAtividade().doubleValue();
os.setTotalUstPrevista(custoTotalPrevisto);
}
if(os.getSituacaoOS().equals(OSDTO.EM_EXECUCAO) && strQtdeExec.equals("")){
strQtdeExec = strQtde;
}
if(atividadesOSDTO.getContabilizar() != null && atividadesOSDTO.getContabilizar().equalsIgnoreCase("S")){
ServicoContratoService servicoContratoService = (ServicoContratoService) ServiceLocator.getInstance().getService(ServicoContratoService.class, null);
Integer idServicoContratoContabil = atividadesOSDTO.getIdServicoContratoContabil();
if(idServicoContratoContabil != null){
strIdServicoContratoContabil = idServicoContratoContabil.toString();
}
if(idServicoContratoContabil != null){
document.getElementById("idServicoContratoContabil").setValue(strIdServicoContratoContabil);
ServicoService servicoService = (ServicoService) ServiceLocator.getInstance().getService(ServicoService.class, null);
ServicoDTO servicoDTO = new ServicoDTO();
servicoDTO.setIdServico(idServicoContratoContabil);
servicoDTO = (ServicoDTO) servicoService.restore(servicoDTO);
if(servicoDTO != null){
strBtnServicoContabil.append("<input type='hidden' name='servicoContrato"+i+"'/>")
.append("<div id='divServicoContrato"+i+"' style='width: 600px; height: 37px;'>")
.append("<button type='button' name='btnAddIncidentes' style='margin-top: 3px;' class='light img_icon has_text clsAddIncidente' onclick='mostrarIncidentesParaAssociar("+idServicoContratoContabil+")'>")
.append("<img src='"+ Constantes.getValue("SERVER_ADDRESS") + request.getContextPath() +"/template_new/images/icons/small/grey/document.png'>")
.append("<span>"+ UtilI18N.internacionaliza(request, "citcorpore.comum.associarIncidente") +"</span>")
.append("</button>")
.append("<div id='nomeServicoContratoContabil' style='font-weight: bold; padding-top: 2px;'>"+UtilStrings.nullToVazio(servicoDTO.getNomeServico())+"</div>")
.append("</div>");
exibirBotao = "true";
}
}
}
document.executeScript("setaRestoreItem('" + atividadesOSDTO.getComplexidade().trim() + "'," +
"'" + br.com.citframework.util.WebUtil.codificaEnter(strDet) + "'," +
"'" + br.com.citframework.util.WebUtil.codificaEnter(strObs) + "'," +
"'" + UtilStrings.nullToVazio(strFormula) + "'," +
"'" + UtilStrings.nullToVazio(strQtde) + "'," +
"'" + UtilStrings.nullToVazio(strGlosa) + "'," +
"'" + UtilStrings.nullToVazio(strQtdeExec) + "'," +
"'" + atividadesOSDTO.getIdAtividadesOS() + "'," +
"'" + UtilStrings.nullToVazio(exibirBotao) + "'," +
"'" + UtilStrings.nullToVazio(strIdServicoContratoContabil) + "'," +
"'" + StringEscapeUtils.escapeJavaScript(UtilStrings.nullToVazio(strBtnServicoContabil.toString())) + "'" +
")");
}
document.executeScript("preencheNumeracaoItens()");
document.executeScript("DEFINEALLPAGES_generateConfiguracaoCampos()");
}else{
document.alert(UtilI18N.internacionaliza(request, "os.nenhumaAtividadeVinculada"));
}
document.getElementById("custoTotalPrevisto").setInnerHTML("<b>" + UtilFormatacao.formatDouble(custoTotalPrevisto, 2) + "</b>");
document.getElementById("executadoOS").setValue(UtilFormatacao.formatDouble(custoTotalExecutado, 2));
//Carrega as glosas
i = 0;
colGlosas = glosaOSService.findByIdOs(os.getIdOS());
Double custoTotalGlosa = 0.0;
if (colGlosas != null){
for(Iterator it = colGlosas.iterator(); it.hasNext();){
i++;
GlosaOSDTO glosaOSDTO = (GlosaOSDTO) it.next();
document.executeScript("GRID_GLOSAS.addRow()");
document.executeScript("seqSelecionadaGlosa = NumberUtil.zerosAEsquerda(GRID_GLOSAS.getMaxIndex(),5)");
String strPerc = UtilFormatacao.formatDouble(glosaOSDTO.getPercAplicado(), 2);
String strGlosa = "";
if (glosaOSDTO.getCustoGlosa() != null){
strGlosa = UtilFormatacao.formatDouble(glosaOSDTO.getCustoGlosa(), 2);
}
//Setando valores vazios caso seja null para evitar erro no Oracle
String strDet = glosaOSDTO.getDescricaoGlosa();
if(strDet == null){
strDet = "";
}
//Setando valores vazios caso seja null para evitar erro no Oracle
String strObs = glosaOSDTO.getOcorrencias();
if(strObs == null){
strObs = "";
}
//Removendo aspas simples
if (strDet != null){
strDet = strDet.replaceAll("'", "");
}
//Removendo aspas simples
if (strObs != null){
strObs = strObs.replaceAll("'", "");
}
String numOc = "";
if (glosaOSDTO.getNumeroOcorrencias() != null){
numOc = "" + glosaOSDTO.getNumeroOcorrencias().intValue();
}
if(glosaOSDTO.getCustoGlosa() != null){
custoTotalGlosa = custoTotalGlosa + glosaOSDTO.getCustoGlosa().doubleValue();
os.setTotalglosasAtividades(custoTotalGlosa);
}
document.executeScript("setaRestoreItemGlosa('" + glosaOSDTO.getIdGlosaOS() + "'," +
"'" + br.com.citframework.util.WebUtil.codificaEnter(strDet) + "'," +
"'" + br.com.citframework.util.WebUtil.codificaEnter(strObs) + "'," +
"'" + numOc + "'," +
"'" + UtilStrings.nullToVazio(strPerc) + "'," +
"'" + UtilStrings.nullToVazio(strGlosa) + "'" +
")");
}
document.getElementById("custoTotalGlosa").setInnerHTML("<b>" + UtilFormatacao.formatDouble(custoTotalGlosa, 2) + "</b>");
}
}
document.getForm("form").lockForm();
if (os != null){
if (os.getSituacaoOS().intValue() == OSDTO.EM_EXECUCAO){ //somente se em execucao.
int i = 0;
if (col != null){
i = 0;
for(Iterator it = col.iterator(); it.hasNext();){
i++;
AtividadesOSDTO atividadesOSDTO = (AtividadesOSDTO)it.next();
String objHtml = "document.form.qtdeExecutada" + UtilFormatacao.formatInt(i, "00000");
document.executeScript(objHtml + ".disabled = false");
objHtml = "document.form.idServicoContratoContabil" + UtilFormatacao.formatInt(i, "00000");
document.executeScript(objHtml + ".disabled = false");
}
String objHtml = "document.form.quantidade";
document.executeScript(objHtml + ".disabled = false");
document.executeScript(objHtml + ".style.width = '40px !important;'");
}
if (colGlosas != null){
i = 0;
for(Iterator it = colGlosas.iterator(); it.hasNext();){
i++;
GlosaOSDTO glosaOSDTO = (GlosaOSDTO)it.next();
String objHtml = "document.form.idGlosaOS" + UtilFormatacao.formatInt(i, "00000");
document.executeScript(objHtml + ".disabled = false");
objHtml = "document.form.descricaoGlosa" + UtilFormatacao.formatInt(i, "00000");
document.executeScript(objHtml + ".disabled = false");
objHtml = "document.form.numeroOcorrencias" + UtilFormatacao.formatInt(i, "00000");
document.executeScript(objHtml + ".disabled = false");
objHtml = "document.form.ocorrencias" + UtilFormatacao.formatInt(i, "00000");
document.executeScript(objHtml + ".disabled = false");
objHtml = "document.form.percAplicado" + UtilFormatacao.formatInt(i, "00000");
document.executeScript(objHtml + ".disabled = false");
objHtml = "document.form.custoGlosa" + UtilFormatacao.formatInt(i, "00000");
document.executeScript(objHtml + ".readOnly = true");
}
}
document.getElementById("divBotaoGlosaOS").setVisible(true);
document.getElementById("btnAddGlosaOS").setDisabled(false);
document.executeScript("unlockGlosas()");
}
if (os.getSituacaoOS().equals(OSDTO.APROVADA)){ //somente se liberado para homologacao.
int i = 0;
if (col != null){
i = 0;
for(Iterator it = col.iterator(); it.hasNext();){
i++;
AtividadesOSDTO atividadesOSDTO = (AtividadesOSDTO)it.next();
String objHtml = "document.form.glosa" + UtilFormatacao.formatInt(i, "00000");
document.executeScript(objHtml + ".disabled = false");
objHtml = "document.form.qtdeExecutada" + UtilFormatacao.formatInt(i, "00000");
document.executeScript(objHtml + ".disabled = false");
}
}
if (colGlosas != null){
i = 0;
for(Iterator it = colGlosas.iterator(); it.hasNext();){
i++;
GlosaOSDTO glosaOSDTO = (GlosaOSDTO)it.next();
String objHtml = "document.form.idGlosaOS" + UtilFormatacao.formatInt(i, "00000");
document.executeScript(objHtml + ".disabled = false");
objHtml = "document.form.descricaoGlosa" + UtilFormatacao.formatInt(i, "00000");
document.executeScript(objHtml + ".disabled = false");
objHtml = "document.form.numeroOcorrencias" + UtilFormatacao.formatInt(i, "00000");
document.executeScript(objHtml + ".disabled = false");
objHtml = "document.form.ocorrencias" + UtilFormatacao.formatInt(i, "00000");
document.executeScript(objHtml + ".disabled = false");
objHtml = "document.form.percAplicado" + UtilFormatacao.formatInt(i, "00000");
document.executeScript(objHtml + ".disabled = false");
objHtml = "document.form.custoGlosa" + UtilFormatacao.formatInt(i, "00000");
document.executeScript(objHtml + ".readOnly = true");
}
}
document.getElementById("divBotaoGlosaOS").setVisible(true);
document.getElementById("btnAddGlosaOS").setDisabled(false);
document.executeScript("unlockGlosas()");
}
if (os.getSituacaoOS().intValue() == OSDTO.APROVADA ||
os.getSituacaoOS().intValue() == OSDTO.EXECUTADA ||
os.getSituacaoOS().intValue() == OSDTO.EM_EXECUCAO){
document.getElementById("divGlosas").setVisible(true);
}
}
document.getSelectById("situacaoOS").setDisabled(false);
document.getElementById("btnGravar").setDisabled(false);
document.getElementById("idOS").setDisabled(false);
document.getElementById("idOSPai").setDisabled(false);
document.getElementById("seqANS").setDisabled(false);
document.getElementById("fieldANS").setDisabled(false);
document.getElementById("idContrato").setDisabled(false);
if (os != null && os.getSituacaoOS() != null && os.getSituacaoOS().intValue() != OSDTO.EXECUTADA){
document.executeScript("HTMLUtils.unlockField('obsFinalizacao')");
document.executeScript("desabilitaObsFinal()");
}
if(os != null && os.getSituacaoOS() != null && os.getSituacaoOS().intValue() == OSDTO.EXECUTADA){
document.getElementById("flagGlosa").setValue("S");
//document.executeScript("$('#btnAssociarIncidente').attr('disabled',true)");
}else{
document.getElementById("flagGlosa").setValue("N");
}
lockAllFields(document);
document.getElementById("colItens_Serialize").setDisabled(false);
document.getElementById("colGlosas_Serialize").setDisabled(false);
document.getElementById("colQtdExec_Serialize").setDisabled(false);
document.getElementById("executadoOS").setDisabled(false);
document.getElementById("executadoOS").setReadonly(true);
document.getElementById("flagGlosa").setDisabled(false);
document.getElementById("flagGlosa").setReadonly(true);
document.getElementById("idServicoContratoContabil").setDisabled(false);
document.getElementById("idServicoContratoContabil").setReadonly(true);
document.executeScript("$('.clsAddIncidente').attr('disabled',false)");
document.executeScript("serealizaCustoExecutado()");
if(colGlosas == null){
preencheItensGlosa(document, request, response);
}
}
public void atualizaTotalExecutado(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception{
Collection colItens = br.com.citframework.util.WebUtil.deserializeCollectionFromRequest(AtividadesOSDTO.class, "colQtdExec_Serialize", request);
Double qtdExecutadaTotal = 0.0;
if (colItens != null){
for(Iterator it = colItens.iterator(); it.hasNext();){
AtividadesOSDTO atividadesOSDTO = (AtividadesOSDTO)it.next();
AtividadesOSDTO atividadesOSAux = new AtividadesOSDTO();
Double qtdExecutada = atividadesOSDTO.getQtdeExecutada();
if(qtdExecutada != null){
qtdExecutadaTotal = qtdExecutadaTotal + qtdExecutada.doubleValue();
}
}
}
document.getElementById("executadoOS").setValue("");
document.getElementById("executadoOS").setValue(UtilFormatacao.formatDouble(qtdExecutadaTotal, 2));
}
public void preencheItensGlosa(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception{
OSDTO os = (OSDTO) document.getBean();
OSService osService = (OSService) ServiceLocator.getInstance().getService(OSService.class, null);
AcordoNivelServicoContratoService acordoNivelServicoContratoService = (AcordoNivelServicoContratoService) ServiceLocator.getInstance().getService(AcordoNivelServicoContratoService.class, null);
os = (OSDTO)osService.restore(os);
if (os!= null && os.getIdServicoContrato() == null) {
document.getJanelaPopupById("JANELA_AGUARDE_MENU").hide();
return;
}
ResultadosEsperadosDTO resultadosEspedadosDTO = new ResultadosEsperadosDTO();
if(os != null){
resultadosEspedadosDTO.setIdServicoContrato(os.getIdServicoContrato());
}
Collection col = null;
document.executeScript("GRID_GLOSAS.deleteAllRows()");
if (os != null) {
int i = 0;
col = acordoNivelServicoContratoService.consultaResultadosEsperados(resultadosEspedadosDTO);
if (col != null && col.size() > 0) {
for (Iterator it = col.iterator(); it.hasNext();) {
i++;
ResultadosEsperadosDTO resultadosEsperadosDTO = (ResultadosEsperadosDTO) it.next();
document.executeScript("GRID_GLOSAS.addRow()");
document.executeScript("seqSelecionada = NumberUtil.zerosAEsquerda(GRID_GLOSAS.getMaxIndex(),5)");
String strDesc = resultadosEsperadosDTO.getDescricaoResultados();
if (strDesc != null) {
strDesc = strDesc.replaceAll("'", "");
}else{
strDesc = "";
}
document.executeScript("setaGlosaItem('" + br.com.citframework.util.WebUtil.codificaEnter(strDesc) + "'" + ")");
}
}else{
document.alert(UtilI18N.internacionaliza(request, "os.nenhumResultadoEsperado"));
}
}
}
public void listaIncidentesParaVincular(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception{
OSDTO os = (OSDTO) document.getBean();
OSService osService = (OSService) ServiceLocator.getInstance().getService(OSService.class, null);
SolicitacaoServicoService solicitacaoServicoService = (SolicitacaoServicoService) ServiceLocator.getInstance().getService(SolicitacaoServicoService.class, null);
VinculaOsIncidenteService vinculaOsIncidenteService = (VinculaOsIncidenteService) ServiceLocator.getInstance().getService(VinculaOsIncidenteService.class, null);
Collection<SolicitacaoServicoDTO> listSolicitacaoServico = null;
Integer idServicoContratoContabil = os.getIdServicoContratoContabil();
if(idServicoContratoContabil != null){
listSolicitacaoServico = solicitacaoServicoService.listaSolicitacaoServicoPorServicoContrato(idServicoContratoContabil);
}
boolean checked = false;
boolean disabled = true;
String strTable = "<table width='98%' id='tableIncidentes' >";
strTable += "<thead>";
strTable += "<tr>";
strTable += "<td style='border: 1px solid black' class='linhaSubtituloGrid'>";
strTable += " ";
strTable += "</td>";
strTable += "<td style='border: 1px solid black' class='linhaSubtituloGrid'>";
strTable += UtilI18N.internacionaliza(request, "solicitacaoServico.numerosolicitacao");
strTable += "</td>";
strTable += "<td style='border: 1px solid black' class='linhaSubtituloGrid'>";
strTable += UtilI18N.internacionaliza(request, "solicitacaoServico.descricao");
strTable += "</td>";
strTable += "</tr>";
strTable += "</thead>";
strTable += "<tbody>";
if(listSolicitacaoServico != null){
int count = 1;
for (SolicitacaoServicoDTO solicitacaoServicoDTO : listSolicitacaoServico) {
boolean flag = vinculaOsIncidenteService.verificaServicoJaVinculado(os.getIdOS(), solicitacaoServicoDTO.getIdSolicitacaoServico());
if(flag){
continue;
}else{
checked = vinculaOsIncidenteService.verificaServicoSelecionado(solicitacaoServicoDTO.getIdSolicitacaoServico());
os = (OSDTO) osService.restore(os);
if(OSDTO.EM_EXECUCAO.equals(os.getSituacaoOS())){
disabled = false;
}
strTable += "<tr style='border-bottom: 1px solid black; border-right: 1px solid black;'>";
strTable += "<td style='border-left: 1px solid black;'>";
strTable += "<input type='checkbox' "+ (checked ? "checked='checked'" : "" ) + (disabled ? "disabled='true'":"")+" name='idSolicitacaoServico' value='" + solicitacaoServicoDTO.getIdSolicitacaoServico() + "' id='idSolicitacaoServico"+count+"' />";
strTable += "</td>";
strTable += "<td style='font-weight: bold;border-left: 1px solid black;padding-left: 5px;'>";
strTable += " " + solicitacaoServicoDTO.getIdSolicitacaoServico();
strTable += "</td>";
strTable += "<td style='font-weight: bold;border-left: 1px solid black;padding-left: 5px;'>";
strTable += " " + solicitacaoServicoDTO.getDescricao();
strTable += "</td>";
strTable += "</tr>";
count++;
}
}
} else {
strTable += "<tr>";
strTable += "<td colspan='20'>";
strTable += UtilI18N.internacionaliza(request, "citcorpore.comum.naoHaIncidenteParaAssociar");
strTable += "</td>";
strTable += "</tr>";
}
strTable += "</tbody>";
strTable += "</table>";
StringBuilder strFormAssociar = new StringBuilder();
strFormAssociar.append("<input type='hidden' name='idOS'/>")
.append("<input type='hidden' name='idServicoContratoContabil'/>")
.append("<input type='hidden' name='incidentesSerializadas' id='incidentesSerializadas'/>")
.append("<div id='divOsSelecao' style='height: 75%; width: 770px; overflow: auto;'>"+UtilStrings.nullToVazio(strTable)+"</div>")
.append("<table>")
.append("<tr>")
.append("<td>")
.append("<input type='button' name='btnAssociarIncidente' value='Salvar Associa��o' onclick='associarIncidentes()'/>")
.append("</td>")
.append("<td>")
.append(" ")
.append("</td>")
.append("</tr>")
.append("</table>");
document.executeScript("$('#POPUP_LISTA_INCIDENTES').dialog('open');");
document.getElementById("conteudoPopUp").setInnerHTML(UtilStrings.nullToVazio(strFormAssociar.toString()));
}
@SuppressWarnings("unchecked")
public void associarOSIncidente(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception{
OSDTO os = (OSDTO) document.getBean();
int count = 0;
Integer idOS = os.getIdOS();
Integer idServicoContratoContabil = os.getIdServicoContratoContabil();
Integer idAtividadesOSDTO = null;
VinculaOsIncidenteService vinculaOsIncidenteService = (VinculaOsIncidenteService) ServiceLocator.getInstance().getService(VinculaOsIncidenteService.class, null);
AtividadesOSService atividadesOSService = (AtividadesOSService) ServiceLocator.getInstance().getService(AtividadesOSService.class, null);
List<VinculaOsIncidenteDTO> listaIncidentes = (List<VinculaOsIncidenteDTO>) WebUtil.deserializeCollectionFromRequest(VinculaOsIncidenteDTO.class, "incidentesSerializadas", request);
Collection<AtividadesOSDTO> listaAtividades = atividadesOSService.findByIdOsServicoContratoContabil(idOS, idServicoContratoContabil);
if(listaAtividades != null){
for (AtividadesOSDTO atividadesOSDTO : listaAtividades) {
idAtividadesOSDTO = atividadesOSDTO.getIdAtividadesOS();
}
}
vinculaOsIncidenteService.deleteByIdAtividadeOS(idAtividadesOSDTO);
if(listaIncidentes != null && idOS != null && idAtividadesOSDTO != null){
for (VinculaOsIncidenteDTO vinculaOsIncidenteDTO : listaIncidentes) {
vinculaOsIncidenteDTO.setIdOS(idOS);
Collection<AtividadesOSDTO> listAtividadesOs = atividadesOSService.findByIdOsServicoContratoContabil(idOS, os.getIdServicoContratoContabil());
if(listAtividadesOs != null){
for (AtividadesOSDTO atividadesOSDTO : listAtividadesOs) {
vinculaOsIncidenteDTO.setIdAtividadesOS(atividadesOSDTO.getIdAtividadesOS());
}
}
vinculaOsIncidenteService.create(vinculaOsIncidenteDTO);
count++;
}
if(count > 0){
document.alert(count + " Incidente(s) associado(s) com sucesso! \nAten��o! Os valores ser�o atualizados somente ap�s a grava��o da OS!");
}
}
document.executeScript("$('#POPUP_LISTA_INCIDENTES').dialog('close');");
}
private void lockAllFields(DocumentHTML document) throws Exception {
document.getElementById("dataInicio").setReadonly(true);
document.getElementById("dataFim").setReadonly(true);
document.getElementById("quantidade").setReadonly(true);
}
@Override
@SuppressWarnings("unchecked")
public void save(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception{
OSDTO os = (OSDTO) document.getBean();
OSService osService = (OSService) ServiceLocator.getInstance().getService(OSService.class, null);
VinculaOsIncidenteService vinculaOsIncidenteService = (VinculaOsIncidenteService) ServiceLocator.getInstance().getService(VinculaOsIncidenteService.class, null);
AtividadesServicoContratoService atividadesServicoContratoService = (AtividadesServicoContratoService) ServiceLocator.getInstance().getService(AtividadesServicoContratoService.class, null);
AtividadesOSService atividadesOSService = (AtividadesOSService) ServiceLocator.getInstance().getService(AtividadesOSService.class, null);
Collection colGlosas = br.com.citframework.util.WebUtil.deserializeCollectionFromRequest(GlosaOSDTO.class, "colGlosas_Serialize", request);
Collection colItens = br.com.citframework.util.WebUtil.deserializeCollectionFromRequest(AtividadesOSDTO.class, "colItens_Serialize", request);
//os = (OSDTO)osService.restore(os);
String permiteValorZeroAtv = ParametroUtil.getValorParametroCitSmartHashMap(Enumerados.ParametroSistema.OS_VALOR_ZERO, "N");
if (permiteValorZeroAtv == null){
permiteValorZeroAtv = "N";
}
Integer idContrato = -1;
try{
idContrato = Integer.parseInt((String)request.getSession(true).getAttribute("NUMERO_CONTRATO_EDICAO"));
}catch (Exception e) {
}
if (idContrato == -1){
document.alert("N�o foi poss�vel identificar o contrato, por favor, feche esta tela e fa�a logon novamente!");
return;
}
if (os.getIdOS()==null || os.getIdOS().intValue()==0){
document.alert("N�o foi poss�vel identificar a OS, por favor, feche esta tela e fa�a logon novamente!");
return;
}
Double custoGlosaTotal = 0.0;
Double custoTotalExecutado = os.getExecutadoOS();
Double glosaAtividade = 0.0;
Double glosaPercAplicadoTotal = 0.0;
if (colItens != null){
for(Iterator it = colItens.iterator(); it.hasNext();){
glosaAtividade = 0.0;
custoGlosaTotal = 0.0;
glosaPercAplicadoTotal = 0.0;
AtividadesOSDTO atividadesOSDTO = (AtividadesOSDTO)it.next();
AtividadesOSDTO atividadesOSAux = new AtividadesOSDTO();
atividadesOSAux.setIdAtividadesOS(atividadesOSDTO.getIdAtividadesOS());
//Multiplica o valor da atividade pelo n�mero de incidentes associados, caso exista.
Collection<VinculaOsIncidenteDTO> listaAtividadesOSDTOs = vinculaOsIncidenteService.findByIdAtividadeOS(atividadesOSDTO.getIdAtividadesOS());
if(listaAtividadesOSDTOs != null && listaAtividadesOSDTOs.size() > 0){
AtividadesOSDTO atividadesOSDTO2 = new AtividadesOSDTO();
atividadesOSDTO2 = (AtividadesOSDTO) atividadesOSService.restore(atividadesOSAux);
if(atividadesOSDTO2 != null){
AtividadesServicoContratoDTO atividadesServicoContratoDTO = new AtividadesServicoContratoDTO();
atividadesServicoContratoDTO.setIdAtividadeServicoContrato(atividadesOSDTO2.getIdAtividadeServicoContrato());
atividadesServicoContratoDTO = (AtividadesServicoContratoDTO) atividadesServicoContratoService.restore(atividadesServicoContratoDTO);
if(atividadesServicoContratoDTO != null){
atividadesOSDTO.setCustoAtividade(atividadesServicoContratoDTO.getCustoAtividade());
int count = listaAtividadesOSDTOs.size();
atividadesOSDTO.setCustoAtividade((atividadesOSDTO.getCustoAtividade() * count) * os.getQuantidade());
}
}
}
if(colGlosas != null && !colGlosas.isEmpty()){
for (Iterator it2 = colGlosas.iterator(); it2.hasNext();) {
GlosaOSDTO glosaOSDTO = (GlosaOSDTO) it2.next();
if(glosaOSDTO.getPercAplicado() != null && custoTotalExecutado != null){
Double custoGlosa = (glosaOSDTO.getPercAplicado() * custoTotalExecutado) / 100;
glosaOSDTO.setCustoGlosa(custoGlosa);
custoGlosaTotal = custoGlosaTotal + glosaOSDTO.getCustoGlosa();
glosaPercAplicadoTotal = glosaPercAplicadoTotal + glosaOSDTO.getPercAplicado();
}
}
//Rateia o valor total da glosa pelo n�mero de atividades
if(atividadesOSDTO.getQtdeExecutada()!=null){
glosaAtividade = (glosaPercAplicadoTotal * atividadesOSDTO.getQtdeExecutada()) / 100;
}
//if(custoGlosaTotal != null && custoGlosaTotal > 0.0){
//glosaAtividade = custoGlosaTotal / colItens.size();
//}
}
if (os.getSituacaoOS() != null && (os.getSituacaoOS().equals(OSDTO.APROVADA) || os.getSituacaoOS().equals(OSDTO.EXECUTADA))){
if (!permiteValorZeroAtv.equalsIgnoreCase("S")){
if (atividadesOSDTO.getQtdeExecutada() == null){
document.alert("Qtde executada de todas atividades deve ser preenchida!");
return;
}
if (atividadesOSDTO.getQtdeExecutada().doubleValue() <= 0){
document.alert("Qtde executada de todas atividades deve ser preenchida!");
return;
}
}
}
atividadesOSDTO.setGlosaAtividade(glosaAtividade);
}
}
try {
if(os.getSituacaoOS().equals(OSDTO.EM_EXECUCAO)){
osService.updateSituacao(os, colGlosas, colItens);
}else{
osService.updateSituacao(os.getIdOS(), os.getSituacaoOS(), colGlosas, colItens, os.getObsFinalizacao());
//Verifica se a OS est� em condi��o de registrar uma contagem de glosa
String flag = os.getFlagGlosa().toString();
if(os.getSituacaoOS().equals(OSDTO.EXECUTADA) && (flag!=null && flag.equalsIgnoreCase("N"))){
//Chama conta glosa se houver alguma ocorr�ncia de glosa
if(colGlosas != null && colGlosas.size() > 0){
contaServicoGlosa(os, colGlosas, document);
}
}
}
document.alert("Registro atualizado com sucesso!");
document.executeScript("parent.atualizaOSs()");
document.executeScript("parent.fecharVisao()");
} catch (Exception e) {
document.executeScript("alert('" + UtilI18N.internacionaliza(request, "citcorpore.comum.erroGravacao") + "');");
}
}
private void contaServicoGlosa(OSDTO os, Collection colGlosas, DocumentHTML document) throws ServiceException, Exception{
if(colGlosas != null && colGlosas.size() > 0){
GlosaServicoContratoService glosaService = (GlosaServicoContratoService) ServiceLocator.getInstance().getService(GlosaServicoContratoService.class, null);
OSService osService = (OSService) ServiceLocator.getInstance().getService(OSService.class, null);
OSDTO osDto = (OSDTO)osService.restore(os);
Integer quantidade = glosaService.quantidadeGlosaServico(osDto.getIdServicoContrato());
GlosaServicoContratoDTO glosaServicoContratoDTO = new GlosaServicoContratoDTO();
boolean flag = false;
for (Iterator it = colGlosas.iterator(); it.hasNext();){
GlosaOSDTO glosa = (GlosaOSDTO) it.next();
Double percentual = glosa.getPercAplicado();
if(percentual > 0.0){
flag = true;
}
}
//Conta glosa se houver algum percentual acima de 0,0%
if(flag){
if(quantidade != null && quantidade > 0){
quantidade = quantidade + 1;
glosaServicoContratoDTO.setQuantidadeGlosa(quantidade);
glosaServicoContratoDTO.setIdServicoContrato(osDto.getIdServicoContrato());
glosaService.atualizaQuantidadeGlosa(quantidade, osDto.getIdServicoContrato());
}else{
glosaServicoContratoDTO.setQuantidadeGlosa(1);
glosaServicoContratoDTO.setIdServicoContrato(osDto.getIdServicoContrato());
glosaService.create(glosaServicoContratoDTO);
quantidade = 1;
}
}
}
}
public void calculaValorTotalAtividade(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception {
OSDTO os = (OSDTO) document.getBean();
if(os != null && os.getQuantidade() != null && os.getQuantidade() > 0){
Collection colItens = br.com.citframework.util.WebUtil.deserializeCollectionFromRequest(AtividadesOSDTO.class, "colItens_Serialize", request);
OSService osService = (OSService) ServiceLocator.getInstance().getService(OSService.class, null);
osService.retornaAtividadeCadastradaByPai(os);
if (colItens != null){
int i = 0;
document.executeScript("GRID_ITENS.deleteAllRows();");
for(Iterator it = colItens.iterator(); it.hasNext();){
i++;
AtividadesOSDTO atividadesOSDTO = (AtividadesOSDTO)it.next();
document.executeScript("GRID_ITENS.addRow()");
document.executeScript("seqSelecionada = NumberUtil.zerosAEsquerda(GRID_ITENS.getMaxIndex(),5)");
String strQtde = "";
if(os.getColItens() != null){
for(Iterator itItens = os.getColItens().iterator(); itItens.hasNext();){
AtividadesOSDTO atividadesOSPaiDTO = (AtividadesOSDTO)itItens.next();
if(atividadesOSPaiDTO.getDescricaoAtividade().equalsIgnoreCase(atividadesOSDTO.getDescricaoAtividade())){
strQtde = UtilFormatacao.formatDouble((atividadesOSPaiDTO.getCustoAtividade()), 2);
break;
}
}
}
String strGlosa = "";
if (atividadesOSDTO.getGlosaAtividade() != null){
strGlosa = UtilFormatacao.formatDouble(atividadesOSDTO.getGlosaAtividade(), 2);
}
String strQtdeExec = "";
if (atividadesOSDTO.getQtdeExecutada() != null){
strQtdeExec = UtilFormatacao.formatDouble(atividadesOSDTO.getQtdeExecutada(), 2);
}
String strDet = atividadesOSDTO.getDescricaoAtividade();
String strObs = atividadesOSDTO.getObsAtividade();
if (strDet != null){
strDet = strDet.replaceAll("'", "");
}
if (strObs != null){
strObs = strObs.replaceAll("'", "");
}
String strIdServicoContratoContabil = "";
StringBuilder strBtnServicoContabil = new StringBuilder();
String exibirBotao = "";
if(atividadesOSDTO.getContabilizar() != null && atividadesOSDTO.getContabilizar().equalsIgnoreCase("S")){
ServicoContratoService servicoContratoService = (ServicoContratoService) ServiceLocator.getInstance().getService(ServicoContratoService.class, null);
Integer idServicoContratoContabil = atividadesOSDTO.getIdServicoContratoContabil();
if(idServicoContratoContabil != null){
strIdServicoContratoContabil = idServicoContratoContabil.toString();
}
if(idServicoContratoContabil != null){
document.getElementById("idServicoContratoContabil").setValue(strIdServicoContratoContabil);
ServicoService servicoService = (ServicoService) ServiceLocator.getInstance().getService(ServicoService.class, null);
ServicoDTO servicoDTO = new ServicoDTO();
servicoDTO.setIdServico(idServicoContratoContabil);
servicoDTO = (ServicoDTO) servicoService.restore(servicoDTO);
if(servicoDTO != null){
strBtnServicoContabil.append("<input type='hidden' name='servicoContrato"+i+"'/>")
.append("<div id='divServicoContrato"+i+"' style='width: 600px; height: 37px;'>")
.append("<button type='button' name='btnAddIncidentes' style='margin-top: 3px;' class='light img_icon has_text clsAddIncidente' onclick='mostrarIncidentesParaAssociar("+idServicoContratoContabil+")'>")
.append("<img src='"+ Constantes.getValue("SERVER_ADDRESS") + request.getContextPath() +"/template_new/images/icons/small/grey/document.png'>")
.append("<span>"+ UtilI18N.internacionaliza(request, "citcorpore.comum.associarIncidente") +"</span>")
.append("</button>")
.append("<div id='nomeServicoContratoContabil' style='font-weight: bold; padding-top: 2px;'>"+UtilStrings.nullToVazio(servicoDTO.getNomeServico())+"</div>")
.append("</div>");
exibirBotao = "true";
}
}
}
document.executeScript("setaRestoreItem('" + atividadesOSDTO.getComplexidade().trim() + "'," +
"'" + br.com.citframework.util.WebUtil.codificaEnter(strDet) + "'," +
"'" + br.com.citframework.util.WebUtil.codificaEnter(strObs) + "'," +
"'" + UtilStrings.nullToVazio(atividadesOSDTO.getFormula()) + "'," +
"'" + UtilStrings.nullToVazio(strQtde) + "'," +
"'" + UtilStrings.nullToVazio(strGlosa) + "'," +
"'" + UtilStrings.nullToVazio(strQtdeExec) + "'," +
"'" + atividadesOSDTO.getIdAtividadesOS() + "'," +
"'" + UtilStrings.nullToVazio(exibirBotao) + "'," +
"'" + UtilStrings.nullToVazio(strIdServicoContratoContabil) + "'," +
"'" + StringEscapeUtils.escapeJavaScript(UtilStrings.nullToVazio(strBtnServicoContabil.toString())) + "'" +
")");
}
}
if (os != null){
if (os.getSituacaoOS().equals(OSDTO.EM_EXECUCAO)){ //somente se em execucao.
int i = 0;
if (colItens != null){
i = 0;
for(Iterator it = colItens.iterator(); it.hasNext();){
i++;
AtividadesOSDTO atividadesOSDTO = (AtividadesOSDTO)it.next();
String objHtml = "document.form.qtdeExecutada" + UtilFormatacao.formatInt(i, "00000");
document.executeScript(objHtml + ".disabled = false");
}
}
String objHtml = "document.form.quantidade";
document.executeScript(objHtml + ".disabled = false");
document.executeScript(objHtml + ".style.width = '40px !important;'");
}
if (os.getSituacaoOS().intValue() == OSDTO.APROVADA){ //somente se liberado para homologacao.
int i = 0;
if (colItens != null){
i = 0;
for(Iterator it = colItens.iterator(); it.hasNext();){
i++;
AtividadesOSDTO atividadesOSDTO = (AtividadesOSDTO)it.next();
String objHtml = "document.form.glosa" + UtilFormatacao.formatInt(i, "00000");
document.executeScript(objHtml + ".disabled = false");
objHtml = "document.form.qtdeExecutada" + UtilFormatacao.formatInt(i, "00000");
document.executeScript(objHtml + ".disabled = false");
}
}
}
}
}else{
document.alert("Digite um valor maior que zero para quantidade!");
}
}
public void calculaFormulaANS(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception {
UsuarioDTO usuario = br.com.centralit.citcorpore.util.WebUtil.getUsuario(request);
if (usuario == null) {
document.alert("Sess�o expirada! Favor efetuar logon novamente!");
document.getJanelaPopupById("JANELA_AGUARDE_MENU").hide();
return;
}
OSDTO osDTO = (OSDTO) document.getBean();
Integer idContrato = -1;
try {
idContrato = Integer.parseInt((String) request.getSession(true).getAttribute("NUMERO_CONTRATO_EDICAO"));
} catch (Exception e) {
}
if (idContrato == -1) {
document.alert("N�o foi poss�vel identificar o contrato, por favor, feche esta tela e fa�a logon novamente!");
document.getJanelaPopupById("JANELA_AGUARDE_MENU").hide();
return;
}
AtividadesOSService atividadesOSService = (AtividadesOSService) ServiceLocator.getInstance().getService(AtividadesOSService.class, null);
AcordoNivelServicoService acordoNivelServicoService = (AcordoNivelServicoService) ServiceLocator.getInstance().getService(AcordoNivelServicoService.class, null);
ServicoContratoService servicoContratoService = (ServicoContratoService) ServiceLocator.getInstance().getService(ServicoContratoService.class, null);
FormulaService formulaService = (FormulaService) ServiceLocator.getInstance().getService(FormulaService.class, null);
OSService oSService = (OSService) ServiceLocator.getInstance().getService(OSService.class, null);
GlosaOSService glosaOSService = (GlosaOSService) ServiceLocator.getInstance().getService(GlosaOSService.class, null);
if (osDTO.getIdANS() != null) {
AcordoNivelServicoDTO acordoNivelServicoDTO = new AcordoNivelServicoDTO();
acordoNivelServicoDTO.setIdAcordoNivelServico(osDTO.getIdANS());
acordoNivelServicoDTO = (AcordoNivelServicoDTO) acordoNivelServicoService.restore(acordoNivelServicoDTO);
Collection col = atividadesOSService.findByIdOS(osDTO.getIdOS());
double qtdeTotal = 0;
double qtdeExecutada = 0;
double qtdeGlosada = 0;
if (col != null){
for(Iterator it = col.iterator(); it.hasNext();){
AtividadesOSDTO atividadesOSDTO = (AtividadesOSDTO)it.next();
qtdeTotal = qtdeTotal + atividadesOSDTO.getCustoAtividade();
qtdeGlosada = qtdeGlosada + atividadesOSDTO.getGlosaAtividade();
qtdeExecutada = qtdeExecutada + atividadesOSDTO.getQtdeExecutada();
}
}
osDTO.setCustoOS(qtdeTotal);
osDTO.setGlosaOS(qtdeGlosada);
osDTO.setExecutadoOS(qtdeExecutada);
//Falta implementacao e entendimento
if (acordoNivelServicoDTO.getIdFormula() == null) {
document.getJanelaPopupById("JANELA_AGUARDE_MENU").hide();
return;
}
}else{
String FORMULA_CALCULO_GLOSA_OS_STR = ParametroUtil.getValorParametroCitSmartHashMap(Enumerados.ParametroSistema.FORMULA_CALCULO_GLOSA_OS, " ");
Integer FORMULA_CALCULO_GLOSA_OS = null;
try{
FORMULA_CALCULO_GLOSA_OS = new Integer(FORMULA_CALCULO_GLOSA_OS_STR);
}catch (Exception e) {
}
if (FORMULA_CALCULO_GLOSA_OS != null){
Collection col = atividadesOSService.findByIdOS(osDTO.getIdOS());
double qtdeTotal = 0;
double qtdeExecutada = 0;
double qtdeGlosada = 0;
if (col != null){
for(Iterator it = col.iterator(); it.hasNext();){
AtividadesOSDTO atividadesOSDTO = (AtividadesOSDTO)it.next();
qtdeTotal = qtdeTotal + atividadesOSDTO.getCustoAtividade();
if (atividadesOSDTO.getGlosaAtividade() != null){
qtdeGlosada = qtdeGlosada + atividadesOSDTO.getGlosaAtividade();
}
if (atividadesOSDTO.getQtdeExecutada() != null){
qtdeExecutada = qtdeExecutada + atividadesOSDTO.getQtdeExecutada();
}
}
}
osDTO.setCustoOS(qtdeTotal);
osDTO.setGlosaOS(qtdeGlosada);
osDTO.setExecutadoOS(qtdeExecutada);
FormulaDTO formulaDto = new FormulaDTO();
formulaDto.setIdFormula(FORMULA_CALCULO_GLOSA_OS);
formulaDto = (FormulaDTO) formulaService.restore(formulaDto);
if (formulaDto != null) {
ScriptRhinoJSExecute scriptExecute = new ScriptRhinoJSExecute();
RuntimeScript runtimeScript = new RuntimeScript();
Context cx = Context.enter();
Scriptable scope = cx.initStandardObjects();
scope.put("document", scope, document);
scope.put("request", scope, request);
scope.put("response", scope, response);
scope.put("osDTO", scope, osDTO);
scope.put("colAtividades", scope, col);
scope.put("FormulasUtil", scope, new FormulasUtil());
scope.put("ACTION", scope, "calculaFormulaANS");
scope.put("userLogged", scope, usuario);
scope.put("RuntimeScript", scope, runtimeScript);
try {
Object retorno = scriptExecute.processScript(cx, scope, formulaDto.getConteudo(), OsSetSituacao.class.getName() + "_calculaFormulaANS");
} catch (Exception e) {
document.alert("ERRO AO EXECUTAR A FORMULA!");
e.printStackTrace();
}
}
}
}
document.getJanelaPopupById("JANELA_AGUARDE_MENU").hide();
}
}