Commit e97a64629ec3279fce8867f75fdf7026e3cb17fb
Exists in
master
Merge branch 'tarefa-4574' into adm-1.13.0
Showing
2 changed files
with
121 additions
and
66 deletions
Show diff stats
citgrp-patrimonio-web/src/main/java/br/com/centralit/controller/OrganizacaoPatrimonioController.java
1 | package br.com.centralit.controller; | 1 | package br.com.centralit.controller; |
2 | 2 | ||
3 | +import java.util.ArrayList; | ||
3 | import java.util.Calendar; | 4 | import java.util.Calendar; |
5 | +import java.util.Date; | ||
6 | +import java.util.List; | ||
4 | import java.util.Map; | 7 | import java.util.Map; |
5 | 8 | ||
6 | import javax.servlet.http.HttpServletRequest; | 9 | import javax.servlet.http.HttpServletRequest; |
@@ -21,13 +24,17 @@ import br.com.centralit.api.service.ContaContabilSaldoService; | @@ -21,13 +24,17 @@ import br.com.centralit.api.service.ContaContabilSaldoService; | ||
21 | import br.com.centralit.api.service.DepreciacaoService; | 24 | import br.com.centralit.api.service.DepreciacaoService; |
22 | import br.com.centralit.api.service.DominioService; | 25 | import br.com.centralit.api.service.DominioService; |
23 | import br.com.centralit.api.service.EntradaService; | 26 | import br.com.centralit.api.service.EntradaService; |
27 | +import br.com.centralit.api.service.InternacionalizacaoService; | ||
24 | import br.com.centralit.api.service.ModuloService; | 28 | import br.com.centralit.api.service.ModuloService; |
25 | import br.com.centralit.api.service.OrganizacaoService; | 29 | import br.com.centralit.api.service.OrganizacaoService; |
26 | import br.com.centralit.framework.json.ResponseBodyWrapper; | 30 | import br.com.centralit.framework.json.ResponseBodyWrapper; |
27 | import br.com.centralit.framework.json.Views; | 31 | import br.com.centralit.framework.json.Views; |
28 | import br.com.centralit.framework.model.Dominio; | 32 | import br.com.centralit.framework.model.Dominio; |
33 | +import br.com.centralit.framework.model.Notificacao; | ||
29 | import br.com.centralit.framework.model.Organizacao; | 34 | import br.com.centralit.framework.model.Organizacao; |
30 | import br.com.centralit.framework.model.Usuario; | 35 | import br.com.centralit.framework.model.Usuario; |
36 | +import br.com.centralit.framework.util.UtilColecao; | ||
37 | +import br.com.centralit.framework.util.UtilDate; | ||
31 | 38 | ||
32 | /** | 39 | /** |
33 | * | 40 | * |
@@ -84,6 +91,9 @@ public class OrganizacaoPatrimonioController { | @@ -84,6 +91,9 @@ public class OrganizacaoPatrimonioController { | ||
84 | /** Atributo request. */ | 91 | /** Atributo request. */ |
85 | @Autowired | 92 | @Autowired |
86 | private HttpServletRequest request; | 93 | private HttpServletRequest request; |
94 | + | ||
95 | + @Autowired | ||
96 | + private InternacionalizacaoService internacionalizacaoService; | ||
87 | 97 | ||
88 | /** | 98 | /** |
89 | * | 99 | * |
@@ -109,85 +119,122 @@ public class OrganizacaoPatrimonioController { | @@ -109,85 +119,122 @@ public class OrganizacaoPatrimonioController { | ||
109 | Usuario user = (Usuario) SecurityContextHolder.getContext().getAuthentication().getPrincipal(); | 119 | Usuario user = (Usuario) SecurityContextHolder.getContext().getAuthentication().getPrincipal(); |
110 | Organizacao organizacao = this.organizacaoService.find(requisicaoFechamento.get("organizacao")); | 120 | Organizacao organizacao = this.organizacaoService.find(requisicaoFechamento.get("organizacao")); |
111 | Long tipoDepreciacaoCodigo = requisicaoFechamento.get("tipoDepreciacao"); | 121 | Long tipoDepreciacaoCodigo = requisicaoFechamento.get("tipoDepreciacao"); |
112 | - | ||
113 | - if (!organizacao.getEmFechamento()) { | ||
114 | - try { | ||
115 | - this.organizacaoService.iniciarFechamentoDeMes(organizacao.getId()); | ||
116 | - | ||
117 | - MyRetornoStatus retornoFechamentoBens = new MyRetornoStatus(); | ||
118 | - | ||
119 | - MyRetornoStatus retornoBensNaEstruturaAlmoxarifado = new MyRetornoStatus(); | ||
120 | - | ||
121 | - retornoBensNaEstruturaAlmoxarifado.status = this.bemPatrimonialService.validarBensNaEstruturaAlmoxarifado(organizacao.getId()); | ||
122 | - retornoBensNaEstruturaAlmoxarifado.mensagens.add(new MyMensagemRetorno(MyMensagemRetorno.TipoMensagemRetorno.error, "MSG.BENS_NA_ESTRUTURA_ALMOXARIFADO")); | ||
123 | - | ||
124 | - if(!retornoBensNaEstruturaAlmoxarifado.status) { | ||
125 | - this.organizacaoService.terminarFechamentoDeMes(organizacao.getId()); | ||
126 | - | ||
127 | - ResponseBodyWrapper responseBody = new ResponseBodyWrapper(retornoBensNaEstruturaAlmoxarifado, Views.EstruturaOrganizacionalEditView.class); | ||
128 | - return responseBody; | ||
129 | - } | ||
130 | - | ||
131 | - MyRetornoStatus retornoEntradasCompletas = new MyRetornoStatus(); | ||
132 | - | ||
133 | - retornoEntradasCompletas.status = !this.entradaService.existemEntradasIncompletas(organizacao.getId()); | ||
134 | - retornoEntradasCompletas.mensagens.add(new MyMensagemRetorno(MyMensagemRetorno.TipoMensagemRetorno.error, "ADMINISTRACAODEMATERIAIS.MSG.FECHAMENTO_ENTRADAS_INCOMPLETAS")); | ||
135 | - | ||
136 | - if(!retornoEntradasCompletas.status) { | ||
137 | - this.organizacaoService.terminarFechamentoDeMes(organizacao.getId()); | ||
138 | - | ||
139 | - ResponseBodyWrapper responseBody = new ResponseBodyWrapper(retornoEntradasCompletas, Views.EstruturaOrganizacionalEditView.class); | ||
140 | - return responseBody; | ||
141 | - } | ||
142 | - | ||
143 | - retornoFechamentoBens.status = this.bemPatrimonialService.fecharValoresBens(organizacao.getId(), user.getId()); | ||
144 | - | ||
145 | - MyRetornoStatus retornoFechamentoContas = new MyRetornoStatus(); | ||
146 | - retornoFechamentoContas.status = this.contaContabilSaldoService.fechaSaldoContasContabeisTipoPermanente(organizacao); | ||
147 | - | ||
148 | - if (retornoFechamentoBens.status && retornoFechamentoContas.status) { | ||
149 | - MyRetornoStatus retornoDepreciacao = new MyRetornoStatus(); | ||
150 | - | ||
151 | - Dominio tipoDepreciacao = this.dominioService.findByChaveAndCodigo(Dominio.TIPO_DEPRECIACAO, tipoDepreciacaoCodigo); | ||
152 | - | ||
153 | - Depreciacao depreciacao = this.depreciacaoService.geraDepreciacao(organizacao, tipoDepreciacao, user.getId()); | ||
154 | - | ||
155 | - if (depreciacao != null) { | ||
156 | - retornoDepreciacao = new MyRetornoStatus(depreciacao); | ||
157 | - } else { | ||
158 | - if (tipoDepreciacao == null) { | ||
159 | - MyMensagemRetorno mensagem = new MyMensagemRetorno(MyMensagemRetorno.TipoMensagemRetorno.error, "MSG.FECHAR_MES_REFERENCIA_SEM_DEPRECIACAO"); | ||
160 | - retornoDepreciacao.mensagens.add(mensagem); | ||
161 | - } | ||
162 | - } | ||
163 | - | ||
164 | - if (retornoDepreciacao.status) { // Se a depreciação foi realizada com sucesso eu atualizo o mês de referencia | ||
165 | - retornoFechamentoContas.mensagens.add(new MyMensagemRetorno(MyMensagemRetorno.TipoMensagemRetorno.success, "MSG.SUCESSO_DEPRECIACAO")); | ||
166 | - organizacao.getDataReferenciaVigente().add(Calendar.MONTH, 1); | ||
167 | - this.organizacaoService.merge(organizacao); | ||
168 | - retornoFechamentoContas.mensagens.add(new MyMensagemRetorno(MyMensagemRetorno.TipoMensagemRetorno.success, "MSG.SUCESSO_MES_REFERENCIA")); | ||
169 | - } else { | ||
170 | - retornoFechamentoContas.status = retornoDepreciacao.status; | ||
171 | - retornoFechamentoContas.mensagens.addAll(retornoDepreciacao.mensagens); | 122 | + |
123 | + try { | ||
124 | + MyRetornoStatus retornoFechamentoBens = new MyRetornoStatus(); | ||
125 | + | ||
126 | + retornoFechamentoBens.status = this.bemPatrimonialService.fecharValoresBens(organizacao.getId(), user.getId()); | ||
127 | + | ||
128 | + MyRetornoStatus retornoFechamentoContas = new MyRetornoStatus(); | ||
129 | + retornoFechamentoContas.status = this.contaContabilSaldoService.fechaSaldoContasContabeisTipoPermanente(organizacao); | ||
130 | + | ||
131 | + if (retornoFechamentoBens.status && retornoFechamentoContas.status) { | ||
132 | + MyRetornoStatus retornoDepreciacao = new MyRetornoStatus(); | ||
133 | + | ||
134 | + Dominio tipoDepreciacao = this.dominioService.findByChaveAndCodigo(Dominio.TIPO_DEPRECIACAO, tipoDepreciacaoCodigo); | ||
135 | + | ||
136 | + Depreciacao depreciacao = this.depreciacaoService.geraDepreciacao(organizacao, tipoDepreciacao, user.getId()); | ||
137 | + | ||
138 | + if (depreciacao != null) { | ||
139 | + retornoDepreciacao = new MyRetornoStatus(depreciacao); | ||
140 | + } else { | ||
141 | + if (tipoDepreciacao == null) { | ||
142 | + MyMensagemRetorno mensagem = new MyMensagemRetorno(MyMensagemRetorno.TipoMensagemRetorno.error, "MSG.FECHAR_MES_REFERENCIA_SEM_DEPRECIACAO"); | ||
143 | + retornoDepreciacao.mensagens.add(mensagem); | ||
172 | } | 144 | } |
173 | } | 145 | } |
174 | - | ||
175 | - ResponseBodyWrapper responseBody = new ResponseBodyWrapper(retornoFechamentoContas, Views.EstruturaOrganizacionalEditView.class); | 146 | + |
147 | + if (retornoDepreciacao.status) { // Se a depreciação foi realizada com sucesso eu atualizo o mês de referencia | ||
148 | + retornoFechamentoContas.mensagens.add(new MyMensagemRetorno(MyMensagemRetorno.TipoMensagemRetorno.success, "MSG.SUCESSO_DEPRECIACAO")); | ||
149 | + organizacao.getDataReferenciaVigente().add(Calendar.MONTH, 1); | ||
150 | + this.organizacaoService.merge(organizacao); | ||
151 | + retornoFechamentoContas.mensagens.add(new MyMensagemRetorno(MyMensagemRetorno.TipoMensagemRetorno.success, "MSG.SUCESSO_MES_REFERENCIA")); | ||
152 | + } else { | ||
153 | + retornoFechamentoContas.status = retornoDepreciacao.status; | ||
154 | + retornoFechamentoContas.mensagens.addAll(retornoDepreciacao.mensagens); | ||
155 | + } | ||
156 | + } | ||
157 | + | ||
158 | + ResponseBodyWrapper responseBody = new ResponseBodyWrapper(retornoFechamentoContas, Views.EstruturaOrganizacionalEditView.class); | ||
159 | + this.organizacaoService.terminarFechamentoDeMes(organizacao.getId()); | ||
160 | + | ||
161 | + this.notificaUsuarioSobreFechamento(retornoFechamentoContas.mensagens, organizacao.getDataReferenciaVigente().getTime(), user); | ||
162 | + | ||
163 | + return responseBody; | ||
164 | + } catch (Exception ex) { | ||
165 | + this.organizacaoService.terminarFechamentoDeMes(organizacao.getId()); | ||
166 | + throw ex; | ||
167 | + } | ||
168 | + } | ||
169 | + | ||
170 | + @RequestMapping(value = "/bloquearValidarFechamentoMes", method = RequestMethod.POST) | ||
171 | + @ResponseBody | ||
172 | + public ResponseBodyWrapper bloquearValidarFechamentoMes(@RequestBody Map<String, Long> requisicaoFechamento) { | ||
173 | + | ||
174 | + Organizacao organizacao = this.organizacaoService.find(requisicaoFechamento.get("organizacao")); | ||
175 | + | ||
176 | + if (!organizacao.getEmFechamento()) { | ||
177 | + this.organizacaoService.iniciarFechamentoDeMes(organizacao.getId()); | ||
178 | + | ||
179 | + MyRetornoStatus retornoBensNaEstruturaAlmoxarifado = new MyRetornoStatus(); | ||
180 | + | ||
181 | + retornoBensNaEstruturaAlmoxarifado.status = this.bemPatrimonialService.validarBensNaEstruturaAlmoxarifado(organizacao.getId()); | ||
182 | + retornoBensNaEstruturaAlmoxarifado.mensagens.add(new MyMensagemRetorno(MyMensagemRetorno.TipoMensagemRetorno.error, "MSG.BENS_NA_ESTRUTURA_ALMOXARIFADO")); | ||
183 | + | ||
184 | + if(!retornoBensNaEstruturaAlmoxarifado.status) { | ||
176 | this.organizacaoService.terminarFechamentoDeMes(organizacao.getId()); | 185 | this.organizacaoService.terminarFechamentoDeMes(organizacao.getId()); |
177 | - | 186 | + |
187 | + ResponseBodyWrapper responseBody = new ResponseBodyWrapper(retornoBensNaEstruturaAlmoxarifado, Views.EstruturaOrganizacionalEditView.class); | ||
178 | return responseBody; | 188 | return responseBody; |
179 | - } catch (Exception ex) { | 189 | + } |
190 | + | ||
191 | + MyRetornoStatus retornoEntradasCompletas = new MyRetornoStatus(); | ||
192 | + | ||
193 | + retornoEntradasCompletas.status = !this.entradaService.existemEntradasIncompletas(organizacao.getId()); | ||
194 | + retornoEntradasCompletas.mensagens.add(new MyMensagemRetorno(MyMensagemRetorno.TipoMensagemRetorno.error, "ADMINISTRACAODEMATERIAIS.MSG.FECHAMENTO_ENTRADAS_INCOMPLETAS")); | ||
195 | + | ||
196 | + if(!retornoEntradasCompletas.status) { | ||
180 | this.organizacaoService.terminarFechamentoDeMes(organizacao.getId()); | 197 | this.organizacaoService.terminarFechamentoDeMes(organizacao.getId()); |
181 | - throw ex; | 198 | + |
199 | + ResponseBodyWrapper responseBody = new ResponseBodyWrapper(retornoEntradasCompletas, Views.EstruturaOrganizacionalEditView.class); | ||
200 | + return responseBody; | ||
182 | } | 201 | } |
202 | + | ||
203 | + ResponseBodyWrapper responseBody = new ResponseBodyWrapper(Boolean.TRUE, Views.EstruturaOrganizacionalEditView.class); | ||
204 | + return responseBody; | ||
205 | + | ||
183 | } else { | 206 | } else { |
184 | MyRetornoStatus retornoFechamentoContas = new MyRetornoStatus(); | 207 | MyRetornoStatus retornoFechamentoContas = new MyRetornoStatus(); |
185 | retornoFechamentoContas.mensagens.add(new MyMensagemRetorno(MyMensagemRetorno.TipoMensagemRetorno.warning, "MSG.ORGANIZACAO_EM_FECHAMENTO_MES")); | 208 | retornoFechamentoContas.mensagens.add(new MyMensagemRetorno(MyMensagemRetorno.TipoMensagemRetorno.warning, "MSG.ORGANIZACAO_EM_FECHAMENTO_MES")); |
186 | - | 209 | + |
187 | ResponseBodyWrapper responseBody = new ResponseBodyWrapper(retornoFechamentoContas, Views.EstruturaOrganizacionalEditView.class); | 210 | ResponseBodyWrapper responseBody = new ResponseBodyWrapper(retornoFechamentoContas, Views.EstruturaOrganizacionalEditView.class); |
188 | 211 | ||
189 | return responseBody; | 212 | return responseBody; |
190 | } | 213 | } |
191 | } | 214 | } |
192 | 215 | ||
216 | + @SuppressWarnings("deprecation") | ||
217 | + private void notificaUsuarioSobreFechamento(List<MyMensagemRetorno> mensagens, Date dateFechado, Usuario user) { | ||
218 | + | ||
219 | + dateFechado.setMonth(dateFechado.getMonth() - 1); | ||
220 | + Dominio idioma = this.dominioService.findByChaveAndCodigo("tipoIdioma", Dominio.TIPO_IDIOMA_PT_BR_CODIGO); | ||
221 | + String assunto = this.internacionalizacaoService.getTranslate("ADMINISTRACAODEMATERIAIS.LABEL.FECHAMENTO_MES_REFERENCIA", idioma) +" " + UtilDate.formatarDataParaMesAno(dateFechado); | ||
222 | + Dominio tipoNotificacao = this.dominioService.findByChaveAndCodigo(Dominio.TIPO_NOTIFICACAO, Dominio.TIPO_NOTIFICACAO_PATRIMONIO); | ||
223 | + Dominio tipoPrioridade = this.dominioService.findByChaveAndCodigo(Dominio.TIPO_PRIORIDADE, Dominio.TIPO_PRIORIDADE_MEDIA); | ||
224 | + List<Notificacao> listaNotificacoesFechamento = new ArrayList<Notificacao>(); | ||
225 | + | ||
226 | + StringBuilder mensagem = new StringBuilder(); | ||
227 | + mensagem.append("<ul>"); | ||
228 | + if(!UtilColecao.isVazio(mensagens)){ | ||
229 | + for (MyMensagemRetorno myMensagemRetorno : mensagens) { | ||
230 | + mensagem.append("<li>"); | ||
231 | + mensagem.append(this.internacionalizacaoService.getTranslate(myMensagemRetorno.mensagem, idioma)); | ||
232 | + mensagem.append("</li>"); | ||
233 | + } | ||
234 | + mensagem.append("</ul>"); | ||
235 | + listaNotificacoesFechamento.add(new Notificacao(assunto, mensagem.toString(), tipoNotificacao, tipoPrioridade, user)); | ||
236 | + this.organizacaoService.notificarUsuarioFechamentoMes(listaNotificacoesFechamento); | ||
237 | + } | ||
238 | + } | ||
239 | + | ||
193 | } | 240 | } |
194 | \ No newline at end of file | 241 | \ No newline at end of file |
citgrp-patrimonio-web/src/main/webapp/assets/js/angular/custom/repository/OrganizacaoPatrimonioRepository.js
@@ -5,6 +5,14 @@ citApp.factory('OrganizacaoPatrimonioRepository', ['RestangularPatrimonio', 'Abs | @@ -5,6 +5,14 @@ citApp.factory('OrganizacaoPatrimonioRepository', ['RestangularPatrimonio', 'Abs | ||
5 | function OrganizacaoPatrimonioRepository() { | 5 | function OrganizacaoPatrimonioRepository() { |
6 | AbstractRepository.call(this, restangularPatrimonio, 'rest/organizacaoPatrimonio'); | 6 | AbstractRepository.call(this, restangularPatrimonio, 'rest/organizacaoPatrimonio'); |
7 | 7 | ||
8 | + this.bloquearValidarFechamentoMes = function(organizacaoId) { | ||
9 | + var request = { | ||
10 | + organizacao : organizacaoId | ||
11 | + }; | ||
12 | + | ||
13 | + return restangularPatrimonio.all(this.route + '/bloquearValidarFechamentoMes').post(request); | ||
14 | + }; | ||
15 | + | ||
8 | //Método para realizar o fechamento do mês de um orgão passando o tipo de depreciação a ser realizada | 16 | //Método para realizar o fechamento do mês de um orgão passando o tipo de depreciação a ser realizada |
9 | this.fecharMes = function(organizacaoId, tipoDepreciacaoId) { | 17 | this.fecharMes = function(organizacaoId, tipoDepreciacaoId) { |
10 | var request = { | 18 | var request = { |