Commit 540e6077f229b128d6ceaf56b186e57a205ea12d

Authored by gabriel.damasceno
2 parents cccb7994 6626bc5d
Exists in master

Merge branch 'cnt-1.0.0-alfa11'

Showing 27 changed files with 830 additions and 746 deletions   Show diff stats
cit-contratos-api/src/main/java/br/com/centralit/api/dao/EventoAditivoDao.java
... ... @@ -7,7 +7,7 @@ import br.com.centralit.api.model.EventoAditivo;
7 7 import br.com.centralit.framework.dao.arquitetura.CitGenericDAO;
8 8  
9 9 /**
10   - *
  10 + *
11 11 * <p><img src="http://centralit.com.br/images/logo_central.png"></p>
12 12 *
13 13 * <p><b>Company: </b> Central IT - Governança Corporativa - </p>
... ... @@ -15,11 +15,11 @@ import br.com.centralit.framework.dao.arquitetura.CitGenericDAO;
15 15 * <p><b>Title: </b></p>
16 16 *
17 17 * <p><b>Description: </b></p>
18   - *
  18 + *
19 19 * <p><b>Iniciativa(s):</b> <a href="LINK_PORTAL">NUMERO_INICIATIVA</a></p>
20 20 *
21   - * <p><b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a></p>
22   - *
  21 + * <p><b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a></p>
  22 + *
23 23 * @since 15/03/2016 - 18:35:42
24 24 *
25 25 * @version 1.0.0
... ... @@ -30,10 +30,10 @@ import br.com.centralit.framework.dao.arquitetura.CitGenericDAO;
30 30 public interface EventoAditivoDao extends CitGenericDAO {
31 31  
32 32 /**
33   - *
  33 + *
34 34 * <p><b>Iniciativa(s):</b> <a href="LINK_PORTAL">NUMERO_INICIATIVA</a></p>
35 35 *
36   - * <p><b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a></p>
  36 + * <p><b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a></p>
37 37 *
38 38 * Método responsável por
39 39 *
... ... @@ -45,10 +45,10 @@ public interface EventoAditivoDao extends CitGenericDAO {
45 45 Collection<EventoAditivo> findAllByContrato(Long contratoId);
46 46  
47 47 /**
48   - *
  48 + *
49 49 * <p><b>Iniciativa(s):</b> <a href="LINK_PORTAL">NUMERO_INICIATIVA</a></p>
50 50 *
51   - * <p><b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a></p>
  51 + * <p><b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a></p>
52 52 *
53 53 * Método responsável por buscar o último registro de aditivo de um determinado contrato no ano da data de emissão
54 54 *
... ... @@ -61,4 +61,6 @@ public interface EventoAditivoDao extends CitGenericDAO {
61 61 * @return
62 62 */
63 63 EventoAditivo buscarUltimoRegistroPorDataEmissaoEContrato(String property, Calendar dataEmissao, Long contratoId, Long organizacaoId);
  64 +
  65 + boolean existeAditivoPosterior(Calendar dataInicioAditivo, Long idContrato);
64 66 }
... ...
cit-contratos-api/src/main/java/br/com/centralit/api/dao/impl/EventoAditivoDaoHibernate.java
... ... @@ -2,6 +2,7 @@ package br.com.centralit.api.dao.impl;
2 2  
3 3 import java.util.Calendar;
4 4 import java.util.Collection;
  5 +import java.util.List;
5 6  
6 7 import org.springframework.stereotype.Repository;
7 8  
... ... @@ -13,37 +14,37 @@ import br.com.centralit.framework.dao.arquitetura.SearchSeven;
13 14 import com.googlecode.genericdao.search.Search;
14 15  
15 16 /**
16   - *
  17 + *
17 18 * <p>
18 19 * <img src="http://centralit.com.br/images/logo_central.png">
19 20 * </p>
20   - *
  21 + *
21 22 * <p>
22 23 * <b>Company: </b> Central IT - Governança Corporativa -
23 24 * </p>
24   - *
  25 + *
25 26 * <p>
26 27 * <b>Title: </b>
27 28 * </p>
28   - *
  29 + *
29 30 * <p>
30 31 * <b>Description: </b>
31 32 * </p>
32   - *
  33 + *
33 34 * <p>
34 35 * <b>Iniciativa(s):</b> <a href="LINK_PORTAL">NUMERO_INICIATIVA</a>
35 36 * </p>
36   - *
  37 + *
37 38 * <p>
38 39 * <b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a>
39 40 * </p>
40   - *
  41 + *
41 42 * @since 15/03/2016 - 18:36:13
42   - *
  43 + *
43 44 * @version 1.0.0
44   - *
  45 + *
45 46 * @author geovane.filho
46   - *
  47 + *
47 48 */
48 49 @Repository("eventoAditivoDao")
49 50 public class EventoAditivoDaoHibernate extends CitGenericDAOImpl implements EventoAditivoDao {
... ... @@ -100,4 +101,16 @@ public class EventoAditivoDaoHibernate extends CitGenericDAOImpl implements Even
100 101 return searchUnique(search);
101 102 }
102 103  
  104 + @Override
  105 + public boolean existeAditivoPosterior(Calendar dataInicioAditivo, Long idContrato) {
  106 + SearchSeven search = new SearchSeven();
  107 +
  108 + search.addFilterIn("contrato.id", idContrato);
  109 + search.addFilterGreaterThan("dataEmissao", dataInicioAditivo);
  110 +
  111 + List<Object> list = this.search(search);
  112 +
  113 + return list != null && list.size() > 0 ? true : false;
  114 + }
  115 +
103 116 }
... ...
cit-contratos-api/src/main/java/br/com/centralit/api/model/Contrato.java
... ... @@ -66,8 +66,7 @@ import com.fasterxml.jackson.databind.annotation.JsonSerialize;
66 66 */
67 67 @Entity
68 68 @Table(name = "cnt_contrato")
69   -@JsonIgnoreProperties({ "valorTotalItens", "cnpjFornecedor",
70   - "valorTotalLiberado", "ultimaDataVigenciaFinal" })
  69 +@JsonIgnoreProperties({ "valorTotalItens", "cnpjFornecedor", "valorTotalLiberado", "ultimaDataVigenciaFinal" })
71 70 public class Contrato extends PersistentObjectAuditOrganizacao {
72 71  
73 72 /** Atributo serialVersionUID. */
... ... @@ -87,13 +86,13 @@ public class Contrato extends PersistentObjectAuditOrganizacao {
87 86 /** Atributo numeroProcesso. */
88 87 @Column(length = 30, nullable = false)
89 88 @JsonView({ ViewsContrato.ContratoEditView.class,
90   - ViewsContrato.ContratoAutoCompleteView.class,
91   - ViewsContrato.OrdemFornecimentoEditView.class,
92   - ViewsContrato.EncerramentoContratoEditView.class,
93   - ViewsContrato.ContratoEventoEditView.class,
94   - ViewsContrato.EventoApostilamentoEditView.class,
95   - ViewsContrato.EventoPenalidadeEditView.class,
96   - ViewsContrato.EventoRecebimentoObjetoEditView.class })
  89 + ViewsContrato.ContratoAutoCompleteView.class,
  90 + ViewsContrato.OrdemFornecimentoEditView.class,
  91 + ViewsContrato.EncerramentoContratoEditView.class,
  92 + ViewsContrato.ContratoEventoEditView.class,
  93 + ViewsContrato.EventoApostilamentoEditView.class,
  94 + ViewsContrato.EventoPenalidadeEditView.class,
  95 + ViewsContrato.EventoRecebimentoObjetoEditView.class })
97 96 private Long numeroProcesso;
98 97  
99 98 /** Atributo exercicio. */
... ... @@ -106,46 +105,46 @@ public class Contrato extends PersistentObjectAuditOrganizacao {
106 105 /** Atributo numeroAnoContrato. */
107 106 @Column(length = 30, nullable = false)
108 107 @JsonView({ ViewsContrato.ContratoEditView.class,
109   - ViewsContrato.ContratoAutoCompleteView.class,
110   - ViewsContrato.CronogramaExecucaoEditView.class,
111   - ViewsContrato.OrdemFornecimentoListView.class,
112   - ViewsContrato.RegistroOcorrenciaEditView.class,
113   - ViewsContrato.NotificacaoContratoEditView.class,
114   - ViewsContrato.ContratoEventoEditView.class,
115   - ViewsContrato.EventoApostilamentoEditView.class,
116   - ViewsContrato.EventoPenalidadeEditView.class,
117   - ViewsContrato.EventoRecebimentoObjetoEditView.class })
  108 + ViewsContrato.ContratoAutoCompleteView.class,
  109 + ViewsContrato.CronogramaExecucaoEditView.class,
  110 + ViewsContrato.OrdemFornecimentoListView.class,
  111 + ViewsContrato.RegistroOcorrenciaEditView.class,
  112 + ViewsContrato.NotificacaoContratoEditView.class,
  113 + ViewsContrato.ContratoEventoEditView.class,
  114 + ViewsContrato.EventoApostilamentoEditView.class,
  115 + ViewsContrato.EventoPenalidadeEditView.class,
  116 + ViewsContrato.EventoRecebimentoObjetoEditView.class })
118 117 private String numeroAnoContrato;
119 118  
120 119 /** Atributo numeroAnoContrato. */
121 120 @Transient
122 121 @JsonView({ ViewsContrato.ContratoEditView.class,
123   - ViewsContrato.OrdemFornecimentoListView.class,
124   - ViewsContrato.ContratoAutoCompleteView.class,
125   - ViewsContrato.CronogramaExecucaoEditView.class,
126   - ViewsContrato.RegistroOcorrenciaEditView.class,
127   - ViewsContrato.NotificacaoContratoEditView.class,
128   - ViewsContrato.EncerramentoContratoListView.class,
129   - ViewsContrato.ContratoEventoEditView.class,
130   - ViewsContrato.EventoApostilamentoEditView.class,
131   - ViewsContrato.EventoPenalidadeEditView.class,
132   - ViewsContrato.EventoRecebimentoObjetoEditView.class })
  122 + ViewsContrato.OrdemFornecimentoListView.class,
  123 + ViewsContrato.ContratoAutoCompleteView.class,
  124 + ViewsContrato.CronogramaExecucaoEditView.class,
  125 + ViewsContrato.RegistroOcorrenciaEditView.class,
  126 + ViewsContrato.NotificacaoContratoEditView.class,
  127 + ViewsContrato.EncerramentoContratoListView.class,
  128 + ViewsContrato.ContratoEventoEditView.class,
  129 + ViewsContrato.EventoApostilamentoEditView.class,
  130 + ViewsContrato.EventoPenalidadeEditView.class,
  131 + ViewsContrato.EventoRecebimentoObjetoEditView.class })
133 132 private String numeroAnoContratoFormatado;
134 133  
135 134 /** Atributo dominioTipoContrato. */
136 135 @ManyToOne(fetch = FetchType.LAZY, optional = false)
137 136 @JsonView({ ViewsContrato.ContratoEditView.class,
138   - ViewsContrato.ContratoAutoCompleteView.class,
139   - ViewsContrato.EncerramentoContratoEditView.class,
140   - ViewsContrato.RegistroOcorrenciaEditView.class })
  137 + ViewsContrato.ContratoAutoCompleteView.class,
  138 + ViewsContrato.EncerramentoContratoEditView.class,
  139 + ViewsContrato.RegistroOcorrenciaEditView.class })
141 140 private Dominio dominioTipoContrato;
142 141  
143 142 /** Atributo dominioTipoAquisicao. */
144 143 @ManyToOne(fetch = FetchType.LAZY, optional = false)
145 144 @JsonView({ ViewsContrato.ContratoEditView.class,
146   - ViewsContrato.ContratoAutoCompleteView.class,
147   - ViewsContrato.OrdemFornecimentoEditView.class,
148   - ViewsContrato.EncerramentoContratoEditView.class })
  145 + ViewsContrato.ContratoAutoCompleteView.class,
  146 + ViewsContrato.OrdemFornecimentoEditView.class,
  147 + ViewsContrato.EncerramentoContratoEditView.class })
149 148 private Dominio dominioTipoAquisicao;
150 149  
151 150 /** Atributo dataCelebracao. */
... ... @@ -154,8 +153,8 @@ public class Contrato extends PersistentObjectAuditOrganizacao {
154 153 @JsonSerialize(using = JsonCalendarSimpleDateSerializer.class)
155 154 @JsonDeserialize(using = JsonCalendarSimpleDateDeserializer.class)
156 155 @JsonView({ ViewsContrato.ContratoEditView.class,
157   - ViewsContrato.ContratoAutoCompleteView.class,
158   - ViewsContrato.EncerramentoContratoEditView.class })
  156 + ViewsContrato.ContratoAutoCompleteView.class,
  157 + ViewsContrato.EncerramentoContratoEditView.class })
159 158 private Calendar dataCelebracao;
160 159  
161 160 /** Atributo dataVigenciaInicial. */
... ... @@ -164,14 +163,14 @@ public class Contrato extends PersistentObjectAuditOrganizacao {
164 163 @JsonSerialize(using = JsonCalendarSimpleDateSerializer.class)
165 164 @JsonDeserialize(using = JsonCalendarSimpleDateDeserializer.class)
166 165 @JsonView({ ViewsContrato.ContratoEditView.class,
167   - ViewsContrato.ContratoAutoCompleteView.class,
168   - ViewsContrato.OrdemFornecimentoEditView.class,
169   - ViewsContrato.CronogramaExecucaoEditView.class,
170   - ViewsContrato.RegistroOcorrenciaEditView.class,
171   - ViewsContrato.NotificacaoContratoEditView.class,
172   - ViewsContrato.EncerramentoContratoEditView.class,
173   - ViewsContrato.EventoApostilamentoEditView.class,
174   - ViewsContrato.EventoRecebimentoObjetoEditView.class })
  166 + ViewsContrato.ContratoAutoCompleteView.class,
  167 + ViewsContrato.OrdemFornecimentoEditView.class,
  168 + ViewsContrato.CronogramaExecucaoEditView.class,
  169 + ViewsContrato.RegistroOcorrenciaEditView.class,
  170 + ViewsContrato.NotificacaoContratoEditView.class,
  171 + ViewsContrato.EncerramentoContratoEditView.class,
  172 + ViewsContrato.EventoApostilamentoEditView.class,
  173 + ViewsContrato.EventoRecebimentoObjetoEditView.class })
175 174 private Calendar dataVigenciaInicial;
176 175  
177 176 /** Atributo dataVigenciaFinal. */
... ... @@ -180,51 +179,51 @@ public class Contrato extends PersistentObjectAuditOrganizacao {
180 179 @JsonSerialize(using = JsonCalendarSimpleDateSerializer.class)
181 180 @JsonDeserialize(using = JsonCalendarSimpleDateDeserializer.class)
182 181 @JsonView({ ViewsContrato.ContratoEditView.class,
183   - ViewsContrato.ContratoAutoCompleteView.class,
184   - ViewsContrato.OrdemFornecimentoEditView.class,
185   - ViewsContrato.CronogramaExecucaoEditView.class,
186   - ViewsContrato.RegistroOcorrenciaEditView.class,
187   - ViewsContrato.NotificacaoContratoEditView.class,
188   - ViewsContrato.EncerramentoContratoEditView.class,
189   - ViewsContrato.EventoApostilamentoEditView.class,
190   - ViewsContrato.EventoRecebimentoObjetoEditView.class })
  182 + ViewsContrato.ContratoAutoCompleteView.class,
  183 + ViewsContrato.OrdemFornecimentoEditView.class,
  184 + ViewsContrato.CronogramaExecucaoEditView.class,
  185 + ViewsContrato.RegistroOcorrenciaEditView.class,
  186 + ViewsContrato.NotificacaoContratoEditView.class,
  187 + ViewsContrato.EncerramentoContratoEditView.class,
  188 + ViewsContrato.EventoApostilamentoEditView.class,
  189 + ViewsContrato.EventoRecebimentoObjetoEditView.class })
191 190 private Calendar dataVigenciaFinal;
192 191  
193 192 @Transient
194 193 @JsonSerialize(using = JsonCalendarSimpleDateSerializer.class)
195 194 @JsonDeserialize(using = JsonCalendarSimpleDateDeserializer.class)
196 195 @JsonView({ ViewsContrato.ContratoEditView.class,
197   - ViewsContrato.ContratoAutoCompleteView.class,
198   - ViewsContrato.OrdemFornecimentoEditView.class,
199   - ViewsContrato.CronogramaExecucaoEditView.class,
200   - ViewsContrato.RegistroOcorrenciaEditView.class,
201   - ViewsContrato.NotificacaoContratoEditView.class,
202   - ViewsContrato.EncerramentoContratoEditView.class,
203   - ViewsContrato.EventoApostilamentoEditView.class,
204   - ViewsContrato.EventoRecebimentoObjetoEditView.class })
  196 + ViewsContrato.ContratoAutoCompleteView.class,
  197 + ViewsContrato.OrdemFornecimentoEditView.class,
  198 + ViewsContrato.CronogramaExecucaoEditView.class,
  199 + ViewsContrato.RegistroOcorrenciaEditView.class,
  200 + ViewsContrato.NotificacaoContratoEditView.class,
  201 + ViewsContrato.EncerramentoContratoEditView.class,
  202 + ViewsContrato.EventoApostilamentoEditView.class,
  203 + ViewsContrato.EventoRecebimentoObjetoEditView.class })
205 204 private Calendar dataUltimaVigenciaFinal;
206 205  
207 206 /** Atributo dominioSituacaoAtual. */
208 207 @ManyToOne(fetch = FetchType.LAZY, optional = false)
209 208 @JsonView({ ViewsContrato.ContratoEditView.class,
210   - ViewsContrato.ContratoAutoCompleteView.class,
211   - ViewsContrato.OrdemFornecimentoEditView.class,
212   - ViewsContrato.RegistroOcorrenciaEditView.class,
213   - ViewsContrato.ContratoEventoEditView.class,
214   - ViewsContrato.EventoApostilamentoEditView.class })
  209 + ViewsContrato.ContratoAutoCompleteView.class,
  210 + ViewsContrato.OrdemFornecimentoEditView.class,
  211 + ViewsContrato.RegistroOcorrenciaEditView.class,
  212 + ViewsContrato.ContratoEventoEditView.class,
  213 + ViewsContrato.EventoApostilamentoEditView.class })
215 214 private Dominio dominioSituacaoAtual;
216 215  
217 216 /** Atributo fornecedor. */
218 217 @ManyToOne(fetch = FetchType.LAZY, optional = false)
219 218 @JsonView({ ViewsContrato.ContratoEditView.class,
220   - ViewsContrato.ContratoAutoCompleteView.class,
221   - ViewsContrato.OrdemFornecimentoEditView.class,
222   - ViewsContrato.CronogramaExecucaoEditView.class,
223   - ViewsContrato.RegistroOcorrenciaEditView.class,
224   - ViewsContrato.NotificacaoContratoEditView.class,
225   - ViewsContrato.EncerramentoContratoListView.class,
226   - ViewsContrato.EventoApostilamentoEditView.class,
227   - ViewsContrato.EventoPenalidadeEditView.class })
  219 + ViewsContrato.ContratoAutoCompleteView.class,
  220 + ViewsContrato.OrdemFornecimentoEditView.class,
  221 + ViewsContrato.CronogramaExecucaoEditView.class,
  222 + ViewsContrato.RegistroOcorrenciaEditView.class,
  223 + ViewsContrato.NotificacaoContratoEditView.class,
  224 + ViewsContrato.EncerramentoContratoListView.class,
  225 + ViewsContrato.EventoApostilamentoEditView.class,
  226 + ViewsContrato.EventoPenalidadeEditView.class })
228 227 private Fornecedor fornecedor;
229 228  
230 229 /** Atributo disponivel. */
... ... @@ -233,9 +232,10 @@ public class Contrato extends PersistentObjectAuditOrganizacao {
233 232  
234 233 /** Atributo objetoContratacao. */
235 234 @JsonView({ ViewsContrato.ContratoEditView.class,
236   - ViewsContrato.ContratoAutoCompleteView.class,
237   - ViewsContrato.EncerramentoContratoEditView.class,
238   - ViewsContrato.EventoApostilamentoEditView.class })
  235 + ViewsContrato.ContratoAutoCompleteView.class,
  236 + ViewsContrato.EncerramentoContratoEditView.class,
  237 + ViewsContrato.EventoApostilamentoEditView.class,
  238 + ViewsContrato.EventoRecebimentoObjetoEditView.class })
239 239 @Column(length = 1024, nullable = false)
240 240 private String objetoContratacao;
241 241  
... ... @@ -243,20 +243,20 @@ public class Contrato extends PersistentObjectAuditOrganizacao {
243 243 @Column(precision = 20, scale = 4)
244 244 @JsonDeserialize(using = MoneyDeserializer.class)
245 245 @JsonView({ ViewsContrato.ContratoEditView.class,
246   - ViewsContrato.ContratoAutoCompleteView.class,
247   - ViewsContrato.CronogramaExecucaoEditView.class,
248   - ViewsContrato.EncerramentoContratoEditView.class,
249   - ViewsContrato.RegistroOcorrenciaEditView.class,
250   - ViewsContrato.ContratoEventoEditView.class })
  246 + ViewsContrato.ContratoAutoCompleteView.class,
  247 + ViewsContrato.CronogramaExecucaoEditView.class,
  248 + ViewsContrato.EncerramentoContratoEditView.class,
  249 + ViewsContrato.RegistroOcorrenciaEditView.class,
  250 + ViewsContrato.ContratoEventoEditView.class })
251 251 private BigDecimal valorContrato;
252 252  
253 253 @Transient
254 254 @JsonView({ ViewsContrato.ContratoEditView.class,
255   - ViewsContrato.ContratoAutoCompleteView.class,
256   - ViewsContrato.CronogramaExecucaoEditView.class,
257   - ViewsContrato.EncerramentoContratoEditView.class,
258   - ViewsContrato.RegistroOcorrenciaEditView.class,
259   - ViewsContrato.ContratoEventoEditView.class })
  255 + ViewsContrato.ContratoAutoCompleteView.class,
  256 + ViewsContrato.CronogramaExecucaoEditView.class,
  257 + ViewsContrato.EncerramentoContratoEditView.class,
  258 + ViewsContrato.RegistroOcorrenciaEditView.class,
  259 + ViewsContrato.ContratoEventoEditView.class })
260 260 private BigDecimal valorTotalContrato;
261 261  
262 262 /** Atributo dominioFormaPagamentoContrato. */
... ... @@ -287,8 +287,8 @@ public class Contrato extends PersistentObjectAuditOrganizacao {
287 287 /** Atributo ctrtEmpenhos. */
288 288 @OneToMany(fetch = FetchType.LAZY, mappedBy = "contratoAditivo", cascade = CascadeType.ALL, targetEntity = EventoAditivo.class)
289 289 @JsonView({ ViewsContrato.EventoAditivoEditView.class,
290   - ViewsContrato.ContratoEventoEditView.class,
291   - ViewsContrato.ContratoEditView.class })
  290 + ViewsContrato.ContratoEventoEditView.class,
  291 + ViewsContrato.ContratoEditView.class })
292 292 private Collection<EventoAditivo> aditivos;
293 293  
294 294 /** Atributo valorGarantia. */
... ... @@ -321,8 +321,7 @@ public class Contrato extends PersistentObjectAuditOrganizacao {
321 321  
322 322 /** Atributo ctrtEmpenhos. */
323 323 @OneToMany(fetch = FetchType.LAZY, mappedBy = "contrato", cascade = CascadeType.ALL)
324   - @JsonView({ ViewsContrato.ContratoEditView.class,
325   - ViewsContrato.CronogramaExecucaoEditView.class })
  324 + @JsonView({ ViewsContrato.ContratoEditView.class, ViewsContrato.CronogramaExecucaoEditView.class })
326 325 private Collection<ContratoItem> ctrtItens;
327 326  
328 327 /** Atributo garantias. ctrtEnvolvidos */
... ... @@ -330,10 +329,6 @@ public class Contrato extends PersistentObjectAuditOrganizacao {
330 329 @JsonView({ ViewsContrato.ContratoEditView.class })
331 330 private Collection<ContratoEnvolvido> ctrtEnvolvidos;
332 331  
333   - @OneToMany(fetch = FetchType.LAZY, mappedBy = "contrato", cascade = CascadeType.ALL)
334   - @JsonView({ ViewsContrato.ContratoEditView.class })
335   - private Collection<ContratoEnvolvidoJustificativa> justificativas;
336   -
337 332 /** Atributo dominioModalidadeGarantia. */
338 333 @ManyToOne(fetch = FetchType.LAZY)
339 334 @JsonView({ ViewsContrato.ContratoEditView.class })
... ... @@ -593,6 +588,7 @@ public class Contrato extends PersistentObjectAuditOrganizacao {
593 588 * @return <code>Calendar</code>
594 589 */
595 590 public Calendar getDataUltimaVigenciaFinal() {
  591 +
596 592 if (this.aditivos == null || this.aditivos.isEmpty()) {
597 593 return this.dataVigenciaFinal;
598 594 } else {
... ... @@ -724,6 +720,7 @@ public class Contrato extends PersistentObjectAuditOrganizacao {
724 720 * @return <code>BigDecimal</code>
725 721 */
726 722 public BigDecimal getValorTotalContrato() {
  723 +
727 724 if (this.aditivos == null || this.aditivos.isEmpty()) {
728 725 return this.valorContrato;
729 726 } else {
... ... @@ -1005,6 +1002,7 @@ public class Contrato extends PersistentObjectAuditOrganizacao {
1005 1002 * @return the ordensFornecimento
1006 1003 */
1007 1004 public Collection<OrdemFornecimento> getOrdensFornecimento() {
  1005 +
1008 1006 return ordensFornecimento;
1009 1007 }
1010 1008  
... ... @@ -1012,18 +1010,9 @@ public class Contrato extends PersistentObjectAuditOrganizacao {
1012 1010 * @param ordensFornecimento
1013 1011 * the ordensFornecimento to set
1014 1012 */
1015   - public void setOrdensFornecimento(
1016   - Collection<OrdemFornecimento> ordensFornecimento) {
1017   - this.ordensFornecimento = ordensFornecimento;
1018   - }
  1013 + public void setOrdensFornecimento(Collection<OrdemFornecimento> ordensFornecimento) {
1019 1014  
1020   - public Collection<ContratoEnvolvidoJustificativa> getJustificativas() {
1021   - return justificativas;
1022   - }
1023   -
1024   - public void setJustificativas(
1025   - Collection<ContratoEnvolvidoJustificativa> justificativas) {
1026   - this.justificativas = justificativas;
  1015 + this.ordensFornecimento = ordensFornecimento;
1027 1016 }
1028 1017  
1029 1018 /**
... ...
cit-contratos-api/src/main/java/br/com/centralit/api/model/ContratoEnvolvido.java
1 1 package br.com.centralit.api.model;
2 2  
  3 +import java.util.Collection;
  4 +
  5 +import javax.persistence.CascadeType;
3 6 import javax.persistence.Entity;
4 7 import javax.persistence.FetchType;
5 8 import javax.persistence.GeneratedValue;
... ... @@ -7,29 +10,41 @@ import javax.persistence.GenerationType;
7 10 import javax.persistence.Id;
8 11 import javax.persistence.JoinColumn;
9 12 import javax.persistence.ManyToOne;
  13 +import javax.persistence.OneToMany;
10 14 import javax.persistence.Table;
11 15  
  16 +import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
  17 +import com.fasterxml.jackson.annotation.JsonView;
  18 +
12 19 import br.com.centralit.api.viewHelper.ViewsContrato;
13 20 import br.com.centralit.framework.json.Views;
14 21 import br.com.centralit.framework.model.Dominio;
15 22 import br.com.centralit.framework.model.arquitetura.PersistentObjectAudit;
16 23  
17   -import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
18   -import com.fasterxml.jackson.annotation.JsonView;
19   -
20   -
21 24 /**
22   - * <p><img src="http://centralit.com.br/images/logo_central.png"></p>
  25 + * <p>
  26 + * <img src="http://centralit.com.br/images/logo_central.png">
  27 + * </p>
23 28 *
24   - * <p><b>Company: </b> Central IT - Governança Corporativa - </p>
  29 + * <p>
  30 + * <b>Company: </b> Central IT - Governança Corporativa -
  31 + * </p>
25 32 *
26   - * <p><b>Title: </b></p>
  33 + * <p>
  34 + * <b>Title: </b>
  35 + * </p>
27 36 *
28   - * <p><b>Description: </b></p>
  37 + * <p>
  38 + * <b>Description: </b>
  39 + * </p>
29 40 *
30   - * <p><b>Iniciativa(s):</b> <a href="LINK_PORTAL">NUMERO_INICIATIVA</a></p>
  41 + * <p>
  42 + * <b>Iniciativa(s):</b> <a href="LINK_PORTAL">NUMERO_INICIATIVA</a>
  43 + * </p>
31 44 *
32   - * <p><b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a></p>
  45 + * <p>
  46 + * <b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a>
  47 + * </p>
33 48 *
34 49 * @since 19/01/2016 - 16:47:54
35 50 *
... ... @@ -39,18 +54,18 @@ import com.fasterxml.jackson.annotation.JsonView;
39 54 *
40 55 */
41 56 @Entity
42   -@Table(name="cnt_cn_envolvido")
43   -@JsonIgnoreProperties({ "$checked" })
  57 +@Table(name = "cnt_cn_envolvido")
  58 +@JsonIgnoreProperties({ "$checked", "justificativasAnterioresLength" })
44 59 public class ContratoEnvolvido extends PersistentObjectAudit {
45 60  
46   - /** Atributo serialVersionUID. */
47   - private static final long serialVersionUID = 1L;
  61 + /** Atributo serialVersionUID. */
  62 + private static final long serialVersionUID = 1L;
48 63  
49   - /** Atributo id. */
50   - @Id
51   - @GeneratedValue(strategy = GenerationType.AUTO)
52   - @JsonView({ Views.GenericView.class })
53   - private Long id;
  64 + /** Atributo id. */
  65 + @Id
  66 + @GeneratedValue(strategy = GenerationType.AUTO)
  67 + @JsonView({ Views.GenericView.class })
  68 + private Long id;
54 69  
55 70 /** Atributo contrato. */
56 71 @ManyToOne(fetch = FetchType.LAZY, optional = true)
... ... @@ -61,15 +76,19 @@ public class ContratoEnvolvido extends PersistentObjectAudit {
61 76 private Contrato contratoInativo;
62 77  
63 78 /** Atributo colaborador. */
64   - @ManyToOne(fetch = FetchType.LAZY, optional=false)
65   - @JsonView({ ViewsContrato.ContratoEditView.class, Views.ContratoView.class })
  79 + @ManyToOne(fetch = FetchType.LAZY, optional = false)
  80 + @JsonView({ ViewsContrato.ContratoEditView.class, Views.ContratoView.class })
66 81 private Colaborador envolvido;
67 82  
68 83 /** Atributo dominioFormaPagamentoContrato. */
69   - @ManyToOne(fetch = FetchType.LAZY, optional=false)
70   - @JoinColumn(name = "papelenvolvidocontrato_id")
71   - @JsonView({ ViewsContrato.ContratoEditView.class })
72   - private Dominio dominioPapelEnvolvidoContrato;
  84 + @ManyToOne(fetch = FetchType.LAZY, optional = false)
  85 + @JoinColumn(name = "papelenvolvidocontrato_id")
  86 + @JsonView({ ViewsContrato.ContratoEditView.class })
  87 + private Dominio dominioPapelEnvolvidoContrato;
  88 +
  89 + @OneToMany(fetch = FetchType.LAZY, mappedBy = "contratoEnvolvido", cascade = CascadeType.ALL)
  90 + @JsonView({ ViewsContrato.ContratoEditView.class })
  91 + private Collection<ContratoEnvolvidoJustificativa> justificativas;
73 92  
74 93 /**
75 94 * Retorna o valor do atributo <code>id</code>
... ... @@ -81,7 +100,6 @@ public class ContratoEnvolvido extends PersistentObjectAudit {
81 100 return id;
82 101 }
83 102  
84   -
85 103 /**
86 104 * Define o valor do atributo <code>id</code>.
87 105 *
... ... @@ -92,7 +110,6 @@ public class ContratoEnvolvido extends PersistentObjectAudit {
92 110 this.id = id;
93 111 }
94 112  
95   -
96 113 /**
97 114 * Retorna o valor do atributo <code>contrato</code>
98 115 *
... ... @@ -103,7 +120,6 @@ public class ContratoEnvolvido extends PersistentObjectAudit {
103 120 return contrato;
104 121 }
105 122  
106   -
107 123 /**
108 124 * Define o valor do atributo <code>contrato</code>.
109 125 *
... ... @@ -114,7 +130,6 @@ public class ContratoEnvolvido extends PersistentObjectAudit {
114 130 this.contrato = contrato;
115 131 }
116 132  
117   -
118 133 /**
119 134 * Retorna o valor do atributo <code>contratoInativo</code>
120 135 *
... ... @@ -125,7 +140,6 @@ public class ContratoEnvolvido extends PersistentObjectAudit {
125 140 return contratoInativo;
126 141 }
127 142  
128   -
129 143 /**
130 144 * Define o valor do atributo <code>contratoInativo</code>.
131 145 *
... ... @@ -136,25 +150,34 @@ public class ContratoEnvolvido extends PersistentObjectAudit {
136 150 this.contratoInativo = contratoInativo;
137 151 }
138 152  
139   -
140 153 public Colaborador getEnvolvido() {
  154 +
141 155 return envolvido;
142 156 }
143 157  
144   -
145 158 public void setEnvolvido(Colaborador envolvido) {
  159 +
146 160 this.envolvido = envolvido;
147 161 }
148 162  
149   -
150 163 public Dominio getDominioPapelEnvolvidoContrato() {
  164 +
151 165 return dominioPapelEnvolvidoContrato;
152 166 }
153 167  
  168 + public void setDominioPapelEnvolvidoContrato(Dominio dominioPapelEnvolvidoContrato) {
154 169  
155   - public void setDominioPapelEnvolvidoContrato(
156   - Dominio dominioPapelEnvolvidoContrato) {
157 170 this.dominioPapelEnvolvidoContrato = dominioPapelEnvolvidoContrato;
158 171 }
159 172  
  173 + public Collection<ContratoEnvolvidoJustificativa> getJustificativas() {
  174 +
  175 + return justificativas;
  176 + }
  177 +
  178 + public void setJustificativas(Collection<ContratoEnvolvidoJustificativa> justificativas) {
  179 +
  180 + this.justificativas = justificativas;
  181 + }
  182 +
160 183 }
... ...
cit-contratos-api/src/main/java/br/com/centralit/api/model/ContratoEnvolvidoJustificativa.java
... ... @@ -52,7 +52,7 @@ public class ContratoEnvolvidoJustificativa extends PersistentObjectAudit {
52 52 private String descricao;
53 53  
54 54 @ManyToOne(fetch = FetchType.LAZY, optional = true)
55   - private Contrato contrato;
  55 + private ContratoEnvolvido contratoEnvolvido;
56 56  
57 57 public Long getId() {
58 58  
... ... @@ -67,17 +67,21 @@ public class ContratoEnvolvidoJustificativa extends PersistentObjectAudit {
67 67 public String getDescricao() {
68 68 return descricao;
69 69 }
70   -
  70 +
71 71 public void setDescricao(String descricao) {
72 72 this.descricao = descricao;
73 73 }
74   -
75   - public Contrato getContrato() {
76   - return contrato;
  74 +
  75 +
  76 + public ContratoEnvolvido getContratoEnvolvido() {
  77 +
  78 + return contratoEnvolvido;
77 79 }
78 80  
79   - public void setContrato(Contrato contrato) {
80   - this.contrato = contrato;
  81 +
  82 + public void setContratoEnvolvido(ContratoEnvolvido contratoEnvolvido) {
  83 +
  84 + this.contratoEnvolvido = contratoEnvolvido;
81 85 }
82 86  
83 87 }
... ...
cit-contratos-api/src/main/java/br/com/centralit/api/model/EventoRecebimentoObjeto.java
... ... @@ -97,11 +97,6 @@ public class EventoRecebimentoObjeto extends ContratoEvento {
97 97 @JsonView({ ViewsContrato.EventoRecebimentoObjetoEditView.class })
98 98 private Dominio tipoAvaliacaoAdesao;
99 99  
100   - /** Atributo nomeObjeto. */
101   - @Column(length = 200, nullable = false)
102   - @JsonView({ ViewsContrato.EventoRecebimentoObjetoEditView.class })
103   - private String nomeObjeto;
104   -
105 100 /** Atributo justificativa. */
106 101 @Column(length = 2000, nullable = true)
107 102 @JsonView({ ViewsContrato.EventoRecebimentoObjetoEditView.class })
... ... @@ -177,27 +172,6 @@ public class EventoRecebimentoObjeto extends ContratoEvento {
177 172 this.tipoStatus = tipoStatus;
178 173 }
179 174  
180   -
181   - /**
182   - * Retorna o valor do atributo <code>nomeObjeto</code>
183   - *
184   - * @return <code>String</code>
185   - */
186   - public String getNomeObjeto() {
187   -
188   - return nomeObjeto;
189   - }
190   -
191   - /**
192   - * Define o valor do atributo <code>nomeObjeto</code>.
193   - *
194   - * @param nomeObjeto
195   - */
196   - public void setNomeObjeto(String nomeObjeto) {
197   -
198   - this.nomeObjeto = nomeObjeto;
199   - }
200   -
201 175 public Dominio getTipoAvaliacaoPrazo() {
202 176  
203 177 return tipoAvaliacaoPrazo;
... ...
cit-contratos-api/src/main/java/br/com/centralit/api/model/RegistroSequencial.java
... ... @@ -39,7 +39,7 @@ public class RegistroSequencial {
39 39 @Transient
40 40 @JsonView({ ViewsContrato.EventoPenalidadeEditView.class, Views.GenericView.class })
41 41 private String sequencialAnoFormatado;
42   -
  42 +
43 43 public RegistroSequencial() {};
44 44  
45 45 public RegistroSequencial( Long numeroSequencial, String sequencialAno ) {
... ... @@ -70,12 +70,12 @@ public class RegistroSequencial {
70 70  
71 71 public String getSequencialAnoFormatado() {
72 72 if (StringUtils.isNotEmpty(sequencialAno)) {
73   - sequencialAnoFormatado = StringUtils.leftPad(sequencialAno, 7, '0');
74   - sequencialAnoFormatado = sequencialAnoFormatado.substring(0, 3).concat("/").concat(sequencialAnoFormatado.substring(3));
  73 + sequencialAnoFormatado = StringUtils.leftPad(sequencialAno, 9, '0');
  74 + sequencialAnoFormatado = sequencialAnoFormatado.substring(0, 5).concat("/").concat(sequencialAnoFormatado.substring(5));
75 75 }
76 76 return sequencialAnoFormatado;
77 77 }
78   -
  78 +
79 79 public void setSequencialAnoFormatado(String sequencialAnoFormatado) {
80 80 this.sequencialAnoFormatado = sequencialAnoFormatado;
81 81 }
... ...
cit-contratos-api/src/main/java/br/com/centralit/api/service/EventoAditivoService.java
1 1 package br.com.centralit.api.service;
2 2  
3   -import java.io.InputStream;
4 3 import java.sql.Connection;
5 4 import java.util.Collection;
6 5  
... ... @@ -28,4 +27,8 @@ public interface EventoAditivoService extends GenericService&lt;EventoAditivo, Long
28 27 Collection<EventoAditivo> findAllByContrato(Long contratoId);
29 28  
30 29 JasperPrint getJasperPrintAditivo(Long idAditivo, Connection conn, Usuario user, String titulo) throws JRException;
  30 +
  31 + Boolean permiteExclusaoAditivo(Long idAditivo);
  32 +
  33 + Boolean existeAditivoPrazoPosterior(Long idAditivo);
31 34 }
... ...
cit-contratos-api/src/main/java/br/com/centralit/api/service/impl/ContratoServiceImpl.java
... ... @@ -8,6 +8,7 @@ import java.util.Currency;
8 8 import java.util.Iterator;
9 9 import java.util.List;
10 10  
  11 +import org.apache.commons.collections.CollectionUtils;
11 12 import org.springframework.beans.factory.annotation.Autowired;
12 13 import org.springframework.beans.factory.annotation.Qualifier;
13 14 import org.springframework.security.core.context.SecurityContextHolder;
... ... @@ -38,7 +39,6 @@ import br.com.centralit.api.service.EstudoTecnicoService;
38 39 import br.com.centralit.api.service.EventoAditivoService;
39 40 import br.com.centralit.api.service.FornecedorService;
40 41 import br.com.centralit.api.service.InternacionalizacaoService;
41   -import br.com.centralit.api.service.OrdemFornecimentoService;
42 42 import br.com.centralit.api.service.ParceiroService;
43 43 import br.com.centralit.api.service.UsuarioService;
44 44 import br.com.centralit.framework.exception.CodigoErro;
... ... @@ -115,9 +115,6 @@ public class ContratoServiceImpl extends GenericServiceImpl&lt;Contrato, Long&gt; impl
115 115 @Autowired
116 116 private EventoAditivoService aditivoService;
117 117  
118   - @Autowired
119   - private OrdemFornecimentoService ordemFornecimentoService;
120   -
121 118 /**
122 119 * Responsável pela criação de novas instâncias desta classe.
123 120 * @param contratoDao
... ... @@ -277,25 +274,19 @@ public class ContratoServiceImpl extends GenericServiceImpl&lt;Contrato, Long&gt; impl
277 274 }
278 275 }
279 276  
280   - // cria vinculo do contrato com as ctrtItens
281   - if (!UtilColecao.isVazio(contrato.getCtrtEnvolvidos())){
282   -
  277 + // cria vinculo do contrato com os envolvidos
  278 + if (CollectionUtils.isNotEmpty(contrato.getCtrtEnvolvidos())){
283 279 for (ContratoEnvolvido contratoEnvolvido : contrato.getCtrtEnvolvidos()) {
284   -
285 280 contratoEnvolvido.setEnvolvido(this.colaboradorService.find(contratoEnvolvido.getEnvolvido().getId()));
286   -
287 281 contratoEnvolvido.setContrato(contrato);
  282 + if (CollectionUtils.isNotEmpty(contratoEnvolvido.getJustificativas())){
  283 + for(ContratoEnvolvidoJustificativa justificativa : contratoEnvolvido.getJustificativas()){
  284 + justificativa.setContratoEnvolvido(contratoEnvolvido);
  285 + justificativa.setAutor(this.usuarioService.find(justificativa.getAutor().getId()));
  286 + }
  287 + }
288 288 }
289   - }
290   -
291   - // cria vinculo do contrato com as justificativas de alterções dos envolvidos
292   - if (!UtilColecao.isVazio(contrato.getJustificativas())){
293   -
294   - for (ContratoEnvolvidoJustificativa justificativa : contrato.getJustificativas()) {
295   -
296   - justificativa.setContrato(contrato);
297 289 }
298   - }
299 290  
300 291 if (!UtilColecao.isVazio(contrato.getAditivos())){
301 292 for (EventoAditivo aditivo : contrato.getAditivos()) {
... ...
cit-contratos-api/src/main/java/br/com/centralit/api/service/impl/EventoAditivoServiceImpl.java
... ... @@ -6,6 +6,7 @@ import java.text.DecimalFormat;
6 6 import java.text.SimpleDateFormat;
7 7 import java.util.Calendar;
8 8 import java.util.Collection;
  9 +import java.util.GregorianCalendar;
9 10 import java.util.HashMap;
10 11 import java.util.Map;
11 12  
... ... @@ -40,6 +41,7 @@ import br.com.centralit.framework.model.Usuario;
40 41 import br.com.centralit.framework.service.arquitetura.GenericServiceImpl;
41 42 import br.com.centralit.framework.util.Util;
42 43 import br.com.centralit.framework.util.UtilDataBase;
  44 +import br.com.centralit.framework.util.UtilDate;
43 45 import br.com.centralit.framework.util.UtilObjeto;
44 46  
45 47 /**
... ... @@ -257,4 +259,32 @@ public class EventoAditivoServiceImpl extends GenericServiceImpl&lt;EventoAditivo,
257 259 }
258 260 }
259 261  
  262 + @Override
  263 + public Boolean permiteExclusaoAditivo(Long idAditivo) {
  264 + EventoAditivo aditivo = this.find(idAditivo);
  265 +
  266 + if(aditivo.getDataInicio().before(GregorianCalendar.getInstance()) ){
  267 + return false;
  268 + }
  269 +
  270 + if(UtilDate.isMesmaData(aditivo.getDataInicio(), GregorianCalendar.getInstance())){
  271 + return false;
  272 + }
  273 +
  274 + if(this.eventoAditivoDao.existeAditivoPosterior(aditivo.getDataInicio(), aditivo.getContrato().getId())){
  275 + return false;
  276 + }
  277 +
  278 + return true;
  279 + }
  280 +
  281 + @Override
  282 + public Boolean existeAditivoPrazoPosterior(Long idAditivo) {
  283 + EventoAditivo aditivo = this.find(idAditivo);
  284 + if(this.eventoAditivoDao.existeAditivoPosterior(aditivo.getDataInicio(), aditivo.getContrato().getId())){
  285 + return true;
  286 + }
  287 + return false;
  288 + }
  289 +
260 290 }
... ...
cit-contratos-api/src/main/java/br/com/centralit/api/service/impl/InicializarContratosServiceImpl.java
... ... @@ -60,11 +60,11 @@ public class InicializarContratosServiceImpl extends UtilStartup {
60 60 this.menuContratos = this.menuService.mergeIfNotExist(this.menuContratos);
61 61  
62 62 // Submenu Demandas
63   - criarSubMenuDemandas(moduloSelecionado);
  63 +// criarSubMenuDemandas(moduloSelecionado);
64 64 // Submenu Planejamento da contratação
65 65 criarSubMenuPlanejamentoContratacao(moduloSelecionado);
66 66 // Submenu Seleção de fornecedor
67   - criarSubMenuSelecaoFornecedor(moduloSelecionado);
  67 +// criarSubMenuSelecaoFornecedor(moduloSelecionado);
68 68 // Submenu Gestão e fiscalização de contrato
69 69 criarSubMenuGestaoFiscalizacaoContrato(moduloSelecionado);
70 70 // Submenu Controles
... ... @@ -98,7 +98,7 @@ public class InicializarContratosServiceImpl extends UtilStartup {
98 98 // Menu Termo de referência / Projeto básico
99 99 criarOpcaoTermoReferenciaProjetoBasico(modulo, menuPlanejamentoContrat);
100 100 // Menu Gestão de riscos
101   - criarOpcaoGestaoRiscos(modulo, menuPlanejamentoContrat);
  101 +// criarOpcaoGestaoRiscos(modulo, menuPlanejamentoContrat);
102 102 }
103 103  
104 104 private void criarSubMenuSelecaoFornecedor(Modulo modulo) {
... ... @@ -136,17 +136,17 @@ public class InicializarContratosServiceImpl extends UtilStartup {
136 136 menuControles = this.menuService.mergeIfNotExist(menuControles);
137 137  
138 138 // Menu Controle de registro de preços
139   - criarOpcaoControleRegistroPrecos(modulo, menuControles);
  139 +// criarOpcaoControleRegistroPrecos(modulo, menuControles);
140 140 // Menu Checklist de verificação do planejamento da contratação
141   - criarOpcaoChecklistVerificacaoPlanejamentoContratacao(modulo, menuControles);
  141 +// criarOpcaoChecklistVerificacaoPlanejamentoContratacao(modulo, menuControles);
142 142 // Menu Questionarios
143 143 criarOpcaoQuestionario(modulo, menuControles);
144 144 // Menu Alertas
145   - criarOpcaoAlertas(modulo, menuControles);
  145 +// criarOpcaoAlertas(modulo, menuControles);
146 146 // Menu Indicadores
147   - criarOpcaoIndicacores(modulo, menuControles);
  147 +// criarOpcaoIndicacores(modulo, menuControles);
148 148 // Menu Definições de contratos
149   - criarOpcaoDefinicoesContratos(modulo, menuControles);
  149 +// criarOpcaoDefinicoesContratos(modulo, menuControles);
150 150 }
151 151  
152 152 private void criarSubMenuTermosRelatorios(Modulo modulo) {
... ... @@ -287,23 +287,8 @@ public class InicializarContratosServiceImpl extends UtilStartup {
287 287 paginaGestaoRisco = this.paginaService.saveIfNotExist(paginaGestaoRisco);
288 288 Menu menuGestaoRisco = new Menu("Gestão de riscos", paginaGestaoRisco, menuPlanejamentoContrat, null, 5, null, null, null, null, modulo, "GESTAO_RISCOS");
289 289  
290   - List<MenuFile> filesMenuFileTermo = new ArrayList<MenuFile>();
291   - filesMenuFileTermo.add(new MenuFile(CIT_CONTRATOS_WEB_ANGULAR_CUSTOM + "controller/TermoReferenciaListController.js", this.dominioJS, menuGestaoRisco));
292   - filesMenuFileTermo.add(new MenuFile(CIT_CONTRATOS_WEB_ANGULAR_CUSTOM + "controller/TermoReferenciaListController.min.js", this.dominioJS, menuGestaoRisco));
293   - filesMenuFileTermo.add(new MenuFile(CIT_CONTRATOS_WEB_ANGULAR_CUSTOM + "controller/TermoReferenciaController.js", this.dominioJS, menuGestaoRisco));
294   - filesMenuFileTermo.add(new MenuFile(CIT_CONTRATOS_WEB_ANGULAR_CUSTOM + "controller/TermoReferenciaController.min.js", this.dominioJS, menuGestaoRisco));
295   - filesMenuFileTermo.add(new MenuFile(CIT_CONTRATOS_WEB_ANGULAR_CUSTOM + "repository/TermoReferenciaRepository.js", this.dominioJS, menuGestaoRisco));
296   - filesMenuFileTermo.add(new MenuFile(CIT_CONTRATOS_WEB_ANGULAR_CUSTOM + "repository/TermoReferenciaRepository.min.js", this.dominioJS, menuGestaoRisco));
297   -
298   - filesMenuFileTermo.add(new MenuFile(CIT_CONTRATOS_WEB_ANGULAR_CUSTOM + "repository/TermoReferenciaSancaoRepository.js", this.dominioJS, menuGestaoRisco));
299   - filesMenuFileTermo.add(new MenuFile(CIT_CONTRATOS_WEB_ANGULAR_CUSTOM + "repository/TermoReferenciaSancaoRepository.min.js", this.dominioJS, menuGestaoRisco));
300   -
301   - filesMenuFileTermo.add(new MenuFile(CIT_CONTRATOS_WEB_ANGULAR_CUSTOM + "repository/TermoReferenciaPenalidadeRepository.js", this.dominioJS, menuGestaoRisco));
302   - filesMenuFileTermo.add(new MenuFile(CIT_CONTRATOS_WEB_ANGULAR_CUSTOM + "repository/TermoReferenciaPenalidadeRepository.min.js", this.dominioJS, menuGestaoRisco));
303   -
304   - filesMenuFileTermo.add(new MenuFile(CIT_CONTRATOS_WEB_ANGULAR_CUSTOM + "repository/TermoReferenciaDetalhamentoSolucaoRepository.js", this.dominioJS, menuGestaoRisco));
305   - filesMenuFileTermo.add(new MenuFile(CIT_CONTRATOS_WEB_ANGULAR_CUSTOM + "repository/TermoReferenciaDetalhamentoSolucaoRepository.min.js", this.dominioJS, menuGestaoRisco));
306   - menuGestaoRisco.setIncludes(filesMenuFileTermo);
  290 + List<MenuFile> filesMenuFileGestao = new ArrayList<MenuFile>();
  291 + menuGestaoRisco.setIncludes(filesMenuFileGestao);
307 292  
308 293 this.menuService.mergeIfNotExist(menuGestaoRisco);
309 294 }
... ...
cit-contratos-api/src/main/java/br/com/centralit/api/service/validation/EventoAditivoValidator.java
1 1 package br.com.centralit.api.service.validation;
2 2  
3 3 import java.math.BigDecimal;
  4 +import java.sql.Timestamp;
4 5 import java.util.Calendar;
5 6  
6 7 import org.springframework.stereotype.Component;
... ... @@ -11,11 +12,12 @@ import org.springframework.validation.Validator;
11 12 import br.com.centralit.api.model.DominioContrato;
12 13 import br.com.centralit.api.model.EventoAditivo;
13 14 import br.com.centralit.framework.exception.CodigoErro;
  15 +import br.com.centralit.framework.util.UtilDate;
14 16 import br.com.centralit.framework.util.UtilObjeto;
15 17  
16 18  
17 19 /**
18   - *
  20 + *
19 21 * <p><img src="http://centralit.com.br/images/logo_central.png"></p>
20 22 *
21 23 * <p><b>Company: </b> Central IT - Governança Corporativa - </p>
... ... @@ -23,11 +25,11 @@ import br.com.centralit.framework.util.UtilObjeto;
23 25 * <p><b>Title: </b></p>
24 26 *
25 27 * <p><b>Description: </b></p>
26   - *
  28 + *
27 29 * <p><b>Iniciativa(s):</b> <a href="LINK_PORTAL">NUMERO_INICIATIVA</a></p>
28 30 *
29   - * <p><b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a></p>
30   - *
  31 + * <p><b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a></p>
  32 + *
31 33 * @since 16/03/2016 - 11:10:02
32 34 *
33 35 * @version 1.0.0
... ... @@ -56,98 +58,115 @@ public class EventoAditivoValidator implements Validator{
56 58  
57 59 EventoAditivo aditivo = (EventoAditivo) target;
58 60 Calendar dataFinal = null;
59   -
60   - ValidationUtils.rejectIfEmpty(errors, "contrato", CodigoErro.VALIDACAO_CAMPOS_OBRIGATORIOS.getValue().toString(), "LABEL.CONTRATO");
61   -
62   - if (UtilObjeto.isReferencia(aditivo.getContrato())) {
  61 + if(UtilObjeto.isReferencia(aditivo.getContrato())){
63 62 dataFinal = aditivo.getContrato().getDataVigenciaFinal();
64   -
  63 + }
  64 + ValidationUtils.rejectIfEmpty(errors, "contrato", CodigoErro.VALIDACAO_CAMPOS_OBRIGATORIOS.getValue().toString(), "LABEL.CONTRATO");
  65 +
  66 + if (UtilObjeto.isReferencia(aditivo.getContrato()) && !UtilObjeto.isReferencia(aditivo.getId())) {
  67 + dataFinal = aditivo.getContrato().getDataUltimaVigenciaFinal();
  68 + }else{
65 69 if (UtilObjeto.isReferencia(aditivo.getContrato().getAditivos())) {
66 70 for (EventoAditivo adContrato : aditivo.getContrato().getAditivos()) {
67   - if (((!UtilObjeto.isReferencia(aditivo.getId())) || (UtilObjeto.isReferencia(aditivo.getId()) && !adContrato.getId().equals(aditivo.getId()))) && adContrato.getAditivoDePrazo() && adContrato.getDataFim().after(dataFinal)) {
  71 + if( adContrato.getAditivoDePrazo() && adContrato.getDataFim().before(aditivo.getDataInicio()) && adContrato.getDataFim().after(dataFinal)){
68 72 dataFinal = adContrato.getDataFim();
69 73 }
70 74 }
71 75 }
72 76 }
73 77  
  78 + if(aditivo.getDataEmissao().after(aditivo.getDataInicio())){
  79 + errors.rejectValue("dataEmissao", CodigoErro.VALIDACAO_CAMPOS.getValue().toString(), "CONTRATOS.MSG.ADITIVO_DATA_EMISSAO_MAIOR_DATA_INICIO");
  80 + }
  81 +
74 82 ValidationUtils.rejectIfEmpty(errors, "registroSequencial", CodigoErro.VALIDACAO_CAMPOS_OBRIGATORIOS.getValue().toString(), "CONTRATOS.LABEL.NUM_ADITIVO");
75   -
  83 +
76 84 ValidationUtils.rejectIfEmpty(errors, "dataEmissao", CodigoErro.VALIDACAO_CAMPOS_OBRIGATORIOS.getValue().toString(), "LABEL.DATA_EMISSAO_OCORRENCIA");
77   -
  85 +
78 86 if (UtilObjeto.isReferencia(aditivo.getDataEmissao()) && UtilObjeto.isReferencia(aditivo.getContrato()) &&
79 87 (aditivo.getDataEmissao().before(aditivo.getContrato().getDataVigenciaInicial()) || aditivo.getDataEmissao().after(dataFinal))) {
80 88 errors.rejectValue("dataEmissao", CodigoErro.VALIDACAO_CAMPOS.getValue().toString(), "CONTRATOS.MSG.DATA_EMISSAO_DENTRO_REFERENCIA");
81 89 }
82   -
  90 +
83 91 ValidationUtils.rejectIfEmpty(errors, "tipoAlteracao", CodigoErro.VALIDACAO_CAMPOS_OBRIGATORIOS.getValue().toString(), "LABEL.TIPO_ALTERACAO");
84   -
  92 +
85 93 if (!(aditivo.getAditivoDeValor() || aditivo.getAditivoDePrazo() || aditivo.getAditivoDeClausula())) {
86 94 errors.rejectValue("aditivoDePrazo", CodigoErro.VALIDACAO_CAMPOS_OBRIGATORIOS.getValue().toString(), "CONTRATOS.LABEL.TIPO_ADITIVO");
87 95 errors.rejectValue("aditivoDeValor", CodigoErro.VALIDACAO_CAMPOS_OBRIGATORIOS.getValue().toString(), "CONTRATOS.LABEL.TIPO_ADITIVO");
88 96 errors.rejectValue("aditivoDeClausula", CodigoErro.VALIDACAO_CAMPOS_OBRIGATORIOS.getValue().toString(), "CONTRATOS.LABEL.TIPO_ADITIVO");
89 97 }
90   -
  98 +
91 99 if (aditivo.getAditivoDePrazo()) {
92 100 if (UtilObjeto.isReferencia(aditivo.getDataEmissao())) {
93   - Calendar ultimaDataEmissao = null;
  101 + Calendar ultimaDataEmissaoAditivoAnterior = null;
  102 + Calendar ultimaDataEmissaoAditivoPosterior = null;
94 103 int qntAditivoPrazo = 0;
95 104 if (UtilObjeto.isReferencia(aditivo.getContrato().getAditivos())) {
96 105 for (EventoAditivo adContrato : aditivo.getContrato().getAditivos()) {
97 106 if (((!UtilObjeto.isReferencia(aditivo.getId())) || (UtilObjeto.isReferencia(aditivo.getId()) && !adContrato.getId().equals(aditivo.getId()))) && adContrato.getAditivoDePrazo()) {
98 107 qntAditivoPrazo++;
99   - if (!UtilObjeto.isReferencia(ultimaDataEmissao)) {
100   - ultimaDataEmissao = adContrato.getDataEmissao();
101   - } else {
102   - if (adContrato.getDataEmissao().after(ultimaDataEmissao)) {
103   - ultimaDataEmissao = adContrato.getDataEmissao();
104   - }
  108 + if (adContrato.getDataEmissao().before(aditivo.getDataEmissao())) {
  109 + ultimaDataEmissaoAditivoAnterior = adContrato.getDataEmissao();
  110 + }
  111 + if(adContrato.getDataEmissao().after(aditivo.getDataEmissao())){
  112 + ultimaDataEmissaoAditivoPosterior = adContrato.getDataEmissao();
105 113 }
106 114 }
107 115 }
108 116 }
109   -
  117 +
110 118 if (qntAditivoPrazo >= MAXIMO_ADITIVO_PRAZO) {
111 119 errors.rejectValue("aditivoDePrazo", CodigoErro.VALIDACAO_CAMPOS.getValue().toString(), "CONTRATOS.MSG.MAXIMO_ADITIVO_PRAZO");
112 120 }
113   -
114   - if (UtilObjeto.isReferencia(ultimaDataEmissao)) {
115   - if (ultimaDataEmissao.get(Calendar.YEAR) < aditivo.getDataEmissao().get(Calendar.YEAR)) {
116   - if (ultimaDataEmissao.get(Calendar.MONTH) <= aditivo.getDataEmissao().get(Calendar.MONTH)) {
117   - if ((ultimaDataEmissao.get(Calendar.MONTH) == aditivo.getDataEmissao().get(Calendar.MONTH)) &&
118   - ultimaDataEmissao.get(Calendar.DAY_OF_MONTH) >= aditivo.getDataEmissao().get(Calendar.DAY_OF_MONTH)) {
  121 +
  122 + if (UtilObjeto.isReferencia(ultimaDataEmissaoAditivoAnterior)) {
  123 +
  124 + if (ultimaDataEmissaoAditivoAnterior.get(Calendar.YEAR) < aditivo.getDataEmissao().get(Calendar.YEAR)) {
  125 + if ( ultimaDataEmissaoAditivoAnterior.get(Calendar.MONTH) <= aditivo.getDataEmissao().get(Calendar.MONTH)) {
  126 + if ((ultimaDataEmissaoAditivoAnterior.get(Calendar.MONTH) == aditivo.getDataEmissao().get(Calendar.MONTH)) &&
  127 + ultimaDataEmissaoAditivoAnterior.get(Calendar.DAY_OF_MONTH) > aditivo.getDataEmissao().get(Calendar.DAY_OF_MONTH)) {
119 128 errors.rejectValue("dataEmissao", CodigoErro.VALIDACAO_CAMPOS.getValue().toString(), "CONTRATOS.MSG.DATA_EMISSAO_12_MESES");
120 129 }
121   - } else {
122   - errors.rejectValue("dataEmissao", CodigoErro.VALIDACAO_CAMPOS.getValue().toString(), "CONTRATOS.MSG.DATA_EMISSAO_12_MESES");
123 130 }
124 131 } else {
125 132 errors.rejectValue("dataEmissao", CodigoErro.VALIDACAO_CAMPOS.getValue().toString(), "CONTRATOS.MSG.DATA_EMISSAO_12_MESES");
126 133 }
127 134 }
  135 + if (UtilObjeto.isReferencia(ultimaDataEmissaoAditivoPosterior)) {
  136 + if (ultimaDataEmissaoAditivoPosterior.get(Calendar.YEAR) > aditivo.getDataEmissao().get(Calendar.YEAR)) {
  137 + if (ultimaDataEmissaoAditivoPosterior.get(Calendar.MONTH) >= aditivo.getDataEmissao().get(Calendar.MONTH)) {
  138 + if ((ultimaDataEmissaoAditivoPosterior.get(Calendar.MONTH) == aditivo.getDataEmissao().get(Calendar.MONTH)) &&
  139 + ultimaDataEmissaoAditivoPosterior.get(Calendar.DAY_OF_MONTH) < aditivo.getDataEmissao().get(Calendar.DAY_OF_MONTH)) {
  140 + errors.rejectValue("dataEmissao", CodigoErro.VALIDACAO_CAMPOS.getValue().toString(), "CONTRATOS.MSG.DATA_EMISSAO_12_MESES_POSTERIOR");
  141 + }
  142 + }
  143 + } else {
  144 + errors.rejectValue("dataEmissao", CodigoErro.VALIDACAO_CAMPOS.getValue().toString(), "CONTRATOS.MSG.DATA_EMISSAO_12_MESES_POSTERIOR");
  145 + }
  146 + }
128 147 }
129   -
  148 +
130 149 ValidationUtils.rejectIfEmpty(errors, "dataInicio", CodigoErro.VALIDACAO_CAMPOS_OBRIGATORIOS.getValue().toString(), "CONTRATOS.LABEL.DATA_INICIO_ADITIVO");
131 150 ValidationUtils.rejectIfEmpty(errors, "dataFim", CodigoErro.VALIDACAO_CAMPOS_OBRIGATORIOS.getValue().toString(), "CONTRATOS.LABEL.DATA_FINAL_ADITIVO");
132   -
  151 +
133 152 if (UtilObjeto.isReferencia(aditivo.getDataInicio()) && dataFinal.compareTo(aditivo.getDataInicio()) >= 0){
134 153 errors.rejectValue("dataInicio", CodigoErro.VALIDACAO_CAMPOS.getValue().toString(), "CONTRATOS.MSG.DATA_INICIO_ADITIVO_MAIOR_DATA_FINAL");
135 154 }
136   -
  155 +
137 156 if (UtilObjeto.isReferencia(aditivo.getDataInicio()) && UtilObjeto.isReferencia(aditivo.getDataFim()) && aditivo.getDataInicio().compareTo(aditivo.getDataFim()) >= 0) {
138 157 errors.rejectValue("dataInicio", CodigoErro.VALIDACAO_CAMPOS.getValue().toString(), "CONTRATOS.MSG.DATA_INICIO_ADITIVO_MAIOR_DATA_FIM_ADITIVO");
139 158 }
140 159 }
141   -
  160 +
142 161 if (aditivo.getAditivoDeValor()) {
143 162 ValidationUtils.rejectIfEmpty(errors, "tipoAlteracaoValor", CodigoErro.VALIDACAO_CAMPOS_OBRIGATORIOS.getValue().toString(), "LABEL.TIPO_ALTERACAO");
144 163 ValidationUtils.rejectIfEmpty(errors, "tipoObjeto", CodigoErro.VALIDACAO_CAMPOS_OBRIGATORIOS.getValue().toString(), "CONTRATOS.LABEL.TIPO_OBJETO");
145 164 ValidationUtils.rejectIfEmpty(errors, "valorAditivo", CodigoErro.VALIDACAO_CAMPOS_OBRIGATORIOS.getValue().toString(), "CONTRATOS.LABEL.VALOR_ADITIVO");
146 165 ValidationUtils.rejectIfEmpty(errors, "percentualAditivo", CodigoErro.VALIDACAO_CAMPOS_OBRIGATORIOS.getValue().toString(), "CONTRATOS.LABEL.PERCENTUAL_ADITIVO");
147   -
  166 +
148 167 Calendar dataInicioPrazo = null;
149 168 Calendar dataFimPrazo = null;
150   -
  169 +
151 170 if (UtilObjeto.isReferencia(aditivo.getContrato())) {
152 171 if (dataDentroPrazo(aditivo.getDataEmissao(), aditivo.getContrato().getDataVigenciaInicial(), aditivo.getContrato().getDataVigenciaFinal())) {
153 172 dataInicioPrazo = aditivo.getContrato().getDataVigenciaInicial();
... ... @@ -164,16 +183,16 @@ public class EventoAditivoValidator implements Validator{
164 183 }
165 184 }
166 185 }
167   -
  186 +
168 187 if (UtilObjeto.isReferencia(dataInicioPrazo) && UtilObjeto.isReferencia(dataFimPrazo)) {
169 188 BigDecimal percentualTotalAditivo = BigDecimal.ZERO;
170   -
  189 +
171 190 if (aditivo.getTipoAlteracaoValor().getCodigo().equals(DominioContrato.CODIGO_TIPO_ALTERACAO_VALOR_ACRESCIMO)) {
172 191 percentualTotalAditivo = percentualTotalAditivo.add(aditivo.getPercentualAditivo());
173 192 } else if (aditivo.getTipoAlteracaoValor().getCodigo().equals(DominioContrato.CODIGO_TIPO_ALTERACAO_VALOR_SUPRESSAO)) {
174 193 percentualTotalAditivo = percentualTotalAditivo.subtract(aditivo.getPercentualAditivo());
175 194 }
176   -
  195 +
177 196 if (UtilObjeto.isReferencia(aditivo.getContrato().getAditivos())) {
178 197 for (EventoAditivo adContrato : aditivo.getContrato().getAditivos()) {
179 198 if (((!UtilObjeto.isReferencia(aditivo.getId())) || (UtilObjeto.isReferencia(aditivo.getId()) && !adContrato.getId().equals(aditivo.getId()))) && adContrato.getAditivoDeValor() && dataDentroPrazo(adContrato.getDataEmissao(), dataInicioPrazo, dataFimPrazo) &&
... ... @@ -186,7 +205,7 @@ public class EventoAditivoValidator implements Validator{
186 205 }
187 206 }
188 207 }
189   -
  208 +
190 209 if (aditivo.getTipoObjeto().getCodigo().equals(DominioContrato.CODIGO_TIPO_OBJETO_OBRAS_SERVICOS_COMPRAS)) {
191 210 if (percentualTotalAditivo.abs().compareTo(PERCENTAGEM_MAXIMA_OBRAS_SERVICOS_COMPRAS) > 0) {
192 211 errors.rejectValue("percentualAditivo", CodigoErro.VALIDACAO_CAMPOS.getValue().toString(), "CONTRATOS.MSG.PERCENTAGEM_MAIOR_OBRAS_SERVICOS_COMPRAS");
... ... @@ -196,22 +215,22 @@ public class EventoAditivoValidator implements Validator{
196 215 errors.rejectValue("percentualAditivo", CodigoErro.VALIDACAO_CAMPOS.getValue().toString(), "CONTRATOS.MSG.PERCENTAGEM_MAIOR_REFORMA_IMOVEIS");
197 216 }
198 217 }
199   -
  218 +
200 219 }
201 220 }
202   -
  221 +
203 222 if (aditivo.getAditivoDeClausula()) {
204 223 ValidationUtils.rejectIfEmpty(errors, "descricao", CodigoErro.VALIDACAO_CAMPOS_OBRIGATORIOS.getValue().toString(), "CONTRATOS.LABEL.DESCRICAO_ADITIVO");
205 224 }
206   -
  225 +
207 226 ValidationUtils.rejectIfEmpty(errors, "justificativa", CodigoErro.VALIDACAO_CAMPOS_OBRIGATORIOS.getValue().toString(), "CONTRATOS.LABEL.JUSTIFICATIVA_ADITIVO");
208 227 }
209   -
  228 +
210 229 /**
211   - *
  230 + *
212 231 * <p><b>Iniciativa(s):</b> <a href="LINK_PORTAL">NUMERO_INICIATIVA</a></p>
213 232 *
214   - * <p><b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a></p>
  233 + * <p><b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a></p>
215 234 *
216 235 * Método responsável por verificar se uma determinada data esta dentro de um determinado prazo definido
217 236 *
... ...
cit-contratos-api/src/main/java/br/com/centralit/api/service/validation/EventoRecebimentoObjetoValidator.java
... ... @@ -37,7 +37,6 @@ public class EventoRecebimentoObjetoValidator implements Validator{
37 37  
38 38 ValidationUtils.rejectIfEmpty(errors, "contrato", CodigoErro.VALIDACAO_CAMPOS_OBRIGATORIOS.getValue().toString(), "LABEL.CONTRATO");
39 39 ValidationUtils.rejectIfEmpty(errors, "tipoRecebimento", CodigoErro.VALIDACAO_CAMPOS_OBRIGATORIOS.getValue().toString(), "CONTRATOS.LABEL.TIPO_RECEBIMENTO");
40   - ValidationUtils.rejectIfEmpty(errors, "nomeObjeto", CodigoErro.VALIDACAO_CAMPOS_OBRIGATORIOS.getValue().toString(), "CONTRATOS.LABEL.NOME_OBJETO");
41 40 ValidationUtils.rejectIfEmpty(errors, "tipoStatus", CodigoErro.VALIDACAO_CAMPOS_OBRIGATORIOS.getValue().toString(), "LABEL.STATUS");
42 41 ValidationUtils.rejectIfEmpty(errors, "tipoAvaliacaoPrazo", CodigoErro.VALIDACAO_CAMPOS_OBRIGATORIOS.getValue().toString(), "CONTRATOS.LABEL.AVALIACAO_OBJETO");
43 42 ValidationUtils.rejectIfEmpty(errors, "tipoAvaliacaoAdesao", CodigoErro.VALIDACAO_CAMPOS_OBRIGATORIOS.getValue().toString(), "CONTRATOS.LABEL.AVALIACAO_OBJETO");
... ...
cit-contratos-api/src/main/resources/script-bd/v1.0.0-alpha11/01-cit-contratos-1.0.0-ALFA-11-postgres.sql
... ... @@ -11,3 +11,20 @@ INSERT INTO menufile (id, datacriacao, dataedicao, version, ativo, caminho, domi
11 11 VALUES (NEXTVAL('hibernate_sequence'), LOCALTIMESTAMP, LOCALTIMESTAMP, 0, true, '/cit-contratos-web/assets/js/angular/custom/repository/EventoLiberacaoPagamentoEmpenhoRepository.min.js',
12 12 (SELECT id FROM dominio WHERE chave = 'tipoFile' AND codigo = 2), (SELECT id FROM menu WHERE chave = 'ACOMPANHAMENTO'));
13 13 -- LUÍS CÉSAR FIM 05/04/2016
  14 +
  15 +-- LUÍS CÉSAR INÍCIO 06/04/2016
  16 +ALTER TABLE cnt_ev_recebimentoobjeto DROP COLUMN nomeobjeto;
  17 +TRUNCATE CASCADE MENU;
  18 +TRUNCATE PAGINA;
  19 +-- LUÍS CÉSRA FIM 06/04/2016
  20 +
  21 +-- CIRO INICIO 07/04/2016
  22 +ALTER TABLE cnt_en_justificativa DROP CONSTRAINT fk_fa7tb16mca69yyhv2uvi4qd63;
  23 +ALTER TABLE cnt_en_justificativa DROP COLUMN contrato_id;
  24 +
  25 +ALTER TABLE cnt_en_justificativa ADD COLUMN contratoenvolvido_id bigint;
  26 +ALTER TABLE cnt_en_justificativa ADD CONSTRAINT fk_qgt7nl7x7xlduo7mysfv2lkqi FOREIGN KEY (contratoenvolvido_id)
  27 +REFERENCES cnt_cn_envolvido (id) MATCH SIMPLE
  28 +ON UPDATE NO ACTION
  29 +ON DELETE NO ACTION;
  30 +-- CIRO FIM 07/04/2016
... ...
cit-contratos-web/src/main/java/br/com/centralit/controller/EventoAditivoController.java
... ... @@ -129,4 +129,17 @@ public class EventoAditivoController extends GenericController&lt;EventoAditivo&gt;{
129 129  
130 130 }
131 131  
  132 +
  133 + @RequestMapping(value = "/permiteExclusaoAditivo", method = RequestMethod.GET)
  134 + @ResponseBody
  135 + public Boolean permiteExclusaoAditivo(@RequestParam(value="aditivoId") Long idAditivo) {
  136 + return this.eventoAditivoService.permiteExclusaoAditivo(idAditivo);
  137 + }
  138 +
  139 + @RequestMapping(value = "/existeAditivoPrazoPosterior", method = RequestMethod.GET)
  140 + @ResponseBody
  141 + public Boolean existeAditivoPrazoPosterior(@RequestParam(value="aditivoId") Long idAditivo) {
  142 + return this.eventoAditivoService.existeAditivoPrazoPosterior(idAditivo);
  143 + }
  144 +
132 145 }
... ...
cit-contratos-web/src/main/java/br/com/centralit/listener/StartupListenerContratos.java
... ... @@ -981,10 +981,15 @@ public class StartupListenerContratos extends UtilStartup implements Application
981 981 internacionalizacaoList.add(new Internacionalizacao("CONTRATOS.LABEL.RELATORIO_PENALIDADE_APLICADA", "Relatório de penalidades aplicadas", dominio, modulo));
982 982  
983 983 internacionalizacaoList.add(new Internacionalizacao("CONTRATOS.LABEL.RELATORIOS", "Relatórios do contrato", dominio, modulo));
  984 + internacionalizacaoList.add(new Internacionalizacao("CONTRATOS.LABEL.ADICIONAR_JUSTIFICATIVA", "Adicionar Justificativa", dominio, modulo));
984 985  
985 986 internacionalizacaoList.add(new Internacionalizacao("CONTRATOS.LABEL.TERMO_REFERENCIA_PROJETO_BASICO", "Termo de referência/Projeto Básico", dominio, modulo));
986 987 internacionalizacaoList.add(new Internacionalizacao("CONTRATOS.LABEL.CONTRATO_SEM_VINCULO_TERMO", "Contrato selecionado está sem vínculo a um termo de referência.", dominio, modulo));
987 988 internacionalizacaoList.add(new Internacionalizacao("CONTRATOS.LABEL.ENCERRAMENTO_CONTRATO", "Encerramento de contrato", dominio, modulo));
  989 +
  990 + internacionalizacaoList.add(new Internacionalizacao("CONTRATOS.MSG.EXCLUSAO_ADITIVO_NEGADA", "Exclusão não permitida, o aditivo de prazo já está vigente ou há aditivos de prazo subsequentes a este.", dominio, modulo));
  991 + internacionalizacaoList.add(new Internacionalizacao("CONTRATOS.MSG.DATA_EMISSAO_12_MESES_POSTERIOR", "Data de emissão não permitida, pois infere intervalo de 12 meses em relação ao aditivo subsequente.", dominio, modulo));
  992 + internacionalizacaoList.add(new Internacionalizacao("CONTRATOS.MSG.ADITIVO_DATA_EMISSAO_MAIOR_DATA_INICIO", "Data de emissão deve ser menor que a data de início do aditivo.", dominio, modulo));
988 993 }
989 994  
990 995 private void gerarMensagem(Dominio dominio, Modulo modulo, List<Internacionalizacao> internacionalizacaoList) {
... ...
cit-contratos-web/src/main/resources/reports/eventoRecebimentoObjeto.jrxml
1 1 <?xml version="1.0" encoding="UTF-8"?>
2   -<!-- Created with Jaspersoft Studio version 6.2.0.final using JasperReports Library version 6.2.0 -->
3   -<!-- 2016-04-01T17:16:34 -->
4 2 <jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="eventoRecebimentoObjeto" language="groovy" pageWidth="555" pageHeight="802" columnWidth="555" leftMargin="0" rightMargin="0" topMargin="0" bottomMargin="0" uuid="e04cf746-a11a-488e-9c73-7c7069a15371">
5 3 <property name="com.jaspersoft.studio.data.sql.tables" value=""/>
6 4 <property name="com.jaspersoft.studio.data.defaultdataadapter" value="Postgres citgrpdb"/>
7 5 <property name="ireport.zoom" value="1.7715610000000062"/>
8 6 <property name="ireport.x" value="0"/>
9   - <property name="ireport.y" value="0"/>
  7 + <property name="ireport.y" value="11"/>
10 8 <style name="Table_TH" mode="Opaque" backcolor="#F0F8FF">
11 9 <box>
12 10 <pen lineWidth="0.5" lineColor="#000000"/>
... ... @@ -39,6 +37,7 @@
39 37 <![CDATA[select
40 38 contrato.numeroanocontrato as numeroAnoContrato,
41 39 contrato.numeroprocesso AS numeroProcesso,
  40 +contrato.objetocontratacao,
42 41 pesForn.nome AS contratada,
43 42 pesJForn.cnpj AS cnpjcontratado,
44 43 ro.sequencialano as numeroRecebimento,
... ... @@ -47,7 +46,6 @@ ro.datarecebimento as dataRecebimento,
47 46 (SELECT dominio.descricao FROM dominio WHERE dominio.id = ro.tipostatus_id) AS tipoStatus,
48 47 (SELECT dominio.descricao FROM dominio WHERE dominio.id = ro.tipoavaliacaoprazo_id) AS tipoAvaliacaoPrazo,
49 48 (SELECT dominio.descricao FROM dominio WHERE dominio.id = ro.tipoavaliacaoadesao_id) AS tipoAvaliacaoAdesao,
50   -ro.nomeObjeto as nomeObjeto,
51 49 ro.justificativa as justificativa,
52 50 pesGestor.nome AS gestor,
53 51 cGestor.matricula AS gestorMatricula,
... ... @@ -76,6 +74,7 @@ where ro.id = $P{RECEBIMENTO_ID}]]&gt;
76 74 </queryString>
77 75 <field name="numeroanocontrato" class="java.lang.String"/>
78 76 <field name="numeroprocesso" class="java.lang.Long"/>
  77 + <field name="objetocontratacao" class="java.lang.String"/>
79 78 <field name="contratada" class="java.lang.String"/>
80 79 <field name="cnpjcontratado" class="java.lang.String"/>
81 80 <field name="numerorecebimento" class="java.lang.String"/>
... ... @@ -84,7 +83,6 @@ where ro.id = $P{RECEBIMENTO_ID}]]&gt;
84 83 <field name="tipostatus" class="java.lang.String"/>
85 84 <field name="tipoavaliacaoprazo" class="java.lang.String"/>
86 85 <field name="tipoavaliacaoadesao" class="java.lang.String"/>
87   - <field name="nomeobjeto" class="java.lang.String"/>
88 86 <field name="justificativa" class="java.lang.String"/>
89 87 <field name="gestor" class="java.lang.String"/>
90 88 <field name="gestormatricula" class="java.lang.String"/>
... ... @@ -452,7 +450,7 @@ $F{cnpjcontratado}.substring(12, 14)]]&gt;&lt;/textFieldExpression&gt;
452 450 <rightPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/>
453 451 </box>
454 452 <textElement verticalAlignment="Middle"/>
455   - <textFieldExpression><![CDATA[$F{nomeobjeto}]]></textFieldExpression>
  453 + <textFieldExpression><![CDATA[$F{objetocontratacao}]]></textFieldExpression>
456 454 </textField>
457 455 <textField isStretchWithOverflow="true">
458 456 <reportElement stretchType="RelativeToBandHeight" mode="Opaque" x="0" y="0" width="220" height="25" isPrintWhenDetailOverflows="true" backcolor="#CCCCCC" uuid="2a73e93e-b151-4d8a-be9d-32a7c4bb9c46"/>
... ...
cit-contratos-web/src/main/resources/reports/relatorioEventoNaoConformidade.jrxml
... ... @@ -52,12 +52,12 @@ evNaoConformidade.respostacontratada as resposta
52 52  
53 53 from cnt_cn_evento as eventos
54 54  
55   -left join cnt_ev_registro_nc as evNaoConformidade on evNaoConformidade.id = eventos.id
56   -left join cnt_tr_sancao as trSancao on trSancao.id = evNaoConformidade.tiponaoconformidade_id
57   -left join dominio as tipoEvento on tipoEvento.id = eventos.tipoevento_id
  55 +inner join cnt_ev_registro_nc as evNaoConformidade on evNaoConformidade.id = eventos.id
  56 +inner join cnt_tr_sancao as trSancao on trSancao.id = evNaoConformidade.tiponaoconformidade_id
  57 +inner join dominio as tipoEvento on tipoEvento.id = eventos.tipoevento_id
58 58  
59 59 where eventos.contrato_id = $P{contratoId}
60   -and tipoEvento.chave = 'tipoEventoContrato' and tipoEvento.codigo = '7'
  60 +
61 61 $P!{DATA_INICIAL}
62 62 $P!{DATA_FINAL}
63 63  
... ... @@ -90,9 +90,6 @@ left join cnt_contrato as contrato on contrato.id = eventos.contrato_id
90 90 left join dominio as tipoEvento on tipoEvento.id = eventos.tipoevento_id
91 91  
92 92 where eventos.contrato_id = $P{contratoId}
93   -and tipoEvento.chave = 'tipoEventoContrato'
94   -and tipoEvento.codigo = '7'
95   -
96 93 group by contrato.id, tipoEvento.id, eventos.id
97 94 limit 1]]>
98 95 </queryString>
... ... @@ -172,7 +169,7 @@ $P{dataFinal} != null ? &quot;Até &quot; + new SimpleDateFormat(&quot;dd/MM/yyyy&quot;).format($P{d
172 169 <text><![CDATA[1. Relatórios]]></text>
173 170 </staticText>
174 171 <componentElement>
175   - <reportElement x="15" y="40" width="534" height="30" uuid="687f8495-5035-426f-8cde-dfbd8bfae41d">
  172 + <reportElement x="15" y="40" width="534" height="30" isPrintWhenDetailOverflows="true" uuid="687f8495-5035-426f-8cde-dfbd8bfae41d">
176 173 <property name="com.jaspersoft.studio.layout" value="com.jaspersoft.studio.editor.layout.VerticalRowLayout"/>
177 174 </reportElement>
178 175 <jr:table xmlns:jr="http://jasperreports.sourceforge.net/jasperreports/components" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports/components http://jasperreports.sourceforge.net/xsd/components.xsd" whenNoDataType="AllSectionsNoDetail">
... ...
cit-contratos-web/src/main/webapp/assets/js/angular/custom/controller/ContratoController.js
... ... @@ -87,14 +87,13 @@ citApp.controller(&#39;ContratoController&#39;, [&#39;$scope&#39;, &#39;$filter&#39;, &#39;FileUploader&#39;, &#39;C
87 87 };
88 88 // ###################### FIM: INICIALIZACAO DE VARIAVEIS ###########################
89 89  
90   - // Limpa formulrio para novo cadastro
  90 + // Limpa formulario para novo cadastro
91 91 $scope.resetForm = function() {
92 92  
93 93 $scope.contrato = {
94 94 ctrtEmpenhos : [],
95 95 ctrtItens : [],
96 96 ctrtEnvolvidos : [],
97   - justificativas : [],
98 97 ctrtValoresPagamento : [],
99 98 dominioSituacaoAtual : {codigo : 1},
100 99 valorTotalEmpenhado : 0.0,
... ... @@ -243,83 +242,79 @@ citApp.controller(&#39;ContratoController&#39;, [&#39;$scope&#39;, &#39;$filter&#39;, &#39;FileUploader&#39;, &#39;C
243 242 $scope.contratoForm.anexosObservacoesContratoForm.$submitted = true;
244 243  
245 244 // verifica formulario valido
246   - if ($scope.contratoForm.$valid) {
247   -
248   - // data da celebracao nao pode ser maior que a data de vigencia inicial do contrato
249   - if(!isPeriodoValido($scope.contrato.dataCelebracao, $scope.contrato.dataVigenciaInicial)){
250   -
251   - $scope.showAlert('error', $translate.instant('VALIDACAO.DATA_CELEBRACAO_MAIOR_DATA_VIGENCIA_INICIAL'));
252   - return;
253   - }
254   -
255   - // data de vigencia inicial nao pode ser maior que a data de vigencia final do contrato
256   - if(!isPeriodoValido($scope.contrato.dataVigenciaInicial, $scope.contrato.dataVigenciaFinal)){
  245 + if ($scope.contratoForm.$invalid) {
  246 + $scope.showAlert('error', $translate.instant('VALIDACAO.ALERTA_OBRIGATORIOS'));
  247 + return;
  248 + }
257 249  
258   - $scope.showAlert('error', $translate.instant('VALIDACAO.DATA_VIGENCIA_INICIAL_MAIOR_DATA_VIGENCIA_FINAL_CONTRATO'));
259   - return;
260   - }
  250 + if(!$scope.informacoesValidas()){
  251 + return;
  252 + };
261 253  
262   - // data de vigencia inicial nao pode ser maior que a data de vigencia final do contrato
263   - if($scope.contrato.ctrtEnvolvidos && $scope.contrato.ctrtEnvolvidos.length > 0 && $scope.contrato.ctrtEnvolvidos.length < 3){
  254 + if ($scope.contrato.id && $scope.contrato.ctrtEnvolvidos){
  255 + angular.forEach($scope.contrato.ctrtEnvolvidos, function(envolvido){
  256 + if (envolvido.justificativas){
  257 + angular.forEach(envolvido.justificativas, function(justificativa){
  258 + delete justificativa.autor.permissoes;
  259 + delete justificativa.dataCriacao;
  260 + });
  261 + }
  262 + });
  263 + }
264 264  
265   - $scope.showAlert('error', $translate.instant('VALIDACAO.CONTRATO_EXIGE_MINIMO_TRES_ENVOLVIDOS'));
  265 + if ($scope.contrato.ctrtValoresPagamento && $scope.contrato.ctrtValoresPagamento.length > 0){
  266 + if (!validarContratoValoresPagamento()){
266 267 return;
267 268 }
  269 + angular.forEach($scope.contrato.ctrtValoresPagamento, function(parcelaValorPagamento){
  270 + if (parcelaValorPagamento.seguencia){
  271 + delete parcelaValorPagamento.seguencia;
  272 + }
  273 + });
  274 + }
268 275  
269   - if($scope.contrato.id && $scope.hasAlteracaoEnvolvido){
  276 + $scope.contratoTemp = {
  277 + documentos: []
  278 + };
270 279  
271   - $scope.showAlert('error', $translate.instant('CONTRATOS.VALIDACAO.ALTERACAO_ENVOLVIDOS_EXIGE_JUSTIFICATIVA'));
272   - return;
273   - } else {
274   - angular.forEach($scope.contrato.justificativas, function(justificativa){
275   - delete justificativa.autor;
276   - delete justificativa.dataCriacao;
  280 + // preencher lista de documentos temporarios para verificacao dos anexos. verificar qual anexo e de qual documento pelo numero do documento
  281 + angular.forEach($scope.contrato.documentos, function(documento, key) {
  282 + if (documento.uploadsDocumento) {
  283 + $scope.contratoTemp.documentos.push({
  284 + uploadsDocumento: clone(documento.uploadsDocumento),
  285 + numero: clone(documento.numero)
277 286 });
  287 + // deleta esse atributo por causa de um erro de ciclo no json
  288 + delete documento.uploadsDocumento;
278 289 }
  290 + });
279 291  
280   - if ($scope.contrato.ctrtValoresPagamento && $scope.contrato.ctrtValoresPagamento.length > 0){
281   -
282   - if (!validarContratoValoresPagamento()){
283   -
284   - return;
285   -
286   - } else {
287   -
288   - angular.forEach($scope.contrato.ctrtValoresPagamento, function(parcelaValorPagamento){
289   -
290   - if (parcelaValorPagamento.seguencia){
291   -
292   - delete parcelaValorPagamento.seguencia;
293   - }
294   - });
295   - }
296   - }
297   -
298   - $scope.contratoTemp = {
299   - documentos: []
300   - };
  292 + if ($scope.contrato.programaAcao && $scope.contrato.programaAcao.originalElement) {
  293 + $scope.contrato.programaAcao = $scope.contrato.programaAcao.originalElement;
  294 + }
  295 + verificarValorTotalEmpenhado();
  296 + };
301 297  
302   - // preencher lista de documentos temporarios para verificacao dos anexos. verificar qual anexo e de qual documento pelo numero do documento
303   - angular.forEach($scope.contrato.documentos, function(documento, key) {
304   - if (documento.uploadsDocumento) {
305   - $scope.contratoTemp.documentos.push({
306   - uploadsDocumento: clone(documento.uploadsDocumento),
307   - numero: clone(documento.numero)
308   - });
309   - // deleta esse atributo por causa de um erro de ciclo no json
310   - delete documento.uploadsDocumento;
311   - }
312   - });
  298 + $scope.informacoesValidas = function () {
313 299  
314   - if ($scope.contrato.programaAcao && $scope.contrato.programaAcao.originalElement) {
315   - $scope.contrato.programaAcao = $scope.contrato.programaAcao.originalElement;
316   - }
  300 + // data da celebracao nao pode ser maior que a data de vigencia inicial do contrato
  301 + if(!isPeriodoValido($scope.contrato.dataCelebracao, $scope.contrato.dataVigenciaInicial)){
  302 + $scope.showAlert('error', $translate.instant('VALIDACAO.DATA_CELEBRACAO_MAIOR_DATA_VIGENCIA_INICIAL'));
  303 + return false;
  304 + }
317 305  
318   - verificarValorTotalEmpenhado();
319   - } else {
  306 + // data de vigencia inicial nao pode ser maior que a data de vigencia final do contrato
  307 + if(!isPeriodoValido($scope.contrato.dataVigenciaInicial, $scope.contrato.dataVigenciaFinal)){
  308 + $scope.showAlert('error', $translate.instant('VALIDACAO.DATA_VIGENCIA_INICIAL_MAIOR_DATA_VIGENCIA_FINAL_CONTRATO'));
  309 + return false;
  310 + }
320 311  
321   - $scope.showAlert('error', $translate.instant('VALIDACAO.ALERTA_OBRIGATORIOS'));
  312 + // data de vigencia inicial nao pode ser maior que a data de vigencia final do contrato
  313 + if($scope.contrato.ctrtEnvolvidos && $scope.contrato.ctrtEnvolvidos.length > 0 && $scope.contrato.ctrtEnvolvidos.length < 3){
  314 + $scope.showAlert('error', $translate.instant('VALIDACAO.CONTRATO_EXIGE_MINIMO_TRES_ENVOLVIDOS'));
  315 + return false;
322 316 }
  317 + return true;
323 318 };
324 319  
325 320 function save() {
... ... @@ -1369,10 +1364,8 @@ citApp.controller(&#39;ContratoController&#39;, [&#39;$scope&#39;, &#39;$filter&#39;, &#39;FileUploader&#39;, &#39;C
1369 1364 });
1370 1365  
1371 1366 if (contratoEnvolvidosChecked.length > 1){
1372   -
1373 1367 $scope.acaoEmMassaEnvolvido = true;
1374 1368 } else {
1375   -
1376 1369 $scope.acaoEmMassaEnvolvido = false;
1377 1370 }
1378 1371 };
... ... @@ -1380,79 +1373,77 @@ citApp.controller(&#39;ContratoController&#39;, [&#39;$scope&#39;, &#39;$filter&#39;, &#39;FileUploader&#39;, &#39;C
1380 1373 // responsavel por abrir modal de adicao de um contratoEnvolvido
1381 1374 $scope.openModalContratoEnvolvido = function() {
1382 1375  
1383   - filtrarPapeisSelecionados();
1384   -
1385   - $scope.contratoEnvolvidoTemp = {};
1386 1376 $scope.editEnvolvido = true;
1387   - $scope.$openModal('modal-envolvido.html', 'lg');
  1377 + $scope.contratoEnvolvidoTemp = {justificativas : []};
  1378 + $scope.contrato.ctrtEnvolvidos.forEach(function(item){
  1379 + if(item.$checked){
  1380 + item.$checked = false;
  1381 + }
  1382 + });
  1383 + filtrarPapeisSelecionados();
  1384 + $scope.$openModal('dialog_envolvido.html', 'lg');
1388 1385 };
1389 1386  
1390   - // responsavel por abrir modal de adicao de uma justificativa
1391   - $scope.openModalJustificativa = function() {
1392   -
1393   - $scope.justificativaTemp = {};
1394   - $scope.editEnvolvido = true;
1395   - $scope.$openModal('modal-justificativa.html', 'lg');
  1387 + $scope.closeModalContratoEvolvido = function(formDialogEnvolvido) {
  1388 + $scope.hasAlteracaoEnvolvido = false;
  1389 + formDialogEnvolvido.$submitted = false;
  1390 + $scope.$modalInstance.dismiss('cancel');
1396 1391 };
1397 1392  
1398 1393 $scope.adicionarContratoEnvolvido = function (formDialogEnvolvido, continuarEditando) {
1399 1394  
1400 1395 formDialogEnvolvido.$submitted = true;
  1396 + if($scope.contrato.id && $scope.hasAlteracaoEnvolvido){
  1397 + if($scope.contratoEnvolvidoTemp.justificativas.length === 0 ||
  1398 + $scope.contratoEnvolvidoTemp.justificativas.length === $scope.contratoEnvolvidoTemp.justificativasAnterioresLength){
  1399 + $scope.showAlert('error', $translate.instant('CONTRATOS.VALIDACAO.ALTERACAO_ENVOLVIDOS_EXIGE_JUSTIFICATIVA'));
  1400 + return;
  1401 + }
  1402 + }
1401 1403  
1402   - if (formDialogEnvolvido.$valid) {
1403   - if ($scope.contrato.ctrtEnvolvidos){
1404   - if ($scope.contratoEnvolvidoTemp.$checked) {
1405   - for (var i = 0; i < $scope.contrato.ctrtEnvolvidos.length; i++) {
1406   - if ($scope.contrato.ctrtEnvolvidos[i].$checked) {
1407   - $scope.contrato.ctrtEnvolvidos[i] = $scope.contratoEnvolvidoTemp;
1408   - }
  1404 + if (formDialogEnvolvido.$invalid) {
  1405 + //Mensagem de erro de campos obrigatorios nao preenchidos
  1406 + $scope.showAlert('error', $translate.instant('VALIDACAO.ALERTA_OBRIGATORIOS'), " ", false);
  1407 + return;
  1408 + }
  1409 + if ($scope.contrato.ctrtEnvolvidos){
  1410 + if ($scope.contratoEnvolvidoTemp.$checked) {
  1411 + for (var i = 0; i < $scope.contrato.ctrtEnvolvidos.length; i++) {
  1412 + if ($scope.contrato.ctrtEnvolvidos[i].$checked) {
  1413 + $scope.contrato.ctrtEnvolvidos[i] = $scope.contratoEnvolvidoTemp;
1409 1414 }
1410   - } else {
1411   - $scope.contrato.ctrtEnvolvidos.push($scope.contratoEnvolvidoTemp);
1412 1415 }
1413   - }
1414   -
1415   - $scope.contratoEnvolvidoTemp = {};
1416   - if (continuarEditando) {
1417   - formDialogEnvolvido.$submitted = false;
1418   - formDialogEnvolvido.$setPristine();
1419   - filtrarPapeisSelecionados();
1420 1416 } else {
1421   - $scope.$modalInstance.dismiss('cancel');
  1417 + $scope.contrato.ctrtEnvolvidos.push($scope.contratoEnvolvidoTemp);
1422 1418 }
  1419 + }
1423 1420  
1424   - if ($scope.contrato.id){
1425   - $scope.hasAlteracaoEnvolvido = true;
1426   - }
  1421 + $scope.contratoEnvolvidoTemp = {justificativas : []};
  1422 + $scope.justificativaTemp = {};
  1423 + $scope.hasAlteracaoEnvolvido = false;
  1424 + if (continuarEditando) {
  1425 + formDialogEnvolvido.$submitted = false;
  1426 + formDialogEnvolvido.$setPristine();
  1427 + filtrarPapeisSelecionados();
1427 1428 } else {
1428   - //Mensagem de erro de campos obrigatorios n�o preenchidos
1429   - $scope.showAlert('error', $translate.instant('VALIDACAO.ALERTA_OBRIGATORIOS'), " ", false);
  1429 + $scope.$modalInstance.dismiss('cancel');
1430 1430 }
1431 1431 };
1432 1432  
1433   - $scope.adicionarJustificativa = function (formDialogJustificativa, continuarEditando) {
  1433 + $scope.adicionarJustificativa = function (form) {
1434 1434  
1435   - formDialogJustificativa.$submitted = true;
  1435 + form.$submitted = true;
1436 1436  
1437   - if (formDialogJustificativa.$valid) {
1438   - if ($scope.contrato.justificativas){
1439   - $scope.justificativaTemp.autor = $scope.usuarioLogado;
1440   - $scope.justificativaTemp.dataCriacao = new Date();
1441   - $scope.contrato.justificativas.push($scope.justificativaTemp);
1442   - }
1443   -
1444   - $scope.justificativaTemp = {};
1445   - if (continuarEditando) {
1446   - formDialogJustificativa.$submitted = false;
1447   - formDialogJustificativa.$setPristine();
1448   - } else {
1449   - $scope.$modalInstance.dismiss('cancel');
1450   - }
1451   - $scope.hasAlteracaoEnvolvido = false;
1452   - } else {
1453   - //Mensagem de erro de campos obrigatorios n�o preenchidos
1454   - $scope.showAlert('error', $translate.instant('VALIDACAO.ALERTA_OBRIGATORIOS'), " ", false);
  1437 + if ($scope.justificativaTemp.descricao === '' || $scope.justificativaTemp.descricao == undefined) {
  1438 + $scope.showAlert('error', $translate.instant('CONTRATOS.VALIDACAO.ALTERACAO_ENVOLVIDOS_EXIGE_JUSTIFICATIVA'));
  1439 + return;
  1440 + }
  1441 + if ($scope.contratoEnvolvidoTemp.justificativas){
  1442 + $scope.justificativaTemp.autor = $scope.usuarioLogado;
  1443 + $scope.justificativaTemp.dataCriacao = new Date();
  1444 + $scope.contratoEnvolvidoTemp.justificativas.push($scope.justificativaTemp);
1455 1445 }
  1446 + $scope.justificativaTemp = {};
1456 1447 };
1457 1448  
1458 1449 function filtrarPapeisSelecionados() {
... ... @@ -1460,16 +1451,18 @@ citApp.controller(&#39;ContratoController&#39;, [&#39;$scope&#39;, &#39;$filter&#39;, &#39;FileUploader&#39;, &#39;C
1460 1451  
1461 1452 var dominiosPapelEnvolvidoContrato = [];
1462 1453 $scope.contrato.ctrtEnvolvidos.forEach(function(item){
1463   -
1464   - dominiosPapelEnvolvidoContrato.push(item.dominioPapelEnvolvidoContrato);
  1454 + if(!item.$checked){
  1455 + dominiosPapelEnvolvidoContrato.push(item.dominioPapelEnvolvidoContrato);
  1456 + }
1465 1457 });
1466 1458  
1467 1459 $scope.dominioPapelEnvolvidoList = $filter('idNotEqualDominio')($scope.dominioPapelEnvolvidoListFixa, dominiosPapelEnvolvidoContrato);
1468 1460  
1469   - if ($scope.dominioPapelEnvolvidoList && $scope.dominioPapelEnvolvidoList.length === 0){
1470   -
1471   - $scope.showAlert('warning', $translate.instant('CONTRATOS.MSG.TODOS_PAPEIS_ENVOLVIDOS_ADICIONADOS'));
1472   - return;
  1461 + if($scope.editEnvolvido){
  1462 + if ($scope.dominioPapelEnvolvidoList && $scope.dominioPapelEnvolvidoList.length === 0){
  1463 + $scope.showAlert('warning', $translate.instant('CONTRATOS.MSG.TODOS_PAPEIS_ENVOLVIDOS_ADICIONADOS'));
  1464 + return;
  1465 + }
1473 1466 }
1474 1467 }
1475 1468 };
... ... @@ -1519,10 +1512,6 @@ citApp.controller(&#39;ContratoController&#39;, [&#39;$scope&#39;, &#39;$filter&#39;, &#39;FileUploader&#39;, &#39;C
1519 1512 }
1520 1513  
1521 1514 $scope.dominioPapelEnvolvidoList.push(papelExcluido);
1522   -
1523   - if ($scope.contrato.id) {
1524   - $scope.hasAlteracaoEnvolvido = true;
1525   - }
1526 1515 }
1527 1516 });
1528 1517 };
... ... @@ -1558,25 +1547,29 @@ citApp.controller(&#39;ContratoController&#39;, [&#39;$scope&#39;, &#39;$filter&#39;, &#39;FileUploader&#39;, &#39;C
1558 1547 };
1559 1548  
1560 1549 // Responsavel por abrir modal de envolvido para edicao ou visualizacao do item selecionado
1561   - $scope.abrirContratoEnvolvido = function(edit) {
1562   -
1563   - filtrarPapeisSelecionados();
  1550 + $scope.visualizarEditarContratoEnvolvido = function(edit) {
1564 1551  
1565 1552 $scope.editEnvolvido = edit;
1566   -
1567 1553 $scope.contratoEnvolvidoTemp = null;
1568   -
1569 1554 // recupera o item de contrato selecionado
1570 1555 $scope.contratoEnvolvidoTemp = $scope.getCheckedContratoEnvolvido();
1571   -
1572 1556 if(!$scope.contratoEnvolvidoTemp) {
1573   -
1574 1557 $scope.showAlert('warning', !edit ? $translate.instant('MSG.SELECIONE_UM_ITEM_PARA_VISUALIZACAO') : $translate.instant('MSG.SELECIONE_UM_ITEM_PARA_EDICAO'));
1575 1558 return;
1576 1559 }
1577   -
  1560 + $scope.justificativaTemp = {};
  1561 + if($scope.contratoEnvolvidoTemp.justificativas){
  1562 + $scope.contratoEnvolvidoTemp.justificativasAnterioresLength = $scope.contratoEnvolvidoTemp.justificativas.length;
  1563 + } else {
  1564 + $scope.contratoEnvolvidoTemp.justificativasAnterioresLength = 0;
  1565 + $scope.contratoEnvolvidoTemp.justificativas = [];
  1566 + }
  1567 + if($scope.contrato.id){
  1568 + $scope.hasAlteracaoEnvolvido = edit;
  1569 + }
  1570 + filtrarPapeisSelecionados();
1578 1571 $timeout(function() {
1579   - $scope.$openModal('modal-envolvido.html', 'lg');
  1572 + $scope.$openModal('dialog_envolvido.html', 'lg');
1580 1573 });
1581 1574 };
1582 1575  
... ...
cit-contratos-web/src/main/webapp/assets/js/angular/custom/controller/EventoPenalidadeController.js
... ... @@ -49,23 +49,23 @@ citApp.controller(&#39;EventoPenalidadeController&#39;, [&#39;$scope&#39;, &#39;$filter&#39;, &#39;$timeout&#39;
49 49 RegistroOcorrenciaRepository.findAllOcorrenciasPorContrato($scope.contrato.id).then(function(result) {
50 50 $timeout(function (){
51 51 $scope.listaOcorrenciasFixa = result;
52   -
53   - removerOcorrenciasExistentes();
54   -
55 52 $scope.listaOcorrencias = angular.copy($scope.listaOcorrenciasFixa);
  53 +
  54 + removerOcorrenciasExistentes();
  55 +
56 56 });
57 57 });
58 58  
59 59 function removerOcorrenciasExistentes() {
60 60 for(var i = $scope.eventoPenalidade.ocorrencias.length - 1; i >= 0; i--) {
61   - for (var j = $scope.listaOcorrenciasFixa.length -1; j >= 0; j--) {
62   - if ($scope.listaOcorrenciasFixa[j].id === $scope.eventoPenalidade.ocorrencias[i].registroOcorrencia.id) {
63   - $scope.listaOcorrenciasFixa.splice(j, 1);
  61 + for (var j = $scope.listaOcorrencias.length -1; j >= 0; j--) {
  62 + if ($scope.listaOcorrencias[j].id === $scope.eventoPenalidade.ocorrencias[i].registroOcorrencia.id) {
  63 + $scope.listaOcorrencias.splice(j, 1);
64 64 }
65 65 }
66 66 }
67 67 };
68   -
  68 +
69 69 $scope.addRegistroOcorrencia = function(){
70 70  
71 71 if($scope.eventoPenalidade.registroOcorrencia){
... ...
cit-contratos-web/src/main/webapp/assets/js/angular/custom/controller/EventoRecebimentoObjetoController.js
... ... @@ -20,171 +20,169 @@ citApp.controller(&#39;EventoRecebimentoObjetoController&#39;, [&#39;$scope&#39;,
20 20 FileUploader) {
21 21  
22 22  
23   - $scope.getRecebimentoObjeto = function(){
24   - var idRecebimentoObjeto = $scope.evento.id;
25   - $scope.setLoadingGet(true);
26   - EventoRecebimentoObjetoRepository.get(idRecebimentoObjeto).then(function(result) {
27   - $scope.recebimentoObjeto = result.originalElement;
28   - if($scope.contratoTemp == undefined){
29   - $scope.contratoTemp= angular.copy($scope.recebimentoObjeto.contrato);
30   - }
31   - $scope.setLoading(false);
32   - });
33   - };
34   -
35   - $scope.resetForm = function(form) {
36   -
37   - if($scope.contratoTemp == undefined){
38   - $scope.contratoTemp= angular.copy($scope.contrato);
39   - }
40   - if($scope.evento){
41   - $scope.recebimentoObjeto.dataRecebimento = null;
42   - $scope.recebimentoObjeto.nomeObjeto = "";
43   - $scope.recebimentoObjeto.justificativa = "";
44   - } else {
45   - $scope.recebimentoObjeto = {
46   - contrato: $scope.contratoTemp,
47   - dataRecebimento : $filter('date')(new Date(), "dd/MM/yyyy"),
48   - tipoStatus : null,
49   - tipoRecebimento : null,
50   - tipoAvaliacaoPrazo : null,
51   - tipoAvaliacaoAdesao : null,
52   - nomeObjeto : "",
53   - justificativa : ""
54   - };
55   - }
56   - if(form != undefined){
57   - $timeout(function(){
58   - form.$submitted = true;
59   - form.$setPristine();
60   - });
61   - };
62   - };
63   -
64   - $scope.carregarDominios = function(){
65   - DominioRepository.findAllDominio('tipoEventoContratoRecebimentoObjeto').then(function(result) {
66   - angular.forEach(result, function(item, key){
67   - switch (item.codigo){
68   - case 1 :
69   - $scope.dominiosRecebimentoObjeto.tiposRecebimentos.push(item.originalElement);
70   - break;
71   - case 2 :
72   - $scope.dominiosRecebimentoObjeto.tiposRecebimentos.push(item.originalElement);
73   - break;
74   - case 3 :
75   - $scope.dominiosRecebimentoObjeto.tiposStatus.push(item.originalElement);
76   - break;
77   - case 4 :
78   - $scope.dominiosRecebimentoObjeto.tiposStatus.push(item.originalElement);
79   - break;
80   - }
81   - });
82   - });
83   -
84   - DominioRepository.findAllDominio('tipoEventoContratoRecebimentoObjetoAvaliacaoPrazo').then(function(result) {
85   - angular.forEach(result, function(item, key){
86   - $scope.dominiosRecebimentoObjeto.tiposAvaliacaoPrazo.push(item.originalElement);
87   - });
88   - });
89   - DominioRepository.findAllDominio('tipoEventoContratoRecebimentoObjetoAvaliacaoAdesao').then(function(result) {
90   - angular.forEach(result, function(item, key){
91   - $scope.dominiosRecebimentoObjeto.tiposAvaliacaoAdesao.push(item.originalElement);
92   - });
93   - });
94   - };
95   -
96   - $scope.uploader = new FileUploader({
97   - autoUpload: false,
98   - queueLimit: 1,
99   - url : '/cit-tabelas-corp-web/rest/anexo/uploadAnexo?idDocumento='
100   - });
101   -
102   - $scope.salvarEvento = function(form){
103   -
104   - form.$submitted = true;
105   - if(form && !form.$invalid) {
106   - if ($scope.isInformacoesValidas()){
107   - $scope.setLoadingSalva(true);
108   -
109   - if($scope.recebimentoObjetoTemp == null){
110   - $scope.recebimentoObjetoTemp = {
111   - documentos : []
112   - };
113   - angular.forEach($scope.recebimentoObjeto.documentos, function(documento, key) {
114   - $scope.recebimentoObjetoTemp.documentos.push({
115   - uploadsDocumento : clone(documento.uploadsDocumento),
116   - numero : clone(documento.numero)
117   - });
118   - delete documento.uploadsDocumento;
119   - });
120   - };
121   -
122   - EventoRecebimentoObjetoRepository.save($scope.recebimentoObjeto).then(function(result) {
123   - $scope.recebimentoObjeto = result.originalElement;
124   -
125   - angular.forEach($scope.recebimentoObjeto.documentos, function(documentoSalvo, key) {
126   - if(documentoSalvo !== undefined && documentoSalvo.id !== undefined){
127   - angular.forEach($scope.recebimentoObjetoTemp.documentos, function(documentoTransient, key) {
128   - if(documentoSalvo.numero === documentoTransient.numero){
129   - salvarUpload(documentoSalvo, documentoTransient.uploadsDocumento);
130   - }
131   - });
132   - };
133   - });
134   - $scope.setLoading(false);
135   - $scope.$modalInstance.dismiss('cancel');
136   - $scope.showAlert("success", $translate.instant("MSG.MG001"));
137   - $scope.buscaOcorrencias($scope.contratoTemp);
138   - });
139   - };
140   - } else {
141   - $scope.showAlert('error', $translate.instant('MSG.MN001'));
142   - }
143   - };
144   -
145   - $scope.isInformacoesValidas = function () {
146   -
147   - var valido = true;
148   -
149   - if(!isDataDentroPeriodo($scope.contratoTemp.dataVigenciaInicial, $scope.contratoTemp.dataUltimaVigenciaFinal,
150   - $scope.recebimentoObjeto.dataRecebimento)){
151   - $scope.showAlert('warning', $translate.instant('MSG.DATA_RECEBIMENTO_INVALIDA'));
152   - valido = false;
153   - }
154   - return valido;
155   - };
156   -
157   - var salvarUpload = function(documento, uploadsDocumento){
158   - if (uploadsDocumento != undefined && uploadsDocumento != null) {
159   - $scope.uploader.queue = uploadsDocumento;
160   - angular.forEach($scope.uploader.queue, function(item, key) {
161   - item.url = item.url + documento.id;
162   - });
163   - $scope.uploader.uploadAll();
164   - $scope.uploader.isUploading = false;
165   - };
166   - };
167   -
168   - $scope.gerarRelatorioRecebimentoObjeto = function(){
169   - $scope.url = '/cit-contratos-web/rest/eventoRecebimentoObjeto/pdfGerarRecebimentoObjeto?idRecebimentoObjeto=' + $scope.recebimentoObjeto.id;
170   - $scope.visualizarRelatorio($scope.url, $translate.instant('LABEL.TITULO_DOCUMENTO_RECEBIMENTO'));
171   - $scope.$modalInstance.dismiss('cancel');
172   -
173   - };
174   -
175   - (function init(){
176   - $scope.dominiosRecebimentoObjeto = {
177   - tiposStatus: [],
178   - tiposRecebimentos : [],
179   - tiposAvaliacaoPrazo : [],
180   - tiposAvaliacaoAdesao : [],
181   - };
182   - $scope.carregarDominios();
183   - if($scope.evento){
184   - $scope.getRecebimentoObjeto();
185   - } else {
186   - $scope.resetForm();
187   - }
188   - })();
  23 + $scope.getRecebimentoObjeto = function(){
  24 + var idRecebimentoObjeto = $scope.evento.id;
  25 + $scope.setLoadingGet(true);
  26 + EventoRecebimentoObjetoRepository.get(idRecebimentoObjeto).then(function(result) {
  27 + $scope.recebimentoObjeto = result.originalElement;
  28 + if($scope.contratoTemp == undefined){
  29 + $scope.contratoTemp= angular.copy($scope.recebimentoObjeto.contrato);
  30 + }
  31 + $scope.setLoading(false);
  32 + });
  33 + };
  34 +
  35 + $scope.resetForm = function(form) {
  36 +
  37 + if($scope.contratoTemp == undefined){
  38 + $scope.contratoTemp= angular.copy($scope.contrato);
  39 + }
  40 + if($scope.evento){
  41 + $scope.recebimentoObjeto.dataRecebimento = null;
  42 + $scope.recebimentoObjeto.justificativa = "";
  43 + } else {
  44 + $scope.recebimentoObjeto = {
  45 + contrato: $scope.contratoTemp,
  46 + dataRecebimento : $filter('date')(new Date(), "dd/MM/yyyy"),
  47 + tipoStatus : null,
  48 + tipoRecebimento : null,
  49 + tipoAvaliacaoPrazo : null,
  50 + tipoAvaliacaoAdesao : null,
  51 + justificativa : ""
  52 + };
  53 + }
  54 + if(form != undefined){
  55 + $timeout(function(){
  56 + form.$submitted = true;
  57 + form.$setPristine();
  58 + });
  59 + };
  60 + };
  61 +
  62 + $scope.carregarDominios = function(){
  63 + DominioRepository.findAllDominio('tipoEventoContratoRecebimentoObjeto').then(function(result) {
  64 + angular.forEach(result, function(item, key){
  65 + switch (item.codigo){
  66 + case 1 :
  67 + $scope.dominiosRecebimentoObjeto.tiposRecebimentos.push(item.originalElement);
  68 + break;
  69 + case 2 :
  70 + $scope.dominiosRecebimentoObjeto.tiposRecebimentos.push(item.originalElement);
  71 + break;
  72 + case 3 :
  73 + $scope.dominiosRecebimentoObjeto.tiposStatus.push(item.originalElement);
  74 + break;
  75 + case 4 :
  76 + $scope.dominiosRecebimentoObjeto.tiposStatus.push(item.originalElement);
  77 + break;
  78 + }
  79 + });
  80 + });
  81 +
  82 + DominioRepository.findAllDominio('tipoEventoContratoRecebimentoObjetoAvaliacaoPrazo').then(function(result) {
  83 + angular.forEach(result, function(item, key){
  84 + $scope.dominiosRecebimentoObjeto.tiposAvaliacaoPrazo.push(item.originalElement);
  85 + });
  86 + });
  87 + DominioRepository.findAllDominio('tipoEventoContratoRecebimentoObjetoAvaliacaoAdesao').then(function(result) {
  88 + angular.forEach(result, function(item, key){
  89 + $scope.dominiosRecebimentoObjeto.tiposAvaliacaoAdesao.push(item.originalElement);
  90 + });
  91 + });
  92 + };
  93 +
  94 + $scope.uploader = new FileUploader({
  95 + autoUpload: false,
  96 + queueLimit: 1,
  97 + url : '/cit-tabelas-corp-web/rest/anexo/uploadAnexo?idDocumento='
  98 + });
  99 +
  100 + $scope.salvarEvento = function(form){
  101 +
  102 + form.$submitted = true;
  103 + if(form && !form.$invalid) {
  104 + if ($scope.isInformacoesValidas()){
  105 + $scope.setLoadingSalva(true);
  106 +
  107 + if($scope.recebimentoObjetoTemp == null){
  108 + $scope.recebimentoObjetoTemp = {
  109 + documentos : []
  110 + };
  111 + angular.forEach($scope.recebimentoObjeto.documentos, function(documento, key) {
  112 + $scope.recebimentoObjetoTemp.documentos.push({
  113 + uploadsDocumento : clone(documento.uploadsDocumento),
  114 + numero : clone(documento.numero)
  115 + });
  116 + delete documento.uploadsDocumento;
  117 + });
  118 + };
  119 +
  120 + EventoRecebimentoObjetoRepository.save($scope.recebimentoObjeto).then(function(result) {
  121 + $scope.recebimentoObjeto = result.originalElement;
  122 +
  123 + angular.forEach($scope.recebimentoObjeto.documentos, function(documentoSalvo, key) {
  124 + if(documentoSalvo !== undefined && documentoSalvo.id !== undefined){
  125 + angular.forEach($scope.recebimentoObjetoTemp.documentos, function(documentoTransient, key) {
  126 + if(documentoSalvo.numero === documentoTransient.numero){
  127 + salvarUpload(documentoSalvo, documentoTransient.uploadsDocumento);
  128 + }
  129 + });
  130 + };
  131 + });
  132 + $scope.setLoading(false);
  133 + $scope.$modalInstance.dismiss('cancel');
  134 + $scope.showAlert("success", $translate.instant("MSG.MG001"));
  135 + $scope.buscaOcorrencias($scope.contratoTemp);
  136 + });
  137 + };
  138 + } else {
  139 + $scope.showAlert('error', $translate.instant('MSG.MN001'));
  140 + }
  141 + };
  142 +
  143 + $scope.isInformacoesValidas = function () {
  144 +
  145 + var valido = true;
  146 +
  147 + if(!isDataDentroPeriodo($scope.contratoTemp.dataVigenciaInicial, $scope.contratoTemp.dataUltimaVigenciaFinal,
  148 + $scope.recebimentoObjeto.dataRecebimento)){
  149 + $scope.showAlert('warning', $translate.instant('MSG.DATA_RECEBIMENTO_INVALIDA'));
  150 + valido = false;
  151 + }
  152 + return valido;
  153 + };
  154 +
  155 + var salvarUpload = function(documento, uploadsDocumento){
  156 + if (uploadsDocumento != undefined && uploadsDocumento != null) {
  157 + $scope.uploader.queue = uploadsDocumento;
  158 + angular.forEach($scope.uploader.queue, function(item, key) {
  159 + item.url = item.url + documento.id;
  160 + });
  161 + $scope.uploader.uploadAll();
  162 + $scope.uploader.isUploading = false;
  163 + };
  164 + };
  165 +
  166 + $scope.gerarRelatorioRecebimentoObjeto = function(){
  167 + $scope.url = '/cit-contratos-web/rest/eventoRecebimentoObjeto/pdfGerarRecebimentoObjeto?idRecebimentoObjeto=' + $scope.recebimentoObjeto.id;
  168 + $scope.visualizarRelatorio($scope.url, $translate.instant('LABEL.TITULO_DOCUMENTO_RECEBIMENTO'));
  169 + $scope.$modalInstance.dismiss('cancel');
  170 +
  171 + };
  172 +
  173 + (function init(){
  174 + $scope.dominiosRecebimentoObjeto = {
  175 + tiposStatus: [],
  176 + tiposRecebimentos : [],
  177 + tiposAvaliacaoPrazo : [],
  178 + tiposAvaliacaoAdesao : [],
  179 + };
  180 + $scope.carregarDominios();
  181 + if($scope.evento){
  182 + $scope.getRecebimentoObjeto();
  183 + } else {
  184 + $scope.resetForm();
  185 + }
  186 + })();
189 187  
190 188 }]);
... ...
cit-contratos-web/src/main/webapp/assets/js/angular/custom/controller/VisaoContratoController.js
... ... @@ -160,17 +160,27 @@ citApp.controller(&#39;VisaoContratoController&#39;, [&#39;$scope&#39;,
160 160 };
161 161  
162 162 $scope.editarModal = function (evento) {
163   - $scope.edit = true;
164   - $scope.abreModal(evento.tipoEvento.nome);
  163 + $scope.edit = true;
  164 +
  165 + if($scope.evento.aditivoDePrazo){
  166 + EventoAditivoRepository.existeAditivoPrazoPosterior($scope.evento.id).then(function (result) {
  167 + $scope.naoPermiteAlterarDataFim = result;
  168 + $scope.abreModal(evento.tipoEvento.nome);
  169 + });
  170 + }else{
  171 + $scope.abreModal(evento.tipoEvento.nome);
  172 + }
  173 +
165 174 };
166 175  
167 176 $scope.criarEvento = function () {
168   - $scope.evento = null;
169   - $timeout(function () {
170   - $scope.edit = true;
171   - $scope.abreModal($scope.contrato.contratoEvento.tipoEventoId);
172   - delete $scope.contrato.contratoEvento;
173   - });
  177 + $scope.naoPermiteAlterarDataFim = false;
  178 + $scope.evento = null;
  179 + $timeout(function () {
  180 + $scope.edit = true;
  181 + $scope.abreModal($scope.contrato.contratoEvento.tipoEventoId);
  182 + delete $scope.contrato.contratoEvento;
  183 + });
174 184 };
175 185  
176 186 var eventoClasses = {
... ... @@ -519,8 +529,19 @@ citApp.controller(&#39;VisaoContratoController&#39;, [&#39;$scope&#39;,
519 529 };
520 530  
521 531 $scope.removerEvento = function(){
522   - $scope.evento.justificativaExclusao = '';
523   - $scope.$openModal('modal-justificativa-exclusao.html', 'lg');
  532 + if($scope.evento.aditivoDePrazo){
  533 + EventoAditivoRepository.permiteExclusaoAditivo($scope.evento.id).then(function (result) {
  534 + if(result){
  535 + $scope.evento.justificativaExclusao = '';
  536 + $scope.$openModal('modal-justificativa-exclusao.html', 'lg');
  537 + }else{
  538 + $scope.showAlert('warning', $translate.instant('CONTRATOS.MSG.EXCLUSAO_ADITIVO_NEGADA'));
  539 + }
  540 + });
  541 + }else{
  542 + $scope.evento.justificativaExclusao = '';
  543 + $scope.$openModal('modal-justificativa-exclusao.html', 'lg');
  544 + }
524 545 };
525 546  
526 547 $scope.salvarJustificativaExclusao = function(form){
... ...
cit-contratos-web/src/main/webapp/assets/js/angular/custom/repository/EventoAditivoRepository.js
... ... @@ -4,10 +4,18 @@ citApp.factory(&#39;EventoAditivoRepository&#39;, [&#39;RestangularContratos&#39;, &#39;AbstractRepo
4 4  
5 5 function EventoAditivoRepository() {
6 6 AbstractRepository.call(this, restangularContratos, 'rest/eventoAditivo');
7   -
  7 +
8 8 this.findAllByContrato = function(contratoId) {
9 9 return restangularContratos.all(this.route+'/findAllByContrato').post(contratoId);
10   - };
  10 + };
  11 +
  12 + this.permiteExclusaoAditivo = function(aditivoId) {
  13 + return restangularContratos.one(this.route + "/permiteExclusaoAditivo").get({"aditivoId": aditivoId}).then();
  14 + };
  15 + this.existeAditivoPrazoPosterior = function(aditivoId) {
  16 + return restangularContratos.one(this.route + "/existeAditivoPrazoPosterior").get({"aditivoId": aditivoId}).then();
  17 + };
  18 +
11 19 }
12 20  
13 21 AbstractRepository.extend(EventoAditivoRepository);
... ...
cit-contratos-web/src/main/webapp/html/contrato/contratoPg5.html
... ... @@ -9,11 +9,11 @@
9 9 tooltip="{{$translate.instant('VALIDACAO.CONTRATO_EXIGE_MINIMO_TRES_ENVOLVIDOS')}}" tooltip-placement='top'/>
10 10 </label>
11 11 </legend>
12   -
13   - <script type="text/ng-template" id="modal-envolvido.html">
  12 +
  13 + <script type="text/ng-template" id="dialog_envolvido.html">
14 14 <div ng-include src="'/cit-contratos-web/html/contrato/dialog_envolvido.html'" />
15 15 </script>
16   -
  16 +
17 17 <div class="row margin-top">
18 18 <div class="col-sm-12">
19 19 <div class="panel panel-default">
... ... @@ -23,15 +23,15 @@
23 23 <i class="fa fa-plus-circle yellow-dark"></i>
24 24 <translate>LABEL.ADICIONAR</translate>
25 25 </button>
26   -
  26 +
27 27 <button title="{{$translate.instant('LABEL.VISUALIZAR')}}" alt="{{$translate.instant('LABEL.VISUALIZAR')}}" class="btn btn-clear" type="button"
28   - ng-click="abrirContratoEnvolvido(false);" ng-disabled="acaoEmMassaEnvolvido">
  28 + ng-click="visualizarEditarContratoEnvolvido(false);" ng-if="!acaoEmMassaEnvolvido">
29 29 <i class="fa fa-search blue"></i>
30 30 <translate>LABEL.VISUALIZAR</translate>
31 31 </button>
32   -
  32 +
33 33 <button title="{{$translate.instant('LABEL.EDITAR')}}" alt="{{$translate.instant('LABEL.EDITAR')}}" ng-show="edit" class="btn btn-clear" type="button"
34   - ng-click="abrirContratoEnvolvido(true);" ng-if="!acaoEmMassaEnvolvido">
  34 + ng-click="visualizarEditarContratoEnvolvido(true);" ng-if="!acaoEmMassaEnvolvido">
35 35 <i class="fa fa-pencil blue"></i>
36 36 <translate>LABEL.EDITAR</translate>
37 37 </button>
... ... @@ -65,55 +65,5 @@
65 65 </div><!-- .col -->
66 66 </div> <!-- .row -->
67 67 </fieldset><!-- .fieldset -->
68   -
69   - <fieldset ng-if="(contrato.id && hasAlteracaoEnvolvido) || (contrato.id && contrato.justificativas.length > 0)">
70   - <legend>
71   - <label ng-class="{'has-error' : informacoesEnvolvidosContratoForm.$submitted && hasAlteracaoEnvolvido && (!contrato.justificativas || contrato.justificativas.length < 1)}">
72   - <translate>LABEL.JUSTIFICATIVAS</translate>
73   - <span class='red' ng-show="true">*</span>
74   - <i ng-show="informacoesEnvolvidosContratoForm.$submitted && hasAlteracaoEnvolvido && (!contrato.justificativas || contrato.justificativas.length < 1)" class='fa fa-warning red'
75   - tooltip="{{$translate.instant('CONTRATOS.VALIDACAO.ALTERACAO_ENVOLVIDOS_EXIGE_JUSTIFICATIVA')}}" tooltip-placement='top'/>
76   - </label>
77   - </legend>
78   -
79   - <script type="text/ng-template" id="modal-justificativa.html">
80   - <div ng-include src="'/cit-contratos-web/html/contrato/dialog_justificativa.html'" />
81   - </script>
82   -
83   - <div class="row margin-top">
84   - <div class="col-sm-12">
85   - <div class="panel panel-default">
86   - <div class="panel-heading clearfix">
87   - <button title="{{$translate.instant('LABEL.ADICIONAR')}}" alt="{{$translate.instant('LABEL.ADICIONAR')}}" class="btn btn-clear" type="button" ng-show="true"
88   - ng-click="openModalJustificativa();">
89   - <i class="fa fa-plus-circle yellow-dark"></i>
90   - <translate>LABEL.ADICIONAR</translate>
91   - </button>
92   - </div><!-- .panel-heading -->
93   - <table class="table table-bordered table-striped">
94   - <thead>
95   - <tr>
96   - <th style="width: 5%;" class="text-center">#</th>
97   - <th style="width: 15%;" class="text-center"><translate>LABEL.DATA</translate></th>
98   - <th style="width: 65%;" class="text-center"><translate>LABEL.JUSTIFICATIVA</translate></th>
99   - <th style="width: 15%;" class="text-center"><translate>LABEL.USUARIO</translate></th>
100   - </tr>
101   - </thead>
102   - <tbody>
103   - <tr ng-hide="(contrato.justificativas && contrato.justificativas.length != 0)">
104   - <td colspan="4" class="text-center"><translate>LABEL.TABELA_VAZIA</translate></td>
105   - </tr>
106   - <tr ng-repeat="justificativa in contrato.justificativas">
107   - <td class="text-center">{{$index +1}}</td>
108   - <td class="text-center">{{ justificativa.dataCriacao | date : 'dd/MM/yyyy' }}</td>
109   - <td class="text-justify">{{ justificativa.descricao }}</td>
110   - <td class="text-center">{{ justificativa.autor.username }}</td>
111   - </tr>
112   - </tbody>
113   - </table>
114   - </div><!-- .painel -->
115   - </div><!-- .col -->
116   - </div> <!-- .row -->
117   - </fieldset><!-- .fieldset -->
118 68 </div><!-- /.page-content -->
119 69 </ng-form>
120 70 \ No newline at end of file
... ...
cit-contratos-web/src/main/webapp/html/contrato/dialog_envolvido.html
1 1 <ng-form name="formDialogEnvolvido" autocomplete="off">
2 2 <div class="modal-header">
3   - <button title="{{$translate.instant('LABEL.ADICIONAR')}}" alt="{{$translate.instant('LABEL.ADICIONAR')}}"
4   - ng-click="adicionarContratoEnvolvido(formDialogEnvolvido, false)" ng-if="editEnvolvido" class="btn btn-clear" type="button">
5   - <i class="fa fa-save green"></i>
6   - <translate>LABEL.ADICIONAR</translate>
7   - </button>
8   - <button title="{{$translate.instant('LABEL.ADICIONAR_NOVO')}}" alt="{{$translate.instant('LABEL.ADICIONAR_NOVO')}}"
9   - ng-click="adicionarContratoEnvolvido(formDialogEnvolvido, true)" ng-if="editEnvolvido" class="btn btn-clear" type="button">
10   - <i class="fa fa-save green"></i>
11   - <translate>LABEL.ADICIONAR_CONTINUAR</translate>
12   - </button>
13   -
14   - <button title="{{$translate.instant('LABEL.FECHAR')}}" alt="{{$translate.instant('LABEL.FECHAR')}}"
15   - ng-click="$dismiss('cancel');" class="btn btn-clear" type="button">
16   - <i class="fa fa-times red"></i>
17   - <translate>LABEL.FECHAR</translate>
18   - </button>
  3 + <button title="{{$translate.instant('LABEL.ADICIONAR')}}" alt="{{$translate.instant('LABEL.ADICIONAR')}}"
  4 + ng-click="adicionarContratoEnvolvido(formDialogEnvolvido, false)" ng-if="editEnvolvido" class="btn btn-clear" type="button">
  5 + <i class="fa fa-save green"></i>
  6 + <translate>LABEL.ADICIONAR</translate>
  7 + </button>
  8 + <button title="{{$translate.instant('LABEL.ADICIONAR_NOVO')}}" alt="{{$translate.instant('LABEL.ADICIONAR_NOVO')}}"
  9 + ng-click="adicionarContratoEnvolvido(formDialogEnvolvido, true)" ng-show="editEnvolvido && !hasAlteracaoEnvolvido" class="btn btn-clear" type="button">
  10 + <i class="fa fa-save green"></i>
  11 + <translate>LABEL.ADICIONAR_CONTINUAR</translate>
  12 + </button>
  13 +
  14 + <button title="{{$translate.instant('LABEL.FECHAR')}}" alt="{{$translate.instant('LABEL.FECHAR')}}"
  15 + ng-click="closeModalContratoEvolvido(formDialogEnvolvido);" class="btn btn-clear" type="button">
  16 + <i class="fa fa-times red"></i>
  17 + <translate>LABEL.FECHAR</translate>
  18 + </button>
19 19 </div>
20 20  
21 21 <div class="modal-body">
22   - <h2 class="title-modal"><translate>LABEL.ENVOLVIDO</translate></h2>
23   - <p ng-show="editEnvolvido">
24   - <small>( <span class="red">*</span> ) <translate>LABEL.CAMPOS_OBRIGATORIOS</translate></small>
25   - </p>
26   -
  22 + <h2 class="title-modal"><translate>LABEL.ENVOLVIDO</translate></h2>
  23 + <p ng-show="editEnvolvido">
  24 + <small>( <span class="red">*</span> ) <translate>LABEL.CAMPOS_OBRIGATORIOS</translate></small>
  25 + </p>
  26 +
27 27 <fieldset>
28 28 <div class="row">
29   - <div class="col-sm-4">
30   - <auto-complete ng-find="findEnvolvido(value)" ng-item="item.pessoa.nome"
31   - ng-id="contratoEnvolvidoTemp.envolvido" ng-label="LABEL.NOME_ENVOLVIDO" ng-model="contratoEnvolvidoTemp.envolvido"
32   - ng-disabled="!edit" form="formDialogEnvolvido" ng-obrigatorio="true"/>
  29 + <div class="col-sm-6">
  30 + <auto-complete ng-find="findEnvolvido(value)" ng-item="item.pessoa.nome" ng-disabled="!editEnvolvido"
  31 + ng-id="contratoEnvolvidoTemp.envolvido" ng-label="LABEL.NOME_ENVOLVIDO" ng-model="contratoEnvolvidoTemp.envolvido"
  32 + ng-disabled="!edit" form="formDialogEnvolvido" ng-obrigatorio="true" />
33 33 </div>
34   -
35   - <div class="col-sm-4">
36   - <label-input ng-type="text" ng-id="contratoEnvolvidoTemp.envolvido.matricula" ng-label="LABEL.MATRICULA"
37   - ng-model="contratoEnvolvidoTemp.envolvido.matricula" ng-custom-maxlength="30" form="formDialogEnvolvido"
  34 +
  35 + <div class="col-sm-3">
  36 + <label-input ng-type="text" ng-id="contratoEnvolvidoTemp.envolvido.matricula" ng-label="LABEL.MATRICULA"
  37 + ng-model="contratoEnvolvidoTemp.envolvido.matricula" ng-custom-maxlength="30" form="formDialogEnvolvido"
38 38 ng-disabled="true" ng-obrigatorio="false"/>
39 39 </div><!-- .col-sm-4 -->
40   -
41   - <div class="col-sm-4">
42   - <label-select ng-label="LABEL.PAPEL" ng-id="contratoEnvolvidoTemp.dominioPapelEnvolvidoContrato"
43   - ng-model="contratoEnvolvidoTemp.dominioPapelEnvolvidoContrato" ng-list="dominioPapelEnvolvidoList"
44   - form="formDialogEnvolvido" ng-obrigatorio="editEnvolvido" ng-disabled="!editEnvolvido"
  40 +
  41 + <div class="col-sm-3" >
  42 + <label-select ng-label="LABEL.PAPEL" ng-id="contratoEnvolvidoTemp.dominioPapelEnvolvidoContrato"
  43 + ng-model="contratoEnvolvidoTemp.dominioPapelEnvolvidoContrato" ng-list="dominioPapelEnvolvidoList"
  44 + form="formDialogEnvolvido" ng-obrigatorio="editEnvolvido && dominioPapelEnvolvidoList.length > 0"
  45 + ng-disabled="!editEnvolvido || dominioPapelEnvolvidoList.length == 0"
45 46 ng-custom-options="dominioPapelEnvolvido.originalElement as dominioPapelEnvolvido.descricao for dominioPapelEnvolvido"
46 47 track-by="track by dominioPapelEnvolvido.id"/>
47 48 </div><!-- .col-sm-4 -->
48 49 </div><!-- .row -->
  50 + </fieldset>
  51 + <fieldset ng-if="(contrato.id && hasAlteracaoEnvolvido) || (contrato.id && contratoEnvolvidoTemp.justificativas.length > 0)">
  52 + <div class="row">
  53 + <div class="col-sm-12">
  54 + <h2 class="title-modal"><translate>LABEL.JUSTIFICATIVA</translate></h2>
  55 + <p ng-show="editEnvolvido">
  56 + <small>( <span class="red">*</span> ) <translate>LABEL.CAMPOS_OBRIGATORIOS</translate></small>
  57 + </p>
  58 + </div>
  59 + </div>
  60 + <div class="row">
  61 + <div class="col-sm-12">
  62 + <label-text-area ng-id="justificativaTemp.descricao" ng-label="LABEL.JUSTIFICATIVA" ng-hide="!editEnvolvido"
  63 + form="formDialogJustificativa" rows="3" ng-custom-maxlength="500"
  64 + ng-model="justificativaTemp.descricao" ></label-text-area>
  65 + </div>
  66 + </div><!-- .row -->
  67 + <div class="row">
  68 + <div class="col-sm-4">
  69 + <button title="{{$translate.instant('CONTRATOS.LABEL.ADICIONAR_JUSTIFICATIVA')}}" alt="{{$translate.instant('CONTRATOS.LABEL.ADICIONAR_JUSTIFICATIVA')}}"
  70 + ng-click="adicionarJustificativa(formDialogEnvolvido)" ng-hide="!editEnvolvido" class="btn btn-success" type="button">
  71 + <i class="fa fa-save white"></i>
  72 + <translate>CONTRATOS.LABEL.ADICIONAR_JUSTIFICATIVA</translate>
  73 + </button>
  74 + </div>
  75 + </div><!-- .row -->
  76 + </br>
  77 + <div class="row">
  78 + <div class="col-sm-12">
  79 + <table class="table table-bordered table-striped">
  80 + <thead>
  81 + <tr>
  82 + <th style="width: 5%;" class="text-center">#</th>
  83 + <th style="width: 15%;" class="text-center"><translate>LABEL.DATA</translate></th>
  84 + <th style="width: 65%;" class="text-center"><translate>LABEL.JUSTIFICATIVA</translate></th>
  85 + <th style="width: 15%;" class="text-center"><translate>LABEL.USUARIO</translate></th>
  86 + </tr>
  87 + </thead>
  88 + <tbody>
  89 + <tr ng-hide="(contratoEnvolvidoTemp.justificativas && contratoEnvolvidoTemp.justificativas.length != 0)">
  90 + <td colspan="4" class="text-center"><translate>LABEL.TABELA_VAZIA</translate></td>
  91 + </tr>
  92 + <tr ng-repeat="justificativa in contratoEnvolvidoTemp.justificativas">
  93 + <td class="text-center">{{$index +1}}</td>
  94 + <td class="text-center">{{ justificativa.dataCriacao | date : 'dd/MM/yyyy' }}</td>
  95 + <td class="text-justify">{{ justificativa.descricao }}</td>
  96 + <td class="text-center">{{ justificativa.autor.username }}</td>
  97 + </tr>
  98 + </tbody>
  99 + </table>
  100 + </div><!-- .<!-- .col -->
  101 + </div><!-- .<!-- .row -->
49 102 </fieldset><!-- .fieldset -->
50 103 </div><!-- .<!-- .modal-body -->
51   -</ng-form>
52 104 \ No newline at end of file
  105 +</ng-form>
... ...
cit-contratos-web/src/main/webapp/html/eventos/cnt_ev_aditivo.html
... ... @@ -61,12 +61,12 @@
61 61 </div>
62 62 <div class="col-sm-4">
63 63 <label-input-data ng-id="aditivo.dataEmissao" ng-label="LABEL.DATA_EMISSAO_OCORRENCIA" ng-obrigatorio="true" ng-model="aditivo.dataEmissao" form="formDialogAditivo"
64   - ng-disabled="!edit || aditivo.id" ng-format="dd/MM/yyyy">
  64 + ng-disabled="!edit || (aditivo.aditivoDeClausula && aditivo.id)" ng-format="dd/MM/yyyy">
65 65 </label-input-data>
66 66 </div>
67 67 <div class="col-sm-4">
68 68 <label-select ng-label="LABEL.TIPO_ALTERACAO" ng-id="aditivo.tipoAlteracao" ng-model="aditivo.tipoAlteracao" form="formDialogAditivo" ng-list="tiposAlteracaoContrato"
69   - ng-custom-options="item.originalElement as item.descricao for item" track-by="track by item.id" ng-disabled="!edit || aditivo.id" ng-obrigatorio="true">
  69 + ng-custom-options="item.originalElement as item.descricao for item" track-by="track by item.id" ng-disabled="!edit || (aditivo.aditivoDeClausula && aditivo.id)" ng-obrigatorio="true">
70 70 </label-select>
71 71 </div>
72 72 </div>
... ... @@ -107,7 +107,7 @@
107 107 ng-model="aditivo.dataInicio" form="formDialogAditivo" />
108 108 </div>
109 109 <div class="col-sm-3">
110   - <label-input-data ng-id="aditivo.dataFim" ng-label="CONTRATOS.LABEL.DATA_FINAL_ADITIVO" ng-obrigatorio="aditivo.aditivoDePrazo" ng-disabled="!edit"
  110 + <label-input-data ng-id="aditivo.dataFim" ng-label="CONTRATOS.LABEL.DATA_FINAL_ADITIVO" ng-obrigatorio="aditivo.aditivoDePrazo" ng-disabled="!edit || naoPermiteAlterarDataFim"
111 111 ng-model="aditivo.dataFim" form="formDialogAditivo" />
112 112 </div>
113 113 </div>
... ... @@ -117,14 +117,14 @@
117 117 <div class="row">
118 118 <div class="col-sm-6">
119 119 <label-input-radio ng-id="aditivo.tipoAlteracaoValor.codigo" ng-label="LABEL.TIPO_ALTERACAO" list="tiposAlteracaoValor" ng-model="aditivo.tipoAlteracaoValor.codigo"
120   - ng-obrigatorio="aditivo.aditivoDeValor" text="descricao" value="codigo" form="formDialogAditivo" ng-disabled="!edit || aditivo.id">
  120 + ng-obrigatorio="aditivo.aditivoDeValor" text="descricao" value="codigo" form="formDialogAditivo" ng-disabled="!edit">
121 121 </label-input-radio>
122 122 </div>
123 123 </div>
124 124 <div class="row">
125 125 <div class="col-sm-4">
126 126 <label-select ng-label="CONTRATOS.LABEL.TIPO_OBJETO" ng-id="aditivo.tipoObjeto" ng-model="aditivo.tipoObjeto" form="formDialogAditivo" ng-list="tiposObjeto"
127   - ng-custom-options="item.originalElement as item.descricao for item" track-by="track by item.id" ng-disabled="!edit || aditivo.id" ng-obrigatorio="true">
  127 + ng-custom-options="item.originalElement as item.descricao for item" track-by="track by item.id" ng-disabled="!edit" ng-obrigatorio="true">
128 128 </label-select>
129 129 </div>
130 130 <div class="col-sm-3">
... ...
cit-contratos-web/src/main/webapp/html/eventos/cnt_ev_recebimentoobjeto.html
... ... @@ -79,6 +79,18 @@
79 79 ng-mask="99999/9999"
80 80 form="formDialogRecebimentoObjeto"/>
81 81 </div><!-- .col -->
  82 + <div class="col-sm-9">
  83 + <label-input ng-type="text"
  84 + ng-id="contrato.objetoContratacao"
  85 + ng-label="LABEL.OBJETO_CONTRATACAO"
  86 + ng-disabled="true"
  87 + ng-custom-maxlength="150"
  88 + ng-model="contrato.objetoContratacao"
  89 + form="formDialogRecebimentoObjeto"/>
  90 + </div><!-- .col -->
  91 + </div><!-- .row -->
  92 +
  93 + <div class="row">
82 94 <div class="col-sm-3">
83 95 <label-input-data ng-id="recebimentoObjeto.dataRecebimento"
84 96 ng-label="LABEL.DATA_RECEBIMENTO_OBJETO"
... ... @@ -102,18 +114,18 @@
102 114 </select>
103 115 </div><!--.col -->
104 116 <div class="col-sm-3">
105   - <label-input ng-type="text"
106   - ng-id="recebimentoObjeto.nomeObjeto"
107   - ng-label="LABEL.NOME_OBJETO"
108   - ng-disabled="!edit"
109   - ng-custom-maxlength="150"
110   - ng-obrigatorio="true"
111   - ng-model="recebimentoObjeto.nomeObjeto"
112   - form="formDialogRecebimentoObjeto"/>
113   - </div><!-- .col -->
114   - </div><!-- .row -->
115   -
116   - <div class="row">
  117 + <label-select ng-id="recebimentoObjeto.tiposStatus"
  118 + ng-label="LABEL.STATUS"
  119 + ng-model="recebimentoObjeto.tipoStatus"
  120 + form="formDialogRecebimentoObjeto"
  121 + ng-obrigatorio="true"
  122 + ng-disabled="!edit"
  123 + ng-list="dominiosRecebimentoObjeto.tiposStatus"
  124 + ng-custom-options="tipoStatus as tipoStatus.descricao for tipoStatus"
  125 + track-by="track by tipoStatus.id"/>
  126 + <option value="">Selecione</option>
  127 + </select>
  128 + </div><!-- .col -->
117 129 <div class="col-sm-3">
118 130 <div class="row">
119 131 <div class="col-sm-12">
... ... @@ -150,20 +162,7 @@
150 162 </select>
151 163 </div>
152 164 </div>
153   - </div>
154   - <div class="col-sm-3">
155   - <label-select ng-id="recebimentoObjeto.tiposStatus"
156   - ng-label="LABEL.STATUS"
157   - ng-model="recebimentoObjeto.tipoStatus"
158   - form="formDialogRecebimentoObjeto"
159   - ng-obrigatorio="true"
160   - ng-disabled="!edit"
161   - ng-list="dominiosRecebimentoObjeto.tiposStatus"
162   - ng-custom-options="tipoStatus as tipoStatus.descricao for tipoStatus"
163   - track-by="track by tipoStatus.id"/>
164   - <option value="">Selecione</option>
165   - </select>
166   - </div><!-- .col -->
  165 + </div>
167 166 </div><!-- .row -->
168 167  
169 168 <div class="row">
... ...