Commit 763e9bb5b774133c9b2c93c55d6d1526155ef034
Exists in
master
Merge branch 'tarefa-4331' into cnt-1.0.0-alfa11
Showing
10 changed files
with
196 additions
and
83 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/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<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/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<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/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-web/src/main/java/br/com/centralit/controller/EventoAditivoController.java
... | ... | @@ -129,4 +129,17 @@ public class EventoAditivoController extends GenericController<EventoAditivo>{ |
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
... | ... | @@ -985,6 +985,10 @@ public class StartupListenerContratos extends UtilStartup implements Application |
985 | 985 | internacionalizacaoList.add(new Internacionalizacao("CONTRATOS.LABEL.TERMO_REFERENCIA_PROJETO_BASICO", "Termo de referência/Projeto Básico", dominio, modulo)); |
986 | 986 | 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 | 987 | internacionalizacaoList.add(new Internacionalizacao("CONTRATOS.LABEL.ENCERRAMENTO_CONTRATO", "Encerramento de contrato", dominio, modulo)); |
988 | + | |
989 | + 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)); | |
990 | + 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)); | |
991 | + 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 | 992 | } |
989 | 993 | |
990 | 994 | private void gerarMensagem(Dominio dominio, Modulo modulo, List<Internacionalizacao> internacionalizacaoList) { | ... | ... |
cit-contratos-web/src/main/webapp/assets/js/angular/custom/controller/VisaoContratoController.js
... | ... | @@ -160,17 +160,27 @@ citApp.controller('VisaoContratoController', ['$scope', |
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('VisaoContratoController', ['$scope', |
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('EventoAditivoRepository', ['RestangularContratos', '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/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"> | ... | ... |