Commit 486ebd32c00c6ee99e042a889594ea5bd9ddd7dd
1 parent
ea3e7c3d
Exists in
master
[Redmine Atendimento #4331]Alteração Aditivo
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"> | ... | ... |