Commit a45a7f92829c6d58ab95cce3d9feb7731372f8da

Authored by Ciro Junior
1 parent a8d0db66
Exists in master

[Redmine #4235]

Commit parcial.
cit-contratos-api/src/main/java/br/com/centralit/api/model/Contrato.java
... ... @@ -33,17 +33,29 @@ import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
33 33 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
34 34  
35 35 /**
36   - * <p><img src="http://centralit.com.br/images/logo_central.png"></p>
  36 + * <p>
  37 + * <img src="http://centralit.com.br/images/logo_central.png">
  38 + * </p>
37 39 *
38   - * <p><b>Company: </b> Central IT - Governança Corporativa - </p>
  40 + * <p>
  41 + * <b>Company: </b> Central IT - Governança Corporativa -
  42 + * </p>
39 43 *
40   - * <p><b>Title: </b></p>
  44 + * <p>
  45 + * <b>Title: </b>
  46 + * </p>
41 47 *
42   - * <p><b>Description: </b></p>
  48 + * <p>
  49 + * <b>Description: </b>
  50 + * </p>
43 51 *
44   - * <p><b>Iniciativa(s):</b> <a href="LINK_PORTAL">NUMERO_INICIATIVA</a></p>
  52 + * <p>
  53 + * <b>Iniciativa(s):</b> <a href="LINK_PORTAL">NUMERO_INICIATIVA</a>
  54 + * </p>
45 55 *
46   - * <p><b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a></p>
  56 + * <p>
  57 + * <b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a>
  58 + * </p>
47 59 *
48 60 * @since 19/01/2016 - 14:04:42
49 61 *
... ... @@ -53,29 +65,35 @@ import com.fasterxml.jackson.databind.annotation.JsonSerialize;
53 65 *
54 66 */
55 67 @Entity
56   -@Table(name="cnt_contrato")
  68 +@Table(name = "cnt_contrato")
57 69 @JsonIgnoreProperties({ "valorTotalItens", "cnpjFornecedor", "valorTotalLiberado", "ultimaDataVigenciaFinal" })
58 70 public class Contrato extends PersistentObjectAuditOrganizacao {
59 71  
60   - /** Atributo serialVersionUID. */
61   - private static final long serialVersionUID = 1L;
  72 + /** Atributo serialVersionUID. */
  73 + private static final long serialVersionUID = 1L;
62 74  
63   - /** Atributo id. */
64   - @Id
65   - @GeneratedValue(strategy = GenerationType.AUTO)
66   - @JsonView({ Views.GenericView.class })
67   - private Long id;
  75 + /** Atributo id. */
  76 + @Id
  77 + @GeneratedValue(strategy = GenerationType.AUTO)
  78 + @JsonView({ Views.GenericView.class })
  79 + private Long id;
68 80  
69 81 /** Atributo programaAcao. */
70   - @ManyToOne(fetch = FetchType.LAZY, optional=true)
  82 + @ManyToOne(fetch = FetchType.LAZY, optional = true)
71 83 @JsonView({ ViewsContrato.ContratoEditView.class })
72 84 private ProgramaAcao programaAcao;
73 85  
74 86 /** Atributo numeroProcesso. */
75   - @Column(length = 30, nullable=false)
76   - @JsonView({ ViewsContrato.ContratoEditView.class, ViewsContrato.ContratoAutoCompleteView.class, ViewsContrato.OrdemFornecimentoEditView.class, ViewsContrato.EncerramentoContratoEditView.class,
77   - ViewsContrato.ContratoEventoEditView.class, ViewsContrato.EventoApostilamentoEditView.class, ViewsContrato.EventoPenalidadeEditView.class, ViewsContrato.EventoRecebimentoObjetoEditView.class})
78   - private Long numeroProcesso;
  87 + @Column(length = 30, nullable = false)
  88 + @JsonView({ ViewsContrato.ContratoEditView.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 })
  96 + private Long numeroProcesso;
79 97  
80 98 /** Atributo exercicio. */
81 99 @Column(name = "exercicio", nullable = false)
... ... @@ -86,108 +104,170 @@ public class Contrato extends PersistentObjectAuditOrganizacao {
86 104  
87 105 /** Atributo numeroAnoContrato. */
88 106 @Column(length = 30, nullable = false)
89   - @JsonView({ ViewsContrato.ContratoEditView.class, ViewsContrato.ContratoAutoCompleteView.class, ViewsContrato.CronogramaExecucaoEditView.class, ViewsContrato.OrdemFornecimentoListView.class,
90   - ViewsContrato.RegistroOcorrenciaEditView.class, ViewsContrato.NotificacaoContratoEditView.class, ViewsContrato.ContratoEventoEditView.class, ViewsContrato.EventoApostilamentoEditView.class,
91   - ViewsContrato.EventoPenalidadeEditView.class, ViewsContrato.EventoRecebimentoObjetoEditView.class})
  107 + @JsonView({ ViewsContrato.ContratoEditView.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 })
92 117 private String numeroAnoContrato;
93 118  
94 119 /** Atributo numeroAnoContrato. */
95 120 @Transient
96   - @JsonView({ ViewsContrato.OrdemFornecimentoListView.class, ViewsContrato.ContratoAutoCompleteView.class, ViewsContrato.CronogramaExecucaoEditView.class, ViewsContrato.RegistroOcorrenciaEditView.class,
97   - ViewsContrato.NotificacaoContratoEditView.class, ViewsContrato.EncerramentoContratoListView.class, ViewsContrato.ContratoEventoEditView.class, ViewsContrato.EventoApostilamentoEditView.class,
98   - ViewsContrato.EventoPenalidadeEditView.class, ViewsContrato.EventoRecebimentoObjetoEditView.class})
  121 + @JsonView({ ViewsContrato.OrdemFornecimentoListView.class,
  122 + ViewsContrato.ContratoAutoCompleteView.class,
  123 + ViewsContrato.CronogramaExecucaoEditView.class,
  124 + ViewsContrato.RegistroOcorrenciaEditView.class,
  125 + ViewsContrato.NotificacaoContratoEditView.class,
  126 + ViewsContrato.EncerramentoContratoListView.class,
  127 + ViewsContrato.ContratoEventoEditView.class,
  128 + ViewsContrato.EventoApostilamentoEditView.class,
  129 + ViewsContrato.EventoPenalidadeEditView.class,
  130 + ViewsContrato.EventoRecebimentoObjetoEditView.class })
99 131 private String numeroAnoContratoFormatado;
100 132  
101 133 /** Atributo dominioTipoContrato. */
102 134 @ManyToOne(fetch = FetchType.LAZY, optional = false)
103   - @JsonView({ ViewsContrato.ContratoEditView.class, ViewsContrato.ContratoAutoCompleteView.class, ViewsContrato.EncerramentoContratoEditView.class, ViewsContrato.RegistroOcorrenciaEditView.class })
104   - private Dominio dominioTipoContrato;
  135 + @JsonView({ ViewsContrato.ContratoEditView.class,
  136 + ViewsContrato.ContratoAutoCompleteView.class,
  137 + ViewsContrato.EncerramentoContratoEditView.class,
  138 + ViewsContrato.RegistroOcorrenciaEditView.class })
  139 + private Dominio dominioTipoContrato;
105 140  
106   - /** Atributo dominioTipoAquisicao. */
  141 + /** Atributo dominioTipoAquisicao. */
107 142 @ManyToOne(fetch = FetchType.LAZY, optional = false)
108   - @JsonView({ ViewsContrato.ContratoEditView.class, ViewsContrato.ContratoAutoCompleteView.class, ViewsContrato.OrdemFornecimentoEditView.class, ViewsContrato.EncerramentoContratoEditView.class })
109   - private Dominio dominioTipoAquisicao;
  143 + @JsonView({ ViewsContrato.ContratoEditView.class,
  144 + ViewsContrato.ContratoAutoCompleteView.class,
  145 + ViewsContrato.OrdemFornecimentoEditView.class,
  146 + ViewsContrato.EncerramentoContratoEditView.class })
  147 + private Dominio dominioTipoAquisicao;
110 148  
111   - /** Atributo dataCelebracao. */
  149 + /** Atributo dataCelebracao. */
112 150 @Column(nullable = false)
113   - @Temporal(TemporalType.TIMESTAMP)
114   - @JsonSerialize(using = JsonCalendarSimpleDateSerializer.class)
115   - @JsonDeserialize(using = JsonCalendarSimpleDateDeserializer.class)
116   - @JsonView({ ViewsContrato.ContratoEditView.class, ViewsContrato.ContratoAutoCompleteView.class, ViewsContrato.EncerramentoContratoEditView.class })
117   - private Calendar dataCelebracao;
  151 + @Temporal(TemporalType.TIMESTAMP)
  152 + @JsonSerialize(using = JsonCalendarSimpleDateSerializer.class)
  153 + @JsonDeserialize(using = JsonCalendarSimpleDateDeserializer.class)
  154 + @JsonView({ ViewsContrato.ContratoEditView.class,
  155 + ViewsContrato.ContratoAutoCompleteView.class,
  156 + ViewsContrato.EncerramentoContratoEditView.class })
  157 + private Calendar dataCelebracao;
118 158  
119   - /** Atributo dataVigenciaInicial. */
  159 + /** Atributo dataVigenciaInicial. */
120 160 @Column(nullable = false)
121   - @Temporal(TemporalType.TIMESTAMP)
122   - @JsonSerialize(using = JsonCalendarSimpleDateSerializer.class)
123   - @JsonDeserialize(using = JsonCalendarSimpleDateDeserializer.class)
124   - @JsonView({ ViewsContrato.ContratoEditView.class, ViewsContrato.ContratoAutoCompleteView.class, ViewsContrato.OrdemFornecimentoEditView.class, ViewsContrato.CronogramaExecucaoEditView.class,
125   - ViewsContrato.RegistroOcorrenciaEditView.class, ViewsContrato.NotificacaoContratoEditView.class, ViewsContrato.EncerramentoContratoEditView.class, ViewsContrato.EventoApostilamentoEditView.class,
126   - ViewsContrato.EventoRecebimentoObjetoEditView.class})
127   - private Calendar dataVigenciaInicial;
128   -
129   - /** Atributo dataVigenciaFinal. */
  161 + @Temporal(TemporalType.TIMESTAMP)
  162 + @JsonSerialize(using = JsonCalendarSimpleDateSerializer.class)
  163 + @JsonDeserialize(using = JsonCalendarSimpleDateDeserializer.class)
  164 + @JsonView({ ViewsContrato.ContratoEditView.class,
  165 + ViewsContrato.ContratoAutoCompleteView.class,
  166 + ViewsContrato.OrdemFornecimentoEditView.class,
  167 + ViewsContrato.CronogramaExecucaoEditView.class,
  168 + ViewsContrato.RegistroOcorrenciaEditView.class,
  169 + ViewsContrato.NotificacaoContratoEditView.class,
  170 + ViewsContrato.EncerramentoContratoEditView.class,
  171 + ViewsContrato.EventoApostilamentoEditView.class,
  172 + ViewsContrato.EventoRecebimentoObjetoEditView.class })
  173 + private Calendar dataVigenciaInicial;
  174 +
  175 + /** Atributo dataVigenciaFinal. */
130 176 @Column(nullable = false)
131   - @Temporal(TemporalType.TIMESTAMP)
132   - @JsonSerialize(using = JsonCalendarSimpleDateSerializer.class)
133   - @JsonDeserialize(using = JsonCalendarSimpleDateDeserializer.class)
134   - @JsonView({ ViewsContrato.ContratoEditView.class, ViewsContrato.ContratoAutoCompleteView.class, ViewsContrato.OrdemFornecimentoEditView.class, ViewsContrato.CronogramaExecucaoEditView.class,
135   - ViewsContrato.RegistroOcorrenciaEditView.class, ViewsContrato.NotificacaoContratoEditView.class, ViewsContrato.EncerramentoContratoEditView.class, ViewsContrato.EventoApostilamentoEditView.class,
136   - ViewsContrato.EventoRecebimentoObjetoEditView.class })
137   - private Calendar dataVigenciaFinal;
138   -
  177 + @Temporal(TemporalType.TIMESTAMP)
  178 + @JsonSerialize(using = JsonCalendarSimpleDateSerializer.class)
  179 + @JsonDeserialize(using = JsonCalendarSimpleDateDeserializer.class)
  180 + @JsonView({ ViewsContrato.ContratoEditView.class,
  181 + ViewsContrato.ContratoAutoCompleteView.class,
  182 + ViewsContrato.OrdemFornecimentoEditView.class,
  183 + ViewsContrato.CronogramaExecucaoEditView.class,
  184 + ViewsContrato.RegistroOcorrenciaEditView.class,
  185 + ViewsContrato.NotificacaoContratoEditView.class,
  186 + ViewsContrato.EncerramentoContratoEditView.class,
  187 + ViewsContrato.EventoApostilamentoEditView.class,
  188 + ViewsContrato.EventoRecebimentoObjetoEditView.class })
  189 + private Calendar dataVigenciaFinal;
  190 +
139 191 @Transient
140 192 @JsonSerialize(using = JsonCalendarSimpleDateSerializer.class)
141   - @JsonDeserialize(using = JsonCalendarSimpleDateDeserializer.class)
142   - @JsonView({ ViewsContrato.ContratoEditView.class, ViewsContrato.ContratoAutoCompleteView.class, ViewsContrato.OrdemFornecimentoEditView.class, ViewsContrato.CronogramaExecucaoEditView.class,
143   - ViewsContrato.RegistroOcorrenciaEditView.class, ViewsContrato.NotificacaoContratoEditView.class, ViewsContrato.EncerramentoContratoEditView.class, ViewsContrato.EventoApostilamentoEditView.class,
144   - ViewsContrato.EventoRecebimentoObjetoEditView.class })
  193 + @JsonDeserialize(using = JsonCalendarSimpleDateDeserializer.class)
  194 + @JsonView({ ViewsContrato.ContratoEditView.class,
  195 + ViewsContrato.ContratoAutoCompleteView.class,
  196 + ViewsContrato.OrdemFornecimentoEditView.class,
  197 + ViewsContrato.CronogramaExecucaoEditView.class,
  198 + ViewsContrato.RegistroOcorrenciaEditView.class,
  199 + ViewsContrato.NotificacaoContratoEditView.class,
  200 + ViewsContrato.EncerramentoContratoEditView.class,
  201 + ViewsContrato.EventoApostilamentoEditView.class,
  202 + ViewsContrato.EventoRecebimentoObjetoEditView.class })
145 203 private Calendar dataUltimaVigenciaFinal;
146 204  
147   - /** Atributo dominioSituacaoAtual. */
148   - @ManyToOne(fetch = FetchType.LAZY, optional=false)
149   - @JsonView({ ViewsContrato.ContratoEditView.class, ViewsContrato.ContratoAutoCompleteView.class, ViewsContrato.OrdemFornecimentoEditView.class, ViewsContrato.RegistroOcorrenciaEditView.class,
150   - ViewsContrato.ContratoEventoEditView.class, ViewsContrato.EventoApostilamentoEditView.class })
151   - private Dominio dominioSituacaoAtual;
152   -
153   - /** Atributo fornecedor. */
154   - @ManyToOne(fetch = FetchType.LAZY, optional=false)
155   - @JsonView({ ViewsContrato.ContratoEditView.class, ViewsContrato.ContratoAutoCompleteView.class, ViewsContrato.OrdemFornecimentoEditView.class, ViewsContrato.CronogramaExecucaoEditView.class,
156   - ViewsContrato.RegistroOcorrenciaEditView.class, ViewsContrato.NotificacaoContratoEditView.class, ViewsContrato.EncerramentoContratoListView.class, ViewsContrato.EventoApostilamentoEditView.class,
157   - ViewsContrato.EventoPenalidadeEditView.class})
158   - private Fornecedor fornecedor;
  205 + /** Atributo dominioSituacaoAtual. */
  206 + @ManyToOne(fetch = FetchType.LAZY, optional = false)
  207 + @JsonView({ ViewsContrato.ContratoEditView.class,
  208 + ViewsContrato.ContratoAutoCompleteView.class,
  209 + ViewsContrato.OrdemFornecimentoEditView.class,
  210 + ViewsContrato.RegistroOcorrenciaEditView.class,
  211 + ViewsContrato.ContratoEventoEditView.class,
  212 + ViewsContrato.EventoApostilamentoEditView.class })
  213 + private Dominio dominioSituacaoAtual;
  214 +
  215 + /** Atributo fornecedor. */
  216 + @ManyToOne(fetch = FetchType.LAZY, optional = false)
  217 + @JsonView({ ViewsContrato.ContratoEditView.class,
  218 + ViewsContrato.ContratoAutoCompleteView.class,
  219 + ViewsContrato.OrdemFornecimentoEditView.class,
  220 + ViewsContrato.CronogramaExecucaoEditView.class,
  221 + ViewsContrato.RegistroOcorrenciaEditView.class,
  222 + ViewsContrato.NotificacaoContratoEditView.class,
  223 + ViewsContrato.EncerramentoContratoListView.class,
  224 + ViewsContrato.EventoApostilamentoEditView.class,
  225 + ViewsContrato.EventoPenalidadeEditView.class })
  226 + private Fornecedor fornecedor;
159 227  
160 228 /** Atributo disponivel. */
161 229 @JsonView({ ViewsContrato.ContratoEditView.class })
162 230 private boolean renovavel;
163 231  
164 232 /** Atributo objetoContratacao. */
165   - @JsonView({ ViewsContrato.ContratoEditView.class, ViewsContrato.ContratoAutoCompleteView.class, ViewsContrato.EncerramentoContratoEditView.class, ViewsContrato.EventoApostilamentoEditView.class })
166   - @Column(length = 1024, nullable=false)
167   - private String objetoContratacao;
168   -
169   - /** Atributo valorContrato. */
170   - @Column(precision = 20, scale = 4)
171   - @JsonDeserialize(using = MoneyDeserializer.class)
172   - @JsonView({ ViewsContrato.ContratoEditView.class, ViewsContrato.ContratoAutoCompleteView.class, ViewsContrato.CronogramaExecucaoEditView.class, ViewsContrato.EncerramentoContratoEditView.class,
173   - ViewsContrato.RegistroOcorrenciaEditView.class, ViewsContrato.ContratoEventoEditView.class })
174   - private BigDecimal valorContrato;
175   -
176   - @Transient
177   - @JsonView({ ViewsContrato.ContratoEditView.class, ViewsContrato.ContratoAutoCompleteView.class, ViewsContrato.CronogramaExecucaoEditView.class, ViewsContrato.EncerramentoContratoEditView.class,
178   - ViewsContrato.RegistroOcorrenciaEditView.class, ViewsContrato.ContratoEventoEditView.class })
179   - private BigDecimal valorTotalContrato;
  233 + @JsonView({ ViewsContrato.ContratoEditView.class,
  234 + ViewsContrato.ContratoAutoCompleteView.class,
  235 + ViewsContrato.EncerramentoContratoEditView.class,
  236 + ViewsContrato.EventoApostilamentoEditView.class,
  237 + ViewsContrato.EventoRecebimentoObjetoEditView.class })
  238 + @Column(length = 1024, nullable = false)
  239 + private String objetoContratacao;
  240 +
  241 + /** Atributo valorContrato. */
  242 + @Column(precision = 20, scale = 4)
  243 + @JsonDeserialize(using = MoneyDeserializer.class)
  244 + @JsonView({ ViewsContrato.ContratoEditView.class,
  245 + ViewsContrato.ContratoAutoCompleteView.class,
  246 + ViewsContrato.CronogramaExecucaoEditView.class,
  247 + ViewsContrato.EncerramentoContratoEditView.class,
  248 + ViewsContrato.RegistroOcorrenciaEditView.class,
  249 + ViewsContrato.ContratoEventoEditView.class })
  250 + private BigDecimal valorContrato;
  251 +
  252 + @Transient
  253 + @JsonView({ ViewsContrato.ContratoEditView.class,
  254 + ViewsContrato.ContratoAutoCompleteView.class,
  255 + ViewsContrato.CronogramaExecucaoEditView.class,
  256 + ViewsContrato.EncerramentoContratoEditView.class,
  257 + ViewsContrato.RegistroOcorrenciaEditView.class,
  258 + ViewsContrato.ContratoEventoEditView.class })
  259 + private BigDecimal valorTotalContrato;
180 260  
181 261 /** Atributo dominioFormaPagamentoContrato. */
182   - @ManyToOne(fetch = FetchType.LAZY, optional=false)
183   - @JoinColumn(name = "formapagamentocontrato_id")
184   - @JsonView({ ViewsContrato.ContratoEditView.class })
185   - private Dominio dominioFormaPagamentoContrato;
  262 + @ManyToOne(fetch = FetchType.LAZY, optional = false)
  263 + @JoinColumn(name = "formapagamentocontrato_id")
  264 + @JsonView({ ViewsContrato.ContratoEditView.class })
  265 + private Dominio dominioFormaPagamentoContrato;
186 266  
187 267 /** Atributo numeroParcela. */
188 268 @JsonView({ ViewsContrato.ContratoEditView.class })
189 269 private Long numeroParcela;
190   -
  270 +
191 271 /** Atributo ordensFornecimento. */
192 272 @OneToMany(fetch = FetchType.LAZY, mappedBy = "contrato", cascade = CascadeType.ALL)
193 273 @JsonView({ ViewsContrato.ContratoEditView.class })
... ... @@ -205,74 +285,72 @@ public class Contrato extends PersistentObjectAuditOrganizacao {
205 285  
206 286 /** Atributo ctrtEmpenhos. */
207 287 @OneToMany(fetch = FetchType.LAZY, mappedBy = "contratoAditivo", cascade = CascadeType.ALL, targetEntity = EventoAditivo.class)
208   - @JsonView({ ViewsContrato.EventoAditivoEditView.class, ViewsContrato.ContratoEventoEditView.class, ViewsContrato.ContratoEditView.class })
  288 + @JsonView({ ViewsContrato.EventoAditivoEditView.class,
  289 + ViewsContrato.ContratoEventoEditView.class,
  290 + ViewsContrato.ContratoEditView.class })
209 291 private Collection<EventoAditivo> aditivos;
210 292  
211   - /** Atributo valorGarantia. */
212   - @Column(precision = 20, scale = 4)
213   - @JsonDeserialize(using = MoneyDeserializer.class)
214   - @JsonView({ ViewsContrato.ContratoEditView.class })
215   - private BigDecimal valorTotalEmpenhado;
  293 + /** Atributo valorGarantia. */
  294 + @Column(precision = 20, scale = 4)
  295 + @JsonDeserialize(using = MoneyDeserializer.class)
  296 + @JsonView({ ViewsContrato.ContratoEditView.class })
  297 + private BigDecimal valorTotalEmpenhado;
216 298  
217 299 /** Atributo numeroAnoEditalLicitacao. */
218   - @Column(length = 10, nullable=false)
219   - @JsonView({ ViewsContrato.ContratoEditView.class })
220   - private String numeroAnoEditalLicitacao;
  300 + @Column(length = 10, nullable = false)
  301 + @JsonView({ ViewsContrato.ContratoEditView.class })
  302 + private String numeroAnoEditalLicitacao;
221 303  
222   - /** Atributo dataPublicacaoLicitacao. */
223   - @Temporal(TemporalType.TIMESTAMP)
224   - @JsonSerialize(using = JsonCalendarSimpleDateSerializer.class)
225   - @JsonDeserialize(using = JsonCalendarSimpleDateDeserializer.class)
226   - @JsonView({ ViewsContrato.ContratoEditView.class })
227   - private Calendar dataPublicacaoLicitacao;
  304 + /** Atributo dataPublicacaoLicitacao. */
  305 + @Temporal(TemporalType.TIMESTAMP)
  306 + @JsonSerialize(using = JsonCalendarSimpleDateSerializer.class)
  307 + @JsonDeserialize(using = JsonCalendarSimpleDateDeserializer.class)
  308 + @JsonView({ ViewsContrato.ContratoEditView.class })
  309 + private Calendar dataPublicacaoLicitacao;
228 310  
229 311 /** Atributo dominioModalidadeLicitacao. */
230   - @ManyToOne(fetch = FetchType.LAZY, optional=false)
231   - @JsonView({ ViewsContrato.ContratoEditView.class })
232   - private Dominio dominioModalidadeLicitacao;
  312 + @ManyToOne(fetch = FetchType.LAZY, optional = false)
  313 + @JsonView({ ViewsContrato.ContratoEditView.class })
  314 + private Dominio dominioModalidadeLicitacao;
233 315  
234 316 /** Atributo dominioTipoLicitacao. */
235   - @ManyToOne(fetch = FetchType.LAZY, optional=true)
236   - @JsonView({ ViewsContrato.ContratoEditView.class })
237   - private Dominio dominioTipoLicitacao;
  317 + @ManyToOne(fetch = FetchType.LAZY, optional = true)
  318 + @JsonView({ ViewsContrato.ContratoEditView.class })
  319 + private Dominio dominioTipoLicitacao;
238 320  
239 321 /** Atributo ctrtEmpenhos. */
240 322 @OneToMany(fetch = FetchType.LAZY, mappedBy = "contrato", cascade = CascadeType.ALL)
241 323 @JsonView({ ViewsContrato.ContratoEditView.class, ViewsContrato.CronogramaExecucaoEditView.class })
242 324 private Collection<ContratoItem> ctrtItens;
243 325  
244   - /** Atributo garantias. ctrtEnvolvidos*/
  326 + /** Atributo garantias. ctrtEnvolvidos */
245 327 @OneToMany(fetch = FetchType.LAZY, mappedBy = "contrato", cascade = CascadeType.ALL)
246 328 @JsonView({ ViewsContrato.ContratoEditView.class })
247 329 private Collection<ContratoEnvolvido> ctrtEnvolvidos;
248 330  
249   - @OneToMany(fetch = FetchType.LAZY, mappedBy = "contrato", cascade = CascadeType.ALL)
  331 + /** Atributo dominioModalidadeGarantia. */
  332 + @ManyToOne(fetch = FetchType.LAZY)
250 333 @JsonView({ ViewsContrato.ContratoEditView.class })
251   - private Collection<ContratoEnvolvidoJustificativa> justificativas;
252   -
253   - /** Atributo dominioModalidadeGarantia. */
254   - @ManyToOne(fetch = FetchType.LAZY)
255   - @JsonView({ ViewsContrato.ContratoEditView.class })
256   - private Dominio dominioModalidadeGarantia;
  334 + private Dominio dominioModalidadeGarantia;
257 335  
258 336 /** Atributo dataVigencia. */
259   - @Temporal(TemporalType.TIMESTAMP)
260   - @JsonSerialize(using = JsonCalendarSimpleDateSerializer.class)
261   - @JsonDeserialize(using = JsonCalendarSimpleDateDeserializer.class)
262   - @JsonView({ ViewsContrato.ContratoEditView.class })
263   - private Calendar dataVigenciaGarantia;
264   -
265   - /** Atributo valorGarantia. */
266   - @Column(precision = 20, scale = 4)
267   - @JsonDeserialize(using = MoneyDeserializer.class)
268   - @JsonView({ ViewsContrato.ContratoEditView.class })
269   - private BigDecimal valorGarantia;
270   -
271   - /** Atributo percentual. */
272   - @Column(precision = 20, scale = 4)
273   - @JsonDeserialize(using = MoneyDeserializer.class)
274   - @JsonView({ ViewsContrato.ContratoEditView.class })
275   - private BigDecimal percentualGarantia;
  337 + @Temporal(TemporalType.TIMESTAMP)
  338 + @JsonSerialize(using = JsonCalendarSimpleDateSerializer.class)
  339 + @JsonDeserialize(using = JsonCalendarSimpleDateDeserializer.class)
  340 + @JsonView({ ViewsContrato.ContratoEditView.class })
  341 + private Calendar dataVigenciaGarantia;
  342 +
  343 + /** Atributo valorGarantia. */
  344 + @Column(precision = 20, scale = 4)
  345 + @JsonDeserialize(using = MoneyDeserializer.class)
  346 + @JsonView({ ViewsContrato.ContratoEditView.class })
  347 + private BigDecimal valorGarantia;
  348 +
  349 + /** Atributo percentual. */
  350 + @Column(precision = 20, scale = 4)
  351 + @JsonDeserialize(using = MoneyDeserializer.class)
  352 + @JsonView({ ViewsContrato.ContratoEditView.class })
  353 + private BigDecimal percentualGarantia;
276 354  
277 355 /** Atributo documentos. */
278 356 @OneToMany(fetch = FetchType.LAZY, mappedBy = "contrato", cascade = CascadeType.ALL, orphanRemoval = true)
... ... @@ -294,7 +372,6 @@ public class Contrato extends PersistentObjectAuditOrganizacao {
294 372 return id;
295 373 }
296 374  
297   -
298 375 /**
299 376 * Define o valor do atributo <code>id</code>.
300 377 *
... ... @@ -305,7 +382,6 @@ public class Contrato extends PersistentObjectAuditOrganizacao {
305 382 this.id = id;
306 383 }
307 384  
308   -
309 385 /**
310 386 * Retorna o valor do atributo <code>programaAcao</code>
311 387 *
... ... @@ -316,7 +392,6 @@ public class Contrato extends PersistentObjectAuditOrganizacao {
316 392 return programaAcao;
317 393 }
318 394  
319   -
320 395 /**
321 396 * Define o valor do atributo <code>programaAcao</code>.
322 397 *
... ... @@ -327,7 +402,6 @@ public class Contrato extends PersistentObjectAuditOrganizacao {
327 402 this.programaAcao = programaAcao;
328 403 }
329 404  
330   -
331 405 /**
332 406 * Retorna o valor do atributo <code>numeroProcesso</code>
333 407 *
... ... @@ -338,7 +412,6 @@ public class Contrato extends PersistentObjectAuditOrganizacao {
338 412 return numeroProcesso;
339 413 }
340 414  
341   -
342 415 /**
343 416 * Define o valor do atributo <code>numeroProcesso</code>.
344 417 *
... ... @@ -349,7 +422,6 @@ public class Contrato extends PersistentObjectAuditOrganizacao {
349 422 this.numeroProcesso = numeroProcesso;
350 423 }
351 424  
352   -
353 425 /**
354 426 * Retorna o valor do atributo <code>exercicio</code>
355 427 *
... ... @@ -360,7 +432,6 @@ public class Contrato extends PersistentObjectAuditOrganizacao {
360 432 return exercicio;
361 433 }
362 434  
363   -
364 435 /**
365 436 * Define o valor do atributo <code>exercicio</code>.
366 437 *
... ... @@ -377,6 +448,7 @@ public class Contrato extends PersistentObjectAuditOrganizacao {
377 448 * @return <code>String</code>
378 449 */
379 450 public String getNumeroAnoContratoFormatado() {
  451 +
380 452 if (this.numeroAnoContrato != null && this.numeroAnoContrato.length() == 13) {
381 453 this.numeroAnoContratoFormatado = numeroAnoContrato.substring(0, 9) + "/" + numeroAnoContrato.substring(9, 13);
382 454 }
... ... @@ -393,7 +465,6 @@ public class Contrato extends PersistentObjectAuditOrganizacao {
393 465 return numeroAnoContrato;
394 466 }
395 467  
396   -
397 468 /**
398 469 * Define o valor do atributo <code>numeroAnoContrato</code>.
399 470 *
... ... @@ -404,7 +475,6 @@ public class Contrato extends PersistentObjectAuditOrganizacao {
404 475 this.numeroAnoContrato = numeroAnoContrato;
405 476 }
406 477  
407   -
408 478 /**
409 479 * Retorna o valor do atributo <code>dominioTipoContrato</code>
410 480 *
... ... @@ -415,7 +485,6 @@ public class Contrato extends PersistentObjectAuditOrganizacao {
415 485 return dominioTipoContrato;
416 486 }
417 487  
418   -
419 488 /**
420 489 * Define o valor do atributo <code>dominioTipoContrato</code>.
421 490 *
... ... @@ -426,7 +495,6 @@ public class Contrato extends PersistentObjectAuditOrganizacao {
426 495 this.dominioTipoContrato = dominioTipoContrato;
427 496 }
428 497  
429   -
430 498 /**
431 499 * Retorna o valor do atributo <code>dominioTipoAquisicao</code>
432 500 *
... ... @@ -437,7 +505,6 @@ public class Contrato extends PersistentObjectAuditOrganizacao {
437 505 return dominioTipoAquisicao;
438 506 }
439 507  
440   -
441 508 /**
442 509 * Define o valor do atributo <code>dominioTipoAquisicao</code>.
443 510 *
... ... @@ -448,7 +515,6 @@ public class Contrato extends PersistentObjectAuditOrganizacao {
448 515 this.dominioTipoAquisicao = dominioTipoAquisicao;
449 516 }
450 517  
451   -
452 518 /**
453 519 * Retorna o valor do atributo <code>dataCelebracao</code>
454 520 *
... ... @@ -459,7 +525,6 @@ public class Contrato extends PersistentObjectAuditOrganizacao {
459 525 return dataCelebracao;
460 526 }
461 527  
462   -
463 528 /**
464 529 * Define o valor do atributo <code>dataCelebracao</code>.
465 530 *
... ... @@ -470,7 +535,6 @@ public class Contrato extends PersistentObjectAuditOrganizacao {
470 535 this.dataCelebracao = dataCelebracao;
471 536 }
472 537  
473   -
474 538 /**
475 539 * Retorna o valor do atributo <code>dataVigenciaInicial</code>
476 540 *
... ... @@ -481,7 +545,6 @@ public class Contrato extends PersistentObjectAuditOrganizacao {
481 545 return dataVigenciaInicial;
482 546 }
483 547  
484   -
485 548 /**
486 549 * Define o valor do atributo <code>dataVigenciaInicial</code>.
487 550 *
... ... @@ -492,7 +555,6 @@ public class Contrato extends PersistentObjectAuditOrganizacao {
492 555 this.dataVigenciaInicial = dataVigenciaInicial;
493 556 }
494 557  
495   -
496 558 /**
497 559 * Retorna o valor do atributo <code>dataVigenciaFinal</code>
498 560 *
... ... @@ -503,7 +565,6 @@ public class Contrato extends PersistentObjectAuditOrganizacao {
503 565 return dataVigenciaFinal;
504 566 }
505 567  
506   -
507 568 /**
508 569 * Define o valor do atributo <code>dataVigenciaFinal</code>.
509 570 *
... ... @@ -514,13 +575,13 @@ public class Contrato extends PersistentObjectAuditOrganizacao {
514 575 this.dataVigenciaFinal = dataVigenciaFinal;
515 576 }
516 577  
517   -
518 578 /**
519 579 * Retorna o valor do atributo <code>dataUltimaVigenciaFinal</code>
520 580 *
521 581 * @return <code>Calendar</code>
522 582 */
523 583 public Calendar getDataUltimaVigenciaFinal() {
  584 +
524 585 if (this.aditivos == null || this.aditivos.isEmpty()) {
525 586 return this.dataVigenciaFinal;
526 587 } else {
... ... @@ -534,18 +595,16 @@ public class Contrato extends PersistentObjectAuditOrganizacao {
534 595 return this.dataUltimaVigenciaFinal;
535 596 }
536 597  
537   -
538 598 /**
539 599 * Define o valor do atributo <code>dataUltimaVigenciaFinal</code>.
540 600 *
541   - * @param dataUltimaVigenciaFinal
  601 + * @param dataUltimaVigenciaFinal
542 602 */
543 603 public void setDataUltimaVigenciaFinal(Calendar dataUltimaVigenciaFinal) {
544   -
  604 +
545 605 this.dataUltimaVigenciaFinal = dataUltimaVigenciaFinal;
546 606 }
547 607  
548   -
549 608 /**
550 609 * Retorna o valor do atributo <code>dominioSituacaoAtual</code>
551 610 *
... ... @@ -556,7 +615,6 @@ public class Contrato extends PersistentObjectAuditOrganizacao {
556 615 return dominioSituacaoAtual;
557 616 }
558 617  
559   -
560 618 /**
561 619 * Define o valor do atributo <code>dominioSituacaoAtual</code>.
562 620 *
... ... @@ -567,7 +625,6 @@ public class Contrato extends PersistentObjectAuditOrganizacao {
567 625 this.dominioSituacaoAtual = dominioSituacaoAtual;
568 626 }
569 627  
570   -
571 628 /**
572 629 * Retorna o valor do atributo <code>fornecedor</code>
573 630 *
... ... @@ -578,7 +635,6 @@ public class Contrato extends PersistentObjectAuditOrganizacao {
578 635 return fornecedor;
579 636 }
580 637  
581   -
582 638 /**
583 639 * Define o valor do atributo <code>fornecedor</code>.
584 640 *
... ... @@ -589,7 +645,6 @@ public class Contrato extends PersistentObjectAuditOrganizacao {
589 645 this.fornecedor = fornecedor;
590 646 }
591 647  
592   -
593 648 /**
594 649 * Retorna o valor do atributo <code>renovavel</code>
595 650 *
... ... @@ -600,7 +655,6 @@ public class Contrato extends PersistentObjectAuditOrganizacao {
600 655 return renovavel;
601 656 }
602 657  
603   -
604 658 /**
605 659 * Define o valor do atributo <code>renovavel</code>.
606 660 *
... ... @@ -611,7 +665,6 @@ public class Contrato extends PersistentObjectAuditOrganizacao {
611 665 this.renovavel = renovavel;
612 666 }
613 667  
614   -
615 668 /**
616 669 * Retorna o valor do atributo <code>objetoContratacao</code>
617 670 *
... ... @@ -622,7 +675,6 @@ public class Contrato extends PersistentObjectAuditOrganizacao {
622 675 return objetoContratacao;
623 676 }
624 677  
625   -
626 678 /**
627 679 * Define o valor do atributo <code>objetoContratacao</code>.
628 680 *
... ... @@ -633,8 +685,6 @@ public class Contrato extends PersistentObjectAuditOrganizacao {
633 685 this.objetoContratacao = objetoContratacao;
634 686 }
635 687  
636   -
637   -
638 688 /**
639 689 * Retorna o valor do atributo <code>valorContrato</code>
640 690 *
... ... @@ -645,8 +695,6 @@ public class Contrato extends PersistentObjectAuditOrganizacao {
645 695 return valorContrato;
646 696 }
647 697  
648   -
649   -
650 698 /**
651 699 * Define o valor do atributo <code>valorContrato</code>.
652 700 *
... ... @@ -656,13 +704,14 @@ public class Contrato extends PersistentObjectAuditOrganizacao {
656 704  
657 705 this.valorContrato = valorContrato;
658 706 }
659   -
  707 +
660 708 /**
661 709 * Retorna o valor do atributo <code>valorTotalContrato</code>
662 710 *
663 711 * @return <code>BigDecimal</code>
664 712 */
665 713 public BigDecimal getValorTotalContrato() {
  714 +
666 715 if (this.aditivos == null || this.aditivos.isEmpty()) {
667 716 return this.valorContrato;
668 717 } else {
... ... @@ -677,18 +726,17 @@ public class Contrato extends PersistentObjectAuditOrganizacao {
677 726 }
678 727 return this.valorTotalContrato;
679 728 }
680   -
  729 +
681 730 /**
682 731 * Define o valor do atributo <code>valorTotalContrato</code>.
683 732 *
684   - * @param valorTotalContrato
  733 + * @param valorTotalContrato
685 734 */
686 735 public void setValorTotalContrato(BigDecimal valorTotalContrato) {
687   -
  736 +
688 737 this.valorTotalContrato = valorTotalContrato;
689 738 }
690 739  
691   -
692 740 /**
693 741 * Retorna o valor do atributo <code>dominioFormaPagamentoContrato</code>
694 742 *
... ... @@ -699,8 +747,6 @@ public class Contrato extends PersistentObjectAuditOrganizacao {
699 747 return dominioFormaPagamentoContrato;
700 748 }
701 749  
702   -
703   -
704 750 /**
705 751 * Define o valor do atributo <code>dominioFormaPagamentoContrato</code>.
706 752 *
... ... @@ -711,8 +757,6 @@ public class Contrato extends PersistentObjectAuditOrganizacao {
711 757 this.dominioFormaPagamentoContrato = dominioFormaPagamentoContrato;
712 758 }
713 759  
714   -
715   -
716 760 /**
717 761 * Retorna o valor do atributo <code>numeroParcela</code>
718 762 *
... ... @@ -723,8 +767,6 @@ public class Contrato extends PersistentObjectAuditOrganizacao {
723 767 return numeroParcela;
724 768 }
725 769  
726   -
727   -
728 770 /**
729 771 * Define o valor do atributo <code>numeroParcela</code>.
730 772 *
... ... @@ -735,8 +777,6 @@ public class Contrato extends PersistentObjectAuditOrganizacao {
735 777 this.numeroParcela = numeroParcela;
736 778 }
737 779  
738   -
739   -
740 780 /**
741 781 * Retorna o valor do atributo <code>ctrtValoresPagamento</code>
742 782 *
... ... @@ -747,8 +787,6 @@ public class Contrato extends PersistentObjectAuditOrganizacao {
747 787 return ctrtValoresPagamento;
748 788 }
749 789  
750   -
751   -
752 790 /**
753 791 * Define o valor do atributo <code>ctrtValoresPagamento</code>.
754 792 *
... ... @@ -759,7 +797,6 @@ public class Contrato extends PersistentObjectAuditOrganizacao {
759 797 this.ctrtValoresPagamento = ctrtValoresPagamento;
760 798 }
761 799  
762   -
763 800 /**
764 801 * Retorna o valor do atributo <code>ctrtEmpenhos</code>
765 802 *
... ... @@ -770,7 +807,6 @@ public class Contrato extends PersistentObjectAuditOrganizacao {
770 807 return ctrtEmpenhos;
771 808 }
772 809  
773   -
774 810 /**
775 811 * Define o valor do atributo <code>ctrtEmpenhos</code>.
776 812 *
... ... @@ -781,8 +817,6 @@ public class Contrato extends PersistentObjectAuditOrganizacao {
781 817 this.ctrtEmpenhos = ctrtEmpenhos;
782 818 }
783 819  
784   -
785   -
786 820 /**
787 821 * Retorna o valor do atributo <code>aditivos</code>
788 822 *
... ... @@ -793,8 +827,6 @@ public class Contrato extends PersistentObjectAuditOrganizacao {
793 827 return aditivos;
794 828 }
795 829  
796   -
797   -
798 830 /**
799 831 * Define o valor do atributo <code>aditivos</code>.
800 832 *
... ... @@ -805,7 +837,6 @@ public class Contrato extends PersistentObjectAuditOrganizacao {
805 837 this.aditivos = aditivos;
806 838 }
807 839  
808   -
809 840 /**
810 841 * Retorna o valor do atributo <code>valorTotalEmpenhado</code>
811 842 *
... ... @@ -816,7 +847,6 @@ public class Contrato extends PersistentObjectAuditOrganizacao {
816 847 return valorTotalEmpenhado;
817 848 }
818 849  
819   -
820 850 /**
821 851 * Define o valor do atributo <code>valorTotalEmpenhado</code>.
822 852 *
... ... @@ -827,7 +857,6 @@ public class Contrato extends PersistentObjectAuditOrganizacao {
827 857 this.valorTotalEmpenhado = valorTotalEmpenhado;
828 858 }
829 859  
830   -
831 860 /**
832 861 * Retorna o valor do atributo <code>numeroAnoEditalLicitacao</code>
833 862 *
... ... @@ -838,7 +867,6 @@ public class Contrato extends PersistentObjectAuditOrganizacao {
838 867 return numeroAnoEditalLicitacao;
839 868 }
840 869  
841   -
842 870 /**
843 871 * Define o valor do atributo <code>numeroAnoEditalLicitacao</code>.
844 872 *
... ... @@ -849,7 +877,6 @@ public class Contrato extends PersistentObjectAuditOrganizacao {
849 877 this.numeroAnoEditalLicitacao = numeroAnoEditalLicitacao;
850 878 }
851 879  
852   -
853 880 /**
854 881 * Retorna o valor do atributo <code>dataPublicacaoLicitacao</code>
855 882 *
... ... @@ -860,7 +887,6 @@ public class Contrato extends PersistentObjectAuditOrganizacao {
860 887 return dataPublicacaoLicitacao;
861 888 }
862 889  
863   -
864 890 /**
865 891 * Define o valor do atributo <code>dataPublicacaoLicitacao</code>.
866 892 *
... ... @@ -871,7 +897,6 @@ public class Contrato extends PersistentObjectAuditOrganizacao {
871 897 this.dataPublicacaoLicitacao = dataPublicacaoLicitacao;
872 898 }
873 899  
874   -
875 900 /**
876 901 * Retorna o valor do atributo <code>dominioModalidadeLicitacao</code>
877 902 *
... ... @@ -882,7 +907,6 @@ public class Contrato extends PersistentObjectAuditOrganizacao {
882 907 return dominioModalidadeLicitacao;
883 908 }
884 909  
885   -
886 910 /**
887 911 * Define o valor do atributo <code>dominioModalidadeLicitacao</code>.
888 912 *
... ... @@ -893,7 +917,6 @@ public class Contrato extends PersistentObjectAuditOrganizacao {
893 917 this.dominioModalidadeLicitacao = dominioModalidadeLicitacao;
894 918 }
895 919  
896   -
897 920 /**
898 921 * Retorna o valor do atributo <code>dominioTipoLicitacao</code>
899 922 *
... ... @@ -904,7 +927,6 @@ public class Contrato extends PersistentObjectAuditOrganizacao {
904 927 return dominioTipoLicitacao;
905 928 }
906 929  
907   -
908 930 /**
909 931 * Define o valor do atributo <code>dominioTipoLicitacao</code>.
910 932 *
... ... @@ -915,7 +937,6 @@ public class Contrato extends PersistentObjectAuditOrganizacao {
915 937 this.dominioTipoLicitacao = dominioTipoLicitacao;
916 938 }
917 939  
918   -
919 940 /**
920 941 * Retorna o valor do atributo <code>ctrtItens</code>
921 942 *
... ... @@ -926,7 +947,6 @@ public class Contrato extends PersistentObjectAuditOrganizacao {
926 947 return ctrtItens;
927 948 }
928 949  
929   -
930 950 /**
931 951 * Define o valor do atributo <code>ctrtItens</code>.
932 952 *
... ... @@ -937,7 +957,6 @@ public class Contrato extends PersistentObjectAuditOrganizacao {
937 957 this.ctrtItens = ctrtItens;
938 958 }
939 959  
940   -
941 960 /**
942 961 * Retorna o valor do atributo <code>ctrtEnvolvidos</code>
943 962 *
... ... @@ -948,7 +967,6 @@ public class Contrato extends PersistentObjectAuditOrganizacao {
948 967 return ctrtEnvolvidos;
949 968 }
950 969  
951   -
952 970 /**
953 971 * Define o valor do atributo <code>ctrtEnvolvidos</code>.
954 972 *
... ... @@ -963,26 +981,17 @@ public class Contrato extends PersistentObjectAuditOrganizacao {
963 981 * @return the ordensFornecimento
964 982 */
965 983 public Collection<OrdemFornecimento> getOrdensFornecimento() {
  984 +
966 985 return ordensFornecimento;
967 986 }
968 987  
969   -
970 988 /**
971   - * @param ordensFornecimento the ordensFornecimento to set
  989 + * @param ordensFornecimento
  990 + * the ordensFornecimento to set
972 991 */
973   - public void setOrdensFornecimento(
974   - Collection<OrdemFornecimento> ordensFornecimento) {
975   - this.ordensFornecimento = ordensFornecimento;
976   - }
977   -
978   -
979   - public Collection<ContratoEnvolvidoJustificativa> getJustificativas() {
980   - return justificativas;
981   - }
  992 + public void setOrdensFornecimento(Collection<OrdemFornecimento> ordensFornecimento) {
982 993  
983   - public void setJustificativas(
984   - Collection<ContratoEnvolvidoJustificativa> justificativas) {
985   - this.justificativas = justificativas;
  994 + this.ordensFornecimento = ordensFornecimento;
986 995 }
987 996  
988 997 /**
... ... @@ -995,8 +1004,6 @@ public class Contrato extends PersistentObjectAuditOrganizacao {
995 1004 return dominioModalidadeGarantia;
996 1005 }
997 1006  
998   -
999   -
1000 1007 /**
1001 1008 * Define o valor do atributo <code>dominioModalidadeGarantia</code>.
1002 1009 *
... ... @@ -1007,8 +1014,6 @@ public class Contrato extends PersistentObjectAuditOrganizacao {
1007 1014 this.dominioModalidadeGarantia = dominioModalidadeGarantia;
1008 1015 }
1009 1016  
1010   -
1011   -
1012 1017 /**
1013 1018 * Retorna o valor do atributo <code>dataVigenciaGarantia</code>
1014 1019 *
... ... @@ -1019,8 +1024,6 @@ public class Contrato extends PersistentObjectAuditOrganizacao {
1019 1024 return dataVigenciaGarantia;
1020 1025 }
1021 1026  
1022   -
1023   -
1024 1027 /**
1025 1028 * Define o valor do atributo <code>dataVigenciaGarantia</code>.
1026 1029 *
... ... @@ -1031,8 +1034,6 @@ public class Contrato extends PersistentObjectAuditOrganizacao {
1031 1034 this.dataVigenciaGarantia = dataVigenciaGarantia;
1032 1035 }
1033 1036  
1034   -
1035   -
1036 1037 /**
1037 1038 * Retorna o valor do atributo <code>valorGarantia</code>
1038 1039 *
... ... @@ -1043,8 +1044,6 @@ public class Contrato extends PersistentObjectAuditOrganizacao {
1043 1044 return valorGarantia;
1044 1045 }
1045 1046  
1046   -
1047   -
1048 1047 /**
1049 1048 * Define o valor do atributo <code>valorGarantia</code>.
1050 1049 *
... ... @@ -1055,8 +1054,6 @@ public class Contrato extends PersistentObjectAuditOrganizacao {
1055 1054 this.valorGarantia = valorGarantia;
1056 1055 }
1057 1056  
1058   -
1059   -
1060 1057 /**
1061 1058 * Retorna o valor do atributo <code>percentualGarantia</code>
1062 1059 *
... ... @@ -1067,8 +1064,6 @@ public class Contrato extends PersistentObjectAuditOrganizacao {
1067 1064 return percentualGarantia;
1068 1065 }
1069 1066  
1070   -
1071   -
1072 1067 /**
1073 1068 * Define o valor do atributo <code>percentualGarantia</code>.
1074 1069 *
... ... @@ -1079,7 +1074,6 @@ public class Contrato extends PersistentObjectAuditOrganizacao {
1079 1074 this.percentualGarantia = percentualGarantia;
1080 1075 }
1081 1076  
1082   -
1083 1077 /**
1084 1078 * Retorna o valor do atributo <code>documentos</code>
1085 1079 *
... ... @@ -1090,7 +1084,6 @@ public class Contrato extends PersistentObjectAuditOrganizacao {
1090 1084 return documentos;
1091 1085 }
1092 1086  
1093   -
1094 1087 /**
1095 1088 * Define o valor do atributo <code>documentos</code>.
1096 1089 *
... ... @@ -1101,7 +1094,6 @@ public class Contrato extends PersistentObjectAuditOrganizacao {
1101 1094 this.documentos = documentos;
1102 1095 }
1103 1096  
1104   -
1105 1097 /**
1106 1098 * Retorna o valor do atributo <code>observacoes</code>
1107 1099 *
... ... @@ -1112,7 +1104,6 @@ public class Contrato extends PersistentObjectAuditOrganizacao {
1112 1104 return observacoes;
1113 1105 }
1114 1106  
1115   -
1116 1107 /**
1117 1108 * Define o valor do atributo <code>observacoes</code>.
1118 1109 *
... ...
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")
  57 +@Table(name = "cnt_cn_envolvido")
43 58 @JsonIgnoreProperties({ "$checked" })
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/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;
... ... @@ -21,7 +22,6 @@ import br.com.centralit.api.model.Contrato;
21 22 import br.com.centralit.api.model.ContratoDocumento;
22 23 import br.com.centralit.api.model.ContratoEmpenho;
23 24 import br.com.centralit.api.model.ContratoEnvolvido;
24   -import br.com.centralit.api.model.ContratoEnvolvidoJustificativa;
25 25 import br.com.centralit.api.model.ContratoItem;
26 26 import br.com.centralit.api.model.ContratoObservacao;
27 27 import br.com.centralit.api.model.ContratoValorPagamento;
... ... @@ -67,7 +67,7 @@ import br.com.centralit.framework.util.UtilObjeto;
67 67 */
68 68 @Service("contratoService")
69 69 public class ContratoServiceImpl extends GenericServiceImpl<Contrato, Long> implements ContratoService {
70   -
  70 +
71 71 /** Atributo contratoDao. */
72 72 private ContratoDao contratoDao;
73 73  
... ... @@ -100,7 +100,7 @@ public class ContratoServiceImpl extends GenericServiceImpl&lt;Contrato, Long&gt; impl
100 100 /** Atributo colaboradorService. */
101 101 @Autowired
102 102 private EstudoTecnicoService estudoTecnicoService;
103   -
  103 +
104 104 @Autowired
105 105 private InternacionalizacaoService internacionalizacaoService;
106 106  
... ... @@ -142,9 +142,9 @@ public class ContratoServiceImpl extends GenericServiceImpl&lt;Contrato, Long&gt; impl
142 142 }
143 143  
144 144 validarExistenciaContratoMesmoNumeroAno(contrato);
145   -
  145 +
146 146 validarPapeisEnvolvidos(contrato);
147   -
  147 +
148 148 return super.save(contrato);
149 149 }
150 150  
... ... @@ -222,16 +222,16 @@ public class ContratoServiceImpl extends GenericServiceImpl&lt;Contrato, Long&gt; impl
222 222  
223 223 contratoEmpenho.setContrato(contrato);
224 224 contratoEmpenho.setContratoEmpenho(contrato);
225   -
  225 +
226 226 contratoEmpenho.setDataEvento(contratoEmpenho.getData());
227   -
  227 +
228 228 contratoEmpenho.setTipoEvento(this.dominioService.findByChaveAndCodigo(DominioContrato.TIPO_EVENTO_CONTRATO, DominioContrato.TIPO_EVENTO_EMPENHO));
229   -
  229 +
230 230 Dominio idioma = this.dominioService.findByChaveAndCodigo("tipoIdioma", Dominio.TIPO_IDIOMA_PT_BR_CODIGO);
231 231 String descricaoEmpenho = this.internacionalizacaoService.getTranslate("CONTRATOS.MSG.DESCRICAO_EMPENHO", idioma);
232 232 descricaoEmpenho = descricaoEmpenho.replace(":VALOR:", Util.convertBigDecimalToString(contratoEmpenho.getValorEmpenhado()));
233 233 descricaoEmpenho = descricaoEmpenho.replace(":DATAEVENTO:", UtilDate.formatarData(contratoEmpenho.getData().getTime(), "dd/MM/yyyy"));
234   -
  234 +
235 235 contratoEmpenho.setDescricao(descricaoEmpenho);
236 236 }
237 237 }
... ... @@ -253,22 +253,17 @@ public class ContratoServiceImpl extends GenericServiceImpl&lt;Contrato, Long&gt; impl
253 253 }
254 254  
255 255 // cria vinculo do contrato com as ctrtItens
256   - if (!UtilColecao.isVazio(contrato.getCtrtEnvolvidos())){
  256 + if (CollectionUtils.isNotEmpty(contrato.getCtrtEnvolvidos())){
257 257  
258 258 for (ContratoEnvolvido contratoEnvolvido : contrato.getCtrtEnvolvidos()) {
259 259  
260 260 contratoEnvolvido.setEnvolvido(this.colaboradorService.find(contratoEnvolvido.getEnvolvido().getId()));
261 261  
262 262 contratoEnvolvido.setContrato(contrato);
263   - }
264   - }
265   -
266   - // cria vinculo do contrato com as justificativas de alterções dos envolvidos
267   - if (!UtilColecao.isVazio(contrato.getJustificativas())){
268   -
269   - for (ContratoEnvolvidoJustificativa justificativa : contrato.getJustificativas()) {
270   -
271   - justificativa.setContrato(contrato);
  263 +
  264 + if (CollectionUtils.isNotEmpty(contratoEnvolvido.getJustificativas())){
  265 + contratoEnvolvido.setJustificativas(contratoEnvolvido.getJustificativas());
  266 + }
272 267 }
273 268 }
274 269 }
... ... @@ -388,48 +383,48 @@ public class ContratoServiceImpl extends GenericServiceImpl&lt;Contrato, Long&gt; impl
388 383 public Collection<Contrato> findAutoCompleteContratoPorNumeroAndOrganizacao(String numeroAnoContrato, Long idOrganizacao) {
389 384  
390 385 return contratoDao.findAutoCompleteContratoPorNumeroAndOrganizacao(numeroAnoContrato, idOrganizacao);
391   - }
392   -
  386 + }
  387 +
393 388 /**
394 389 * Método responsável validar se os papéis obrigatórios dos envolvidos no contrado foram informados.
395 390 *
396 391 * @author luis.camargo
397 392 *
398 393 * @param contrato
399   - *
  394 + *
400 395 */
401 396 private void validarPapeisEnvolvidos(Contrato contrato) {
402 397 List<Long> papeisInformados = new ArrayList<Long>();
403   -
  398 +
404 399 for (ContratoEnvolvido envolvido : contrato.getCtrtEnvolvidos()) {
405 400 papeisInformados.add(envolvido.getDominioPapelEnvolvidoContrato().getCodigo());
406 401 }
407   -
  402 +
408 403 StringBuilder complemento = new StringBuilder().append(
409 404 DominioContrato.DESCRICAO_TIPO_PAPEL_ENVOLVIDO_CONTRATO_GESTOR).append(", ").append(
410 405 DominioContrato.DESCRICAO_TIPO_PAPEL_ENVOLVIDO_CONTRATO_FISCAL_ADMINISTRATIVO).append(" e ").append(
411 406 DominioContrato.DESCRICAO_TIPO_PAPEL_ENVOLVIDO_CONTRATO_FISCAL_TECNICO);
412 407  
413   - boolean hasObrigatorios = papeisInformados.contains(DominioContrato.CODIGO_TIPO_PAPEL_ENVOLVIDO_CONTRATO_GESTOR) &&
414   - papeisInformados.contains(DominioContrato.CODIGO_TIPO_PAPEL_ENVOLVIDO_CONTRATO_FISCAL_TECNICO) &&
  408 + boolean hasObrigatorios = papeisInformados.contains(DominioContrato.CODIGO_TIPO_PAPEL_ENVOLVIDO_CONTRATO_GESTOR) &&
  409 + papeisInformados.contains(DominioContrato.CODIGO_TIPO_PAPEL_ENVOLVIDO_CONTRATO_FISCAL_TECNICO) &&
415 410 papeisInformados.contains(DominioContrato.CODIGO_TIPO_PAPEL_ENVOLVIDO_CONTRATO_FISCAL_ADMINISTRATIVO);
416 411 lancarBusinessException(!hasObrigatorios, "CONTRATOS.VALIDACAO.PAPEIS_OBRIGATORIOS_CONTRATO_FALTANDO", CodigoErro.REGRA_NEGOCIO.getValue(), complemento.toString());
417 412 }
418   -
  413 +
419 414 /**
420 415 * Método responsável validar se existe contrato com o mesmo numero/ano.
421   - *
  416 + *
422 417 * @author ronan.camargo
423   - *
  418 + *
424 419 * @param contrato
425 420 */
426 421 @SuppressWarnings({ "rawtypes", "unchecked" })
427 422 private void validarExistenciaContratoMesmoNumeroAno(Contrato contrato) {
428   -
  423 +
429 424 List<Contrato> contratos = (List) contratoDao.buscarPorAtributo("numeroAnoContrato", contrato.getNumeroAnoContrato());
430   -
  425 +
431 426 boolean isExistente = contratos != null && contratos.size() > 0;
432   -
  427 +
433 428 lancarBusinessException("CONTRATOS.VALIDACAO.NUMERO_CONTRATO_DUPLICADO", CodigoErro.REGRA_NEGOCIO.getValue(), isExistente);
434 429 }
435 430 }
... ...
cit-contratos-web/src/main/java/br/com/centralit/listener/StartupListenerContratos.java
... ... @@ -981,6 +981,7 @@ 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  
986 987 private void gerarMensagem(Dominio dominio, Modulo modulo, List<Internacionalizacao> internacionalizacaoList) {
... ...
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,
... ... @@ -237,83 +236,78 @@ citApp.controller(&#39;ContratoController&#39;, [&#39;$scope&#39;, &#39;$filter&#39;, &#39;FileUploader&#39;, &#39;C
237 236 $scope.contratoForm.anexosObservacoesContratoForm.$submitted = true;
238 237  
239 238 // verifica formulario valido
240   - if ($scope.contratoForm.$valid) {
241   -
242   - // data da celebracao nao pode ser maior que a data de vigencia inicial do contrato
243   - if(!isPeriodoValido($scope.contrato.dataCelebracao, $scope.contrato.dataVigenciaInicial)){
244   -
245   - $scope.showAlert('error', $translate.instant('VALIDACAO.DATA_CELEBRACAO_MAIOR_DATA_VIGENCIA_INICIAL'));
246   - return;
247   - }
248   -
249   - // data de vigencia inicial nao pode ser maior que a data de vigencia final do contrato
250   - if(!isPeriodoValido($scope.contrato.dataVigenciaInicial, $scope.contrato.dataVigenciaFinal)){
251   -
252   - $scope.showAlert('error', $translate.instant('VALIDACAO.DATA_VIGENCIA_INICIAL_MAIOR_DATA_VIGENCIA_FINAL_CONTRATO'));
253   - return;
254   - }
  239 + if ($scope.contratoForm.$invalid) {
  240 + $scope.showAlert('error', $translate.instant('VALIDACAO.ALERTA_OBRIGATORIOS'));
  241 + return;
  242 + }
255 243  
256   - // data de vigencia inicial nao pode ser maior que a data de vigencia final do contrato
257   - if($scope.contrato.ctrtEnvolvidos && $scope.contrato.ctrtEnvolvidos.length > 0 && $scope.contrato.ctrtEnvolvidos.length < 3){
  244 + if(!$scope.informacoesValidas()){
  245 + return;
  246 + };
258 247  
259   - $scope.showAlert('error', $translate.instant('VALIDACAO.CONTRATO_EXIGE_MINIMO_TRES_ENVOLVIDOS'));
  248 + if ($scope.contrato.ctrtValoresPagamento && $scope.contrato.ctrtValoresPagamento.length > 0){
  249 + if (!validarContratoValoresPagamento()){
260 250 return;
261 251 }
  252 + angular.forEach($scope.contrato.ctrtValoresPagamento, function(parcelaValorPagamento){
  253 + if (parcelaValorPagamento.seguencia){
  254 + delete parcelaValorPagamento.seguencia;
  255 + }
  256 + });
  257 + }
262 258  
263   - if($scope.contrato.id && $scope.hasAlteracaoEnvolvido){
  259 + $scope.contratoTemp = {
  260 + documentos: []
  261 + };
264 262  
265   - $scope.showAlert('error', $translate.instant('CONTRATOS.VALIDACAO.ALTERACAO_ENVOLVIDOS_EXIGE_JUSTIFICATIVA'));
266   - return;
267   - } else {
268   - angular.forEach($scope.contrato.justificativas, function(justificativa){
269   - delete justificativa.autor;
270   - delete justificativa.dataCriacao;
  263 + // preencher lista de documentos temporarios para verificacao dos anexos. verificar qual anexo e de qual documento pelo numero do documento
  264 + angular.forEach($scope.contrato.documentos, function(documento, key) {
  265 + if (documento.uploadsDocumento) {
  266 + $scope.contratoTemp.documentos.push({
  267 + uploadsDocumento: clone(documento.uploadsDocumento),
  268 + numero: clone(documento.numero)
271 269 });
  270 + // deleta esse atributo por causa de um erro de ciclo no json
  271 + delete documento.uploadsDocumento;
272 272 }
  273 + });
273 274  
274   - if ($scope.contrato.ctrtValoresPagamento && $scope.contrato.ctrtValoresPagamento.length > 0){
275   -
276   - if (!validarContratoValoresPagamento()){
277   -
278   - return;
279   -
280   - } else {
  275 + if ($scope.contrato.programaAcao && $scope.contrato.programaAcao.originalElement) {
  276 + $scope.contrato.programaAcao = $scope.contrato.programaAcao.originalElement;
  277 + }
  278 + verificarValorTotalEmpenhado();
  279 + };
281 280  
282   - angular.forEach($scope.contrato.ctrtValoresPagamento, function(parcelaValorPagamento){
  281 + $scope.informacoesValidas = function () {
283 282  
284   - if (parcelaValorPagamento.seguencia){
  283 + // data da celebracao nao pode ser maior que a data de vigencia inicial do contrato
  284 + if(!isPeriodoValido($scope.contrato.dataCelebracao, $scope.contrato.dataVigenciaInicial)){
  285 + $scope.showAlert('error', $translate.instant('VALIDACAO.DATA_CELEBRACAO_MAIOR_DATA_VIGENCIA_INICIAL'));
  286 + return false;
  287 + }
285 288  
286   - delete parcelaValorPagamento.seguencia;
287   - }
288   - });
289   - }
290   - }
  289 + // data de vigencia inicial nao pode ser maior que a data de vigencia final do contrato
  290 + if(!isPeriodoValido($scope.contrato.dataVigenciaInicial, $scope.contrato.dataVigenciaFinal)){
  291 + $scope.showAlert('error', $translate.instant('VALIDACAO.DATA_VIGENCIA_INICIAL_MAIOR_DATA_VIGENCIA_FINAL_CONTRATO'));
  292 + return false;
  293 + }
291 294  
292   - $scope.contratoTemp = {
293   - documentos: []
294   - };
  295 + // data de vigencia inicial nao pode ser maior que a data de vigencia final do contrato
  296 + if($scope.contrato.ctrtEnvolvidos && $scope.contrato.ctrtEnvolvidos.length > 0 && $scope.contrato.ctrtEnvolvidos.length < 3){
  297 + $scope.showAlert('error', $translate.instant('VALIDACAO.CONTRATO_EXIGE_MINIMO_TRES_ENVOLVIDOS'));
  298 + return false;
  299 + }
295 300  
296   - // preencher lista de documentos temporarios para verificacao dos anexos. verificar qual anexo e de qual documento pelo numero do documento
297   - angular.forEach($scope.contrato.documentos, function(documento, key) {
298   - if (documento.uploadsDocumento) {
299   - $scope.contratoTemp.documentos.push({
300   - uploadsDocumento: clone(documento.uploadsDocumento),
301   - numero: clone(documento.numero)
302   - });
303   - // deleta esse atributo por causa de um erro de ciclo no json
304   - delete documento.uploadsDocumento;
305   - }
  301 + if($scope.contrato.id && $scope.hasAlteracaoEnvolvido){
  302 + $scope.showAlert('error', $translate.instant('CONTRATOS.VALIDACAO.ALTERACAO_ENVOLVIDOS_EXIGE_JUSTIFICATIVA'));
  303 + return false;
  304 + } else if ($scope.contrato.ctrtEnvolvidos){
  305 + angular.forEach($scope.contrato.ctrtEnvolvidos.justificativas, function(justificativa){
  306 + delete justificativa.autor;
  307 + delete justificativa.dataCriacao;
306 308 });
307   -
308   - if ($scope.contrato.programaAcao && $scope.contrato.programaAcao.originalElement) {
309   - $scope.contrato.programaAcao = $scope.contrato.programaAcao.originalElement;
310   - }
311   -
312   - verificarValorTotalEmpenhado();
313   - } else {
314   -
315   - $scope.showAlert('error', $translate.instant('VALIDACAO.ALERTA_OBRIGATORIOS'));
316 309 }
  310 + return true;
317 311 };
318 312  
319 313 function save() {
... ... @@ -563,12 +557,12 @@ citApp.controller(&#39;ContratoController&#39;, [&#39;$scope&#39;, &#39;$filter&#39;, &#39;FileUploader&#39;, &#39;C
563 557 });
564 558 }
565 559 });
566   -
  560 +
567 561 // watch para calcular valor da porecentagem da garantia
568 562 $scope.$watchCollection('contrato.valorGarantia', function() {
569 563 $scope.atualizaPercentualGarantia();
570 564 });
571   -
  565 +
572 566 // watch para calcular valor da porecentagem da garantia
573 567 $scope.$watchCollection('contrato.valorContrato', function() {
574 568 if ($scope.contrato.valorGarantia) {
... ... @@ -1363,10 +1357,8 @@ citApp.controller(&#39;ContratoController&#39;, [&#39;$scope&#39;, &#39;$filter&#39;, &#39;FileUploader&#39;, &#39;C
1363 1357 });
1364 1358  
1365 1359 if (contratoEnvolvidosChecked.length > 1){
1366   -
1367 1360 $scope.acaoEmMassaEnvolvido = true;
1368 1361 } else {
1369   -
1370 1362 $scope.acaoEmMassaEnvolvido = false;
1371 1363 }
1372 1364 };
... ... @@ -1374,100 +1366,92 @@ citApp.controller(&#39;ContratoController&#39;, [&#39;$scope&#39;, &#39;$filter&#39;, &#39;FileUploader&#39;, &#39;C
1374 1366 // responsavel por abrir modal de adicao de um contratoEnvolvido
1375 1367 $scope.openModalContratoEnvolvido = function() {
1376 1368  
1377   - filtrarPapeisSelecionados();
  1369 + //filtrarPapeisSelecionados();
1378 1370  
1379 1371 $scope.contratoEnvolvidoTemp = {};
1380 1372 $scope.editEnvolvido = true;
1381   - $scope.$openModal('modal-envolvido.html', 'lg');
  1373 + $scope.$openModal('dialog_envolvido.html', 'lg');
1382 1374 };
1383 1375  
1384   - // responsavel por abrir modal de adicao de uma justificativa
1385   - $scope.openModalJustificativa = function() {
1386   -
1387   - $scope.justificativaTemp = {};
1388   - $scope.editEnvolvido = true;
1389   - $scope.$openModal('modal-justificativa.html', 'lg');
  1376 + $scope.closeModalContratoEvolvido = function(formDialogEnvolvido) {
  1377 + $scope.hasAlteracaoEnvolvido = false;
  1378 + formDialogEnvolvido.$submitted = false;
  1379 + $scope.$modalInstance.dismiss('cancel');
1390 1380 };
1391 1381  
1392 1382 $scope.adicionarContratoEnvolvido = function (formDialogEnvolvido, continuarEditando) {
1393 1383  
1394 1384 formDialogEnvolvido.$submitted = true;
  1385 + if($scope.contrato.id && $scope.hasAlteracaoEnvolvido){
  1386 + if($scope.contratoEnvolvidoTemp.justificativas.length === 0 || $scope.contratoEnvolvidoTemp.justificativas.length === $scope.justificativasAnterioresLength){
  1387 + $scope.showAlert('error', $translate.instant('CONTRATOS.VALIDACAO.ALTERACAO_ENVOLVIDOS_EXIGE_JUSTIFICATIVA'));
  1388 + return;
  1389 + }
  1390 + }
1395 1391  
1396   - if (formDialogEnvolvido.$valid) {
1397   - if ($scope.contrato.ctrtEnvolvidos){
1398   - if ($scope.contratoEnvolvidoTemp.$checked) {
1399   - for (var i = 0; i < $scope.contrato.ctrtEnvolvidos.length; i++) {
1400   - if ($scope.contrato.ctrtEnvolvidos[i].$checked) {
1401   - $scope.contrato.ctrtEnvolvidos[i] = $scope.contratoEnvolvidoTemp;
1402   - }
  1392 + if (formDialogEnvolvido.$invalid) {
  1393 + //Mensagem de erro de campos obrigatorios nao preenchidos
  1394 + $scope.showAlert('error', $translate.instant('VALIDACAO.ALERTA_OBRIGATORIOS'), " ", false);
  1395 + return;
  1396 + }
  1397 + if ($scope.contrato.ctrtEnvolvidos){
  1398 + if ($scope.contratoEnvolvidoTemp.$checked) {
  1399 + for (var i = 0; i < $scope.contrato.ctrtEnvolvidos.length; i++) {
  1400 + if ($scope.contrato.ctrtEnvolvidos[i].$checked) {
  1401 + $scope.contrato.ctrtEnvolvidos[i] = $scope.contratoEnvolvidoTemp;
1403 1402 }
1404   - } else {
1405   - $scope.contrato.ctrtEnvolvidos.push($scope.contratoEnvolvidoTemp);
1406 1403 }
1407   - }
1408   -
1409   - $scope.contratoEnvolvidoTemp = {};
1410   - if (continuarEditando) {
1411   - formDialogEnvolvido.$submitted = false;
1412   - formDialogEnvolvido.$setPristine();
1413   - filtrarPapeisSelecionados();
1414 1404 } else {
1415   - $scope.$modalInstance.dismiss('cancel');
  1405 + $scope.contrato.ctrtEnvolvidos.push($scope.contratoEnvolvidoTemp);
1416 1406 }
  1407 + }
1417 1408  
1418   - if ($scope.contrato.id){
1419   - $scope.hasAlteracaoEnvolvido = true;
1420   - }
  1409 + $scope.contratoEnvolvidoTemp = {};
  1410 + $scope.justificativaTemp = {};
  1411 + if (continuarEditando) {
  1412 + formDialogEnvolvido.$submitted = false;
  1413 + formDialogEnvolvido.$setPristine();
  1414 + //filtrarPapeisSelecionados();
1421 1415 } else {
1422   - //Mensagem de erro de campos obrigatorios n�o preenchidos
1423   - $scope.showAlert('error', $translate.instant('VALIDACAO.ALERTA_OBRIGATORIOS'), " ", false);
  1416 + $scope.$modalInstance.dismiss('cancel');
1424 1417 }
1425 1418 };
1426 1419  
1427   - $scope.adicionarJustificativa = function (formDialogJustificativa, continuarEditando) {
1428   -
1429   - formDialogJustificativa.$submitted = true;
  1420 + $scope.adicionarJustificativa = function (form) {
1430 1421  
1431   - if (formDialogJustificativa.$valid) {
1432   - if ($scope.contrato.justificativas){
1433   - $scope.justificativaTemp.autor = $scope.usuarioLogado;
1434   - $scope.justificativaTemp.dataCriacao = new Date();
1435   - $scope.contrato.justificativas.push($scope.justificativaTemp);
1436   - }
  1422 + form.$submitted = true;
1437 1423  
1438   - $scope.justificativaTemp = {};
1439   - if (continuarEditando) {
1440   - formDialogJustificativa.$submitted = false;
1441   - formDialogJustificativa.$setPristine();
1442   - } else {
1443   - $scope.$modalInstance.dismiss('cancel');
1444   - }
1445   - $scope.hasAlteracaoEnvolvido = false;
1446   - } else {
1447   - //Mensagem de erro de campos obrigatorios n�o preenchidos
  1424 + if (form.$invalid) {
  1425 + //Mensagem de erro de campos obrigatorios nao preenchidos
1448 1426 $scope.showAlert('error', $translate.instant('VALIDACAO.ALERTA_OBRIGATORIOS'), " ", false);
  1427 + return;
1449 1428 }
1450   - };
1451   -
1452   - function filtrarPapeisSelecionados() {
1453   - if ($scope.contrato.ctrtEnvolvidos && $scope.contrato.ctrtEnvolvidos.length > 0){
1454   -
1455   - var dominiosPapelEnvolvidoContrato = [];
1456   - $scope.contrato.ctrtEnvolvidos.forEach(function(item){
1457   -
1458   - dominiosPapelEnvolvidoContrato.push(item.dominioPapelEnvolvidoContrato);
1459   - });
1460   -
1461   - $scope.dominioPapelEnvolvidoList = $filter('idNotEqualDominio')($scope.dominioPapelEnvolvidoListFixa, dominiosPapelEnvolvidoContrato);
1462   -
1463   - if ($scope.dominioPapelEnvolvidoList && $scope.dominioPapelEnvolvidoList.length === 0){
1464   -
1465   - $scope.showAlert('warning', $translate.instant('CONTRATOS.MSG.TODOS_PAPEIS_ENVOLVIDOS_ADICIONADOS'));
1466   - return;
1467   - }
  1429 + if ($scope.contratoEnvolvidoTemp.justificativas){
  1430 + $scope.justificativaTemp.autor = $scope.usuarioLogado;
  1431 + $scope.justificativaTemp.dataCriacao = new Date();
  1432 + $scope.contratoEnvolvidoTemp.justificativas.push($scope.justificativaTemp);
1468 1433 }
  1434 + $scope.justificativaTemp = {};
  1435 + $scope.hasAlteracaoEnvolvido = false;
1469 1436 };
1470 1437  
  1438 +// function filtrarPapeisSelecionados() {
  1439 +// if ($scope.contrato.ctrtEnvolvidos && $scope.contrato.ctrtEnvolvidos.length > 0){
  1440 +//
  1441 +// var dominiosPapelEnvolvidoContrato = [];
  1442 +// $scope.contrato.ctrtEnvolvidos.forEach(function(item){
  1443 +// dominiosPapelEnvolvidoContrato.push(item.dominioPapelEnvolvidoContrato);
  1444 +// });
  1445 +//
  1446 +// $scope.dominioPapelEnvolvidoList = $filter('idNotEqualDominio')($scope.dominioPapelEnvolvidoListFixa, dominiosPapelEnvolvidoContrato);
  1447 +//
  1448 +// if ($scope.dominioPapelEnvolvidoList && $scope.dominioPapelEnvolvidoList.length === 0){
  1449 +// $scope.showAlert('warning', $translate.instant('CONTRATOS.MSG.TODOS_PAPEIS_ENVOLVIDOS_ADICIONADOS'));
  1450 +// return;
  1451 +// }
  1452 +// }
  1453 +// };
  1454 +
1471 1455 //responsavel por remover um/ou mais item(ns) de contrato
1472 1456 $scope.removerContratoEnvolvido = function (){
1473 1457  
... ... @@ -1554,23 +1538,25 @@ citApp.controller(&#39;ContratoController&#39;, [&#39;$scope&#39;, &#39;$filter&#39;, &#39;FileUploader&#39;, &#39;C
1554 1538 // Responsavel por abrir modal de envolvido para edicao ou visualizacao do item selecionado
1555 1539 $scope.abrirContratoEnvolvido = function(edit) {
1556 1540  
1557   - filtrarPapeisSelecionados();
  1541 + //filtrarPapeisSelecionados();
1558 1542  
1559 1543 $scope.editEnvolvido = edit;
1560   -
1561 1544 $scope.contratoEnvolvidoTemp = null;
1562   -
1563 1545 // recupera o item de contrato selecionado
1564 1546 $scope.contratoEnvolvidoTemp = $scope.getCheckedContratoEnvolvido();
1565   -
1566 1547 if(!$scope.contratoEnvolvidoTemp) {
1567   -
1568 1548 $scope.showAlert('warning', !edit ? $translate.instant('MSG.SELECIONE_UM_ITEM_PARA_VISUALIZACAO') : $translate.instant('MSG.SELECIONE_UM_ITEM_PARA_EDICAO'));
1569 1549 return;
1570 1550 }
  1551 + $scope.justificativaTemp = {};
  1552 + $scope.justificativasAnterioresLength = $scope.contratoEnvolvidoTemp.justificativas.length;
  1553 +
  1554 + if ($scope.contrato.id) {
  1555 + $scope.hasAlteracaoEnvolvido = edit;
  1556 + }
1571 1557  
1572 1558 $timeout(function() {
1573   - $scope.$openModal('modal-envolvido.html', 'lg');
  1559 + $scope.$openModal('dialog_envolvido.html', 'lg');
1574 1560 });
1575 1561 };
1576 1562  
... ... @@ -1588,7 +1574,7 @@ citApp.controller(&#39;ContratoController&#39;, [&#39;$scope&#39;, &#39;$filter&#39;, &#39;FileUploader&#39;, &#39;C
1588 1574 }
1589 1575 return contratoEnvolvidoChecked;
1590 1576 };
1591   -
  1577 +
1592 1578 $scope.radioValueList = [{descricao : $translate.instant('LABEL.SIM'), valor : true},
1593 1579 {descricao : $translate.instant('LABEL.NAO'), valor : false}];
1594 1580  
... ...
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,13 +23,13 @@
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="abrirContratoEnvolvido(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 34 ng-click="abrirContratoEnvolvido(true);" ng-if="!acaoEmMassaEnvolvido">
35 35 <i class="fa fa-pencil blue"></i>
... ... @@ -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-hide="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"
  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 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" ng-disabled="!editEnvolvido"
45 45 ng-custom-options="dominioPapelEnvolvido.originalElement as dominioPapelEnvolvido.descricao for dominioPapelEnvolvido"
46 46 track-by="track by dominioPapelEnvolvido.id"/>
47 47 </div><!-- .col-sm-4 -->
48 48 </div><!-- .row -->
  49 + </fieldset>
  50 + <fieldset ng-if="(contrato.id && hasAlteracaoEnvolvido) || (contrato.id && contratoEnvolvidoTemp.justificativas.length > 0)">
  51 + <div class="row">
  52 + <div class="col-sm-12">
  53 + <h2 class="title-modal"><translate>LABEL.JUSTIFICATIVA</translate></h2>
  54 + <p ng-show="editEnvolvido">
  55 + <small>( <span class="red">*</span> ) <translate>LABEL.CAMPOS_OBRIGATORIOS</translate></small>
  56 + </p>
  57 + </div>
  58 + </div>
  59 + <div class="row">
  60 + <div class="col-sm-12">
  61 + <label-text-area ng-id="justificativaTemp.descricao" ng-label="LABEL.JUSTIFICATIVA" ng-hide="!editEnvolvido"
  62 + form="formDialogJustificativa" ng-obrigatorio="contrato.id && hasAlteracaoEnvolvido" rows="3" ng-custom-maxlength="500"
  63 + ng-model="justificativaTemp.descricao" ></label-text-area>
  64 + </div>
  65 + </div><!-- .row -->
  66 + <div class="row">
  67 + <div class="col-sm-4">
  68 + <button title="{{$translate.instant('CONTRATOS.LABEL.ADICIONAR_JUSTIFICATIVA')}}" alt="{{$translate.instant('CONTRATOS.LABEL.ADICIONAR_JUSTIFICATIVA')}}"
  69 + ng-click="adicionarJustificativa(formDialogEnvolvido)" ng-hide="!editEnvolvido" class="btn btn-success" type="button">
  70 + <i class="fa fa-save white"></i>
  71 + <translate>CONTRATOS.LABEL.ADICIONAR_JUSTIFICATIVA</translate>
  72 + </button>
  73 + </div>
  74 + </div><!-- .row -->
  75 + </br>
  76 + <div class="row">
  77 + <div class="col-sm-12">
  78 + <table class="table table-bordered table-striped">
  79 + <thead>
  80 + <tr>
  81 + <th style="width: 5%;" class="text-center">#</th>
  82 + <th style="width: 15%;" class="text-center"><translate>LABEL.DATA</translate></th>
  83 + <th style="width: 65%;" class="text-center"><translate>LABEL.JUSTIFICATIVA</translate></th>
  84 + <th style="width: 15%;" class="text-center"><translate>LABEL.USUARIO</translate></th>
  85 + </tr>
  86 + </thead>
  87 + <tbody>
  88 + <tr ng-hide="(contratoEnvolvidoTemp.justificativas && contratoEnvolvidoTemp.justificativas.length != 0)">
  89 + <td colspan="4" class="text-center"><translate>LABEL.TABELA_VAZIA</translate></td>
  90 + </tr>
  91 + <tr ng-repeat="justificativa in contratoEnvolvidoTemp.justificativas">
  92 + <td class="text-center">{{$index +1}}</td>
  93 + <td class="text-center">{{ justificativa.dataCriacao | date : 'dd/MM/yyyy' }}</td>
  94 + <td class="text-justify">{{ justificativa.descricao }}</td>
  95 + <td class="text-center">{{ justificativa.autor.username }}</td>
  96 + </tr>
  97 + </tbody>
  98 + </table>
  99 + </div><!-- .<!-- .col -->
  100 + </div><!-- .<!-- .row -->
49 101 </fieldset><!-- .fieldset -->
50 102 </div><!-- .<!-- .modal-body -->
51   -</ng-form>
52 103 \ No newline at end of file
  104 +</ng-form>
... ...