diff --git a/trunk/PlanosActuacao/src/java/db/entidades/PlanoActuacao.java b/trunk/PlanosActuacao/src/java/db/entidades/PlanoActuacao.java index fdbdd25c..ff409472 100644 --- a/trunk/PlanosActuacao/src/java/db/entidades/PlanoActuacao.java +++ b/trunk/PlanosActuacao/src/java/db/entidades/PlanoActuacao.java @@ -56,10 +56,12 @@ public class PlanoActuacao { private String data_validacao_dir_loja_str; private String data_validacao_dns_str; - private String data_validacao_hs_str; + private String data_validacao_hs_str; private Date data_controlo; - private Date data_email_controlo; + private Date data_email_controlo; + + private Boolean concluido_por_desactivacao; public Integer getId() { return id; @@ -83,7 +85,7 @@ public class PlanoActuacao { public void setFase(Integer fase) { this.fase = fase; - fase_nome = Global.FASES_TEXTO[fase.intValue()-1]; + fase_nome = Global.FASES_TEXTO[fase.intValue()-1]; } public String getDescricao() { @@ -121,6 +123,10 @@ public class PlanoActuacao { } public String getFase_nome() { + if ( fase.intValue() == Global.FASE_CONCLUIDO && getConcluidoPorDesactivacao() != null && getConcluidoPorDesactivacao() ) + { + return "Prazo Expirado"; + } return fase_nome; } @@ -376,4 +382,14 @@ public class PlanoActuacao { public void setData_relatorio(Date data_relatorio) { this.data_relatorio = data_relatorio; } + + public Boolean getConcluidoPorDesactivacao() + { + return concluido_por_desactivacao; + } + + public void setConcluidoPorDesactivacao( boolean value ) + { + this.concluido_por_desactivacao = value; + } } diff --git a/trunk/PlanosActuacao/src/java/db/providers/PlanosDataProvider.java b/trunk/PlanosActuacao/src/java/db/providers/PlanosDataProvider.java index bf5cb560..39d1628c 100644 --- a/trunk/PlanosActuacao/src/java/db/providers/PlanosDataProvider.java +++ b/trunk/PlanosActuacao/src/java/db/providers/PlanosDataProvider.java @@ -33,7 +33,7 @@ public class PlanosDataProvider extends GenericDataProvider{ { Statement st = createStatement(); Integer newId = getMaxTableId("planos_actuacao"); - String sql = "insert into planos_actuacao (id, estabelecimento_id, fase, data_visita, data_relatorio, nome_estabelecimento, empresa_id, nome_empresa, data_controlo, tecnico_hs_id, tecnico_hs_nome) values ("; + String sql = "insert into planos_actuacao (id, estabelecimento_id, fase, data_visita, data_relatorio, nome_estabelecimento, empresa_id, nome_empresa, data_controlo, tecnico_hs_id, tecnico_hs_nome, concluido_por_desactivacao) values ("; sql += newId + ", "; sql += p.getEstabelecimento_id() + ", "; sql += p.getFase() + ", '"; @@ -50,13 +50,22 @@ public class PlanosDataProvider extends GenericDataProvider{ sql += p.getTecnico_hs_id() + ", "; if(p.getTecnico_hs_nome() == null) { - sql += null; + sql += null + ", "; } else { - sql += "'" + p.getTecnico_hs_nome() + "'"; + sql += "'" + p.getTecnico_hs_nome() + "', "; } + //concluido_por_desactivacao + if ( p.getConcluidoPorDesactivacao() == null ) + { + sql += Boolean.FALSE; + } + else + { + sql += p.getConcluidoPorDesactivacao(); + } sql += ")"; System.out.println("SQL CREATE PLANO : " + sql); @@ -67,6 +76,10 @@ public class PlanosDataProvider extends GenericDataProvider{ public void updatePlano(PlanoActuacao p) throws Exception { + if ( p.getConcluidoPorDesactivacao() == null ) + { + p.setConcluidoPorDesactivacao( false ); + } if(p.getObs_correcao() == null) { p.setObs_correcao(""); @@ -114,6 +127,8 @@ public class PlanosDataProvider extends GenericDataProvider{ sql += "obs_correcao = '" + p.getObs_correcao() + "', "; sql += "correcao = '" + p.getCorrecao() + "', "; sql += "fase_antes_correcao = " + p.getFase_antes_correcao() + ", "; + sql += "concluido_por_desactivacao = " + p.getConcluidoPorDesactivacao() + ", "; + if(p.getData_validacao_dir_loja() == null) { sql += "data_validacao_dir_loja = " + null + ", "; @@ -555,7 +570,9 @@ public class PlanosDataProvider extends GenericDataProvider{ pa.setData_validacao_hs(rs.getDate("data_validacao_hs")); pa.setUser_hs(new Integer(rs.getInt("user_hs"))); pa.setTecnico_hs_id(new Integer(rs.getInt("tecnico_hs_id"))); - pa.setTecnico_hs_nome(rs.getString("tecnico_hs_nome")); + pa.setTecnico_hs_nome(rs.getString("tecnico_hs_nome")); + pa.setConcluidoPorDesactivacao( new Boolean( rs.getBoolean( "concluido_por_desactivacao" ) ) ); + list.add(pa); }while(rs.next()); diff --git a/trunk/PlanosActuacao/src/java/planosactuacao/EditarPlano.java b/trunk/PlanosActuacao/src/java/planosactuacao/EditarPlano.java index 433f0f63..41f70394 100644 --- a/trunk/PlanosActuacao/src/java/planosactuacao/EditarPlano.java +++ b/trunk/PlanosActuacao/src/java/planosactuacao/EditarPlano.java @@ -87,9 +87,7 @@ public class EditarPlano extends AbstractPageBean { HtmlPanelGrid gridValor; HtmlPanelGrid gridMedida; HtmlPanelGrid gridPosto; - HtmlPanelGrid gridResponsavel; - - + HtmlPanelGrid gridResponsavel; int risco_id = 0; int medida_id = 0; @@ -185,6 +183,16 @@ public class EditarPlano extends AbstractPageBean { public void setChkValidacao(Checkbox c) { this.chkValidacao = c; } + + private Checkbox chkDesactivar = new Checkbox(); + + public Checkbox getChkDesactivar() { + return chkDesactivar; + } + + public void setChkDesactivar( Checkbox c ) { + this.chkDesactivar = c; + } private HtmlInputHidden hidValidacao = new HtmlInputHidden(); public HtmlInputHidden getHidValidacao() { @@ -749,7 +757,8 @@ public class EditarPlano extends AbstractPageBean { break; } - + chkDesactivar.setSelected( Boolean.FALSE ); + // gridPlano.setId("gridPlano"); // gridPlano.setWidth("100%"); @@ -769,7 +778,7 @@ public class EditarPlano extends AbstractPageBean { gridArea.setColumnClasses("gridColCenter"); gridArea.setWidth("100%"); gridArea.setStyle("background-color: #f6f4e8; border: solid 1px #766c6c"); - + gridPlano.getChildren().add(gridArea); if(p.getAreas().size() > 0) @@ -792,6 +801,18 @@ public class EditarPlano extends AbstractPageBean { } } showPreviousValidacoes(p); + + //TODO: do this IFF userType is Rogerio or 'tecnico ?' + Utilizador currentUser = getSessionBean1().getCurrentUser(); + if ( currentUser.getTipo().intValue() == Global.TECNICO_HS + || currentUser.getTipo().intValue() == Global.DIRECTOR_SIPRP ) + { + chkDesactivar.setId( "chkDesactivarPlano" ); + chkDesactivar.setLabel( "Desactivar Plano" ); + chkDesactivar.setSelected( p.getConcluidoPorDesactivacao() ); + chkDesactivar.setStyle( "float: left;" ); + gridPlano.getChildren().add( chkDesactivar ); + } } private void showArea(Area a) @@ -799,7 +820,7 @@ public class EditarPlano extends AbstractPageBean { pg = new PanelGroup(); st = new StaticText(); st.setEscape(false); - st.setStyleClass("label"); + st.setStyleClass("label"); st.setText("Área: "); pg.getChildren().add(st); st = new StaticText(); @@ -1490,9 +1511,10 @@ public class EditarPlano extends AbstractPageBean { public String butGravarPlano_action() { // TODO: Process the action. Return value is a navigation // case name where null will return to the same page. + String page = null; try { - gravarPlano(); + page = gravarPlano(); getSessionBean1().setMsg("Os dados do Plano de Actuação foram guardados"); } catch(Exception ex) @@ -1501,11 +1523,12 @@ public class EditarPlano extends AbstractPageBean { getSessionBean1().setMsg("Erro na gravação do plano!"); } - return null; + return page; } - private void gravarPlano() throws Exception + private String gravarPlano() throws Exception { + String returnToPage = null; PlanoActuacao p = getSessionBean1().getPlanoActuacao(); int fase = p.getFase().intValue(); switch(fase) @@ -1571,8 +1594,26 @@ public class EditarPlano extends AbstractPageBean { } } } + + Utilizador currentUser = getSessionBean1().getCurrentUser(); + if ( currentUser.getTipo().intValue() == Global.TECNICO_HS + || currentUser.getTipo().intValue() == Global.DIRECTOR_SIPRP ) + { + Checkbox chkD = ( Checkbox ) gridPlano.findComponent( "form1:chkDesactivarPlano" ); + if ( chkD != null ) + { + Boolean desactivar = ( Boolean ) chkD.getSelected(); + if ( desactivar != null && desactivar ) + { + p.setFase( Global.FASE_CONCLUIDO ); + p.setConcluidoPorDesactivacao( Boolean.TRUE ); + returnToPage = "lista_planos"; + } + } + } + pdp.updatePlano(p); - + //Valor curValor = getSessionBean1().getCurrentValor(); Risco curValor = getSessionBean1().getCurrentRisco(); curValor = fillValorFields(curValor); @@ -1602,7 +1643,9 @@ public class EditarPlano extends AbstractPageBean { { pdp.updateMedidas( r ); } - } + } + + return returnToPage; } public String butGravarRisco_action() { @@ -1881,7 +1924,7 @@ public class EditarPlano extends AbstractPageBean { public String butEnviar_action() { // TODO: Process the action. Return value is a navigation // case name where null will return to the same page. - PlanoActuacao p = getSessionBean1().getPlanoActuacao(); + PlanoActuacao p = getSessionBean1().getPlanoActuacao(); if(planoValidationOk(p)) { diff --git a/trunk/PlanosActuacao/src/java/planosactuacao/ListaPlanos.java b/trunk/PlanosActuacao/src/java/planosactuacao/ListaPlanos.java index 5e6e7500..63a30a0e 100644 --- a/trunk/PlanosActuacao/src/java/planosactuacao/ListaPlanos.java +++ b/trunk/PlanosActuacao/src/java/planosactuacao/ListaPlanos.java @@ -10,7 +10,9 @@ import com.evolute.utils.timer.TimedEvent; import com.evolute.utils.timer.Timer; import com.sun.data.provider.RowKey; import com.sun.rave.web.ui.appbase.AbstractPageBean; +import com.sun.webui.jsf.component.Button; import com.sun.webui.jsf.component.Table; +import com.sun.webui.jsf.component.TableColumn; import com.sun.webui.jsf.component.TableRowGroup; import db.Dblocal; import db.entidades.PlanoActuacao; @@ -101,6 +103,52 @@ public class ListaPlanos extends AbstractPageBean { this.gridActual = hpg; } + private TableColumn tableColumn55 = new TableColumn(); + + public TableColumn getTableColumn55() + { + return tableColumn55; + } + + public void setTableColumn55( TableColumn c ) + { + this.tableColumn55 = c; + } + + private Button buttonDesactivar = new Button(); + + public Button getButtonDesactivar() { + return buttonDesactivar; + } + + public void setButtonDesactivar( Button b ) { + this.buttonDesactivar = b; + } + + + private TableColumn tableColumn56 = new TableColumn(); + + public TableColumn getTableColumn56() + { + return tableColumn56; + } + + public void setTableColumn56( TableColumn c ) + { + this.tableColumn56 = c; + } + + private Button buttonDesactivarSeguimento = new Button(); + + public Button getButtonDesactivarSeguimento() { + return buttonDesactivarSeguimento; + } + + public void setButtonDesactivarSeguimento( Button b ) { + this.buttonDesactivarSeguimento = b; + } + + /** *

Construct a new Page bean instance.

*/ @@ -230,6 +278,17 @@ public class ListaPlanos extends AbstractPageBean { tableRowGroup3.setEmptyDataMsg("Sem registos"); } + + //Column para desactivar plano - mostra se o utilizador for DIRECTOR SIPRP + int uType = u.getTipo().intValue(); + boolean renderOrNot = uType == Global.DIRECTOR_SIPRP || uType == Global.TECNICO_HS; + tableColumn55.setRendered( renderOrNot ); + buttonDesactivar.setRendered( renderOrNot ); + + tableColumn56.setRendered( renderOrNot ); + buttonDesactivarSeguimento.setRendered( renderOrNot ); + + initialize(); } @@ -279,6 +338,47 @@ public class ListaPlanos extends AbstractPageBean { return "editar_plano"; } + //TODO: + public String goDesactivarPlano_action() + { + System.out.println( "\ngoDesactivarPlano_action():" ); + PlanoActuacao p = getTableActivosRowData(); + desactivarPlano( p ); +// System.out.println( "\tPlanoActuacao: " + p.getId() ); + return null; + } + + //TODO: + public String goDesactivarPlanoSeguimento_action() + { + System.out.println( "\ngoDesactivarPlanoSeguimento_action():" ); + PlanoActuacao p = getTableSeguimentoRowData(); + desactivarPlano( p ); +// System.out.println( "\tPlanoActuacao: " + p.getId() ); + return null; + } + + private void desactivarPlano( PlanoActuacao p ) + { + Utilizador currentUser = getSessionBean1().getCurrentUser(); + if ( currentUser.getTipo().intValue() == Global.DIRECTOR_SIPRP || currentUser.getTipo().intValue() == Global.TECNICO_HS ) + { + p.setFase( Global.FASE_CONCLUIDO ); + p.setConcluidoPorDesactivacao( Boolean.TRUE ); + try + { + pdp.updatePlano( p ); + } + catch ( Exception e ) + { + e.printStackTrace(); + } + } + + + } + + public String goEditarPlano_action() { // TODO: Process the action. Return value is a navigation // case name where null will return to the same page. diff --git a/trunk/PlanosActuacao/src/java/planosactuacao/ViewPlano.java b/trunk/PlanosActuacao/src/java/planosactuacao/ViewPlano.java index 96f83e93..dd0a744a 100644 --- a/trunk/PlanosActuacao/src/java/planosactuacao/ViewPlano.java +++ b/trunk/PlanosActuacao/src/java/planosactuacao/ViewPlano.java @@ -8,6 +8,7 @@ package planosactuacao; import com.sun.rave.web.ui.appbase.AbstractPageBean; import com.sun.webui.jsf.component.Button; +import com.sun.webui.jsf.component.Checkbox; import com.sun.webui.jsf.component.PageSeparator; import com.sun.webui.jsf.component.PanelGroup; import com.sun.webui.jsf.component.StaticText; @@ -190,6 +191,15 @@ public class ViewPlano extends AbstractPageBean { gridPlano.setColumnClasses("gridColCenter"); //plano //lblTop.setText("Plano de actuação da auditoria " + p.getData_visita_str()); + + System.out.println( "VIEWPLANO - : " + p.getConcluidoPorDesactivacao() ); + if ( p.getConcluidoPorDesactivacao() ) + { + StaticText st = new StaticText(); + st.setText( "N\u00E3o realizado por falta de cumprimento do prazo." ); + st.setStyle( "color: #FF0000; font-weight: bold; font-size: 13px;" ); + gridPlano.getChildren().add( st ); + } gridLayout.getChildren().add(gridPlano); showAreas(p.getAreas()); showValidacoes(gridPlano, p); diff --git a/trunk/PlanosActuacao/web/ListaPlanos.jsp b/trunk/PlanosActuacao/web/ListaPlanos.jsp index ef47dfbc..c3e5651e 100644 --- a/trunk/PlanosActuacao/web/ListaPlanos.jsp +++ b/trunk/PlanosActuacao/web/ListaPlanos.jsp @@ -27,6 +27,11 @@ } } + + function alertOnDeactivate() + { + return confirm( 'Tem a certeza que pretende desactivar o plano ?\nEsta acção é irreversível e passará o plano para o estado Concluído.' ); + } @@ -66,6 +71,12 @@ + + + + + @@ -93,6 +104,13 @@ + + + + + +